001 package org; 002 003 import java.net.*; 004 import java.io.*; 005 import java.util.*; 006 import javax.swing.*; 007 import javax.swing.event.*; 008 import org.util.xml.io.*; 009 import org.util.xml.element.*; 010 import org.server.*; 011 import org.*; 012 013 public class TeamManager { 014 015 private ArrayList<TeamManagerListener> listener_list_ = new ArrayList<TeamManagerListener>(); 016 private ArrayList<RealPlayer> real_player_list_ = new ArrayList<RealPlayer>(); 017 private ArrayList<BufferedWriter> log_writer_list_ = new ArrayList<BufferedWriter>(); 018 019 public TeamManager(XMLConfigManager config) throws Exception { 020 init(config); 021 } 022 023 private XMLConfigManager config_; 024 private DatagramPacket packet_; 025 private DatagramSocket socket_; 026 private byte[] receive_buf_; 027 028 public void init(XMLConfigManager config) throws Exception { 029 030 config_ = config; 031 032 if(config_.getBoolean("dummyserver/launch", true)) { 033 new Thread(new Runnable(){public void run(){try{ 034 DummyServer server = new DummyServer(config_); 035 server.start(); 036 }catch(Exception e){e.printStackTrace();}}}).start(); 037 } 038 039 TagElement[] player_info_list = config_.getTag("player_list").getTagChildren("player"); 040 041 for(int i=0;i<player_info_list.length;i++) { 042 final TagElement player_info = player_info_list[i]; 043 new Thread(new Runnable(){public void run(){try{ 044 // Thread.sleep(1000); 045 // alert("start sample"); 046 String ip = config_.getValue("server/ip", "localhost"); 047 int port = config_.getInt("server/port", 3130); 048 int timeout = config_.getInt("server/timeout", 1000); 049 RealPlayer rp = new RealPlayer(ip, port, timeout, player_info); 050 051 addPlayer(rp); 052 }catch(Exception e){e.printStackTrace();}}}).start(); 053 } 054 055 056 057 // tryToConnect(); 058 } 059 060 061 public void addTeamManagerListener(TeamManagerListener listener) { 062 for(int i=0;i<real_player_list_.size();i++) { 063 listener.addPlayer(real_player_list_.get(i)); 064 } 065 listener_list_.add(listener); 066 System.out.println("add listener"); 067 } 068 public void removeTeamManagerListener(TeamManagerListener listener) { 069 listener_list_.remove(listener); 070 } 071 public void addPlayer(RealPlayer real) { 072 real_player_list_.add(real); 073 fireAddedPlayer(real); 074 } 075 076 private void fireAddedPlayer(RealPlayer real) { 077 System.out.println("fire added player"); 078 alert("connection detected: "+real.getID()); 079 for(int i=0;i<listener_list_.size();i++) { 080 listener_list_.get(i).addPlayer(real); 081 } 082 } 083 public void fireConnected(RealPlayer real, VirtualPlayer virtual) { 084 for(int i=0;i<listener_list_.size();i++) 085 listener_list_.get(i).connected(real, virtual); 086 } 087 public void disconnected(RealPlayer real, VirtualPlayer virtual) { 088 for(int i=0;i<listener_list_.size();i++) 089 listener_list_.get(i).disconnected(real, virtual); 090 } 091 092 /* 093 protected void fireChanges(Object source) { 094 ChangeEvent e = new ChangeEvent(source); 095 for(int i=0;i<listener_list_.size();i++) 096 listener_list_.get(i).stateChanged(e); 097 } 098 */ 099 public void addLogWriter(Writer log_writer) { 100 log_writer_list_.add(new BufferedWriter(log_writer)); 101 } 102 public void removeLogWriter(Writer log_writer) { 103 log_writer_list_.remove(new BufferedWriter(log_writer)); 104 } 105 public void alert(Object message) { 106 for(int i=0;i<log_writer_list_.size();i++) { 107 try{ 108 BufferedWriter bw = log_writer_list_.get(i); 109 bw.write(message.toString()); 110 bw.newLine(); 111 bw.flush(); 112 } catch(Exception e) { e.printStackTrace(); } 113 } 114 // javax.swing.JOptionPane.showMessageDialog(null, message); 115 } 116 }