public static GameWorldInfo CreateInitialWorldData() { if (curr_gwinfo == null) { curr_gwinfo = new GameWorldInfo(); } //Init GameState GameState.currentGameMode = GameState.GAME_MODE.WORLD; GameState.currentRoom = 1; GameState.gameLevel = 1; GameState.inventory = new ItemList(); GameState.score = 0; //Init Player Data WoodenArmour wmobj = null; if (ConfigManager.StartWithArmour) { wmobj = new WoodenArmour("Wooden Armour", 0, 0, "Personal-" + GameState.inventory.GetCount() + 1); wmobj.shieldPower = 100; GameState.inventory.Add(wmobj); } WoodenSword wswbj = null; if (ConfigManager.StartWithSword) { wswbj = new WoodenSword("Wooden Sword", 0, 0, "Personal-" + GameState.inventory.GetCount() + 1); wswbj.capableHit = 380; GameState.inventory.Add(wswbj); } return(curr_gwinfo); }
//Main Data Structure public GameWorldInfo() { RoomMapFileInfo rmmapInfo = null; WorldMapInfo = new WorldMap(); rmmapInfo = RoomInfoFileReader.ReadRoomMapInfo(ConfigManager.RoomInfoFile); RoomMapList = rmmapInfo.roomaplist; dropPointlist = rmmapInfo.dropPointlist; boundaryPointlist = rmmapInfo.boundaryPointlist; if (RoomMapList != null) { NumberOfRooms = RoomMapList.Count; } The_Player = new Player(0, 0); //Init the Player GameRoom rm = null; for (int roomindex = 0; roomindex < NumberOfRooms; roomindex++) { GameRoomList.Add(new GameRoom(RoomMapList.ElementAt(roomindex))); rm = GameRoomList.ElementAt(roomindex); rm.GenerateEnvrionemnt(); NumberOfMonster = NumberOfMonster + rm.MonsterList.Count; NumberOfGlobin = NumberOfGlobin + rm.GlobinList.Count; } //Generate item in room int maxnoitem = ConfigManager.MaxChestPerWorld; int rmindex = 0; Random random = ConfigManager.RandomGen; Dictionary <string, string> ItemsHashTable = new Dictionary <string, string>(); int col = 0; int row = 0; Chest chestobj = null; String key = null; //Chest First for (int item = 0; item < maxnoitem; item++) { while (true) { rmindex = random.Next(0, NumberOfRooms - 1); //Get a Random Room if (!ItemsHashTable.ContainsKey(Convert.ToString(rmindex))) { ItemsHashTable.Add(Convert.ToString(rmindex), Convert.ToString(rmindex)); rm = GameRoomList.ElementAt(rmindex); while (true) { col = random.Next( ((RoomMap.RoomWidth - RoomMap.RoomEffectiveWidth) / 2) + 1, ((RoomMap.RoomWidth - RoomMap.RoomEffectiveWidth) / 2) + RoomMap.RoomEffectiveWidth - 1); row = random.Next(0, RoomMap.RoomHeight - 1); if (!rm.IsLocationInRoomTaken(col, row) && rm.Room_Map.IsEmpty(col, row)) { key = col + "-" + row; chestobj = new Chest("Treasure Chest", col + PlayUIWorldMap.mapBoxColPos, row + PlayUIWorldMap.mapBoxRowPos, key); rm.ChestList.Add(chestobj); rm.ItemsHashTable.Add(key, chestobj); rm.TotalItem++; break; } } } break; } } //Key Next maxnoitem = ConfigManager.MaxKeyPerWorld; Key keyobj = null; ItemsHashTable = new Dictionary <string, string>(); for (int item = 0; item < maxnoitem; item++) { while (true) { rmindex = random.Next(0, NumberOfRooms - 1); //Get a Random Room if (!ItemsHashTable.ContainsKey(Convert.ToString(rmindex))) { ItemsHashTable.Add(Convert.ToString(rmindex), Convert.ToString(rmindex)); rm = GameRoomList.ElementAt(rmindex); while (true) { col = random.Next( ((RoomMap.RoomWidth - RoomMap.RoomEffectiveWidth) / 2) + 1, ((RoomMap.RoomWidth - RoomMap.RoomEffectiveWidth) / 2) + RoomMap.RoomEffectiveWidth - 1); row = random.Next(0, RoomMap.RoomHeight - 1); if (!rm.IsLocationInRoomTaken(col, row) && rm.Room_Map.IsEmpty(col, row)) { key = col + "-" + row; keyobj = new Key("Treasure Chest Key", col + PlayUIWorldMap.mapBoxColPos, row + PlayUIWorldMap.mapBoxRowPos, key); rm.KeyList.Add(keyobj); rm.ItemsHashTable.Add(key, keyobj); rm.TotalItem++; break; } } } break; } } //Iron Armour Next maxnoitem = ConfigManager.MaxIronArmourPerWorld; IronArmour amobj = null; ItemsHashTable = new Dictionary <string, string>(); for (int item = 0; item < maxnoitem; item++) { while (true) { rmindex = random.Next(0, NumberOfRooms - 1); //Get a Random Room if (!ItemsHashTable.ContainsKey(Convert.ToString(rmindex))) { ItemsHashTable.Add(Convert.ToString(rmindex), Convert.ToString(rmindex)); rm = GameRoomList.ElementAt(rmindex); while (true) { col = random.Next( ((RoomMap.RoomWidth - RoomMap.RoomEffectiveWidth) / 2) + 1, ((RoomMap.RoomWidth - RoomMap.RoomEffectiveWidth) / 2) + RoomMap.RoomEffectiveWidth - 1); row = random.Next(0, RoomMap.RoomHeight - 1); if (!rm.IsLocationInRoomTaken(col, row) && rm.Room_Map.IsEmpty(col, row)) { key = col + "-" + row; amobj = new IronArmour("Iron Armour", col + PlayUIWorldMap.mapBoxColPos, row + PlayUIWorldMap.mapBoxRowPos, key); rm.ArmourList.Add(amobj); rm.ItemsHashTable.Add(key, amobj); rm.TotalItem++; break; } } } break; } } //Wooden Armour Next maxnoitem = ConfigManager.MaxWoodenArmourPerWorld; WoodenArmour wmobj = null; ItemsHashTable = new Dictionary <string, string>(); for (int item = 0; item < maxnoitem; item++) { while (true) { rmindex = random.Next(0, NumberOfRooms - 1); //Get a Random Room if (!ItemsHashTable.ContainsKey(Convert.ToString(rmindex))) { ItemsHashTable.Add(Convert.ToString(rmindex), Convert.ToString(rmindex)); rm = GameRoomList.ElementAt(rmindex); while (true) { col = random.Next( ((RoomMap.RoomWidth - RoomMap.RoomEffectiveWidth) / 2) + 1, ((RoomMap.RoomWidth - RoomMap.RoomEffectiveWidth) / 2) + RoomMap.RoomEffectiveWidth - 1); row = random.Next(0, RoomMap.RoomHeight - 1); if (!rm.IsLocationInRoomTaken(col, row) && rm.Room_Map.IsEmpty(col, row)) { key = col + "-" + row; wmobj = new WoodenArmour("Wooden Armour", col + PlayUIWorldMap.mapBoxColPos, row + PlayUIWorldMap.mapBoxRowPos, key); rm.ArmourList.Add(wmobj); rm.ItemsHashTable.Add(key, wmobj); rm.TotalItem++; break; } } } break; } } //Iron Sword Next maxnoitem = ConfigManager.MaxIronSwordPerWorld; IronSword iswbj = null; ItemsHashTable = new Dictionary <string, string>(); for (int item = 0; item < maxnoitem; item++) { while (true) { rmindex = random.Next(0, NumberOfRooms - 1); //Get a Random Room if (!ItemsHashTable.ContainsKey(Convert.ToString(rmindex))) { ItemsHashTable.Add(Convert.ToString(rmindex), Convert.ToString(rmindex)); rm = GameRoomList.ElementAt(rmindex); while (true) { col = random.Next( ((RoomMap.RoomWidth - RoomMap.RoomEffectiveWidth) / 2) + 1, ((RoomMap.RoomWidth - RoomMap.RoomEffectiveWidth) / 2) + RoomMap.RoomEffectiveWidth - 1); row = random.Next(0, RoomMap.RoomHeight - 1); if (!rm.IsLocationInRoomTaken(col, row) && rm.Room_Map.IsEmpty(col, row)) { key = col + "-" + row; iswbj = new IronSword("Iron Sword", col + PlayUIWorldMap.mapBoxColPos, row + PlayUIWorldMap.mapBoxRowPos, key); rm.WeaponList.Add(iswbj); rm.ItemsHashTable.Add(key, iswbj); rm.TotalItem++; break; } } } break; } } //Wooden Sword Next maxnoitem = ConfigManager.MaxWoodenSwordPerWorld; WoodenSword wswbj = null; ItemsHashTable = new Dictionary <string, string>(); for (int item = 0; item < maxnoitem; item++) { while (true) { rmindex = random.Next(0, NumberOfRooms - 1); //Get a Random Room if (!ItemsHashTable.ContainsKey(Convert.ToString(rmindex))) { ItemsHashTable.Add(Convert.ToString(rmindex), Convert.ToString(rmindex)); rm = GameRoomList.ElementAt(rmindex); while (true) { col = random.Next( ((RoomMap.RoomWidth - RoomMap.RoomEffectiveWidth) / 2) + 1, ((RoomMap.RoomWidth - RoomMap.RoomEffectiveWidth) / 2) + RoomMap.RoomEffectiveWidth - 1); row = random.Next(0, RoomMap.RoomHeight - 1); if (!rm.IsLocationInRoomTaken(col, row) && rm.Room_Map.IsEmpty(col, row)) { key = col + "-" + row; wswbj = new WoodenSword("Wooden Sword", col + PlayUIWorldMap.mapBoxColPos, row + PlayUIWorldMap.mapBoxRowPos, key); rm.WeaponList.Add(wswbj); rm.ItemsHashTable.Add(key, wswbj); rm.TotalItem++; break; } } } break; } } }