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)); }
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); }