Merge branch 'develop' into feature/movefix

This commit is contained in:
NguyenVanDat
2025-12-03 09:58:33 +07:00
50 changed files with 2151 additions and 204 deletions
@@ -2,7 +2,14 @@ Shader "BrewMonster/UnlitVertexColorUnlit"
{
Properties
{
_Texture_1 ("Texture", 2D) = "white" {}
_Texture_1 ("Layer 1 Texture", 2D) = "black" {}
_Texture_2 ("Layer 2 Texture", 2D) = "black" {}
_Texture_3 ("Layer 3 Texture", 2D) = "black" {}
_Texture_4 ("Layer 4 Texture", 2D) = "black" {}
_Texture_5 ("Layer 5 Texture", 2D) = "black" {}
_Texture_6 ("Layer 6 Texture", 2D) = "black" {}
_MaskTexture ("Mask Texture", 2D) = "black" {}
_MaskTexture2 ("Mask Texture 2", 2D) = "black" {}
_ShadowStrength ("Shadow Strength", Range(0, 1)) = 0.5
_Brightness ("Brightness", Range(0, 10)) = 5.0
}
@@ -34,8 +41,36 @@ Shader "BrewMonster/UnlitVertexColorUnlit"
TEXTURE2D(_Texture_1);
SAMPLER(sampler_Texture_1);
TEXTURE2D(_Texture_2);
SAMPLER(sampler_Texture_2);
TEXTURE2D(_Texture_3);
SAMPLER(sampler_Texture_3);
TEXTURE2D(_MaskTexture);
SAMPLER(sampler_MaskTexture);
TEXTURE2D(_Texture_4);
SAMPLER(sampler_Texture_4);
TEXTURE2D(_Texture_5);
SAMPLER(sampler_Texture_5);
TEXTURE2D(_Texture_6);
SAMPLER(sampler_Texture_6);
TEXTURE2D(_MaskTexture2);
SAMPLER(sampler_MaskTexture2);
CBUFFER_START(UnityPerMaterial)
float4 _Texture_1_ST;
float4 _Texture_2_ST;
float4 _Texture_3_ST;
float4 _Texture_4_ST;
float4 _Texture_5_ST;
float4 _Texture_6_ST;
float4 _MaskTexture_ST;
float4 _MaskTexture2_ST;
half _ShadowStrength;
half _Brightness;
CBUFFER_END
@@ -44,6 +79,8 @@ Shader "BrewMonster/UnlitVertexColorUnlit"
{
float4 positionOS : POSITION;
float2 uv : TEXCOORD0;
float2 uvMask : TEXCOORD3;
float2 uvMask2 : TEXCOORD7;
float3 normalOS : NORMAL;
float4 color : COLOR;
};
@@ -52,10 +89,19 @@ Shader "BrewMonster/UnlitVertexColorUnlit"
{
float4 positionCS : SV_POSITION;
float2 uv : TEXCOORD0;
float3 positionWS : TEXCOORD1;
float3 normalWS : TEXCOORD2;
float2 uv2 : TEXCOORD1;
float2 uv3 : TEXCOORD2;
float2 uvMask : TEXCOORD3;
float2 uv4 : TEXCOORD4;
float2 uv5 : TEXCOORD5;
float2 uv6 : TEXCOORD6;
float2 uvMask2 : TEXCOORD7;
float3 positionWS : TEXCOORD8;
float3 normalWS : TEXCOORD9;
float4 color : COLOR;
float fogCoord : TEXCOORD3;
float fogCoord : TEXCOORD10;
};
Varyings vert(Attributes input)
@@ -76,6 +122,13 @@ Shader "BrewMonster/UnlitVertexColorUnlit"
// UV
output.uv = TRANSFORM_TEX(input.uv, _Texture_1);
output.uv2 = TRANSFORM_TEX(input.uv, _Texture_2);
output.uv3 = TRANSFORM_TEX(input.uv, _Texture_3);
output.uv4 = TRANSFORM_TEX(input.uv, _Texture_4);
output.uv5 = TRANSFORM_TEX(input.uv, _Texture_5);
output.uv6 = TRANSFORM_TEX(input.uv, _Texture_6);
output.uvMask = TRANSFORM_TEX(input.uvMask, _MaskTexture);
output.uvMask2 = TRANSFORM_TEX(input.uvMask2, _MaskTexture2);
// Fog
output.fogCoord = ComputeFogFactor(vertexInput.positionCS.z);
@@ -87,10 +140,28 @@ Shader "BrewMonster/UnlitVertexColorUnlit"
{
// Sample the texture
half4 texColor = SAMPLE_TEXTURE2D(_Texture_1, sampler_Texture_1, input.uv);
half4 texColor2 = SAMPLE_TEXTURE2D(_Texture_2, sampler_Texture_2, input.uv2);
half4 texColor3 = SAMPLE_TEXTURE2D(_Texture_3, sampler_Texture_3, input.uv3);
half4 texColor4 = SAMPLE_TEXTURE2D(_Texture_4, sampler_Texture_4, input.uv4);
half4 texColor5 = SAMPLE_TEXTURE2D(_Texture_5, sampler_Texture_5, input.uv5);
half4 texColor6 = SAMPLE_TEXTURE2D(_Texture_6, sampler_Texture_6, input.uv6);
half4 maskColor = SAMPLE_TEXTURE2D(_MaskTexture, sampler_MaskTexture, input.uvMask);
half4 maskColor2 = SAMPLE_TEXTURE2D(_MaskTexture2, sampler_MaskTexture2, input.uvMask2);
// half4 totalWeight = maskColor.r + maskColor.g + maskColor.b;
half4 layer1Weight = 1 - (maskColor.r + maskColor.g + maskColor.b);// / totalWeight;
half4 layer2Weight = maskColor.g;// / totalWeight;
half4 layer3Weight = maskColor.b;// / totalWeight;
half4 layer4Weight = maskColor2.r;// / totalWeight;
half4 layer5Weight = maskColor2.g;// / totalWeight;
half4 layer6Weight = maskColor2.b;// / totalWeight;
// Apply brightness to vertex color then multiply with texture
half4 brightColor = input.color * _Brightness;
half4 color = texColor * brightColor;
half4 color = texColor * layer1Weight + texColor2 * layer2Weight + texColor3 * layer3Weight;
color += texColor4 * layer4Weight + texColor5 * layer5Weight + texColor6 * layer6Weight;
// color = maskColor2;
color *= brightColor;
// Shadow calculation
float4 shadowCoord = TransformWorldToShadowCoord(input.positionWS);
@@ -126,6 +197,9 @@ Shader "BrewMonster/UnlitVertexColorUnlit"
CBUFFER_START(UnityPerMaterial)
float4 _Texture_1_ST;
float4 _Texture_2_ST;
float4 _Texture_3_ST;
float4 _MaskTexture_ST;
half _Brightness;
CBUFFER_END
@@ -133,6 +207,9 @@ Shader "BrewMonster/UnlitVertexColorUnlit"
{
float4 position : POSITION;
float2 texcoord : TEXCOORD0;
float2 texcoord2 : TEXCOORD1;
float2 texcoord3 : TEXCOORD2;
float2 texcoord4 : TEXCOORD3;
};
struct Varyings
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 MiB

@@ -0,0 +1,143 @@
fileFormatVersion: 2
guid: d2d95ef77cdc4e64c969442caa95e479
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: iOS
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

After

Width:  |  Height:  |  Size: 502 KiB

@@ -0,0 +1,143 @@
fileFormatVersion: 2
guid: 182bc0e55106bfd48a0fe11a16acf78a
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: iOS
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

After

Width:  |  Height:  |  Size: 500 KiB

@@ -0,0 +1,143 @@
fileFormatVersion: 2
guid: 6f0ac04f2e700fa4f985c6269235f4db
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: iOS
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

After

Width:  |  Height:  |  Size: 362 KiB

@@ -0,0 +1,143 @@
fileFormatVersion: 2
guid: e1793ce297934ce4f811bc9fecd84235
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: iOS
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

After

Width:  |  Height:  |  Size: 419 KiB

@@ -0,0 +1,143 @@
fileFormatVersion: 2
guid: 77c26a19a43477349805b77e1f61a5a6
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: iOS
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

After

Width:  |  Height:  |  Size: 481 KiB

@@ -0,0 +1,143 @@
fileFormatVersion: 2
guid: f76b0de48c321eb469922435d2fba676
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: iOS
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

After

Width:  |  Height:  |  Size: 517 KiB

@@ -0,0 +1,143 @@
fileFormatVersion: 2
guid: 5923de13232cf8c45893c9f87f7cc971
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: iOS
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

After

Width:  |  Height:  |  Size: 436 KiB

@@ -0,0 +1,143 @@
fileFormatVersion: 2
guid: 4a62d7c65e362df44aa763a03950ba9a
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: iOS
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

After

Width:  |  Height:  |  Size: 545 KiB

@@ -0,0 +1,143 @@
fileFormatVersion: 2
guid: d64094a49477c6f4aae58280a6309469
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: iOS
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

After

Width:  |  Height:  |  Size: 139 KiB

@@ -0,0 +1,143 @@
fileFormatVersion: 2
guid: 2023d5d869e902b45b053b8e305b0879
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: iOS
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

@@ -0,0 +1,143 @@
fileFormatVersion: 2
guid: b9321e916df07c247b433d6f0b0ce158
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: iOS
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 52f7a7bdf9ded9c44bffa1d98d2bd5be
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,143 @@
fileFormatVersion: 2
guid: d792b160621dd214198cd2191bf098b3
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: iOS
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
+2 -2
View File
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:cab1859604c344f40d95193e09f40e355439020145e4aad304249834dd8361b4
size 41209
oid sha256:79aee339596409d8a47e0a553b1257768bd84fa0e0d6261052b33c1077658ab0
size 41493
@@ -94,9 +94,9 @@ namespace BrewMonster.Network
#if UNITY_EDITOR
if (TaskTest.Instance &&
TaskTest.Instance.m_pTaskMan != null)
TaskTest.m_pTaskMan != null)
{
m_pTaskMan = TaskTest.Instance.m_pTaskMan;
m_pTaskMan = TaskTest.m_pTaskMan;
}
#endif
// Load task templates
@@ -6,6 +6,7 @@ using System.Numerics;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Threading.Tasks;
using BrewMonster.Scripts.Task;
using static Unity.Burst.Intrinsics.X86.Avx;
namespace CSNetwork.C2SCommand
@@ -583,11 +584,17 @@ namespace CSNetwork.C2SCommand
}
// TODO: Check orginal C++ implementation
public static Octets CreateTaskNotifyCmd()
public static Octets CreateTaskNotifyCmd(byte[] pData, uint dwDataSize)
{
var cmd = new cmd_header
if(pData == null || pData.Length == 0 || dwDataSize == 0)
{
cmd = (ushort)CommandID.TASK_NOTIFY
return null;
}
var cmd = new cmd_task_notify
{
size = dwDataSize,
placeholder = pData
};
return SerializeCommand(CommandID.TASK_NOTIFY, cmd);
}
@@ -1384,7 +1384,38 @@ namespace CSNetwork.GPDataType
public const float MIN_MOVELEN_IN_AIR_WATER = 0.5f;
public const float MIN_MOVELEN_ON_GROUND = 0.5f;
public const float MIN_MOVELEN_FOR_DETECT_VIBRATION = 0.05f;
/// <summary>
/// Convert a sequential-layout class into raw byte array.
/// </summary>
public static byte[] ToBytes<T>(T obj) where T : struct
{
// Calculate size of the object in memory
int size = Marshal.SizeOf(obj);
// Allocate unmanaged buffer
IntPtr buffer = Marshal.AllocHGlobal(size);
try
{
// Copy managed data → unmanaged buffer
Marshal.StructureToPtr(obj, buffer, false);
// Create byte array and copy unmanaged bytes → managed
byte[] result = new byte[size];
Marshal.Copy(buffer, result, 0, size);
return result;
}
finally
{
// Always free allocated memory to avoid leaks
Marshal.FreeHGlobal(buffer);
}
}
}
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct cmd_skill_data
{
@@ -1710,6 +1741,17 @@ namespace CSNetwork.GPDataType
public int expiretime;
public char flag;
};
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct cmd_task_notify
{
public uint size;
// In C++, placeholder is byte. It used to first byte of a byte[] data
// but in C# we need to define it as byte[] to hold the whole data.
//public byte placeholder; // Task data ...
public byte[] placeholder; // Task data ...
}
}
@@ -1250,10 +1250,10 @@ namespace CSNetwork
}
}
public void c2s_SendCmdTaskNotify(ref task_notify_base pBuf, uint sz)
public void c2s_SendCmdTaskNotify(byte[] pData, uint dwDataSize)
{
gamedatasend gamedatasend = new gamedatasend();
gamedatasend.Data = C2SCommandFactory.CreateTaskNotifyCmd();
gamedatasend.Data = C2SCommandFactory.CreateTaskNotifyCmd( pData, dwDataSize);
SendProtocol(gamedatasend);
}
}
@@ -311,9 +311,9 @@ namespace BrewMonster.Network
Instance._gameSession.c2s_SendCmdGetAllData(byPack, byEquip, byTask);
}
public static void c2s_CmdTaskNotify(ref task_notify_base pBuf, uint sz)
public static void c2s_CmdTaskNotify( byte[] pBuf, uint sz)
{
Instance._gameSession.c2s_SendCmdTaskNotify(ref pBuf, sz);
Instance._gameSession.c2s_SendCmdTaskNotify( pBuf, sz);
}
#endregion
@@ -13,6 +13,7 @@ namespace BrewMonster.Scripts.Task
/// contains and manages all task templates
/// init in EC_Game
/// </summary>
[Serializable]
public class ATaskTemplMan
{
public int TaskLoadedCount => m_TaskTemplMap.Count;
@@ -373,17 +374,12 @@ namespace BrewMonster.Scripts.Task
// unsigned int set_id = GetTaskTemplMan()->GetTaskStorageId(id);
uint set_id = GetTaskStorageId(id);
if (set_id > 0)
{
// unsigned short* arr = pLst->m_Storages[set_id-1];
int start = ((int)set_id - 1) * TaskTemplConstants.TASK_STORAGE_LEN;
ushort[] arr = new ushort[TaskTemplConstants.TASK_STORAGE_LEN];
Array.Copy(pLst.m_Storages, start, arr, 0, TaskTemplConstants.TASK_STORAGE_LEN);
// int i;
int start = (int)set_id - 1;
ushort[] arr = pLst.m_Storages;
for (int i = 0; i < TaskTemplConstants.TASK_STORAGE_LEN; i++)
for (int i = start; i < TaskTemplConstants.TASK_STORAGE_LEN; i++)
{
if (arr[i] == (ushort)id)
{
@@ -427,9 +423,9 @@ namespace BrewMonster.Scripts.Task
}
}
private void _notify_svr(TaskInterface pPlayer, byte uiNotifyType, ushort idData)
private void _notify_svr(TaskInterface pTask, byte uReason, ushort uTaskID)
{
ATaskTempl._notify_svr(pPlayer, uiNotifyType, idData);
ATaskTempl._notify_svr(pTask, uReason, uTaskID);
}
public void CheckAutoDelv(TaskInterface pTask)
@@ -7,6 +7,7 @@ using System;
using System.Collections.Generic;
using System.IO;
using System.Runtime.InteropServices;
using CSNetwork;
using UnityEngine;
namespace BrewMonster.Scripts.Task
@@ -362,12 +363,7 @@ namespace BrewMonster.Scripts.Task
return false;
}
// allocate internal buffers and copy; remaining bytes are zero-initialized in C#
// m_pActiveListRawBuf = new byte[TaskInterfaceConstants.TASK_ACTIVE_LIST_BUF_SIZE];
// {
// int copy = Mathf.Min(iActiveListLen, TaskInterfaceConstants.TASK_ACTIVE_LIST_BUF_SIZE);
// if (copy > 0) System.Buffer.BlockCopy(pActiveListBuf, 0, m_pActiveListRawBuf, 0, copy);
// }
m_pActiveListBuf = new ActiveTaskList();
m_pActiveListBuf.ReadFromBuffer(pActiveListBuf);
@@ -1310,11 +1306,6 @@ namespace BrewMonster.Scripts.Task
if (m_TasksToConfirm.TryGetValue(iTaskID, out ret)) return ret;
return false;
}
public void NotifyServer(ref task_notify_base pBuf, uint sz)
{
UnityGameSession.c2s_CmdTaskNotify(ref pBuf, sz);
}
public bool CheckVersion()
{
@@ -1436,6 +1427,12 @@ namespace BrewMonster.Scripts.Task
break;
}
}
public void NotifyServer(byte[] pBuf, uint sz)
{
// g_pGame->GetGameSession()->c2s_CmdTaskNotify(pBuf, sz);
UnityGameSession.c2s_CmdTaskNotify(pBuf, sz);
}
}
+6 -14
View File
@@ -3,6 +3,7 @@ using System.Reflection;
using System.Runtime.InteropServices;
using BrewMonster.Network;
using BrewMonster.Scripts.Task;
using CSNetwork.GPDataType;
using PerfectWorld.Scripts.Task;
using UnityEngine;
@@ -312,17 +313,9 @@ namespace BrewMonster.Scripts.Task
if (sz < (uint)Marshal.SizeOf<task_notify_base>()) return;
// Marshal base notification structure from buffer
GCHandle handle = GCHandle.Alloc(pBuf, GCHandleType.Pinned);
task_notify_base pNotify;
try
{
pNotify = Marshal.PtrToStructure<task_notify_base>(handle.AddrOfPinnedObject());
}
finally
{
handle.Free();
}
task_notify_base pNotify = GPDataTypeHelper.FromBytes<task_notify_base>(pBuf);
BMLogger.Log($"[TaskClient] OnServerNotify: reason={pNotify.reason}, task={pNotify.task}");
ATaskTempl pTempl = null;
ActiveTaskEntry pEntry = null;
@@ -409,11 +402,10 @@ namespace BrewMonster.Scripts.Task
{
// Tsvr_task_special_award and special_award structs not defined; need to define
if (sz != Marshal.SizeOf<svr_task_special_award>()) return;
// TODO: OnSpecialAward method not found in ATaskTemplMan; implement if needed
ATaskTemplMan pMan = GetTaskTemplMan();
if (pMan != null)
{
svr_task_special_award awardNotify = Marshal.PtrToStructure<svr_task_special_award>(handle.AddrOfPinnedObject());
svr_task_special_award awardNotify = GPDataTypeHelper.FromBytes<svr_task_special_award>(pBuf);
pMan.OnSpecialAward(awardNotify.sa, pTask);
if (awardNotify.sa.id1 == 0)
{
@@ -501,7 +493,7 @@ namespace BrewMonster.Scripts.Task
// Clear valid count and process server notification
pTempl.ClearValidCount();
// OnServerNotify method signature may need adjustment for C# (ref/out parameters)
pTempl.OnServerNotify(pTask, pEntry, ref pNotify, sz);
pTempl.OnServerNotify(pTask, pEntry, pNotify, sz, pBuf);
}
// Helper method to get task template manager
@@ -127,7 +127,7 @@ namespace BrewMonster.Scripts.Task
uint GetAccountTotalCash();
uint GetCurTime();
void SetFinishDlgShowTime(int t);
void NotifyServer(ref task_notify_base pBuf, uint sz);
void NotifyServer( byte[] pBuf, uint sz);
bool CheckVersion();
StorageTaskList GetStorageTaskList();
void ShowPunchBagMessage(bool bSucced,bool bMax,uint MonsterTemplID,int dps,int dph);
@@ -515,7 +515,7 @@ namespace BrewMonster.Scripts.Task
// bool IsTimeMarkUpdate() const { return (m_uListState & TLIST_STATE_UPDATE_TIME_MARK) != 0; }
// void SetTimeMarkUpdate() { m_uListState |= TLIST_STATE_UPDATE_TIME_MARK; }
// void ClearTimeMarkUpdate() { m_uListState &= ~TLIST_STATE_UPDATE_TIME_MARK; }
// int GetMaxSimultaneousCount() {return m_uMaxSimultaneousCount ? TASK_MAX_SIMULTANEOUS_COUT : TASK_DEFAULT_MAX_SIMULTANEOUS_COUT;}
public int GetMaxSimultaneousCount() {return m_uMaxSimultaneousCount ? TaskTemplConstants.TASK_MAX_SIMULTANEOUS_COUT : TaskTemplConstants.TASK_DEFAULT_MAX_SIMULTANEOUS_COUT;}
public void ExpandMaxSimultaneousCount()
{
m_uMaxSimultaneousCount = true;
@@ -2,6 +2,7 @@ using System;
using System.Runtime.InteropServices;
using BrewMonster.Network;
using BrewMonster.Scripts.Task;
using CSNetwork.GPDataType;
using PerfectWorld.Scripts.Task;
namespace BrewMonster.Scripts.Task
@@ -387,8 +388,9 @@ namespace BrewMonster.Scripts.Task
public void OnServerNotify(
TaskInterface pTask,
ActiveTaskEntry pEntry,
ref task_notify_base pNotify,
uint sz)
task_notify_base pNotify,
uint sz,
byte[] pBuf) // In C++ pNotify is a pointer to raw data; here we pass the full byte array for parsing
{
uint ulTime = 0, ulCaptainTask = 0;
ActiveTaskList pLst = null;
@@ -396,10 +398,10 @@ namespace BrewMonster.Scripts.Task
task_sub_tags sub_tags = new task_sub_tags();
// memset(&sub_tags, 0, sizeof(sub_tags));
uint i=0;
svr_monster_killed pKilled = null;
svr_player_killed pKilledPlayer = null;
svr_monster_killed pKilled = new svr_monster_killed();
svr_player_killed pKilledPlayer = new svr_player_killed();
StorageTaskList pStorage = pTask.GetStorageTaskList();
svr_treasure_map pTreasure = null;
svr_treasure_map pTreasure = new svr_treasure_map();
var m_enumMethod = m_FixedData.m_enumMethod;
switch (pNotify.reason)
@@ -409,7 +411,7 @@ namespace BrewMonster.Scripts.Task
if (sz != Marshal.SizeOf<svr_player_killed>()) break;
if (m_enumMethod != (uint)TaskCompletionMethod.enumTMKillPlayer) break;
pKilledPlayer = new svr_player_killed(pNotify);
pKilledPlayer = GPDataTypeHelper.FromBytes<svr_player_killed>(pBuf);
int iIndex = pKilledPlayer.index;
if (iIndex < TaskInterfaceConstants.MAX_MONSTER_WANTED)
{
@@ -420,7 +422,7 @@ namespace BrewMonster.Scripts.Task
case TaskTemplConstants.TASK_SVR_NOTIFY_TREASURE_MAP:
if (m_enumMethod == (uint)TaskCompletionMethod.enumTMReachTreasureZone)
{
pTreasure = new svr_treasure_map(pNotify);
pTreasure = GPDataTypeHelper.FromBytes<svr_treasure_map>(pBuf);
pEntry.m_iUsefulData1 = pTreasure.treasure_index;
}
break;
@@ -428,7 +430,7 @@ namespace BrewMonster.Scripts.Task
if (sz != Marshal.SizeOf<svr_monster_killed>()) break;
if (m_enumMethod != (uint)TaskCompletionMethod.enumTMKillNumMonster) break;
pKilled = new svr_monster_killed(pNotify);
pKilled = GPDataTypeHelper.FromBytes<svr_monster_killed>(pBuf);
for (i = 0; i < m_FixedData.m_ulMonsterWanted; i++)
{
@@ -448,8 +450,12 @@ namespace BrewMonster.Scripts.Task
break;
case TaskTemplConstants.TASK_SVR_NOTIFY_NEW:
var svr_new_task = new svr_new_task(pNotify);
if (svr_new_task.valid_size((int)sz) ) break;
var svr_new_task = GPDataTypeHelper.FromBytes<svr_new_task>(pBuf);
if (svr_new_task.valid_size((int)sz))
{
BMLogger.LogError($" [TASK_SVR_NOTIFY_NEW] the size of byte not meet !!!");
break;
}
pLst = pTask.GetActiveTaskList();
svr_new_task.get_data(
ref ulTime,
@@ -511,7 +517,7 @@ namespace BrewMonster.Scripts.Task
break;
case TaskTemplConstants.TASK_SVR_NOTIFY_COMPLETE:
var svr_task_complete = new svr_task_complete(pNotify);
var svr_task_complete = GPDataTypeHelper.FromBytes<svr_task_complete>(pBuf);
if (svr_task_complete.valid_size((int)sz)) break;
svr_task_complete.get_data(
ref ulTime,
@@ -587,7 +593,8 @@ namespace BrewMonster.Scripts.Task
task_notify_base notify = new task_notify_base();
notify.reason = uReason;
notify.task = uTaskID;
pTask.NotifyServer( ref notify, (uint)Marshal.SizeOf<task_notify_base>());
// pTask.NotifyServer( notify, (uint)Marshal.SizeOf<task_notify_base>());
pTask.NotifyServer( GPDataTypeHelper.ToBytes(notify), (uint)Marshal.SizeOf<task_notify_base>());
}
#else
// void NotifyClient (TaskInterface* pTask, const ActiveTaskEntry* pEntry, unsigned char uReason, unsigned long ulCurTime, unsigned long ulParam = 0, int dps = 0, int dph = 0) const;
@@ -777,9 +784,35 @@ namespace BrewMonster.Scripts.Task
// 检查任务栏容量与空间 // English: Check task list budget and space
public uint CheckBudget(ActiveTaskList pList)
{
// TODO: Convert full logic with TASK_HIDDEN_COUNT/TASK_TITLE_TASK_COUNT/TASK_ACTIVE_LIST_MAX_LEN and list counters when constants and fields are available
// 占位返回通过 // English: Placeholder pass
return 0u;
// Convert full logic with TASK_HIDDEN_COUNT/TASK_TITLE_TASK_COUNT/TASK_ACTIVE_LIST_MAX_LEN and list counters when constants and fields are available
// // 占位返回通过 // English: Placeholder pass
// return 0u;
var m_bHidden = m_FixedData.m_bHidden;
var m_bDisplayInTitleTaskUI = m_FixedData.m_bHidden;
var m_ID = m_FixedData.m_ID;
//
bool bReachLimit = false;
if (m_bHidden)
bReachLimit = pList.m_uTopHideTaskCount >= TASK_HIDDEN_COUNT;
else if (m_bDisplayInTitleTaskUI)
bReachLimit = bReachLimit || pList.m_uTitleTaskCount >= TASK_TITLE_TASK_COUNT;
else
bReachLimit = bReachLimit || pList.m_uTopShowTaskCount >= pList.GetMaxSimultaneousCount();
if (bReachLimit)
return TaskInterfaceConstants.TASK_PREREQU_FAIL_FULL;
// Check Task List Empty Space
if (pList.m_uUsedCount + m_uDepth > TaskInterfaceConstants.TASK_ACTIVE_LIST_MAX_LEN)
return TaskInterfaceConstants.TASK_PREREQU_FAIL_NO_SPACE;
// Ƿͬ
if (pList.GetEntry(m_ID) != null) return TaskInterfaceConstants.TASK_PREREQU_FAIL_SAME_TASK;
return 0;
}
// inline unsigned long ATaskTempl::CheckGivenItems(TaskInterface* pTask) const
@@ -1980,15 +2013,18 @@ namespace BrewMonster.Scripts.Task
switch (uReason)
{
case TaskTemplConstants.TASK_SVR_NOTIFY_PLAYER_KILLED:
var svr_player_killed = new svr_player_killed(pNotify);
var svr_player_killed = new svr_player_killed();
svr_player_killed.baseObj = pNotify;
svr_player_killed.player_num = pEntry.m_wMonsterNum[ulParam];
svr_player_killed.index = (ushort)ulParam;
sz = Marshal.SizeOf(svr_player_killed);
break;
case TaskTemplConstants.TASK_SVR_NOTIFY_MONSTER_KILLED:
{
var svrMonsterKilled = new svr_monster_killed(pNotify)
var svrMonsterKilled = new svr_monster_killed()
{
baseObj = pNotify,
monster_id = m_MonsterWanted[ulParam].m_ulMonsterTemplId,
monster_num = pEntry.m_wMonsterNum[ulParam],
dps = (dps != 0 && dph != 0) ? dps : 0,
@@ -2005,7 +2041,10 @@ namespace BrewMonster.Scripts.Task
// reinterpret_cast<unsigned long>(pEntry),
// *(reinterpret_cast<const task_sub_tags*>(ulParam))
// );
var svrNewTask = new svr_new_task(pNotify);
var svrNewTask = new svr_new_task
{
baseObj = pNotify,
};
svrNewTask.set_data(
ulCurTime,
pEntry.m_ID,
@@ -2020,7 +2059,10 @@ namespace BrewMonster.Scripts.Task
// *(reinterpret_cast<const task_sub_tags*>(ulParam))
// );
// sz = static_cast<svr_task_complete*>(pNotify)->get_size();
var svrTaskComplete = new svr_task_complete(pNotify);
var svrTaskComplete = new svr_task_complete
{
baseObj = pNotify,
};
svrTaskComplete.set_data(
ulCurTime,
Marshal.PtrToStructure<task_sub_tags>((IntPtr)ulParam)
@@ -2033,7 +2075,10 @@ namespace BrewMonster.Scripts.Task
sz = Marshal.SizeOf<task_notify_base>();
break;
case TaskTemplConstants.TASK_SVR_NOTIFY_ERROR_CODE:
var svrTaskErrCode = new svr_task_err_code(pNotify);
var svrTaskErrCode = new svr_task_err_code
{
baseObj = pNotify
};
svrTaskErrCode.err_code = ulParam;
sz = Marshal.SizeOf( svrTaskErrCode );
break;
@@ -1,4 +1,5 @@
using System;
using System.Linq;
using System.Runtime.InteropServices;
using CSNetwork.GPDataType;
@@ -38,57 +39,37 @@ namespace BrewMonster.Scripts.Task
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public class task_notify_base
public struct task_notify_base
{
public byte reason;
public ushort task;
};
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct cmd_task_notify
{
public uint size;
public byte placeholder; // Task data ...
}
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public class svr_monster_killed : task_notify_base
public struct svr_monster_killed
{
public task_notify_base baseObj;
public uint monster_id;
public ushort monster_num;
public int dps;
public int dph;
public svr_monster_killed(task_notify_base baseObj)
{
reason = baseObj.reason;
task = baseObj.task;
}
};
}
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public class svr_player_killed : task_notify_base
public struct svr_player_killed
{
public task_notify_base baseObj;
public ushort index;
public ushort player_num;
public svr_player_killed(task_notify_base baseObj)
{
reason = baseObj.reason;
task = baseObj.task;
}
};
}
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public class svr_task_err_code : task_notify_base
public struct svr_task_err_code
{
public task_notify_base baseObj;
public uint err_code;
public svr_task_err_code(task_notify_base baseObj)
{
reason = baseObj.reason;
task = baseObj.task;
}
};
[StructLayout(LayoutKind.Sequential, Pack = 1)]
@@ -106,8 +87,13 @@ namespace BrewMonster.Scripts.Task
// NOTE: union
[MarshalAs(UnmanagedType.ByValArray, SizeConst = TaskTemplConstants.TASK_STORAGE_COUNT)]
public ushort[] m_StoragesTaskSetCount;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = TaskTemplConstants.TASK_STORAGE_COUNT)]
public ushort[] m_StoragesRefreshCount;
// [MarshalAs(UnmanagedType.ByValArray, SizeConst = TaskTemplConstants.TASK_STORAGE_COUNT)]
public ushort[] m_StoragesRefreshCount
{
get => m_StoragesTaskSetCount;
set { m_StoragesTaskSetCount = value; }
}
[MarshalAs(UnmanagedType.ByValArray, SizeConst = TaskTemplConstants.TASK_STORAGE_COUNT)]
public uint[] m_StoragesRefreshTime;
@@ -146,7 +132,7 @@ namespace BrewMonster.Scripts.Task
for (int i=0; i < TaskTemplConstants.TASK_STORAGE_COUNT; i++)
{
m_StoragesTaskSetCount[i] = BitConverter.ToUInt16(data, offset + i * 2);
m_StoragesRefreshCount[i] = BitConverter.ToUInt16(data, offset + i * 2);
// m_StoragesRefreshCount[i] = BitConverter.ToUInt16(data, offset + i * 2);
}
offset += TaskTemplConstants.TASK_STORAGE_COUNT * 2;
@@ -163,20 +149,16 @@ namespace BrewMonster.Scripts.Task
}
}
public class svr_new_task : task_notify_base
[ StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct svr_new_task
{
public task_notify_base baseObj;
public uint cur_time;
public uint cap_task; // In C++ use to store ActiveTaskEntry pointer's address -> In C#, we just store the task ID
public task_sub_tags sub_tags;
// public ActiveTaskEntry cap_task_entry; //
public svr_new_task(task_notify_base baseObj)
{
reason = baseObj.reason;
task = baseObj.task;
}
public void set_data(
uint _cur_time,
uint _cap_task,
@@ -210,15 +192,12 @@ namespace BrewMonster.Scripts.Task
}
}
public class svr_treasure_map : task_notify_base
[ StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct svr_treasure_map
{
public task_notify_base baseObj;
public int treasure_index;
public svr_treasure_map(task_notify_base baseObj)
{
reason = baseObj.reason;
task = baseObj.task;
}
}
struct tm {
@@ -281,16 +260,13 @@ namespace BrewMonster.Scripts.Task
// }
}
}
public class svr_task_complete : task_notify_base
[ StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct svr_task_complete
{
public task_notify_base baseObj;
public uint cur_time;
public task_sub_tags sub_tags;
public svr_task_complete(task_notify_base baseObj)
{
reason = baseObj.reason;
task = baseObj.task;
}
public void set_data(
uint _cur_time,
@@ -330,15 +306,11 @@ namespace BrewMonster.Scripts.Task
};
[StructLayout( LayoutKind.Sequential, Pack = 1)]
public class svr_task_special_award : task_notify_base
public struct svr_task_special_award
{
public svr_task_complete baseObj;
public special_award sa;
public svr_task_special_award(task_notify_base baseObj)
{
reason = baseObj.reason;
task = baseObj.task;
}
};
[StructLayout(LayoutKind.Sequential, Pack = 1)]
+52 -47
View File
@@ -109,6 +109,11 @@ namespace BrewMonster.Scripts.Task
public const int TASK_STORAGE_COUNT = 32;
public const int TASK_STORAGE_LEN = 10;
public const int TASK_DEFAULT_MAX_SIMULTANEOUS_COUT = 20;
public const int TASK_MAX_SIMULTANEOUS_COUT = 30;
public const int TASK_HIDDEN_COUNT = 30; // formally 6, for test
public const int TASK_TITLE_TASK_COUNT = 10 ; // 锟狡猴拷锟斤拷锟斤拷锟斤拷锟斤拷
}
@@ -129,53 +134,53 @@ namespace BrewMonster.Scripts.Task
public short z;
}
public class ServerNotificationConstants
{
// 新任务发放 // New task issued
public const int TASK_SVR_NOTIFY_NEW = 1;
// 任务完毕 // Task completed
public const int TASK_SVR_NOTIFY_COMPLETE = 2;
// 任务放弃 // Task abandoned
public const int TASK_SVR_NOTIFY_GIVE_UP = 3;
// 杀怪数量 // Monster kill count
public const int TASK_SVR_NOTIFY_MONSTER_KILLED = 4;
// 处于得到奖励状态 // In reward receiving state
public const int TASK_SVR_NOTIFY_FINISHED = 5;
// 错误码 // Error code
public const int TASK_SVR_NOTIFY_ERROR_CODE = 6;
// 遗忘生活技能 // Forget life skill
public const int TASK_SVR_NOTIFY_FORGET_SKILL = 7;
// 动态任务时间标记 // Dynamic task time mark
public const int TASK_SVR_NOTIFY_DYN_TIME_MARK = 8;
// 动态任务数据 // Dynamic task data
public const int TASK_SVR_NOTIFY_DYN_DATA = 9;
// 特殊奖励信息 // Special reward info
public const int TASK_SVR_NOTIFY_SPECIAL_AWARD = 10;
// 仓库数据 // Storage data
public const int TASK_SVR_NOTIFY_STORAGE = 11;
// 显示全局变量 // Display global variables
public const int TASK_SVR_NOTIFY_DIS_GLOBAL_VAL = 12;
// 藏宝位置 // Treasure location
public const int TASK_SVR_NOTIFY_TREASURE_MAP = 13;
// 设置任务列表上限 // Set task list limit
public const int TASK_SVR_NOTIFY_SET_TASK_LIMIT = 14;
// 杀人数量 // Player kill count
public const int TASK_SVR_NOTIFY_PLAYER_KILLED = 15;
}
// public class ServerNotificationConstants
// {
// // 新任务发放 // New task issued
// public const int TASK_SVR_NOTIFY_NEW = 1;
//
// // 任务完毕 // Task completed
// public const int TASK_SVR_NOTIFY_COMPLETE = 2;
//
// // 任务放弃 // Task abandoned
// public const int TASK_SVR_NOTIFY_GIVE_UP = 3;
//
// // 杀怪数量 // Monster kill count
// public const int TASK_SVR_NOTIFY_MONSTER_KILLED = 4;
//
// // 处于得到奖励状态 // In reward receiving state
// public const int TASK_SVR_NOTIFY_FINISHED = 5;
//
// // 错误码 // Error code
// public const int TASK_SVR_NOTIFY_ERROR_CODE = 6;
//
// // 遗忘生活技能 // Forget life skill
// public const int TASK_SVR_NOTIFY_FORGET_SKILL = 7;
//
// // 动态任务时间标记 // Dynamic task time mark
// public const int TASK_SVR_NOTIFY_DYN_TIME_MARK = 8;
//
// // 动态任务数据 // Dynamic task data
// public const int TASK_SVR_NOTIFY_DYN_DATA = 9;
//
// // 特殊奖励信息 // Special reward info
// public const int TASK_SVR_NOTIFY_SPECIAL_AWARD = 10;
//
// // 仓库数据 // Storage data
// public const int TASK_SVR_NOTIFY_STORAGE = 11;
//
// // 显示全局变量 // Display global variables
// public const int TASK_SVR_NOTIFY_DIS_GLOBAL_VAL = 12;
//
// // 藏宝位置 // Treasure location
// public const int TASK_SVR_NOTIFY_TREASURE_MAP = 13;
//
// // 设置任务列表上限 // Set task list limit
// public const int TASK_SVR_NOTIFY_SET_TASK_LIMIT = 14;
//
// // 杀人数量 // Player kill count
// public const int TASK_SVR_NOTIFY_PLAYER_KILLED = 15;
// }
public class ClientNotificationConstants
{
+25 -1
View File
@@ -3,6 +3,8 @@ using System;
using System.IO;
using System.Reflection;
using System.Runtime.InteropServices;
using BrewMonster.Scripts.Task.UI;
using ModelRenderer.Scripts.Common;
using PerfectWorld.Scripts.Task;
using UnityEngine;
@@ -11,7 +13,8 @@ namespace BrewMonster.Scripts.Task
{
public class TaskTest : MonoSingleton<TaskTest>
{
public ATaskTemplMan m_pTaskMan;
public GameObject m_pTaskDlg;
public static ATaskTemplMan m_pTaskMan; // use static to store loaded data across instances
public bool WasLoadTaskData = false;
private void OnValidate()
@@ -19,6 +22,27 @@ namespace BrewMonster.Scripts.Task
WasLoadTaskData = m_pTaskMan != null && m_pTaskMan.TaskLoadedCount > 0;
}
private void Update()
{
#if UNITY_EDITOR
if (Input.GetKeyDown(KeyCode.Q))
{
m_pTaskDlg.SetActive(!m_pTaskDlg.activeInHierarchy);
}
#endif
}
[ContextMenu("Show Task Name")]
public void ShowTaskName()
{
var text01 = ByteToStringUtils.UshortArrayToUnicodeString(m_pTaskMan
.GetTaskTemplByID((uint)TaskTemplConstants.TASK_SPECIAL_AWARD[0]).m_FixedData.m_szName);
var text02 = ByteToStringUtils.UshortArrayToUnicodeString(m_pTaskMan
.GetTaskTemplByID((uint)TaskTemplConstants.TASK_SPECIAL_AWARD[1]).m_FixedData.m_szName);
Debug.Log($" Task Name 01: {text01} \n Task Name 02: {text02}");
}
[ContextMenu("Load Data")]
void LoadTaskData()
{
+11 -2
View File
@@ -29,7 +29,6 @@ namespace BrewMonster.Scripts.Task.UI
}
#endif
// Keep original macro as constant for array sizing
public const int CDLGTASK_AWARDITEM_MAX = 8;
@@ -133,6 +132,8 @@ namespace BrewMonster.Scripts.Task.UI
// [中文] 任务跟踪计时器
// [English] Task trace counter
private CECCounter m_TaskTraceCounter = new (); // CECCounter -> object placeholder
public static DlgTask Instance;
#region Unity METHODS
@@ -160,6 +161,11 @@ namespace BrewMonster.Scripts.Task.UI
Tick();
}
private void OnDestroy()
{
Instance = null;
}
#endregion
#region PUBLIC METHODS
@@ -605,7 +611,10 @@ namespace BrewMonster.Scripts.Task.UI
}
//
// //бɽѽ zhangyitian
// bool UpdateQuestView();
public bool UpdateQuestView()
{
return UpdateTask() && SearchForTask();
}
//
// bool IsPQTaskOrSubTask(int idTask);
// bool IsTreasureMapTask(int idTask);
@@ -6,6 +6,8 @@ using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using BrewMonster.Scripts.Task;
using BrewMonster.Scripts.Task.UI;
using UnityEngine;
namespace BrewMonster.UI
@@ -15,6 +17,7 @@ namespace BrewMonster.UI
DlgNPC m_pDlgNPC;
public NPC_ESSENCE? m_pCurNPCEssence;
public int m_idCurFinishTask = -1;
private DlgTask m_pDlgTask => DlgTask.Instance;
public static bool TALKPROC_IS_TERMINAL(uint id)
{
@@ -59,6 +62,47 @@ namespace BrewMonster.UI
//EC_Game.GetGameRun().GetHostPlayer().EndNPCService();
EC_ManMessageMono.Instance.EC_ManPlayer.GetHostPlayer().EndNPCService();
}
public bool UpdateTask(uint idTask, int reason)
{
// TODO:
// CDlgTaskTrace* pDlg = dynamic_cast<CDlgTaskTrace*>(GetDialog("Win_QuestMinion"));
// if (pDlg) {
// pDlg->SetBtnUnTraceY(-1, 0);
// pDlg->UpdateContributionTask();
// if (reason == TASK_SVR_NOTIFY_NEW)
// pDlg->OnTaskNew(idTask);
// }
// TODO
// ´
// if (reason == TaskTemplConstants.TASK_SVR_NOTIFY_NEW)
// {
// m_pDlgQuestionTask.AddQuestionTask(idTask);
// }
// else if (reason == TaskTemplConstants.TASK_SVR_NOTIFY_COMPLETE || reason == TaskTemplConstants.TASK_SVR_NOTIFY_GIVE_UP)
// {
// m_pDlgQuestionTask.RemoveQuestionTask(idTask);
// }
if(reason == TaskTemplConstants.TASK_SVR_NOTIFY_STORAGE)
{
// TODO
// CDlgTaskList* pDlg = (CDlgTaskList*)GetDialog("Win_QuestList");
// if (pDlg && pDlg.IsShow())
// {
// // refresh data in OnShow()
// pDlg.RefreshTaskList();
// }
return true;
}
else
{
// zhangyitian 20140521
// ʱɽбҲҪ£˿ɽбµ
return m_pDlgTask.UpdateQuestView();
}
}
}
public enum EC_GAMEUI_ICONS
+1 -1
View File
@@ -44,7 +44,7 @@ namespace BrewMonster
private void UpdateHostPlayerInfoUI(cmd_self_info_00 obj)
{
BMLogger.LogError("Update HUD Player Info");
// BMLogger.LogError("Update HUD Player Info");
healthText.text = $"{obj.iHP}/{obj.iMaxHP}";
manaText.text = $"{obj.iMP}/{obj.iMaxMP}";
expText.text = $"{((float)obj.iExp/neededExp)*100}%";
@@ -159,10 +159,7 @@ namespace BrewMonster.UI
UnityGameSession.RequestAllInventoriesAsync(() => { /*BMLogger.Log("Sent Inventory Detail Requests (all packs)");*/ }, 0, 1, 2);
await Task.Delay(1000);
UnityGameSession.RequestCheckSecurityPassWd("");
await Task.Delay(10000);
UnityGameSession.RequesrQueryPlayerCash();
await Task.Delay(1000);
}
//private void OnInventoryReceived(List<InventoryItem> inventoryData)
+4 -3
View File
@@ -9,11 +9,12 @@ namespace BrewMonster.PerfectWorld.Scripts.UI
public class UIPlayer : MonoBehaviour
{
public Image healthImage;
// public TextMeshProUGUI healthText;
public CECHostPlayer hostplayer;
// public TextMeshProUGUI healthText;
[Header("DEBUG")]
[SerializeField] private CECPlayer hostplayer;
private void Start()
{
hostplayer = GetComponentInParent<CECHostPlayer>();
hostplayer = GetComponentInParent<CECPlayer>();
if (hostplayer == null)
{
Debug.LogError("Host player not found");
+2 -2
View File
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:73d34a362e429fa75e583ca88989d3ab3d29f8d85bcdff8fa64582b7145930c2
size 530552564
oid sha256:a7e6f5ba276f3a9bc3eef485161bba926dcdbb3e98f53fd0cebd57efbf8a8bbc
size 200173095
+3
View File
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2dbddc1e295aac8a88c415e4dd325144090f2a3289e9249b142ca5513d692cdb
size 192046192
+7
View File
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: d8506df92f662514986fe5556809250e
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+16 -11
View File
@@ -528,7 +528,6 @@ namespace BrewMonster
case int value when value == EC_MsgDef.MSG_HST_WAYPOINT: OnMsgHstWayPoint(Msg); break;
case int value when value == EC_MsgDef.MSG_HST_SKILLDATA: OnMsgHstSkillData(Msg); break;
case int value when value == EC_MsgDef.MSG_HST_DIED: OnMsgHstDied(Msg); break;
case int value when value == EC_MsgDef.MSG_HST_GOTO: OnMsgHstGoto(Msg); break;
case int value when value == EC_MsgDef.MSG_HST_STARTATTACK: OnMsgHstStartAttack(Msg); break;
case int value when value == EC_MsgDef.MSG_HST_STOPATTACK: OnMsgHstStopAttack(Msg); break;
case int value when value == EC_MsgDef.MSG_HST_SKILLRESULT: OnMsgHstSkillResult(Msg); break;
@@ -1185,6 +1184,9 @@ namespace BrewMonster
m_pWorkMan?.FinishRunningWork(CECHPWork.Host_work_ID.WORK_DEAD);
// Clear corpse state so player is alive again
m_dwStates &= ~(uint)PlayerNPCState.GP_STATE_CORPSE;
UnityGameSession.c2s_CmdGetAllData(true, true, false);
UnityGameSession.c2s_CmdSendEnterPKPrecinct();
UnityGameSession.RequesrQueryPlayerCash();
}
public void OnMsgHstGoto(in ECMSG Msg)
@@ -1335,6 +1337,7 @@ namespace BrewMonster
public async void InitCharacter(cmd_self_info_1 role)
{
SetUpPlayer();
m_dwStates = (uint)role.state;
controller = GetComponent<CharacterController>();
if (!controller)
{
@@ -1361,7 +1364,6 @@ namespace BrewMonster
{
visual.InitPlayerEventDoneHandler();
}
m_aabb.Center = GPDataTypeHelper.g_vOrigin;
m_aabb.Extents.Set(0.3f, 0.9f, 0.3f);
m_aabbServer = m_aabb;
@@ -1378,12 +1380,18 @@ namespace BrewMonster
//CECHPWorkDead pWork = (CECHPWorkDead*)m_pWorkMan->CreateWork(CECHPWork.Host_work_ID.WORK_DEAD);
//pWork->SetBeDeadFlag(true);
//m_pWorkMan->StartWork_p0(pWork);
EventBus.PublishChannel(GetCharacterID(), new CECPlayer.ClearComActFlagAllRankNodesEvent(true));
PlayAction((int)PLAYER_ACTION_TYPE.ACT_GROUNDDIE);
if (PopupManager.Instance != null)
{
PopupManager.Instance.OnPlayerDied();
}
EventBus.PublishChannel(GetCharacterID(), new CECPlayer.ClearComActFlagAllRankNodesEvent(true));
PlayAction((int)PLAYER_ACTION_TYPE.ACT_GROUNDDIE);
if (PopupManager.Instance != null)
{
PopupManager.Instance.OnPlayerDied();
}
}
else
{
UnityGameSession.c2s_CmdGetAllData(true, true, false);
UnityGameSession.c2s_CmdSendEnterPKPrecinct();
UnityGameSession.RequesrQueryPlayerCash();
}
/*
else if (IsSitting())
@@ -1417,10 +1425,7 @@ namespace BrewMonster
}
else
m_pActionSwitcher = new CECActionSwitcherBase(this);
UnityGameSession.c2s_CmdGetAllData(true, true, false);
// TODO: Move this to right flow later , it's just for test now
UnityGameSession.c2s_CmdSendEnterPKPrecinct();
}
private void OnMsgHstPushMove(JoystickPressEvent joystickPressEvent)