/* * (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.List; import java.util.Vector; import eu.irreality.age.World; import eu.irreality.age.debug.Debug; import eu.irreality.age.i18n.UIMessages; import eu.irreality.age.server.ServerHandler; public class IrcAgeBot extends IrcBot { public IrcAgeBot ( String server , int port , String nick , List channels ) throws Exception { super ( server , port , nick, UIMessages.getInstance().getMessage("irc.bot.longname") , channels ); } public void privateMsg ( String sender , String message ) { if ( message.equalsIgnoreCase("DCC") ) { IrcDccChatGameSelector idcsh = new IrcDccChatGameSelector ( ); try { IrcDccChatSocket idcs = ircSocket.sendDccChatRequest ( sender , (short)0 , idcsh ); idcs.setPriority(Thread.MIN_PRIORITY); idcsh.setSocket ( idcs ); launchGame ( idcsh ); } catch ( java.io.IOException ioe ) { System.err.println("IO Exc."); } } else if (!(sender.equals("NiCK")|sender.equals("agenda")|sender.equals("MeMo")|sender.equalsIgnoreCase("information"))) { ircSocket.sendPrivate(sender,UIMessages.getInstance().getMessage("irc.bot.intro.1")); ircSocket.sendPrivate(sender, UIMessages.getInstance().getMessage("irc.bot.intro.2")); ircSocket.sendPrivate(sender,UIMessages.getInstance().getMessage("irc.bot.intro.3", "$url", UIMessages.getInstance().getMessage("age.download.url"))); } System.out.println(sender+": "+message); } public void dccChatRequest( String nick , java.net.InetAddress ip , short port ) { IrcDccChatGameSelector idcsh = new IrcDccChatGameSelector ( ); try { IrcDccChatSocket idcs = ircSocket.acceptDccChatRequest ( nick , ip , port , idcsh ); idcs.setPriority(Thread.MIN_PRIORITY); ircSocket.sendPrivate ( nick , UIMessages.getInstance().getMessage("irc.accepting.dcc") ); idcsh.setSocket ( idcs ); launchGame ( idcsh ); } catch ( Exception e ) { ircSocket.sendPrivate ( nick , UIMessages.getInstance().getMessage("irc.cannot.accept.dcc") ); } } public void launchGame ( final IrcDccChatGameSelector idcgs ) { //hacer un fork, porque la selecci�n de mundo, etc. tiene esperas, y mientras tenemos que poder atender a otros clientes Thread th = new Thread("IRC Game Launcher") { public void run() { Debug.println("Game launchin'"); World mundo = idcgs.getPartidaSelection( getPartidasEnCurso() ).getMundo(); new IrcDccChatClientProxy ( idcgs.getSocket() , mundo ); //SimpleTelnetClientProxy stpc = new SimpleTelnetClientProxy ( incoming , ccount , mundo ); //activeClients.addElement ( stpc ); } }; th.start(); } /* ServerSocket s = new ServerSocket ( thePort ); for (;;) { final Socket incoming = s.accept(); //hacer un fork, porque la selecci�n de mundo, etc. tiene esperas, y mientras tenemos que poder atender a otros clientes Thread th = new Thread() { public void run() { int ccount = getAndIncClientCount(); //synchronized Debug.println("Spawnin' client proxy " + ccount ); SimpleTelnetClientSelector stcs = new SimpleTelnetClientSelector ( incoming , ccount ); World mundo = stcs.getPartidaSelection( getPartidasEnCurso() ).getMundo(); SimpleTelnetClientProxy stpc = new SimpleTelnetClientProxy ( incoming , ccount , mundo ); activeClients.addElement ( stpc ); } }; th.start(); } */ public java.util.List getPartidasEnCurso() { return ServerHandler.getInstance().getPartidasIrc(); } }