Commit Graph

586 Commits

Author SHA1 Message Date
Elizabeth Fong f76825c76e Fix yohoho singleplayer NPE boochery caused by unsafe direct call on DObjectManager
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4636 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-03-27 21:11:13 +00:00
Ray Greenwell 5ed85d4967 A marker interface that can be implemented by components other than normal
texty-input components that wish to have the chat system leave their focus
alone.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4626 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-03-13 18:47:29 +00:00
Ray Greenwell f3f810b49f Change the meaning of holdsToken(): now the token(s) specified must be
EXACTLY held. I think this is ok because all callers currently pass a single
token at a time, but I have not verified this for every project.
Please verify this for your project!
Added holdsAnyToken() which has the old behavior of returning true if any
bit is on.

I think we should change all the projects' various isSupportPlus() methods
to be just called isSupport() and those will return
holdsAnyToken(SUPPORT | ADMIN | etc);
If you need to check if a user has a single SUPPORT token but is not an
admin, you can do that by hand.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4617 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-03-06 22:38:33 +00:00
Michael Bayne 09f0bee0f3 Yet more header patrol.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4602 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-02-24 00:39:27 +00:00
Michael Bayne c25024f497 Move some low-level object access control into Presents from Crowd (default all
objects to non-modifiable, restrict client object subscriptions to the client
in question). Modified Peer code to not log a warning when a peer is not online
in an expected way (not listening for connections).


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4598 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-02-23 19:41:30 +00:00
Michael Bayne ebc99935d5 If we're going to do this, I guess we're going to do it properly. Nixed the
notion of a global group (though we implicitly define one in InvocationCodes)
added a mechanism for directors (which generally handle the client side of
invocation services) to register their interest in bootstrap service groups so
that the whole goddamned complex business can happen magically behind the
scenes.

If you instantiate a director, it will automatically register interest in the
service group it needs and everything will work. If you don't use the director
code, you don't get the services and you can safely exclude all of that code
from your client even though the services are still in use on the server (and
presumably used by some other types of clients).

This is going to break all the builds, which I'll soon fix. Then I'll go write
all this in ActionScript. Yay!


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4552 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-02-11 01:17:30 +00:00
Ray Greenwell 15c0bbbe1c It would appear to me that the logic in this method was backwards.
There is no recent (~years) modification of this line, but at the same
time it appears that none of our products use the LocationProvider.moveBody()
method, so maybe this bug has just never been tickled.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4549 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-02-10 02:08:08 +00:00
Michael Bayne 3d125f64a8 Regenerated, hopefully this won't bork Mark's changes.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4529 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-02-03 01:12:42 +00:00
Dave Hoover 5622bc271b Actually substitute keywords (these files are chock full of stale $Id$ tags)
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4509 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-01-24 00:22:07 +00:00
Ray Greenwell f65729f635 Have messages know their own formatting string.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4496 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-01-02 22:51:51 +00:00
Ray Greenwell dca9072595 Changed the TellFeedbackMessage to be a special kind of UserMessage.
It was always a little special, since it's dispatched from the client, but
I want it to be handled like other messages so that we can recolor
different parts of the message as I do in metasoy.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4495 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-01-02 21:58:40 +00:00
Michael Bayne 679030dc2c Widened. Allow the chat mogrification to be turned off.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4494 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-12-23 19:33:18 +00:00
Michael Bayne 7cea2a7088 Added XLATE_MODES for the default modes.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4493 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-12-22 02:45:05 +00:00
Ray Greenwell 509f61c83e Cruft removal.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4473 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-12-07 02:58:39 +00:00
Michael Bayne 737bca0a98 Have where() use which().
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4463 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-11-28 18:24:25 +00:00
Ray Greenwell 776761aeef Allow the occupant info to be different depending on the place.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4457 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-11-17 20:01:36 +00:00
Michael Bayne 5ae9307636 Factored the curse filter out into a reusable class.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4446 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-11-09 00:24:22 +00:00
Michael Bayne 4694c1ce17 Just who() is fine, we don't need the whole user object dumped.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4445 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-11-07 01:40:23 +00:00
Michael Bayne 35082bbaca New and improved lint removal.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4438 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-10-26 23:00:20 +00:00
Michael Bayne 20d1e1d024 Allow chat displays to register themselves in a known order and to report to
one another whether they've already displayed a chat message.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4421 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-10-10 21:48:27 +00:00
Michael Bayne 3c385628a1 Freak not out if we're not fully connected to a known peer.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4420 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-10-10 21:47:39 +00:00
Michael Bayne 4a9fde7830 Now we have a cool @ActionScript annotation that allows us to specify different
field/method names for the ActionScript version of a class (or to omit
something entirely). This removes the need for special case hackery for
toStringBuilder().

In order for annotations to work, however, we have to require that the
GenActionScriptTask be loaded from the same classloader that loads the classes
to be reflected upon. Before we only reflected on the target classes, never
instantiated them. Annotations are actually instantiated, so we have to be able
to create an instance of the ActionScript.class that is compiled into our
target classes and assign it to a reference that is compiled into
GenActionScriptTask. Beware the complexities of dealing with multiple class
loaders.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4405 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-10-04 23:35:41 +00:00
Michael Bayne 20c0f0ff3d Regenerated with updated Marshaller and Dispatcher templates.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4398 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-10-04 18:13:34 +00:00
Michael Bayne 6a47c766cc Switched to a better name.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4345 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-08-24 18:42:22 +00:00
Michael Bayne b4d66588c1 Added some magic on the road toward more elegant support for dynamic languages
like Groovy and JRuby. Created a DynamicEventDispatcher that automatically maps
attribute, element and set events to methods. Say you have a field:

  public DSet occupantInfo;

you can create a method in any class:

  public void occupantInfoAdded (BodyObject source, OccupantInfo entry);

and then bind that class as a listener using the dynamic event dispatcher:

  _myobj.addListener(new DynamicEventDispatcher(object));

I also created a nicer replacement for the MessageHandler system which is
clunky but still way simpler than using a full InvocationService. Basically we
dispatch MessageEvent as if it were a method call. 

For example, in AtlantiManager I define:

    public void placeTile (BodyObject placer, AtlantiTile tile)

which receives a request by a player to place a tile on their turn. Then in
AtlantiController, I simply call:

   _atlobj.manager.invoke("placeTile", tile);

Of course, in JRuby and Groovy, that's going to look like:

   _atlobj.manager.placeTile(tile);

which is all part of the fun.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4344 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-08-24 17:35:32 +00:00
Michael Bayne bc9f53396c Revamped distributed object creation. There was no particular reason to create
distributed objects by reflection since we don't allow clients to create
objects, furthermore we needn't do it asynchronously. The object creation
methods were moved into the server-side only interface and made "immediate", so
the caller creates a derived instance of DObject and registers it with the
system instead of creating it with a Subscriber callback.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4342 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-08-23 23:46:48 +00:00
Ray Greenwell 1ae508f3aa Removed the pointless InvocationCodes.SUCCESS, moved it to ChatCodes,
which was the only child class that used it.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4328 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-08-16 18:38:39 +00:00
Ray Greenwell be83e13003 Occam's razor, comment fix.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4326 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-08-16 00:09:53 +00:00
Mike Thomas e8cd7631fd Allow a message to specify the name to display for a user separate from the canonical username passed in the message as the speaker variable.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4313 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-08-09 22:26:38 +00:00
Mike Thomas 3d7c12a5d1 Allow a little more info in deciding whether to declare the place empty.
Also, while I was in there, added some safety so we don't lose track of shutdownIntervals and let them run amuck.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4295 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-07-28 21:16:37 +00:00
Mike Thomas 19219bb1a3 Break out the logic for whether the place is empty so we can override it.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4280 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-07-20 01:28:29 +00:00
Ray Greenwell fc91faf25f Standardized what we do in cases where a CloneNotSupportedException occurs
where we don't think it ever will.
Instead of returning null, or the exception, always throw a runtime
with just the CloneNotSupportedException as the argument, as this will
contain the most information and will preserve the stack trace.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4264 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-07-13 18:07:27 +00:00
Michael Bayne 8df1c91699 Changed the weird-ass argument ordering for the UserMessage constructors. I'd
like to change the ordering for ChatMessage and its other derivations (the
bundle should precede the message) but that's more dangerous as the constructor
signature would not change.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4253 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-07-06 00:35:11 +00:00
Michael Bayne a3c86ec1d4 Make it easy to create a UserMessage for tells.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4252 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-07-06 00:27:44 +00:00
Michael Bayne 05cef39f63 Revamped chat handling a bit:
- the ChatProvider is now a proper singleton rather than providing static
methods for everything (it is accessed through CrowdServer.chatprov)
- it can now be extended to create a custom UserMessage for tells (which can
contain avatar information on systems that want to show an avatar on the
receipt of a tell)
- the ChatProvider API was tidied up a bit as some methods had been addded over
time that were not sufficiently general purpose so their callers will be
changed to use the general purpose APIs.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4251 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-07-06 00:22:12 +00:00
Michael Bayne 6be44f5a65 Finished up the basic peer system and wired up the tell forwarding. In theory
it all works, now to test it.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4249 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-07-05 22:48:32 +00:00
Michael Bayne bdadd2377e Behold, TAPOAFTSM! The Awesome Power Of A Fully Type-Safe Mothership.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4246 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-07-05 00:56:16 +00:00
Michael Bayne 3a9c6ced44 A bunch more peer business.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4241 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-07-01 03:34:00 +00:00
Michael Bayne 33a758dfce The basis of cluster support for Presents servers. All servers in a cluster
make connections to other servers in the cluster and can exchange events (in a
limited fashion).

This is different than Liz's project wherein servers share an oid space and one
can interchangably work with distributed objects from any server. This package
provides a means by which certain services (by default, presence and chat) can
be communicated between servers to allow communication between players
scattered around a bunch of otherwise independent server instances.

This is less general purpose but also less likely to encourage people to write
code that tightly couples multiple servers and then falls over because it
generates gobs of network traffic as events are flung willy nilly behind the
scenes.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4238 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-07-01 00:19:59 +00:00
Michael Bayne 0a5953bf17 Chipping away at proper type safety for all of the Narya code.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4232 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-06-27 17:46:36 +00:00
Michael Bayne 78a8d6fe62 Nix superfluous log message.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4198 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-06-17 23:12:21 +00:00
Ray Greenwell 79c6427c21 StringBuffer -> StringBuilder.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4191 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-06-13 22:42:20 +00:00
Michael Bayne 83cffce259 Regenerated object definitions with the new hotness.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4166 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-05-31 04:16:57 +00:00
Ray Greenwell 26c928fc45 Use the valueOf factory methods pretty much everywhere.
These are the preferred way to get instances of Boolean, Byte,
Short, Character, Integer, Long, Float, and Double object.
It's always made sense for Boolean objects, and with 1.5 these factory
methods were blessed as the proper way to get instances unless one
absolutely needed a distinct object.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4145 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-05-24 01:24:24 +00:00
Michael Bayne b13b1a54a4 Type the occupantInfo DSet.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4137 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-05-22 22:50:39 +00:00
Michael Bayne 0699eb3d1c Added a standard mechanism for customizing the AccessController on a
PlaceObject. Created a default AccessController that is slightly more strict
than the CrowdServer-wide default in that it only allows place occupants to
subscribe to a PlaceObject (a motivated and resourceful player could otherwise
listen in on place chat everywhere in the game if they so desired; with a
custom client, of course).


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4079 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-04-30 19:16:05 +00:00
Ray Greenwell 461e109462 Fixed error in the SpeakHandler that mdb checked in: the service
should not be propogated. If someone chooses crew chat but then enters
a /speak command, it indicates that they want to break out of the crew
chat channel.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4068 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-04-27 01:53:40 +00:00
Ray Greenwell e1c9d4bc53 Better fix for parsing error.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4065 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-04-26 21:37:28 +00:00
Mark Johnson 6436dc704c If there is no message component then just leave it null instead of
having substring throw an exception.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4062 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-04-26 20:46:02 +00:00
Ray Greenwell 177f996427 Tidied up the tell handler a bit:
- fixed quoted name parsing to not choke if the first token is just a quote.
- also fixed to not choke if the user types the message using some
  non-space whitespace characters.
- fixed history mistell erasing for multi-word usernames.
- use quotes in the history line only if the user used quotes.
- added hooks for easy subclassing


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4047 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-04-21 23:25:58 +00:00