示例#1
0
        private static void populateGameCharacters(__FloorPlan.__Room room, GridBoundList <GameCharacter> chars, Random rand, int dungeonLevel, int heroLevel)
        {
            switch (room.type)
            {
            case __FloorPlan.__Room.__RoomType.BOSS_ROOM:
                if (room.isFree(room.GetCenter()))
                {
                    chars.Add(EnemyCreator.GetRandomBoss(dungeonLevel), room.GetCenter());
                }
                break;

            case __FloorPlan.__Room.__RoomType.NOTHING_SPECIAL:
                foreach (var pos in room.GetCells())
                {
                    if (rand.NextDouble() > 0.98 && room.isFree(pos))
                    {
                        chars.Add(EnemyCreator.GetRandomEnemy(1, dungeonLevel)[0], pos);
                    }
                    //lights.Add(new ColorEnvironment(new Color(rand.Next(100,256), rand.Next(100,256), rand.Next(100,256)), false), position);
                }
                break;

            case __FloorPlan.__Room.__RoomType.MOB_ROOM:
                Enemy[] enemies = EnemyCreator.GetRandomEnemy(rand.Next(2, 6), dungeonLevel);
                int     dropped = 1;
                chars.Add(enemies[0], room.GetCenter());
                foreach (var dir in Direction.Values)
                {
                    if (dropped < enemies.Length && (room.isFree(room.GetCenter() + dir)))
                    {
                        chars.Add(enemies[dropped], room.GetCenter() + dir);
                        dropped++;
                    }
                }
                break;
            }
        }