public override void Spawn() { var aliens = GameWorld.GetGameObjects <Alien>(); var lasers = GameWorld.GetGameObjects <Laser>(); var rand = new Random(); for (var i = 0; i < MaxAliens - aliens.Count; ++i) { var alienIndex = rand.Next(0, AlienNames.Length); AlienFactory.Create(AlienNames[alienIndex]); Thread.Sleep(100); } if (FirstSpawn) { for (var i = 0; i < MaxHealths; ++i) { PickupFactory.CreateHealthPickup("SmallHealth"); Thread.Sleep(100); } } for (var i = 0; i < MaxLasers - lasers.Count; ++i) { var laserIndex = rand.Next(0, LaserNames.Length); SpawnLaserPickup(1, LaserNames[laserIndex]); Thread.Sleep(100); } FirstSpawn = false; }
private void SpawnLaserPickup(int numLasers, string definitionName) { for (var i = 0; i < numLasers; ++i) { PickupFactory.CreateLaserPickup(definitionName); Thread.Sleep(100); } }
public BasicGameMode(GameWorld gameWorld, AnimationFactory animationFactory, AlienFactory alienFactory, PickupFactory pickupFactory, Player player, GameData gameData) : base(gameWorld, animationFactory, alienFactory, pickupFactory, player) { GameData = gameData; }
//--------------------------------------------------------------------------- public void Spawn(EItemType item) { TransformComponent transform = GetComponent <TransformComponent>(); if (transform != null) { float rot = (SeedManager.Get().NextRandF() * (float)Math.PI * 2.0f); float dist = (SeedManager.Get().NextRandF() * 120.0f + 400.0f); Vector3 force = new Vector3((float)Math.Sin(rot) * dist, (float)Math.Cos(rot) * dist, SeedManager.Get().NextRandF(20, 40)); PickupFactory.Create(item, transform.Location, force); } }
public GameMode(GameWorld gameWorld, AnimationFactory animationFactory, AlienFactory alienFactory, PickupFactory pickupFactory, Player player) { GameWorld = gameWorld; AnimationFactory = animationFactory; AlienFactory = alienFactory; PickupFactory = pickupFactory; Player = player; }
public override GameModeStatus Update(GameTime gameTime) { var disposed = GameWorld.GetAll(x => x.PendingDispose); foreach (var d in disposed) { GameWorld.RemoveGameObject(d); } var remainingAliens = GameWorld.GetGameObjects <Alien>(); if (remainingAliens.Count <= 0) { return(GameModeStatus.Success); } if (Player.Hp <= 0) { return(GameModeStatus.Failed); } var remainingWeapons = GameWorld.GetGameObjects <Laser>(); if (remainingWeapons.Count < MaxLasers) { if (FirstFrame) { FirstFrame = false; TimeOfLastWeaponSpawn = gameTime.TotalGameTime; } if (gameTime.TotalGameTime - TimeOfLastWeaponSpawn > WeaponSpawnFrequency) { var rand = new Random((int)gameTime.TotalGameTime.TotalMilliseconds); TimeOfLastWeaponSpawn = gameTime.TotalGameTime; for (var i = 0; i < MaxLasers - remainingWeapons.Count; ++i) { var laserIndex = rand.Next(0, LaserNames.Length); PickupFactory.CreateLaserPickup(LaserNames[laserIndex]); } } } else { TimeOfLastWeaponSpawn = gameTime.TotalGameTime; } Player.Update(gameTime); GameWorld.Update(gameTime); return(GameModeStatus.Continue); }
//--------------------------------------------------------------------------- public void TryDrop(int index, int count) { InventorySlot slot = m_Items[index]; if (slot != null && slot.Drop()) { TransformComponent transform = GetComponent <TransformComponent>(); if (transform != null) { PickupFactory.Create(slot.Item.Type, transform.Location, new Vector3(transform.Orientation.X * 600, transform.Orientation.Y * 600, 40)); } if (slot.Count == 0) { m_Items[index] = null; } } }
public Game(int RenderTime, int LogicTime, int RespawnRate, int PickupRate, bool statistics, bool allPickups) //:this() { Render = new Renderer(this, RenderTime); GameElements = new List <GameObject>(); BulletElements = new List <Bullet>(); PickupElements = new List <PickUp>(); changeStartParameters(RenderTime, LogicTime, RespawnRate, PickupRate, true, statistics); GameElementListLock = new object(); PickupListLock = new object(); BulletListLock = new object(); Lucky = new Random(); Teams = new List <Team>(); UserControlledPlayers = new List <Player>(); InitialBots = new List <Fighter>(); PlayMode = new FreeGame(this); PickupManager = PickupFactory.createFactory(this); Escape_Current_Intro = false; if (allPickups) { PickupManager.InitiateAllPickups(); } }
private void PlaceMobs() { for (Rectangle room = iterator.First(); !iterator.IsDone; room = iterator.Next()) //foreach (var room in _map.Rooms) { Random pickupRandomizeCount = new Random(); int pickupCount = pickupRandomizeCount.Next(3); Pickup pickup; if (pickupCount != 0) { for (int i = 0; i < pickupCount; i++) { Point randomPickupPoint = _map.GetRandomFreeTile(room); if (randomPickupPoint != null && _map.GetPickupAt(randomPickupPoint.X, randomPickupPoint.Y) == null) { int roll = Dice.Roll("1D5"); switch (roll) { case 1: { pickup = PickupFactory.GetInstance().getPickup(PickupType.DEF_POTION); break; } case 2: { pickup = PickupFactory.GetInstance().getPickup(PickupType.STR_POTION); break; } case 3: { pickup = PickupFactory.GetInstance().getPickup(PickupType.EXP_POTION); break; } case 4: { pickup = PickupFactory.GetInstance().getPickup(PickupType.GOLD_COIN); break; } case 5: { pickup = PickupFactory.GetInstance().getPickup(PickupType.HP_POTION); break; } default: { pickup = PickupFactory.GetInstance().getPickup(PickupType.GOLD_COIN); break; } } //GoldCoin pickup = new GoldCoin(); //pickup.X = randomPickupPoint.X; //pickup.Y = randomPickupPoint.Y; _map.AddPickup(randomPickupPoint, pickup); } } } if (Dice.Roll("1D10") < 7) { var numberOfMonsters = Dice.Roll("1D4"); if (Game.DanteMustDie) { numberOfMonsters = 7; } else if (Game.KoboldKarnage) { numberOfMonsters = room.Height * room.Width - 10; } if (numberOfMonsters < 1) { numberOfMonsters = 1; } for (int i = 0; i < numberOfMonsters; i++) { CreationType type; var typeDecider = Dice.Roll("1D100"); if (typeDecider <= 60) { type = CreationType.NORMAL; } else if (typeDecider <= 80) { type = CreationType.WEAK; } else if (typeDecider <= 92) { type = CreationType.MINI_BOSS; } else { type = CreationType.BOSS; } Point randomRoomLocation = _map.GetRandomFreeTile(room); if (randomRoomLocation != null) { int level = Player.GetInstance().Level + Facade._mapLevel + Dice.Roll("1D5") - Dice.Roll("1D5"); if (level < 1) { level = 1; } int whatMonster = Dice.Roll("1D100"); if (Game.KoboldKarnage) { whatMonster = 1; } if (whatMonster <= 25) { Monster monster = MonsterFactoryStore.getFactory(FactoryType.KOBOLD).Create(type); monster.SetAttributes(level); monster.X = randomRoomLocation.X; monster.Y = randomRoomLocation.Y; _map.AddMonster(monster); } else if (whatMonster <= 50) { Monster monster = MonsterFactoryStore.getFactory(FactoryType.ORC).Create(type); monster.SetAttributes(level); monster.X = randomRoomLocation.X; monster.Y = randomRoomLocation.Y; _map.AddMonster(monster); } else if (whatMonster <= 90) { Monster monster = MonsterFactoryStore.getFactory(FactoryType.GOBLIN).Create(type); monster.SetAttributes(level); monster.X = randomRoomLocation.X; monster.Y = randomRoomLocation.Y; _map.AddMonster(monster); } else if (whatMonster <= 95) { Monster monster = MonsterFactoryStore.getFactory(FactoryType.BEHOLDER).Create(type); monster.SetAttributes(level); monster.X = randomRoomLocation.X; monster.Y = randomRoomLocation.Y; _map.AddMonster(monster); } else if (whatMonster <= 100) { Monster monster = MonsterFactoryStore.getFactory(FactoryType.GOBLIN_SHAMAN).Create(type); monster.SetAttributes(level); monster.X = randomRoomLocation.X; monster.Y = randomRoomLocation.Y; _map.AddMonster(monster); } } } } } }