package bomberman.network; import java.util.Map; import java.util.TreeMap; import bomberman.client.BombermanClient; public class BombermanNetworkDecoder { BombermanClient bc; Map operations; public BombermanNetworkDecoder(BombermanClient bc) { this.bc = bc; this.operations = new TreeMap(); put(new BNetworkOpText(bc)); put(new BNetworkOpArena(bc)); put(new BNetworkOpPlayer(bc)); put(new BNetworkOpAnimation(bc)); put(new BNetworkOpPoints(bc)); put(new BNetworkOpTime(bc)); } private void put(BNetworkOperation op) { operations.put(op.getID(), op); } // decide qual operação é e chama a classe responsável public boolean process(byte[] data) { int op = data[0]; operations.get(op).decode(data); return false; } } //-------------------------------------------------------------------------------- package bomberman.network; import bomberman.client.BombermanClient; public abstract class BNetworkOperation { BombermanClient bc; public BNetworkOperation(BombermanClient bc) { this.bc = bc; } public abstract int getID(); public abstract void decode(byte[] data); } //-------------------------------------------------------------------------------- package bomberman.network; import utilities.Conversion; import bomberman.client.BombermanClient; import bomberman.geral.BombermanConstants; public class BNetworkOpTime extends BNetworkOperation { public BNetworkOpTime(BombermanClient bc) { super(bc); } @Override public int getID() { return BombermanConstants.BOMBERMAN_TIME; } @Override public void decode(byte[] data) { bc.bTime = Conversion.byteArrayToInt(data, 2); } }