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);
         }
     }
 }
Esempio n. 2
0
    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);
    }
Esempio n. 3
0
    void Start()
    {
        m_universe = FindObjectOfType <Universe>();
        m_universe.onSystemOwnerChanged += onSystemChange;

        empire    = gameObject.GetComponent <Empire>();
        diplomacy = gameObject.GetComponent <DiplomacyController>();
    }
Esempio n. 4
0
    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);
    }
Esempio n. 5
0
    // 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;
 }