void RPC_S2C_STO_Store(uLink.BitStream stream, uLink.NetworkMessageInfo info) { int index = stream.Read <int>(); int objId = stream.Read <int>(); bool suc = stream.Read <bool>(); ItemObject itemObj = ItemMgr.Instance.Get(objId); if (itemObj == null) { return; } int tabIndex = itemObj.protoData.tabIndex; int key = IndexToKey(index, tabIndex); if (suc) { //1.data CSStorageData recordData = (CSStorageData)_ColonyObj._RecordData; recordData.m_Items[key] = objId; ItemPackage m_Package = ((CSStorage)m_Entity).m_Package; int listCnt = m_Package.GetSlotList().Length; int key2 = key % listCnt; m_Package.GetSlotList(itemObj.protoId)[key2] = itemObj; } if (CSUI_MainWndCtrl.Instance.StorageUI != null && CSUI_MainWndCtrl.Instance.StorageUI.StorageMainUI != null) { CSUI_MainWndCtrl.Instance.StorageUI.StorageMainUI.CSStoreResultStore(suc, index, objId, (CSStorage)m_Entity); } }
void RPC_S2C_STO_Split(uLink.BitStream stream, uLink.NetworkMessageInfo info) { int objId = stream.Read <int>(); int destIndex = stream.Read <int> (); bool suc = stream.Read <bool>(); ItemObject itemObj = ItemMgr.Instance.Get(objId); if (itemObj == null) { return; } if (suc) { //1.data CSStorageData recordData = (CSStorageData)_ColonyObj._RecordData; int key = IndexToKey(destIndex, itemObj.protoData.tabIndex); recordData.m_Items[key] = objId; ItemPackage m_Package = ((CSStorage)m_Entity).m_Package; SlotList slotList = m_Package.GetSlotList(itemObj.protoId); slotList[destIndex] = itemObj; } //2.ui if (CSUI_MainWndCtrl.Instance.StorageUI != null && CSUI_MainWndCtrl.Instance.StorageUI.StorageMainUI != null) { CSUI_MainWndCtrl.Instance.StorageUI.StorageMainUI.CSStoreResultSplit(suc, objId, destIndex, (CSStorage)m_Entity); } }
void RPC_S2C_STO_SyncItemList(uLink.BitStream stream, uLink.NetworkMessageInfo info) { int[] indexList = stream.Read <int[]>(); int[] ids = stream.Read <int[]>(); CSStorageData recordData = (CSStorageData)_ColonyObj._RecordData; ItemPackage m_Package = ((CSStorage)m_Entity).m_Package; for (int i = 0; i < indexList.Length; i++) { int key = indexList[i]; int type; int index = KeyToIndex(key, out type); SlotList slotList = m_Package.GetSlotList((ItemAsset.ItemPackage.ESlotType)type); if (ids[i] == -1) { recordData.m_Items.Remove(key); slotList[index] = null; } else { ItemObject ioject = ItemMgr.Instance.Get(ids[i]); if (ioject != null) { recordData.m_Items[key] = ids[i]; slotList[index] = ioject; } } } //2.ui if (CSUI_MainWndCtrl.Instance.StorageUI != null && CSUI_MainWndCtrl.Instance.StorageUI.StorageMainUI != null) { CSUI_MainWndCtrl.Instance.StorageUI.StorageMainUI.CSStorageResultSyncItemList((CSStorage)m_Entity); } }
void RPC_S2C_STO_Exchange(uLink.BitStream stream, uLink.NetworkMessageInfo info) { int objId = stream.Read <int>(); int destIndex = stream.Read <int> (); int destId = stream.Read <int> (); int originIndex = stream.Read <int> (); bool suc = stream.Read <bool> (); ItemObject originObj = ItemMgr.Instance.Get(objId); if (originObj == null) { return; } ItemObject destObj; if (destId == -1) { destObj = null; } else { destObj = ItemMgr.Instance.Get(destId); if (destObj == null) { return; } } int type = originObj.protoData.tabIndex; int destKey = IndexToKey(destIndex, type); int originKey = IndexToKey(originIndex, type); if (suc) { //1.data CSStorageData recordData = (CSStorageData)_ColonyObj._RecordData; recordData.m_Items[destKey] = objId; ItemPackage m_Package = ((CSStorage)m_Entity).m_Package; SlotList slotList = m_Package.GetSlotList((ItemAsset.ItemPackage.ESlotType)type); slotList.Swap(originIndex, destIndex); if (destObj != null) { recordData.m_Items[originKey] = destId; } else { recordData.m_Items.Remove(originKey); } } //2.ui if (CSUI_MainWndCtrl.Instance.StorageUI != null && CSUI_MainWndCtrl.Instance.StorageUI.StorageMainUI != null) { CSUI_MainWndCtrl.Instance.StorageUI.StorageMainUI.CSStoreResultExchange(suc, objId, destIndex, destId, originIndex, (CSStorage)m_Entity); } }
void RPC_S2C_InitDataStorage(uLink.BitStream stream, uLink.NetworkMessageInfo info) { CSStorageData recordData = (CSStorageData)_ColonyObj._RecordData; recordData.m_CurDeleteTime = stream.Read <float>(); recordData.m_CurRepairTime = stream.Read <float> (); recordData.m_DeleteTime = stream.Read <float> (); recordData.m_Durability = stream.Read <float> (); recordData.m_RepairTime = stream.Read <float> (); recordData.m_RepairValue = stream.Read <float> (); int[] keys = stream.Read <int[]> (); int[] values = stream.Read <int[]> (); for (int i = 0; i < keys.Length; i++) { recordData.m_Items[keys[i]] = values[i]; } }
void RPC_S2C_STO_Delete(uLink.BitStream stream, uLink.NetworkMessageInfo info) { int objId = stream.Read <int>(); bool suc = stream.Read <bool>(); ItemObject itemObj = ItemMgr.Instance.Get(objId); if (itemObj == null) { return; } int index = -1; if (suc) { //1.data CSStorageData recordData = (CSStorageData)_ColonyObj._RecordData; foreach (KeyValuePair <int, int> kvp in recordData.m_Items) { if (kvp.Value == objId) { recordData.m_Items.Remove(kvp.Key); ItemPackage m_Package = ((CSStorage)m_Entity).m_Package; int listCnt = m_Package.GetSlotList().Length; index = kvp.Key % listCnt; m_Package.GetSlotList(itemObj.protoId)[index] = null; break; } } } if (m_Entity == null) { Debug.LogError("entity not ready"); return; } //2.ui if (CSUI_MainWndCtrl.Instance.StorageUI != null && CSUI_MainWndCtrl.Instance.StorageUI.StorageMainUI != null) { CSUI_MainWndCtrl.Instance.StorageUI.StorageMainUI.CSStoreResultDelete(suc, index, objId, (CSStorage)m_Entity); } if (suc) { ItemMgr.Instance.DestroyItem(itemObj.instanceId); } }
void RPC_S2C_STO_Sort(uLink.BitStream stream, uLink.NetworkMessageInfo info) { bool suc = stream.Read <bool>(); if (suc) { int tabIndex = stream.Read <int>(); int [] ids = stream.Read <int[]> (); //1.data CSStorageData recordData = (CSStorageData)_ColonyObj._RecordData; int keyStart = IndexToKey(0, tabIndex); ItemPackage m_Package = ((CSStorage)m_Entity).m_Package; SlotList slotList = m_Package.GetSlotList((ItemAsset.ItemPackage.ESlotType)tabIndex); int listCnt = slotList.Length; for (int i = 0; i < ids.Length; i++) { int key = keyStart + i; int index = key % listCnt; if (ids[i] == -1) { recordData.m_Items.Remove(key); slotList[index] = null; } else { recordData.m_Items[key] = ids[i]; ItemObject ioject = ItemMgr.Instance.Get(ids[i]); if (ioject != null) { slotList[index] = ioject; } } } //2.ui if (CSUI_MainWndCtrl.Instance.StorageUI != null && CSUI_MainWndCtrl.Instance.StorageUI.StorageMainUI != null) { CSUI_MainWndCtrl.Instance.StorageUI.StorageMainUI.CSStoreSortSuccess(tabIndex, ids, (CSStorage)m_Entity); } } }
void RPC_S2C_STO_FetchItem(uLink.BitStream stream, uLink.NetworkMessageInfo info) { int objId = stream.Read <int>(); bool suc = stream.Read <bool>(); ItemObject itemObj = ItemMgr.Instance.Get(objId); if (itemObj == null) { return; } if (suc) { //1.data CSStorageData recordData = (CSStorageData)_ColonyObj._RecordData; foreach (var kvp in recordData.m_Items) { if (kvp.Value == objId) { recordData.m_Items.Remove(kvp.Key); ItemPackage m_Package = ((CSStorage)m_Entity).m_Package; //int listCnt = m_Package.GetItemList(0).Count; //index = kvp.Key % listCnt; //m_Package.GetItemList(itemObj.mItemData.mTabIndex)[index] = null; m_Package.RemoveItem(itemObj); break; } } } //2.ui if (CSUI_MainWndCtrl.Instance.StorageUI != null && CSUI_MainWndCtrl.Instance.StorageUI.StorageMainUI != null) { CSUI_MainWndCtrl.Instance.StorageUI.StorageMainUI.CSStoreResultFetch(suc, objId, (CSStorage)m_Entity); } }
public bool AssignData(int id, int type, ref CSDefaultData refData, ColonyBase _colony) { if (_colony != null && _colony._RecordData != null) { refData = _colony._RecordData; return(false); } else { switch (type) { case CSConst.dtAssembly: refData = new CSAssemblyData(); break; case CSConst.dtStorage: refData = new CSStorageData(); break; case CSConst.dtEngineer: refData = new CSEngineerData(); break; case CSConst.dtEnhance: refData = new CSEnhanceData(); break; case CSConst.dtRepair: refData = new CSRepairData(); break; case CSConst.dtRecyle: refData = new CSRecycleData(); break; case CSConst.dtppCoal: refData = new CSPPCoalData(); break; case CSConst.dtppSolar: refData = new CSPPSolarData(); break; case CSConst.dtDwelling: refData = new CSDwellingsData(); break; case CSConst.dtFarm: refData = new CSFarmData(); break; case CSConst.dtFactory: refData = new CSFactoryData(); break; case CSConst.dtProcessing: refData = new CSProcessingData(); break; case CSConst.dtTrade: refData = new CSTradeData(); break; case CSConst.dtTrain: refData = new CSTrainData(); break; case CSConst.dtCheck: refData = new CSCheckData(); break; case CSConst.dtTreat: refData = new CSTreatData(); break; case CSConst.dtTent: refData = new CSTentData(); break; case CSConst.dtppFusion: refData = new CSPPFusionData(); break; default: refData = new CSDefaultData(); break; } refData.ID = id; return(true); } }
// <CETC> export type Data public byte[] Export() { MemoryStream ms = new MemoryStream(); BinaryWriter w = new BinaryWriter(ms); w.Write(VERSION); w.Write(m_ObjectDatas.Count); foreach (KeyValuePair <int, CSObjectData> kvp in m_ObjectDatas) { //w.Write((byte)kvp.Key); w.Write(kvp.Value.dType); switch (kvp.Value.dType) { case CSConst.dtAssembly: { CSAssemblyData cssa = kvp.Value as CSAssemblyData; _writeCSObjectData(w, cssa); w.Write(cssa.m_Level); w.Write(cssa.m_UpgradeTime); w.Write(cssa.m_CurUpgradeTime); } break; case CSConst.dtppCoal: { CSPPCoalData csppc = kvp.Value as CSPPCoalData; _writeCSObjectData(w, csppc); w.Write(csppc.m_ChargingItems.Count); foreach (KeyValuePair <int, int> kvp2 in csppc.m_ChargingItems) { w.Write(kvp2.Key); w.Write(kvp2.Value); } w.Write(csppc.m_CurWorkedTime); w.Write(csppc.m_WorkedTime); } break; case CSConst.dtStorage: { CSStorageData cssd = kvp.Value as CSStorageData; _writeCSObjectData(w, cssd); w.Write(cssd.m_Items.Count); foreach (KeyValuePair <int, int> kvp2 in cssd.m_Items) { w.Write(kvp2.Key); w.Write(kvp2.Value); } } break; case CSConst.dtEngineer: { CSEngineerData csed = kvp.Value as CSEngineerData; _writeCSObjectData(w, csed); w.Write(csed.m_EnhanceItemID); w.Write(csed.m_CurEnhanceTime); w.Write(csed.m_EnhanceTime); w.Write(csed.m_PatchItemID); w.Write(csed.m_CurPatchTime); w.Write(csed.m_PatchTime); w.Write(csed.m_RecycleItemID); w.Write(csed.m_CurRecycleTime); w.Write(csed.m_RecycleTime); } break; case CSConst.dtEnhance: { CSEnhanceData csed = kvp.Value as CSEnhanceData; _writeCSObjectData(w, csed); w.Write(csed.m_ObjID); w.Write(csed.m_CurTime); w.Write(csed.m_Time); } break; case CSConst.dtRepair: { CSRepairData csrd = kvp.Value as CSRepairData; _writeCSObjectData(w, csrd); w.Write(csrd.m_ObjID); w.Write(csrd.m_CurTime); w.Write(csrd.m_Time); } break; case CSConst.dtRecyle: { CSRecycleData csrd = kvp.Value as CSRecycleData; _writeCSObjectData(w, csrd); w.Write(csrd.m_ObjID); w.Write(csrd.m_CurTime); w.Write(csrd.m_Time); } break; case CSConst.dtDwelling: { CSDwellingsData csdw = kvp.Value as CSDwellingsData; _writeCSObjectData(w, csdw); } break; default: break; } } w.Write(m_PersonnelDatas.Count); foreach (KeyValuePair <int, CSPersonnelData> kvp in m_PersonnelDatas) { w.Write(kvp.Value.ID); w.Write(kvp.Value.dType); w.Write(kvp.Value.m_State); w.Write(kvp.Value.m_DwellingsID); w.Write(kvp.Value.m_WorkRoomID); } w.Close(); byte [] retval = ms.ToArray(); return(retval); }
// <CETC> Assign Record Data public bool AssignData(int id, int type, ref CSDefaultData refData) { // Personnel if (type == CSConst.dtPersonnel) { if (m_PersonnelDatas.ContainsKey(id)) { Debug.Log("The Personnel Data ID [" + id.ToString() + "] is exist."); refData = m_PersonnelDatas[id]; return(false); } else { refData = new CSPersonnelData(); refData.ID = id; m_PersonnelDatas.Add(id, refData as CSPersonnelData); return(true); } } // Object else { if (m_ObjectDatas.ContainsKey(id)) { Debug.Log("The Object data ID [" + id.ToString() + "] is exist."); refData = m_ObjectDatas[id]; return(false); } else { switch (type) { case CSConst.dtAssembly: refData = new CSAssemblyData(); break; case CSConst.dtStorage: refData = new CSStorageData(); break; case CSConst.dtEngineer: refData = new CSEngineerData(); break; case CSConst.dtEnhance: refData = new CSEnhanceData(); break; case CSConst.dtRepair: refData = new CSRepairData(); break; case CSConst.dtRecyle: refData = new CSRecycleData(); break; case CSConst.dtppCoal: refData = new CSPPCoalData(); break; case CSConst.dtDwelling: refData = new CSDwellingsData(); break; case CSConst.dtFactory: refData = new CSFactoryData(); break; case CSConst.dtProcessing: refData = new CSProcessingData(); break; default: //refData = new CSDefaultData(); refData = new CSObjectData(); break; } refData.ID = id; m_ObjectDatas.Add(id, refData as CSObjectData); return(true); } } }
// <CETC> Import type Data public void Import(byte[] buffer) { if (buffer == null) { return; } if (buffer.Length < 8) { return; } MemoryStream ms = new MemoryStream(buffer); BinaryReader r = new BinaryReader(ms); int version = r.ReadInt32(); if (VERSION != version) { Debug.LogWarning("The version of ColonyrecordMgr is newer than the record."); } switch (version) { #region Version_0x0101 case 0x0101: { int rcnt = r.ReadInt32(); for (int i = 0; i < rcnt; i++) { CSObjectData csdd = null; int type = r.ReadInt32(); switch (type) { case CSConst.dtAssembly: { csdd = new CSAssemblyData(); CSAssemblyData cssa = csdd as CSAssemblyData; _readCSObjectData(r, cssa, version); cssa.m_Level = r.ReadInt32(); cssa.m_UpgradeTime = r.ReadSingle(); cssa.m_CurUpgradeTime = r.ReadSingle(); } break; case CSConst.dtppCoal: { csdd = new CSPPCoalData(); CSPPCoalData csppc = csdd as CSPPCoalData; _readCSObjectData(r, csppc, version); csppc.m_CurWorkedTime = r.ReadSingle(); csppc.m_WorkedTime = r.ReadSingle(); } break; case CSConst.dtStorage: { csdd = new CSStorageData(); CSStorageData cssd = csdd as CSStorageData; _readCSObjectData(r, cssd, version); int itemCnt = r.ReadInt32(); for (int j = 0; j < itemCnt; j++) { cssd.m_Items.Add(r.ReadInt32(), r.ReadInt32()); } } break; case CSConst.dtEngineer: { csdd = new CSEngineerData(); CSEngineerData csed = csdd as CSEngineerData; _readCSObjectData(r, csed, version); csed.m_EnhanceItemID = r.ReadInt32(); csed.m_CurEnhanceTime = r.ReadSingle(); csed.m_EnhanceTime = r.ReadSingle(); csed.m_PatchItemID = r.ReadInt32(); csed.m_CurPatchTime = r.ReadSingle(); csed.m_PatchTime = r.ReadSingle(); csed.m_RecycleItemID = r.ReadInt32(); csed.m_CurRecycleTime = r.ReadSingle(); csed.m_RecycleTime = r.ReadSingle(); } break; case CSConst.dtEnhance: { csdd = new CSEnhanceData(); CSEnhanceData cseh = csdd as CSEnhanceData; _readCSObjectData(r, cseh, version); cseh.m_ObjID = r.ReadInt32(); cseh.m_CurTime = r.ReadSingle(); cseh.m_Time = r.ReadSingle(); } break; case CSConst.dtRepair: { csdd = new CSRepairData(); CSRepairData csrd = csdd as CSRepairData; _readCSObjectData(r, csrd, version); csrd.m_ObjID = r.ReadInt32(); csrd.m_CurTime = r.ReadSingle(); csrd.m_Time = r.ReadSingle(); } break; case CSConst.dtRecyle: { csdd = new CSRecycleData(); CSRecycleData csrd = csdd as CSRecycleData; _readCSObjectData(r, csrd, version); csrd.m_ObjID = r.ReadInt32(); csrd.m_CurTime = r.ReadSingle(); csrd.m_Time = r.ReadSingle(); } break; case CSConst.dtDwelling: { csdd = new CSDwellingsData(); CSDwellingsData csdw = csdd as CSDwellingsData; _readCSObjectData(r, csdw, version); } break; default: csdd = new CSObjectData(); break; } m_ObjectDatas.Add(csdd.ID, csdd); } rcnt = r.ReadInt32(); for (int i = 0; i < rcnt; i++) { CSPersonnelData cspd = new CSPersonnelData(); cspd.ID = r.ReadInt32(); cspd.dType = r.ReadInt32(); cspd.m_State = r.ReadInt32(); cspd.m_DwellingsID = r.ReadInt32(); cspd.m_WorkRoomID = r.ReadInt32(); m_PersonnelDatas.Add(cspd.ID, cspd); } } break; #endregion case 0x0102: case 0x0103: { int rcnt = r.ReadInt32(); for (int i = 0; i < rcnt; i++) { CSObjectData csdd = null; int type = r.ReadInt32(); switch (type) { case CSConst.dtAssembly: { csdd = new CSAssemblyData(); CSAssemblyData cssa = csdd as CSAssemblyData; _readCSObjectData(r, cssa, version); cssa.m_Level = r.ReadInt32(); cssa.m_UpgradeTime = r.ReadSingle(); cssa.m_CurUpgradeTime = r.ReadSingle(); } break; case CSConst.dtppCoal: { csdd = new CSPPCoalData(); CSPPCoalData csppc = csdd as CSPPCoalData; _readCSObjectData(r, csppc, version); int cnt = r.ReadInt32(); for (int j = 0; j < cnt; j++) { csppc.m_ChargingItems.Add(r.ReadInt32(), r.ReadInt32()); } csppc.m_CurWorkedTime = r.ReadSingle(); csppc.m_WorkedTime = r.ReadSingle(); } break; case CSConst.dtStorage: { csdd = new CSStorageData(); CSStorageData cssd = csdd as CSStorageData; _readCSObjectData(r, cssd, version); int itemCnt = r.ReadInt32(); for (int j = 0; j < itemCnt; j++) { cssd.m_Items.Add(r.ReadInt32(), r.ReadInt32()); } } break; case CSConst.dtEngineer: { csdd = new CSEngineerData(); CSEngineerData csed = csdd as CSEngineerData; _readCSObjectData(r, csed, version); csed.m_EnhanceItemID = r.ReadInt32(); csed.m_CurEnhanceTime = r.ReadSingle(); csed.m_EnhanceTime = r.ReadSingle(); csed.m_PatchItemID = r.ReadInt32(); csed.m_CurPatchTime = r.ReadSingle(); csed.m_PatchTime = r.ReadSingle(); csed.m_RecycleItemID = r.ReadInt32(); csed.m_CurRecycleTime = r.ReadSingle(); csed.m_RecycleTime = r.ReadSingle(); } break; case CSConst.dtEnhance: { csdd = new CSEnhanceData(); CSEnhanceData cseh = csdd as CSEnhanceData; _readCSObjectData(r, cseh, version); cseh.m_ObjID = r.ReadInt32(); cseh.m_CurTime = r.ReadSingle(); cseh.m_Time = r.ReadSingle(); } break; case CSConst.dtRepair: { csdd = new CSRepairData(); CSRepairData csrd = csdd as CSRepairData; _readCSObjectData(r, csrd, version); csrd.m_ObjID = r.ReadInt32(); csrd.m_CurTime = r.ReadSingle(); csrd.m_Time = r.ReadSingle(); } break; case CSConst.dtRecyle: { csdd = new CSRecycleData(); CSRecycleData csrd = csdd as CSRecycleData; _readCSObjectData(r, csrd, version); csrd.m_ObjID = r.ReadInt32(); csrd.m_CurTime = r.ReadSingle(); csrd.m_Time = r.ReadSingle(); } break; case CSConst.dtDwelling: { csdd = new CSDwellingsData(); CSDwellingsData csdw = csdd as CSDwellingsData; _readCSObjectData(r, csdw, version); } break; default: csdd = new CSObjectData(); break; } m_ObjectDatas.Add(csdd.ID, csdd); } rcnt = r.ReadInt32(); for (int i = 0; i < rcnt; i++) { CSPersonnelData cspd = new CSPersonnelData(); cspd.ID = r.ReadInt32(); cspd.dType = r.ReadInt32(); cspd.m_State = r.ReadInt32(); cspd.m_DwellingsID = r.ReadInt32(); cspd.m_WorkRoomID = r.ReadInt32(); m_PersonnelDatas.Add(cspd.ID, cspd); } } break; default: break; } }
//CSStorageData _MyData; public ColonyStorage(ColonyNetwork network) { SetNetwork(network); _RecordData = new CSStorageData(); //_MyData = (CSStorageData)_RecordData; }