Commit Graph

205 Commits

Author SHA1 Message Date
Michael Bayne 36c2cc8289 Updated ClientFactory implementations. Use new PlaceManagerDelegate members.
git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@619 c613c5cb-e716-0410-b11b-feb51c14d237
2008-06-08 20:24:30 +00:00
Michael Bayne cf857dedaa Allow the RatingRepository to be injected.
git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@616 c613c5cb-e716-0410-b11b-feb51c14d237
2008-06-08 15:13:28 +00:00
Michael Bayne 0a2b8b8f52 Basic Guice compliance.
git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@614 c613c5cb-e716-0410-b11b-feb51c14d237
2008-06-07 17:45:30 +00:00
Michael Bayne 2090bcdfeb Regenerated invocation service bits.
git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@613 c613c5cb-e716-0410-b11b-feb51c14d237
2008-06-06 14:39:03 +00:00
Michael Bayne 2890c16224 Back in the wild and wooly days of Puzzle Pirates development, we determined
that we needed to be able to tell if one game ended and another one had started
so we introduced GameObject.roundId which was a value that was incremented
every time the game started. Thus if you had a timer that expired and you
wanted to make sure that somehow the game hadn't ended and then been started
anew while you were away, you could save the roundId and check it when you woke
up. That was all fine and good, except for the poor choice of variable name.

Then we came to implement Whirled and wanted to provide an abstraction of
"rounds" which were subunits into which a single game is divided. We had this
lovely variable already lying around called roundId and we succumbed to the
temptation to overload its meaning and have games that use round increment the
round id multiple times during a game which preserves the monotonically
increasing nature of roundId as expected by the Parlor code and seemed to do no
harm.

Then we discovered a pesky wrinkle, which is that GameManager sets
GameObject.roundId in gameWillStart() and then goes on to set GameObject.state
after that. We were naturally listening for roundId to change and triggering a
call to roundDidStart() at that time, but this resulted in a strange sequencing
of callback methods that went: roundDidStart(), gameDidStart(), roundDidEnd(),
roundDidStart(), ..., roundDidEnd(), gameDidEnd().

The premature roundDidStart() was irksome, and I looked into what would be
needed to remedy it. It turned out that a lot of code on the server-side of
things depended on the Parlor semantics of roundId and wanted roundId to be set
to the current round's value in gameWillStart() and similarly in
gameDidStart().  However, there's no gameWillStart() on the client and it
didn't appear to me that anyone much cared about roundId in gameDidStart(), so
I opted for some hackery in the name of expedience that preserved the
server-side semantics but changed the client to see ROUND_ID change after STATE
changed.

As you might expect given the verbosity of this explanation, that turned out to
be a new bad idea stacked on the previous bad idea of reusing roundId which was
stacked on the bad choice of name for roundId. It turns out some puzzles in
Yohoho did expect roundId to be already set in gameDidStart() which was no
longer the case and the inevitable digital mayhem ensued.

The time has come to undo the various bad decisions and replace them with new
decisions that we hope aren't bad. Those decisions are:

- rename roundId in GameObject to sessionId and restore its original semantics
  which are that it represents a monotonically increasing integer that is
  incremented (and published to the client) in gameWillStart() and thus
  represents the current game session from the very first to the very last;

- add WhirledGameObject.roundId for handling rounds in Whirled games and give
  it the semantics we desire which are for it to be set to 1 in gameDidStart()
  and then incremented only when a new round is started, and reset to 1 when a
  new game is started (this change is in another commit).

This will temporarily break some builds as I need to go rename some things in
Yohoho and then I need to look at Bang! Howdy which if I recall correctly also
naughtily uses roundId for nefarious ulterior purposes and needs also to be
cured of its wayward habits.


git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@611 c613c5cb-e716-0410-b11b-feb51c14d237
2008-06-06 14:20:36 +00:00
Michael Bayne a133c7c693 Switch to new logging API.
git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@608 c613c5cb-e716-0410-b11b-feb51c14d237
2008-05-27 20:00:28 +00:00
Michael Bayne ae6c542271 Nixement of ze redundant casts.
git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@601 c613c5cb-e716-0410-b11b-feb51c14d237
2008-05-22 12:08:27 +00:00
Michael Bayne eb6ad10295 Let the unit report failure.
git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@598 c613c5cb-e716-0410-b11b-feb51c14d237
2008-05-18 11:19:33 +00:00
Charlie Groves 19af9eb71a Indicate that isActivePlayer is a better way to see if a player is in the game than accessing playerStatus directly
git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@597 c613c5cb-e716-0410-b11b-feb51c14d237
2008-05-16 21:08:26 +00:00
Ray Greenwell ef217c4ea5 playerInRoom -> occupantInRoom.
For games that make use of this, all occupants should call it,
unless they call playerReady().


git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@590 c613c5cb-e716-0410-b11b-feb51c14d237
2008-05-02 01:50:10 +00:00
Michael Bayne f044381e2c Clarify the logic in this method to make it clear that there's no way out that
does not result in shutdown() being called.


git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@589 c613c5cb-e716-0410-b11b-feb51c14d237
2008-04-29 19:00:33 +00:00
Michael Bayne c8f680696d It's a party in here. We have a method that handles checking whether to start
up a shutdown interval. Let's override that method and implement GameManager's
special requirements instead of overriding an unrelated method and duplicating
most of the code from it.


git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@588 c613c5cb-e716-0410-b11b-feb51c14d237
2008-04-29 18:57:15 +00:00
Ray Greenwell 759050d576 3 things: Sanity, clarity, correctness.
git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@587 c613c5cb-e716-0410-b11b-feb51c14d237
2008-04-29 18:33:46 +00:00
Charlie Groves e3cf4a762d Knock the idleUnloadPeriod down to 0 since GameManagers don't go idle and having a shutdown interval just keeps them resident in memory
git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@586 c613c5cb-e716-0410-b11b-feb51c14d237
2008-04-29 17:55:03 +00:00
Michael Bayne 4ca129e527 Do some fiddly business to update our roundId locally in gameWillStart so that
all pre-game processing can properly know what round it is, but then actually
publish that value to the clients so that we can trigger off ROUND_ID to call
roundDidStart without having roundDidStart get called before gameDidStart.


git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@583 c613c5cb-e716-0410-b11b-feb51c14d237
2008-04-22 01:02:05 +00:00
Michael Bayne 29460ce450 Don't let a player create a new table or join an existing table if they're
already sitting at a table. We also enforce this in the UI (though not in
certain cases in MSOY at the moment which is how this was uncovered).


git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@577 c613c5cb-e716-0410-b11b-feb51c14d237
2008-03-24 23:00:09 +00:00
Michael Bayne c0ce0d188b Allow the no-show timer to be customized.
git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@576 c613c5cb-e716-0410-b11b-feb51c14d237
2008-03-21 18:17:03 +00:00
Mark Johnson ee6889395f This is throwing a wrench in bang, reverting it now and will take a better look at it later
git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@571 c613c5cb-e716-0410-b11b-feb51c14d237
2008-03-13 20:21:48 +00:00
Dave Hoover 04ff848f00 Thought I'd committed this ages ago when I was poking around at this stuff,
but apparently not. Use the helper method to see if the game's in play since
it's there for just that reason.


git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@566 c613c5cb-e716-0410-b11b-feb51c14d237
2008-02-29 19:06:07 +00:00
Ray Greenwell bc0a042866 Parlor moves back here.
git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@559 c613c5cb-e716-0410-b11b-feb51c14d237
2008-02-17 00:59:38 +00:00
Dave Hoover 16b210affe Little bit of type safety, little bit of redundant cast removal.
git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@548 c613c5cb-e716-0410-b11b-feb51c14d237
2008-01-17 01:25:18 +00:00
Michael Bayne c37ddc3277 Revamped percentile tracker to support minimum and maximum value tracking.
While testing the new code I discovered that redistribution of large data sets
that approximate a normal curve can cause some funny quantization because the
redistribution algorithm assumes all values in a single bucket are flatly
distributed, but if they actually skew substantially toward the high or low end
of the bucket, then the redistribution generates a choppy curve. Fortunately
this has almost no impact on the percentile curve, which is what's actually
important, it just makes the graph of the contents of the buckets look less
smooth and sexy. Alas.


git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@530 c613c5cb-e716-0410-b11b-feb51c14d237
2007-12-14 02:17:27 +00:00
Mike Thomas 679f3c85cb This appears to have gotten misdirected in the great occupants-players renaming of '07. It always used to reference the member var, not the local var, and appears to still need to since the indices include all slots, not just the filled ones.
git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@527 c613c5cb-e716-0410-b11b-feb51c14d237
2007-12-13 18:50:54 +00:00
Michael Bayne daec25d27c Avoid name collision.
git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@516 c613c5cb-e716-0410-b11b-feb51c14d237
2007-12-06 01:42:02 +00:00
Michael Bayne 32c4464a85 Revamped some table stuff. First I don't know why I called players occupants,
that was stupid. Now they're called players. Next I added a list of watchers
rather than simply a count. If we're going to go to all the trouble to update
the table when the watchers change, let's have the goods.

This will probably break Bang and/or Yohoho. I'll fix them toot sweet.


git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@515 c613c5cb-e716-0410-b11b-feb51c14d237
2007-12-06 00:37:32 +00:00
Michael Bayne 6f2dd5e614 Not so verbose.
git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@513 c613c5cb-e716-0410-b11b-feb51c14d237
2007-12-03 18:30:22 +00:00
Michael Bayne 679a5f1cfc Oops, we don't always have a no-show timer.
git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@491 c613c5cb-e716-0410-b11b-feb51c14d237
2007-11-12 01:57:38 +00:00
Michael Bayne 91b416f18e Cancel our no-show interval once the game starts so that if it expires after an
EZGame has finished it doesn't think that it's still pre-game and that it
should actually cancel the game.


git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@490 c613c5cb-e716-0410-b11b-feb51c14d237
2007-11-10 05:27:17 +00:00
Michael Bayne 717beba71f Extract GameManager creation into a specializable method.
git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@489 c613c5cb-e716-0410-b11b-feb51c14d237
2007-11-10 05:03:47 +00:00
Michael Bayne 4a06907ec0 Redundant cast removal.
git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@488 c613c5cb-e716-0410-b11b-feb51c14d237
2007-11-10 04:54:36 +00:00
Michael Bayne eb80403bbe No longer pass the manager in the constructor. As many of these delegates are
in the wild, we'll deprecate the old constructors rather than remove them.  Yay
cruft!


git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@487 c613c5cb-e716-0410-b11b-feb51c14d237
2007-11-10 04:41:44 +00:00
Michael Bayne 8059d9bc12 Allow the game manager we create to be augmented.
git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@484 c613c5cb-e716-0410-b11b-feb51c14d237
2007-11-10 01:20:19 +00:00
Michael Bayne 5d1bafd571 Nix unused imports.
git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@483 c613c5cb-e716-0410-b11b-feb51c14d237
2007-11-10 01:20:01 +00:00
Michael Bayne 70d3d218c0 Actually we only go up to 99.
git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@475 c613c5cb-e716-0410-b11b-feb51c14d237
2007-10-30 01:28:21 +00:00
Michael Bayne 1bcaff4c59 Widening, added getCounts(), getRequiredScores().
git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@474 c613c5cb-e716-0410-b11b-feb51c14d237
2007-10-30 00:15:53 +00:00
Dave Hoover adaf80af0a Rerun generators.
git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@473 c613c5cb-e716-0410-b11b-feb51c14d237
2007-10-26 21:06:42 +00:00
Ray Greenwell 3bb6c7e3f6 - In TurnGameManagerDelegate, pulled out random-turn picking into its
own method, so that subclasses can get that behavior without assuming
  their their superclass implementation of setFirstTurnHolder does that.
- Use that in EZ's code, and also fall back to it if there's some problem
  with the user-specified next-turn value and it's nobody's turn.


git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@464 c613c5cb-e716-0410-b11b-feb51c14d237
2007-10-23 01:36:20 +00:00
Michael Bayne c6f72fbdf8 Create an empty occupants and oids array if we're creating a party table.
git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@459 c613c5cb-e716-0410-b11b-feb51c14d237
2007-10-19 22:04:33 +00:00
Michael Bayne 1b7f810246 Added getTopRatings(), moved constants into RatingCodes.
git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@451 c613c5cb-e716-0410-b11b-feb51c14d237
2007-10-15 19:28:20 +00:00
Michael Bayne 1fca67a044 Factored createTable() out into a method that can be called on the server.
git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@449 c613c5cb-e716-0410-b11b-feb51c14d237
2007-10-12 01:09:46 +00:00
Michael Bayne a88a5a3482 No need to wait for didStartup() to create this set.
git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@444 c613c5cb-e716-0410-b11b-feb51c14d237
2007-10-08 17:14:17 +00:00
Michael Bayne 2862b32763 Comment fiddling; clear out _pendingOids at the end of the game to avoid
potential weirdness if someone got into the room but never reported ready.


git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@443 c613c5cb-e716-0410-b11b-feb51c14d237
2007-10-08 17:12:46 +00:00
Nathan Curtis 377d0c93f5 Keep track of of players that have arrived and players that are ready separately. The old check
would start the game as soon as everyone had arrived and *one* person called playerReady().  Now 
we do the right thing and only start the game once everyone has arrived and everyone has called
playerReady().  

As with the old code, this only affects clients that use the playerInRoom() method.


git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@442 c613c5cb-e716-0410-b11b-feb51c14d237
2007-10-06 00:35:30 +00:00
Michael Bayne 962c33d900 Pass the GameManager to gameCreated().
git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@440 c613c5cb-e716-0410-b11b-feb51c14d237
2007-09-27 19:38:09 +00:00
Michael Bayne 52259f26dd Track the last update time for ratings.
git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@439 c613c5cb-e716-0410-b11b-feb51c14d237
2007-09-25 16:32:59 +00:00
Michael Bayne 3eff6e03cd Allow derived classes to not rate games for other reasons.
git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@438 c613c5cb-e716-0410-b11b-feb51c14d237
2007-09-25 16:32:17 +00:00
Michael Bayne 2d24116c97 Don't rate anything if the game is not marked as rated.
git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@437 c613c5cb-e716-0410-b11b-feb51c14d237
2007-09-25 16:12:28 +00:00
Par Winzell e21c14c4c1 Since returning -1 is perfectly acceptable for this method, let's be robust in handling an call to it for an unknown player; we already checked for unknown opponents.
git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@435 c613c5cb-e716-0410-b11b-feb51c14d237
2007-09-14 15:35:25 +00:00
Michael Bayne 6194948d56 Added toString().
git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@434 c613c5cb-e716-0410-b11b-feb51c14d237
2007-09-12 02:16:19 +00:00
Michael Bayne 8e52521b20 Nix debug logging.
git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@433 c613c5cb-e716-0410-b11b-feb51c14d237
2007-09-11 22:24:21 +00:00