public CharacterObject(int _playerId, ECharacterType _characterType, int _hp, int _regen, int _speed, ETeam _teamId, Vector2 _position, EObjectDirection _direction) : base(_hp, _regen, _teamId, _position) { playerId = _playerId; direction = _direction; characterType = _characterType; speed = _speed; abilities = CreateAbilities(); }
public PlayerCommandData(int _turnNumber, float _deltaTime, Vector2 _position, EObjectDirection _direction, List <EPlayerAction> _actions, List <AbilityActivationData> _abilityActivations) { turnNumber = _turnNumber; deltaTime = _deltaTime; position = _position; actions = _actions; direction = _direction; abilityActivations = _abilityActivations; }
public CharacterStateData(Packet _packet) { id = _packet.ReadInt(); playerId = _packet.ReadInt(); type = (ECharacterType)_packet.ReadInt(); position = _packet.ReadVector2(); direction = (EObjectDirection)_packet.ReadInt(); teamId = (ETeam)_packet.ReadInt(); hp = _packet.ReadInt(); speed = _packet.ReadInt(); }
public CharacterStateData(int _id, int _playerId, ECharacterType _type, ETeam _teamId, Vector2 _position, EObjectDirection _direction, int _hp, int _speed) { id = _id; playerId = _playerId; type = _type; teamId = _teamId; position = _position; direction = _direction; hp = _hp; speed = _speed; }
public void SetDirection(List <EPlayerAction> _actions) { if (_actions.Contains(EPlayerAction.HOLD_DIRECTION)) { return; } bool up = _actions.Contains(EPlayerAction.UP); bool left = _actions.Contains(EPlayerAction.LEFT); bool right = _actions.Contains(EPlayerAction.RIGHT); bool down = _actions.Contains(EPlayerAction.DOWN); if (up || down || left || right) { direction = PlayerDirectionUtils.GetPlayerDirection(up, down, left, right); } }
public PlayerCommandData(Packet _packet) { turnNumber = _packet.ReadInt(); deltaTime = _packet.ReadFloat(); position = _packet.ReadVector2(); direction = (EObjectDirection)_packet.ReadInt(); int actionCount = _packet.ReadInt(); actions = new List <EPlayerAction>(); for (int i = 0; i < actionCount; i++) { actions.Add((EPlayerAction)_packet.ReadInt()); } int abilityActivationCount = _packet.ReadInt(); abilityActivations = new List <AbilityActivationData>(); for (int i = 0; i < abilityActivationCount; i++) { abilityActivations.Add(new AbilityActivationData(_packet)); } }
private void FixedUpdate() { //TODO now we apply directly -> fix add interpolation between old and new while (gameStateQueue.Count > 0) { GameState gameState = gameStateQueue.Dequeue(); turnNumber = gameState.turnNumber; //Handle events handleEvents(gameState.events); //Update character states foreach (CharacterStateData characterStateData in gameState.characters) { if (!characters.ContainsKey(characterStateData.id)) { OnCharacterShouldSpawn(characterStateData); } else { CharacterObject character = characters[characterStateData.id]; character.hp = characterStateData.hp; character.speed = characterStateData.speed; //Only update other players if (players[Client.instance.myId].character != null && players[Client.instance.myId].character.id != characterStateData.id) { character.direction = characterStateData.direction; character.Move(new Vector2(characterStateData.position.X, characterStateData.position.Y)); } } } //Update building states foreach (BuildingStateData buildingStateData in gameState.buildings) { if (!buildings.ContainsKey(buildingStateData.id)) { onBuildingShouldSpawn(buildingStateData); } else { //TODO } } //Handle local player input if (players.ContainsKey(Client.instance.myId) && players[Client.instance.myId].character != null) { Player localPlayer = players[Client.instance.myId]; CharacterObject character = localPlayer.character; float delta = Time.deltaTime; List <EPlayerAction> actions = PlayerController.GetActions(); List <EPlayerAction> abilities = PlayerController.GetAbilities(); List <AbilityActivationData> abilityActivations = ActivateAbilities(character, abilities); MoveLocalPlayer(character, actions, delta); character.SetDirection(actions); EObjectDirection direction = character.direction; System.Numerics.Vector2 characterPosition = new System.Numerics.Vector2(character.transform.position.x, character.transform.position.y); //Send player command to server PlayerCommandData cmdData = new PlayerCommandData(turnNumber, delta, characterPosition, direction, actions, abilityActivations); ClientSend.PlayerCommand(cmdData); } gameStateHistory.Add(gameState); } if (gameStateHistory.Count > 5) { gameStateHistory.RemoveAt(0); } }
void Awake() { direction = EObjectDirection.TOP; spriteRenderer = gameObject.GetComponent <SpriteRenderer>(); rb = GetComponent <Rigidbody2D>(); }
public AlphaObject(int _playerId, Vector2 _position, EObjectDirection _direction) : base(_playerId, ECharacterType.ALPHA, Stats.ALPHA_HP, Stats.ALPHA_REGEN, Stats.ALPHA_SPEED, TeamManager.centauriTeam.GetTeamId(), _position, _direction) { }
public QueenObject(int _playerId, Vector2 _position, EObjectDirection _direction) : base(_playerId, ECharacterType.QUEEN, Stats.QUEEN_HP, Stats.QUEEN_REGEN, Stats.QUEEN_SPEED, TeamManager.centauriTeam.GetTeamId(), _position, _direction) { }
public StalkerObject(int _playerId, Vector2 _position, EObjectDirection _direction) : base(_playerId, ECharacterType.STALKER, Stats.STALKER_HP, Stats.STALKER_REGEN, Stats.STALKER_SPEED, TeamManager.centauriTeam.GetTeamId(), _position, _direction) { }
public TyrantObject(int _playerId, Vector2 _position, EObjectDirection _direction) : base(_playerId, ECharacterType.TYRANT, Stats.TYRANT_HP, Stats.TYRANT_REGEN, Stats.TYRANT_SPEED, TeamManager.centauriTeam.GetTeamId(), _position, _direction) { }