예제 #1
0
        public void DoesLoadGameStateThrowExceptionWhenDuplicateActionIdIsAdded()
        {
            var gameStateLoader = new GameStateLoader();

            var elements = new List <Element>()
            {
                new Element()
                {
                    Actions = new[] { new AwesomeRpg.Contracts.Models.RawXml.Action()
                                      {
                                          Id = "abc"
                                      } }
                },
                new Element()
                {
                    Actions = new[] { new AwesomeRpg.Contracts.Models.RawXml.Action()
                                      {
                                          Id = "abc"
                                      } }
                }
            };

            //Act
            Assert.Throws <Exception>(() => gameStateLoader.LoadGameState(elements));

            //Assert - expected exception
        }
예제 #2
0
    // Cross-initialize.
    void Start()
    {
        // If this hasn't run yet.
        if (instance == null)
        {
            instance = this;

            // Load the main (required) scene if it is not loaded.
            if (!GameStateLoader.IsLoaded("main"))
            {
                GameStateLoader.LoadSceneAsync("main");
            }
            // Else if it is loaded and it's the only scene loaded.
            else if (SceneManager.sceneCount == 1)
            {
                // Load the title scene.
                GameStateLoader.LoadSceneAsync("title");
            }
        }
        else
        {
            // Destroy this game object.
            Destroy(gameObject);
        }
    }
예제 #3
0
    public void OnClickPlay()
    {
        // Unload the title scene.
        GameStateLoader.UnloadSceneAsync("title");

        // Load the game scene.
        GameStateLoader.LoadSceneAsync("game");
    }
    public void OnClickResume()
    {
        // Resume.
        Resume();

        // Unload the pause scene.
        GameStateLoader.UnloadSceneAsync("pause-menu");
    }
    public void OnClickMenu()
    {
        // Resume.
        Resume();

        // Quit to the main menu.
        GameStateLoader.UnloadSceneAsync("pause-menu");
        GameStateLoader.UnloadSceneAsync("game");
        GameStateLoader.LoadSceneAsync("title");
    }
        public void HandleData(byte[] data)
        {
            string datastr = System.Text.Encoding.ASCII.GetString(data).Trim('\0');

            serializedGameState += datastr;
            if (gameState == null)
            {
                if (serializedGameState.EndsWith(MultiplayerDataSettings.endChar.ToString()))
                {
                    gameState = GameStateLoader.Deserialize(serializedGameState.Replace("$", ""));
                }
            }
            else
            {
                overheardData += datastr;
            }
        }
예제 #7
0
        private void LoadGameStateButton_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                var loader          = new XmlLoader();
                var gameStateLoader = new GameStateLoader();

                var rawGameState = loader.LoadXml(XmlTextBox.Text);
                var gameState    = gameStateLoader.LoadGameState(rawGameState);

                App.GameContext.BuildGameContext(gameState);
                this.OnGameStateLoaded();
            }
            catch (Exception ex)
            {
                MessageBox.Show(string.Format("An exception occurred loading the Game State. Exception: {0}", ex), "Exception", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }
예제 #8
0
    private IEnumerator MoveToEndGameMenu()
    {
        _isLevelStarted = false;
        yield return(ShowCountdownMsg(COUNTDOWN_END, 2, true));

        yield return(StartFadingOut());

        CleanUp();

        if (_currentMoney < Level.MoneyGoal)
        {
            GameStateLoader.SwitchState(GameStateLoader.GAME_STATES.LOSE_MENU);
        }
        else
        {
            GameStateLoader.SwitchState(GameStateLoader.GAME_STATES.WIN_MENU);
        }
    }
예제 #9
0
    // void start() // original name
    void Start()
    {
        // finds the collision manager in the scene.
        if (colManager == null)
        {
            colManager = FindObjectOfType <CollisionManager>();
        }

        // if the game state loader has not been set, it searches for one.
        if (gsLoader == null)
        {
            gsLoader = FindObjectOfType <GameStateLoader>();
        }

        if (levelGenerator == null)
        {
            levelGenerator = FindObjectOfType <LevelGenerator>();
        }
    }
예제 #10
0
        public void DoesLoadGameStateThrowExceptionWhenDuplicateElementIdIsAddedInSameLevel()
        {
            var gameStateLoader = new GameStateLoader();

            var elements = new List <Element>()
            {
                new Element()
                {
                    Id = "abc"
                },
                new Element()
                {
                    Id = "abc"
                }
            };

            //Act
            Assert.Throws <Exception>(() => gameStateLoader.LoadGameState(elements));

            //Assert - expected exception
        }
예제 #11
0
        public void HandleConnection(int id, ClientHandle clientHandle)
        {
            string serializedGameState = GameStateLoader.Serialize(gameState);

            clientHandle.Send(serializedGameState);
        }
예제 #12
0
 protected void ChangeState(GameStateLoader.GAME_STATES state)
 {
     GameStateLoader.SwitchState(state);
 }
예제 #13
0
 private void GoToMainMenu()
 {
     GameStateLoader.SwitchState(GameStateLoader.GAME_STATES.MAIN_MENU);
 }
예제 #14
0
 public void RequestStateChange(GameStateLoader.GAME_STATES newState)
 {
     GameStateLoader.SwitchState(newState);
 }
예제 #15
0
 // Update is called once per frame
 void Update()
 {
     GameStateLoader.CheckGameState();
 }
예제 #16
0
        public void DoesLoadGameStateWorkWithHappyPath()
        {
            //Arrange
            var gameStateLoader = new GameStateLoader();

            var elements = new List <Element>()
            {
                new Element()
                {
                    Id       = "CoolGame",
                    Elements = new[]
                    {
                        new Element()
                        {
                            Id       = "Player",
                            Elements = new[]
                            {
                                new Element()
                                {
                                    Id = "Level", Value = "1"
                                },
                                new Element()
                                {
                                    Id = "XP", Value = "0"
                                },
                                new Element()
                                {
                                    Id = "HP", Value = "50"
                                },
                                new Element()
                                {
                                    Id = "Name", Value = "Bob"
                                },
                                new Element()
                                {
                                    Id = "Mode", Value = ""
                                }
                            },
                            Actions = new[]
                            {
                                new AwesomeRpg.Contracts.Models.RawXml.Action()
                                {
                                    Id      = "GainXP",
                                    Setters = new[]
                                    {
                                        new Setter()
                                        {
                                            Target = "XP", Operation = "+", Value = "10"
                                        }
                                    }
                                },
                                new AwesomeRpg.Contracts.Models.RawXml.Action()
                                {
                                    Id      = "ClearHP",
                                    Setters = new[]
                                    {
                                        new Setter()
                                        {
                                            Target = "HP", Operation = "=", Value = "0"
                                        },
                                        new Setter()
                                        {
                                            Target = "XP", Operation = "-", Value = "5"
                                        }
                                    }
                                }
                            },
                            Triggers = new[]
                            {
                                new Trigger()
                                {
                                    Target     = "XP",
                                    Comparison = ">=",
                                    Value      = "10",
                                    Setters    = new[]
                                    {
                                        new Setter()
                                        {
                                            Target = "Level", Operation = "=", Value = "2"
                                        },
                                        new Setter()
                                        {
                                            Target = "Name", Operation = "=", Value = "Super Bob"
                                        }
                                    }
                                },
                                new Trigger()
                                {
                                    Target     = "Name",
                                    Comparison = "==",
                                    Value      = "Super Bob",
                                    Setters    = new[]
                                    {
                                        new Setter()
                                        {
                                            Target = "Mode", Operation = "=", Value = "Superman Mode!"
                                        }
                                    }
                                },
                                new Trigger()
                                {
                                    Target     = "Mode",
                                    Comparison = "==",
                                    Value      = "Superman Mode!",
                                    Setters    = new[]
                                    {
                                        new Setter()
                                        {
                                            Target = "Level", Operation = "=", Value = "3"
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            };

            //Act
            var gameState = gameStateLoader.LoadGameState(elements);

            //Assert
            var coolGameElement = gameState[0];

            Assert.AreEqual("CoolGame", coolGameElement.Id);
            Assert.AreEqual(1, coolGameElement.Elements.Count);

            var playerElement = coolGameElement.Elements[0];

            Assert.AreEqual("Player", playerElement.Id);
            Assert.AreEqual(5, playerElement.Elements.Count);

            //GameConfig/Elements/CoolGame/Player/Action(GainXP)
            Assert.IsNotNull(playerElement.Actions);
            Assert.AreEqual("GainXP", playerElement.Actions[0].Id);
            Assert.IsNotNull(playerElement.Actions[0].Setters);

            //GameConfig/Elements/CoolGame/Player/Action/GainXP/Setters
            var gainXpActionSetters = playerElement.Actions[0].Setters;

            Assert.AreEqual(1, gainXpActionSetters.Count);
            Assert.AreEqual("XP", gainXpActionSetters[0].TargetId);
            Assert.AreEqual("+", gainXpActionSetters[0].Operation);
            Assert.AreEqual("10", gainXpActionSetters[0].Value);

            //GameConfig/Elements/CoolGame/Player/Action(ClearHP)
            Assert.IsNotNull(playerElement.Actions);
            Assert.AreEqual("ClearHP", playerElement.Actions[1].Id);
            Assert.IsNotNull(playerElement.Actions[1].Setters);

            //GameConfig/Elements/CoolGame/Player/Action/ClearHP/Setters
            var clearHpActionSetters = playerElement.Actions[1].Setters;

            Assert.AreEqual(2, clearHpActionSetters.Count);
            Assert.AreEqual("HP", clearHpActionSetters[0].TargetId);
            Assert.AreEqual("=", clearHpActionSetters[0].Operation);
            Assert.AreEqual("0", clearHpActionSetters[0].Value);
            Assert.AreEqual("XP", clearHpActionSetters[1].TargetId);
            Assert.AreEqual("-", clearHpActionSetters[1].Operation);
            Assert.AreEqual("5", clearHpActionSetters[1].Value);

            //GameConfig/Elements/CoolGame/Player/Trigger(XP)
            Assert.IsNotNull(playerElement.Triggers[0]);
            Assert.AreEqual("XP", playerElement.Triggers[0].TargetId);
            Assert.AreEqual(">=", playerElement.Triggers[0].Comparison);
            Assert.AreEqual("10", playerElement.Triggers[0].Value);
            Assert.IsNotNull(playerElement.Triggers[0].Setters);

            //GameConfig/Elements/CoolGame/Player/Trigger/XP/Setters
            var triggerXpSetters = playerElement.Triggers[0].Setters;

            Assert.AreEqual(2, triggerXpSetters.Count);
            Assert.AreEqual("Level", triggerXpSetters[0].TargetId);
            Assert.AreEqual("=", triggerXpSetters[0].Operation);
            Assert.AreEqual("2", triggerXpSetters[0].Value);
            Assert.AreEqual("Name", triggerXpSetters[1].TargetId);
            Assert.AreEqual("=", triggerXpSetters[1].Operation);
            Assert.AreEqual("Super Bob", triggerXpSetters[1].Value);

            //GameConfig/Elements/CoolGame/Player/Trigger(Name)
            Assert.IsNotNull(playerElement.Triggers[1]);
            Assert.AreEqual("Name", playerElement.Triggers[1].TargetId);
            Assert.AreEqual("==", playerElement.Triggers[1].Comparison);
            Assert.AreEqual("Super Bob", playerElement.Triggers[1].Value);
            Assert.IsNotNull(playerElement.Triggers[1].Setters);

            //GameConfig/Elements/CoolGame/Player/Trigger/Name/Setters
            var triggerNameSetters = playerElement.Triggers[1].Setters;

            Assert.AreEqual(1, triggerNameSetters.Count);
            Assert.AreEqual("Mode", triggerNameSetters[0].TargetId);
            Assert.AreEqual("=", triggerNameSetters[0].Operation);
            Assert.AreEqual("Superman Mode!", triggerNameSetters[0].Value);

            //GameConfig/Elements/CoolGame/Player/Trigger(Mode)
            Assert.IsNotNull(playerElement.Triggers[2]);
            Assert.AreEqual("Mode", playerElement.Triggers[2].TargetId);
            Assert.AreEqual("==", playerElement.Triggers[2].Comparison);
            Assert.AreEqual("Superman Mode!", playerElement.Triggers[2].Value);
            Assert.IsNotNull(playerElement.Triggers[2].Setters);

            //GameConfig/Elements/CoolGame/Player/Trigger/Mode/Setters
            var triggerModeSetters = playerElement.Triggers[2].Setters;

            Assert.AreEqual(1, triggerModeSetters.Count);
            Assert.AreEqual("Level", triggerModeSetters[0].TargetId);
            Assert.AreEqual("=", triggerModeSetters[0].Operation);
            Assert.AreEqual("3", triggerModeSetters[0].Value);

            //GameConfig/Elements/CoolGame/Player/Level
            Assert.IsNotNull(playerElement.Elements[0]);
            var levelElement = playerElement.Elements[0];

            Assert.AreEqual("Level", levelElement.Id);
            Assert.AreEqual("1", levelElement.Value);

            //GameConfig/Elements/CoolGame/Player/XP
            Assert.IsNotNull(playerElement.Elements.Skip(1).First());
            var xpElement = playerElement.Elements.Skip(1).First();

            Assert.AreEqual("XP", xpElement.Id);
            Assert.AreEqual("0", xpElement.Value);

            //GameConfig/Elements/CoolGame/Player/HP
            Assert.IsNotNull(playerElement.Elements.Skip(2).First());
            var hpElement = playerElement.Elements.Skip(2).First();

            Assert.AreEqual("HP", hpElement.Id);
            Assert.AreEqual("50", hpElement.Value);
        }
 public bool Execute(GameState gameState)
 {
     GameStateLoader.AppendStringToSerialize(data);
     return(true);
 }
 public bool Execute(GameState gameState)
 {
     GameStateLoader.Deserialize();
     return(true);
 }
예제 #19
0
 public void OnClickMenu()
 {
     // Open the menu and pause the game.
     GameStateLoader.LoadSceneAsync("pause-menu");
 }