package org.menacheri.zombieclient;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import org.menacheri.jetclient.app.Session;
import org.menacheri.jetclient.app.impl.SessionFactory;
import org.menacheri.jetclient.communication.NettyMessageBuffer;
import org.menacheri.jetclient.event.Event;
import org.menacheri.jetclient.event.impl.AbstractSessionEventHandler;
import org.menacheri.jetclient.util.LoginHelper;
import org.menacheri.jetclient.util.LoginHelper.LoginBuilder;
import org.menacheri.zombie.domain.IAM;
public class ZombieJetclient
{
public static void main(String[] args) throws Exception
{
LoginBuilder builder = new LoginBuilder().username("user")
.password("pass").connectionKey("Zombie_ROOM_1_REF_KEY_1")
.jetserverTcpHostName("localhost").tcpPort(18090)
.jetserverUdpHostName("255.255.255.255").udpPort(18090);
LoginHelper loginHelper = builder.build();
SessionFactory sessionFactory = new SessionFactory(loginHelper);
ScheduledExecutorService taskExecutor = Executors.newSingleThreadScheduledExecutor();
for(int i = 1; i<=50; i++){
Session session = sessionFactory.createAndConnectSession();
addDefaultHandlerToSession(session);
GamePlay task = null;
if((i % 2) == 0){
task = new GamePlay(IAM.DEFENDER, session);
}
else{
task = new GamePlay(IAM.ZOMBIE, session);
}
taskExecutor.scheduleAtFixedRate(task, 2000, 200, TimeUnit.MILLISECONDS);
}
}
private static void addDefaultHandlerToSession(Session session)
{
// we are only interested in data in, so override only that method.
AbstractSessionEventHandler handler = new AbstractSessionEventHandler(session)
{
@Override
public void onDataIn(Event event)
{
NettyMessageBuffer buffer = (NettyMessageBuffer)event.getSource();
System.out.println("Remaining Human Population: " + buffer.readInt());
}
};
session.addHandler(handler);
}
}