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; }
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); }