Esempio n. 1
0
    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;
    }
Esempio n. 2
0
    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);
    }