public void RequestAttack(int abilityId, int targetId, Vector3 position) { Combat_AttackRequest packet = (Combat_AttackRequest)IntrepidSerialize.TakeFromPool(PacketType.Combat_AttackRequest); packet.frameId = Client.FrameID; packet.abilityId = abilityId; packet.targetId = targetId; packet.position = position; Client.Send(packet); }
private void AttackRequestPacket(Combat_AttackRequest packet) { // TODO: Validate attack. Combat_AttackOriginate ao = (Combat_AttackOriginate)IntrepidSerialize.TakeFromPool(PacketType.Combat_AttackOriginate); ao.attackerId = EntityId; ao.frameId = Server.FrameID; ao.abilityId = packet.abilityId; ao.targetId = packet.targetId; ao.position = packet.position; // keep in mind threading things /*int nearbyPlayersCount = */ SpatialPartitioning.GetEntitiesInRadius(ref nearbyPlayers, Position); Server.Send(ao, nearbyPlayers.Select(e => e.EntityId)); }