Ejemplo n.º 1
0
        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;
        }
Ejemplo n.º 2
0
 private void SpawnLaserPickup(int numLasers, string definitionName)
 {
     for (var i = 0; i < numLasers; ++i)
     {
         PickupFactory.CreateLaserPickup(definitionName);
         Thread.Sleep(100);
     }
 }
Ejemplo n.º 3
0
 public BasicGameMode(GameWorld gameWorld,
                      AnimationFactory animationFactory,
                      AlienFactory alienFactory,
                      PickupFactory pickupFactory,
                      Player player,
                      GameData gameData) :
     base(gameWorld, animationFactory, alienFactory, pickupFactory, player)
 {
     GameData = gameData;
 }
Ejemplo n.º 4
0
        //---------------------------------------------------------------------------

        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);
            }
        }
Ejemplo n.º 5
0
 public GameMode(GameWorld gameWorld,
                 AnimationFactory animationFactory,
                 AlienFactory alienFactory,
                 PickupFactory pickupFactory,
                 Player player)
 {
     GameWorld        = gameWorld;
     AnimationFactory = animationFactory;
     AlienFactory     = alienFactory;
     PickupFactory    = pickupFactory;
     Player           = player;
 }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        //---------------------------------------------------------------------------

        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;
                }
            }
        }
Ejemplo n.º 8
0
 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();
     }
 }
Ejemplo n.º 9
0
        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);
                            }
                        }
                    }
                }
            }
        }