Exemplo n.º 1
0
 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);
     }
 }
Exemplo n.º 2
0
        //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);
        }
Exemplo n.º 3
0
        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);
        }