From df07b1661d91079f3c9c6b469a8420e6d649d6cc Mon Sep 17 00:00:00 2001 From: NguyenVanDat Date: Fri, 7 Nov 2025 17:35:52 +0700 Subject: [PATCH] add gfx resource and vfx object base --- .../Scripts/Managers/EC_Object.cs | 2 +- Assets/PerfectWorld/Scripts/Move/CECPlayer.cs | 5 + Assets/PerfectWorld/Scripts/NPC/CECModel.cs | 76 +++ Assets/PerfectWorld/Scripts/NPC/CECNPC.cs | 4 +- .../Scripts/Players/EC_ElsePlayer.cs | 3 +- Assets/PerfectWorld/Scripts/Vfx.meta | 8 + .../PerfectWorld/Scripts/Vfx/BaseVfxObject.cs | 232 ++++++++ .../Scripts/Vfx/BaseVfxObject.cs.meta | 2 + Assets/Scripts/CECHostPlayer.cs | 72 ++- Assets/Scripts/Utilities.meta | 8 + Assets/Scripts/Utilities/EC_Resource.cs | 530 ++++++++++++++++++ Assets/Scripts/Utilities/EC_Resource.cs.meta | 2 + 12 files changed, 940 insertions(+), 4 deletions(-) create mode 100644 Assets/PerfectWorld/Scripts/Vfx.meta create mode 100644 Assets/PerfectWorld/Scripts/Vfx/BaseVfxObject.cs create mode 100644 Assets/PerfectWorld/Scripts/Vfx/BaseVfxObject.cs.meta create mode 100644 Assets/Scripts/Utilities.meta create mode 100644 Assets/Scripts/Utilities/EC_Resource.cs create mode 100644 Assets/Scripts/Utilities/EC_Resource.cs.meta diff --git a/Assets/PerfectWorld/Scripts/Managers/EC_Object.cs b/Assets/PerfectWorld/Scripts/Managers/EC_Object.cs index 63f1b85710..0c73c2101a 100644 --- a/Assets/PerfectWorld/Scripts/Managers/EC_Object.cs +++ b/Assets/PerfectWorld/Scripts/Managers/EC_Object.cs @@ -183,7 +183,7 @@ public class CECObject : MonoBehaviour );*/ SetDestDirAndUp(vDir, g_vAxisY, timeturn); } - private void Update() + protected virtual void Update() { if (m_bAdjustOrient) AdjustOrientation(Time.deltaTime); diff --git a/Assets/PerfectWorld/Scripts/Move/CECPlayer.cs b/Assets/PerfectWorld/Scripts/Move/CECPlayer.cs index 736543c177..de352576af 100644 --- a/Assets/PerfectWorld/Scripts/Move/CECPlayer.cs +++ b/Assets/PerfectWorld/Scripts/Move/CECPlayer.cs @@ -313,6 +313,11 @@ public abstract class CECPlayer : CECObject return m_PlayerInfo; } + protected override void Update() + { + base.Update(); + } + public enum PLAYER_ACTION_TYPE { // 0 diff --git a/Assets/PerfectWorld/Scripts/NPC/CECModel.cs b/Assets/PerfectWorld/Scripts/NPC/CECModel.cs index 2e569b69d3..afd6d68aa2 100644 --- a/Assets/PerfectWorld/Scripts/NPC/CECModel.cs +++ b/Assets/PerfectWorld/Scripts/NPC/CECModel.cs @@ -1,3 +1,7 @@ +using BrewMonster.Scripts; +using CSNetwork.GPDataType; +using UnityEngine; + public class CECModel { private const uint COMACT_FLAG_MODE_NONE = 0; @@ -38,6 +42,78 @@ public class CECModel AnimationName = animationName; } } + + public void PlayGfx(string szPath, string szHook, float fScale, bool bFadeOut, A3DVECTOR3 vOffset, float fPitch, float fYaw, float fRot, bool bUseECMHook, uint dwFadeOutTime) + { + if (!bFadeOut) + dwFadeOutTime = 0; + string strKey = szPath; + strKey += szHook; + + // var vfxPrefab = AddressableManager.Instance.LoadPrefabAsync(szPath).Result; + var testVfx = GameController.Instance.GetTestVfx(); + testVfx.name = "PlayGfx"; + testVfx.transform.position = new Vector3(vOffset.x, vOffset.y, vOffset.z); + + // PGFX_INFO pInfo; + // + // CoGfxMap::iterator it = m_CoGfxMap.find(strKey); + // if (bUseECMHook) { + // if (CECModelHook* pHook = GetECMHook(szHook)) + // { + // fScale *= pHook->GetScaleFactor(); + // } + // } + // + // if (it != m_CoGfxMap.end()) + // { + // pInfo = it->second; + // A3DGFXEx* pGfx = pInfo->GetGfx(); + // TransferEcmProperties(pGfx); + // pGfx->SetScale(fScale * m_fGfxScaleFactor); + // pInfo->SetFadeOutTime(dwFadeOutTime); + // pInfo->SetModelAlpha(true); + // pInfo->SetHookName(szHook); + // pInfo->SetUseECMHook(bUseECMHook); + // pInfo->SetScale(fScale); + // pInfo->SetOffset(vOffset); + // pInfo->SetPitch(fPitch); + // pInfo->SetYaw(fYaw); + // pInfo->SetRot(fRot); + // pInfo->BuildTranMat(); + // pGfx->SetSfxPriority(m_nSfxPriority); + // pGfx->Start(true); + // return; + // } + // + // pInfo = new GFX_INFO(NULL); + // pInfo->SetFilePath(szPath); + // pInfo->SetHookName(szHook); + // pInfo->SetUseECMHook(bUseECMHook); + // pInfo->SetScale(fScale); + // pInfo->Init(m_pA3DDevice); + // pInfo->SetOffset(vOffset); + // pInfo->SetPitch(fPitch); + // pInfo->SetYaw(fYaw); + // pInfo->SetRot(fRot); + // pInfo->LoadGfx(); + // + // if (!pInfo->GetGfx()) + // { + // delete pInfo; + // return; + // } + // + // pInfo->BuildTranMat(); + // pInfo->SetFadeOutTime(dwFadeOutTime); + // pInfo->SetModelAlpha(true); + // TransferEcmProperties(pInfo->GetGfx()); + // pInfo->GetGfx()->SetScale(fScale * m_fGfxScaleFactor); + // pInfo->GetGfx()->SetSfxPriority(m_nSfxPriority); + // pInfo->GetGfx()->Start(true); + // + // m_CoGfxMap[strKey] = pInfo; + } } // Action channel public enum ActionChannel diff --git a/Assets/PerfectWorld/Scripts/NPC/CECNPC.cs b/Assets/PerfectWorld/Scripts/NPC/CECNPC.cs index fef5a76a26..9c82c4e9b6 100644 --- a/Assets/PerfectWorld/Scripts/NPC/CECNPC.cs +++ b/Assets/PerfectWorld/Scripts/NPC/CECNPC.cs @@ -412,8 +412,10 @@ public class CECNPC : CECObject TurnFaceTo(idTarget, dwTime); } - private void Update() + + protected override void Update() { + base.Update(); switch (m_iCurWork) { case (int)WorkID.WORK_MOVE: TickWork_Move(Time.deltaTime); break; diff --git a/Assets/PerfectWorld/Scripts/Players/EC_ElsePlayer.cs b/Assets/PerfectWorld/Scripts/Players/EC_ElsePlayer.cs index 9dc3b3f621..495a7d9d1a 100644 --- a/Assets/PerfectWorld/Scripts/Players/EC_ElsePlayer.cs +++ b/Assets/PerfectWorld/Scripts/Players/EC_ElsePlayer.cs @@ -360,8 +360,9 @@ namespace PerfectWorld.Scripts.Player } } - private void Update() + protected override void Update() { + base.Update(); MovingTo(Time.deltaTime); if (pHost != null /*&& pHost.IsSkeletonReady()*/) diff --git a/Assets/PerfectWorld/Scripts/Vfx.meta b/Assets/PerfectWorld/Scripts/Vfx.meta new file mode 100644 index 0000000000..e92435bc23 --- /dev/null +++ b/Assets/PerfectWorld/Scripts/Vfx.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1386eda4285a2e64c8cc2846ae0a0298 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/PerfectWorld/Scripts/Vfx/BaseVfxObject.cs b/Assets/PerfectWorld/Scripts/Vfx/BaseVfxObject.cs new file mode 100644 index 0000000000..28b744cdd8 --- /dev/null +++ b/Assets/PerfectWorld/Scripts/Vfx/BaseVfxObject.cs @@ -0,0 +1,232 @@ +using BrewMonster.Scripts; +using UnityEngine; + +namespace BrewMonster.PerfectWorld.Scripts.Vfx +{ + public class BaseVfxObject : MonoBehaviour + { + [SerializeField] private ParticleSystem _vfx; + [SerializeField] private string _vfxPath; + private Vector3 _originalScale = Vector3.one; + private Vector3 _offset = Vector3.zero; + + private void Awake() + { + if (_vfx == null) + { + _vfx = GetComponent(); + } + + if (_vfx != null) + { + _originalScale = _vfx.transform.localScale; + } + } + private void OnDestroy() + { + if(!string.IsNullOrEmpty(_vfxPath)) + { + AddressableManager.Instance.UnloadAsset(_vfxPath); + } + } + + public void Init(string vfxPath) + { + _vfxPath = vfxPath; + } + + /// + /// Set VFX scale + /// + public void SetScale(float scale) + { + SetScale(new Vector3(scale, scale, scale)); + } + + /// + /// Set VFX scale with vector + /// + public void SetScale(Vector3 scale) + { + if (_vfx != null) + { + _vfx.transform.localScale = Vector3.Scale(_originalScale, scale); + + // 调整粒子大小 / Adjust particle size + var main = _vfx.main; + main.startSizeMultiplier *= scale.magnitude / Mathf.Sqrt(3); + } + } + + /// + /// Set VFX offset + /// + public void SetOffset(Vector3 offset) + { + _offset = offset; + if (_vfx != null) + { + _vfx.transform.localPosition = offset; + } + } + + /// + /// Set VFX world position + /// + public void SetPosition(Vector3 position) + { + if (_vfx != null) + { + _vfx.transform.position = position; + } + } + + /// + /// Set VFX rotation + /// + public void SetRotation(Quaternion rotation) + { + if (_vfx != null) + { + _vfx.transform.rotation = rotation; + } + } + + /// + /// Set VFX rotation with euler angles + /// + public void SetRotation(Vector3 eulerAngles) + { + SetRotation(Quaternion.Euler(eulerAngles)); + } + + /// + /// Set VFX color + /// + public void SetColor(Color color) + { + if (_vfx != null) + { + var main = _vfx.main; + main.startColor = color; + } + } + + /// + /// Set VFX duration + /// + public void SetDuration(float duration) + { + if (_vfx != null) + { + var main = _vfx.main; + main.duration = duration; + } + } + + /// + /// Set VFX playback speed + /// + public void SetSpeed(float speed) + { + if (_vfx != null) + { + var main = _vfx.main; + main.simulationSpeed = speed; + } + } + + /// + /// Play VFX + /// + public void Play() + { + if (_vfx != null) + { + _vfx.Play(); + } + } + + /// + /// Play VFX with children + /// + public void PlayWithChildren() + { + if (_vfx != null) + { + _vfx.Play(true); + } + } + + /// + /// Stop VFX + /// + public void Stop() + { + if (_vfx != null) + { + _vfx.Stop(); + } + } + + + /// + /// Pause VFX + /// + public void Pause() + { + if (_vfx != null) + { + _vfx.Pause(); + } + } + + /// + /// Clear all VFX particles + /// + public void Clear() + { + if (_vfx != null) + { + _vfx.Clear(); + } + } + + /// + /// 重新开始播放 / Restart VFX + /// + public void Restart() + { + if (_vfx != null) + { + _vfx.Stop(); + _vfx.Clear(); + _vfx.Play(); + } + } + + /// + /// 检查特效是否正在播放 / Check if VFX is playing + /// + public bool IsPlaying() + { + return _vfx != null && _vfx.isPlaying; + } + + /// + /// 检查特效是否已结束 / Check if VFX is stopped + /// + public bool IsStopped() + { + return _vfx != null && _vfx.isStopped; + } + + /// + /// 获取粒子系统 / Get ParticleSystem component + /// + public ParticleSystem GetParticleSystem() + { + return _vfx; + } + } +} diff --git a/Assets/PerfectWorld/Scripts/Vfx/BaseVfxObject.cs.meta b/Assets/PerfectWorld/Scripts/Vfx/BaseVfxObject.cs.meta new file mode 100644 index 0000000000..bc3c205a4e --- /dev/null +++ b/Assets/PerfectWorld/Scripts/Vfx/BaseVfxObject.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 9dcde7b030da4a94a9b5c05323a411bf \ No newline at end of file diff --git a/Assets/Scripts/CECHostPlayer.cs b/Assets/Scripts/CECHostPlayer.cs index 4b17a1d956..15a4be9b4f 100644 --- a/Assets/Scripts/CECHostPlayer.cs +++ b/Assets/Scripts/CECHostPlayer.cs @@ -26,6 +26,7 @@ using UnityEngine.UI; using static UnityEditor.PlayerSettings; using Scene = UnityEngine.SceneManagement.Scene; using BrewMonster.Scripts; +using BrewMonster.Scripts.World; public partial class CECHostPlayer : CECPlayer { @@ -121,8 +122,9 @@ public partial class CECHostPlayer : CECPlayer // btnJump.onClick.AddListener(HandleJump); } - private void Update() + protected override void Update() { + base.Update(); //Debug.Log($"(ulong)Time.deltaTime * 1000 {(ulong)(Time.deltaTime * 1000)}"); m_MoveCtrl.Tick((ulong)(Time.deltaTime * 1000)); // Nếu có thay đổi runtime, có thể lấy lại mỗi vài giây/Start nếu bạn thích: @@ -190,6 +192,9 @@ public partial class CECHostPlayer : CECPlayer } } m_pWorkMan?.Tick(Time.deltaTime); + + // Update GFXs + UpdateGFXs(Time.deltaTime); } public void StopMovement() @@ -1762,6 +1767,71 @@ public partial class CECHostPlayer : CECPlayer // } // return fSpeedSev; //} + + void UpdateGFXs(uint dwDeltaTime) + { +// if (m_pLevelUpGFX) +// m_pLevelUpGFX->SetParentTM(GetAbsoluteTM()); + + var pWorld = CECWorld.Instance; + + // if (m_pHoverGFX)// && m_idCurHover != m_idSelTarget) + // { + // if (!IsChangingFace() && (ISPLAYERID(m_idCurHover) || ISNPCID(m_idCurHover))) + // { + // CECObject* pObject = pWorld->GetObject(m_idCurHover, 1); + // if (pObject) + // { + // if (m_pHoverGFX->GetState() == ST_STOP) + // m_pHoverGFX->Start(); + // + // m_pHoverGFX->SetParentTM(pObject->GetAbsoluteTM()); + // } + // else + // m_pHoverGFX->Stop(); + // } + // else + // m_pHoverGFX->Stop(); + // } + + // if (m_pSelectedGFX) + // { + // if (!IsChangingFace() && (ISPLAYERID(m_idSelTarget) || ISNPCID(m_idSelTarget))) + // { + // CECObject* pObject = pWorld.GetObject(m_idSelTarget, 1); + // if (pObject) + // { + // if (m_pSelectedGFX->GetState() == ST_STOP) + // m_pSelectedGFX->Start(); + // + // m_pSelectedGFX->SetParentTM(pObject->GetAbsoluteTM()); + // } + // else + // m_pSelectedGFX->Stop(); + // } + // else + // m_pSelectedGFX->Stop(); + // } + + // if (m_pFloatDust) + // { + // A3DTerrainWater* pWater = g_pGame->GetGameRun()->GetWorld()->GetTerrainWater(); + // + // if (pWater->IsUnderWater(m_CameraCoord.GetPos())) + // { + // if (m_pFloatDust->GetState() == ST_STOP) + // { + // m_pFloatDust->Start(true); + // m_pFloatDust->TickAnimation(2000); + // } + // + // m_pFloatDust->SetParentTM(GetAbsoluteTM()); + // } + // else if (m_pFloatDust->GetState() != ST_STOP) + // m_pFloatDust->Stop(); + // } + // UpdateMonsterSpiritGfx(dwDeltaTime); + } } public enum StateAnim diff --git a/Assets/Scripts/Utilities.meta b/Assets/Scripts/Utilities.meta new file mode 100644 index 0000000000..8e053fb8f6 --- /dev/null +++ b/Assets/Scripts/Utilities.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4ae2a189a9875cc42933bdde5dfa273e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Utilities/EC_Resource.cs b/Assets/Scripts/Utilities/EC_Resource.cs new file mode 100644 index 0000000000..1f11394640 --- /dev/null +++ b/Assets/Scripts/Utilities/EC_Resource.cs @@ -0,0 +1,530 @@ +using UnityEngine; + +namespace BrewMonster +{ + public class EC_Resource + { + // Cursor resource + static readonly string[] l_aCurFiles = + { + "cursors/normal.ani", + "cursors/attack.cur", + "cursors/talk.cur", + "cursors/pick.cur", + "cursors/repair.cur", + "cursors/hand.cur", + "cursors/flag.cur", + "cursors/dig.ani", + "cursors/gourd.cur", + }; + // GFX resource + static readonly string[] l_aGFXFiles = // use where? + { + "鲁脤脨貌脕陋脠毛/陆脟脡芦脡媒录露脠脣脌脿.gfx", // RES_GFX_LEVELUP, + "鲁脤脨貌脕陋脠毛/陆脟脡芦鲁枚脧脰脠脣脌脿.gfx", // RES_GFX_PLAYERAPPEAR, + "卤禄禄梅脰脨/卤禄禄梅脰脨脨搂鹿没.gfx", // RES_GFX_HIT, + "鲁脤脨貌脕陋脠毛/脰赂脧貌卤锚.gfx", // RES_GFX_MOVETARGET, + "鲁脤脨貌脕陋脠毛/陆冒卤脪脨搂鹿没.gfx", // RES_GFX_ITEMFLASH, + "鲁脤脨貌脕陋脠毛/脢贸卤锚脨眉赂隆.gfx", // RES_GFX_CURSORHOVER, + "鲁脤脨貌脕陋脠毛/脛驴卤锚卤禄脩隆脰脨.gfx", // RES_GFX_SELECTED, + "鲁脤脨貌脕陋脠毛/潞拢碌脳脝庐鲁戮.gfx", // RES_GFX_FLOATING_DUST, + "鲁脤脨貌脕陋脠毛/脠脣脦茂脫脦露炉脣庐脠娄.gfx", // RES_GFX_WATER_WAVE_STILL, + "鲁脤脨貌脕陋脠毛/脠脣脦茂脫脦露炉脣庐虏篓.gfx", // RES_GFX_WATER_WAVE_MOVE, + "鲁脤脨貌脕陋脠毛/脣庐脰脨潞么脦眉脝酶脜脻.gfx", // RES_GFX_AIR_BUBBLE, + "鲁脤脨貌脕陋脠毛/脣庐脰脨脫脦露炉脝酶脜脻.gfx", // RES_GFX_SWIM_BUBBLE, + "鲁脤脨貌脕陋脠毛/掳脳禄垄卤盲.gfx", // RES_GFX_TRANSFORM_TIGER, + "鲁脤脨貌脕陋脠毛/禄冒潞眉卤盲.gfx", // RES_GFX_TRANSFORM_FOX, + "鲁脤脨貌脕陋脠毛/录脫脩陋.gfx", // RES_GFX_RED_MEDICINE, + "鲁脤脨貌脕陋脠毛/录脫脛搂.gfx", // RES_GFX_BLUE_MEDICINE, + "鲁脤脨貌脕陋脠毛/录脫脩陋录脫脛搂.gfx", // RES_GFX_PURPLE_MEDICINE, + "鲁脤脨貌脕陋脠毛/陆芒露戮.gfx", // RES_GFX_JIEDU_MEDICINE, + "鲁脤脨貌脕陋脠毛/脦茂路脌路没脢脥路脜.gfx", // RES_GFX_PHYSIC_ARMORRUNE, + "鲁脤脨貌脕陋脠毛/路篓路脌路没脢脥路脜.gfx", // RES_GFX_MAGIC_ARMORRUNE, + "鲁脤脨貌脕陋脠毛/戮枚露路脳麓脤卢.gfx", // RES_GFX_INDUEL, + "鲁脤脨貌脕陋脠毛/驴脴脰脝脥露脢炉鲁碌潞矛.gfx", // RES_GFX_TANKLEADER_RED, + "鲁脤脨貌脕陋脠毛/驴脴脰脝脥露脢炉鲁碌脌露.gfx", // RES_GFX_TANKLEADER_BLUE, + "鹿脰脦茂/鲁猫脦茂脥篓脫脙/戮芦脕茅脡媒录露.gfx",// RES_GFX_GOBLIN_LEVELUP, + "鲁脤脨貌脕陋脠毛/陆脟脡芦脡媒录露脠脣脌脿.gfx", // RES_GFX_INVISIBLE_DETECTED + "虏脽禄庐脕陋脠毛/脳麓脤卢脨搂鹿没/潞脷脡芦脕卢脧脽.gfx", // RES_GFX_MONSTER_SPIRIT_LINE + "鲁脤脨貌脕陋脠毛/鹿芒脟貌脤脴脨搂_脳脫脨搂鹿没01.gfx", // RES_GFX_MONSTER_SPIRIT_BALL + "脠脣脦茂/脥篓脫脙/脝盲脣眉/戮鲁陆莽脤谩脡媒.gfx", + "虏脽禄庐脕陋脠毛/脳麓脤卢脨搂鹿没/露路脝酶%d录露.gfx", + }; + + // Shader resource + static readonly string[] l_aShaderFiles = + { + "hair.sdr", // 0 + "goatee.sdr", + "face.sdr", + "eye.sdr", + "brow.sdr", + + "mouth.sdr", // 5 + "nose.sdr", + "eyeball.sdr", + "moustache.sdr", + "body.sdr" + }; + + // Icon files + static readonly string[] l_aIconFiles = + { + "麓貌脳酶.dds", + "脳脽脜脺脳陋禄禄.dds", + "脝脮脥篓鹿楼禄梅.dds", + "脩掳脮脪脛驴卤锚.dds", + "脨颅脰煤鹿楼禄梅.dds", + + "脩没脟毛录脫脠毛.dds", + "脥脩脌毛露脫脦茅.dds", + "脤脽鲁枚露脫脦茅.dds", + "脩掳脮脪露脫脦茅.dds", + "陆禄脪脳脙眉脕卯.dds", + + "掳脷脤炉脗么.dds", + "掳脷脤炉脗貌.dds", + "脩没脟毛录脫脠毛.dds", + "路脡脨脨.dds", + "脮脨脢脰.dds", // RES_ICON_CMD_EXP_WAVE, + + "碌茫脥路.dds", // RES_ICON_CMD_EXP_NOD, + "脪隆脥路.dds", // RES_ICON_CMD_EXP_SHAKEHEAD, + "脣脢录莽掳貌.dds", // RES_ICON_CMD_EXP_SHRUG, + "麓贸脨娄.dds", // RES_ICON_CMD_EXP_LAUGH, + "脡煤脝酶.dds", // RES_ICON_CMD_EXP_ANGRY, + + "脭脦碌鹿.dds", // RES_ICON_CMD_EXP_STUN, + "戮脷脡楼.dds", // RES_ICON_CMD_EXP_DEPRESSED, + "路脡脦脟.dds", // RES_ICON_CMD_EXP_KISSHAND, + "潞娄脨脽.dds", // RES_ICON_CMD_EXP_SHY, + "卤搂脠颅.dds", // RES_ICON_CMD_EXP_SALUTE, + + "脳酶脧脗.dds", // RES_ICON_CMD_EXP_SITDOWN, + "鲁氓路忙.dds", // RES_ICON_CMD_EXP_ASSAULT, + "脣录驴录.dds", // RES_ICON_CMD_EXP_THINK, + "脤么脨脝.dds", // RES_ICON_CMD_EXP_DEFIANCE, + "脢陇脌没.dds", // RES_ICON_CMD_EXP_VICTORY, + + "脡矛脌脕脩眉.dds", // RES_ICON_CMD_EXP_GAPE + "脟脳脦脟.dds", // RES_ICON_CMD_EXP_KISS + "脮陆露路.dds", // RES_ICON_CMD_EXP_FIGHT, + "鹿楼禄梅1.dds", // RES_ICON_CMD_EXP_ATTACK1, + "鹿楼禄梅2.dds", // RES_ICON_CMD_EXP_ATTACK2, + + "鹿楼禄梅3.dds", // RES_ICON_CMD_EXP_ATTACK3, + "鹿楼禄梅4.dds", // RES_ICON_CMD_EXP_ATTACK4, + "路脌脫霉.dds", // RES_ICON_CMD_EXP_DEFENCE, + "脣陇碌鹿.dds", // RES_ICON_CMD_EXP_FALL, + "碌鹿碌脴.dds", // RES_ICON_CMD_EXP_FALLONGROUND, + + "脮脜脥没.dds", // RES_ICON_CMD_EXP_LOOKAROUND, + "脦猫碌赂1.dds", // RES_ICON_CMD_EXP_DANCE, + "脦猫碌赂2.dds", // RES_ICON_CMD_EXP_FASHIONWEAPON + "脢掳脠隆.dds", // RES_ICON_CMD_PICKUP + "脥脷戮貌.dds", // RES_ICON_CMD_GATHER + "录脫脣脵路脡脨脨.dds", // RES_ICON_CMD_RUSHFLY + + "脧脿脪脌脧脿脵脣碌脛露炉脳梅.dds", // RES_ICON_CMD_BINDBUDDY + "脟脳脟脳脙脺脙脺碌脛露炉脳梅.dds", // RES_ICON_CMD_TWOKISS + "脤酶脭戮碌脛露炉脳梅1.dds", // RES_ICON_CMD_JUMPTRICK, + "脤酶脭戮碌脛露炉脳梅2.dds", // RES_ICON_CMD_RUNTRICK, + }; + + // Model files + static readonly string[] l_aModelFiles = + { + "models/matters/脦茂脝路/陆冒卤脪/陆冒卤脪.ecm", + "models/matters/脦茂脝路/脭陋戮搂/脭陋戮搂.ecm", + // 脠脣脌脿 + "models/players/脨脦脧贸/脦盲脧脌脛脨/脟没赂脡/脦盲脧脌脛脨.ecm", + "models/players/脨脦脧贸/脦盲脧脌脜庐/脟没赂脡/脦盲脧脌脜庐.ecm", + "models/players/脨脦脧贸/路篓脢娄脛脨/脟没赂脡/路篓脢娄脛脨.ecm", + "models/players/脨脦脧贸/路篓脢娄脜庐/脟没赂脡/路篓脢娄脜庐.ecm", + // 脧芦脳氓 脦脳脢娄 + "models/players/脨脦脧贸/脦脳脢娄脛脨/脟没赂脡/脦脳脢娄脛脨.ecm", + "models/players/脨脦脧贸/脦脳脢娄脜庐/脟没赂脡/脦脳脢娄脜庐.ecm", + // 脩媒脳氓 + "", + "models/players/脨脦脧贸/脩媒戮芦/脟没赂脡/脩媒戮芦.ecm", + "models/players/脨脦脧贸/脩媒脢脼脛脨/脟没赂脡/脩媒脢脼脛脨.ecm", + "", + // 脧芦脳氓 麓脤驴脥 + "models/players/脨脦脧贸/麓脤驴脥脛脨/脟没赂脡/麓脤驴脥脛脨.ecm", + "models/players/脨脦脧贸/麓脤驴脥脜庐/脟没赂脡/麓脤驴脥脜庐.ecm", + // 脫冒脳氓 + "models/players/脨脦脧贸/脫冒脙垄脛脨/脟没赂脡/脫冒脙垄脛脨.ecm", + "models/players/脨脦脧贸/脫冒脙垄脜庐/脟没赂脡/脫冒脙垄脜庐.ecm", + "models/players/脨脦脧贸/脫冒脕茅脛脨/脟没赂脡/脫冒脕茅脛脨.ecm", + "models/players/脨脦脧贸/脫冒脕茅脜庐/脟没赂脡/脫冒脕茅脜庐.ecm", + // 脕茅脳氓 + "models/players/脨脦脧贸/陆拢脕茅脛脨/脟没赂脡/陆拢脕茅脛脨.ecm", + "models/players/脨脦脧贸/陆拢脕茅脜庐/脟没赂脡/陆拢脕茅脜庐.ecm", + "models/players/脨脦脧贸/梅脠脕茅脛脨/脟没赂脡/梅脠脕茅脛脨.ecm", + "models/players/脨脦脧贸/梅脠脕茅脜庐/脟没赂脡/梅脠脕茅脜庐.ecm", + // 脰掳脪碌卤盲脡铆脛拢脨脥 + "models/players/脨脦脧贸/掳脳禄垄/掳脳禄垄.ecm", + "models/players/脨脦脧贸/禄冒潞眉脌锚/禄冒潞眉脌锚.ecm", + "models/players/脨脦脧贸/脫掳脳氓卤盲脡铆脛脨/脫掳脳氓卤盲脡铆脛脨.ecm", + "models/players/脨脦脧贸/脫掳脳氓卤盲脡铆脜庐/脫掳脳氓卤盲脡铆脜庐.ecm", + + // 录录脛脺卤盲脡铆脛拢脨脥拢篓麓脣ID虏禄驴脡卤盲拢卢脨脗脛拢脨脥脟毛脥霉潞贸脤铆录脫拢漏 + "models/players/脨脦脧贸/陆冒脟庐脥脺/陆冒脟庐脥脺.ecm", + "models/players/脨脦脧贸/禄茅脌帽脥炉脛脨/禄茅脌帽脥炉脛脨.ecm", + "models/players/脨脦脧贸/禄茅脌帽脥炉脜庐/禄茅脌帽脥炉脜庐.ecm", + "models/players/脨脦脧贸/2011卤盲脡铆/脭掳脪脮脟酶脡脷卤酶/脭掳脪脮脟酶脡脷卤酶.ecm", + "models/players/脨脦脧贸/脢梅录娄/脢梅录娄.ecm", + "models/players/脨脦脧贸/脨隆脛搂禄垄/脨隆脛搂禄垄.ecm", + "models/players/脨脦脧贸/潞矛脡芦脣脡脢贸/潞矛脡芦脣脡脢贸.ecm", + "models/players/脨脦脧贸/脗陆禄炉碌脛潞拢鹿锚/脗陆禄炉碌脛潞拢鹿锚.ecm", + "models/players/脨脦脧贸/脨脗脛茂碌脛卤铆赂莽/脨脗脛茂碌脛卤铆赂莽.ecm", + "models/players/脨脦脧贸/脡脷卤酶驴镁脌脺/脡脷卤酶驴镁脌脺.ecm", + "models/players/脨脦脧贸/2013卤盲脡铆/脝贸露矛碌脹脥玫/脝贸露矛碌脹脥玫.ecm", + "models/players/脨脦脧贸/2013卤盲脡铆/脝贸露矛碌脹脥玫/脝贸露矛禄脢潞贸.ecm", + "models/players/脨脦脧贸/2013卤盲脡铆/脩漏脥脙/脩漏脥脙.ecm", + "models/players/脨脦脧贸/2013卤盲脡铆/脤漏碌脧脨脺/脤漏碌脧脨脺.ecm", + "models/players/脨脦脧贸/潞矛脡芦脣脡脢贸/潞矛脡芦脣脡脢贸麓贸.ecm", + "models/players/脨脦脧贸/脢梅录娄/脢梅录娄麓贸.ecm", + "models/players/脨脦脧贸/2011卤盲脡铆/脭掳脪脮脟酶脡脷卤酶/脭掳脪脮脟酶脡脷卤酶路脽脜颅.ecm", + "models/players/脨脦脧贸/2011卤盲脡铆/脭掳脪脮脟酶脡脷卤酶/脭掳脪脮脟酶脡脷卤酶戮脷脡楼.ecm", + "models/players/脨脦脧贸/2011卤盲脡铆/脭掳脪脮脟酶脡脷卤酶/脭掳脪脮脟酶脡脷卤酶脢搂脗盲.ecm", + "models/players/脨脦脧贸/2013卤盲脡铆/脩漏脥脙/脩漏脥脙碌莽鹿芒.ecm", + "models/players/脨脦脧贸/2013卤盲脡铆/脕煤/脕煤.ecm", + // 脰掳脪碌卤盲脡铆脨脗脛拢脨脥 + "models/players/脨脦脧贸/脨脺脙篓/脨脺脙篓.ecm", + "models/players/脨脦脧贸/碌没脫冒潞眉/碌没脫冒潞眉.ecm", + + // 脛卢脠脧掳脷脤炉脛拢脨脥 + "models/players/脨脦脧贸/掳脷脤炉/脛脨/脛脨.ecm", + "models/players/脨脦脧贸/掳脷脤炉/脜庐/脜庐.ecm", + + // 毛脢脳氓 + "models/players/脨脦脧贸/脪鹿脫掳脛脨/脟没赂脡/脪鹿脫掳脛脨.ecm", + "models/players/脨脦脧贸/脪鹿脫掳脜庐/脟没赂脡/脪鹿脫掳脜庐.ecm", + "models/players/脨脦脧贸/脭脗脧脡脛脨/脟没赂脡/脭脗脧脡脛脨.ecm", + "models/players/脨脦脧贸/脭脗脧脡脜庐/脟没赂脡/脭脗脧脡脜庐.ecm", + + // ??????? + "models/players/脨脦脧贸/毛脢脳氓卤盲脡铆脪鹿脫掳脛脨/毛脢脳氓卤盲脡铆脪鹿脫掳脛脨.ecm", + "models/players/脨脦脧贸/毛脢脳氓卤盲脡铆脪鹿脫掳脜庐/毛脢脳氓卤盲脡铆脪鹿脫掳脜庐.ecm", + "models/players/脨脦脧贸/毛脢脳氓卤盲脡铆脭脗脧脡脛脨/毛脢脳氓卤盲脡铆脭脗脧脡脛脨.ecm", + "models/players/脨脦脧贸/毛脢脳氓卤盲脡铆脭脗脧脡脜庐/毛脢脳氓卤盲脡铆脭脗脧脡脜庐.ecm", + }; + + + // Model files + static readonly string[] l_aModelFilesForChangeShape2 = // 脨隆露炉脦茂卤盲脡铆拢卢卤盲脡铆脌脿脨脥脦陋 2 + { + "", + + // 脮陆鲁碌卤盲脡铆 + "models/players/脨脦脧贸/2013卤盲脡铆/脥露脢炉鲁碌/脥露脢炉鲁碌鲁玫录露.ecm", + "models/players/脨脦脧贸/2013卤盲脡铆/脥露脢炉鲁碌/脥露脢炉鲁碌脰脨录露.ecm", + "models/players/脨脦脧贸/2013卤盲脡铆/脥露脢炉鲁碌/脥露脢炉鲁碌赂脽录露.ecm", + "models/players/脨脦脧贸/2013卤盲脡铆/脭露鲁脤脮陆鲁碌/脭露鲁脤脮陆鲁碌鲁玫录露.ecm", + + "models/players/脨脦脧贸/2013卤盲脡铆/脭露鲁脤脮陆鲁碌/脭露鲁脤脮陆鲁碌脰脨录露.ecm", // 5 + "models/players/脨脦脧贸/2013卤盲脡铆/脭露鲁脤脮陆鲁碌/脭露鲁脤脮陆鲁碌赂脽录露.ecm", + "models/players/脨脦脧贸/2013卤盲脡铆/鹿颅氓贸脮陆鲁碌/鹿颅氓贸脮陆鲁碌鲁玫录露.ecm", + "models/players/脨脦脧贸/2013卤盲脡铆/鹿颅氓贸脮陆鲁碌/鹿颅氓贸脮陆鲁碌脰脨录露.ecm", + "models/players/脨脦脧贸/2013卤盲脡铆/鹿颅氓贸脮陆鲁碌/鹿颅氓贸脮陆鲁碌赂脽录露.ecm", + + "models/players/脨脦脧贸/2013卤盲脡铆/脫脟脫么脰脨脛锚/脫脟脫么脰脨脛锚.ecm", // 10 + "models/players/脨脦脧贸/2013卤盲脡铆/盲陆脨脺脛脨潞矛/盲陆脨脺脛脨潞矛.ecm", + "models/players/脨脦脧贸/2013卤盲脡铆/脨隆脗铆鲁碌/脨隆脗铆鲁碌.ecm", + "models/players/脨脦脧贸/脨隆脩漏脠脣/脨隆脩漏脠脣.ecm", + "", + + "", //15 + "", + "", + "", + "", + + "", // 20 + "", + "", + "", + "", + + "", // 25 + + // 录录脛脺卤盲脡铆脛拢脨脥拢篓麓脣ID虏禄驴脡卤盲拢卢脨脗脛拢脨脥脟毛脥霉潞贸脤铆录脫拢漏 + "models/players/脨脦脧贸/陆冒脟庐脥脺/陆冒脟庐脥脺.ecm", + "models/players/脨脦脧贸/禄茅脌帽脥炉脛脨/禄茅脌帽脥炉脛脨.ecm", + "models/players/脨脦脧贸/禄茅脌帽脥炉脜庐/禄茅脌帽脥炉脜庐.ecm", + "models/players/脨脦脧贸/2011卤盲脡铆/脭掳脪脮脟酶脡脷卤酶/脭掳脪脮脟酶脡脷卤酶.ecm", + "models/players/脨脦脧贸/脢梅录娄/脢梅录娄.ecm", + "models/players/脨脦脧贸/脨隆脛搂禄垄/脨隆脛搂禄垄.ecm", + "models/players/脨脦脧贸/潞矛脡芦脣脡脢贸/潞矛脡芦脣脡脢贸.ecm", + "models/players/脨脦脧贸/脗陆禄炉碌脛潞拢鹿锚/脗陆禄炉碌脛潞拢鹿锚.ecm", + "models/players/脨脦脧贸/脨脗脛茂碌脛卤铆赂莽/脨脗脛茂碌脛卤铆赂莽.ecm", + "models/players/脨脦脧贸/脡脷卤酶驴镁脌脺/脡脷卤酶驴镁脌脺.ecm", + "models/players/脨脦脧贸/2013卤盲脡铆/脝贸露矛碌脹脥玫/脝贸露矛碌脹脥玫.ecm", + "models/players/脨脦脧贸/2013卤盲脡铆/脝贸露矛碌脹脥玫/脝贸露矛禄脢潞贸.ecm", + "models/players/脨脦脧贸/2013卤盲脡铆/脩漏脥脙/脩漏脥脙.ecm", + "models/players/脨脦脧贸/2013卤盲脡铆/脤漏碌脧脨脺/脤漏碌脧脨脺.ecm", + "models/players/脨脦脧贸/潞矛脡芦脣脡脢贸/潞矛脡芦脣脡脢贸麓贸.ecm", + "models/players/脨脦脧贸/脢梅录娄/脢梅录娄麓贸.ecm", + "models/players/脨脦脧贸/2011卤盲脡铆/脭掳脪脮脟酶脡脷卤酶/脭掳脪脮脟酶脡脷卤酶路脽脜颅.ecm", + "models/players/脨脦脧贸/2011卤盲脡铆/脭掳脪脮脟酶脡脷卤酶/脭掳脪脮脟酶脡脷卤酶戮脷脡楼.ecm", + "models/players/脨脦脧贸/2011卤盲脡铆/脭掳脪脮脟酶脡脷卤酶/脭掳脪脮脟酶脡脷卤酶脢搂脗盲.ecm", + "models/players/脨脦脧贸/2013卤盲脡铆/脩漏脥脙/脩漏脥脙碌莽鹿芒.ecm", + "models/players/脨脦脧贸/2013卤盲脡铆/脕煤/脕煤.ecm", + "models/players/脨脦脧贸/2014卤盲脡铆/路莽路篓脢娄/路莽路篓脢娄.ecm", + "models/players/脨脦脧贸/2014卤盲脡铆/脪鹿脫掳脫掳露脻卤盲脡铆/脫掳露脻.ecm", + "models/players/脨脦脧贸/2015卤盲脡铆/碌掳碌掳/碌掳碌掳.ecm", + "models/players/脨脦脧贸/2015卤盲脡铆/路脢脩貌/路脢脩貌.ecm", + "models/players/脨脦脧贸/2015卤盲脡铆/脕煤脙篓/脕煤脙篓.ecm", + "models/players/脨脦脧贸/2015卤盲脡铆/脜脻脜脻脫茫/脜脻脜脻脫茫.ecm", + }; + + static readonly string[] l_szSysIconFile = { + "2013/驴矛陆脻脌赂/gt(脮媒鲁拢).dds", + "2013/驴矛陆脻脌赂/touch(脮媒鲁拢).dds", + "2013/驴矛陆脻脌赂/脨脼脕露(脮媒鲁拢).dds", + "2013/驴矛陆脻脌赂/掳脵驴脝(脮媒鲁拢).dds", + "2013/驴矛陆脻脌赂/录脛脗么(脮媒鲁拢).dds", + "2013/驴矛陆脻脌赂/脥锚脙脌路镁脦帽(脮媒鲁拢).dds", + "2013/驴矛陆脻脌赂/脟茅脭碌(脮媒鲁拢).dds", + "2013/驴矛陆脻脌赂/戮脹脕茅(脮媒鲁拢).dds", + "2013/驴矛陆脻脌赂/脳脭露炉潞脠脪漏(脮媒鲁拢).dds", + "", + }; + } + + // Cursor resource + enum CursorResourceType + { + RES_CUR_NORMAL = 0, + RES_CUR_ATTACK, + RES_CUR_TALK, + RES_CUR_PICKUP, + RES_CUR_REPAIR, + RES_CUR_HAND, + RES_CUR_FLAG, + RES_CUR_DIG, + RES_CUR_SWALLOW, + NUM_RES_CURSOR, + } + +// GFX resource + enum GfxResourceType + { + RES_GFX_LEVELUP = 0, + RES_GFX_PLAYERAPPEAR, + RES_GFX_HIT, + RES_GFX_MOVETARGET, + RES_GFX_ITEMFLASH, + RES_GFX_CURSORHOVER, + RES_GFX_SELECTED, + RES_GFX_FLOATING_DUST, + RES_GFX_WATER_WAVE_STILL, + RES_GFX_WATER_WAVE_MOVE, + RES_GFX_AIR_BUBBLE, + RES_GFX_SWIM_BUBBLE, + RES_GFX_TRANSFORM_TIGER, + RES_GFX_TRANSFORM_FOX, + RES_GFX_RED_MEDICINE, + RES_GFX_BLUE_MEDICINE, + RES_GFX_PURPLE_MEDICINE, + RES_GFX_JIEDU_MEDICINE, + RES_GFX_PHYSIC_ARMORRUNE, + RES_GFX_MAGIC_ARMORRUNE, + RES_GFX_INDUEL, + RES_GFX_TANKLEADER_RED, + RES_GFX_TANKLEADER_BLUE, + RES_GFX_GOBLIN_LEVELUP, + RES_GFX_INVISIBLE_DETECTED, + RES_GFX_MONSTER_SPIRIT_LINE, + RES_GFX_MONSTER_SPIRIT_BALL, + RES_GFX_REALM_LEVELUP, + RES_GFX_BATTLEFURY, + NUM_RES_GFX, + }; + +// Sound resource + +// Texture resource + +// Shader resource + enum ShaderResourceType + { + RES_SHD_HAIR = 0, + RES_SHD_GOATEE, + RES_SHD_FACE, + RES_SHD_EYE, + RES_SHD_BROW, + + RES_SHD_MOUTH, // 5 + RES_SHD_NOSE, + RES_SHD_EYEBALL, + RES_SHD_MOUSTACHE, + RES_SHD_BODY, + + NUM_RES_SHADER, // 10 + }; + +// Icon resource + enum IconResourceType + { + RES_ICON_CMD_SITDOWN = 0, + RES_ICON_CMD_WALKRUN, + RES_ICON_CMD_NORMALATTACK, + RES_ICON_CMD_FINDTARGET, + RES_ICON_CMD_ASSISTATTACK, + + RES_ICON_CMD_INVITETOTEAM, // 5 + RES_ICON_CMD_LEAVETEAM, + RES_ICON_CMD_KICKTEAMMEM, + RES_ICON_CMD_FINDTEAM, + RES_ICON_CMD_STARTTRADE, + + RES_ICON_CMD_SELLBOOTH, // 10 + RES_ICON_CMD_BUYBOOTH, + RES_ICON_CMD_INVITETOFACTION, + RES_ICON_CMD_FLY, + RES_ICON_CMD_EXP_WAVE, + + RES_ICON_CMD_EXP_NOD, // 15 + RES_ICON_CMD_EXP_SHAKEHEAD, + RES_ICON_CMD_EXP_SHRUG, + RES_ICON_CMD_EXP_LAUGH, + RES_ICON_CMD_EXP_ANGRY, + + RES_ICON_CMD_EXP_STUN, // 20 + RES_ICON_CMD_EXP_DEPRESSED, + RES_ICON_CMD_EXP_KISSHAND, + RES_ICON_CMD_EXP_SHY, + RES_ICON_CMD_EXP_SALUTE, + + RES_ICON_CMD_EXP_SITDOWN, // 25 + RES_ICON_CMD_EXP_ASSAULT, + RES_ICON_CMD_EXP_THINK, + RES_ICON_CMD_EXP_DEFIANCE, + RES_ICON_CMD_EXP_VICTORY, + + RES_ICON_CMD_EXP_GAPE, // 30 + RES_ICON_CMD_EXP_KISS, + RES_ICON_CMD_EXP_FIGHT, + RES_ICON_CMD_EXP_ATTACK1, + RES_ICON_CMD_EXP_ATTACK2, + + RES_ICON_CMD_EXP_ATTACK3, // 35 + RES_ICON_CMD_EXP_ATTACK4, + RES_ICON_CMD_EXP_DEFENCE, + RES_ICON_CMD_EXP_FALL, + RES_ICON_CMD_EXP_FALLONGROUND, + + RES_ICON_CMD_EXP_LOOKAROUND, // 40 + RES_ICON_CMD_EXP_DANCE, + RES_ICON_CMD_EXP_FASHIONWEAPON, + RES_ICON_CMD_PICKUP, + RES_ICON_CMD_GATHER, + RES_ICON_CMD_RUSHFLY, + + RES_ICON_CMD_BINDBUDDY, + RES_ICON_CMD_TWOKISS, // Ç×Ç×ÃÜÃÜ + RES_ICON_CMD_JUMPTRICK, + RES_ICON_CMD_RUNTRICK, + + NUM_RES_ICON, + }; + +// Model resource + enum ModelResourceType + { + RES_MOD_GOLD = 0, + RES_MOD_TEMP, + RES_MOD_WARRIOR_M, + RES_MOD_WARRIOR_F, + RES_MOD_MAGE_M, + RES_MOD_MAGE_F, + RES_MOD_MONK_M, + RES_MOD_MONK_F, + RES_MOD_HAG_M, + RES_MOD_HAG_F, + RES_MOD_ORC_M, + RES_MOD_ORC_F, + RES_MOD_GHOST_M, + RES_MOD_GHOST_F, + RES_MOD_ARCHOR_M, + RES_MOD_ARCHOR_F, + RES_MOD_ANGEL_M, + RES_MOD_ANGEL_F, + RES_MOD_JIANLING_M, + RES_MOD_JIANLING_F, + RES_MOD_MEILING_M, + RES_MOD_MEILING_F, + RES_MOD_ORC_TIGER, + RES_MOD_ORC_FOX, + RES_MOD_SHADOW_FISH_M, + RES_MOD_SHADOW_FISH_F, + RES_MOD_MONEYFROG, + RES_MOD_WEDDING_KID_M, + RES_MOD_WEDDING_KID_F, + RES_MOD_SOLDIER, + RES_MOD_TREEBIRD, + RES_MOD_EVIL_TIGER, + RES_MOD_RED_SQUIRREL, + RES_MOD_LAND_TURTLE, + RES_MOD_BRIDE_COUSIN, + RES_MOD_SENTRY_PUPPET, + RES_MOD_PENGUIN_KING, + RES_MOD_PENGUIN_QUEEN, + RES_MOD_SNOW_RABBIT, + RES_MOD_TEDDY_BEAR, + RES_MOD_RED_SQUIRREL_BIG, + RES_MOD_TREEBIRD_BIG, + RES_MOD_SENTRY_ANGRY, + RES_MOD_SENTRY_DEPRESSED, + RES_MOD_SENTRY_LOST, + RES_MOD_SNOW_RABBIT_BLAZE, + RES_MOD_DRAGON, + RES_MOD_ORC_PANDER, + RES_MOD_ORC_FOX2, + RES_MOD_DEFAULT_BOOTH_M, + RES_MOD_DEFAULT_BOOTH_F, + RES_MOD_YEYING_M, + RES_MOD_YEYING_F, + RES_MOD_YUEXIAN_M, + RES_MOD_YUEXIAN_F, + RES_MOD_YEYING_RESHAPE_M, + RES_MOD_YEYING_RESHAPE_F, + RES_MOD_YUEXIAN_RESHAPE_M, + RES_MOD_YUEXIAN_RESHAPE_F, + NUM_RES_MODEL, + }; + +// model file for change shape 2 + enum ResourceModelType + { + RES_MOD_CHANGESAHPE_NULL, // 0 + RES_MOD_CHARIOT_1, + RES_MOD_CHARIOT_2, + RES_MOD_CHARIOT_3, + RES_MOD_CHARIOT_4, + RES_MOD_CHARIOT_5, //5 + RES_MOD_CHARIOT_6, + RES_MOD_CHARIOT_7, + RES_MOD_CHARIOT_8, + RES_MOD_CHARIOT_9, + RES_MOD_DEPRESSEC_AGED_PERSION, //10 + RES_MOD_RED_BEAR, + RES_MOD_PONYCAR, + RES_MOD_SNOWMAN, + + RES_MOD_CHANGESAHPE_MONEY_FROG = 26, + RES_MOD_CHANGESAHPE_USED = 52, // 26-52 Òѱ»Ê¹Óà + + RES_MOD_FORCHANGESAHPE_NUM, + }; + +// Some unicode string resources + enum UnicodeStringResourceType + { + RES_FONT_TITLE = 0, + RES_FONT_DAMAGE, + NUM_RES_FONT, + }; +} \ No newline at end of file diff --git a/Assets/Scripts/Utilities/EC_Resource.cs.meta b/Assets/Scripts/Utilities/EC_Resource.cs.meta new file mode 100644 index 0000000000..13e84f471b --- /dev/null +++ b/Assets/Scripts/Utilities/EC_Resource.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 47d8b4297c6ec224d9d91a7d6ccf1146 \ No newline at end of file