Пример #1
0
        public virtual Character Spawn()
        {
            var t         = this.transform;
            var character = this.blueprint.Instantiate(t.position, t.rotation);

            Broker.Global.Publish(CharacterSpawned.Get(character));

            return(character);
        }
Пример #2
0
        private void CreateCharacter(Slot slot, CharacterEnum type)
        {
            BaseCharacter newChar = slot.SpawnCharacter(type, houseSpawnedCounter >= 12);

            newChar.CharacterUpseted += OnCharacterUpseted;
            newChar.InterestReached  += OnCharacterInterestReached;
            CharacterSpawned?.Invoke(this, new CharacterSpawnedArgs {
                Character = newChar
            });
            Score += 5;
        }
Пример #3
0
        protected override void TryRespawn()
        {
            if (!GameContext.GameController.CanSpawn(Team, ClientId, out var spawnPos))
            {
                return;
            }

            Spawning  = false;
            Character = Kernel.Get <BaseCharacter>();
            Character.Init(this, spawnPos);
            Character.Died += CharacterOnDied;
            CharacterSpawned?.Invoke(this, Character);
        }
Пример #4
0
        private void CreateCharacter(CharacterClasses characterClass)
        {
            var path =
                string.Format(Paths.Resources.Game.Characters, characterClass);
            var character = Resources.Load <GameObject>(path);

            if (character != null)
            {
                var position = character.transform.localPosition;

                spawnedCharacter = Instantiate(character, transform);
                spawnedCharacter.transform.localPosition = position;
                spawnedCharacter.transform.SetAsFirstSibling();

                CharacterSpawned?.Invoke();
            }
        }
Пример #5
0
    /// <summary>
    /// Spawns a character with given parameters.
    /// </summary>
    /// <param name="spawnParameters">Parameters to spawn a character.</param>
    public void Spawn(CharacterSpawnParameters spawnParameters)
    {
        ushort playerId = spawnParameters.Id;
        bool   isLocal  = spawnParameters.IsLocal;

        if (_characters.ContainsKey(playerId) == false)
        {
            CharacterFacade characterFacade = null;
            if (isLocal)
            {
                // Player character
                characterFacade    = _playerFactory.Create(spawnParameters);
                characterFacade.Id = _unityClient.ID;
                _cameraManager.SetCameraToPlayerCharacter(characterFacade);
            }
            else
            {
                // Networked character
                characterFacade    = _networkFactory.Create(spawnParameters);
                characterFacade.Id = playerId;

                var animator = characterFacade.GetComponentInChildren <Animator>();

                if (characterFacade.CharacterType == CharacterType.AICharacter)
                {
                    animator.runtimeAnimatorController = (RuntimeAnimatorController)_controllers.Wasp;
                }
                else
                {
                    animator.runtimeAnimatorController = (RuntimeAnimatorController)_controllers.Human;
                }
            }

            // Put the character on spawn position
            Transform transform = characterFacade.transform;
            transform.SetPositionAndRotation(new Vector3(spawnParameters.X, spawnParameters.Y, transform.position.z), transform.rotation);
            _characters.Add(playerId, characterFacade);
            CharacterSpawned?.Invoke(characterFacade);
        }
    }
Пример #6
0
 public void OnCharacterSpawned(GameObject _char)
 {
     CharacterSpawned?.Invoke(_char);
 }