Merge branch 'develop' into feature/npc-shop
@@ -45,6 +45,11 @@ MonoBehaviour:
|
||||
m_ReadOnly: 0
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
- m_GUID: a81dab17b00ef4b4494a71ee88b10cc0
|
||||
m_Address: "\u7A0B\u5E8F\u8054\u5165/\u89D2\u8272\u5347\u7EA7\u4EBA\u7C7B.gfx"
|
||||
m_ReadOnly: 0
|
||||
m_SerializedLabels: []
|
||||
FlaggedDuringContentUpdateRestriction: 0
|
||||
m_ReadOnly: 0
|
||||
m_Settings: {fileID: 11400000, guid: 070edb522e6e54c14a99055900003890, type: 2}
|
||||
m_SchemaSet:
|
||||
|
||||
@@ -6,9 +6,9 @@ using UnityEngine.EventSystems;
|
||||
|
||||
public class Joystick : MonoBehaviour, IPointerDownHandler, IDragHandler, IPointerUpHandler
|
||||
{
|
||||
public float Horizontal { get { return SnapToDiscrete(input.x); } }
|
||||
public float Vertical { get { return SnapToDiscrete(input.y); } }
|
||||
public Vector2 Direction { get { return new Vector2(Horizontal, Vertical); } }
|
||||
public float Horizontal { get { return input.x; } }
|
||||
public float Vertical { get { return input.y; } }
|
||||
public Vector2 Direction { get { return input; } }
|
||||
|
||||
public float HandleRange
|
||||
{
|
||||
@@ -78,8 +78,8 @@ public class Joystick : MonoBehaviour, IPointerDownHandler, IDragHandler, IPoint
|
||||
HandleInput(input.magnitude, input.normalized, radius, cam);
|
||||
handle.anchoredPosition = input * radius * handleRange;
|
||||
|
||||
// Send event when value changes to -1 or 1
|
||||
Vector2 currentSnapped = new Vector2(Horizontal, Vertical);
|
||||
// Send event when value changes significantly (for 360-degree smooth movement)
|
||||
Vector2 currentSnapped = new Vector2(SnapToDiscrete(input.x), SnapToDiscrete(input.y));
|
||||
if ((currentSnapped.x == -1 || currentSnapped.x == 1 || currentSnapped.y == -1 || currentSnapped.y == 1) &&
|
||||
currentSnapped != previousSnappedInput)
|
||||
{
|
||||
@@ -95,8 +95,9 @@ public class Joystick : MonoBehaviour, IPointerDownHandler, IDragHandler, IPoint
|
||||
{
|
||||
if (magnitude > deadZone)
|
||||
{
|
||||
if (magnitude > 1)
|
||||
input = normalised;
|
||||
// Normalize to ensure speed is always 1 (full speed) or 0 (no movement)
|
||||
// This keeps 360-degree direction but binary speed
|
||||
input = normalised;
|
||||
}
|
||||
else
|
||||
input = Vector2.zero;
|
||||
@@ -110,10 +111,41 @@ public class Joystick : MonoBehaviour, IPointerDownHandler, IDragHandler, IPoint
|
||||
input = new Vector2(0f, input.y);
|
||||
}
|
||||
|
||||
private Vector2 SnapTo8Directions(Vector2 input)
|
||||
{
|
||||
// Snap to 8 directions: N, NE, E, SE, S, SW, W, NW
|
||||
// Returns values of -1, 0, or 1 for each axis
|
||||
|
||||
if (input.magnitude < 0.4f)
|
||||
return Vector2.zero;
|
||||
|
||||
// Calculate angle in degrees (0 = up/North, 90 = right/East)
|
||||
float angle = Mathf.Atan2(input.x, input.y) * Mathf.Rad2Deg;
|
||||
|
||||
// Normalize angle to 0-360
|
||||
if (angle < 0) angle += 360f;
|
||||
|
||||
// Snap to 8 directions (every 45 degrees)
|
||||
// 0° = N, 45° = NE, 90° = E, 135° = SE, 180° = S, 225° = SW, 270° = W, 315° = NW
|
||||
float snappedAngle = Mathf.Round(angle / 45f) * 45f;
|
||||
|
||||
// Convert back to direction vector
|
||||
float rad = snappedAngle * Mathf.Deg2Rad;
|
||||
Vector2 snapped = new Vector2(Mathf.Sin(rad), Mathf.Cos(rad));
|
||||
|
||||
// Ensure values are exactly -1, 0, or 1
|
||||
snapped.x = Mathf.Round(snapped.x);
|
||||
snapped.y = Mathf.Round(snapped.y);
|
||||
|
||||
return snapped;
|
||||
}
|
||||
|
||||
private float SnapToDiscrete(float value)
|
||||
{
|
||||
// Snap to -1, 1, or 0
|
||||
if (value == 0)
|
||||
// Snap to -1, 1, or 0 for 8-directional movement
|
||||
// Use a small threshold to ensure diagonal movement works
|
||||
const float threshold = 0.1f;
|
||||
if (Mathf.Abs(value) < threshold)
|
||||
return 0;
|
||||
return value > 0 ? 1 : -1;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
|
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:
|
||||
|
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:
|
||||
|
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:
|
||||
|
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:
|
||||
|
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:
|
||||
|
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:
|
||||
|
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:
|
||||
|
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:
|
||||
|
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:
|
||||
|
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:
|
||||
|
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:
|
||||
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9ef8d28320e272c47b341e1a2aca2ff5
|
||||
guid: 52f7a7bdf9ded9c44bffa1d98d2bd5be
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
|
After Width: | Height: | Size: 126 KiB |
@@ -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:
|
||||
@@ -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
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
using BrewMonster.Scripts.Player;
|
||||
using CSNetwork.GPDataType;
|
||||
using NUnit.Framework;
|
||||
using PerfectWorld.Scripts.Player;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
@@ -112,3 +112,4 @@ namespace BrewMonster.Managers
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
using BrewMonster.Network;
|
||||
using BrewMonster.Scripts.Player;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace BrewMonster.Scripts
|
||||
{
|
||||
using static BrewMonster.Scripts.CECHPWork;
|
||||
using WorkList = System.Collections.Generic.List<CECHPWork>;
|
||||
public class CECHPWork : CECObjectWork
|
||||
{
|
||||
@@ -439,15 +439,61 @@ namespace BrewMonster.Scripts
|
||||
|
||||
public bool DelayWork(int iPriority, CECHPWork pWork)
|
||||
{
|
||||
return false;
|
||||
if (pWork == null)
|
||||
{
|
||||
// ASSERT(false);
|
||||
return false;
|
||||
}
|
||||
if (!ValidatePriority(iPriority))
|
||||
{
|
||||
// ASSERT(false);
|
||||
return false;
|
||||
}
|
||||
if (!IsAnyWorkRunning())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (CanRunSimultaneouslyWithCurrentWork(iPriority, pWork))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
bool bDelay = false;
|
||||
if (m_pHost.IsMeleeing())
|
||||
{
|
||||
UnityGameSession.c2s_CmdCancelAction();
|
||||
bDelay = true;
|
||||
}
|
||||
else if (IsPickingUp() || IsSpellingMagic())
|
||||
{
|
||||
bDelay = true;
|
||||
}
|
||||
if (bDelay)
|
||||
{
|
||||
ClearDelayedWork();
|
||||
m_Delayed.iPriority = iPriority;
|
||||
m_Delayed.pWork = pWork;
|
||||
// LOG_DEBUG_INFO(AString().Format("CECHPWork::%s delayed, priority=%d", pWork->GetWorkName(), iPriority));
|
||||
}
|
||||
return bDelay;
|
||||
}
|
||||
public void StartDelayedWork()
|
||||
{
|
||||
|
||||
if (!HasDelayedWork()){
|
||||
return;
|
||||
}
|
||||
CECHPWork pWork = m_Delayed.pWork;
|
||||
m_Delayed.pWork = null;
|
||||
// LOG_DEBUG_INFO(AString().Format("CECHPWork:: start delayed work %s, priority=%d", pWork->GetWorkName(), m_Delayed.iPriority));
|
||||
InternallyStartWork(m_Delayed.iPriority, pWork);
|
||||
}
|
||||
public void ClearDelayedWork()
|
||||
{
|
||||
|
||||
if (!HasDelayedWork()){
|
||||
return;
|
||||
}
|
||||
// LOG_DEBUG_INFO(AString().Format("delayed CECHPWork::%s priority=%d cleared", m_Delayed.pWork->GetWorkName(), m_Delayed.iPriority));
|
||||
// delete m_Delayed.pWork;
|
||||
m_Delayed.pWork = null;
|
||||
}
|
||||
public CECHPWork GetDelayedWork()
|
||||
{
|
||||
@@ -471,15 +517,15 @@ namespace BrewMonster.Scripts
|
||||
}
|
||||
if (pWork.GetWorkID() == CECHPWork.Host_work_ID.WORK_TRACEOBJECT)
|
||||
{
|
||||
/* if (EC_Game.GetGameRun().GetHostInputFilter()->IsMoveUsagePressed())
|
||||
{
|
||||
CECHPWorkTrace pWorkTrace = pWork as CECHPWorkTrace;
|
||||
if (!pWorkTrace.CanTouch())
|
||||
{ // 2014-8-16 ������ͨ�����̲����ƶ�ʱ������������ CECHPWorkTrace,
|
||||
//delete pWorkTrace; // ������� CECHPWorkTrace ����ʱת��Ŀ��λ�á������ֱ����̲��ݵ����ƶ������·���˲�䶶��
|
||||
return false; // �� CECHPWorkTrace ��Ŀ��������Ӵ�ʱ�������� CECHPWorkTrace����ʵ�ּ��̿����ƶ��С���ij��Ӧ�ü���ʱ������ת���ʩ�ż���
|
||||
}
|
||||
}*/
|
||||
/* if (EC_Game.GetGameRun().GetHostInputFilter()->IsMoveUsagePressed())
|
||||
{
|
||||
CECHPWorkTrace pWorkTrace = pWork as CECHPWorkTrace;
|
||||
if (!pWorkTrace.CanTouch())
|
||||
{ // 2014-8-16 ������ͨ�����̲����ƶ�ʱ������������ CECHPWorkTrace,
|
||||
//delete pWorkTrace; // ������� CECHPWorkTrace ����ʱת��Ŀ��λ�á������ֱ����̲��ݵ����ƶ������·���˲�䶶��
|
||||
return false; // �� CECHPWorkTrace ��Ŀ��������Ӵ�ʱ�������� CECHPWorkTrace����ʵ�ּ��̿����ƶ��С���ij��Ӧ�ü���ʱ������ת���ʩ�ż���
|
||||
}
|
||||
}*/
|
||||
}
|
||||
if (!bNoDelay && DelayWork(iPriority, pWork))
|
||||
{
|
||||
@@ -629,7 +675,7 @@ namespace BrewMonster.Scripts
|
||||
if (ValidatePriority(m_iCurPriority))
|
||||
{
|
||||
WorkList workList = m_WorkStack[m_iCurPriority];
|
||||
if(workList != null)
|
||||
if (workList != null)
|
||||
{
|
||||
for (int i = 0; i < workList.Count; ++i)
|
||||
{
|
||||
@@ -651,7 +697,7 @@ namespace BrewMonster.Scripts
|
||||
return;
|
||||
}
|
||||
WorkList workList = m_WorkStack[m_iCurPriority];
|
||||
if(workList != null)
|
||||
if (workList != null)
|
||||
{
|
||||
for (int i = 0; i < workList.Count;)
|
||||
{
|
||||
@@ -662,14 +708,55 @@ namespace BrewMonster.Scripts
|
||||
}
|
||||
KillWork(m_iCurPriority, i);
|
||||
}
|
||||
if (workList == null || workList.Count ==0)
|
||||
if (workList == null || workList.Count == 0)
|
||||
{
|
||||
StartAwaitingWorks();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsReviving()
|
||||
{
|
||||
return IsWorkRunning(Host_work_ID.WORK_REVIVE);
|
||||
}
|
||||
public bool IsSpellingMagic()
|
||||
{
|
||||
return IsWorkRunning(Host_work_ID.WORK_SPELLOBJECT);
|
||||
}
|
||||
public bool IsUsingItem()
|
||||
{
|
||||
return IsWorkRunning(Host_work_ID.WORK_USEITEM);
|
||||
}
|
||||
public bool IsPassiveMoving()
|
||||
{
|
||||
return IsWorkRunning(Host_work_ID.WORK_PASSIVEMOVE);
|
||||
}
|
||||
public bool IsSitting()
|
||||
{
|
||||
return IsWorkRunning(Host_work_ID.WORK_SIT);
|
||||
}
|
||||
//todo: use this method
|
||||
public void FinishAllWork(bool bGotoStand)
|
||||
{
|
||||
for (int i = 0; i < Work_priority.NUM_PRIORITY; ++i)
|
||||
{
|
||||
FinishWorkAtPriority(i);
|
||||
}
|
||||
ClearDelayedWork();
|
||||
if (bGotoStand)
|
||||
{
|
||||
StartWork_p0(CreateWork(CECHPWork.Host_work_ID.WORK_STAND));
|
||||
}
|
||||
}
|
||||
bool IsPickingUp()
|
||||
{
|
||||
return IsWorkRunning(CECHPWork.Host_work_ID.WORK_PICKUP);
|
||||
}
|
||||
private bool HasDelayedWork()
|
||||
{
|
||||
return GetDelayedWork() != null;
|
||||
}
|
||||
}
|
||||
public abstract class CECHPWorkPostTickCommand
|
||||
{
|
||||
public abstract bool Run(CECHPWorkMan pWorkMan);
|
||||
|
||||
@@ -107,7 +107,7 @@ class CECHPWorkMelee : CECHPWork
|
||||
return true;
|
||||
}
|
||||
// Reset work
|
||||
public virtual void Reset()
|
||||
public override void Reset()
|
||||
{
|
||||
base.Reset();
|
||||
|
||||
|
||||
@@ -1,11 +1,14 @@
|
||||
using BrewMonster.Network;
|
||||
using CSNetwork.GPDataType;
|
||||
using UnityEngine;
|
||||
using static CECPlayer;
|
||||
using Types = BrewMonster.Scripts.CECHPWorkMove.DestTypes;
|
||||
|
||||
namespace BrewMonster.Scripts
|
||||
{
|
||||
public class CECHPWorkMove : CECHPWork
|
||||
{
|
||||
public static class Types
|
||||
public static class DestTypes
|
||||
{
|
||||
public const int DEST_2D = 0,
|
||||
DEST_3D = 1,
|
||||
@@ -15,6 +18,8 @@ namespace BrewMonster.Scripts
|
||||
DEST_AUTOPF = 5; // Movement type
|
||||
}
|
||||
|
||||
private const uint MoveInputMask = 0x0F; // MD_FORWARD | MD_RIGHT | MD_BACK | MD_LEFT
|
||||
|
||||
protected A3DVECTOR3 m_vMoveDest; // Move destination position or direction
|
||||
protected int m_iDestType; // Destination type
|
||||
protected bool m_bHaveDest; // true, have destination
|
||||
@@ -30,6 +35,8 @@ namespace BrewMonster.Scripts
|
||||
protected float m_fCurPitch;
|
||||
protected float m_fPushPitch;
|
||||
protected float m_fPushLean;
|
||||
protected A3DVECTOR3 vDir = new A3DVECTOR3();
|
||||
|
||||
|
||||
protected bool m_bUseAutoMoveDialog; // Auto move
|
||||
protected float m_fAutoHeight; // Height of auto moving destination
|
||||
@@ -121,126 +128,204 @@ namespace BrewMonster.Scripts
|
||||
}
|
||||
|
||||
// Tick routine
|
||||
public virtual bool Tick(float dwDeltaTime)
|
||||
public override bool Tick(float dwDeltaTime)
|
||||
{
|
||||
//UpdateResetUseAutoPF();
|
||||
//if (m_bSwitchTo2D)
|
||||
//{
|
||||
// SwitchToDest2D();
|
||||
// m_bSwitchTo2D = false;
|
||||
// return true;
|
||||
//}
|
||||
//if (IsAutoPF())
|
||||
//{
|
||||
// if (CECIntelligentRoute::Instance().IsIdle())
|
||||
// {
|
||||
// // ����Ѱ·ģʽδ�ɹ�ʱ���ȴ��¸� Tick �л��� DEST_2D ģʽ
|
||||
// return true;
|
||||
// }
|
||||
// if (m_pHost.IsFlying())
|
||||
// {
|
||||
// // ��;�л�������ģʽʱ���л��� DEST_2D ģʽ
|
||||
// CECIntelligentRoute::Instance().ResetSearch();
|
||||
// m_bSwitchTo2D = true;
|
||||
// return true;
|
||||
// }
|
||||
//}
|
||||
UpdateResetUseAutoPF();
|
||||
if (m_bSwitchTo2D)
|
||||
{
|
||||
SwitchToDest2D();
|
||||
m_bSwitchTo2D = false;
|
||||
return true;
|
||||
}
|
||||
/* if (IsAutoPF())
|
||||
{
|
||||
if (CECIntelligentRoute::Instance().IsIdle())
|
||||
{
|
||||
// ����Ѱ·ģʽδ�ɹ�ʱ���ȴ��¸� Tick �л��� DEST_2D ģʽ
|
||||
return true;
|
||||
}
|
||||
if (m_pHost.IsFlying())
|
||||
{
|
||||
// ��;�л�������ģʽʱ���л��� DEST_2D ģʽ
|
||||
CECIntelligentRoute::Instance().ResetSearch();
|
||||
m_bSwitchTo2D = true;
|
||||
return true;
|
||||
}
|
||||
}*/
|
||||
|
||||
//base.Tick(dwDeltaTime);
|
||||
base.Tick(dwDeltaTime);
|
||||
|
||||
//if (m_pHost.IsRooting())
|
||||
// return true;
|
||||
if (m_pHost.IsRooting())
|
||||
return true;
|
||||
|
||||
//if (m_bUseAutoMoveDialog)
|
||||
//{
|
||||
// if (m_pHost.IsFlying())
|
||||
// {
|
||||
// m_bAutoFly = false;
|
||||
// m_bAutoFlyPending = false;
|
||||
// }
|
||||
if (m_bUseAutoMoveDialog)
|
||||
{
|
||||
if (m_pHost.IsFlying())
|
||||
{
|
||||
m_bAutoFly = false;
|
||||
m_bAutoFlyPending = false;
|
||||
}
|
||||
|
||||
// if (m_bAutoFly && !m_bAutoFlyPending && !m_pHost.IsFlying())
|
||||
// {
|
||||
// if (m_pHost.CmdFly())
|
||||
// {
|
||||
// m_bAutoFly = false;
|
||||
// m_bAutoFlyPending = true;
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// // Make sure 'Win_AutoPlay' dialog doesn't show up
|
||||
// CECGameUIMan pGameUI = g_pGame.GetGameRun().GetUIManager().GetInGameUIMan();
|
||||
// pGameUI.AutoMoveShowDialog(false);
|
||||
//}
|
||||
if (m_bAutoFly && !m_bAutoFlyPending && !m_pHost.IsFlying())
|
||||
{
|
||||
/* if (m_pHost.CmdFly())
|
||||
{
|
||||
m_bAutoFly = false;
|
||||
m_bAutoFlyPending = true;
|
||||
}*/
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Make sure 'Win_AutoPlay' dialog doesn't show up
|
||||
/* CECGameUIMan pGameUI = g_pGame.GetGameRun().GetUIManager().GetInGameUIMan();
|
||||
pGameUI.AutoMoveShowDialog(false);*/
|
||||
}
|
||||
|
||||
////Ѱ·�������ҵ�NPC����תΪWorkTrace״̬
|
||||
//if ((m_vMoveDest - m_pHost.GetPos()).MagnitudeH() <= 5.0f)
|
||||
//{
|
||||
// if (m_iNPCTempleId)
|
||||
// {
|
||||
// CECNPC pNPC = g_pGame.GetGameRun().GetWorld().GetNPCMan().FindNPCByTempleID(m_iNPCTempleId);
|
||||
// if (pNPC && m_pHost.SelectTarget(pNPC.GetNPCID()))
|
||||
// {
|
||||
// CECHPWorkTrace pWork = m_pWorkMan.CreateNPCTraceWork(pNPC, m_iTaskId);
|
||||
// if (pWork)
|
||||
// {
|
||||
// m_bAutoLand = false; //��ֹ����״̬Ѱ·������ת��worktrace֮ǰ�Զ���½������workfall��
|
||||
// Finish();
|
||||
// m_pWorkMan.SetPostTickCommand(new CECHPWorkPostTickRunWorkCommand(pWork, true));
|
||||
// return true;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
//Ѱ·�������ҵ�NPC����תΪWorkTrace״̬
|
||||
/*if ((m_vMoveDest - m_pHost.GetPos()).MagnitudeH() <= 5.0f)
|
||||
{
|
||||
if (m_iNPCTempleId != 0)
|
||||
{
|
||||
CECNPC pNPC = EC_Game.GetGameRun().GetWorld().GetNPCMan().FindNPCByTempleID(m_iNPCTempleId);
|
||||
if (pNPC && m_pHost.SelectTarget(pNPC.GetNPCID()))
|
||||
{
|
||||
CECHPWorkTrace pWork = m_pWorkMan.CreateNPCTraceWork(pNPC, m_iTaskId);
|
||||
if (pWork != null)
|
||||
{
|
||||
m_bAutoLand = false; //��ֹ����״̬Ѱ·������ת��worktrace֮ǰ�Զ���½������workfall��
|
||||
Finish();
|
||||
m_pWorkMan.SetPostTickCommand(new CECHPWorkPostTickRunWorkCommand(pWork, true));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}*/
|
||||
m_pHost.SetGroundInfoClient();
|
||||
float fDeltaTime = dwDeltaTime;
|
||||
if (m_pHost.m_iMoveEnv == (int)MoveEnvironment.MOVEENV_GROUND ||
|
||||
m_pHost.m_iMoveEnv == (int)MoveEnvironment.MOVEENV_WATER && m_pHost.IsJumping() && (m_pHost.m_CDRInfo.vAbsVelocity.y > 0 || m_pHost.m_CDRInfo.fYVel > 0))
|
||||
{
|
||||
// Play appropriate actions
|
||||
if (!m_pHost.IsJumping() && !m_pHost.IsPlayingAction((int)CECPlayer.PLAYER_ACTION_TYPE.ACT_TRICK_RUN) &&
|
||||
m_pHost.m_iMoveMode != (int)MoveMode.MOVE_SLIDE && !m_bMeetSlide)
|
||||
{
|
||||
int iAction = m_pHost.GetMoveStandAction(true);
|
||||
m_pHost.PlayAction(iAction, false);
|
||||
}
|
||||
|
||||
//float fDeltaTime = dwDeltaTime;
|
||||
//if (m_pHost.m_iMoveEnv == CECPlayer::MOVEENV_GROUND ||
|
||||
// m_pHost.m_iMoveEnv == CECPlayer::MOVEENV_WATER && m_pHost.IsJumping() && (m_pHost.m_CDRInfo.vAbsVelocity.y > 0 || m_pHost.m_CDRInfo.fYVel > 0))
|
||||
//{
|
||||
// // Play appropriate actions
|
||||
// if (!m_pHost.IsJumping() && !m_pHost.IsPlayingAction(CECPlayer::ACT_TRICK_RUN) &&
|
||||
// m_pHost.m_iMoveMode != CECPlayer::MOVE_SLIDE && !m_bMeetSlide)
|
||||
// {
|
||||
// int iAction = m_pHost.GetMoveStandAction(true);
|
||||
// m_pHost.PlayAction(iAction, false);
|
||||
// }
|
||||
Tick_Walk(fDeltaTime);
|
||||
}
|
||||
else // (m_pHost.m_iMoveEnv == CECPlayer::MOVEENV_AIR || m_pHost.m_iMoveEnv == CECPlayer::MOVEENV_WATER)
|
||||
{
|
||||
m_pHost.ResetJump();
|
||||
|
||||
// Tick_Walk(fDeltaTime);
|
||||
//}
|
||||
//else // (m_pHost.m_iMoveEnv == CECPlayer::MOVEENV_AIR || m_pHost.m_iMoveEnv == CECPlayer::MOVEENV_WATER)
|
||||
//{
|
||||
// m_pHost.ResetJump();
|
||||
// Play appropriate actions
|
||||
if (!m_bGliding)
|
||||
{
|
||||
int iAction = m_pHost.GetMoveStandAction(true);
|
||||
m_pHost.PlayAction(iAction, false);
|
||||
}
|
||||
|
||||
// // Play appropriate actions
|
||||
// if (!m_bGliding)
|
||||
// {
|
||||
// int iAction = m_pHost.GetMoveStandAction(true);
|
||||
// m_pHost.PlayAction(iAction, false);
|
||||
// }
|
||||
|
||||
// Tick_FlySwim(fDeltaTime);
|
||||
//}
|
||||
Tick_FlySwim(fDeltaTime);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
// Reset work
|
||||
public virtual void Reset()
|
||||
public override void Reset()
|
||||
{
|
||||
base.Reset();
|
||||
|
||||
m_iDestType = DestTypes.DEST_2D;
|
||||
m_bHaveDest = false;
|
||||
m_bMeetSlide = false;
|
||||
m_bReadyCancel = false;
|
||||
m_bGliding = false;
|
||||
m_fGlideTime = 0;
|
||||
m_fCurPitch = 0;
|
||||
m_fPushPitch = 0;
|
||||
m_fPushLean = 0;
|
||||
|
||||
m_bUseAutoMoveDialog = false;
|
||||
m_fAutoHeight = -1.0f;
|
||||
m_bAutoLand = false;
|
||||
m_bAutoFly = false;
|
||||
m_bReachedHeight = true;
|
||||
m_bAutoFlyPending = false;
|
||||
|
||||
m_iNPCTempleId = 0;
|
||||
m_iTaskId = 0;
|
||||
m_bSwitchTo2D = false;
|
||||
|
||||
m_bResetAutoPF = false;
|
||||
}
|
||||
// Work is cancel
|
||||
public virtual void Cancel()
|
||||
public override void Cancel()
|
||||
{
|
||||
//if (m_pHost.m_pMoveTargetGFX)
|
||||
// m_pHost.m_pMoveTargetGFX.Stop();
|
||||
|
||||
//A3DVECTOR3 vDir = m_pHost.GetDir();
|
||||
//vDir.y = 0;
|
||||
//vDir.Normalize();
|
||||
//if (!vDir.IsZero())
|
||||
//{
|
||||
// m_pHost.StopModelMove(vDir, g_vAxisY, 0);
|
||||
//}
|
||||
|
||||
ClearResetUseAutoPF();
|
||||
//if (CECIntelligentRoute::Instance().IsUsageMove())
|
||||
//{
|
||||
// if (!CECIntelligentRoute::Instance().IsIdle())
|
||||
// {
|
||||
// CECIntelligentRoute::Instance().ResetSearch();
|
||||
// m_bSwitchTo2D = true; // Æô¶¯·ÉÐÐÖжϺó»Ö¸´Ê±¡¢ÐèÒªÇл»µ½ DEST_2D ģʽ
|
||||
// }
|
||||
//}
|
||||
base.Cancel();
|
||||
//AP_ActionEvent(AP_EVENT_MOVEFINISHED);
|
||||
}
|
||||
|
||||
// This work is do player moving ?
|
||||
public virtual bool IsMoving() { return true; }
|
||||
public override bool IsMoving() { return true; }
|
||||
// Copy work data
|
||||
public virtual bool CopyData(CECHPWork pWork)
|
||||
public override bool CopyData(CECHPWork pWork)
|
||||
{
|
||||
if (!base.CopyData(pWork))
|
||||
return false;
|
||||
|
||||
CECHPWorkMove pSrc = pWork as CECHPWorkMove;
|
||||
|
||||
m_iDestType = pSrc.m_iDestType;
|
||||
m_bHaveDest = pSrc.m_bHaveDest;
|
||||
m_bMeetSlide = pSrc.m_bMeetSlide;
|
||||
m_bReadyCancel = pSrc.m_bReadyCancel;
|
||||
m_bGliding = pSrc.m_bGliding;
|
||||
m_fGlideTime = pSrc.m_fGlideTime;
|
||||
m_fGlideSpan = pSrc.m_fGlideSpan;
|
||||
m_fGlideAng = pSrc.m_fGlideAng;
|
||||
m_fGlideVel = pSrc.m_fGlideVel;
|
||||
m_fGlidePitch = pSrc.m_fGlidePitch;
|
||||
m_fCurPitch = pSrc.m_fCurPitch;
|
||||
m_fPushPitch = pSrc.m_fPushPitch;
|
||||
m_fPushLean = pSrc.m_fPushLean;
|
||||
m_iDestType = pSrc.m_iDestType;
|
||||
m_vMoveDest = pSrc.m_vMoveDest;
|
||||
m_vCurDir = pSrc.m_vCurDir;
|
||||
|
||||
m_bUseAutoMoveDialog = pSrc.m_bUseAutoMoveDialog;
|
||||
m_fAutoHeight = pSrc.m_fAutoHeight;
|
||||
m_bAutoLand = pSrc.m_bAutoLand;
|
||||
m_bAutoFly = pSrc.m_bAutoFly;
|
||||
m_bReachedHeight = pSrc.m_bReachedHeight;
|
||||
m_bAutoFlyPending = pSrc.m_bAutoFlyPending;
|
||||
|
||||
m_iNPCTempleId = pSrc.m_iNPCTempleId;
|
||||
m_iTaskId = pSrc.m_iTaskId;
|
||||
m_bSwitchTo2D = pSrc.m_bSwitchTo2D;
|
||||
|
||||
m_bResetAutoPF = pSrc.m_bResetAutoPF;
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -319,16 +404,351 @@ namespace BrewMonster.Scripts
|
||||
//SetUseAutoMoveDialog(true);
|
||||
}
|
||||
// On first tick
|
||||
protected virtual void OnFirstTick()
|
||||
protected override void OnFirstTick()
|
||||
{
|
||||
m_pHost.m_iMoveMode = Move_Mode.MOVE_MOVE;
|
||||
//PlayMoveTargetGFX();
|
||||
|
||||
//if (m_pHost.m_iMoveEnv != CECPlayer::MOVEENV_AIR)
|
||||
// m_pHost.ShowWing(false);
|
||||
|
||||
if (!m_pHost.IsJumping())
|
||||
{
|
||||
int iAction = m_pHost.GetMoveStandAction(true);
|
||||
m_pHost.PlayAction(iAction, false);
|
||||
}
|
||||
}
|
||||
|
||||
// Tick routine of walking on ground
|
||||
protected bool Tick_Walk(float fDeltaTime)
|
||||
{
|
||||
A3DVECTOR3 vCurPos = m_pHost.GetPos();
|
||||
ref CDR_INFO cdr = ref m_pHost.m_CDRInfo;
|
||||
|
||||
if (m_pHost.m_iMoveMode == (int)MoveMode.MOVE_SLIDE)
|
||||
{
|
||||
m_pHost.PlayAction((int)CECPlayer.PLAYER_ACTION_TYPE.ACT_JUMP_LOOP, false);
|
||||
|
||||
A3DVECTOR3 vDir;
|
||||
if (m_iDestType == DestTypes.DEST_DIR)
|
||||
{
|
||||
vDir = m_vCurDir;
|
||||
}
|
||||
else if (m_iDestType == DestTypes.DEST_PUSH)
|
||||
{
|
||||
vDir = GetCurrentModelDir();
|
||||
}
|
||||
#if ENABLE_CEC_INTELLIGENT_ROUTE
|
||||
else if (IsAutoPF())
|
||||
{
|
||||
vDir = CECIntelligentRoute.Instance().GetCurDest() - vCurPos;
|
||||
vDir.y = 0.0f;
|
||||
vDir.Normalize();
|
||||
}
|
||||
#endif
|
||||
else
|
||||
{
|
||||
vDir = m_vMoveDest - vCurPos;
|
||||
vDir.y = 0.0f;
|
||||
vDir.Normalize();
|
||||
}
|
||||
|
||||
float fMaxSpeedV = 0.0f;
|
||||
m_bMeetSlide = m_pHost.m_MoveCtrl.MeetSlope(vDir, fMaxSpeedV);
|
||||
cdr.fYVel = EC_Utility.a_ClampFloor(cdr.fYVel, -fMaxSpeedV);
|
||||
|
||||
if (m_pHost.m_GndInfo.bOnGround)
|
||||
m_vCurDir = vDir;
|
||||
|
||||
vCurPos = m_pHost.m_MoveCtrl.GroundMove(m_vCurDir, m_pHost.GetGroundSpeed(), fDeltaTime);
|
||||
if (m_pHost.m_MoveCtrl.MoveBlocked() >= 3)
|
||||
{
|
||||
m_pHost.m_MoveCtrl.SetSlideLock(true);
|
||||
cdr.fYVel = 0.0f;
|
||||
|
||||
Finish();
|
||||
m_pHost.m_MoveCtrl.SendStopMoveCmd(EC_Utility.ToVector3(vCurPos), m_pHost.GetGroundSpeed(), (int)GPMoveMode.GP_MOVE_SLIDE);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_pHost.SetPos(EC_Utility.ToVector3(vCurPos));
|
||||
#if ENABLE_CEC_INTELLIGENT_ROUTE
|
||||
if (IsAutoPF() && CECIntelligentRoute.Instance().IsMoveOn())
|
||||
CECIntelligentRoute.Instance().OnPlayerPosChange(vCurPos);
|
||||
#endif
|
||||
#if SHOW_AUTOMOVE_FOOTPRINTS
|
||||
if (IsAutoPF() || m_iDestType == DestTypes.DEST_2D)
|
||||
g_AutoPFFollowPoints.Add(vCurPos);
|
||||
#endif
|
||||
m_pHost.m_MoveCtrl.SendMoveCmd(
|
||||
vCurPos,
|
||||
2,
|
||||
GPDataTypeHelper.g_vOrigin,
|
||||
EC_Utility.ToA3DVECTOR3(cdr.vAbsVelocity),
|
||||
(int)GPMoveMode.GP_MOVE_SLIDE);
|
||||
}
|
||||
}
|
||||
else if (!m_bMeetSlide)
|
||||
{
|
||||
float fSpeed = m_pHost.GetGroundSpeed();
|
||||
int iMoveMode = m_pHost.m_bWalkRun ? (int)GPMoveMode.GP_MOVE_RUN : (int)GPMoveMode.GP_MOVE_WALK;
|
||||
if (m_pHost.IsJumping())
|
||||
iMoveMode = (int)GPMoveMode.GP_MOVE_JUMP;
|
||||
else if (!m_pHost.m_GndInfo.bOnGround)
|
||||
iMoveMode = (int)GPMoveMode.GP_MOVE_FALL;
|
||||
|
||||
if (m_bReadyCancel && m_pHost.m_GndInfo.bOnGround)
|
||||
{
|
||||
Finish();
|
||||
m_pHost.m_MoveCtrl.SendStopMoveCmd(EC_Utility.ToVector3(vCurPos), fSpeed, iMoveMode);
|
||||
return true;
|
||||
}
|
||||
|
||||
if ((GetMoveRelDirMask() & (uint)((MOVE_DIR.MD_LEFT | MOVE_DIR.MD_RIGHT | MOVE_DIR.MD_FORWARD | MOVE_DIR.MD_BACK))) != 0)
|
||||
m_iDestType = DestTypes.DEST_PUSH;
|
||||
|
||||
if (m_iDestType == DestTypes.DEST_2D)
|
||||
{
|
||||
float fDist;
|
||||
if (m_pHost.m_GndInfo.bOnGround)
|
||||
{
|
||||
m_vCurDir = m_vMoveDest - vCurPos;
|
||||
m_vCurDir.y = 0.0f;
|
||||
fDist = m_vCurDir.Normalize();
|
||||
}
|
||||
else
|
||||
{
|
||||
fDist = (m_vMoveDest - vCurPos).MagnitudeH();
|
||||
}
|
||||
|
||||
vCurPos = m_pHost.m_MoveCtrl.GroundMove(m_vCurDir, fSpeed, fDeltaTime, m_pHost.m_fVertSpeed);
|
||||
Debug.LogError(vCurPos);
|
||||
UpdateFacingFromDelta(vCurPos);
|
||||
|
||||
if (m_pHost.m_MoveCtrl.MoveBlocked() >= 3)
|
||||
{
|
||||
cdr.fYVel = 0.0f;
|
||||
|
||||
Finish();
|
||||
m_pHost.m_MoveCtrl.SendStopMoveCmd(EC_Utility.ToVector3(vCurPos), fSpeed, iMoveMode);
|
||||
}
|
||||
else if (cdr.vTPNormal != Vector3.zero)
|
||||
{
|
||||
A3DVECTOR3 vMoveDelta = vCurPos - m_pHost.GetPos();
|
||||
vMoveDelta.y = 0.0f;
|
||||
float fMoveDist = vMoveDelta.Normalize();
|
||||
|
||||
if (fMoveDist >= fDist)
|
||||
{
|
||||
Finish();
|
||||
m_bUseAutoMoveDialog = false;
|
||||
m_pHost.SetPos(EC_Utility.ToVector3(vCurPos));
|
||||
m_pHost.m_MoveCtrl.SendStopMoveCmd(EC_Utility.ToVector3(vCurPos), fSpeed, iMoveMode);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_pHost.SetPos(EC_Utility.ToVector3(vCurPos));
|
||||
m_pHost.m_MoveCtrl.SendMoveCmd(
|
||||
vCurPos,
|
||||
0,
|
||||
m_vMoveDest,
|
||||
EC_Utility.ToA3DVECTOR3(cdr.vAbsVelocity),
|
||||
iMoveMode);
|
||||
}
|
||||
#if SHOW_AUTOMOVE_FOOTPRINTS
|
||||
g_AutoPFFollowPoints.Add(vCurPos);
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
#if SHOW_AUTOMOVE_FOOTPRINTS
|
||||
g_AutoPFFollowPoints.Add(vCurPos);
|
||||
#endif
|
||||
m_pHost.SetPos(EC_Utility.ToVector3(vCurPos));
|
||||
m_pHost.m_MoveCtrl.SendMoveCmd(
|
||||
vCurPos,
|
||||
1,
|
||||
m_vMoveDest,
|
||||
EC_Utility.ToA3DVECTOR3(cdr.vAbsVelocity),
|
||||
iMoveMode);
|
||||
}
|
||||
}
|
||||
else if (m_iDestType == DestTypes.DEST_DIR)
|
||||
{
|
||||
vCurPos = m_pHost.m_MoveCtrl.GroundMove(m_vCurDir, fSpeed, fDeltaTime, m_pHost.m_fVertSpeed);
|
||||
UpdateFacingFromDelta(vCurPos);
|
||||
m_pHost.SetPos(EC_Utility.ToVector3(vCurPos));
|
||||
|
||||
if (m_pHost.m_MoveCtrl.MoveBlocked() >= 3)
|
||||
{
|
||||
cdr.fYVel = 0.0f;
|
||||
|
||||
Finish();
|
||||
m_pHost.m_MoveCtrl.SendStopMoveCmd(EC_Utility.ToVector3(vCurPos), fSpeed, iMoveMode);
|
||||
}
|
||||
else if (m_pHost.m_GndInfo.bOnGround)
|
||||
{
|
||||
m_pHost.m_MoveCtrl.SendMoveCmd(
|
||||
vCurPos,
|
||||
2,
|
||||
GPDataTypeHelper.g_vOrigin,
|
||||
EC_Utility.ToA3DVECTOR3(cdr.vAbsVelocity),
|
||||
iMoveMode);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_pHost.m_MoveCtrl.SendMoveCmd(
|
||||
vCurPos,
|
||||
1,
|
||||
m_vMoveDest,
|
||||
EC_Utility.ToA3DVECTOR3(cdr.vAbsVelocity),
|
||||
iMoveMode);
|
||||
}
|
||||
}
|
||||
else if (m_iDestType == DestTypes.DEST_STANDJUMP)
|
||||
{
|
||||
if (!m_pHost.IsJumping())
|
||||
{
|
||||
Finish();
|
||||
m_pHost.m_MoveCtrl.SendStopMoveCmd(EC_Utility.ToVector3(vCurPos), fSpeed, iMoveMode);
|
||||
}
|
||||
else
|
||||
{
|
||||
vCurPos = m_pHost.m_MoveCtrl.GroundMove(GPDataTypeHelper.g_vOrigin, 0.0f, fDeltaTime, m_pHost.m_fVertSpeed);
|
||||
m_pHost.SetPos(EC_Utility.ToVector3(vCurPos));
|
||||
|
||||
if (m_pHost.m_MoveCtrl.MoveBlocked() >= 3)
|
||||
{
|
||||
m_pHost.ResetJump();
|
||||
Finish();
|
||||
m_pHost.m_MoveCtrl.SendStopMoveCmd(EC_Utility.ToVector3(vCurPos), fSpeed, iMoveMode);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_pHost.m_MoveCtrl.SendMoveCmd(
|
||||
vCurPos,
|
||||
0,
|
||||
m_vMoveDest,
|
||||
EC_Utility.ToA3DVECTOR3(cdr.vAbsVelocity),
|
||||
iMoveMode);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (m_iDestType == DestTypes.DEST_PUSH)
|
||||
{
|
||||
Vector3 vMoveDir = Vector3.zero;//EC_Utility.ToVector3(GPDataTypeHelper.g_vOrigin);
|
||||
fSpeed = m_pHost.GetGroundSpeed();
|
||||
bool bFinish = false;
|
||||
|
||||
if (m_pHost.GetPushDir(ref vMoveDir, (uint)(MOVE_DIR.MD_FORWARD | MOVE_DIR.MD_BACK | MOVE_DIR.MD_LEFT | MOVE_DIR.MD_RIGHT), fDeltaTime))
|
||||
{
|
||||
if (vMoveDir != Vector3.zero)
|
||||
{
|
||||
m_pHost.SetRotationHP(vMoveDir);
|
||||
}
|
||||
|
||||
vCurPos = m_pHost.m_MoveCtrl.GroundMove(EC_Utility.ToA3DVECTOR3(vMoveDir), fSpeed, fDeltaTime, m_pHost.m_fVertSpeed);
|
||||
//Debug.LogError("vCurPos =" + vCurPos);
|
||||
m_pHost.SetPos(EC_Utility.ToVector3(vCurPos));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!m_bUseAutoMoveDialog)
|
||||
bFinish = true;
|
||||
else
|
||||
m_iDestType = DestTypes.DEST_2D;
|
||||
}
|
||||
|
||||
if (bFinish || m_pHost.m_MoveCtrl.MoveBlocked() >= 3)
|
||||
{
|
||||
if (m_pHost.m_MoveCtrl.MoveBlocked() >= 3)
|
||||
cdr.fYVel = 0.0f;
|
||||
|
||||
Finish();
|
||||
m_pHost.m_vVelocity.Clear();
|
||||
m_pHost.m_MoveCtrl.SendStopMoveCmd(EC_Utility.ToVector3(vCurPos), fSpeed, iMoveMode);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_pHost.m_vVelocity = EC_Utility.ToA3DVECTOR3(vMoveDir) * fSpeed;
|
||||
m_pHost.m_MoveCtrl.SendMoveCmd(
|
||||
vCurPos,
|
||||
2,
|
||||
GPDataTypeHelper.g_vOrigin,
|
||||
m_pHost.m_vVelocity,
|
||||
iMoveMode);
|
||||
}
|
||||
}
|
||||
//else if (m_iDestType == DestTypes.DEST_PUSH)
|
||||
//{
|
||||
// m_iDestType = DestTypes.DEST_2D;
|
||||
//}
|
||||
#if ENABLE_CEC_INTELLIGENT_ROUTE
|
||||
else if (IsAutoPF())
|
||||
{
|
||||
float fDist = 0.0f;
|
||||
A3DVECTOR3 vCurDest = CECIntelligentRoute.Instance().GetCurDest();
|
||||
if (m_pHost.m_GndInfo.bOnGround)
|
||||
{
|
||||
m_vCurDir = vCurDest - vCurPos;
|
||||
m_vCurDir.y = 0.0f;
|
||||
fDist = m_vCurDir.Normalize();
|
||||
}
|
||||
else
|
||||
{
|
||||
fDist = (vCurDest - vCurPos).MagnitudeH();
|
||||
}
|
||||
|
||||
vCurPos = m_pHost.m_MoveCtrl.GroundMove(m_vCurDir, fSpeed, fDeltaTime, m_pHost.m_fVertSpeed);
|
||||
if (!m_vCurDir.IsZero())
|
||||
{
|
||||
//m_pHost.StartModelMove(m_vCurDir, GPDataTypeHelper.g_vAxisY, 100);
|
||||
//m_pHost.ChangeModelTargetDirAndUp(m_vCurDir, GPDataTypeHelper.g_vAxisY);
|
||||
UpdateFacingFromDelta(vCurPos);
|
||||
}
|
||||
|
||||
if (m_pHost.m_MoveCtrl.MoveBlocked() >= 3)
|
||||
{
|
||||
cdr.fYVel = 0.0f;
|
||||
Finish();
|
||||
m_pHost.m_MoveCtrl.SendStopMoveCmd(EC_Utility.ToVector3(vCurPos), fSpeed, iMoveMode);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_pHost.SetPos(EC_Utility.ToVector3(vCurPos));
|
||||
CECIntelligentRoute.Instance().OnPlayerPosChange(vCurPos);
|
||||
if (CECIntelligentRoute.Instance().IsPathFinished())
|
||||
{
|
||||
Finish();
|
||||
m_pHost.m_MoveCtrl.SendStopMoveCmd(EC_Utility.ToVector3(vCurPos), fSpeed, iMoveMode);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_pHost.m_MoveCtrl.SendMoveCmd(
|
||||
vCurPos,
|
||||
1,
|
||||
vCurDest,
|
||||
EC_Utility.ToA3DVECTOR3(cdr.vAbsVelocity),
|
||||
iMoveMode);
|
||||
}
|
||||
}
|
||||
}
|
||||
#else
|
||||
else if (IsAutoPF())
|
||||
{
|
||||
m_bSwitchTo2D = true;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
m_pHost.m_MoveCtrl.SendStopMoveCmd(EC_Utility.ToVector3(vCurPos), m_pHost.GetGroundSpeed(), (int)GPMoveMode.GP_MOVE_SLIDE);
|
||||
Finish();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// Tick routine of flying or swimming
|
||||
protected bool Tick_FlySwim(float fDeltaTime)
|
||||
{
|
||||
@@ -348,7 +768,7 @@ namespace BrewMonster.Scripts
|
||||
|
||||
protected void ClearResetUseAutoPF()
|
||||
{
|
||||
|
||||
m_bResetAutoPF = false;
|
||||
}
|
||||
protected void UpdateResetUseAutoPF()
|
||||
{
|
||||
@@ -390,5 +810,30 @@ namespace BrewMonster.Scripts
|
||||
// ClearResetUseAutoPF();
|
||||
}
|
||||
|
||||
protected virtual uint GetMoveRelDirMask()
|
||||
{
|
||||
// TODO: hook up CECHostPlayer move-direction flags when available.
|
||||
return 0;
|
||||
}
|
||||
|
||||
private void UpdateFacingFromDelta(A3DVECTOR3 nextPos)
|
||||
{
|
||||
A3DVECTOR3 prevPos = m_pHost.GetPos();
|
||||
Vector3 delta = EC_Utility.ToVector3(nextPos - prevPos);
|
||||
delta.y = 0.0f;
|
||||
if (delta.sqrMagnitude > 1e-6f)
|
||||
{
|
||||
delta.Normalize();
|
||||
m_pHost.SetDirAndUp(delta, Vector3.up);
|
||||
}
|
||||
}
|
||||
|
||||
private A3DVECTOR3 GetCurrentModelDir()
|
||||
{
|
||||
Vector3 forward = m_pHost != null ? m_pHost.transform.forward : Vector3.forward;
|
||||
return new A3DVECTOR3(forward.x, forward.y, forward.z);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ namespace BrewMonster.Scripts
|
||||
protected bool m_bMoving; // moving flag
|
||||
protected bool m_bStopSlide; // stop sliding flag
|
||||
protected int m_iCurAction; // current playing action
|
||||
protected int m_oldAction; // cache old played action
|
||||
//protected int m_oldAction; // cache old played action
|
||||
|
||||
public CECHPWorkStand(CECHPWorkMan pWorkMan) : base(Host_work_ID.WORK_STAND, pWorkMan)
|
||||
{
|
||||
@@ -132,7 +132,7 @@ namespace BrewMonster.Scripts
|
||||
var pWork = (CECHPWorkMove)m_pWorkMan.CreateWork(Host_work_ID.WORK_MOVETOPOS);
|
||||
if (pWork != null)
|
||||
{
|
||||
pWork.SetDestination(CECHPWorkMove.Types.DEST_STANDJUMP, GPDataTypeHelper.g_vOrigin);
|
||||
pWork.SetDestination(CECHPWorkMove.DestTypes.DEST_STANDJUMP, GPDataTypeHelper.g_vOrigin);
|
||||
m_pWorkMan.SetPostTickCommand(new CECHPWorkPostTickRunWorkCommand(
|
||||
pWork, false, CECHPWorkMan.Work_priority.PRIORITY_1, true, (uint)dwDeltaTime));
|
||||
}
|
||||
@@ -160,7 +160,7 @@ namespace BrewMonster.Scripts
|
||||
m_iCurAction = m_pHost.GetMoveStandAction(false, bFight);
|
||||
}
|
||||
|
||||
float fDeltaTime = dwDeltaTime * 0.001f;
|
||||
float fDeltaTime = dwDeltaTime /** 0.001f*/;
|
||||
|
||||
if (!m_pHost.IsRooting())
|
||||
{
|
||||
@@ -170,11 +170,11 @@ namespace BrewMonster.Scripts
|
||||
Tick_FlySwim(fDeltaTime);*/
|
||||
}
|
||||
|
||||
if (m_iPoseAction == (int)CECPlayer.PLAYER_ACTION_TYPE.ACT_STAND && m_oldAction != m_iCurAction)
|
||||
if (m_iPoseAction == (int)CECPlayer.PLAYER_ACTION_TYPE.ACT_STAND)
|
||||
{
|
||||
// Chariot war special case omitted for now
|
||||
m_pHost.PlayAction(m_iCurAction, false, 300);
|
||||
m_oldAction = m_iCurAction;
|
||||
m_pHost.PlayAction(m_iCurAction, false, 0);
|
||||
//m_oldAction = m_iCurAction;
|
||||
}
|
||||
|
||||
// Force to update object's direction and up
|
||||
@@ -225,25 +225,28 @@ namespace BrewMonster.Scripts
|
||||
}
|
||||
|
||||
// Tick routine of flying or swimming
|
||||
/* bool Tick_FlySwim(float fDeltaTime)
|
||||
{
|
||||
m_bMoving = false;
|
||||
/* bool Tick_FlySwim(float fDeltaTime)
|
||||
{
|
||||
m_bMoving = false;
|
||||
|
||||
if (m_pHost.m_iMoveEnv == CECPlayer.Move_environment.MOVEENV_WATER && !m_bWaterStop)
|
||||
{
|
||||
// Handle floating at water surface after falling into water
|
||||
A3DVECTOR3 vCurPos = m_pHost.GetPos();
|
||||
// ON_AIR_CDR_INFO not available in current C# port; approximate using CDR_INFO where applicable
|
||||
float fSpeed = m_pHost.GetSwimSpeedSev();
|
||||
if (m_pHost.m_iMoveEnv == CECPlayer.Move_environment.MOVEENV_WATER && !m_bWaterStop)
|
||||
{
|
||||
// Handle floating at water surface after falling into water
|
||||
A3DVECTOR3 vCurPos = m_pHost.GetPos();
|
||||
// ON_AIR_CDR_INFO not available in current C# port; approximate using CDR_INFO where applicable
|
||||
float fSpeed = m_pHost.GetSwimSpeedSev();
|
||||
|
||||
// As we don't have water height/extent readily available on host in this port,
|
||||
// retain structure and leave movement here minimal.
|
||||
// If water height APIs are added, restore the original logic.
|
||||
// m_bMoving = true; // enable when full water logic is available
|
||||
}
|
||||
// As we don't have water height/extent readily available on host in this port,
|
||||
// retain structure and leave movement here minimal.
|
||||
// If water height APIs are added, restore the original logic.
|
||||
// m_bMoving = true; // enable when full water logic is available
|
||||
}
|
||||
|
||||
return true;
|
||||
}*/
|
||||
return true;
|
||||
}*/
|
||||
|
||||
// Get stop sliding flag
|
||||
public bool GetStopSlideFlag() { return m_bStopSlide; }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -193,15 +193,15 @@ public class CECTracedNPC : CECTracedObject
|
||||
{
|
||||
bRet = true;
|
||||
}
|
||||
//else if (m_iReason == CECHPWorkTrace.Trace_reason.TRACE_SPELL)
|
||||
//{
|
||||
// CECSkill pSkill = m_pHost.m_pPrepSkill;
|
||||
// if (pSkill == null || pSkill.GetTargetType() != 2)
|
||||
// {
|
||||
// bRet = true;
|
||||
// m_pHost.m_pPrepSkill = null;
|
||||
// }
|
||||
//}
|
||||
else if (m_iReason == CECHPWorkTrace.Trace_reason.TRACE_SPELL)
|
||||
{
|
||||
CECSkill pSkill = m_pHost.m_pPrepSkill;
|
||||
if (pSkill == null || pSkill.GetTargetType() != 2)
|
||||
{
|
||||
bRet = true;
|
||||
m_pHost.m_pPrepSkill = null;
|
||||
}
|
||||
}
|
||||
return bRet;
|
||||
}
|
||||
|
||||
@@ -220,6 +220,7 @@ public class CECTracedNPC : CECTracedObject
|
||||
|
||||
if (m_iReason == CECHPWorkTrace.Trace_reason.TRACE_TALK)
|
||||
{
|
||||
//TODO: Visite other's booth, send hello message to him
|
||||
if ((!m_pHost.IsInBattle() || m_pHost.InSameBattleCamp(pNPC)) /*&&
|
||||
!g_pGame.GetGameRun().GetUIManager().GetInGameUIMan().GetDialog("Win_SkillAction").IsShow()*/)
|
||||
{
|
||||
@@ -295,15 +296,15 @@ public class CECTracedPlayer : CECTracedObject
|
||||
{
|
||||
bRet = true;
|
||||
}
|
||||
//else if (m_iReason == CECHPWorkTrace.Trace_reason.TRACE_SPELL)
|
||||
//{
|
||||
// CECSkill pSkill = m_pHost.m_pPrepSkill;
|
||||
// if (pSkill == null || pSkill.GetTargetType() != 2)
|
||||
// {
|
||||
// bRet = true;
|
||||
// m_pHost.m_pPrepSkill = null;
|
||||
// }
|
||||
//}
|
||||
else if (m_iReason == CECHPWorkTrace.Trace_reason.TRACE_SPELL)
|
||||
{
|
||||
CECSkill pSkill = m_pHost.m_pPrepSkill;
|
||||
if (pSkill == null || pSkill.GetTargetType() != 2)
|
||||
{
|
||||
bRet = true;
|
||||
m_pHost.m_pPrepSkill = null;
|
||||
}
|
||||
}
|
||||
return bRet;
|
||||
}
|
||||
|
||||
@@ -328,17 +329,15 @@ public class CECTracedPlayer : CECTracedObject
|
||||
if (m_iObjectId == 0 || m_iObjectId == m_pHost.GetCharacterID())
|
||||
{
|
||||
// Handle special case
|
||||
//ASSERT(m_iReason == CECHPWorkTrace::TRACE_SPELL);
|
||||
//if (!m_pHost.CannotAttack())
|
||||
//{
|
||||
// if (m_pHost.CastSkill(m_iObjectId, m_bForceAttack, null))
|
||||
// bActionDone = true;
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// m_pHost.m_pPrepSkill = null;
|
||||
//}
|
||||
//a_LogOutput(1, "[NormalATK]- CECTracedPlayer- OnTouched- special case- TRACE_SPELL");
|
||||
if (!m_pHost.CannotAttack())
|
||||
{
|
||||
if (m_pHost.CastSkill(m_iObjectId, m_bForceAttack, null))
|
||||
bActionDone = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_pHost.m_pPrepSkill = null;
|
||||
}
|
||||
return bActionDone;
|
||||
}
|
||||
if (m_iReason == CECHPWorkTrace.Trace_reason.TRACE_ATTACK)
|
||||
@@ -353,18 +352,18 @@ public class CECTracedPlayer : CECTracedObject
|
||||
//a_LogOutput(1, "[NormalATK]- CECTracedPlayer- OnTouched- TRACE_ATTACK");
|
||||
}
|
||||
}
|
||||
//else if (m_iReason == CECHPWorkTrace.Trace_reason.TRACE_SPELL)
|
||||
//{
|
||||
// //a_LogOutput(1, "[NormalATK]- CECTracedPlayer- OnTouched- TRACE_SPELL");
|
||||
// if (!m_pHost.CastSkill(m_iObjectId, m_bForceAttack, GetTargetObject()))
|
||||
// {
|
||||
// m_pHost.m_pPrepSkill = null;
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// bActionDone = true;
|
||||
// }
|
||||
//}
|
||||
else if (m_iReason == CECHPWorkTrace.Trace_reason.TRACE_SPELL)
|
||||
{
|
||||
//a_LogOutput(1, "[NormalATK]- CECTracedPlayer- OnTouched- TRACE_SPELL");
|
||||
if (!m_pHost.CastSkill(m_iObjectId, m_bForceAttack, GetTargetObject()))
|
||||
{
|
||||
m_pHost.m_pPrepSkill = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
bActionDone = true;
|
||||
}
|
||||
}
|
||||
else if (m_iReason == CECHPWorkTrace.Trace_reason.TRACE_TALK)
|
||||
{
|
||||
// Visite other's booth, send hello message to him
|
||||
@@ -392,14 +391,14 @@ public class CECTracedPlayer : CECTracedObject
|
||||
{
|
||||
if (pPlayer.IsDead())
|
||||
{
|
||||
//if (m_iReason == CECHPWorkTrace.Trace_reason.TRACE_SPELL)
|
||||
//{
|
||||
// CECSkill pSkill = m_pHost.m_pPrepSkill;
|
||||
// if (pSkill && pSkill.GetTargetType() == 2)
|
||||
// {
|
||||
// return false;
|
||||
// }
|
||||
//}
|
||||
if (m_iReason == CECHPWorkTrace.Trace_reason.TRACE_SPELL)
|
||||
{
|
||||
CECSkill pSkill = m_pHost.m_pPrepSkill;
|
||||
if (pSkill != null && pSkill.GetTargetType() == 2)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -666,14 +665,15 @@ public class CECHPWorkTrace : CECHPWork
|
||||
// Work is cancel
|
||||
public override void Cancel()
|
||||
{
|
||||
//if (m_pHost.m_pPrepSkill && m_pTraceObject.GetTraceReason() == Trace_reason.TRACE_SPELL)
|
||||
// m_pHost.m_pPrepSkill = null;
|
||||
if (m_pHost.m_pPrepSkill != null && m_pTraceObject.GetTraceReason() == Trace_reason.TRACE_SPELL)
|
||||
m_pHost.m_pPrepSkill = null;
|
||||
|
||||
ClearResetUseAutoPF();
|
||||
if (GetUseAutoPF())
|
||||
{
|
||||
SetUseAutoPF(false);
|
||||
}
|
||||
//TODO: m_pHost.StopModelMove(); uncomment and add logic
|
||||
//m_pHost.StopModelMove();
|
||||
base.Cancel();
|
||||
|
||||
@@ -714,8 +714,8 @@ public class CECHPWorkTrace : CECHPWork
|
||||
public void PressCancel()
|
||||
{
|
||||
m_bReadyCancel = true;
|
||||
//if (m_pTraceObject.GetTraceReason() == TRACE_SPELL)
|
||||
// m_pHost.m_pPrepSkill = NULL;
|
||||
if (m_pTraceObject.GetTraceReason() == Trace_reason.TRACE_SPELL)
|
||||
m_pHost.m_pPrepSkill = null;
|
||||
}
|
||||
// Set move close flag
|
||||
public void SetMoveCloseFlag(bool bMoveClose) { m_pTraceObject.SetMoveCloseFlag(bMoveClose); }
|
||||
@@ -757,10 +757,10 @@ public class CECHPWorkTrace : CECHPWork
|
||||
{
|
||||
m_pTraceObject.OnTargetMissing();
|
||||
}
|
||||
//else if (m_pTraceObject.GetTraceReason() == Trace_reason.TRACE_SPELL)
|
||||
//{
|
||||
// m_pHost.m_pPrepSkill = null;
|
||||
//}
|
||||
else if (m_pTraceObject.GetTraceReason() == Trace_reason.TRACE_SPELL)
|
||||
{
|
||||
m_pHost.m_pPrepSkill = null;
|
||||
}
|
||||
}
|
||||
|
||||
public void OnTouchTarget()
|
||||
|
||||
@@ -0,0 +1,212 @@
|
||||
using BrewMonster.Managers;
|
||||
using BrewMonster.Network;
|
||||
using BrewMonster.Scripts;
|
||||
using CSNetwork.GPDataType;
|
||||
using System;
|
||||
using UnityEngine;
|
||||
|
||||
namespace BrewMonster
|
||||
{
|
||||
public partial class CECHostPlayer
|
||||
{
|
||||
float _JumpTime = -1;
|
||||
|
||||
public void OnKeyDown()
|
||||
{
|
||||
if (Input.GetMouseButtonDown(0) && mainCam != null)
|
||||
{
|
||||
OnMsgLBtnClick();
|
||||
}
|
||||
if (Input.GetKeyDown(KeyCode.Space))
|
||||
{
|
||||
//if (bInAutoMode) return;
|
||||
if (IsJumpInWater() || IsFlying())
|
||||
return;
|
||||
|
||||
if (IsUnderWater())
|
||||
{
|
||||
if (!CanTakeOffWater())
|
||||
return;
|
||||
else if (_JumpTime <= 0)
|
||||
{
|
||||
_JumpTime = Time.realtimeSinceStartup;
|
||||
return;
|
||||
}
|
||||
else if ((Time.realtimeSinceStartup - _JumpTime) < 1f) // logic in c++, _JumpTime is milisecond
|
||||
return;
|
||||
else
|
||||
_JumpTime = -1f;
|
||||
}
|
||||
|
||||
m_GndInfo.bOnGround = GroundCheck(out lastGroundHit);
|
||||
OnMsgHstJump();
|
||||
}
|
||||
}
|
||||
|
||||
public void OnMsgLBtnClick()
|
||||
{
|
||||
int idTraceTarget = 0, idSelTarget = 0;
|
||||
bool bForceAttack = false;
|
||||
int iTraceReason = CECHPWorkTrace.Trace_reason.TRACE_NONE;
|
||||
bool bWikiMonster = false;
|
||||
|
||||
ray = mainCam.ScreenPointToRay(Input.mousePosition);
|
||||
|
||||
if (Physics.Raycast(ray, out hit))
|
||||
{
|
||||
if (hit.collider.gameObject.TryGetComponent<CECObject>(out CECObject clickedObject))
|
||||
{
|
||||
int idObject = CECObject.GetObjectID(clickedObject);
|
||||
if (idObject != 0)
|
||||
{
|
||||
CECNPC pNPC = EC_ManMessageMono.Instance._CECNPCMan.GetNPC(idObject);
|
||||
if (pNPC != null)
|
||||
{
|
||||
if (!pNPC.IsDead() && m_idSelTarget == idObject)
|
||||
{
|
||||
idTraceTarget = idObject;
|
||||
}
|
||||
else
|
||||
{
|
||||
idSelTarget = idObject;
|
||||
}
|
||||
|
||||
if (idTraceTarget != 0)
|
||||
{
|
||||
if (AttackableJudge(idObject, bForceAttack) == 1)
|
||||
iTraceReason = CECHPWorkTrace.Trace_reason.TRACE_ATTACK;
|
||||
else if (pNPC.IsServerNPC())
|
||||
{
|
||||
if (!IsInBattle() || InSameBattleCamp(pNPC))
|
||||
iTraceReason = CECHPWorkTrace.Trace_reason.TRACE_TALK;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// pCDS.m_RayTraceRt.iEntity == ECENT_PLAYER
|
||||
CECPlayer pPlayer = EC_ManMessageMono.Instance.EC_ManPlayer.GetPlayer(idObject);
|
||||
|
||||
// 1. Msg.dwParam4 is double click flag.
|
||||
// 2. Buddy player counld't be traced
|
||||
if (!pPlayer.IsDead() /*&& pPlayer.GetCharacterID() != m_iBuddyId*/ &&
|
||||
(m_idSelTarget == idObject /*|| (Msg.dwParam4 && m_idUCSelTarget == idObject)*/))
|
||||
{
|
||||
idTraceTarget = idObject;
|
||||
//bForceAttack = glb_GetForceAttackFlag(&Msg.dwParam3);
|
||||
|
||||
if (AttackableJudge(idObject, bForceAttack) == 1)
|
||||
iTraceReason = CECHPWorkTrace.Trace_reason.TRACE_ATTACK;
|
||||
else if (pPlayer.GetBoothState() != 0)
|
||||
iTraceReason = CECHPWorkTrace.Trace_reason.TRACE_TALK;
|
||||
}
|
||||
else
|
||||
{
|
||||
idSelTarget = idObject;
|
||||
}
|
||||
}
|
||||
|
||||
// cancel this action if not selectable
|
||||
if (!CanSelectTarget(idTraceTarget))
|
||||
{
|
||||
idTraceTarget = 0;
|
||||
//return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Tell server we select a target
|
||||
if (idSelTarget != 0 && m_idSelTarget != idSelTarget)
|
||||
{
|
||||
m_idUCSelTarget = idSelTarget;
|
||||
SelectTarget(m_idUCSelTarget);
|
||||
}
|
||||
|
||||
if (idTraceTarget != 0)
|
||||
{
|
||||
if (iTraceReason == CECHPWorkTrace.Trace_reason.TRACE_ATTACK)
|
||||
{
|
||||
if (!CanDo(ActionCanDo.CANDO_MELEE))
|
||||
return;
|
||||
NormalAttackObject(idTraceTarget, bForceAttack);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!CanDo(ActionCanDo.CANDO_MOVETO))
|
||||
return;
|
||||
CECHPWork pWork;
|
||||
if (iTraceReason == CECHPWorkTrace.Trace_reason.TRACE_PICKUP)
|
||||
{
|
||||
//PickupObject(idTraceTarget, false);
|
||||
}
|
||||
else if (iTraceReason == CECHPWorkTrace.Trace_reason.TRACE_GATHER)
|
||||
{
|
||||
//PickupObject(idTraceTarget, true);
|
||||
}
|
||||
else if ((pWork = m_pWorkMan.GetWork(CECHPWork.Host_work_ID.WORK_TRACEOBJECT)) != null)
|
||||
{
|
||||
CECHPWorkTrace pWorkTrace = (pWork) as CECHPWorkTrace;
|
||||
pWorkTrace.SetTraceTarget(pWorkTrace.CreatTraceTarget(idTraceTarget, iTraceReason, bForceAttack));
|
||||
}
|
||||
else if (m_pWorkMan.CanStartWork(CECHPWork.Host_work_ID.WORK_TRACEOBJECT) && !bWikiMonster)
|
||||
{
|
||||
CECHPWorkTrace pWorkTrace = (CECHPWorkTrace)m_pWorkMan.CreateWork(CECHPWork.Host_work_ID.WORK_TRACEOBJECT);
|
||||
pWorkTrace.SetTraceTarget(pWorkTrace.CreatTraceTarget(idTraceTarget, iTraceReason, bForceAttack));
|
||||
m_pWorkMan.StartWork_p1(pWorkTrace);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void OnMsgHstJump()
|
||||
{
|
||||
// first of all see if we need to cancel sitdown work.
|
||||
if (m_pWorkMan.IsSitting())
|
||||
{
|
||||
UnityGameSession.c2s_CmdStandUp();
|
||||
return;
|
||||
}
|
||||
|
||||
if (!CanDo(ActionCanDo.CANDO_JUMP))
|
||||
return;
|
||||
|
||||
float fVertSpeed = 10.0f;
|
||||
|
||||
if (m_iJumpCount == 0)
|
||||
{
|
||||
if (m_iMoveEnv == Move_environment.MOVEENV_WATER)
|
||||
{
|
||||
if (!IsUnderWater())
|
||||
return;
|
||||
|
||||
fVertSpeed = 7.0f;
|
||||
SetJumpInWater(true);
|
||||
}
|
||||
else if (!m_GndInfo.bOnGround)
|
||||
return;
|
||||
}
|
||||
|
||||
if (InSlidingState())
|
||||
return;
|
||||
|
||||
m_iJumpCount++;
|
||||
|
||||
m_fVertSpeed = fVertSpeed;
|
||||
m_CDRInfo.vAbsVelocity.y = fVertSpeed;
|
||||
m_CDRInfo.fYVel = 0.0f;
|
||||
m_CDRInfo.vTPNormal = Vector3.zero;
|
||||
|
||||
if (m_iJumpCount == 1)
|
||||
{
|
||||
m_MoveCtrl.SendMoveCmd(GetPos(), 2, GPDataTypeHelper.g_vAxisY, EC_Utility.ToA3DVECTOR3(m_CDRInfo.vAbsVelocity), m_iMoveMode, true);
|
||||
// BubbleText(BUBBLE_HITMISSED, 0);
|
||||
}
|
||||
|
||||
PlayAction((int)CECPlayer.PLAYER_ACTION_TYPE.ACT_JUMP_START);
|
||||
|
||||
PlayAction((int)CECPlayer.PLAYER_ACTION_TYPE.ACT_JUMP_LOOP, false, 0, true);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c64966b4075658b48a5bc694d91a47fc
|
||||
@@ -1,5 +1,4 @@
|
||||
using CSNetwork.GPDataType;
|
||||
using BrewMonster.Scripts.Player;
|
||||
using PerfectWorld.Scripts.Player;
|
||||
|
||||
namespace BrewMonster.Scripts
|
||||
|
||||
@@ -39,7 +39,7 @@ public abstract partial class CECPlayer : CECObject
|
||||
[SerializeField] internal int m_idCurHover; // ID of object under cursor
|
||||
protected int m_iShape; // Ñ¡ÖÐÄ¿±êµÄID
|
||||
protected uint m_dwStates; // Player's basic states
|
||||
|
||||
|
||||
// 当前攻击方式 // Action type for attack animation
|
||||
protected uint m_uAttackType;
|
||||
protected int[] m_aEquips;
|
||||
@@ -79,7 +79,9 @@ public abstract partial class CECPlayer : CECObject
|
||||
public static int MAX_REINCARNATION = 2;
|
||||
protected List<int> m_aCurEffects = new List<int>(); // Current effects
|
||||
byte m_ReincarnationCount = 0;
|
||||
string m_strName; // Player name
|
||||
string m_strName; // Player name
|
||||
// 需要是可能 || Need is possible
|
||||
protected bool m_bHangerOn = false;
|
||||
|
||||
public MOVECONST m_MoveConst; // Const used when moving control
|
||||
public Move_Mode m_MoveMode;
|
||||
@@ -212,12 +214,12 @@ public abstract partial class CECPlayer : CECObject
|
||||
public static async Task<bool> LoadPlayerSkin(GameObject aSkins, int index, string szFile)
|
||||
{
|
||||
// these are LOD suffix
|
||||
string[] suffix1 = {"一�?", "二级", "三级"};
|
||||
string[] suffix2 = {"", "二级", "三级"};
|
||||
|
||||
string[] suffix1 = { "一�?", "二级", "三级" };
|
||||
string[] suffix2 = { "", "二级", "三级" };
|
||||
|
||||
string szSkinFile = "";
|
||||
|
||||
if( index == EC_Player_Skin_Const.SKIN_BODY_INDEX || index == EC_Player_Skin_Const.SKIN_HEAD_INDEX )
|
||||
if (index == EC_Player_Skin_Const.SKIN_BODY_INDEX || index == EC_Player_Skin_Const.SKIN_HEAD_INDEX)
|
||||
szSkinFile = $"{szFile}{suffix2[0]}";
|
||||
else
|
||||
szSkinFile = $"{szFile}{suffix1[0]}";
|
||||
@@ -656,16 +658,16 @@ public abstract partial class CECPlayer : CECObject
|
||||
}
|
||||
if (ElementSkill.IsGoblinSkill((uint)idSkill) &&
|
||||
ElementSkill.GetType((uint)idSkill) == 2)
|
||||
{
|
||||
pAttack = CECAttacksMan.Instance.AddSkillAttack(
|
||||
GetPlayerInfo().cid, GetPlayerInfo().cid, idTarget, GetWeaponID(), idSkill, skillLevel, dwModifier, nDamage);
|
||||
}
|
||||
else
|
||||
{
|
||||
// begin a skill attack
|
||||
pAttack = CECAttacksMan.Instance.AddSkillAttack(
|
||||
GetPlayerInfo().cid, m_idCurSkillTarget, idTarget, GetWeaponID(), idSkill, skillLevel, dwModifier, nDamage);
|
||||
}
|
||||
{
|
||||
pAttack = CECAttacksMan.Instance.AddSkillAttack(
|
||||
GetPlayerInfo().cid, GetPlayerInfo().cid, idTarget, GetWeaponID(), idSkill, skillLevel, dwModifier, nDamage);
|
||||
}
|
||||
else
|
||||
{
|
||||
// begin a skill attack
|
||||
pAttack = CECAttacksMan.Instance.AddSkillAttack(
|
||||
GetPlayerInfo().cid, m_idCurSkillTarget, idTarget, GetWeaponID(), idSkill, skillLevel, dwModifier, nDamage);
|
||||
}
|
||||
|
||||
if (pAttack != null)
|
||||
{
|
||||
@@ -673,7 +675,7 @@ public abstract partial class CECPlayer : CECObject
|
||||
pAttack.SetSkillSection(nSection);
|
||||
if (!IsDead() && (dwModifier & (uint)MOD.MOD_RETORT) == 0
|
||||
&& (dwModifier & (uint)MOD.MOD_ATTACK_AURA) == 0
|
||||
&& PlaySkillAttackAction(idSkill, nAttackSpeed,ref unusedInt, nSection, pAttack)
|
||||
&& PlaySkillAttackAction(idSkill, nAttackSpeed, ref unusedInt, nSection, pAttack)
|
||||
&& (dwModifier & (uint)MOD.MOD_BEAT_BACK) == 0)
|
||||
{
|
||||
}
|
||||
@@ -733,7 +735,7 @@ public abstract partial class CECPlayer : CECObject
|
||||
// ==============================
|
||||
if (GetMoveEnv() == (int)MoveEnvironment.MOVEENV_GROUND)
|
||||
{
|
||||
|
||||
|
||||
// “起�? 动作(挥起)
|
||||
szAct = EC_Utility.BuildActionName(action, weapon_type, "起");
|
||||
EventBus.PublishChannel(m_PlayerInfo.cid, new PlayActionEvent(szAct));
|
||||
@@ -1129,7 +1131,10 @@ public abstract partial class CECPlayer : CECObject
|
||||
|
||||
return iAction;
|
||||
}
|
||||
|
||||
public A3DVECTOR3 GetModelMoveDir()
|
||||
{ // ÒÆ¶¯Ê±¡¢·µ»ØÒƶ¯³¯Ïò£¬¾²Ö¹Ê±¡¢·µ»ØÄ£Ðͳ¯Ïò
|
||||
return EC_Utility.ToA3DVECTOR3(transform.forward);
|
||||
}
|
||||
public void Damaged(int nDamage, uint dwModifier = 0, int skill = 0)
|
||||
{
|
||||
if (nDamage == -2)
|
||||
@@ -1172,8 +1177,8 @@ public abstract partial class CECPlayer : CECObject
|
||||
if (!OnDamaged(skill))
|
||||
// PlayAction((int)PLAYER_ACTION_TYPE.ACT_WOUNDED);
|
||||
|
||||
DamageTextManager.Instance.ShowDamageText(
|
||||
transform.position, nDamage, Color.yellow, 1.0f);
|
||||
DamageTextManager.Instance.ShowDamageText(
|
||||
transform.position, nDamage, Color.yellow, 1.0f);
|
||||
/* if (dwModifier & CECAttackEvent::MOD_IMMUNE)
|
||||
BubbleText(BUBBLE_IMMUNE, 0);
|
||||
else if (dwModifier & CECAttackEvent::MOD_REBOUND)
|
||||
@@ -1268,7 +1273,7 @@ public abstract partial class CECPlayer : CECObject
|
||||
|
||||
int weapon_type = GetShowingWeaponType();
|
||||
|
||||
if (!_default_skill_actions.TryGetValue((uint)idSkill, out PLAYER_ACTION_INFO_CONFIG data) ||
|
||||
if (!_default_skill_actions.TryGetValue((uint)idSkill, out PLAYER_ACTION_INFO_CONFIG data) ||
|
||||
data.action_prefix == null || data.action_prefix.Length == 0 || data.action_prefix[0] == 0)
|
||||
{
|
||||
// Check if it's a target item skill / 检查是否为目标道具技能
|
||||
@@ -1293,7 +1298,7 @@ public abstract partial class CECPlayer : CECObject
|
||||
{
|
||||
szAct = EC_Utility.BuildActionName(data, weapon_type, "_施放起_");
|
||||
GetSkillSectionActionName(ref szAct, idSkill, nSection);
|
||||
|
||||
|
||||
if (!PlaySkillAttackActionWithName(idSkill, szAct, bHideFX, attackEvent))
|
||||
{
|
||||
return false;
|
||||
@@ -1317,10 +1322,10 @@ public abstract partial class CECPlayer : CECObject
|
||||
{
|
||||
// 空中动作 / Air action
|
||||
string szActionMiddleName = null;
|
||||
if ((m_wingType == enumWingType.WINGTYPE_WING && IsFlying()) ||
|
||||
(m_iProfession == PROFESSION.PROF_ANGEL) ||
|
||||
(m_iProfession == PROFESSION.PROF_ARCHOR) ||
|
||||
(m_iProfession == PROFESSION.PROF_MONK) ||
|
||||
if ((m_wingType == enumWingType.WINGTYPE_WING && IsFlying()) ||
|
||||
(m_iProfession == PROFESSION.PROF_ANGEL) ||
|
||||
(m_iProfession == PROFESSION.PROF_ARCHOR) ||
|
||||
(m_iProfession == PROFESSION.PROF_MONK) ||
|
||||
(m_iProfession == PROFESSION.PROF_GHOST))
|
||||
{
|
||||
szActionMiddleName = "_空中翅膀"; // Air with wings / 空中翅膀
|
||||
@@ -1333,7 +1338,7 @@ public abstract partial class CECPlayer : CECObject
|
||||
szActionMiddleName += "_施放起_";
|
||||
szAct = EC_Utility.BuildActionName(data, weapon_type, szActionMiddleName);
|
||||
GetSkillSectionActionName(ref szAct, idSkill, nSection);
|
||||
|
||||
|
||||
if (!PlaySkillAttackActionWithName(idSkill, szAct, bHideFX, attackEvent))
|
||||
{
|
||||
return false;
|
||||
@@ -1464,9 +1469,9 @@ public abstract partial class CECPlayer : CECObject
|
||||
return (m_dwResFlags & (uint)PlayerResourcesReadyFlag.RESFG_ALL) == (uint)PlayerResourcesReadyFlag.RESFG_ALL;
|
||||
}
|
||||
// Get character ID
|
||||
|
||||
|
||||
// Play Gfx on Models
|
||||
protected bool PlayGfx(string szPath, string szHook, float fScale /*1.0f*/, uint iShapeTypeMask /*(1<<PLAYERMODEL_MAJOR)*/, bool bForceNoRecord =false)
|
||||
protected bool PlayGfx(string szPath, string szHook, float fScale /*1.0f*/, uint iShapeTypeMask /*(1<<PLAYERMODEL_MAJOR)*/, bool bForceNoRecord = false)
|
||||
{
|
||||
// bool bPlayed(false);
|
||||
// bool bSkipRecord = (iShapeTypeMask != PLAYERMODEL_TYPEALL) || bForceNoRecord;
|
||||
@@ -1499,16 +1504,16 @@ public abstract partial class CECPlayer : CECObject
|
||||
{
|
||||
// Usage: Load the prefab asynchronously using AddressableManager
|
||||
GameObject prefab = await AddressableManager.Instance.LoadPrefabAsync(path);
|
||||
if(prefab != null)
|
||||
if (prefab != null)
|
||||
{
|
||||
if (_levelUpVfx != null)
|
||||
{
|
||||
if(_levelUpVfx.IsPlaying())
|
||||
if (_levelUpVfx.IsPlaying())
|
||||
return;
|
||||
_levelUpVfx.Play();
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// Instantiate at player's current position and rotation
|
||||
_levelUpVfx = Instantiate(prefab, transform).GetComponent<BaseVfxObject>();
|
||||
_levelUpVfx.Play();
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
using BrewMonster.Scripts.Ornament;
|
||||
using BrewMonster.Scripts.Player;
|
||||
using BrewMonster.Scripts.World;
|
||||
using BrewMonster.Scripts.World;
|
||||
using CSNetwork.GPDataType;
|
||||
using System;
|
||||
using UnityEngine;
|
||||
|
||||
@@ -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
|
||||
@@ -615,11 +616,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 ...
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
using BrewMonster.Assets.PerfectWorld.Scripts.UI;
|
||||
using BrewMonster.Managers;
|
||||
using BrewMonster.Network;
|
||||
using BrewMonster.Scripts.Player;
|
||||
using BrewMonster.Scripts.Skills;
|
||||
using CSNetwork.C2SCommand;
|
||||
using CSNetwork.GPDataType;
|
||||
@@ -1260,10 +1259,17 @@ 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);
|
||||
}
|
||||
|
||||
public void c2s_SendCmdStandUp()
|
||||
{
|
||||
gamedatasend gamedatasend = new gamedatasend();
|
||||
gamedatasend.Data = C2SCommandFactory.CreateNakeCmd(C2SCommand.CommandID.STAND_UP);
|
||||
SendProtocol(gamedatasend);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -311,6 +311,10 @@ namespace BrewMonster.Network
|
||||
return;
|
||||
Instance._gameSession.c2s_SendCmdNPCSevSell(itemNum, items);
|
||||
}
|
||||
public static void c2s_CmdStandUp()
|
||||
{
|
||||
Instance._gameSession.c2s_SendCmdStandUp();
|
||||
}
|
||||
#region Task
|
||||
public static void c2s_CmdGetAllData(bool byPack, bool byEquip, bool byTask)
|
||||
{
|
||||
@@ -318,9 +322,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
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
using BrewMonster.Scripts.Player;
|
||||
using UnityEngine;
|
||||
using static CECPlayer;
|
||||
|
||||
namespace BrewMonster
|
||||
{
|
||||
public class PlayerIdleState : PlayerState
|
||||
{
|
||||
public PlayerIdleState(CECHostPlayer characterCtrl) : base(characterCtrl)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Enter()
|
||||
{
|
||||
_characterCtrl.PlayAction((int)PLAYER_ACTION_TYPE.ACT_STAND, true, 1, false);
|
||||
}
|
||||
|
||||
public override void Exit()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public override void Update()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,2 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 89482cfe1c5315b4d833133e919eac40
|
||||
@@ -1,29 +0,0 @@
|
||||
using BrewMonster.Scripts.Player;
|
||||
using UnityEngine;
|
||||
using static CECPlayer;
|
||||
|
||||
namespace BrewMonster
|
||||
{
|
||||
public class PlayerMoveState : PlayerState
|
||||
{
|
||||
public PlayerMoveState(CECHostPlayer characterCtrl) : base(characterCtrl)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Enter()
|
||||
{
|
||||
_characterCtrl.PlayAction((int)PLAYER_ACTION_TYPE.ACT_RUN, true, 1, false);
|
||||
}
|
||||
|
||||
public override void Exit()
|
||||
{
|
||||
_characterCtrl.StopMovement();
|
||||
}
|
||||
|
||||
public override void Update()
|
||||
{
|
||||
_characterCtrl.HandleMovement();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,2 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 979df0dcb6a16cf47a77106a9c9ebb8f
|
||||
@@ -1,16 +0,0 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace BrewMonster
|
||||
{
|
||||
public abstract class PlayerState
|
||||
{
|
||||
protected readonly CECHostPlayer _characterCtrl;
|
||||
public PlayerState(CECHostPlayer characterCtrl)
|
||||
{
|
||||
_characterCtrl = characterCtrl;
|
||||
}
|
||||
public abstract void Enter();
|
||||
public abstract void Exit();
|
||||
public abstract void Update();
|
||||
}
|
||||
}
|
||||
@@ -1,2 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 1c3e8f4466ed88340aeb27f86dc0c172
|
||||
@@ -236,7 +236,7 @@ namespace BrewMonster.Scripts.Skills
|
||||
public virtual int GetRequiredGenius(int idSkill) { return 0; }
|
||||
|
||||
// Ч���ļ���
|
||||
public virtual byte[] GetEffect() { return null; }
|
||||
public virtual string GetEffect() { return null; }
|
||||
public static string GetEffect(uint id)
|
||||
{
|
||||
SkillStub stub = SkillStub.GetStub(id);
|
||||
|
||||
@@ -62,6 +62,30 @@ namespace BrewMonster.Scripts.Skills
|
||||
return stub.GetIcon();
|
||||
}
|
||||
public override string GetName() { return stub.GetName(); }
|
||||
public override float GetPrayRange(float range, float prayplus)
|
||||
{
|
||||
player.SetRange(range);
|
||||
player.SetPrayrangeplus(prayplus);
|
||||
if (stub.type == (int)skill_type.TYPE_ATTACK || stub.type == (int)skill_type.TYPE_CURSE)
|
||||
{
|
||||
if (stub.auto_attack)
|
||||
{
|
||||
float r = 0.3f * stub.GetPraydistance(this);
|
||||
if (r >= 1.0)
|
||||
return stub.GetPraydistance(this) - 1.0f;
|
||||
else
|
||||
return (float)0.7 * stub.GetPraydistance(this);
|
||||
}
|
||||
else
|
||||
return stub.GetPraydistance(this);
|
||||
}
|
||||
if (stub.type == (int)skill_type.TYPE_JUMP)
|
||||
return stub.GetPraydistance(this);
|
||||
if (stub.GetRange().NoTarget())
|
||||
return -1;
|
||||
else
|
||||
return stub.GetPraydistance(this);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -1,12 +1,9 @@
|
||||
using BrewMonster.Network;
|
||||
using BrewMonster.Scripts.Managers;
|
||||
using BrewMonster.Scripts.Player;
|
||||
using CSNetwork.GPDataType;
|
||||
using PerfectWorld.Scripts.Task;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Runtime.InteropServices;
|
||||
using CSNetwork;
|
||||
using UnityEngine;
|
||||
|
||||
namespace BrewMonster.Scripts.Task
|
||||
@@ -362,12 +359,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 +1302,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 +1423,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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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)]
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -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()
|
||||
{
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
@@ -60,6 +63,46 @@ namespace BrewMonster.UI
|
||||
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 DialogScriptTableObject GetDialogResource()
|
||||
{
|
||||
return m_dialogResouce;
|
||||
|
||||
@@ -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}%";
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:73d34a362e429fa75e583ca88989d3ab3d29f8d85bcdff8fa64582b7145930c2
|
||||
size 530552564
|
||||
oid sha256:94045fc7eb49643c229531f88aa7ac1d8a6f59d3e0d2bfb5a4939f9b3fb0ed04
|
||||
size 200173095
|
||||
|
||||
@@ -1,44 +0,0 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace BrewMonster.Scripts.Player
|
||||
{
|
||||
public class PlayerStateMachine
|
||||
{
|
||||
PlayerState _state;
|
||||
CECHostPlayer _characterCtrl;
|
||||
|
||||
public PlayerState State { get => _state; }
|
||||
|
||||
public void InitState(PlayerState state)
|
||||
{
|
||||
if (_state != null)
|
||||
{
|
||||
Debug.LogWarning("_state is already inited");
|
||||
return;
|
||||
}
|
||||
_state = state;
|
||||
_state.Enter();
|
||||
}
|
||||
|
||||
public void ChangeState(PlayerState state)
|
||||
{
|
||||
if (_state == null)
|
||||
{
|
||||
Debug.LogError("you need to init state first ");
|
||||
return;
|
||||
}
|
||||
if (_state == state)
|
||||
{
|
||||
Debug.LogWarning("Unchanged state");
|
||||
}
|
||||
_state.Exit();
|
||||
_state = state;
|
||||
_state.Enter();
|
||||
}
|
||||
public void UpdateState()
|
||||
{
|
||||
_state.Update();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,2 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 99f098b6660da2c4f8ff06b5043a254b
|
||||
@@ -1,7 +1,5 @@
|
||||
using Animancer;
|
||||
using BrewMonster;
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using UnityEngine;
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using BrewMonster;
|
||||
using BrewMonster.Scripts.Player;
|
||||
using UnityEngine;
|
||||
#if ENABLE_INPUT_SYSTEM
|
||||
using UnityEngine.InputSystem;
|
||||
|
||||