public Room(int width, int height, int[] exitPos, bool exitOpen, int coinCount, int[,] coinPos, int enemyCount, List<Enemy> enemies, List<GameItem> items, Boss boss, Shopkeeper shopkeeper) { this.width = width; this.height = height; this.exitPos = exitPos; this.exitOpen = exitOpen; this.coinCount = coinCount; this.coinPos = coinPos; this.enemyCount = enemyCount; this.enemies = enemies; this.items = items; this.boss = boss; this.shopkeeper = shopkeeper; map = new char[height, (width + 1)]; if (boss != null) { boss.y = 2; boss.x = (width - 1) / 2; } if (shopkeeper != null) { shopkeeper.y = 2; shopkeeper.x = (width - 1) / 2; } }
public Room(int width, int height, Shopkeeper shopkeeper) { random = new Random(); this.width = width; this.height = height; this.shopkeeper = shopkeeper; this.coinCount = 0; this.enemyCount = 0; enemies = new List<Enemy>(); items = new List<GameItem>(); map = new char[height, (width + 1)]; coinPos = new int[coinCount, 2]; exitPos = new int[2] {height - 2, (width - 1) / 2}; shopkeeper.y = 2; shopkeeper.x = (width - 1) / 2; }
private static void LoadGame(string filename, out Player player, out Room room) { StreamReader file; try { file = File.OpenText(filename); player = new Player("none", "Human", "Male", 0, new Weapon("Fists", 0, 0)); room = new Room(1, 1, new Boss()); while (!file.EndOfStream) { string text = file.ReadLine(); //Get Player Data if (text == "player:") { string name = "none"; string gender = "Male"; string race = "Human"; int chosenAffinity = 0; int affinity = 0; int dungeonLevel = 0; int x = 0; int y = 0; int level = 1; int exp = 0; int expNeeded = 10; int gold = 0; Weapon weapon = new Weapon("Fists", 0, 0); int maxHealth = 0; int health = 0; int attackDamage = 0; int magic = 0; int defense = 0; int resist = 0; StatusEffect status = StatusEffect.none; List<GameItem> inventory = new List<GameItem>(); while (true) { text = file.ReadLine(); string[] subTexts = text.Split(new string[] { ":" }, StringSplitOptions.None); if (subTexts[0] == "name") name = subTexts[1]; else if (subTexts[0] == "gender") gender = subTexts[1]; else if (subTexts[0] == "race") race = subTexts[1]; else if (subTexts[0] == "chosenAffinity") chosenAffinity = Convert.ToInt32(subTexts[1]); else if (subTexts[0] == "afinity") affinity = Convert.ToInt32(subTexts[1]); else if (subTexts[0] == "dungeonLevel") dungeonLevel = Convert.ToInt32(subTexts[1]); else if (subTexts[0] == "x") x = Convert.ToInt32(subTexts[1]); else if (subTexts[0] == "y") y = Convert.ToInt32(subTexts[1]); else if (subTexts[0] == "level") level = Convert.ToInt32(subTexts[1]); else if (subTexts[0] == "exp") exp = Convert.ToInt32(subTexts[1]); else if (subTexts[0] == "expNeeded") expNeeded = Convert.ToInt32(subTexts[1]); else if (subTexts[0] == "gold") gold = Convert.ToInt32(subTexts[1]); else if (subTexts[0] == "weapon") { string weaponName = "none"; int cost = 0; int damage = 0; WeaponEffect effect = WeaponEffect.none; int wx = 0, wy = 0; for (int i = 1; i < subTexts.Count(); i += 2) { if (subTexts[i] == "name") weaponName = subTexts[i + 1]; else if (subTexts[i] == "cost") cost = Convert.ToInt32(subTexts[i + 1]); else if (subTexts[i] == "damage") damage = Convert.ToInt32(subTexts[i + 1]); else if (subTexts[i] == "effect") { if (subTexts[i + 1] == "burn") effect = WeaponEffect.burn; else if (subTexts[i + 1] == "penetrate") effect = WeaponEffect.penetrate; else if (subTexts[i + 1] == "curse") effect = WeaponEffect.curse; else if (subTexts[i + 1] == "midas") effect = WeaponEffect.midas; else if (subTexts[i + 1] == "wisdom") effect = WeaponEffect.wisdom; else effect = WeaponEffect.none; } else if (subTexts[i] == "x") wx = Convert.ToInt32(subTexts[i + 1]); else if (subTexts[i] == "y") wy = Convert.ToInt32(subTexts[i + 1]); } weapon = new Weapon(weaponName, damage, cost, effect); } else if (subTexts[0] == "maxHealth") maxHealth = Convert.ToInt32(subTexts[1]); else if (subTexts[0] == "health") health = Convert.ToInt32(subTexts[1]); else if (subTexts[0] == "attackDamage") attackDamage = Convert.ToInt32(subTexts[1]); else if (subTexts[0] == "magic") magic = Convert.ToInt32(subTexts[1]); else if (subTexts[0] == "defense") defense = Convert.ToInt32(subTexts[1]); else if (subTexts[0] == "resist") resist = Convert.ToInt32(subTexts[1]); else if (subTexts[0] == "status") { if (subTexts[1] == "burned") status = StatusEffect.burned; else if (subTexts[1] == "cursed") status = StatusEffect.cursed; else status = StatusEffect.none; } else if (subTexts[0] == "inventory") { string invText = file.ReadLine(); string[] subInvTexts = invText.Split(new string[] { ":" }, StringSplitOptions.RemoveEmptyEntries); int sPos = 0; inventory = new List<GameItem>(); while (true) { if (subInvTexts[sPos] == "type") { sPos++; if (subInvTexts[sPos] == "weapon") { string weaponName = "none"; int cost = 0; int damage = 0; WeaponEffect effect = WeaponEffect.none; int wx = 0, wy = 0; while (true) { sPos++; if (subInvTexts[sPos] == "name") { sPos++; weaponName = subInvTexts[sPos]; } else if (subInvTexts[sPos] == "cost") { sPos++; cost = Convert.ToInt32(subInvTexts[sPos]); } else if (subInvTexts[sPos] == "damage") { sPos++; damage = Convert.ToInt32(subInvTexts[sPos]); } else if (subInvTexts[sPos] == "x") { sPos++; wx = Convert.ToInt32(subInvTexts[sPos]); } else if (subInvTexts[sPos] == "y") { sPos++; wy = Convert.ToInt32(subInvTexts[sPos]); } else if (subInvTexts[sPos] == "effect") { sPos++; if (subInvTexts[sPos] == "burn") effect = WeaponEffect.burn; else if (subInvTexts[sPos] == "penetrate") effect = WeaponEffect.penetrate; else if (subInvTexts[sPos] == "curse") effect = WeaponEffect.curse; else if (subInvTexts[sPos] == "midas") effect = WeaponEffect.midas; else if (subInvTexts[sPos] == "wisdom") effect = WeaponEffect.wisdom; else effect = WeaponEffect.none; } else if (subInvTexts[sPos] == "end") { sPos++; inventory.Add(new Weapon(weaponName, damage, cost, wx, wy, effect)); break; } } } else if (subInvTexts[sPos] == "magicWeapon") { string weaponName = "none"; int cost = 0; int magicDamage = 0; WeaponEffect effect = WeaponEffect.none; int wx = 0, wy = 0; while (true) { sPos++; if (subInvTexts[sPos] == "name") { sPos++; weaponName = subInvTexts[sPos]; } else if (subInvTexts[sPos] == "cost") { sPos++; cost = Convert.ToInt32(subInvTexts[sPos]); } else if (subInvTexts[sPos] == "magicDamage") { sPos++; magicDamage = Convert.ToInt32(subInvTexts[sPos]); } else if (subInvTexts[sPos] == "x") { sPos++; wx = Convert.ToInt32(subInvTexts[sPos]); } else if (subInvTexts[sPos] == "y") { sPos++; wy = Convert.ToInt32(subInvTexts[sPos]); } else if (subInvTexts[sPos] == "effect") { sPos++; if (subInvTexts[sPos] == "burn") effect = WeaponEffect.burn; else if (subInvTexts[sPos] == "penetrate") effect = WeaponEffect.penetrate; else if (subInvTexts[sPos] == "curse") effect = WeaponEffect.curse; else if (subInvTexts[sPos] == "midas") effect = WeaponEffect.midas; else if (subInvTexts[sPos] == "wisdom") effect = WeaponEffect.wisdom; else effect = WeaponEffect.none; } else if (subInvTexts[sPos] == "end") { sPos++; inventory.Add(new MagicWeapon(magicDamage, weaponName, cost, wx, wy, effect)); break; } } } else if (subInvTexts[sPos] == "noviceFireTome") { int wx = 0, wy = 0; while (true) { sPos++; if (subInvTexts[sPos] == "x") { sPos++; wx = Convert.ToInt32(subInvTexts[sPos]); } else if (subInvTexts[sPos] == "y") { sPos++; wy = Convert.ToInt32(subInvTexts[sPos]); } else if (subInvTexts[sPos] == "end") { sPos++; inventory.Add(new NoviceFireTome(wx, wy)); break; } } } else if (subInvTexts[sPos] == "statbooster") { int ix = 0, iy = 0; int statLevel = 1; string stat = "Health"; while (true) { sPos++; if (subInvTexts[sPos] == "x") { sPos++; ix = Convert.ToInt32(subInvTexts[sPos]); } else if (subInvTexts[sPos] == "y") { sPos++; iy = Convert.ToInt32(subInvTexts[sPos]); } else if (subInvTexts[sPos] == "level") { sPos++; statLevel = Convert.ToInt32(subInvTexts[sPos]); } else if (subInvTexts[sPos] == "stat") { sPos++; stat = subInvTexts[sPos]; } else if (subInvTexts[sPos] == "end") { sPos++; inventory.Add(new Statbooster(stat, statLevel, ix, iy)); break; } } } else if (subInvTexts[sPos] == "statusHealer") { int ix = 0, iy = 0; StatusEffect itemStatus = StatusEffect.none; while (true) { sPos++; if (subInvTexts[sPos] == "x") { sPos++; ix = Convert.ToInt32(subInvTexts[sPos]); } else if (subInvTexts[sPos] == "y") { sPos++; iy = Convert.ToInt32(subInvTexts[sPos]); } else if (subInvTexts[sPos] == "status") { sPos++; if (subInvTexts[sPos] == "burned") itemStatus = StatusEffect.burned; else if (subInvTexts[sPos] == "cursed") itemStatus = StatusEffect.cursed; else itemStatus = StatusEffect.none; } else if (subInvTexts[sPos] == "end") { sPos++; inventory.Add(new StatusHealer(itemStatus, ix, iy)); break; } } } else if (subInvTexts[sPos] == "healthTonicBasic") { int hx = 0, hy = 0; while (true) { sPos++; if (subInvTexts[sPos] == "x") { sPos++; hx = Convert.ToInt32(subInvTexts[sPos]); } else if (subInvTexts[sPos] == "x") { sPos++; hy = Convert.ToInt32(subInvTexts[sPos]); } else if (subInvTexts[sPos] == "end") { sPos++; inventory.Add(new HealthTonicBasic(hx, hy)); break; } } } } else if (subInvTexts[sPos] == "end") break; else if (subInvTexts[sPos] == "gameItem") { string itemName = "none"; int cost = 0; string info = "none"; int ix = 0, iy = 0; while (true) { sPos++; if (subInvTexts[sPos] == "name") { sPos++; itemName = subInvTexts[sPos]; } else if (subInvTexts[sPos] == "info") { sPos++; info = subInvTexts[sPos]; } else if (subInvTexts[sPos] == "cost") { sPos++; cost = Convert.ToInt32(subInvTexts[sPos]); } else if (subInvTexts[sPos] == "x") { sPos++; ix = Convert.ToInt32(subInvTexts[sPos]); } else if (subInvTexts[sPos] == "y") { sPos++; iy = Convert.ToInt32(subInvTexts[sPos]); } else if (subInvTexts[sPos] == "end") { sPos++; inventory.Add(new GameItem(itemName, cost, ix, iy, info)); break; } } } } } else if (subTexts[0] == "end") { player = new Player(name, gender, race, chosenAffinity, affinity, dungeonLevel, x, y, level, exp, expNeeded, gold, weapon, maxHealth, health, attackDamage, magic, defense, resist, status, inventory); break; } } } else if (text == "room:") { text = file.ReadLine(); string[] subTexts = text.Split(new string[] { ":" }, StringSplitOptions.None); int sPos = 0; int width = 0, height = 0; int[] exitPos = new int[] { 0, 0 }; bool exitOpen = true; int coinCount = 0; int[,] coinPos = new int[coinCount, 2]; int enemyCount = 0; List<Enemy> enemies = new List<Enemy>(); List<GameItem> items = new List<GameItem>(); Boss boss = null; Shopkeeper shopkeeper = null; while (true) { if (subTexts[sPos] == "width") { sPos++; width = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "height") { sPos++; height = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "exitPos") { sPos++; string[] exitPosStrings = subTexts[sPos].Split(new string[] { "," }, StringSplitOptions.None); exitPos[0] = Convert.ToInt32(exitPosStrings[0]); exitPos[1] = Convert.ToInt32(exitPosStrings[1]); } else if (subTexts[sPos] == "exitOpen") { sPos++; exitOpen = Convert.ToBoolean(subTexts[sPos]); } else if (subTexts[sPos] == "coinCount") { sPos++; coinCount = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "coinPos") { sPos++; coinPos = new int[coinCount, 2]; int coinNum = 0; while (true) { if (subTexts[sPos] == "end") { break; } else { string[] stringCoinPos = subTexts[sPos].Split(new string[] { "," }, StringSplitOptions.None); sPos++; coinPos[coinNum, 0] = Convert.ToInt32(stringCoinPos[0]); coinPos[coinNum, 1] = Convert.ToInt32(stringCoinPos[1]); coinNum++; } } } else if (subTexts[sPos] == "enemycount") { sPos++; enemyCount = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "enemies") { sPos++; while (true) { if (subTexts[sPos] == "type") { sPos++; if (subTexts[sPos] == "rat") { sPos++; int ex = 0, ey = 0, level = 1; while (true) { if (subTexts[sPos] == "level") { sPos++; level = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "x") { sPos++; ex = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "y") { sPos++; ey = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "end") { enemies.Add(new Rat(ex, ey, level)); break; } sPos++; } } else if (subTexts[sPos] == "weakZombie") { sPos++; int ex = 0, ey = 0, level = 1; while (true) { if (subTexts[sPos] == "level") { sPos++; level = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "x") { sPos++; ex = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "y") { sPos++; ey = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "end") { enemies.Add(new WeakZombie(ex, ey, level)); break; } sPos++; } } else if (subTexts[sPos] == "boneman") { sPos++; int ex = 0, ey = 0, level = 1; while (true) { if (subTexts[sPos] == "level") { sPos++; level = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "x") { sPos++; ex = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "y") { sPos++; ey = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "end") { enemies.Add(new Boneman(ex, ey, level)); break; } sPos++; } } else { sPos++; int ex = 0, ey = 0, level = 1; string name = "none"; int maxHealth = 0; int health = 0; int attackDamage = 0; int magic = 0; int defense = 0; int resist = 0; WeaponEffect effect = WeaponEffect.none; int expDropped = 0; int goldDropped = 0; int baseHealth = 0; int baseAttack = 0; int baseMagic = 0; int baseDefense = 0; int baseResist = 0; int expDropBase = 0; int goldDropBase = 0; float healthModifier = 1; float attackModifier = 1; float magicModifier = 1; float defenseModifier = 1; float resistModifier = 1; float expModifier = 1; float goldModifier = 1; while (true) { if (subTexts[sPos] == "level") { sPos++; level = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "x") { sPos++; ex = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "y") { sPos++; ey = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "name") { sPos++; name = subTexts[sPos]; } else if (subTexts[sPos] == "maxHealth") { sPos++; maxHealth = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "health") { sPos++; health = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "attackDamage") { sPos++; attackDamage = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "magic") { sPos++; magic = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "defense") { sPos++; defense = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "resist") { sPos++; resist = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "effect") { sPos++; if (subTexts[sPos] == "burn") effect = WeaponEffect.burn; else if (subTexts[sPos] == "penetrate") effect = WeaponEffect.penetrate; else if (subTexts[sPos] == "curse") effect = WeaponEffect.curse; else if (subTexts[sPos] == "midas") effect = WeaponEffect.midas; else if (subTexts[sPos] == "wisdom") effect = WeaponEffect.wisdom; else effect = WeaponEffect.none; } else if (subTexts[sPos] == "expDropped") { sPos++; expDropped = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "goldDropped") { sPos++; goldDropped = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "baseHealth") { sPos++; baseHealth = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "baseAttack") { sPos++; baseAttack = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "baseMagic") { sPos++; baseMagic = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "baseDefense") { sPos++; baseDefense = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "baseResist") { sPos++; baseResist = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "expDropBase") { sPos++; expDropBase = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "goldDropBase") { sPos++; goldDropBase = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "healthModifier") { sPos++; healthModifier = (float)Convert.ToDouble(subTexts[sPos]); } else if (subTexts[sPos] == "attackModifier") { sPos++; attackModifier = (float)Convert.ToDouble(subTexts[sPos]); } else if (subTexts[sPos] == "magicModifier") { sPos++; magicModifier = (float)Convert.ToDouble(subTexts[sPos]); } else if (subTexts[sPos] == "defenseModifier") { sPos++; defenseModifier = (float)Convert.ToDouble(subTexts[sPos]); } else if (subTexts[sPos] == "reistModifier") { sPos++; resistModifier = (float)Convert.ToDouble(subTexts[sPos]); } else if (subTexts[sPos] == "expModifier") { sPos++; expModifier = (float)Convert.ToDouble(subTexts[sPos]); } else if (subTexts[sPos] == "goldModifier") { sPos++; goldModifier = (float)Convert.ToDouble(subTexts[sPos]); } else if (subTexts[sPos] == "end") { enemies.Add(new Enemy(name, ex, ey, level, effect, maxHealth, health, attackDamage, magic, defense, resist, expDropped, goldDropped, baseHealth, baseAttack, baseMagic, baseDefense, baseResist, expDropBase, goldDropBase, healthModifier, attackModifier, magicModifier, defenseModifier, resistModifier, expModifier, goldModifier)); break; } sPos++; } } sPos++; } else if (subTexts[sPos] == "end") break; } } else if (subTexts[sPos] == "items") { sPos++; while (true) { if (subTexts[sPos] == "type") { sPos++; if (subTexts[sPos] == "weapon") { string weaponName = "none"; int cost = 0; int damage = 0; WeaponEffect effect = WeaponEffect.none; int wx = 0, wy = 0; while (true) { sPos++; if (subTexts[sPos] == "name") { sPos++; weaponName = subTexts[sPos]; } else if (subTexts[sPos] == "cost") { sPos++; cost = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "damage") { sPos++; damage = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "x") { sPos++; wx = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "y") { sPos++; wy = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "effect") { sPos++; if (subTexts[sPos] == "burn") effect = WeaponEffect.burn; else if (subTexts[sPos] == "penetrate") effect = WeaponEffect.penetrate; else if (subTexts[sPos] == "curse") effect = WeaponEffect.curse; else if (subTexts[sPos] == "midas") effect = WeaponEffect.midas; else if (subTexts[sPos] == "wisdom") effect = WeaponEffect.wisdom; else effect = WeaponEffect.none; sPos++; } else if (subTexts[sPos] == "end") { items.Add(new Weapon(weaponName, damage, cost, wx, wy, effect)); break; } } } else if (subTexts[sPos] == "magicWeapon") { string weaponName = "none"; int cost = 0; int magicDamage = 0; WeaponEffect effect = WeaponEffect.none; int wx = 0, wy = 0; while (true) { sPos++; if (subTexts[sPos] == "name") { sPos++; weaponName = subTexts[sPos]; } else if (subTexts[sPos] == "cost") { sPos++; cost = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "magicDamage") { sPos++; magicDamage = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "x") { sPos++; wx = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "y") { sPos++; wy = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "effect") { sPos++; if (subTexts[sPos] == "burn") effect = WeaponEffect.burn; else if (subTexts[sPos] == "penetrate") effect = WeaponEffect.penetrate; else if (subTexts[sPos] == "curse") effect = WeaponEffect.curse; else if (subTexts[sPos] == "midas") effect = WeaponEffect.midas; else if (subTexts[sPos] == "wisdom") effect = WeaponEffect.wisdom; else effect = WeaponEffect.none; sPos++; } else if (subTexts[sPos] == "end") { items.Add(new MagicWeapon(magicDamage, weaponName, cost, wx, wy, effect)); break; } } } else if (subTexts[sPos] == "noviceFireTome") { int wx = 0, wy = 0; while (true) { sPos++; if (subTexts[sPos] == "x") { sPos++; wx = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "y") { sPos++; wy = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "end") { items.Add(new NoviceFireTome(wx, wy)); break; } } } else if (subTexts[sPos] == "statbooster") { int ix = 0, iy = 0; int statLevel = 1; string stat = "Health"; while (true) { sPos++; if (subTexts[sPos] == "x") { sPos++; ix = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "y") { sPos++; iy = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "level") { sPos++; statLevel = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "stat") { sPos++; stat = subTexts[sPos]; } else if (subTexts[sPos] == "end") { items.Add(new Statbooster(stat, statLevel, ix, iy)); break; } } } else if (subTexts[sPos] == "statusHealer") { int ix = 0, iy = 0; StatusEffect itemStatus = StatusEffect.none; while (true) { sPos++; if (subTexts[sPos] == "x") { sPos++; ix = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "y") { sPos++; iy = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "status") { sPos++; if (subTexts[sPos] == "burned") itemStatus = StatusEffect.burned; else if (subTexts[sPos] == "cursed") itemStatus = StatusEffect.cursed; else itemStatus = StatusEffect.none; sPos++; } else if (subTexts[sPos] == "end") { items.Add(new StatusHealer(itemStatus, ix, iy)); break; } } } else if (subTexts[sPos] == "healthTonicBasic") { int hx = 0, hy = 0; while (true) { sPos++; if (subTexts[sPos] == "x") { sPos++; hx = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "y") { sPos++; hy = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "end") { items.Add(new HealthTonicBasic(hx, hy)); break; } } } } else if (subTexts[sPos] == "end") break; else { string itemName = "none"; int cost = 0; string info = "none"; int ix = 0, iy = 0; while (true) { sPos++; if (subTexts[sPos] == "name") { sPos++; itemName = subTexts[sPos]; } else if (subTexts[sPos] == "info") { sPos++; info = subTexts[sPos]; } else if (subTexts[sPos] == "cost") { sPos++; cost = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "x") { sPos++; ix = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "y") { sPos++; iy = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "end") { items.Add(new GameItem(itemName, cost, ix, iy, info)); break; } } } sPos++; } } else if (subTexts[sPos] == "Boss") { sPos++; if (subTexts[sPos] == "type") { sPos++; if (subTexts[sPos] == "revenant") { sPos++; boss = new Revenant(); } } else { sPos++; int ex = 0, ey = 0, level = 1; string name = "none"; int maxHealth = 0; int health = 0; int attackDamage = 0; int magic = 0; int defense = 0; int resist = 0; WeaponEffect effect = WeaponEffect.none; int expDropped = 0; int goldDropped = 0; int baseHealth = 0; int baseAttack = 0; int baseMagic = 0; int baseDefense = 0; int baseResist = 0; int expDropBase = 0; int goldDropBase = 0; float healthModifier = 1; float attackModifier = 1; float magicModifier = 1; float defenseModifier = 1; float resistModifier = 1; float expModifier = 1; float goldModifier = 1; while (true) { if (subTexts[sPos] == "level") { sPos++; level = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "x") { sPos++; ex = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "y") { sPos++; ey = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "name") { sPos++; name = subTexts[sPos]; } else if (subTexts[sPos] == "maxHealth") { sPos++; maxHealth = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "health") { sPos++; health = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "attackDamage") { sPos++; attackDamage = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "magic") { sPos++; magic = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "defense") { sPos++; defense = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "resist") { sPos++; resist = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "effect") { sPos++; if (subTexts[sPos] == "burn") effect = WeaponEffect.burn; else if (subTexts[sPos] == "penetrate") effect = WeaponEffect.penetrate; else if (subTexts[sPos] == "curse") effect = WeaponEffect.curse; else if (subTexts[sPos] == "midas") effect = WeaponEffect.midas; else if (subTexts[sPos] == "wisdom") effect = WeaponEffect.wisdom; else effect = WeaponEffect.none; } else if (subTexts[sPos] == "expDropped") { sPos++; expDropped = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "goldDropped") { sPos++; goldDropped = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "baseHealth") { sPos++; baseHealth = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "baseAttack") { sPos++; baseAttack = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "baseMagic") { sPos++; baseMagic = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "baseDefense") { sPos++; baseDefense = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "baseResist") { sPos++; baseResist = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "expDropBase") { sPos++; expDropBase = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "goldDropBase") { sPos++; goldDropBase = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "healthModifier") { sPos++; healthModifier = (float)Convert.ToDouble(subTexts[sPos]); } else if (subTexts[sPos] == "attackModifier") { sPos++; attackModifier = (float)Convert.ToDouble(subTexts[sPos]); } else if (subTexts[sPos] == "magicModifier") { sPos++; magicModifier = (float)Convert.ToDouble(subTexts[sPos]); } else if (subTexts[sPos] == "defenseModifier") { sPos++; defenseModifier = (float)Convert.ToDouble(subTexts[sPos]); } else if (subTexts[sPos] == "reistModifier") { sPos++; resistModifier = (float)Convert.ToDouble(subTexts[sPos]); } else if (subTexts[sPos] == "expModifier") { sPos++; expModifier = (float)Convert.ToDouble(subTexts[sPos]); } else if (subTexts[sPos] == "goldModifier") { sPos++; goldModifier = (float)Convert.ToDouble(subTexts[sPos]); } else if (subTexts[sPos] == "end") { sPos++; enemies.Add(new Enemy(name, ex, ey, level, effect, maxHealth, health, attackDamage, magic, defense, resist, expDropped, goldDropped, baseHealth, baseAttack, baseMagic, baseDefense, baseResist, expDropBase, goldDropBase, healthModifier, attackModifier, magicModifier, defenseModifier, resistModifier, expModifier, goldModifier)); break; } } } } else if (subTexts[sPos] == "Shopkeeper") { sPos++; int level = 1; while (true) { if (subTexts[sPos] == "level") { sPos++; level = Convert.ToInt32(subTexts[sPos]); } else if (subTexts[sPos] == "end") { shopkeeper = new Shopkeeper(level); break; } sPos++; } } else if (subTexts[sPos] == "end") { sPos++; room = new Room(width, height, exitPos, exitOpen, coinCount, coinPos, enemyCount, enemies, items, boss, shopkeeper); break; } sPos++; } } } file.Close(); } catch (FileNotFoundException e) { Console.Clear(); Console.WriteLine("Error encountered during loading sequence!"); Console.ReadKey(); Environment.Exit(1); //So the compiler won't complain player = null; room = null; } }