public void ImportCombatHandlerData(CombatManagerData cmd) { foreach (GameObject h in allCombatHandlers) { Destroy(h); } allCombatHandlers.Clear(); foreach (CombatHandlerData chd in cmd.chd) { GameObject cHandler = Instantiate(combatHandler); CombatHandler ch = cHandler.GetComponent <CombatHandler>(); ch.wasLoaded = true; cHandler.transform.position = new Vector3(chd.posX, chd.posY, 0); ch.charactersInCombat = new List <GameObject>(); ch.currentCharactersTurn = new List <GameObject>(); foreach (uint i in chd.currentCharactersTurn) { ch.currentCharactersTurn.Add(NPCManagerScript.ins.GetNPCInSceneFromID(i)); } foreach (uint i in chd.charactersInCombat) { GameObject npc = NPCManagerScript.ins.GetNPCInSceneFromID(i); foreach (CharInfoInCombat info in chd.charactersInfoInCombat) { if (info.ID == i) { CombatScript cs = npc.GetComponent <CombatScript>(); npc.GetComponent <CombatScript>().isReady = info.isReady; npc.GetComponent <CombatScript>().endTurn = info.endTurn; if (cs.turnCoroutine != null) { cs.StopTurnCoroutine(); } if (!ch.currentCharactersTurn.Contains(npc)) { npc.GetComponent <CombatScript>().StartWaiting(info.turnTimeOffset); } break; } } ch.charactersInCombat.Add(npc); } ch.charactersChecked = new List <GameObject>(); foreach (uint i in chd.charactersChecked) { ch.charactersChecked.Add(NPCManagerScript.ins.GetNPCInSceneFromID(i)); } ch.charactersToCheck = new List <GameObject>(); foreach (uint i in chd.charactersToCheck) { ch.charactersToCheck.Add(NPCManagerScript.ins.GetNPCInSceneFromID(i)); } ch.charactersRemovedFromCombat = new List <GameObject>(); foreach (uint i in chd.charactersRemovedFromCombat) { ch.charactersRemovedFromCombat.Add(NPCManagerScript.ins.GetNPCInSceneFromID(i)); } if (ch.charactersInCombat.Contains(GameManagerScript.ins.player)) { playerCombatHandler = cHandler; } allCombatHandlers.Add(cHandler); } ImportPlayerCombatData(cmd.pcd); Time.timeScale = cmd.timeScale; }
public CombatManagerData ExportCombatHandlerData() { CombatManagerData cmd = new CombatManagerData() { chd = new List <CombatHandlerData>() }; cmd.pcd = ExportPlayerCombatData(); foreach (GameObject handler in allCombatHandlers) { CombatHandlerData handlerData = new CombatHandlerData(); CombatHandler ch = handler.GetComponent <CombatHandler>(); handlerData.posX = handler.transform.position.x; handlerData.posY = handler.transform.position.y; handlerData.charactersInCombat = new List <uint>(); handlerData.charactersInfoInCombat = new List <CharInfoInCombat>(); foreach (GameObject c in ch.charactersInCombat) { CharInfoInCombat charInfo = new CharInfoInCombat(); handlerData.charactersInCombat.Add(c.GetComponent <CharacterInfo>().id); charInfo.ID = c.GetComponent <CharacterInfo>().id; charInfo.isReady = c.GetComponent <CombatScript>().isReady; charInfo.endTurn = c.GetComponent <CombatScript>().endTurn; float a = Time.time - c.GetComponent <CombatScript>().turnTimerStart; if (a >= 0) { charInfo.turnTimeOffset = a; } else { charInfo.turnTimeOffset = 0; } handlerData.charactersInfoInCombat.Add(charInfo); } handlerData.currentCharactersTurn = new List <uint>(); foreach (GameObject c in ch.currentCharactersTurn) { handlerData.currentCharactersTurn.Add(c.GetComponent <CharacterInfo>().id); } handlerData.charactersChecked = new List <uint>(); foreach (GameObject c in ch.charactersChecked) { handlerData.charactersChecked.Add(c.GetComponent <CharacterInfo>().id); } handlerData.charactersToCheck = new List <uint>(); foreach (GameObject c in ch.charactersToCheck) { handlerData.charactersToCheck.Add(c.GetComponent <CharacterInfo>().id); } handlerData.charactersRemovedFromCombat = new List <uint>(); foreach (GameObject c in ch.charactersRemovedFromCombat) { handlerData.charactersRemovedFromCombat.Add(c.GetComponent <CharacterInfo>().id); } cmd.chd.Add(handlerData); } cmd.timeScale = Time.timeScale; return(cmd); }