// Path: core/src/com/sillygames/killingSpree/helpers/Event.java
// public class Event {
// 
//     public enum State { CONNECTED, DISCONNECTED, RECEIVED };
//     public State state;
//     public Object object;
//     
//     public Event() {
//         super();
//     }
//     
//     public Event set(State state, Object object) {
//         this.state = state;
//         this.object = object;
//         return this;
//     }
//     
// }
// 
// Path: core/src/com/sillygames/killingSpree/networking/messages/AudioMessage.java
// public class AudioMessage implements Poolable{
//     public byte audio;
// 
//     @Override
//     public void reset() {
//         audio = 0;
//     }
//     
//     public void jump() {
//         audio |= 1 << 0;
//     }
//     
//     public void shoot() {
//         audio |= 1 << 1;
//     }
//     
//     public void hurt() {
//         audio |= 1 << 2;
//     }
//     
//     public void explode() {
//         audio |= 1 << 3;
//     }
//     
//     public void jumpedOn() {
//         audio |= 1 << 4;
//     }    
//     
//     public boolean getJump() {
//         return ((audio & (1 << 0)) != 0);
//     }
//     
//     public boolean getShoot() {
//         return ((audio & (1 << 1)) != 0);
//     }
//     
//     public boolean getHurt() {
//         return ((audio & (1 << 2)) != 0);
//     }
//     
//     public boolean getExplode() {
//         return ((audio & (1 << 3)) != 0);
//     }
//     
//     public boolean getJumpedOn() {
//         return ((audio & (1 << 4)) != 0);
//     }
//     
// }
// 
// Path: core/src/com/sillygames/killingSpree/networking/messages/ConnectMessage.java
// public class ConnectMessage {
//     
//     public ArrayList<String> hosts;
// 
//     public ConnectMessage() {
//         hosts = new ArrayList<String>();
//     }
//     
//     public void insertNewHost(String host) {
//         hosts.add(host);
//     }
// }
// 
// Path: core/src/com/sillygames/killingSpree/networking/messages/ControlsMessage.java
// public class ControlsMessage implements Poolable{
//     // left | right | up | down | jump | shoot
//     public byte buttonPresses = 0;
//     
//     public boolean shoot() {
//         return (buttonPresses & 0x01) > 0; 
//     }
//     
//     public boolean jump() {
//         return (buttonPresses & 0x02) > 0; 
//     }
//     
//     public boolean down() {
//         return (buttonPresses & 0x04) > 0; 
//     }
//     
//     public boolean up() {
//         return (buttonPresses & 0x08) > 0; 
//     }
//     
//     public boolean right() {
//         return (buttonPresses & 0x10) > 0; 
//     }
//     
//     public boolean left() {
//         return (buttonPresses & 0x20) > 0; 
//     }
//     
//     public boolean throwBomb() {
//         return (buttonPresses & 0x40) > 0; 
//     }
// 
//     @Override
//     public void reset() {
//         buttonPresses = 0;
//     }
// }
// 
// Path: core/src/com/sillygames/killingSpree/networking/messages/EntityState.java
// public class EntityState implements Poolable{
//     
//     public short id;
//     public byte type;
//     public float x, y;
//     public float angle;
//     public short extra;
//     public float vX, vY;
//     
//     @Override
//     public void reset() {
//         id = 0;
//         type = 0;
//         x = 0;
//         y = 0;
//         angle = 0;
//         extra = 0;
//         vX = 0;
//         vY = 0;
//     }
// 
// }
// 
// Path: core/src/com/sillygames/killingSpree/networking/messages/GameStateMessage.java
// public class GameStateMessage implements Poolable{
//     
//     public ArrayList<EntityState> states;
//     public long time;
//     
//     public GameStateMessage() {
//         states = new ArrayList<EntityState>();
//     }
//     
//     public void addNewState(EntityState state) {
//         states.add(state);
//     }
// 
//     @Override
//     public void reset() {
//         states.clear();
//     }
// 
// }


import com.sillygames.killingSpree.helpers.Event;
import com.sillygames.killingSpree.networking.messages.AudioMessage;
import com.sillygames.killingSpree.networking.messages.ConnectMessage;
import com.sillygames.killingSpree.networking.messages.ControlsMessage;
import com.sillygames.killingSpree.networking.messages.EntityState;
import com.sillygames.killingSpree.networking.messages.GameStateMessage;

package com.sillygames.killingSpree.pool;


public class MessageObjectPool {
    
    public static MessageObjectPool instance = new MessageObjectPool();
    public Pool<ConnectMessage> connectMessagePool;
    public Pool<ControlsMessage> controlsMessagePool;
    public Pool<EntityState> entityStatePool;
    public Pool<GameStateMessage> gameStateMessagePool;
    public Pool<Event> eventPool;
    public Pool<AudioMessage> audioMessagePool;
    
    public MessageObjectPool() {
        connectMessagePool = new Pool<ConnectMessage>() {

            @Override
            protected ConnectMessage getNewObject() {
                return new ConnectMessage();
            }
            
        };
        
        controlsMessagePool = new Pool<ControlsMessage>() {

            @Override
            protected ControlsMessage getNewObject() {
                return new ControlsMessage();
            }
            
        };
        
        entityStatePool = new Pool<EntityState>() {

            @Override
            protected EntityState getNewObject() {
                return new EntityState();
            }
            
        };

// Path: core/src/com/sillygames/killingSpree/helpers/Event.java
// public class Event {
// 
//     public enum State { CONNECTED, DISCONNECTED, RECEIVED };
//     public State state;
//     public Object object;
//     
//     public Event() {
//         super();
//     }
//     
//     public Event set(State state, Object object) {
//         this.state = state;
//         this.object = object;
//         return this;
//     }
//     
// }
// 
// Path: core/src/com/sillygames/killingSpree/networking/messages/AudioMessage.java
// public class AudioMessage implements Poolable{
//     public byte audio;
// 
//     @Override
//     public void reset() {
//         audio = 0;
//     }
//     
//     public void jump() {
//         audio |= 1 << 0;
//     }
//     
//     public void shoot() {
//         audio |= 1 << 1;
//     }
//     
//     public void hurt() {
//         audio |= 1 << 2;
//     }
//     
//     public void explode() {
//         audio |= 1 << 3;
//     }
//     
//     public void jumpedOn() {
//         audio |= 1 << 4;
//     }    
//     
//     public boolean getJump() {
//         return ((audio & (1 << 0)) != 0);
//     }
//     
//     public boolean getShoot() {
//         return ((audio & (1 << 1)) != 0);
//     }
//     
//     public boolean getHurt() {
//         return ((audio & (1 << 2)) != 0);
//     }
//     
//     public boolean getExplode() {
//         return ((audio & (1 << 3)) != 0);
//     }
//     
//     public boolean getJumpedOn() {
//         return ((audio & (1 << 4)) != 0);
//     }
//     
// }
// 
// Path: core/src/com/sillygames/killingSpree/networking/messages/ConnectMessage.java
// public class ConnectMessage {
//     
//     public ArrayList<String> hosts;
// 
//     public ConnectMessage() {
//         hosts = new ArrayList<String>();
//     }
//     
//     public void insertNewHost(String host) {
//         hosts.add(host);
//     }
// }
// 
// Path: core/src/com/sillygames/killingSpree/networking/messages/ControlsMessage.java
// public class ControlsMessage implements Poolable{
//     // left | right | up | down | jump | shoot
//     public byte buttonPresses = 0;
//     
//     public boolean shoot() {
//         return (buttonPresses & 0x01) > 0; 
//     }
//     
//     public boolean jump() {
//         return (buttonPresses & 0x02) > 0; 
//     }
//     
//     public boolean down() {
//         return (buttonPresses & 0x04) > 0; 
//     }
//     
//     public boolean up() {
//         return (buttonPresses & 0x08) > 0; 
//     }
//     
//     public boolean right() {
//         return (buttonPresses & 0x10) > 0; 
//     }
//     
//     public boolean left() {
//         return (buttonPresses & 0x20) > 0; 
//     }
//     
//     public boolean throwBomb() {
//         return (buttonPresses & 0x40) > 0; 
//     }
// 
//     @Override
//     public void reset() {
//         buttonPresses = 0;
//     }
// }
// 
// Path: core/src/com/sillygames/killingSpree/networking/messages/EntityState.java
// public class EntityState implements Poolable{
//     
//     public short id;
//     public byte type;
//     public float x, y;
//     public float angle;
//     public short extra;
//     public float vX, vY;
//     
//     @Override
//     public void reset() {
//         id = 0;
//         type = 0;
//         x = 0;
//         y = 0;
//         angle = 0;
//         extra = 0;
//         vX = 0;
//         vY = 0;
//     }
// 
// }
// 
// Path: core/src/com/sillygames/killingSpree/networking/messages/GameStateMessage.java
// public class GameStateMessage implements Poolable{
//     
//     public ArrayList<EntityState> states;
//     public long time;
//     
//     public GameStateMessage() {
//         states = new ArrayList<EntityState>();
//     }
//     
//     public void addNewState(EntityState state) {
//         states.add(state);
//     }
// 
//     @Override
//     public void reset() {
//         states.clear();
//     }
// 
// }


// Path: core/src/com/sillygames/killingSpree/pool/MessageObjectPool.java
import com.sillygames.killingSpree.helpers.Event;
import com.sillygames.killingSpree.networking.messages.AudioMessage;
import com.sillygames.killingSpree.networking.messages.ConnectMessage;
import com.sillygames.killingSpree.networking.messages.ControlsMessage;
import com.sillygames.killingSpree.networking.messages.EntityState;
import com.sillygames.killingSpree.networking.messages.GameStateMessage;

package com.sillygames.killingSpree.pool;


public class MessageObjectPool {
    
    public static MessageObjectPool instance = new MessageObjectPool();
    public Pool<ConnectMessage> connectMessagePool;
    public Pool<ControlsMessage> controlsMessagePool;
    public Pool<EntityState> entityStatePool;
    public Pool<GameStateMessage> gameStateMessagePool;
    public Pool<Event> eventPool;
    public Pool<AudioMessage> audioMessagePool;
    
    public MessageObjectPool() {
        connectMessagePool = new Pool<ConnectMessage>() {

            @Override
            protected ConnectMessage getNewObject() {
                return new ConnectMessage();
            }
            
        };
        
        controlsMessagePool = new Pool<ControlsMessage>() {

            @Override
            protected ControlsMessage getNewObject() {
                return new ControlsMessage();
            }
            
        };
        
        entityStatePool = new Pool<EntityState>() {

            @Override
            protected EntityState getNewObject() {
                return new EntityState();
            }
            
        };

        entityStatePool.setMax(1024);
