예제 #1
0
        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;
            }
        }
예제 #2
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;
            }
        }