package com.weem.epicinventor.network;
import com.weem.epicinventor.*;
import com.weem.epicinventor.actor.*;
import com.weem.epicinventor.actor.monster.*;
import com.weem.epicinventor.hud.*;
import com.weem.epicinventor.placeable.*;
import com.weem.epicinventor.resource.*;
import com.weem.epicinventor.utility.*;
import com.weem.epicinventor.world.block.*;
import java.io.*;
import java.net.*;
class ClientSendThread extends Thread {
private Registry registry;
private GameController gameController;
protected DatagramSocket socket;
protected DatagramPacket packet = null;
protected volatile InetAddress address;
protected volatile int port;
protected volatile boolean running = true;
protected UDPKeys oldUK;
public ClientSendThread(Registry r, GameController gc, DatagramSocket s, InetAddress a, int p) {
registry = r;
gameController = gc;
socket = s;
address = a;
port = p;
System.out.println("ClientSendThread started");
String data = "Go!";
try {
sendPacket(data);
} catch (IOException e) {
e.printStackTrace();
//running = false;
}
}
public void run() {
while (running) {
sendKeyData();
try {
sleep(20);
} catch (InterruptedException ex) {
}
}
}
public void setRunning(boolean r) {
running = r;
}
public void sendKeyData() {
PlayerManager playerManager = registry.getPlayerManager();
if (playerManager != null) {
Player p = registry.getPlayerManager().getCurrentPlayer();
if (p != null) {
UDPKeys uk = new UDPKeys(
p.getId(),
gameController.getGamePanel().keySpacePressed,
gameController.getGamePanel().keyRightPressed,
gameController.getGamePanel().keyLeftPressed,
gameController.getGamePanel().keyGatherPressed,
gameController.getGamePanel().keyRobotPressed);
if(uk.hasChange(oldUK)) {
try {
sendPacket(uk);
oldUK = null;
oldUK = uk;
} catch (IOException e) {
e.printStackTrace();
//running = false;
}
}
}
}
}
public void sendPacket(Object o) throws IOException {
//System.out.println("Client Sending Data: " + o + "(" + address.toString() + ":" + port + ")");
ByteArrayOutputStream byteStream = new ByteArrayOutputStream(5000);
ObjectOutputStream os = new ObjectOutputStream(new BufferedOutputStream(byteStream));
os.flush();
os.writeObject(o);
os.flush();
byte[] sendBuf = byteStream.toByteArray();
DatagramPacket packet = new DatagramPacket(sendBuf, sendBuf.length, address, port);
int byteCount = packet.getLength();
socket.send(packet);
os.close();
}
}