/*
* (c) 2000-2009 Carlos G�mez Rodr�guez, todos los derechos reservados / all rights reserved.
* Licencia en license/bsd.txt / License in license/bsd.txt
*/
package eu.irreality.age.irc;
import java.util.*;
import eu.irreality.age.i18n.UIMessages;
import eu.irreality.age.server.PartidaEnCurso;
//analogous to SimpleTelnetClientSelector. AgeIrcBot would be the SimpleTelnetClientHandler.
public class IrcDccChatGameSelector extends IrcDccChatSynchronousHandler
{
public PartidaEnCurso getPartidaSelection( List partidas )
{
//aqu� parafernalia del men�
System.out.println("getPartidaSelection() called");
System.out.println("Socket: " + s);
System.out.println("Sizeof partidas: " + partidas.size() );
try
{
s.waitUntilConnected();
}
catch ( InterruptedException intex )
{
System.out.println(intex);
return null;
}
//synchronized(s)
//{
System.out.println("The Socket is: " + s);
write(UIMessages.getInstance().getMessage("irc.note.1")+"\n");
write(UIMessages.getInstance().getMessage("irc.note.2")+"\n");
write(UIMessages.getInstance().getMessage("irc.note.3")+"\n");
write(UIMessages.getInstance().getMessage("irc.note.4")+"\n");
write(UIMessages.getInstance().getMessage("irc.note.5")+"\n");
write(UIMessages.getInstance().getMessage("irc.note.6")+"\n");
write(UIMessages.getInstance().getMessage("irc.note.7")+"\n");
write(UIMessages.getInstance().getMessage("irc.note.8")+"\n");
write(UIMessages.getInstance().getMessage("irc.note.9")+"\n");
write(UIMessages.getInstance().getMessage("irc.note.1")+"\n");
/*
write("=========\n");
write("Nota importante sobre el uso de IRC:\n");
write("El Aetheria Game Engine est� dise�ado para que se pueda jugar a sus juegos a trav�s de distintas plataformas, incluido el IRC.\n");
write("No obstante, una plataforma como el IRC tiene serias limitaciones y no es el medio �ptimo para jugar.\n");
write("Adem�s de informaci�n sobrante que suelen introducir los clientes IRC, como por ejemplo el nick del interlocutor, las desventajas de jugar por IRC son las siguientes:\n");
write("* Como s�lo se pueden mandar l�neas no vac�as, no hay interacci�n posible con el usuario del estilo de \"pulsa una tecla para continuar\". Donde el juego est� programado para tales interacciones, se te pedir� que introduzcas una l�nea no vac�a.\n");
write("* Como s�lo se pueden enviar l�neas, cada instrucci�n de escritura del juego se hace corresponder con una l�nea, forzando saltos de l�nea donde no deber�a haberlos. Esto puede hacer m�s \"feo\" el formato del juego.\n");
write("* Falta la capacidad multimedia que se obtiene con el cliente de AGE, adem�s de otras opciones como configuraciones de color, etc.\n");
write("Busca informaci�n sobre el cliente de AGE en http://www.irreality.eu/age/index.html?jtexto.htm o desc�rgatelo en http://code.google.com/p/aetheria/\n");
write("==========\n");
*/
//}
if ( partidas.size() < 1 )
{
write(UIMessages.getInstance().getMessage("server.no.games")+"\n");
return null;
}
if ( partidas.size() == 1 )
{
//autoseleccionar la �nica que hay
System.out.println("Autoselect enabled.");
PartidaEnCurso pec = (PartidaEnCurso) partidas.get(0);
if ( pec.getPlayers() >= pec.getMaxPlayers() )
{
; //como si hubiera varias partidas, mostrar men�
}
else
{
return pec;
}
}
//c�digo para m�s de una partida en curso:
boolean done = false;
while ( !done )
{
write(UIMessages.getInstance().getMessage("server.active.games")+"\n");
for ( int i = 0 ; i < partidas.size() ; i++ )
{
PartidaEnCurso pec = (PartidaEnCurso) partidas.get(i);
System.out.println(i + "," + pec);
System.out.println(partidas);
write ( (i+1) + ". " + pec.getNombre() + " " + "(" + pec.getPlayers() + "/" + pec.getMaxPlayers() + ")" + "\n" );
}
write(UIMessages.getInstance().getMessage("server.enter.game.number")+" ");
String linea = getInput();
int part = -1;
try
{
part = Integer.valueOf ( linea ).intValue();
}
catch ( NumberFormatException nfe )
{
;
}
if ( part > 0 && part <= partidas.size() )
{
PartidaEnCurso p = (PartidaEnCurso) partidas.get(part-1);
if ( p.getPlayers() < p.getMaxPlayers() )
{
System.out.println("Returnin' one of them.");
return p;
}
else
write(UIMessages.getInstance().getMessage("server.player.limit.hit")+"\n");
}
}
return null;
}
}