Пример #1
0
        private Tile Create(TileType type)
        {
            int x = random.Next(0, width);
            int y = random.Next(0, height);


            while (map[x, y].Type != TileType.EMPTY)
            {
                x = random.Next(0, width);
                y = random.Next(0, height);
            }

            if (type == TileType.HERO)
            {
                map[x, y] = new Hero(x, y, 10);
                return(map[x, y]);
            }
            else if (type == TileType.ENEMY)
            {
                int i = random.Next(0, 3);
                if (i == 1)
                {
                    map[x, y] = new Goblin(x, y);
                    return(map[x, y]);
                }
                else if (i == 2)
                {
                    map[x, y] = new Mage(x, y);
                    return(map[x, y]);
                }
                else
                {
                    Leader leader = new Leader(x, y);
                    leader.Target = hero;
                    map[x, y]     = leader;
                    return(map[x, y]);
                }
            }
            else if (type == TileType.GOLD)
            {
                map[x, y] = new Gold(x, y);
                return(map[x, y]);
            }

            else if (type == TileType.WEAPON)
            {
                int weaponType    = random.Next(0, 2);
                int weaponVariant = random.Next(0, 2);

                if (weaponType == 0)
                {
                    RangedWeaponType rangedType = (RangedWeaponType)weaponVariant;
                    map[x, y] = new RangedWeapon(rangedType, x, y);
                }
                else
                {
                    MeleeWeaponType meleeType = (MeleeWeaponType)weaponVariant;
                    map[x, y] = new MeleeWeapon(meleeType, x, y);
                }

                return(map[x, y]);
            }

            return(new EmptyTile(x, y));
        }
Пример #2
0
        public override string ToString()
        {
            string mapString = "";

            for (int y = 0; y < height; y++)
            {
                for (int x = 0; x < width; x++)
                {
                    TileType currentType = map[x, y].Type;
                    if (Hero.X == x && hero.Y == y)
                    {
                        mapString += 'H';
                        continue;
                    }
                    if (currentType == TileType.ENEMY)
                    {
                        Enemy enemy = (Enemy)map[x, y];
                        if (enemy.IsDead())
                        {
                            mapString += '\u2020';
                        }
                        else
                        {
                            if (enemy is Goblin)
                            {
                                mapString += 'G';
                            }
                            else if (enemy is Mage)
                            {
                                mapString += 'M';
                            }
                            else if (enemy is Leader)
                            {
                                mapString += 'L';
                            }
                        }
                    }
                    else if (currentType == TileType.EMPTY)
                    {
                        mapString += '.';
                    }
                    else if (map[x, y].Type == TileType.OBSTACLE)
                    {
                        mapString += 'O';
                    }
                    else if (map[x, y].Type == TileType.GOLD)
                    {
                        Debug.WriteLine("Item");

                        Gold gold = (Gold)map[x, y];
                        mapString += gold.GoldAmount; // Testing
                    }
                    else if (map[x, y].Type == TileType.WEAPON)
                    {
                        Weapon weapon = (Weapon)map[x, y];


                        if (weapon is MeleeWeapon)
                        {
                            if (weapon.Name == "LongSword")
                            {
                                mapString += '/';
                            }
                            else
                            {
                                mapString += '|';
                            }
                        }

                        else if (weapon is RangedWeapon)
                        {
                            if (weapon.Name == "Rifle")
                            {
                                mapString += 'R';
                            }
                            else
                            {
                                mapString += '}';
                            }
                        }
                    }
                }
                mapString += "\n";
            }
            return(mapString);
        }