package ru.alastar.net;
import java.io.IOException;
import java.util.Hashtable;
import ru.alastar.main.net.responses.AddServerResponse;
import ru.alastar.main.net.responses.AuthResponse;
import ru.alastar.main.net.responses.RegisterResponse;
import ru.alastar.main.net.responses.ServerListing;
import com.alastar.game.MainScreen;
import com.alastar.game.ServerListingState;
import com.alastar.game.gui.GUICore;
import com.alastar.game.gui.constructed.ServersListGUI;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Application.ApplicationType;
public class LoginClient
{
private static String host = "127.0.0.1";
private static int port = 2526;
public static com.esotericsoftware.kryonet.Client client = null;
public static Hashtable<String, String> servers = new Hashtable<String, String>();
public static void StartClient() throws Exception
{
client = new com.esotericsoftware.kryonet.Client();
client.start();
client.addListener(new LoginClientListener(client));
}
public static void Connect()
{
try
{
if (Gdx.app.getType() == ApplicationType.Android)
host = "10.0.0.2";
client.connect(100, host, port, port + 1);
} catch (IOException e)
{
e.printStackTrace();
}
}
public static void Send(Object r)
{
client.sendUDP(r);
}
public static void Log(String s)
{
System.out.println(s);
}
public static void handleAuth(AuthResponse r)
{
switch (r.state)
{
case AccountNotExists:
MainScreen.PushMessage(r.msg, true);
break;
case AlreadyLogged:
MainScreen.PushMessage(r.msg, true);
break;
case InvalidCredentials:
MainScreen.PushMessage(r.msg, true);
break;
case ServerUnavailable:
MainScreen.PushMessage(r.msg, true);
break;
case Success:
MainScreen.PushMessage(r.msg, false);
break;
case UnknownError:
MainScreen.PushMessage(r.msg, true);
break;
default:
break;
}
}
public static void addServer(AddServerResponse r)
{
((ServersListGUI) GUICore.getConstructedByName("servers_list"))
.addServer(r.name, r.address);
servers.put(r.name, r.address);
}
public static void handleServerListing(ServerListing r)
{
if (r.state == ServerListingState.End)
{
GUICore.enableOne("servers_list");
} else
{
MainScreen.PushMessage("Loading Servers...", false);
}
}
public static void handleRegisterResponse(RegisterResponse r)
{
MainScreen.PushMessage(r.reason, true);
}
}