private void CheckState(Empire empire, EmpireController empireController, ref State currentState) { if (!currentState) { currentState = (config as DefaultConfig).GetGrow(); } if (empire.IsAlive()) { // TODO Simple code to set off war DiplomacyController diplomacy = empireController.GetDiplomacyController(); if (empireController.GetEnemyBorderSystems().Count > 0) { foreach (SolarSystem system in empireController.GetEnemyBorderSystems()) { if (diplomacy.GetDiplomacy(system.GetEmpire()).relationship != Relationship.War) { diplomacy.DeclareWar(empire, system.GetEmpire()); } } if (currentState.GetStateName() != "Attack") { currentState = (config as DefaultConfig).GetAttack(); } } else { CheckGrowOrBuildUp(empire, empireController, ref currentState); } } }
private bool AttackEnemy(Empire empire, EmpireController empireController) { DiplomacyController diplomacy = empireController.GetDiplomacyController(); foreach (Army army in empire.GetArmies().FindAll(c => c.GetArmyType() == Army.ArmyType.Offensive && c.GetArmyStatus() == Army.ArmyStatus.Idle || c.GetArmyStatus() == Army.ArmyStatus.Training)) { SolarSystem system = army.GetComponent <MovementController>().GetSystemLocation(); List <SolarSystem> systems = system.GetNearbySystems(); foreach (SolarSystem nearbySystem in systems) { if (nearbySystem.GetEmpire() && nearbySystem.GetEmpire() != empire && diplomacy.GetDiplomacy(nearbySystem.GetEmpire()).relationship == Relationship.War && Navigation.RouteAvailable(system, nearbySystem, empire)) { List <Army> combinedOffence = new List <Army>(); float offence = 0; foreach (Army systemArmy in system.GetArmies().FindAll(c => c.GetArmyType() == Army.ArmyType.Offensive && c.GetArmyStatus() == Army.ArmyStatus.Idle || c.GetArmyStatus() == Army.ArmyStatus.Training)) { combinedOffence.Add(systemArmy); offence += systemArmy.GetArmyStrength(); } if (offence > nearbySystem.GetDefence()) { CreateFleet(combinedOffence, nearbySystem, system, empire); return(true); } } } } return(false); }
void Start() { m_universe = FindObjectOfType <Universe>(); m_universe.onSystemOwnerChanged += onSystemChange; empire = gameObject.GetComponent <Empire>(); diplomacy = gameObject.GetComponent <DiplomacyController>(); }
public bool IsBlocked(Empire empire) { DiplomacyController diplomacyController = empire.GetComponent <DiplomacyController>(); List <Empire> blockedEmpires = diplomacyController.GetEmpiresAtWar(); foreach (Empire empTravelling in empiresTravelling.Keys) { if (blockedEmpires.Contains(empTravelling)) { return(true); } } return(false); }
// Update is called once per frame void Update() { if (empire) { DiplomacyController diplomacy = empire.GetComponent <DiplomacyController>(); empireName.text = empire.GetName(); leader.text = empire.GetLeader().GetName(); if (diplomacy.GetEmpiresAtWar().Count > 0) { status.text = "War"; } else { status.text = "Peace"; } systems.text = empire.GetSystems().Count.ToString(); armies.text = empire.GetArmies().Count.ToString(); offence.text = empire.GetTotalArmyStrength().ToString(); defence.text = empire.GetTotalArmyStrength().ToString(); economy.text = empire.GetGold().ToString(); } }
public DiplomacySave(DiplomacyController dc) { cities = dc.cities; }