private void Cache_AddPlayAdventure(PlayAdventure p)
        {
            var cacheEntryOptions = new MemoryCacheEntryOptions()
                                                                                         // Keep in cache for this time, reset time if accessed.
                                    .SetSlidingExpiration(TimeSpan.FromMinutes(8 * 60)); //  8 hours

            _ = _gameCache.Set(p.InstanceID, p, cacheEntryOptions);
        }
 private static bool Helper_IsPlayerDead(PlayAdventure p)
 {
     if (p.Player.HealthCurrent < 1)
     {
         return(true);
     }
     return(false);
 }
        public Boolean GameInstance_Update(PlayAdventure p)
        {
            if (GameInstance_Exists(p.InstanceID))
            {
                Cache_ReplacePlayAdventure(p);
                return(true);
            }

            return(false);
        }
Example #4
0
        public void PlayTestFirstRoom()
        {
            // Enter the Game a pick up the first item
            var           newadv         = _adventureFramework.ControllerEntry_NewGame(1);
            PlayAdventure adv            = _adventureFramework.GameInstance_GetObject(newadv.InstanceID);
            var           gameMoveResult = _adventureController.GameMove(new GameMove {
                InstanceID = adv.InstanceID, Move = "get bugle"
            });

            Assert.IsTrue(!gameMoveResult.ItemsMessage.Contains("BUGLE"));
        }
        public PlayAdventure GameInstance_GetObject(string InstanceId)
        {
            PlayAdventure playAdventure = Cache_GetPlayAdventure(InstanceId);

            if (playAdventure.InstanceID == null)
            {
                playAdventure.StartRoom      = -1;
                playAdventure.WelcomeMessage = "Error: No Instance Found!";
            }
            return(playAdventure);
        }
Example #6
0
        public void PlayTestFirstRoomPetKitten()
        {
            // Enter the Game, Pet the Kitten and then see if the Kitten follows the player
            var           newadv = _adventureFramework.ControllerEntry_NewGame(1);
            PlayAdventure adv    = _adventureFramework.GameInstance_GetObject(newadv.InstanceID);

            _ = _adventureController.GameMove(new GameMove {
                InstanceID = adv.InstanceID, Move = "pet kitten"
            });
            var gameMoveResult = _adventureController.GameMove(new GameMove {
                InstanceID = adv.InstanceID, Move = "d"
            });

            Assert.IsTrue(gameMoveResult.RoomMessage.Contains("KITTEN"));
        }
Example #7
0
        public void TestItemMovemementAndCache()
        {
            // Start Game
            var           newadv = _adventureFramework.ControllerEntry_NewGame(1);
            PlayAdventure adv    = _adventureFramework.GameInstance_GetObject(newadv.InstanceID);
            // Get Item
            var gameMoveResult = _adventureController.GameMove(new GameMove {
                InstanceID = adv.InstanceID, Move = "get bugle"
            });

            // Save the Game State
            _adventureFramework.GameInstance_Update(adv);
            // Load Game from Cache
            adv = _adventureFramework.GameInstance_GetObject(adv.InstanceID);
            // Check to see if the item is in the player inventory
            var itemloc = adv.Items.Find(i => i.Name.ToLower() == "bugle").Location;

            Assert.IsTrue(itemloc == 9999);
        }
Example #8
0
        public PlayAdventure SetupAdventure(string gameid)
        {
            var _gamerTag = new GamerTags().RandomTag();

            var _play = new PlayAdventure
            {
                GameID         = 1,
                GameName       = "Adventure House 3.0 (.Net 5.0)",
                GameHelp       = GetAdventureHelpText(),
                InstanceID     = gameid,
                StartRoom      = 20,
                WelcomeMessage = "___________________________\r\n" +
                                 " Dear " + _gamerTag + ",\r\n\r\n" +
                                 " This is a simple 2 word\r\n" +
                                 " adventure game. Use simple\r\n" +
                                 " but HELPful commands to \r\n" +
                                 " find your way out.\r\n" +
                                 "       Good Luck! \r\n" +
                                 "        The Management.\r\n" +
                                 "___________________________\r\n\r\n",
                MaxHealth  = 200,
                HealthStep = 2,
                Items      = Items(),
                Messages   = Messages(),
                Rooms      = Rooms(),
                Player     = new Player {
                    Name = _gamerTag, PlayerID = gameid, HealthMax = 200, HealthCurrent = 200, Room = 20, Steps = 2, Verbose = true, Points = 1, PlayerDead = false
                },
                GameActive      = true,
                PointsCheckList = new List <string> {
                    "NewGame"
                }
            };

            return(_play);
        }
 private void Cache_ReplacePlayAdventure(PlayAdventure p)
 {
     _gameCache.Remove(p.InstanceID);
     Cache_AddPlayAdventure(p);
 }
        private static Tuple <bool, GameMoveResult, PlayAdventure, CommandState> Helper_DidPlayerMove(PlayAdventure p, GameMoveResult gmr, CommandState cs)
        {
            cs.Message = "";
            if (p.Player.PlayerDead == false)
            {
                var movecommands = new List <string> {
                    "go", "nor", "sou", "eas", "wes", "up", "down", "n", "s", "e", "w", "u", "d"
                };
                if (movecommands.Contains(cs.Command))
                {
                    List <string> ml;

                    if (cs.Command == "go")
                    {
                        ml = new List <string> {
                            "north", "south", "east", "west", "up", "down"
                        };
                        if (ml.Contains(cs.Modifier))
                        {
                            cs.Valid = true;
                        }
                        else
                        {
                            cs.Valid = false;
                        }
                    }

                    // if the command is a short move convert to word
                    // shortcut for moves
                    ml = new List <string> {
                        "nor", "sou", "eas", "wes", "up", "down", "n", "s", "e", "w", "u", "d"
                    };
                    if (ml.Contains(cs.Command))
                    {
                        cs = Parse_ConvertShortMove(cs.Command);
                    }

                    if (cs.Valid == true)
                    {
                        (p, cs) = Action_MovePlayer(p, cs);

                        // update the gmr with the new room details

                        gmr.RoomName     = Object_GetRoom(p.Rooms, p.Player.Room).Name;
                        gmr.RoomMessage  = Object_GetRoom(p.Rooms, p.Player.Room).Desc;
                        gmr.PlayerName   = p.Player.Name;
                        gmr.ItemsMessage = GetRoomItemsList(p.Player.Room, p.Items, true);

                        return(new Tuple <bool, GameMoveResult, PlayAdventure, CommandState>(true, gmr, p, cs));
                    }
                    else if (cs.Valid == false)
                    {
                        cs.Message = "Wrong Way!";
                    }
                }
            }
            else
            {
                cs.Message = GetFunMessage(p.Messages, "DeadMove".Trim(), cs.Modifier);
            }

            return(new Tuple <bool, GameMoveResult, PlayAdventure, CommandState>(false, gmr, p, cs));
        }
 private static int Helper_SetPlayerNewHealth(PlayAdventure p)
 {
     return(p.Player.HealthCurrent - p.HealthStep);
 }
        private static Player Helper_SetPlayerPoints(bool isgeneric, string ItemorRoomName, PlayAdventure p)
        {
            Room rm;
            Item item;

            string c;

            c = p.PointsCheckList.Find(t => t.ToString().ToLower() == ItemorRoomName.ToLower());


            if ((c == null) && (isgeneric == true))
            {
                p.Player.Points += 5;

                p.PointsCheckList.Add(ItemorRoomName);
            }
            else
            {
                if (c == null)
                {
                    // If the item or room has not been scored then add the points

                    rm = p.Rooms.Find(t => t.Name.ToLower() == ItemorRoomName.ToLower());
                    if (rm != null)
                    {
                        p.Player.Points += rm.RoomPoints;
                        p.PointsCheckList.Add(rm.Name);
                    }
                    else
                    {
                        item = p.Items.Find(t => t.Name.ToLower() == ItemorRoomName.ToLower());
                        if (item != null)
                        {
                            p.Player.Points += item.ActionPoints;
                            p.PointsCheckList.Add(item.Name);
                        }
                    }
                }
            }

            return(p.Player);
        }