diff --git a/Assets/AddressableAssetsData/AssetGroups/Default Local Group.asset b/Assets/AddressableAssetsData/AssetGroups/Default Local Group.asset index 15846187e2..9634ab0449 100644 --- a/Assets/AddressableAssetsData/AssetGroups/Default Local Group.asset +++ b/Assets/AddressableAssetsData/AssetGroups/Default Local Group.asset @@ -40,6 +40,11 @@ MonoBehaviour: m_ReadOnly: 0 m_SerializedLabels: [] FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: 604e1a73e4ffe2c4c9d911243e79bfcd + m_Address: Assets/Prefabs/Pet/PetPrefab + m_ReadOnly: 0 + m_SerializedLabels: [] + FlaggedDuringContentUpdateRestriction: 0 - m_GUID: 88e840e5dac12ed4383d994c7fadfef1 m_Address: "\u7A0B\u5E8F\u8054\u5165/\u51FB\u4E2D/\u62F3\u5957\u51FB\u4E2D" m_ReadOnly: 0 diff --git a/Assets/PerfectWorld/Scripts/Managers/CECNPCMan.cs b/Assets/PerfectWorld/Scripts/Managers/CECNPCMan.cs index 4539c8ad88..249fa33e74 100644 --- a/Assets/PerfectWorld/Scripts/Managers/CECNPCMan.cs +++ b/Assets/PerfectWorld/Scripts/Managers/CECNPCMan.cs @@ -558,7 +558,7 @@ public class CECNPCMan : IMsgHandler } if (bPet) { - //pNPC = new CECPet(this); + pNPC = CECGameRun.Instance.GetPet(); } else { @@ -570,7 +570,9 @@ public class CECNPCMan : IMsgHandler case DATA_TYPE.DT_MONSTER_ESSENCE: pNPC = CECGameRun.Instance.GetMonster(); break; - case DATA_TYPE.DT_PET_ESSENCE:/* pNPC = new CECPet(this);*/ break; + case DATA_TYPE.DT_PET_ESSENCE: + pNPC = CECGameRun.Instance.GetPet(); + break; default: UnityEngine.Debug.Assert(false, "Invalid DATA_TYPE in CreateNPC"); return null; diff --git a/Assets/PerfectWorld/Scripts/Move/CECPlayer.cs b/Assets/PerfectWorld/Scripts/Move/CECPlayer.cs index 38584ee7eb..f3eecb6052 100644 --- a/Assets/PerfectWorld/Scripts/Move/CECPlayer.cs +++ b/Assets/PerfectWorld/Scripts/Move/CECPlayer.cs @@ -92,6 +92,9 @@ namespace BrewMonster bool m_bAboutToDie = false; public bool m_bCandHangerOn = false; public bool m_bPetInSanctuary = false; // true, the pet pet of the player is in sanctuary + //The ID of the currently summoned pet + int m_idCurPet = 0; + byte m_byPariahLvl = 0; // Pariah level public MOVECONST m_MoveConst; // Const used when moving control public Move_Mode m_MoveMode; @@ -1627,6 +1630,40 @@ namespace BrewMonster // if (pWing2) pWing2->Show(bShow); //} } + + // Get current pet id + public int GetCurPetID() { return m_idCurPet; } + // Set current pet id + public void SetCurPetID(int id) { m_idCurPet = id; } + + // Get player name color + public uint GetNameColor() + { + uint dwNameCol = NameColor.NAMECOL_MAUVE; + + if (IsInBattle()) // Player is in battle + { + if (m_iBattleCamp == Player_camp_in_battle.GP_BATTLE_CAMP_INVADER) + dwNameCol = NameColor.NAMECOL_BC_RED; + else // (m_iBattleCamp == GP_BATTLE_CAMP_DEFENDER) + dwNameCol = NameColor.NAMECOL_BC_BLUE; + } + else if (IsPariah()) + { + switch (m_byPariahLvl) + { + case 0: dwNameCol = NameColor.NAMECOL_RED0; break; + case 1: dwNameCol = NameColor.NAMECOL_RED1; break; + default: dwNameCol = NameColor.NAMECOL_RED2; break; + } + } + else if (IsInvader()) + dwNameCol = NameColor.NAMECOL_PINK; + else if (m_pvp.bEnable) + dwNameCol = NameColor.NAMECOL_WHITE; + + return dwNameCol; + } } public struct PlayActionEvent diff --git a/Assets/PerfectWorld/Scripts/NPC/CECNPC.cs b/Assets/PerfectWorld/Scripts/NPC/CECNPC.cs index 01439f3edb..51d0057723 100644 --- a/Assets/PerfectWorld/Scripts/NPC/CECNPC.cs +++ b/Assets/PerfectWorld/Scripts/NPC/CECNPC.cs @@ -58,6 +58,14 @@ public class CECNPC : CECObject public string ROLEBASICPROP => m_strName;*/ + protected virtual void Awake() + { + m_DisappearCnt = new CECCounter(); + m_IdleCnt = new CECCounter(); + m_TransCnt = new CECCounter(); + m_aWorks = new int[4]; + } + public virtual void SetUpCECNPC(CECNPCMan pNPCMan) { base.SetUpCECObject(); @@ -572,7 +580,7 @@ public class CECNPC : CECObject { Destroy(gameObject); } - float GetTransparentLimit() + public float GetTransparentLimit() { if ((m_dwStates & (uint)PlayerNPCState.GP_STATE_INVISIBLE) != 0) { @@ -940,10 +948,18 @@ public class CECNPC : CECObject { return; } - var model = await NPCBuilder.Instance.GetModelByPath(AFile.NormalizePath(szModelFile.ToLower(), true)); - if (model == null) + GameObject model = null; + try + { + model = await NPCBuilder.Instance.GetModelByPath(AFile.NormalizePath(szModelFile.ToLower(), true)); + if (model == null) + { + model = GameObject.CreatePrimitive(PrimitiveType.Capsule); + BMLogger.LogWarning($" CECNPC.QueueLoadNPCModel model == null szModelFile= {szModelFile} "); + } + } + catch { - model = GameObject.CreatePrimitive(PrimitiveType.Capsule); BMLogger.LogWarning($" CECNPC.QueueLoadNPCModel model == null szModelFile= {szModelFile} "); } @@ -1155,7 +1171,7 @@ public class CECNPC : CECObject { return m_pNPCModelPolicy.GetCHAABB(ref aabb); } - void SetPos(Vector3 pos) + public void SetPos(Vector3 pos) { if (-2041570812 == m_NPCInfo.nid) { @@ -1517,7 +1533,14 @@ public class CECNPC : CECObject } m_pNPCModelPolicy.PlayModelAction(iAction, bRestart, null); } - bool IsDisappearing() { return m_DisappearCnt.GetCounter() != 0 ? true : false; } + bool IsDisappearing() + { + if(m_DisappearCnt != null) + { + return m_DisappearCnt.GetCounter() != 0 ? true : false; + } + return false; + } public float GetTouchRadius() { return m_fTouchRad; } @@ -1574,6 +1597,9 @@ public class CECNPC : CECObject // Get distance to host player public float GetDistToHost() { return m_fDistToHost; } public float GetDistToHostH() { return m_fDistToHostH; } + + // Get NPC name color + public virtual uint GetNameColor() { return 0xffffff00; } } public struct ClearComActFlagEvent { diff --git a/Assets/PerfectWorld/Scripts/NPC/CECNPCModelDefaultPolicy.cs b/Assets/PerfectWorld/Scripts/NPC/CECNPCModelDefaultPolicy.cs index 3810257bfe..e46ab78a6c 100644 --- a/Assets/PerfectWorld/Scripts/NPC/CECNPCModelDefaultPolicy.cs +++ b/Assets/PerfectWorld/Scripts/NPC/CECNPCModelDefaultPolicy.cs @@ -1,4 +1,5 @@ using BrewMonster; +using CSNetwork.GPDataType; using CSNetwork.Protocols; using UnityEngine; @@ -200,4 +201,8 @@ public class CECNPCModelDefaultPolicy _npcVisual = npcVisual; } + public override void SetDefaultPickAABBExt(A3DVECTOR3 vExt) + { + + } } diff --git a/Assets/PerfectWorld/Scripts/NPC/CECNPCModelPolicy.cs b/Assets/PerfectWorld/Scripts/NPC/CECNPCModelPolicy.cs index ce63744831..490dcb8114 100644 --- a/Assets/PerfectWorld/Scripts/NPC/CECNPCModelPolicy.cs +++ b/Assets/PerfectWorld/Scripts/NPC/CECNPCModelPolicy.cs @@ -15,5 +15,6 @@ namespace BrewMonster public abstract bool PlayAttackAction(int nAttackSpeed, CECAttackEvent attackevent); public abstract bool GetCHAABB(ref A3DAABB ab); public abstract void StopChannelAction(); + public abstract void SetDefaultPickAABBExt(CSNetwork.GPDataType.A3DVECTOR3 vExt); } } \ No newline at end of file diff --git a/Assets/PerfectWorld/Scripts/NPC/EC_Pet.cs b/Assets/PerfectWorld/Scripts/NPC/EC_Pet.cs new file mode 100644 index 0000000000..e3165c40cd --- /dev/null +++ b/Assets/PerfectWorld/Scripts/NPC/EC_Pet.cs @@ -0,0 +1,260 @@ +using BrewMonster.Network; +using BrewMonster.Scripts.World; +using CSNetwork.GPDataType; +using PerfectWorld.Scripts.Managers.BrewMonster.Managers; +using System; +using System.Linq; +using UnityEngine; + +namespace BrewMonster +{ + public class CECPet : CECNPC + { + // Data in database + PET_ESSENCE? m_pDBEssence; + string m_strCompName; // Complete name with master's name + + public CECPet(CECNPCMan pNPCMan) + { + m_iCID = (int)Class_ID.OCID_PET; + m_pDBEssence = null; + m_fTouchRad = 1.0f; + } + + // Initlaize object + public override bool Init(int tid, in info_npc Info, ReadOnlySpan packet, int infoOffset) + { + if (!base.Init(tid, Info, packet, infoOffset)) + return false; + + // Get database data + var pDB = ElementDataManProvider.GetElementDataMan(); + DATA_TYPE DataType = new DATA_TYPE(); + object pDBData = pDB.get_data_ptr((uint)tid, ID_SPACE.ID_SPACE_ESSENCE, ref DataType); + + if (pDBData == null) + { + return false; + } + + byte[] szModelFile = null; + + if (DataType == DATA_TYPE.DT_MONSTER_ESSENCE) + { + MONSTER_ESSENCE pMonsterData = (MONSTER_ESSENCE)pDBData; + szModelFile = pMonsterData.file_model; + + object pObEggData = pDB.get_data_ptr(pMonsterData.id_pet_egg_captured, ID_SPACE.ID_SPACE_ESSENCE, ref DataType); + if (pObEggData == null) + { + return false; + } + var pEggData = (PET_EGG_ESSENCE)pObEggData; + m_pDBEssence = (PET_ESSENCE)pDB.get_data_ptr((uint)pEggData.id_pet, ID_SPACE.ID_SPACE_ESSENCE, ref DataType); + m_NPCInfo.tid = pEggData.id_pet; + } + else + { + m_pDBEssence = (PET_ESSENCE)pDBData; + szModelFile = m_pDBEssence.Value.file_model; + } + + if (m_pDBEssence == null) + { + return false; + } + + SetUseGroundNormal(m_pDBEssence.Value.stand_mode == 0 ? true : false); + m_fTouchRad = m_pDBEssence.Value.size; + m_BasicProps.iLevel = 1; + + // Submit EC model loading request to loading thread + QueueLoadNPCModel(); + + float fExt = m_fTouchRad * 1.5f; + m_cdr.vExts.Set(fExt, fExt, fExt); + m_pNPCModelPolicy.SetDefaultPickAABBExt(m_cdr.vExts); + + // If NPC doesn't have specific name, use the name in database + if ((Info.state & PlayerNPCState.GP_STATE_NPC_NAME) == 0) + { + m_strName = new string(m_pDBEssence.Value.name + .TakeWhile(c => c != 0) + .Select(c => (char)c) + .ToArray() + ); + EC_Game.GetGameRun().GetUIManager().FilterBadWords(ref m_strName); + // Try to build complete name + BuildCompleteName(); + } + + if ((Info.state & PlayerNPCState.GP_STATE_NPC_PET) != 0) + { + if (!IsPlantPet()) + { + // 非植物宠时,能够从宠物面板和玩家面板中相互追踪 + CECPlayer pPlayer = EC_Game.GetGameRun().GetWorld().GetPlayerMan().GetPlayer(m_idMaster); + if (pPlayer) + { + pPlayer.SetCurPetID(Info.nid); + } + } + } + + if ((m_pDBEssence.Value.combined_switch & (uint)PET_COMBINED_SWITCH.PCS_FORBID_SELECTION) != 0) + { + SetSelectable(false); + } + + A3DVECTOR3 vPos = Info.pos; + SetPos(EC_Utility.ToVector3(vPos)); + SetDirAndUp(EC_Utility.ToVector3(EC_Utility.glb_DecompressDirH(Info.dir)), g_vAxisY); + + StartWork((int)WorkType.WT_NOTHING, (int)WorkID.WORK_STAND); + + return true; + } + + // Tick routine + protected override void Update() + { + base.Update(); + if (m_strCompName != null && m_strCompName.Length == 0) + { + // Try to build complete name + BuildCompleteName(); + } + } + + // Get NPC name color + public virtual uint GetNameColor() + { + EC_ManPlayer pPlayerMan = EC_Game.GetGameRun().GetWorld().GetPlayerMan(); + CECPlayer pPlayer = pPlayerMan.GetPlayer(m_idMaster); + if (!pPlayer) + return base.GetNameColor(); + + return pPlayer.GetNameColor(); + } + + public virtual bool IsImmuneDisable() + { + if(m_pDBEssence == null) + { + return false; + } + if ((m_pDBEssence.Value.combined_switch & (uint)PET_COMBINED_SWITCH.PCS_HIDE_IMMUNE) != 0) + return true; + + return false; + } + public virtual float GetTransparentLimit() + { + if (m_pDBEssence != null) + { + if ((m_pDBEssence.Value.combined_switch & (uint)PET_COMBINED_SWITCH.PCS_FORBID_SELECTION) != 0) + { + return -1.0f; + } + + } + return base.GetTransparentLimit(); + } + public virtual bool ShouldHideName() + { + if (m_pDBEssence == null) { return false; } + return (m_pDBEssence.Value.combined_switch & (uint)PET_COMBINED_SWITCH.PCS_HIDE_NAME) != 0; + } + + // Is this host player's pet + public bool IsHostPet() + { + CECHostPlayer pHost = EC_Game.GetGameRun().GetHostPlayer(); + return GetMasterID() == pHost.GetCharacterID(); + } + // Is this pet attackable; + public bool CanBeAttacked() + { + return IsCombatPet() + || IsSummonPet() + || IsPlantPet() + || IsEvolutionPet(); + } + // Is a follow pet ? + public bool IsFollowPet() + { + if (m_pDBEssence != null) + return m_pDBEssence.Value.id_type == 8783; + + return false; + } + // Is a combat pet ? + public bool IsCombatPet() + { + if (m_pDBEssence != null) + return m_pDBEssence.Value.id_type == 8782; + + return false; + } + // 是否为召唤宠 + public bool IsSummonPet() + { + if(m_pDBEssence == null) return false; + return m_pDBEssence.Value.id_type == 28752; + } + // 是否为植物宠 + public bool IsPlantPet() + { + if (m_pDBEssence == null) return false; + return m_pDBEssence.Value.id_type == 28913; + } + // 是否是进化宠 + public bool IsEvolutionPet() + { + if (m_pDBEssence == null) return false; + return m_pDBEssence.Value.id_type == 37698; + } + + public PET_ESSENCE? GetDBEssence() { return m_pDBEssence; } + + // Build complete name + public void BuildCompleteName() + { + //if (!m_npcUI) return; + //var szMasterName = EC_Game.GetGameRun().GetPlayerName(m_idMaster, false); + //if (!szMasterName) return; + + //string strMasterName = szMasterName; + + //CECWorld pWorld = EC_Game.GetGameRun().GetWorld(); + //if (pWorld.IsCountryWarMap() && + // !CECUIConfig::Instance().GetGameUI().bShowNameInCountryWar) + //{ + // // 国战场景中,不直接显示宠物主人名称时,要求查询到此主人信息 + // // 此改动(if语句中的内容)将导致主人未出现时无法看到宠物名称 + // // if 括号中的判断是必要的,将增加看到宠物名称的机会 + + // EC_ManPlayer pPlayerMan = pWorld.GetPlayerMan(); + // CECPlayer pPlayer = pPlayerMan.GetPlayer(m_idMaster); + // if (!pPlayer) + // { + // // 还没看到此玩家,无法判断其国家,还不能确定如何显示 + // return; + // } + // if (pPlayer.GetShowNameInCountryWar()) + // strMasterName = pPlayer.GetNameInCountryWar(); + //} + + //m_strCompName.Format(g_pGame.GetFixedMsgTab().GetWideString(FIXMSG_WHOSETHING), strMasterName, m_strName); + //m_npcUI.SetName(m_strCompName); + } + + public override void SetUpCECNPC(CECNPCMan pNPCMan) + { + base.SetUpCECNPC(pNPCMan); + m_iCID = (int)Class_ID.OCID_PET; + m_pDBEssence = null; + m_fTouchRad = 1.0f; + } + } +} diff --git a/Assets/PerfectWorld/Scripts/NPC/EC_Pet.cs.meta b/Assets/PerfectWorld/Scripts/NPC/EC_Pet.cs.meta new file mode 100644 index 0000000000..8804b61d7b --- /dev/null +++ b/Assets/PerfectWorld/Scripts/NPC/EC_Pet.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 6af68acbb8354d04f9c00df83d3eec60 \ No newline at end of file diff --git a/Assets/PerfectWorld/Scripts/Utility/AddressResourceConfig.cs b/Assets/PerfectWorld/Scripts/Utility/AddressResourceConfig.cs index 92e5013adb..53665b68ad 100644 --- a/Assets/PerfectWorld/Scripts/Utility/AddressResourceConfig.cs +++ b/Assets/PerfectWorld/Scripts/Utility/AddressResourceConfig.cs @@ -7,5 +7,6 @@ namespace BrewMonster public static string MonsterPrefab = "Prefabs/Monster/MonsterPrefab"; public static string NpcServerPrefab = "Prefabs/NPC/NPCServer"; public static string TestVfxPrefab = "Prefabs/Vfx/TestVfx"; + public static string PetServerPrefab = "Assets/Prefabs/Pet/PetPrefab"; } } diff --git a/Assets/PerfectWorld/Scripts/World/CECWorld.cs b/Assets/PerfectWorld/Scripts/World/CECWorld.cs index 2248486913..da885a8a56 100644 --- a/Assets/PerfectWorld/Scripts/World/CECWorld.cs +++ b/Assets/PerfectWorld/Scripts/World/CECWorld.cs @@ -88,5 +88,10 @@ namespace BrewMonster.Scripts.World { return EC_ManMessageMono.Instance.CECNPCMan; } + + public EC_ManPlayer GetPlayerMan() + { + return EC_ManMessageMono.Instance.GetECManPlayer; + } } } diff --git a/Assets/Prefabs/Pet.meta b/Assets/Prefabs/Pet.meta new file mode 100644 index 0000000000..aab1533136 --- /dev/null +++ b/Assets/Prefabs/Pet.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4fe7da8fd51d3b84a83ab91ccaeeba22 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Pet/PetPrefab.prefab b/Assets/Prefabs/Pet/PetPrefab.prefab new file mode 100644 index 0000000000..271b08eb71 --- /dev/null +++ b/Assets/Prefabs/Pet/PetPrefab.prefab @@ -0,0 +1,712 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &428271674577762648 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6571891986767687373} + - component: {fileID: 4956473773495211034} + - component: {fileID: 1445689120324889233} + m_Layer: 5 + m_Name: HealthUIBG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6571891986767687373 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 428271674577762648} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0.07} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6261067400668915663} + - {fileID: 8244162240748499527} + m_Father: {fileID: 1791287790076630285} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -0, y: 1.51} + m_SizeDelta: {x: 1, y: 0.2} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4956473773495211034 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 428271674577762648} + m_CullTransparentMesh: 1 +--- !u!114 &1445689120324889233 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 428271674577762648} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &771811879155673718 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8244162240748499527} + - component: {fileID: 6681838547394292410} + - component: {fileID: 8939523771274757837} + m_Layer: 5 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8244162240748499527 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 771811879155673718} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6571891986767687373} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6681838547394292410 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 771811879155673718} + m_CullTransparentMesh: 1 +--- !u!114 &8939523771274757837 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 771811879155673718} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: 100 + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 369c2e14814cc9a4b8e3ad4e37769134, type: 2} + m_sharedMaterial: {fileID: 2100000, guid: 31b77628c21b17e45a6577a3d3d5aef0, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 0.15 + m_fontSizeBase: 0.15 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_TextWrappingMode: 0 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 0 + m_ActiveFontFeatures: 6e72656b + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_EmojiFallbackSupport: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0.053617537, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &1043716454621571946 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2818130551907084697} + - component: {fileID: 1776217013714687322} + - component: {fileID: 4730194793060944177} + - component: {fileID: 7880925295973151225} + - component: {fileID: 4017591853686837057} + m_Layer: 0 + m_Name: PetPrefab + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2818130551907084697 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1043716454621571946} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 7933090353384311527} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1776217013714687322 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1043716454621571946} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8c7b669b45068cf469ae3116991b9026, type: 3} + m_Name: + m_EditorClassIdentifier: + namedAnimancer: {fileID: 0} + animName1: +--- !u!143 &4730194793060944177 +CharacterController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1043716454621571946} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Height: 2 + m_Radius: 0 + m_SlopeLimit: 45 + m_StepOffset: 0.3 + m_SkinWidth: 0.08 + m_MinMoveDistance: 0.00001 + m_Center: {x: 0, y: 1, z: 0} +--- !u!136 &7880925295973151225 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1043716454621571946} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.8 + m_Height: 1 + m_Direction: 1 + m_Center: {x: 0, y: 1, z: 0} +--- !u!114 &4017591853686837057 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1043716454621571946} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6af68acbb8354d04f9c00df83d3eec60, type: 3} + m_Name: + m_EditorClassIdentifier: + m_NPCInfo: + nid: 0 + tid: 0 + vis_tid: 0 + m_iMMIndex: 0 + m_idAttackTarget: 0 + m_fMoveSpeed: 0 + _characterController: {fileID: 4730194793060944177} + isDebug: 0 + npcVisual: {fileID: 0} +--- !u!1 &1164597358858788668 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1791287790076630285} + - component: {fileID: 8766426097291915552} + - component: {fileID: 82791983180407946} + - component: {fileID: 500640355185755471} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1791287790076630285 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1164597358858788668} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 354124022967291075} + - {fileID: 6571891986767687373} + m_Father: {fileID: 7933090353384311527} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!223 &8766426097291915552 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1164597358858788668} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 2 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_AdditionalShaderChannelsFlag: 25 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!114 &82791983180407946 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1164597358858788668} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 1 +--- !u!114 &500640355185755471 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1164597358858788668} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!1 &1410298629239166573 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 354124022967291075} + - component: {fileID: 3741975505824752843} + - component: {fileID: 6491069708694599127} + m_Layer: 5 + m_Name: Text (TMP)_Name + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &354124022967291075 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1410298629239166573} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0.07000001} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1791287790076630285} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -0.0000000060535967, y: 1.9189999} + m_SizeDelta: {x: 1, y: 1} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3741975505824752843 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1410298629239166573} + m_CullTransparentMesh: 1 +--- !u!114 &6491069708694599127 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1410298629239166573} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Hoang + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 369c2e14814cc9a4b8e3ad4e37769134, type: 2} + m_sharedMaterial: {fileID: 2100000, guid: 13f71bf0225d0c0439db9931000d75d0, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 0.25 + m_fontSizeBase: 0.25 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_TextWrappingMode: 0 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 0 + m_ActiveFontFeatures: 6e72656b + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_EmojiFallbackSupport: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &6209053004261175930 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7933090353384311527} + - component: {fileID: 2684574450150702093} + - component: {fileID: 8928742731626340957} + m_Layer: 0 + m_Name: UIPlayer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7933090353384311527 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6209053004261175930} + serializedVersion: 2 + m_LocalRotation: {x: 0.026024496, y: 0.5726356, z: -0.0181917, w: 0.8191949} + m_LocalPosition: {x: 0, y: 1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1791287790076630285} + m_Father: {fileID: 2818130551907084697} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2684574450150702093 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6209053004261175930} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8bc4ae2a8436a6947aa8792f90495a91, type: 3} + m_Name: + m_EditorClassIdentifier: + _nameText: {fileID: 6491069708694599127} + _healthText: {fileID: 8939523771274757837} + _healthImage: {fileID: 3651088183696393374} +--- !u!114 &8928742731626340957 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6209053004261175930} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1a05efb08a5fbef42b3e8414040b6c33, type: 3} + m_Name: + m_EditorClassIdentifier: + targetCamera: {fileID: 0} + mode: 0 +--- !u!1 &7756013153683760564 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6261067400668915663} + - component: {fileID: 2872923215691076475} + - component: {fileID: 3651088183696393374} + m_Layer: 5 + m_Name: HealthUI + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6261067400668915663 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7756013153683760564} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6571891986767687373} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 1, y: 0.2} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2872923215691076475 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7756013153683760564} + m_CullTransparentMesh: 1 +--- !u!114 &3651088183696393374 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7756013153683760564} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: -637874507, guid: 9ef86922851818c4e9e58040f51c491f, type: 3} + m_Type: 3 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 0 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 diff --git a/Assets/Prefabs/Pet/PetPrefab.prefab.meta b/Assets/Prefabs/Pet/PetPrefab.prefab.meta new file mode 100644 index 0000000000..cab59aadc1 --- /dev/null +++ b/Assets/Prefabs/Pet/PetPrefab.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 604e1a73e4ffe2c4c9d911243e79bfcd +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/CECGameRun.cs b/Assets/Scripts/CECGameRun.cs index 39ad5109e9..8ea28011ba 100644 --- a/Assets/Scripts/CECGameRun.cs +++ b/Assets/Scripts/CECGameRun.cs @@ -20,6 +20,7 @@ public partial class CECGameRun private GameObject _playerPrefab; private GameObject _monsterPrefab;//CECMonster private GameObject _npcServerPrefab;//CECNPCServer + private GameObject _petServerPrefab;//CECNPCServer // CECTeamMan* m_pTeamMan; // Team manager private CECShortcutSet m_pNormalSCS; // Normal shortcut set @@ -35,7 +36,14 @@ public partial class CECGameRun protected CECUIManager m_pUIManager; // UI manager - public CECWorld GetWorld() { return m_pWorld; } + public CECWorld GetWorld() + { + if(m_pWorld == null) + { + m_pWorld = CECWorld.Instance; + } + return m_pWorld; + } // Get shortcut sets public CECShortcutSet GetGenCmdShortcuts() { return m_pNormalSCS; } public CECShortcutSet GetTeamCmdShortcuts() { return m_pTeamSCS; } @@ -76,6 +84,7 @@ public partial class CECGameRun if (!m_InstTab.ContainsKey(161)) m_InstTab.Add(161, new CECInstance()); AddressableManager.Instance.OnDispose += Dispose; + m_pWorld = CECWorld.Instance; StartGame(0, Vector3.zero); } @@ -85,6 +94,7 @@ public partial class CECGameRun AddressableManager.Instance.ReleaseAsset(AddressResourceConfig.PlayerPrefab); AddressableManager.Instance.ReleaseAsset(AddressResourceConfig.MonsterPrefab); AddressableManager.Instance.ReleaseAsset(AddressResourceConfig.NpcServerPrefab); + AddressableManager.Instance.ReleaseAsset(AddressResourceConfig.PetServerPrefab); } private async void LoadPrefabs() @@ -92,6 +102,7 @@ public partial class CECGameRun _playerPrefab = await AddressableManager.Instance.LoadPrefabAsync(AddressResourceConfig.PlayerPrefab); _monsterPrefab = await AddressableManager.Instance.LoadPrefabAsync(AddressResourceConfig.MonsterPrefab); _npcServerPrefab = await AddressableManager.Instance.LoadPrefabAsync(AddressResourceConfig.NpcServerPrefab); + _petServerPrefab = await AddressableManager.Instance.LoadPrefabAsync(AddressResourceConfig.PetServerPrefab); } private bool init; @@ -511,4 +522,10 @@ public partial class CECGameRun } return szRet; } + + public CECPet GetPet() + { + return ObjectSpawner.Instance.InstantiateObject(_petServerPrefab, setThisAsParent: true) + .GetComponent(); + } } diff --git a/Assets/Scripts/CECHostPlayer.cs b/Assets/Scripts/CECHostPlayer.cs index c8f13cc41d..e8ec3801d8 100644 --- a/Assets/Scripts/CECHostPlayer.cs +++ b/Assets/Scripts/CECHostPlayer.cs @@ -421,7 +421,7 @@ namespace BrewMonster //m_dwMoveRelDir = 0; m_fVertSpeed = 0.0f; - UpdateTimers(Time.deltaTime); + //UpdateTimers(Time.deltaTime); // Auto team / Automatic party grouping // m_pAutoTeam.Tick(Time.deltaTime); } @@ -6316,7 +6316,7 @@ namespace BrewMonster if (m_IncantCnt.IncCounter(dwDeltaTime)) m_IncantCnt.Reset(true); - m_PetOptCnt.IncCounter(dwDeltaTime); + m_PetOptCnt.IncCounter(iRealTime); // Bind command cool counter /* if (m_BindCmdCoolCnt.IncCounter(dwDeltaTime)) m_BindCmdCoolCnt.Reset(true);