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