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"); } } }
/// <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); } } } }
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()); }
/// <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; } }