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(); }
/// <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); }
private void OnSpawned(CharacterSpawnParameters parameters) { ResetHealth(); }
private void OnSpawn(CharacterSpawnParameters obj) { Type = obj.CharacterType; IsLocal = obj.IsLocal; Id = obj.Id; }