Exemple #1
0
    private void InitializeInventory(CharacterSpawnParameters obj)
    {
        foreach (var id in obj.items)
        {
            _inventory.AddItem(_itemFactory.Create(ItemType.Module, id));
        }


        _modulesBuffer.Clear();
        _itemsBuffer.Clear();
        _itemsBuffer.AddRange(_inventory.Items);

        foreach (var id in obj.modules)
        {
            if (_itemsBuffer.Count == 0)
            {
                throw new ArgumentException("Requested unused module does not exist in inventory");
            }

            for (int i = 0; i < _itemsBuffer.Count; i++)
            {
                if (_itemsBuffer[i].data.itemId == id)
                {
                    var module = _itemsBuffer[i].instance as ModuleItem;
                    if (module != null)
                    {
                        _modulesBuffer.Add(module.Module);
                        _itemsBuffer.RemoveAt(i);
                        break;
                    }
                    else
                    {
                        throw new ArgumentException("Item is not a module");
                    }
                }
                if (i == _inventory.Items.Count - 1)
                {
                    throw new ArgumentException("Requested unused module does not exist in inventory");
                }
            }
        }
        _weapon.SetModules(_modulesBuffer);
        _inventory.Refresh();
    }
Exemple #2
0
    /// <summary>
    /// Spawns a character with given parameters.
    /// </summary>
    /// <param name="spawnParameters">Parameters to spawn a character.</param>
    public CharacterFacade Spawn(CharacterSpawnParameters spawnParameters)
    {
        ushort ID = spawnParameters.Id;

        if (_AIplayers.ContainsKey(ID) == false)
        {
            CharacterFacade characterFacade = _AIfactory.Create(spawnParameters);
            characterFacade.Id            = ID;
            characterFacade.CharacterType = CharacterType.AICharacter;
            // Put the character on spawn position
            Transform transform = characterFacade.transform;
            transform.SetPositionAndRotation(new Vector3(spawnParameters.X, spawnParameters.Y, transform.position.z), transform.rotation);
            _AIplayers.Add(ID, characterFacade);
            return(characterFacade);
        }
        else
        {
            return(null);
        }
    }
    /// <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);
        }
    }
    private void HandleSpawnCharacter(Message message)
    {
        using (DarkRiftReader reader = message.GetReader())
        {
            while (reader.Position < reader.Length)
            {
                ushort id        = reader.ReadUInt16();
                float  X         = reader.ReadSingle();
                float  Y         = reader.ReadSingle();
                bool   isLocal   = (id == _client.ID);
                var    itemCount = reader.ReadInt16();
                var    items     = new List <short>();
                for (short i = 0; i < itemCount; i++)
                {
                    items.Add(reader.ReadInt16());
                }
                var moduleCount = reader.ReadInt16();
                var modules     = new List <short>();
                for (short i = 0; i < moduleCount; i++)
                {
                    modules.Add(reader.ReadInt16());
                }


                CharacterSpawnParameters spawnParameters = new CharacterSpawnParameters();
                spawnParameters.Id            = id;
                spawnParameters.X             = X;
                spawnParameters.Y             = Y;
                spawnParameters.CharacterType = CharacterType.Player;
                spawnParameters.IsLocal       = isLocal;
                spawnParameters.items         = items;
                spawnParameters.modules       = modules;
                _characterSpawner.Spawn(spawnParameters);
            }
            _messageWithResponse.SendClientReady();
        }
    }
 private void OnSpawned(CharacterSpawnParameters obj)
 {
     _registry.Player = _facade;
 }
 private void InitializeInventory(CharacterSpawnParameters obj)
 {
     _creator.CreateWeapon(_weapon, obj.modules);
 }
Exemple #7
0
 private void OnSpawned(CharacterSpawnParameters parameters)
 {
     ResetHealth();
 }
Exemple #8
0
 private void OnSpawn(CharacterSpawnParameters obj)
 {
     Type    = obj.CharacterType;
     IsLocal = obj.IsLocal;
     Id      = obj.Id;
 }