diff --git a/Assets/NetworkLib/Debug/netstandard2.1/CSNetwork.dll b/Assets/NetworkLib/Debug/netstandard2.1/CSNetwork.dll index 368d4eb1fc..76a213816f 100644 Binary files a/Assets/NetworkLib/Debug/netstandard2.1/CSNetwork.dll and b/Assets/NetworkLib/Debug/netstandard2.1/CSNetwork.dll differ diff --git a/Assets/PerfectWorld/Scripts/UI/Login/LoginScreenUI.cs b/Assets/PerfectWorld/Scripts/UI/Login/LoginScreenUI.cs index f2dc05e6cb..4a69921a20 100644 --- a/Assets/PerfectWorld/Scripts/UI/Login/LoginScreenUI.cs +++ b/Assets/PerfectWorld/Scripts/UI/Login/LoginScreenUI.cs @@ -134,6 +134,7 @@ namespace BrewMonster.UI // Request all known packages: 0=Inventory,1=Equipment,2=Task UnityGameSession.RequestAllInventoriesAsync(() => { Logger.Log("Sent Inventory Detail Requests (all packs)"); }, 0, 1, 2); UnityGameSession.c2s_CmdGetAllData(true, true, false); + EC_Game.Init(); } //private void OnInventoryReceived(List inventoryData) diff --git a/Assets/Scripts/MainFiles.meta b/Assets/Scripts/MainFiles.meta new file mode 100644 index 0000000000..2a3c3bc448 --- /dev/null +++ b/Assets/Scripts/MainFiles.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7c78d146782232847ac2e4a6cec64dbf +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/MainFiles/EC_Game.cs b/Assets/Scripts/MainFiles/EC_Game.cs new file mode 100644 index 0000000000..615f715b06 --- /dev/null +++ b/Assets/Scripts/MainFiles/EC_Game.cs @@ -0,0 +1,36 @@ +using ModelRenderer.Scripts.GameData; +using PerfectWorld.Scripts.Task; +using UnityEngine; +namespace BrewMonster.Network +{ + public static class EC_Game + { + #region Fields + private static ATaskTemplMan m_pTaskMan; // Task template manager + private static elementdataman m_pElementDataMan; // global element templates manager + #endregion + + #region Properties + public static ATaskTemplMan GetTaskTemplateMan() { return m_pTaskMan; } + public static elementdataman GetElementDataMan() { return m_pElementDataMan; } + #endregion + + #region Public Methods + public static bool Init() + { + m_pElementDataMan = elementdataman.Instance; + + // Load task templates + if (m_pTaskMan == null) m_pTaskMan = new ATaskTemplMan(); + + m_pTaskMan.Init(m_pElementDataMan); + if (!m_pTaskMan.InitStorageTask()) + { + Debug.LogError("[Dat]- CECGame::Init, Storage task Init Failed!"); + return false; + } + return true; + } + #endregion + } +} \ No newline at end of file diff --git a/Assets/Scripts/MainFiles/EC_Game.cs.meta b/Assets/Scripts/MainFiles/EC_Game.cs.meta new file mode 100644 index 0000000000..731734f727 --- /dev/null +++ b/Assets/Scripts/MainFiles/EC_Game.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: e9b6b5b70c94a5c4e9dbaa1b2e1c323c \ No newline at end of file diff --git a/Assets/Scripts/Task/ATaskTemplMan.cs b/Assets/Scripts/Task/ATaskTemplMan.cs index 363c3d3fa1..01d6b8c6be 100644 --- a/Assets/Scripts/Task/ATaskTemplMan.cs +++ b/Assets/Scripts/Task/ATaskTemplMan.cs @@ -1,3 +1,4 @@ +using BrewMonster; using ModelRenderer.Scripts.GameData; using System.Collections.Generic; using System.IO; @@ -28,6 +29,10 @@ namespace PerfectWorld.Scripts.Task private Dictionary m_DeathTrigMap = new Dictionary(); private Dictionary m_PQTemplMap = new Dictionary(); + private Dictionary m_StorageEssenseMap = new Dictionary(); + private Dictionary m_WeightEssenseMap = new Dictionary(); + private Dictionary m_StorageTaskMap = new Dictionary(); + private List m_SkillTaskLst = new List(); private List m_TmLmtChkLst = new List(); @@ -177,10 +182,10 @@ namespace PerfectWorld.Scripts.Task if (pTask.m_bAutoDeliver && pTask.m_bDisplayInExclusiveUI) m_ExlusiveAwardTaskMap[pTask.m_ID] = pTask; -//#if _TASK_CLIENT -// if (pTask.m_ulDelvNPC != 0 && pTask.m_bCanSeekOut) -// m_TasksCanSeekOut.Add(pTask); -//#endif + //#if _TASK_CLIENT + // if (pTask.m_ulDelvNPC != 0 && pTask.m_bCanSeekOut) + // m_TasksCanSeekOut.Add(pTask); + //#endif AddTaskToMap(pTask); } @@ -213,5 +218,59 @@ namespace PerfectWorld.Scripts.Task } } + + public bool InitStorageTask() + { + m_StorageEssenseMap.Clear(); + m_WeightEssenseMap.Clear(); + + DATA_TYPE dt; + + //ID_SPACE.ID_SPACE_ESSENCE + foreach (var pair in m_pEleDataMan.essence_id_data_type_map) + { + if (pair.Value == DATA_TYPE.DT_NPC_TASK_OUT_SERVICE) + { + dt = pair.Value; + NPC_TASK_OUT_SERVICE pData = (NPC_TASK_OUT_SERVICE)m_pEleDataMan.get_data_ptr(pair.Key, ID_SPACE.ID_SPACE_ESSENCE, ref dt); + + if (pData.storage_id == 0) continue; + + if (pData.storage_id > CECTaskInterface.TASK_STORAGE_COUNT) return false; + if (m_StorageEssenseMap.ContainsKey(pData.storage_id)) return false; + m_StorageEssenseMap[pData.storage_id] = pData.id; + for (var i = 0; i < pData.id_tasks.Length; i++) + { + if (pData.id_tasks[i] > 0) + { + m_StorageTaskMap[(int)pData.id_tasks[i]] = (int)pData.storage_id; + } + } + } + } + // ID_SPACE_CONFIG + foreach (var pair in m_pEleDataMan.config_id_data_type_map) + { + if (pair.Value == DATA_TYPE.DT_NPC_TASK_OUT_SERVICE) + { + dt = pair.Value; + NPC_TASK_OUT_SERVICE pData = (NPC_TASK_OUT_SERVICE)m_pEleDataMan.get_data_ptr(pair.Key, ID_SPACE.ID_SPACE_ESSENCE, ref dt); + + if (pData.storage_id == 0) continue; + + if (pData.storage_id > CECTaskInterface.TASK_STORAGE_COUNT) return false; + if (m_StorageEssenseMap.ContainsKey(pData.storage_id)) return false; + m_StorageEssenseMap[pData.storage_id] = pData.id; + for (var i = 0; i < pData.id_tasks.Length; i++) + { + if (pData.id_tasks[i] > 0) + { + m_StorageTaskMap[(int)pData.id_tasks[i]] = (int)pData.storage_id; + } + } + } + } + return true; + } } } \ No newline at end of file diff --git a/Assets/Scripts/Task/CECTaskInterface.cs b/Assets/Scripts/Task/CECTaskInterface.cs index 007a4d195a..a5d4282174 100644 --- a/Assets/Scripts/Task/CECTaskInterface.cs +++ b/Assets/Scripts/Task/CECTaskInterface.cs @@ -1,9 +1,16 @@ +using BrewMonster.Network; using System.Collections.Generic; +using UnityEngine; namespace PerfectWorld.Scripts.Task { public class CECTaskInterface : TaskInterface { + public const int TASK_MAX_DELIVER_COUNT = 5; + public const int TASK_STORAGE_COUNT = 32; + public const int TASK_STORAGE_LEN = 10; + public const float TASK_STORAGE_WHELL_SCALE = 10000; + CECHostPlayer m_pHost; object[] m_pActiveListBuf; // Active task list buffer object[] m_pFinishedListBuf; // Finished task list buffer @@ -92,11 +99,17 @@ namespace PerfectWorld.Scripts.Task //if (iStorageTaskListLen < TASK_STORAGE_LIST_BUF_SIZE) // memset((BYTE*)m_pStorageTaskListBuf + iStorageTaskListLen, 0, TASK_STORAGE_LIST_BUF_SIZE - iStorageTaskListLen); - //ATaskTemplMan pTaskMan = GetTaskTemplMan(); - //pTaskMan.Release(); - //pTaskMan.LoadTasksFromPack("data\\tasks.data", true); - //pTaskMan.LoadNPCInfoFromPack("data\\task_npc.data"); - //pTaskMan.VerifyDynTasksPack("userdata\\dyn_tasks.data"); + //Debug.LogError("[Dat]- ") + ATaskTemplMan pTaskMan = GetTaskTemplMan(); + if (pTaskMan == null) + { + Debug.LogError("[Dat]- fail to create ATaskTemplMan"); + return false; + } + pTaskMan.Release(); + pTaskMan.LoadTasksFromPack("data\\tasks.data", true); + pTaskMan.LoadNPCInfoFromPack("data\\task_npc.data"); + pTaskMan.VerifyDynTasksPack("userdata\\dyn_tasks.data"); //InitActiveTaskList(); //m_bForceNavigateFinish = false; @@ -111,8 +124,7 @@ namespace PerfectWorld.Scripts.Task private ATaskTemplMan GetTaskTemplMan() { - //return g_pGame->GetTaskTemplateMan(); - return null; + return EC_Game.GetTaskTemplateMan(); } } }