private void ProcessInventory(Object obj, RoomMapSearchResult searchresult) { if (obj is Chest) { //searchresult.ChestList.Add(obj); searchresult.CollectedList.Add(obj); } else if (obj is IronArmour || obj is WoodenArmour) { //searchresult.ArmourList.Add(obj); searchresult.CollectedList.Add(obj); } else if (obj is IronSword || obj is WoodenSword) { //searchresult.SwordList.Add(obj); searchresult.CollectedList.Add(obj); } else if (obj is Key) { //searchresult.KeyList.Add(obj); searchresult.CollectedList.Add(obj); } else if (obj is Globin || obj is Monster) { //searchresult.EnemyList.Add(obj); searchresult.CollectedList.Add(obj); } }
//Those can be auto pickup private bool AutoAddToInventory(Object obj, RoomMapSearchResult searchresult) { if (obj is Gold || obj is Silver || obj is HealthPotion) { searchresult.AutoCollectedList.Add(obj); if (obj is ITakable) { ((ITakable)obj).Take(); } return(true); } return(false); }
public RoomMapSearchResult SearchRoom(int roomnumber, int col, int row, int dir) { // ONLY ALL is implemented RoomMapSearchResult searchresult = null; string key = ""; GameRoom gm = null; int search_col = 0; int search_row = 0; RoomMapSearchResult.SEARCH_TYPE searchtype = RoomMapSearchResult.SEARCH_TYPE.ALL_DIRECTION; if (roomnumber >= 1 && roomnumber <= NumberOfRooms) { search_col = col; search_row = row; gm = GameRoomList.ElementAt(roomnumber - 1); searchtype = (RoomMapSearchResult.SEARCH_TYPE)dir; searchresult = new RoomMapSearchResult(); if (searchtype == RoomMapSearchResult.SEARCH_TYPE.ALL_DIRECTION) { //North search_col = col; search_row = row; search_row--; key = search_col + "-" + search_row; if (gm.ItemsHashTable.ContainsKey(key) && ((IAvailable)gm.ItemsHashTable[key]).isAvailable) { searchresult.ItemFound++; searchresult.North_Item = gm.ItemsHashTable[key]; if (AutoAddToInventory(gm.ItemsHashTable[key], searchresult)) { gm.ItemsHashTable.Remove(key); } else { ProcessInventory(gm.ItemsHashTable[key], searchresult); } } //North East search_col = col; search_row = row; search_row--; search_col++; key = search_col + "-" + search_row; if (gm.ItemsHashTable.ContainsKey(key) && ((IAvailable)gm.ItemsHashTable[key]).isAvailable) { searchresult.ItemFound++; searchresult.NorthEast_Item = gm.ItemsHashTable[key]; if (AutoAddToInventory(gm.ItemsHashTable[key], searchresult)) { gm.ItemsHashTable.Remove(key); } else { ProcessInventory(gm.ItemsHashTable[key], searchresult); } } //North West search_col = col; search_row = row; search_row--; search_col--; key = search_col + "-" + search_row; if (gm.ItemsHashTable.ContainsKey(key) && ((IAvailable)gm.ItemsHashTable[key]).isAvailable) { searchresult.ItemFound++; searchresult.NorthWest_Item = gm.ItemsHashTable[key]; if (AutoAddToInventory(gm.ItemsHashTable[key], searchresult)) { gm.ItemsHashTable.Remove(key); } else { ProcessInventory(gm.ItemsHashTable[key], searchresult); } } //South search_col = col; search_row = row; search_row++; key = search_col + "-" + search_row; if (gm.ItemsHashTable.ContainsKey(key) && ((IAvailable)gm.ItemsHashTable[key]).isAvailable) { searchresult.ItemFound++; searchresult.South_Item = gm.ItemsHashTable[key]; if (AutoAddToInventory(gm.ItemsHashTable[key], searchresult)) { gm.ItemsHashTable.Remove(key); } else { ProcessInventory(gm.ItemsHashTable[key], searchresult); } } //South East search_col = col; search_row = row; search_row++; search_col++; key = search_col + "-" + search_row; if (gm.ItemsHashTable.ContainsKey(key) && ((IAvailable)gm.ItemsHashTable[key]).isAvailable) { searchresult.ItemFound++; searchresult.SouthEast_Item = gm.ItemsHashTable[key]; if (AutoAddToInventory(gm.ItemsHashTable[key], searchresult)) { gm.ItemsHashTable.Remove(key); } else { ProcessInventory(gm.ItemsHashTable[key], searchresult); } } //South West search_col = col; search_row = row; search_row++; search_col--; key = search_col + "-" + search_row; if (gm.ItemsHashTable.ContainsKey(key) && ((IAvailable)gm.ItemsHashTable[key]).isAvailable) { searchresult.ItemFound++; searchresult.West_Item = gm.ItemsHashTable[key]; if (AutoAddToInventory(gm.ItemsHashTable[key], searchresult)) { gm.ItemsHashTable.Remove(key); } else { ProcessInventory(gm.ItemsHashTable[key], searchresult); } } //East search_col = col; search_row = row; search_col++; key = search_col + "-" + search_row; if (gm.ItemsHashTable.ContainsKey(key) && ((IAvailable)gm.ItemsHashTable[key]).isAvailable) { searchresult.ItemFound++; searchresult.East_Item = gm.ItemsHashTable[key]; if (AutoAddToInventory(gm.ItemsHashTable[key], searchresult)) { gm.ItemsHashTable.Remove(key); } else { ProcessInventory(gm.ItemsHashTable[key], searchresult); } } //West search_col = col; search_row = row; search_col--; key = search_col + "-" + search_row; if (gm.ItemsHashTable.ContainsKey(key) && ((IAvailable)gm.ItemsHashTable[key]).isAvailable) { searchresult.ItemFound++; searchresult.East_Item = gm.ItemsHashTable[key]; if (AutoAddToInventory(gm.ItemsHashTable[key], searchresult)) { gm.ItemsHashTable.Remove(key); } else { ProcessInventory(gm.ItemsHashTable[key], searchresult); } } } } return(searchresult); }