Example #1
0
        static void GenerateFactions()
        {
            UnitStats stats = new UnitStats();

            stats.SoftAttack         = 4;
            stats.SoftDefence        = 4;
            stats.HardAttack         = 3;
            stats.HardDefence        = 3;
            stats.BombardmentDefence = 3;
            stats.Movement           = 3;
            stats.Flags.Add(UnitFlag.Infantry);

            UnitStats bonus = new UnitStats();

            bonus.HardAttack  = 1;
            bonus.HardDefence = 1;

            UnitUpgrade upgrade = new UnitUpgrade();

            upgrade.Name   = "Upgrade";
            upgrade.Points = 5;
            upgrade.Slot   = 0;

            UnitType unit = new UnitType();

            unit.Name     = "Name";
            unit.Points   = 20;
            unit.Hardness = 0.0;
            unit.Stats    = stats;;
            unit.Upgrades.Add(upgrade);

            Faction faction = new Faction();

            faction.Name        = "Faction";
            faction.Description = "Description";
            faction.Units.Add(unit);

            FactionConfiguration factions = new FactionConfiguration();

            factions.Factions.Add(faction);

            var serialiser = new Nil.Serialiser <FactionConfiguration>("Factions.xml");

            serialiser.Store(factions);
        }
 private void SetupShipFaction(HealthComponent healthComponent)
 {
     if (factionConfigurations.Count > 0)
     {
         FactionConfiguration randomFaction = factionConfigurations[UnityEngine.Random.Range(0, factionConfigurations.Count)];
         var shipConfig = healthComponent.GetComponent <ShipConfigurationComponent>();
         shipConfig.healthComponent.health += shipConfig.healthComponent.health * randomFaction.healthMultiplierIncrease;
         shipConfig.accelerateSpeed        += shipConfig.accelerateSpeed * randomFaction.accelerateSpeedMultiplierIncrease;
         shipConfig.maxSpeed += shipConfig.maxSpeed * randomFaction.maxSpeedMultiplierIncrease;
         // to prevent firing each second, a small safety check is put in places, though this is still a dirty implementation
         var aiShipConfig = healthComponent.GetComponent <AIShipConfigurationComponent>();
         aiShipConfig.fireSpeed = Mathf.Max(0.25f, aiShipConfig.fireSpeed / (1 + randomFaction.fireSpeedMultiplierIncrease));
         foreach (var item in shipConfig.flags)
         {
             item.sprite = randomFaction.flagSprite;
         }
     }
 }