public static ICharacter MakePlayer(PlayerChars type) { ICharacter player; switch (type) { case PlayerChars.TheGuy: player = new TheGuy(); break; case PlayerChars.Redhead: player = new Redhead(); break; case PlayerChars.Blondy: player = new Blondy(); break; default: throw new CharacterException($"{typeof(PlayerFacory).Name} does not contain such character."); } player.Died += (sender, args) => GfxHandler.AddDeathEffect(sender); player.Damaged += (sender, args) => GfxHandler.AddBloodEffect(sender); return(player); }
public static IEnumerable <ICharacter> MakeRandomEnemies(IList <SpawnLocation> locations) { IList <ICharacter> enemies = new List <ICharacter>(); for (int i = 0; i < locations.Count; i++) { Rectangle hugeBox = locations[i].InfalateBBox(); var randomPosition = new Vector2(Rng.Next(hugeBox.Left + 10, hugeBox.Right - 10), Rng.Next(hugeBox.Top + 10, hugeBox.Bottom - 10)); ICharacter enemy; switch (Rng.Next(0, 3)) { case 0: enemy = new Zombie(randomPosition, locations[i]); break; case 1: enemy = new Crawler(randomPosition, locations[i]); break; case 2: // Skip some locations for a bit randomness. continue; default: enemy = new Chicken(randomPosition, locations[i]); break; } enemy.Died += (sender, args) => GfxHandler.AddDeathEffect(sender); enemy.Died += (sender, args) => ItemFactory.SpawnPotionByChance(sender); enemy.Damaged += (sender, args) => GfxHandler.AddBloodEffect(sender); enemies.Add(enemy); } return(enemies); }