1   /*
2    * Created on 2004-12-23
3    *
4    * TODO To change the template for this generated file go to
5    * Window - Preferences - Java - Code Style - Code Templates
6    */
7   package org.sourceforge.jvb3d;
8   
9   import java.awt.GraphicsConfiguration;
10  import java.io.BufferedReader;
11  import java.io.InputStreamReader;
12  import java.net.InetSocketAddress;
13  
14  import javax.media.j3d.Canvas3D;
15  
16  import org.sourceforge.jvb3d.Model.IModelNetwork;
17  import org.sourceforge.jvb3d.Model.Model;
18  import org.sourceforge.jvb3d.Network.ClientFacade;
19  import org.sourceforge.jvb3d.Network.NetworkClientFacade;
20  import org.sourceforge.jvb3d.Network.NetworkClientFacadeHolder;
21  import org.sourceforge.jvb3d.Network.NetworkServerFacade;
22  import org.sourceforge.jvb3d.Network.NetworkServerFacadeHolder;
23  import org.sourceforge.jvb3d.Network.ServerFacade;
24  
25  import com.sun.j3d.utils.universe.SimpleUniverse;
26  
27  /***
28   * @author Develop
29   *
30   * TODO To change the template for this generated type comment go to
31   * Window - Preferences - Java - Code Style - Code Templates
32   */
33  public class ConsoleClient {
34  
35  	static NetworkClientFacade networkFacade;
36  
37  	static Model modelInterface;
38  
39  	static boolean terminate = false;
40  	
41  	public static void main(String[] args) {
42  		GraphicsConfiguration config = SimpleUniverse
43  				.getPreferredConfiguration();
44  
45  		Canvas3D canvas3D = new Canvas3D(config);
46  		modelInterface = new Model(canvas3D, false);
47  		NetworkClientFacadeHolder.setNetworkFacade(new ClientFacade());
48  		networkFacade = NetworkClientFacadeHolder.getNetworkFacade();
49  		networkFacade.setModelInterface(modelInterface);
50  		String avatar = null;
51  		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
52  		
53  		try {
54  			while(!terminate) {
55  				String command = in.readLine();
56  				if(command.equalsIgnoreCase("quit")) terminate = true;
57  				else if(command.equalsIgnoreCase("updateall")) {
58  					System.out.println("sending all updates");
59  					networkFacade.sendAllUpdate();
60  				}
61  				else if(command.startsWith("update ")) {
62  					int pos = command.indexOf(" ");
63  					System.out.println("sending update for: "+command.substring(pos+1));
64  					networkFacade.sendUpdate(command.substring(pos+1));
65  				}
66  				else if(command.startsWith("join ")) {
67  					int pos = command.indexOf(" ");
68  					int lastpos = command.lastIndexOf(" ");
69  					System.out.println("joining: "+command.substring(pos+1, lastpos)+" on "+command.substring(lastpos+1));
70  					avatar = networkFacade.join(new InetSocketAddress(command.substring(pos+1, lastpos), Integer.parseInt(command.substring(lastpos+1))));
71  					modelInterface.createLocalPlayer(avatar);
72  					System.out.println("joined as: "+avatar);
73  				}
74  				else if(command.equalsIgnoreCase("floodupdates")) {
75  					System.out.println("flooding server with updates");
76  					for(int i=0; i<10; i++)
77  						networkFacade.sendUpdate(avatar);
78  				}
79  			}
80  		}
81  		catch (Exception e) {
82  			e.printStackTrace();
83  		}
84  	}
85  }