private void HandleSpawnMonsterTasks() { SpawnMonsterTask[] tasks = _mailbox.GetSubscribedTasksForType <SpawnMonsterTask>(this); for (int i = 0; i < tasks.Length; i++) { SpawnMonsterTask task = tasks[i]; task.IsFinished = true; _mailbox.RemoveTask(task); GameObject monster = _charactersManager.CreateMonster( task.Position, task.EntityName, _spriteLookUp.GetSprite(task.Sprite)); var hub = monster.GetComponent <Hub>(); hub.Level = task.Level; hub.Health = task.Health; hub.Experience = task.Experience; } }
/// <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; } }