More slow progress toward a test application that does chat to a Crowd
server. It looks like I'm going to have to write my own user interface toolkit for JME as nothing exists for any Java-based GL library or engine and precious few toolkits exist in C++. Yay! git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@3519 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
@@ -21,6 +21,8 @@
|
||||
|
||||
package com.threerings.jme.client;
|
||||
|
||||
import com.jme.util.LoggingSystem;
|
||||
|
||||
import com.threerings.util.Name;
|
||||
|
||||
import com.threerings.presents.client.Client;
|
||||
@@ -80,6 +82,8 @@ public class JabberApp extends JmeApp
|
||||
|
||||
public static void main (String[] args)
|
||||
{
|
||||
LoggingSystem.getLogger().setLevel(java.util.logging.Level.OFF);
|
||||
|
||||
String server = "localhost";
|
||||
if (args.length > 0) {
|
||||
server = args[0];
|
||||
|
||||
@@ -21,6 +21,12 @@
|
||||
|
||||
package com.threerings.jme.client;
|
||||
|
||||
import com.jme.input.InputHandler;
|
||||
import com.jme.renderer.Renderer;
|
||||
import com.jme.scene.Node;
|
||||
import com.jme.ui.UIColorScheme;
|
||||
import com.jme.ui.UIFonts;
|
||||
|
||||
import com.samskivert.util.Config;
|
||||
import com.threerings.util.MessageManager;
|
||||
|
||||
@@ -34,6 +40,8 @@ import com.threerings.crowd.client.OccupantDirector;
|
||||
import com.threerings.crowd.client.PlaceView;
|
||||
import com.threerings.crowd.util.CrowdContext;
|
||||
|
||||
import com.threerings.jme.JmeContext;
|
||||
|
||||
/**
|
||||
* The Jabber client takes care of instantiating all of the proper
|
||||
* managers and loading up all of the necessary configuration and getting
|
||||
@@ -49,6 +57,8 @@ public class JabberClient
|
||||
*/
|
||||
public void init (JabberApp app)
|
||||
{
|
||||
_app = app;
|
||||
|
||||
// create our context
|
||||
_ctx = createContextImpl();
|
||||
|
||||
@@ -125,7 +135,7 @@ public class JabberClient
|
||||
* The context implementation. This provides access to all of the
|
||||
* objects and services that are needed by the operating client.
|
||||
*/
|
||||
protected class JabberContextImpl implements CrowdContext
|
||||
protected class JabberContextImpl implements CrowdContext, JmeContext
|
||||
{
|
||||
/**
|
||||
* Apparently the default constructor has default access, rather
|
||||
@@ -133,52 +143,68 @@ public class JabberClient
|
||||
* protected. Why, I don't know, but we need to be able to extend
|
||||
* this class elsewhere, so we need this.
|
||||
*/
|
||||
protected JabberContextImpl ()
|
||||
{
|
||||
protected JabberContextImpl () {
|
||||
}
|
||||
|
||||
public Client getClient ()
|
||||
{
|
||||
public Client getClient () {
|
||||
return _client;
|
||||
}
|
||||
|
||||
public DObjectManager getDObjectManager ()
|
||||
{
|
||||
public DObjectManager getDObjectManager () {
|
||||
return _client.getDObjectManager();
|
||||
}
|
||||
|
||||
public Config getConfig ()
|
||||
{
|
||||
public Config getConfig () {
|
||||
return _config;
|
||||
}
|
||||
|
||||
public LocationDirector getLocationDirector ()
|
||||
{
|
||||
public LocationDirector getLocationDirector () {
|
||||
return _locdir;
|
||||
}
|
||||
|
||||
public OccupantDirector getOccupantDirector ()
|
||||
{
|
||||
public OccupantDirector getOccupantDirector () {
|
||||
return _occdir;
|
||||
}
|
||||
|
||||
public ChatDirector getChatDirector ()
|
||||
{
|
||||
public ChatDirector getChatDirector () {
|
||||
return _chatdir;
|
||||
}
|
||||
|
||||
public void setPlaceView (PlaceView view)
|
||||
{
|
||||
public void setPlaceView (PlaceView view) {
|
||||
// TBD
|
||||
}
|
||||
|
||||
public void clearPlaceView (PlaceView view)
|
||||
{
|
||||
public void clearPlaceView (PlaceView view) {
|
||||
// we'll just let the next place view replace our old one
|
||||
}
|
||||
|
||||
public Renderer getRenderer () {
|
||||
return _app.getContext().getRenderer();
|
||||
}
|
||||
|
||||
public Node getRoot () {
|
||||
return _app.getContext().getRoot();
|
||||
}
|
||||
|
||||
public InputHandler getInputHandler () {
|
||||
return _app.getContext().getInputHandler();
|
||||
}
|
||||
|
||||
public InputHandler getBufferedInputHandler () {
|
||||
return _app.getContext().getBufferedInputHandler();
|
||||
}
|
||||
|
||||
public UIColorScheme getColorScheme () {
|
||||
return _app.getContext().getColorScheme();
|
||||
}
|
||||
|
||||
public UIFonts getFonts () {
|
||||
return _app.getContext().getFonts();
|
||||
}
|
||||
}
|
||||
|
||||
protected CrowdContext _ctx;
|
||||
protected JabberApp _app;
|
||||
protected Config _config = new Config("jabber");
|
||||
|
||||
protected Client _client;
|
||||
|
||||
@@ -14,6 +14,6 @@ public class JabberController extends PlaceController
|
||||
{
|
||||
protected PlaceView createPlaceView (CrowdContext ctx)
|
||||
{
|
||||
return null;
|
||||
return new JabberView(ctx);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
//
|
||||
// $Id$
|
||||
|
||||
package com.threerings.jme.client;
|
||||
|
||||
import com.threerings.crowd.client.PlaceView;
|
||||
import com.threerings.crowd.data.PlaceObject;
|
||||
import com.threerings.crowd.util.CrowdContext;
|
||||
|
||||
import com.threerings.jme.JmeContext;
|
||||
import com.threerings.jme.chat.ChatView;
|
||||
|
||||
/**
|
||||
* Manages the "view" when we're in the chat room.
|
||||
*/
|
||||
public class JabberView
|
||||
implements PlaceView
|
||||
{
|
||||
public JabberView (CrowdContext ctx)
|
||||
{
|
||||
_ctx = ctx;
|
||||
_jctx = (JmeContext)ctx;
|
||||
_chat = new ChatView(_jctx, _ctx.getChatDirector());
|
||||
_jctx.getRoot().attachChild(_chat);
|
||||
}
|
||||
|
||||
// documentation inherited from interface PlaceView
|
||||
public void willEnterPlace (PlaceObject plobj)
|
||||
{
|
||||
_chat.willEnterPlace(plobj);
|
||||
}
|
||||
|
||||
// documentation inherited from interface PlaceView
|
||||
public void didLeavePlace (PlaceObject plobj)
|
||||
{
|
||||
_chat.didLeavePlace(plobj);
|
||||
}
|
||||
|
||||
protected CrowdContext _ctx;
|
||||
protected JmeContext _jctx;
|
||||
protected ChatView _chat;
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
//
|
||||
// $Id$
|
||||
|
||||
package com.threerings.jme.data;
|
||||
|
||||
import com.threerings.crowd.data.PlaceConfig;
|
||||
import com.threerings.jme.client.JabberController;
|
||||
|
||||
/**
|
||||
* Defines the necessary bits for our chat room.
|
||||
*/
|
||||
public class JabberConfig extends PlaceConfig
|
||||
{
|
||||
// documentation inherited
|
||||
public Class getControllerClass ()
|
||||
{
|
||||
return JabberController.class;
|
||||
}
|
||||
|
||||
// documentation inherited
|
||||
public String getManagerClassName ()
|
||||
{
|
||||
// nothing special needed on the server side
|
||||
return "com.threerings.crowd.server.PlaceManager";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
//
|
||||
// $Id$
|
||||
|
||||
package com.threerings.jme.server;
|
||||
|
||||
import com.threerings.crowd.Log;
|
||||
import com.threerings.crowd.data.PlaceObject;
|
||||
import com.threerings.crowd.server.CrowdServer;
|
||||
import com.threerings.crowd.server.PlaceManager;
|
||||
import com.threerings.crowd.server.PlaceRegistry;
|
||||
|
||||
import com.threerings.jme.data.JabberConfig;
|
||||
|
||||
/**
|
||||
* A basic server that creates a single room and sticks everyone in it
|
||||
* where they can chat with one another.
|
||||
*/
|
||||
public class JabberServer extends CrowdServer
|
||||
{
|
||||
// documentation inherited
|
||||
public void init ()
|
||||
throws Exception
|
||||
{
|
||||
super.init();
|
||||
|
||||
// create a single location
|
||||
plreg.createPlace(
|
||||
new JabberConfig(), new PlaceRegistry.CreationObserver() {
|
||||
public void placeCreated (PlaceObject place, PlaceManager pmgr) {
|
||||
Log.info("Created chat room " + pmgr.where() + ".");
|
||||
_place = pmgr;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public static void main (String[] args)
|
||||
{
|
||||
JabberServer server = new JabberServer();
|
||||
try {
|
||||
server.init();
|
||||
server.run();
|
||||
} catch (Exception e) {
|
||||
Log.warning("Unable to initialize server.");
|
||||
Log.logStackTrace(e);
|
||||
}
|
||||
}
|
||||
|
||||
protected PlaceManager _place;
|
||||
}
|
||||
Reference in New Issue
Block a user