package se.rhel.network.packet; import com.badlogic.gdx.math.Vector3; import com.badlogic.gdx.utils.Array; import se.rhel.model.entity.IPlayer; import se.rhel.packet.Packet; import java.util.ArrayList; /** * Group: Multiplayer * * Size: 35 bytes * number of players (MAX 18) */ public class PlayerPacket extends Packet { public ArrayList<UpdateStruct> mPlayers = new ArrayList<>(); public PlayerPacket(Array<IPlayer> players) { super(PlayerPacket.class); putInt(players.size); for(int i = 0; i < players.size; i++) { IPlayer player = players.get(i); addData(i+1, player.getPosition(), player.getRotation()); } super.ready(); } public PlayerPacket(int clientId, Vector3 position, Vector3 rotation) { super(PlayerPacket.class); super.putInt(1); addData(clientId, position, rotation); super.ready(); } private void addData(int clientId, Vector3 position, Vector3 rotation) { super.putInt(clientId); super.putFloat(position.x); super.putFloat(position.y); super.putFloat(position.z); super.putFloat(rotation.x); super.putFloat(rotation.y); super.putFloat(rotation.z); } public PlayerPacket(byte[] data) { super(data); int x = super.getInt(); for(int i = 0; i < x; i++) { int id = getInt(); Vector3 pos = new Vector3(getFloat(), getFloat(), getFloat()); Vector3 rot = new Vector3(getFloat(), getFloat(), getFloat()); mPlayers.add(new UpdateStruct(id, pos, rot)); } } }