protected Enemy(MapField[] path, SoldiersController sc, EnemiesController ec, PlayerBase targetBase, DamageType dt, HealthType ht, UnitParameters up, int defaultDamage) : base(sc, ec, up) { PathToTraverse = path; _targetBase = targetBase; _up = up; switch (ht) { case HealthType.Armor: _up.Armor = up.Health; break; case HealthType.EnergyShields: _up.EnergyShields = up.Health; break; case HealthType.EMF: _up.EMF = up.Health; break; } switch (dt) { case DamageType.Plasma: _up.PlasmaDamage = defaultDamage * 2; break; case DamageType.Ballistic: _up.BallisticDamage = Mathf.CeilToInt(defaultDamage / 2); break; case DamageType.Laser: _up.LaserDamage = defaultDamage; break; } CurrentMovementTarget = PathToTraverse[0].Position; }
public DummyEnemy(MapField[] path, SoldiersController sc, EnemiesController ec, PlayerBase pb, DamageType dt, HealthType ht, UnitParameters up, int defaultDamage) : base(path, sc, ec, pb, dt, ht, up, defaultDamage) { Position = Vector2.down * 1000; }
public void Instantiate(Func <string, string, string, string, Action, Action, Action, Task> setButtonsBehaviour, EnemiesController ec, SoldiersController sc) { _recruitNewUnitButton.onClick.AddListener(async() => { if (!_ecoController.TryBuy(UnitPrice)) { Debug.Log("Too little quants! Try earning more."); return; } GameController.Mode = GameMode.Building; await setButtonsBehaviour("Choose a weapon type for this soldier.", "Laser Weapon", "Plasma Weapon", "Ballistic Weapon", () => { SelectedDamageType = DamageType.Laser; }, () => { SelectedDamageType = DamageType.Plasma; }, () => { SelectedDamageType = DamageType.Ballistic; } ); await setButtonsBehaviour("Choose a type of protection for this soldier.", "EMF Defense", "Armor", "Energy Shields", () => { SelectedHealthType = HealthType.EMF; }, () => { SelectedHealthType = HealthType.Armor; }, () => { SelectedHealthType = HealthType.EnergyShields; } ); }); _sellUnitButton.onClick.AddListener(() => { if (_upgradeManager.CurrentUnit == null) { return; } _upgradeManager.CurrentUnit.RemoveUnit(); _upgradeManager.CurrentUnit = null; }); }
public EnemySpawner(MapField[] path, SoldiersController sc, EnemiesController ec, PlayerBase pb) { Enemy Light(float powerLevel) { var light0UP = new UnitParameters { Health = 20, EvasionChance = 0.01f, MovementSpeed = 0.01f, } *powerLevel; return(new DummyEnemy(path, sc, ec, pb, DamageType.Default, HealthType.Default, light0UP, 0) { Type = EnemyType.Light }); } Enemy Mid(float powerLevel) { var mid0UP = new UnitParameters { Health = 50, EvasionChance = 0.01f, MovementSpeed = 0.005f, } *powerLevel; return(new DummyEnemy(path, sc, ec, pb, DamageType.Default, HealthType.Default, mid0UP, 0) { Type = EnemyType.Medium, ScoreValue = 2 }); } Enemy Heavy(float powerLevel) { var heavy0UP = new UnitParameters { Health = 100, EvasionChance = 0.01f, MovementSpeed = 0.01f, } *powerLevel; return(new DummyEnemy(path, sc, ec, pb, DamageType.Default, HealthType.Default, heavy0UP, 0) { Type = EnemyType.Heavy, ScoreValue = 2 }); } Enemy Assassin(float powerLevel) { var assassin0UP = new UnitParameters { Health = 40, EvasionChance = 0.01f, MovementSpeed = 0.005f, AttackAccuracy = 0.75f, DefaultDamage = 1, AttackRange = 3, AttacksPerSecond = 1f } *powerLevel; return(new DummyEnemy(path, sc, ec, pb, DamageType.Ballistic, HealthType.Default, assassin0UP, Mathf.FloorToInt(1 * powerLevel)) { Type = EnemyType.Light, ScoreValue = 2 }); } AllEnemiesPrefabs.Add(EnemyType.Light, new List <Func <float, Enemy> > { Light, Assassin }); AllEnemiesPrefabs.Add(EnemyType.Medium, new List <Func <float, Enemy> > { Mid }); AllEnemiesPrefabs.Add(EnemyType.Heavy, new List <Func <float, Enemy> > { Heavy }); }
public static void BioHeal(Soldier executor, SoldiersController controller) { foreach (var entity in controller.Entities.Where(entity => entity.IsInRange(executor.Position, BioHealRange))) { } }
public PlayerBase(SoldiersController controller) : base("Base", null, controller, DefaultBaseParams) { }