private VisualizerTurn GetTurn(string playerBoard)
        {
            var state = new GameState();

            var board = new IO.Models.Board()
            {
                Width  = 1,
                Height = 1
            };

            var item = new Tile();

            item.Items.Add(new Item());

            board.Grid.Add(item);

            state.BoardNames[playerBoard] = board;

            var change = new GameChange();

            change.TileItemChanges.Add(new Position()
            {
                X       = 0,
                Y       = 0,
                BoardId = playerBoard
            });

            var turn = new VisualizerTurn()
            {
                State  = state,
                Change = change
            };

            return(turn);
        }
        /// <summary>
        /// Create a task batch from a turn
        /// </summary>
        /// <param name="turn">the turn</param>
        /// <param name="sceneConfiguration">
        /// configuration of this scene
        /// </param>
        /// <param name="boardPositionLookUp">lookup service</param>
        /// <returns></returns>
        internal static TasksBatch ToTasksBatch(
            this VisualizerTurn turn,
            SceneConfiguration sceneConfiguration,
            BoardPositionLookUp boardPositionLookUp)
        {
            GameChange gameChange = turn.Change;
            GameState  gameState  = turn.State;

            TasksBatch batch = new TasksBatch();
            var        ignoreForHubUpdate = new HashSet <string>();

            ProcessCharacterChanges(
                sceneConfiguration,
                boardPositionLookUp,
                gameChange,
                gameState,
                batch,
                ignoreForHubUpdate);

            ProcessTileChanges(sceneConfiguration, gameState, gameChange, batch);

            ProcessGameState(batch, sceneConfiguration, gameState, ignoreForHubUpdate);

            return(batch);
        }
예제 #3
0
        public VisualizerTurn GetTurn(string playerBoard)
        {
            GameState  gameState  = new GameState();
            GameChange gameChange = new GameChange();

            gameState.PlayerNames["player"] = new Player()
            {
                Character = new Character()
                {
                    Name     = "player",
                    IsDead   = true,
                    Position = new Position()
                    {
                        BoardId = playerBoard,
                        X       = 0,
                        Y       = 0
                    }
                }
            };

            gameChange.CharacterChanges["player"] = new CharacterChange()
            {
                Died      = true,
                Respawned = false,
                Decision  = new CharacterDecision()
            };

            VisualizerTurn turn = new VisualizerTurn()
            {
                Change = gameChange,
                State  = gameState,
            };

            return(turn);
        }
예제 #4
0
        public void Test(VisualizerTurn turn, HashSet <Task> expectedTasks)
        {
            TasksBatch batch       = turn.ToTasksBatch(_sceneConfiguration, _mockPositionLookup);
            var        actualTasks = new HashSet <Task>(batch.Tasks);

            CollectionAssert.AreEquivalent(expectedTasks, actualTasks);
        }
예제 #5
0
        public VisualizerTurn GetTurn(string playerBoard)
        {
            GameState  gameState  = new GameState();
            GameChange gameChange = new GameChange();

            gameState.PlayerNames["player"] = new Player()
            {
                Character = new Character()
                {
                    Name          = "player",
                    IsDead        = false,
                    CurrentHealth = 100,
                    Level         = 100,
                    Experience    = 100,
                    Position      = new Position()
                    {
                        BoardId = playerBoard,
                        X       = 0,
                        Y       = 0
                    }
                }
            };

            var playerChange = new CharacterChange()
            {
                Died      = false,
                Respawned = false,
                Decision  = new CharacterDecision()
                {
                    DecisionType = DecisionType.Attack,
                },
            };

            playerChange.AttackLocations.Add(new Position()
            {
                X       = 0,
                Y       = 0,
                BoardId = playerBoard
            });
            playerChange.AttackLocations.Add(new Position()
            {
                X       = 0,
                Y       = 1,
                BoardId = playerBoard
            });

            gameChange.CharacterChanges["player"] = playerChange;

            VisualizerTurn turn = new VisualizerTurn()
            {
                Change = gameChange,
                State  = gameState,
            };

            return(turn);
        }
예제 #6
0
        /// <summary>
        /// Event handler for fetching data
        /// </summary>
        private void OnFetchData()
        {
            _data.Initial       = new VisualizerInitial();
            _data.Initial.State = this.GetState(_testData.InitialState);

            for (int i = 0; i < _testData.Turns.Length; i++)
            {
                TestGameTurn   testTurn = _testData.Turns[i];
                VisualizerTurn turn     = new VisualizerTurn();
                turn.State  = this.GetState(testTurn.State);
                turn.Change = this.GetChange(testTurn.Change);

                _data.Turns.Enqueue(turn);
            }

            _sceneLifeCycle.DataFetched.Invoke();
        }
예제 #7
0
        private VisualizerTurn GetTurn(string playerBoard)
        {
            var state = new GameState();

            state.PlayerNames["player"] = new Player()
            {
                Character = new Character()
                {
                    CurrentHealth = 10,
                    Level         = 22,
                    Experience    = 0,
                    Position      = new Position()
                    {
                        BoardId = playerBoard,
                        X       = 0,
                        Y       = 0
                    }
                }
            };

            state.MonsterNames["monster"] = new Monster()
            {
                Character = new Character()
                {
                    CurrentHealth = 10,
                    Level         = 22,
                    Experience    = 0,
                    Position      = new Position()
                    {
                        BoardId = playerBoard,
                        X       = 1,
                        Y       = 1
                    }
                }
            };

            var turn = new VisualizerTurn()
            {
                State  = state,
                Change = new GameChange()
            };

            return(turn);
        }
        private VisualizerTurn GetTurn(string playerBoard)
        {
            GameState  gameState  = new GameState();
            GameChange gameChange = new GameChange();

            gameState.PlayerNames["player"] = new Player()
            {
                Character = new Character()
                {
                    CurrentHealth = 10,
                    Level         = 22,
                    Experience    = 0,
                    Position      = new Position()
                    {
                        BoardId = playerBoard,
                        X       = 0,
                        Y       = 0
                    },

                    Weapon = new Weapon()
                    {
                        Sprite = "mm26_wearables/weapons/wands/4.png"
                    }
                },

                Hat = new Hat()
                {
                    Sprite = "mm26_wearables/clothes/alchemist_head.png"
                },
                Clothes = new Clothes()
                {
                    Sprite = "mm26_wearables/clothes/alchemist_head.png"
                },
                Shoes = new Shoes()
                {
                    Sprite = "mm26_wearables/clothes/alchemist_head.png"
                },
                Accessory = new Accessory()
                {
                    Sprite = "mm26_wearables/clothes/alchemist_head.png"
                }
            };

            gameChange.CharacterChanges["player"] = new CharacterChange()
            {
                Respawned = false,
                Died      = false,
                Decision  = new CharacterDecision()
                {
                    DecisionType = DecisionType.Equip
                },
                HatChanged = true,
            };

            var turn = new VisualizerTurn()
            {
                State  = gameState,
                Change = gameChange
            };

            return(turn);
        }
예제 #9
0
        private VisualizerTurn GetTurn(string playerBoard)
        {
            GameState  gameState  = new GameState();
            GameChange gameChange = new GameChange();

            gameState.PlayerNames["player"] = new Player()
            {
                Character = new Character()
                {
                    CurrentHealth = 17,
                    Level         = 17,
                    Experience    = 17,
                    Position      = new Position()
                    {
                        BoardId = playerBoard,
                        X       = 1,
                        Y       = 1
                    }
                }
            };

            gameState.MonsterNames["monster"] = new Monster()
            {
                Character = new Character()
                {
                    CurrentHealth = 17,
                    Level         = 17,
                    Experience    = 17,
                    Sprite        = "monster.png",
                    Position      = new Position()
                    {
                        BoardId = playerBoard,
                        X       = 0,
                        Y       = 1
                    }
                }
            };

            gameChange.CharacterChanges["player"] = new CharacterChange()
            {
                Respawned = true,
                Died      = false,
                Decision  = new CharacterDecision()
                {
                    DecisionType = DecisionType.None
                }
            };

            gameChange.CharacterChanges["monster"] = new CharacterChange()
            {
                Respawned = true,
                Died      = false,
                Decision  = new CharacterDecision()
                {
                    DecisionType = DecisionType.None
                }
            };

            VisualizerTurn turn = new VisualizerTurn()
            {
                Change = gameChange,
                State  = gameState,
            };

            return(turn);
        }
예제 #10
0
        /// <summary>
        /// Generate a turn for a given board
        /// </summary>
        /// <param name="boardName">the board name</param>
        /// <returns></returns>
        private VisualizerTurn GetTurn(string boardName)
        {
            // prepare data
            VisualizerTurn turn = new VisualizerTurn();

            // setup game state
            GameState gameState = new GameState();

            gameState.BoardNames[boardName] = new IO.Models.Board()
            {
                Width  = 1,
                Height = 2,
            };

            gameState.PlayerNames["player"] = new Player()
            {
                Character = new Character()
                {
                    Name          = "player",
                    CurrentHealth = 17,
                    Position      = new Position()
                    {
                        X       = 0,
                        Y       = 1,
                        BoardId = boardName
                    }
                }
            };

            GameChange gameChange = new GameChange();

            CharacterChange characterChange = new CharacterChange()
            {
                Died      = false,
                Respawned = false,
                Decision  = new CharacterDecision()
                {
                    DecisionType = DecisionType.Move
                }
            };

            characterChange.Path.Add(new Position()
            {
                X       = 0,
                Y       = 0,
                BoardId = boardName
            });

            characterChange.Path.Add(new Position()
            {
                X       = 1,
                Y       = 0,
                BoardId = boardName
            });

            gameChange.CharacterChanges["player"] = characterChange;

            turn.State  = gameState;
            turn.Change = gameChange;

            return(turn);
        }
예제 #11
0
        /// <summary>
        /// Make turn for a given board
        /// </summary>
        /// <param name="playerBoard">the board to make for</param>
        /// <returns></returns>
        private VisualizerTurn GetBoard(string playerBoard)
        {
            GameState  gameState  = new GameState();
            GameChange gameChange = new GameChange();

            gameState.BoardNames[playerBoard] = new IO.Models.Board()
            {
                Width  = 2,
                Height = 2
            };

            gameState.PlayerNames["player"] = new Player()
            {
                Character = new Character()
                {
                    CurrentHealth = 17,
                    Level         = 17,
                    Experience    = 17,
                    Position      = new Position()
                    {
                        BoardId = playerBoard,
                        X       = 1,
                        Y       = 1
                    }
                }
            };

            gameState.MonsterNames["monster"] = new Monster()
            {
                Character = new Character()
                {
                    CurrentHealth = 17,
                    Level         = 17,
                    Experience    = 17,
                    Sprite        = "monster.png",
                    Position      = new Position()
                    {
                        BoardId = playerBoard,
                        X       = 0,
                        Y       = 1
                    }
                }
            };

            gameChange.CharacterChanges["player"] = new CharacterChange()
            {
                Died      = false,
                Respawned = false,
                Decision  = new CharacterDecision()
                {
                    DecisionType = DecisionType.Portal
                }
            };

            gameChange.CharacterChanges["monster"] = new CharacterChange()
            {
                Died      = false,
                Respawned = false,
                Decision  = new CharacterDecision()
                {
                    DecisionType = DecisionType.Portal
                }
            };

            VisualizerTurn turn = new VisualizerTurn()
            {
                State  = gameState,
                Change = gameChange,
            };

            return(turn);
        }