Go back to defaultly broadcasting to game objects, in case someone ever
creates a traditional lobby->room server with narya, and instead allow a broadcast object to be registered with the ChatProvider to which all broadcasts will be sent. git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@3261 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// $Id: ChatProvider.java,v 1.30 2004/08/27 02:12:32 mdb Exp $
|
// $Id$
|
||||||
//
|
//
|
||||||
// Narya library - tools for developing networked games
|
// Narya library - tools for developing networked games
|
||||||
// Copyright (C) 2002-2004 Three Rings Design, Inc., All Rights Reserved
|
// Copyright (C) 2002-2004 Three Rings Design, Inc., All Rights Reserved
|
||||||
@@ -30,6 +30,7 @@ import com.threerings.util.TimeUtil;
|
|||||||
|
|
||||||
import com.threerings.presents.client.InvocationService.InvocationListener;
|
import com.threerings.presents.client.InvocationService.InvocationListener;
|
||||||
import com.threerings.presents.data.ClientObject;
|
import com.threerings.presents.data.ClientObject;
|
||||||
|
import com.threerings.presents.dobj.DObject;
|
||||||
import com.threerings.presents.dobj.DObjectManager;
|
import com.threerings.presents.dobj.DObjectManager;
|
||||||
|
|
||||||
import com.threerings.presents.server.InvocationException;
|
import com.threerings.presents.server.InvocationException;
|
||||||
@@ -86,6 +87,18 @@ public class ChatProvider
|
|||||||
_comAuth = comAuth;
|
_comAuth = comAuth;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set an object to which all broadcasts should be sent, rather
|
||||||
|
* than iterating over the place objects and sending to each of them.
|
||||||
|
*
|
||||||
|
* @param object an object to send all broadcasts, or null to send to
|
||||||
|
* each place object instead.
|
||||||
|
*/
|
||||||
|
public static void setAlternateBroadcastObject (DObject object)
|
||||||
|
{
|
||||||
|
_broadcastObject = object;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initializes the chat services and registers a chat provider with
|
* Initializes the chat services and registers a chat provider with
|
||||||
* the invocation manager.
|
* the invocation manager.
|
||||||
@@ -176,25 +189,39 @@ public class ChatProvider
|
|||||||
public static void broadcast (Name from, String bundle, String msg,
|
public static void broadcast (Name from, String bundle, String msg,
|
||||||
boolean attention)
|
boolean attention)
|
||||||
{
|
{
|
||||||
Iterator iter = CrowdServer.plreg.enumeratePlaces();
|
if (_broadcastObject != null) {
|
||||||
while (iter.hasNext()) {
|
broadcastTo(_broadcastObject, from, bundle, msg, attention);
|
||||||
PlaceObject plobj = (PlaceObject)iter.next();
|
|
||||||
if (plobj.shouldBroadcast()) {
|
|
||||||
if (from == null) {
|
|
||||||
if (attention) {
|
|
||||||
SpeakProvider.sendAttention(plobj, bundle, msg);
|
|
||||||
} else {
|
|
||||||
SpeakProvider.sendInfo(plobj, bundle, msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
SpeakProvider.sendSpeak(plobj, from, bundle, msg,
|
Iterator iter = CrowdServer.plreg.enumeratePlaces();
|
||||||
BROADCAST_MODE);
|
while (iter.hasNext()) {
|
||||||
|
PlaceObject plobj = (PlaceObject)iter.next();
|
||||||
|
if (plobj.shouldBroadcast()) {
|
||||||
|
broadcastTo(plobj, from, bundle, msg, attention);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Direct a broadcast to the specified object.
|
||||||
|
*/
|
||||||
|
protected static void broadcastTo (DObject object,
|
||||||
|
Name from, String bundle, String msg, boolean attention)
|
||||||
|
{
|
||||||
|
if (from == null) {
|
||||||
|
if (attention) {
|
||||||
|
SpeakProvider.sendAttention(object, bundle, msg);
|
||||||
|
} else {
|
||||||
|
SpeakProvider.sendInfo(object, bundle, msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
SpeakProvider.sendSpeak(object, from, bundle, msg,
|
||||||
|
BROADCAST_MODE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Processes a {@link ClientService#away} request.
|
* Processes a {@link ClientService#away} request.
|
||||||
*/
|
*/
|
||||||
@@ -239,4 +266,7 @@ public class ChatProvider
|
|||||||
|
|
||||||
/** The entity that will authorize our chatters. */
|
/** The entity that will authorize our chatters. */
|
||||||
protected static CommunicationAuthorizer _comAuth;
|
protected static CommunicationAuthorizer _comAuth;
|
||||||
|
|
||||||
|
/** An alternative object to which broadcasts should be sent. */
|
||||||
|
protected static DObject _broadcastObject;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -75,14 +75,6 @@ public class GameObject extends PlaceObject
|
|||||||
/** The player index of the creating player if this is a party game. */
|
/** The player index of the creating player if this is a party game. */
|
||||||
public int creator;
|
public int creator;
|
||||||
|
|
||||||
// documentation inherited
|
|
||||||
public boolean shouldBroadcast ()
|
|
||||||
{
|
|
||||||
// we do not broadcast to games because the users will get it
|
|
||||||
// on their scene objects
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the number of players in the game.
|
* Returns the number of players in the game.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -96,14 +96,6 @@ public class GameObject extends PlaceObject
|
|||||||
/** The player index of the creating player if this is a party game. */
|
/** The player index of the creating player if this is a party game. */
|
||||||
public int creator;
|
public int creator;
|
||||||
|
|
||||||
// documentation inherited
|
|
||||||
public boolean shouldBroadcast ()
|
|
||||||
{
|
|
||||||
// we do not broadcast to games because the users will get it
|
|
||||||
// on their scene objects
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the number of players in the game.
|
* Returns the number of players in the game.
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user