From bc07aa1afd54d292ac92b9f2bb77319f3eebb6b8 Mon Sep 17 00:00:00 2001 From: Ray Greenwell Date: Sat, 30 Apr 2005 21:37:59 +0000 Subject: [PATCH] Use a dobj transaction to bundle up the events that get dispatched during each card play. More could be done, I just added this quickly. git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@3530 542714f4-19e9-0310-aa3c-eee0fc999fb1 --- .../server/TrickCardGameManagerDelegate.java | 40 +++++++++++-------- 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/src/java/com/threerings/parlor/card/trick/server/TrickCardGameManagerDelegate.java b/src/java/com/threerings/parlor/card/trick/server/TrickCardGameManagerDelegate.java index 29a62fdcd..18f636c24 100644 --- a/src/java/com/threerings/parlor/card/trick/server/TrickCardGameManagerDelegate.java +++ b/src/java/com/threerings/parlor/card/trick/server/TrickCardGameManagerDelegate.java @@ -31,6 +31,7 @@ import com.threerings.util.Name; import com.threerings.util.RandomUtil; import com.threerings.presents.data.ClientObject; +import com.threerings.presents.dobj.DObject; import com.threerings.presents.server.InvocationException; import com.threerings.presents.server.PresentsServer; @@ -286,24 +287,29 @@ public class TrickCardGameManagerDelegate extends TurnGameManagerDelegate */ protected void playCard (int pidx, Card card) { - // play the card by removing it from the hand and adding it to the end - // of the cards played array - _hands[pidx].remove(card); - PlayerCard[] cards = (PlayerCard[])ArrayUtil.append( - _trickCardGame.getCardsPlayed(), new PlayerCard(pidx, card)); - _trickCardGame.setCardsPlayed(cards); - - // end the user's turn - endTurn(); - - // end the trick if everyone has played a card - if (_turnIdx == -1) { - if (_endTrickDelay == 0) { - endTrick(); - - } else { - _endTrickInterval.schedule(_endTrickDelay); + ((DObject) _trickCardGame).startTransaction(); + try { + // play the card by removing it from the hand and adding it + // to the end of the cards played array + _hands[pidx].remove(card); + PlayerCard[] cards = (PlayerCard[])ArrayUtil.append( + _trickCardGame.getCardsPlayed(), new PlayerCard(pidx, card)); + _trickCardGame.setCardsPlayed(cards); + + // end the user's turn + endTurn(); + + // end the trick if everyone has played a card + if (_turnIdx == -1) { + if (_endTrickDelay == 0) { + endTrick(); + + } else { + _endTrickInterval.schedule(_endTrickDelay); + } } + } finally { + ((DObject) _trickCardGame).commitTransaction(); } }