예제 #1
0
    void SetKingOver(int kIdx)
    {
        for (int g = 0; g < Informations.Instance.generalNum; g++)
        {
            GeneralInfo gInfo = Informations.Instance.GetGeneralInfo(g);

            if (gInfo.king == kIdx)
            {
                gInfo.king = Informations.Instance.kingNum;
            }
        }

        for (int c = 0; c < Informations.Instance.cityNum; c++)
        {
            CityInfo cInfo = Informations.Instance.GetCityInfo(c);

            if (cInfo.king == kIdx)
            {
                cInfo.king = Informations.Instance.kingNum;
                cityFlagsCtrl.SetFlag(c);
            }
        }

        for (int i = 0; i < Informations.Instance.armys.Count; i++)
        {
            ArmyInfo ai = Informations.Instance.armys[i];

            if (ai.king == kIdx)
            {
                ai.king = Informations.Instance.kingNum;
                ai.armyCtrl.SetArmyKingFlag();
            }
        }

        KingInfo kInfo = Informations.Instance.GetKingInfo(kIdx);

        kInfo.generals.Clear();
        kInfo.cities.Clear();
        kInfo.active = 0;
    }
예제 #2
0
    void SetArmy()
    {
        Vector3 pos = path.GetCityPos(cityIdx);

        GameObject go = (GameObject)Instantiate(armyPrefab, pos, transform.rotation);

        armyCtrl = go.GetComponent <ArmyController>();

        ArmyInfo armyInfo = new ArmyInfo();

        armyInfo.king     = cInfo.king;
        armyInfo.cityFrom = cityIdx;
        armyInfo.cityTo   = -1;
        armyInfo.money    = moneyTook;
        armyInfo.armyCtrl = armyCtrl;

        armyCtrl.armyInfo = armyInfo;
        Informations.Instance.armys.Add(armyInfo);

        GameObject root = GameObject.Find("ArmiesRoot");

        go.transform.parent = root.transform;

        armyCtrl.SetArmyKingFlag();
        armyCtrl.Pause();

        for (int i = cInfo.generals.Count - 1; i >= 0; i--)
        {
            if (generalsList[i].GetButtonState() == PushedButton.ButtonState.Pressed)
            {
                int gIdx = (int)generalsList[i].GetButtonData();

                armyInfo.generals.Add(gIdx);
                cInfo.generals.Remove(gIdx);

                Informations.Instance.GetGeneralInfo(gIdx).city = -1;

                if (selectedCount == 1)
                {
                    armyInfo.commander = gIdx;
                }
            }
        }

        if (cInfo.generals.Count == 1)
        {
            cInfo.prefect = cInfo.generals[0];
        }
        else if (cInfo.generals.Count == 0)
        {
            Informations.Instance.GetKingInfo(cInfo.king).cities.Remove(cityIdx);
            cInfo.king = -1;
            flagsCtrl.SetFlag(cityIdx);
        }

        if (isSelectedPrefect)
        {
            armyInfo.commander = prefectBK;
        }
        else
        {
            if (state == 4)
            {
                armyInfo.commander = selectCommander.GetCommander();
            }
        }

        if (takePrisonFlag)
        {
            takePrisonFlag = false;

            armyInfo.prisons.AddRange(cInfo.prisons);
            cInfo.prisons.Clear();

            for (int i = 0; i < armyInfo.prisons.Count; i++)
            {
                Informations.Instance.GetGeneralInfo(armyInfo.prisons[i]).city = -1;
            }
        }

        selectTargetCity.SetArmy(armyInfo);
    }