void _writeCSObjectData(BinaryWriter w, CSObjectData csod) { w.Write(csod.ID); w.Write(csod.m_Name); w.Write(csod.m_Position.x); w.Write(csod.m_Position.y); w.Write(csod.m_Position.z); w.Write(csod.m_Durability); w.Write(csod.m_CurRepairTime); w.Write(csod.m_RepairTime); w.Write(csod.m_RepairValue); w.Write(csod.m_CurDeleteTime); w.Write(csod.m_DeleteTime); w.Write(csod.m_Bounds.center.x); w.Write(csod.m_Bounds.center.y); w.Write(csod.m_Bounds.center.z); w.Write(csod.m_Bounds.size.x); w.Write(csod.m_Bounds.size.y); w.Write(csod.m_Bounds.size.z); w.Write(csod.m_DeleteGetsItem.Count); foreach (KeyValuePair <int, int> kvp in csod.m_DeleteGetsItem) { w.Write(kvp.Key); w.Write(kvp.Value); } }
void Start() { // Create colony object if has Dictionary <int, CSDefaultData> objRecords = m_DataInst.GetObjectRecords(); foreach (CSDefaultData defData in objRecords.Values) { CSObjectData objData = defData as CSObjectData; if (objData != null) { if (!objData.m_Alive) { continue; } CSEntityAttr attr = new CSEntityAttr(); attr.m_InstanceId = objData.ID; attr.m_Type = objData.dType; attr.m_Pos = objData.m_Position; attr.m_protoId = objData.ItemID; CSEntity cse = null; CreateEntity(attr, out cse); } } }
void _readCSObjectData(BinaryReader r, CSObjectData csod, int version) { switch (version) { case 0x0103: { csod.ID = r.ReadInt32(); csod.m_Name = r.ReadString(); csod.m_Position = new Vector3(r.ReadSingle(), r.ReadSingle(), r.ReadSingle()); csod.m_Durability = r.ReadSingle(); csod.m_CurRepairTime = r.ReadSingle(); csod.m_RepairTime = r.ReadSingle(); csod.m_RepairValue = r.ReadSingle(); csod.m_CurDeleteTime = r.ReadSingle(); csod.m_DeleteTime = r.ReadSingle(); csod.m_Bounds = new Bounds(new Vector3(r.ReadSingle(), r.ReadSingle(), r.ReadSingle()), new Vector3(r.ReadSingle(), r.ReadSingle(), r.ReadSingle())); int cnt = r.ReadInt32(); for (int i = 0; i < cnt; i++) { csod.m_DeleteGetsItem.Add(r.ReadInt32(), r.ReadInt32()); } } break; default: { csod.ID = r.ReadInt32(); csod.m_Name = r.ReadString(); csod.m_Position = new Vector3(r.ReadSingle(), r.ReadSingle(), r.ReadSingle()); csod.m_Durability = r.ReadSingle(); csod.m_CurRepairTime = r.ReadSingle(); csod.m_RepairTime = r.ReadSingle(); csod.m_RepairValue = r.ReadSingle(); csod.m_CurDeleteTime = r.ReadSingle(); csod.m_DeleteTime = r.ReadSingle(); int cnt = r.ReadInt32(); for (int i = 0; i < cnt; i++) { csod.m_DeleteGetsItem.Add(r.ReadInt32(), r.ReadInt32()); } } break; } }
public void AddDataToCreator(ColonyNetwork colonyNetwork, int teamNum) { CSMgCreator creator; if (teamNum == BaseNetwork.MainPlayer.TeamId) { creator = CSMain.s_MgCreator; } else { creator = CSMain.Instance.MultiGetOtherCreator(teamNum) as CSMgCreator; } creator.teamNum = teamNum; CSObjectData objData = colonyNetwork._ColonyObj._RecordData as CSObjectData; if (objData != null //&& objData.ID != CSConst.etID_Farm//--to do:? ) { //if (!objData.m_Alive) // return; CSEntityAttr attr = new CSEntityAttr(); attr.m_InstanceId = objData.ID; attr.m_Type = objData.dType; attr.m_Pos = objData.m_Position; attr.m_protoId = objData.ItemID; attr.m_Bound = objData.m_Bounds; attr.m_ColonyBase = colonyNetwork._ColonyObj; CSEntity cse = creator._createEntity(attr); colonyNetwork.m_Entity = cse; if (objData.dType == CSConst.dtAssembly) { CSAssembly csa = cse as CSAssembly; csa.ChangeState(); } else { CSCommon csc = cse as CSCommon; if (creator.Assembly != null) { creator.Assembly.AttachCommonEntity(csc); } if (cse as CSDwellings != null) { cse._Net.RPCServer(EPacketType.PT_CL_DWL_SyncNpc); } foreach (CSPersonnel csp in creator.GetNpcs()) { if (csp.Data.m_WorkRoomID == attr.m_InstanceId && csp.WorkRoom != csc) { csp.WorkRoom = csc; } } } //init worker creator.ExecuteEvent(CSConst.cetAddEntity, cse); } }
// <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; } }
// Use this for initialization void Start() { if (!GameConfig.IsMultiMode) { // Create Simulator object // GameObject go = new GameObject("Simulator Mgr"); // m_SimulatorMgr = go.gameObject.AddComponent<CSSimulatorMgr>(); // m_SimulatorMgr.transform.parent = transform; // m_SimulatorMgr.Init(ID); // Create colony object if has Dictionary <int, CSDefaultData> objRecords = m_DataInst.GetObjectRecords(); foreach (CSDefaultData defData in objRecords.Values) { CSObjectData objData = defData as CSObjectData; if (objData != null && objData.ID != CSConst.etID_Farm) { if (!objData.m_Alive) { continue; } CSEntityAttr attr = new CSEntityAttr(); attr.m_InstanceId = objData.ID; attr.m_Type = objData.dType; attr.m_Pos = objData.m_Position; attr.m_protoId = objData.ItemID; attr.m_Bound = objData.m_Bounds; CSEntity cse = _createEntity(attr); if (objData.dType == CSConst.dtAssembly) { CSAssembly csa = cse as CSAssembly; csa.ChangeState(); } else { CSCommon csc = cse as CSCommon; if (m_Assembly != null) { m_Assembly.AttachCommonEntity(csc); } } // Create Simulator First // CSSimulator sim = null; // bool isNew = m_SimulatorMgr.CreateSimulator(objData.ID, out sim); // if (isNew) // { // CSSimulatorAttr cssAttr = new CSSimulatorAttr(); // cssAttr.m_Hp = cse.m_Info.m_Durability / 0.6f; // // sim.Init(cssAttr); // } // // sim.Hp = sim.MaxHp * cse.DuraPercent; // sim.Position = cse.Position; // sim.noticeHpChanged = cse.OnLifeChanged; } } //delay load colony npc StartCoroutine(InitColonyNpc()); } else { Debug.Log("<color=red>Creator start! Desc:" + gameObject.name + "</color>"); } }