Esempio n. 1
0
        private void Update()
        {
            if (!_loaded && _data.Turns.Count > 0)
            {
                IO.Models.GameState state = _data.Turns.Peek().State;

                if (state.BoardNames.ContainsKey(_sceneConfiguration.BoardName))
                {
                    _loaded = true;
                    _waitingCanvas.enabled = false;

                    this.CreateMap(state);
                    this.CreateCharacters(state);

                    Debug.Log("Actually create board");
                }
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Helper function for creating the board
        /// </summary>
        private void CreateMap(IO.Models.GameState state)
        {
            var board = state.BoardNames[_sceneConfiguration.BoardName];

            _positionLookUp.Grid   = _grid;
            _positionLookUp.Height = board.Height;
            _positionLookUp.Width  = board.Width;

            for (int x = 0; x < board.Width; x++)
            {
                for (int y = 0; y < board.Height; y++)
                {
                    PTile ptile = board.Grid[x * board.Height + y];

                    if (ptile.Items.Count > 0)
                    {
                        _treasureTrovesManager.PlaceTrove(x, y);
                    }

                    if (ptile.TileType == PTileType.Void)
                    {
                        continue;
                    }

                    if (ptile.GroundSprite != "")
                    {
                        Tile tile = _tileDatabase.GetTile(ptile.GroundSprite);
                        _groundTilemap.SetTile(new Vector3Int(x, (board.Height - 1) - y, 0), tile);
                    }

                    if (ptile.AboveSprite != "")
                    {
                        Tile tile = _tileDatabase.GetTile(ptile.AboveSprite);
                        _aboveTilemap.SetTile(new Vector3Int(x, (board.Height - 1) - y, -1), tile);
                    }
                }
            }
        }
Esempio n. 3
0
        private void Start()
        {
            var state = new IO.Models.GameState();

            state.BoardNames["pvp"] = new IO.Models.Board()
            {
                Height = 1,
                Width  = 1
            };

            state.BoardNames["pvp"].Grid.Add(new IO.Models.Tile());

            _data.Initial = new IO.Models.VisualizerInitial()
            {
                State = state
            };

            _sceneLifeCycle.DataFetched.Invoke();


            _mailbox.SendTask(new SpawnPlayerTask("Player 1", new Vector3Int()));
            StartCoroutine(this.Simulate());
        }
Esempio n. 4
0
        /// <summary>
        /// Helper function for creating players
        /// </summary>
        private void CreateCharacters(IO.Models.GameState state)
        {
            foreach (var entry in state.PlayerNames)
            {
                PPlayer    pplayer   = entry.Value;
                PCharacter character = entry.Value.Character;
                PPosition  position  = character.Position;

                if (position.BoardId != _sceneConfiguration.BoardName)
                {
                    continue;
                }

                GameObject player = this._charactersManager.CreatePlayer(
                    new Vector3Int(position.X, position.Y, 0),
                    character.Name);

                var hub = player.GetComponent <Hub>();

                hub.Level      = character.Level;
                hub.Health     = character.CurrentHealth;
                hub.Experience = character.Experience;

                var inventory = player.GetComponent <Inventory>();

                if (inventory != null)
                {
                    Sprite head = _tileDatabase.GetWearable(pplayer.Hat?.Sprite);
                    if (head != null)
                    {
                        inventory.Head = head;
                    }

                    Sprite top = _tileDatabase.GetWearable(pplayer.Clothes?.Sprite);
                    if (top != null)
                    {
                        inventory.Top = top;
                    }

                    Sprite bottom = _tileDatabase.GetWearable(pplayer.Shoes?.Sprite);
                    if (bottom != null)
                    {
                        inventory.Bottom = bottom;
                    }

                    Sprite accessory = _tileDatabase.GetWearable(pplayer.Accessory?.Sprite);
                    if (accessory != null)
                    {
                        inventory.Accessory = accessory;
                    }

                    Sprite weapon = _tileDatabase.GetWearable(character.Weapon?.Sprite);
                    if (weapon != null)
                    {
                        inventory.Weapon = weapon;
                    }
                }
            }

            foreach (var entry in state.MonsterNames)
            {
                PCharacter character = entry.Value.Character;
                PPosition  position  = character.Position;

                if (position.BoardId != _sceneConfiguration.BoardName)
                {
                    continue;
                }

                Sprite monsterSprite = _tileDatabase.GetSprite(character.Sprite);

                GameObject monster = this._charactersManager.CreateMonster(
                    new Vector3Int(position.X, position.Y, 0),
                    character.Name,
                    monsterSprite);

                var hub = monster.GetComponent <Hub>();

                hub.Health     = character.CurrentHealth;
                hub.Experience = character.Experience;
                hub.Level      = character.Level;
            }
        }