Switch to new logging API.

git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@608 c613c5cb-e716-0410-b11b-feb51c14d237
This commit is contained in:
Michael Bayne
2008-05-27 20:00:28 +00:00
parent 3b7ef57a20
commit a133c7c693
91 changed files with 486 additions and 722 deletions
+4 -43
View File
@@ -21,52 +21,13 @@
package com.threerings.micasa;
import com.samskivert.util.Logger;
/**
* A placeholder class that contains a reference to the log object used by
* the MiCasa package. This is a useful pattern to use when using the
* samskivert logging facilities. One creates a top-level class like this
* one that instantiates a log object with an name that identifies log
* messages from that package and then provides static methods that
* generate log messages using that instance. Then, classes in that
* package need only import the log wrapper class and can easily use it to
* generate log messages. For example:
*
* <pre>
* import com.threerings.micasa.Log;
* // ...
* Log.warning("All hell is breaking loose!");
* // ...
* </pre>
*
* @see com.samskivert.util.Log
* Contains a reference to the log object used by the MiCasa package.
*/
public class Log
{
/** The static log instance configured for use by this package. */
public static com.samskivert.util.Log log =
new com.samskivert.util.Log("micasa");
/** Convenience function. */
public static void debug (String message)
{
log.debug(message);
}
/** Convenience function. */
public static void info (String message)
{
log.info(message);
}
/** Convenience function. */
public static void warning (String message)
{
log.warning(message);
}
/** Convenience function. */
public static void logStackTrace (Throwable t)
{
log.logStackTrace(com.samskivert.util.Log.WARNING, t);
}
public static Logger log = Logger.getLogger("com.threerings.micasa");
}
@@ -64,7 +64,7 @@ import com.threerings.crowd.data.OccupantInfo;
import com.threerings.crowd.data.PlaceObject;
import com.threerings.crowd.util.CrowdContext;
import com.threerings.micasa.Log;
import static com.threerings.micasa.Log.log;
public class ChatPanel extends JPanel
implements ActionListener, ChatDisplay, OccupantObserver, PlaceView
@@ -267,7 +267,7 @@ public class ChatPanel extends JPanel
return true;
} else {
Log.warning("Received unknown message type [message=" +
log.warning("Received unknown message type [message=" +
message + "].");
return false;
}
@@ -287,7 +287,7 @@ public class ChatPanel extends JPanel
try {
doc.insertString(doc.getLength(), text, style);
} catch (BadLocationException ble) {
Log.warning("Unable to insert text!? [error=" + ble + "].");
log.warning("Unable to insert text!? [error=" + ble + "].");
}
}
@@ -29,10 +29,11 @@ import com.threerings.presents.client.SessionObserver;
import com.threerings.crowd.data.BodyObject;
import com.threerings.micasa.Log;
import com.threerings.micasa.data.MiCasaBootstrapData;
import com.threerings.micasa.util.MiCasaContext;
import static com.threerings.micasa.Log.log;
/**
* Responsible for top-level control of the client user interface.
*/
@@ -68,7 +69,7 @@ public class ClientController extends Controller
return true;
}
Log.info("Unhandled action: " + action);
log.info("Unhandled action: " + action);
return false;
}
@@ -81,7 +82,7 @@ public class ClientController extends Controller
// documentation inherited
public void clientDidLogon (Client client)
{
Log.info("Client did logon [client=" + client + "].");
log.info("Client did logon [client=" + client + "].");
// keep the body object around for stuff
_body = (BodyObject)client.getClientObject();
@@ -94,14 +95,14 @@ public class ClientController extends Controller
try {
jumpOidStr = System.getProperty("jumpoid");
} catch (SecurityException se) {
Log.info("Not checking for jumpOid as we're in an applet.");
log.info("Not checking for jumpOid as we're in an applet.");
}
if (jumpOidStr != null) {
try {
moveOid = Integer.parseInt(jumpOidStr);
} catch (NumberFormatException nfe) {
Log.warning("Invalid jump oid [oid=" + jumpOidStr +
log.warning("Invalid jump oid [oid=" + jumpOidStr +
", err=" + nfe + "].");
}
@@ -131,7 +132,7 @@ public class ClientController extends Controller
// documentation inherited
public void clientDidLogoff (Client client)
{
Log.info("Client did logoff [client=" + client + "].");
log.info("Client did logoff [client=" + client + "].");
// reinstate the logon panel
_frame.setPanel(_logonPanel);
@@ -29,7 +29,7 @@ import com.threerings.util.Name;
import com.threerings.presents.client.Client;
import com.threerings.presents.net.UsernamePasswordCreds;
import com.threerings.micasa.Log;
import static com.threerings.micasa.Log.log;
/**
* The micasa app is the main point of entry for the MiCasa client
@@ -58,9 +58,8 @@ public class MiCasaApp
try {
_client = (MiCasaClient)Class.forName(cclass).newInstance();
} catch (Exception e) {
Log.warning("Unable to instantiate client class " +
"[cclass=" + cclass + "].");
Log.logStackTrace(e);
log.warning("Unable to instantiate client class " +
"[cclass=" + cclass + "].", e);
}
// initialize our client instance
@@ -76,7 +75,7 @@ public class MiCasaApp
Client client = _client.getContext().getClient();
Log.info("Using [server=" + server + ".");
log.info("Using [server=" + server + ".");
client.setServer(server, Client.DEFAULT_SERVER_PORTS);
// configure the client with some credentials and logon
@@ -102,8 +101,7 @@ public class MiCasaApp
// initialize the app
app.init();
} catch (IOException ioe) {
Log.warning("Error initializing application.");
Log.logStackTrace(ioe);
log.warning("Error initializing application.", ioe);
}
// and run it
@@ -31,7 +31,7 @@ import com.threerings.presents.client.Client;
import com.threerings.presents.client.ClientAdapter;
import com.threerings.presents.net.UsernamePasswordCreds;
import com.threerings.micasa.Log;
import static com.threerings.micasa.Log.log;
/**
* The MiCasa applet is used to make MiCasa games available via the web
@@ -74,8 +74,7 @@ public class MiCasaApplet extends Applet
});
} catch (IOException ioe) {
Log.warning("Unable to create client.");
Log.logStackTrace(ioe);
log.warning("Unable to create client.", ioe);
}
}
@@ -32,9 +32,10 @@ import com.threerings.crowd.util.CrowdContext;
import com.threerings.parlor.client.*;
import com.threerings.parlor.game.data.GameConfig;
import com.threerings.micasa.Log;
import com.threerings.micasa.util.MiCasaContext;
import static com.threerings.micasa.Log.log;
public class LobbyController extends PlaceController
implements InvitationHandler, InvitationResponseObserver
{
@@ -71,8 +72,7 @@ public class LobbyController extends PlaceController
_ctx.getParlorDirector().invite(
new Name(invitee), config, this);
} catch (Exception e) {
Log.warning("Error instantiating game config.");
Log.logStackTrace(e);
log.warning("Error instantiating game config.", e);
}
}
@@ -84,7 +84,7 @@ public class LobbyController extends PlaceController
// documentation inherited from interface
public void invitationReceived (Invitation invite)
{
Log.info("Invitation received [invite=" + invite + "].");
log.info("Invitation received [invite=" + invite + "].");
// accept the invitation. we're game...
invite.accept();
@@ -93,26 +93,26 @@ public class LobbyController extends PlaceController
// documentation inherited from interface
public void invitationCancelled (Invitation invite)
{
Log.info("Invitation cancelled " + invite + ".");
log.info("Invitation cancelled " + invite + ".");
}
// documentation inherited from interface
public void invitationAccepted (Invitation invite)
{
Log.info("Invitation accepted " + invite + ".");
log.info("Invitation accepted " + invite + ".");
}
// documentation inherited from interface
public void invitationRefused (Invitation invite, String message)
{
Log.info("Invitation refused [invite=" + invite +
log.info("Invitation refused [invite=" + invite +
", message=" + message + "].");
}
// documentation inherited from interface
public void invitationCountered (Invitation invite, GameConfig config)
{
Log.info("Invitation countered [invite=" + invite +
log.info("Invitation countered [invite=" + invite +
", config=" + config + "].");
}
@@ -26,7 +26,8 @@ import com.samskivert.util.StringUtil;
import com.threerings.crowd.data.PlaceObject;
import com.threerings.crowd.server.PlaceManager;
import com.threerings.micasa.Log;
import static com.threerings.micasa.Log.log;
/**
* Takes care of the server side of a particular lobby.
@@ -48,7 +49,7 @@ public class LobbyManager extends PlaceManager
// let the lobby registry know that we're up and running
lobreg.lobbyReady(_plobj.getOid(), _gameIdent, _name);
Log.info("Lobby manager initialized [ident=" + _gameIdent +
log.info("Lobby manager initialized [ident=" + _gameIdent +
", name=" + _name + "].");
}
@@ -31,12 +31,13 @@ import com.threerings.presents.server.InvocationManager;
import com.threerings.crowd.data.BodyObject;
import com.threerings.micasa.Log;
import com.threerings.micasa.lobby.LobbyService.CategoriesListener;
import com.threerings.micasa.lobby.LobbyService.LobbiesListener;
import com.threerings.micasa.server.MiCasaConfig;
import com.threerings.micasa.server.MiCasaServer;
import static com.threerings.micasa.Log.log;
/**
* The lobby registry is the primary class that coordinates the lobby services on the client. It
* sets up the necessary invocation services and keeps track of the lobbies in operation on the
@@ -101,7 +102,7 @@ public class LobbyRegistry
String[] lmgrs = null;
lmgrs = MiCasaConfig.config.getValue(LOBIDS_KEY, lmgrs);
if (lmgrs == null || lmgrs.length == 0) {
Log.warning("No lobbies specified in config file (via '" +
log.warning("No lobbies specified in config file (via '" +
LOBIDS_KEY + "' parameter).");
} else {
@@ -145,7 +146,7 @@ public class LobbyRegistry
lobmgr.init(this, props);
} catch (Exception e) {
Log.warning("Unable to create lobby manager [lobbyId=" + lobbyId +
log.warning("Unable to create lobby manager [lobbyId=" + lobbyId +
", error=" + e + "].");
}
}
@@ -239,7 +240,7 @@ public class LobbyRegistry
_lobbies.put(category, catlist);
}
catlist.add(record);
Log.info("Registered lobby [cat=" + category + ", record=" + record + "].");
log.info("Registered lobby [cat=" + category + ", record=" + record + "].");
}
/** A table containing references to all of our lobby records (in the form of category
@@ -31,9 +31,10 @@ import javax.swing.*;
import com.threerings.crowd.data.PlaceObject;
import com.threerings.micasa.Log;
import com.threerings.micasa.util.MiCasaContext;
import static com.threerings.micasa.Log.log;
/**
* The lobby selector displays a drop-down box listing the categories of
* lobbies available on this server and when a category is selected, it
@@ -141,7 +142,7 @@ public class LobbySelector extends JPanel
// documentation inherited from interface
public void requestFailed (String reason)
{
Log.info("Request failed [reason=" + reason + "].");
log.info("Request failed [reason=" + reason + "].");
// clear out our pending category indicator in case this was a
// failed getLobbies() request
@@ -166,7 +167,7 @@ public class LobbySelector extends JPanel
_lservice.getLobbies(_ctx.getClient(), category, this);
} else {
Log.info("Ignoring category select request because " +
log.info("Ignoring category select request because " +
"one is outstanding [pcat=" + _pendingCategory +
", newcat=" + category + "].");
}
@@ -184,7 +185,7 @@ public class LobbySelector extends JPanel
// otherwise request that we go there
_ctx.getLocationDirector().moveTo(lobby.placeOid);
Log.info("Entering lobby " + lobby + ".");
log.info("Entering lobby " + lobby + ".");
}
@@ -42,9 +42,10 @@ import com.threerings.parlor.client.TableDirector;
import com.threerings.parlor.client.SeatednessObserver;
import com.threerings.parlor.data.Table;
import com.threerings.micasa.Log;
import com.threerings.micasa.util.MiCasaContext;
import static com.threerings.micasa.Log.log;
/**
* A table item displays the user interface for a single table (whether it
* be in-play or still being matchmade).
@@ -195,7 +196,7 @@ public class TableItem
// sanity check
if (position == -1) {
Log.warning("Unable to figure out what position a <join> " +
log.warning("Unable to figure out what position a <join> " +
"click came from [event=" + event + "].");
} else {
// otherwise, request to join the table at this position
@@ -211,7 +212,7 @@ public class TableItem
_ctx.getLocationDirector().moveTo(table.gameOid);
} else {
Log.warning("Received unknown action [event=" + event + "].");
log.warning("Received unknown action [event=" + event + "].");
}
}
@@ -36,7 +36,6 @@ import com.samskivert.swing.HGroupLayout;
import com.samskivert.swing.VGroupLayout;
import com.samskivert.swing.util.SwingUtil;
import com.threerings.micasa.Log;
import com.threerings.micasa.lobby.LobbyConfig;
import com.threerings.micasa.util.MiCasaContext;
@@ -52,6 +51,8 @@ import com.threerings.parlor.game.data.GameConfig;
import com.threerings.crowd.client.PlaceView;
import com.threerings.crowd.data.PlaceObject;
import static com.threerings.micasa.Log.log;
/**
* A view that displays the tables in a table lobby. It displays two
* separate lists, one of tables being matchmade and another of games in
@@ -103,7 +104,7 @@ public class TableListView extends JPanel
_tableFigger = gconfig.createTableConfigurator();
if (_tableFigger == null) {
Log.warning("Game config has not been set up to work with " +
log.warning("Game config has not been set up to work with " +
"tables: it needs to return non-null from " +
"createTableConfigurator().");
// let's just wait until we throw an NPE below
@@ -123,9 +124,8 @@ public class TableListView extends JPanel
panel.add(_create, VGroupLayout.FIXED);
} catch (Exception e) {
Log.warning("Unable to create configurator interface " +
"[config=" + gconfig + "].");
Log.logStackTrace(e);
log.warning("Unable to create configurator interface " +
"[config=" + gconfig + "].", e);
// stick something in the UI to let them know we're hosed
panel.add(new JLabel("Aiya! Can't create tables. " +
@@ -174,7 +174,7 @@ public class TableListView extends JPanel
// documentation inherited
public void tableAdded (Table table)
{
Log.info("Table added [table=" + table + "].");
log.info("Table added [table=" + table + "].");
// create a table item for this table and insert it into the
// appropriate list
@@ -186,12 +186,12 @@ public class TableListView extends JPanel
// documentation inherited
public void tableUpdated (Table table)
{
Log.info("Table updated [table=" + table + "].");
log.info("Table updated [table=" + table + "].");
// locate the table item associated with this table
TableItem item = getTableItem(table.tableId);
if (item == null) {
Log.warning("Received table updated notification for " +
log.warning("Received table updated notification for " +
"unknown table [table=" + table + "].");
return;
}
@@ -212,12 +212,12 @@ public class TableListView extends JPanel
// documentation inherited
public void tableRemoved (int tableId)
{
Log.info("Table removed [tableId=" + tableId + "].");
log.info("Table removed [tableId=" + tableId + "].");
// locate the table item associated with this table
TableItem item = getTableItem(tableId);
if (item == null) {
Log.warning("Received table removed notification for " +
log.warning("Received table removed notification for " +
"unknown table [tableId=" + tableId + "].");
return;
}
@@ -32,9 +32,10 @@ import com.threerings.crowd.server.CrowdServer;
import com.threerings.parlor.server.ParlorManager;
import com.threerings.micasa.Log;
import com.threerings.micasa.lobby.LobbyRegistry;
import static com.threerings.micasa.Log.log;
/**
* This class is the main entry point and general organizer of everything
* that goes on in the MiCasa game server process.
@@ -72,7 +73,7 @@ public class MiCasaServer extends CrowdServer
// initialize the lobby registry
lobreg.init(invmgr);
Log.info("MiCasa server initialized.");
log.info("MiCasa server initialized.");
}
public static void main (String[] args)
@@ -82,8 +83,7 @@ public class MiCasaServer extends CrowdServer
server.init();
server.run();
} catch (Exception e) {
Log.warning("Unable to initialize server.");
Log.logStackTrace(e);
log.warning("Unable to initialize server.", e);
}
}
}
@@ -34,11 +34,12 @@ import com.threerings.presents.client.Client;
import com.threerings.presents.client.ClientAdapter;
import com.threerings.presents.net.UsernamePasswordCreds;
import com.threerings.micasa.Log;
import com.threerings.micasa.simulator.data.SimulatorInfo;
import com.threerings.micasa.simulator.server.SimpleServer;
import com.threerings.micasa.simulator.server.SimulatorServer;
import static com.threerings.micasa.Log.log;
/**
* The simulator application is a test harness to facilitate development
* and debugging of games.
@@ -71,12 +72,12 @@ public class SimulatorApp
try {
run();
} catch (Exception e) {
Log.warning("Simulator initialization failed " +
log.warning("Simulator initialization failed " +
"[e=" + e + "].");
}
}
public void requestFailed (Exception e) {
Log.warning("Simulator initialization failed [e=" + e + "].");
log.warning("Simulator initialization failed [e=" + e + "].");
}
});
@@ -119,13 +120,13 @@ public class SimulatorApp
// start up the client
Client client = _client.getParlorContext().getClient();
Log.info("Connecting to localhost.");
log.info("Connecting to localhost.");
client.setServer("localhost", Client.DEFAULT_SERVER_PORTS);
// we want to exit when we logged off or failed to log on
client.addClientObserver(new ClientAdapter() {
public void clientFailedToLogon (Client c, Exception cause) {
Log.info("Client failed to logon: " + cause);
log.info("Client failed to logon: " + cause);
System.exit(0);
}
public void clientDidLogoff (Client c) {
@@ -171,8 +172,7 @@ public class SimulatorApp
try {
app.start(args);
} catch (Exception e) {
Log.warning("Error starting up application.");
Log.logStackTrace(e);
log.warning("Error starting up application.", e);
}
}
@@ -32,9 +32,10 @@ import com.threerings.crowd.data.BodyObject;
import com.threerings.parlor.game.data.GameConfig;
import com.threerings.parlor.util.ParlorContext;
import com.threerings.micasa.Log;
import com.threerings.micasa.simulator.data.SimulatorInfo;
import static com.threerings.micasa.Log.log;
/**
* Responsible for top-level control of the simulator client user interface.
*/
@@ -73,7 +74,7 @@ public class SimulatorController extends Controller
return true;
}
Log.info("Unhandled action: " + action);
log.info("Unhandled action: " + action);
return false;
}
@@ -86,7 +87,7 @@ public class SimulatorController extends Controller
// documentation inherited
public void clientDidLogon (Client client)
{
Log.info("Client did logon [client=" + client + "].");
log.info("Client did logon [client=" + client + "].");
// keep the body object around for stuff
_body = (BodyObject)client.getClientObject();
@@ -110,7 +111,7 @@ public class SimulatorController extends Controller
// straightaway
} catch (Exception e) {
Log.warning("Failed to instantiate game config [class=" + _info.gameConfigClass +
log.warning("Failed to instantiate game config [class=" + _info.gameConfigClass +
", error=" + e + "].");
}
}
@@ -125,7 +126,7 @@ public class SimulatorController extends Controller
// documentation inherited
public void clientDidLogoff (Client client)
{
Log.info("Client did logoff [client=" + client + "].");
log.info("Client did logoff [client=" + client + "].");
}
protected ParlorContext _ctx;
@@ -42,7 +42,7 @@ import com.threerings.parlor.game.data.GameConfig;
import com.threerings.parlor.game.data.GameObject;
import com.threerings.parlor.game.server.GameManager;
import com.threerings.micasa.Log;
import static com.threerings.micasa.Log.log;
/**
* The simulator manager is responsible for handling the simulator services on the server side.
@@ -103,8 +103,7 @@ public class SimulatorManager
_gmgr = (GameManager)_plreg.createPlace(config);
} catch (Exception e) {
Log.warning("Unable to create game manager [e=" + e + "].");
Log.logStackTrace(e);
log.warning("Unable to create game manager [e=" + e + "].", e);
return;
}
@@ -136,7 +135,7 @@ public class SimulatorManager
}
}
public void resolutionFailed (Name username, Exception cause) {
Log.warning("Unable to create simulant body object [error=" + cause + "].");
log.warning("Unable to create simulant body object [error=" + cause + "].");
}
};
@@ -160,7 +159,7 @@ public class SimulatorManager
try {
sim = (Simulant)Class.forName(_simClass).newInstance();
} catch (Exception e) {
Log.warning("Unable to create simulant " +
log.warning("Unable to create simulant " +
"[class=" + _simClass + "].");
return;
}
@@ -177,7 +176,7 @@ public class SimulatorManager
try {
_plreg.locprov.moveTo(bobj, _gobj.getOid());
} catch (Exception e) {
Log.warning("Failed to move simulant into room " +
log.warning("Failed to move simulant into room " +
"[e=" + e + "].");
return;
}
@@ -27,7 +27,7 @@ import com.threerings.presents.server.InvocationProvider;
import com.threerings.crowd.data.BodyObject;
import com.threerings.parlor.game.data.GameConfig;
import com.threerings.micasa.Log;
import static com.threerings.micasa.Log.log;
/**
* The simulator provider handles game creation requests on the server
@@ -50,7 +50,7 @@ public class SimulatorProvider
public void createGame (ClientObject caller, GameConfig config,
String simClass, int playerCount)
{
Log.info("handleCreateGameRequest [caller=" + caller.who() +
log.info("handleCreateGameRequest [caller=" + caller.who() +
", config=" + config + ", simClass=" + simClass +
", playerCount=" + playerCount + "].");
+2 -28
View File
@@ -21,8 +21,7 @@
package com.threerings.parlor;
import java.util.logging.Level;
import java.util.logging.Logger;
import com.samskivert.util.Logger;
/**
* Contains a reference to the log object used by the Parlor services.
@@ -30,30 +29,5 @@ import java.util.logging.Logger;
public class Log
{
/** We dispatch our log messages through this logger. */
public static Logger log =
Logger.getLogger("com.threerings.vilya.parlor");
/** Convenience function. */
public static void debug (String message)
{
log.fine(message);
}
/** Convenience function. */
public static void info (String message)
{
log.info(message);
}
/** Convenience function. */
public static void warning (String message)
{
log.warning(message);
}
/** Convenience function. */
public static void logStackTrace (Throwable t)
{
log.log(Level.WARNING, t.getMessage(), t);
}
public static Logger log = Logger.getLogger("com.threerings.parlor");
}
+4 -28
View File
@@ -21,36 +21,12 @@
package com.threerings.parlor.card;
import com.samskivert.util.Logger;
/**
* A placeholder class that contains a reference to the log object used by
* the Card services.
* Contains a reference to the log object used by the Card services.
*/
public class Log
{
public static com.samskivert.util.Log log =
new com.samskivert.util.Log("card");
/** Convenience function. */
public static void debug (String message)
{
log.debug(message);
}
/** Convenience function. */
public static void info (String message)
{
log.info(message);
}
/** Convenience function. */
public static void warning (String message)
{
log.warning(message);
}
/** Convenience function. */
public static void logStackTrace (Throwable t)
{
log.logStackTrace(com.samskivert.util.Log.WARNING, t);
}
public static Logger log = Logger.getLogger("com.threerings.parlor.card");
}
@@ -25,13 +25,14 @@ import com.threerings.util.Name;
import com.threerings.crowd.data.PlaceObject;
import com.threerings.parlor.card.Log;
import com.threerings.parlor.card.data.Card;
import com.threerings.parlor.card.data.CardCodes;
import com.threerings.parlor.card.data.Hand;
import com.threerings.parlor.game.client.GameController;
import com.threerings.parlor.turn.client.TurnGameController;
import static com.threerings.parlor.card.Log.log;
/**
* A controller class for card games. Handles common functions like
* accepting dealt hands.
@@ -44,7 +45,7 @@ public abstract class CardGameController extends GameController
{
if (_ctx.getClient().getClientObject().receivers.containsKey(
CardGameDecoder.RECEIVER_CODE)) {
Log.warning("Yuh oh, we already have a card game receiver " +
log.warning("Yuh oh, we already have a card game receiver " +
"registered and are trying for another...!");
Thread.dumpStack();
}
@@ -47,12 +47,13 @@ import com.threerings.media.util.Path;
import com.threerings.media.util.PathSequence;
import com.threerings.media.util.Pathable;
import com.threerings.parlor.card.Log;
import com.threerings.parlor.card.data.Card;
import com.threerings.parlor.card.data.CardCodes;
import com.threerings.parlor.card.data.Deck;
import com.threerings.parlor.card.data.Hand;
import static com.threerings.parlor.card.Log.log;
/**
* Extends VirtualMediaPanel to provide services specific to rendering and manipulating playing
* cards.
@@ -25,8 +25,6 @@ import com.threerings.crowd.data.BodyObject;
import com.threerings.crowd.data.OccupantInfo;
import com.threerings.crowd.server.OccupantOp;
import com.threerings.parlor.card.Log;
import com.threerings.parlor.card.data.Card;
import com.threerings.parlor.card.data.CardCodes;
import com.threerings.parlor.card.data.CardGameObject;
@@ -42,6 +40,8 @@ import com.threerings.presents.dobj.MessageEvent;
import com.threerings.presents.server.InvocationException;
import com.threerings.presents.server.PresentsServer;
import static com.threerings.parlor.card.Log.log;
/**
* A manager class for card games. Handles common functions like dealing
* hands of cards to all players.
@@ -41,7 +41,6 @@ import com.threerings.crowd.server.PlaceManager;
import com.threerings.parlor.turn.server.TurnGameManagerDelegate;
import com.threerings.parlor.card.Log;
import com.threerings.parlor.card.data.Card;
import com.threerings.parlor.card.data.CardGameObject;
import com.threerings.parlor.card.data.Deck;
@@ -51,6 +50,8 @@ import com.threerings.parlor.card.server.CardGameManager;
import com.threerings.parlor.card.trick.data.TrickCardGameMarshaller;
import com.threerings.parlor.card.trick.data.TrickCardGameObject;
import static com.threerings.parlor.card.Log.log;
/**
* A card game manager delegate for trick-based card games, such as Spades and Hearts.
*/
@@ -216,14 +217,14 @@ public class TrickCardGameManagerDelegate extends TurnGameManagerDelegate
// make sure they're actually a player
int fromidx = _cgmgr.getPlayerIndex(client);
if (fromidx == -1) {
Log.warning("Send request from non-player [username=" +
log.warning("Send request from non-player [username=" +
((BodyObject)client).who() + ", cards=" + StringUtil.toString(cards) + "].");
return;
}
// make sure they have the cards
if (!_hands[fromidx].containsAll(cards)) {
Log.warning("Tried to send cards not held [username=" +
log.warning("Tried to send cards not held [username=" +
((BodyObject)client).who() + ", cards=" + StringUtil.toString(cards) + "].");
return;
}
@@ -254,14 +255,14 @@ public class TrickCardGameManagerDelegate extends TurnGameManagerDelegate
// make sure their hand contains the specified card
if (!_hands[pidx].contains(card)) {
Log.warning("Tried to play card not held [username=" + username +
log.warning("Tried to play card not held [username=" + username +
", card=" + card + "].");
return;
}
// make sure the card is legal to play
if (!_trickCardGame.isCardPlayable(_hands[pidx], card)) {
Log.warning("Tried to play illegal card [username=" + username +
log.warning("Tried to play illegal card [username=" + username +
", card=" + card + "].");
return;
}
@@ -274,7 +275,7 @@ public class TrickCardGameManagerDelegate extends TurnGameManagerDelegate
{
// make sure the game is over
if (_cardGame.state != CardGameObject.GAME_OVER) {
Log.warning("Tried to request rematch when game wasn't over " +
log.warning("Tried to request rematch when game wasn't over " +
"[username=" + ((BodyObject)client).who() + "].");
return;
}
@@ -282,14 +283,14 @@ public class TrickCardGameManagerDelegate extends TurnGameManagerDelegate
// make sure the requester is one of the players
int pidx = _cgmgr.getPlayerIndex(client);
if (pidx == -1) {
Log.warning("Rematch request from non-player [username=" +
log.warning("Rematch request from non-player [username=" +
((BodyObject)client).who() + "].");
return;
}
// make sure the player hasn't already requested
if (_trickCardGame.getRematchRequests()[pidx] != TrickCardGameObject.NO_REQUEST) {
Log.warning("Repeated rematch request [username=" + ((BodyObject)client).who() + "].");
log.warning("Repeated rematch request [username=" + ((BodyObject)client).who() + "].");
return;
}
@@ -23,11 +23,12 @@ package com.threerings.parlor.client;
import com.threerings.util.Name;
import com.threerings.parlor.Log;
import com.threerings.parlor.data.ParlorCodes;
import com.threerings.parlor.game.data.GameConfig;
import com.threerings.parlor.util.ParlorContext;
import static com.threerings.parlor.Log.log;
/**
* The invitation class is used to track information related to
* outstanding invitations generated by or targeted to this client.
@@ -151,7 +152,7 @@ public class Invitation
{
// make sure we have an observer to notify
if (_observer == null) {
Log.warning("No observer registered for invitation " +
log.warning("No observer registered for invitation " +
this + ".");
return;
}
@@ -173,10 +174,9 @@ public class Invitation
}
} catch (Exception e) {
Log.warning("Invitation response observer choked on response " +
log.warning("Invitation response observer choked on response " +
"[code=" + code + ", arg=" + arg +
", invite=" + this + "].");
Log.logStackTrace(e);
", invite=" + this + "].", e);
}
// unless the invitation was countered, we can remove it from the
@@ -30,11 +30,12 @@ import com.threerings.presents.client.BasicDirector;
import com.threerings.presents.client.Client;
import com.threerings.presents.client.InvocationService;
import com.threerings.parlor.Log;
import com.threerings.parlor.data.ParlorCodes;
import com.threerings.parlor.game.data.GameConfig;
import com.threerings.parlor.util.ParlorContext;
import static com.threerings.parlor.Log.log;
/**
* The parlor director manages the client side of the game configuration and matchmaking
* processes. It is also the entity that is listening for game start notifications which it then
@@ -132,7 +133,7 @@ public class ParlorDirector extends BasicDirector
// documentation inherited from interface
public void gameIsReady (int gameOid)
{
Log.info("Handling game ready [goid=" + gameOid + "].");
log.info("Handling game ready [goid=" + gameOid + "].");
// see what our observers have to say about it
boolean handled = false;
@@ -163,8 +164,7 @@ public class ParlorDirector extends BasicDirector
_handler.invitationReceived(invite);
} catch (Exception e) {
Log.warning("Invitation handler choked on invite notification " + invite + ".");
Log.logStackTrace(e);
log.warning("Invitation handler choked on invite notification " + invite + ".", e);
}
}
@@ -174,7 +174,7 @@ public class ParlorDirector extends BasicDirector
// look up the invitation record for this invitation
Invitation invite = (Invitation)_pendingInvites.get(remoteId);
if (invite == null) {
Log.warning("Have no record of invitation for which we received a response?! " +
log.warning("Have no record of invitation for which we received a response?! " +
"[remoteId=" + remoteId + ", code=" + code + ", arg=" + arg + "].");
} else {
@@ -35,13 +35,14 @@ import com.threerings.presents.dobj.SetListener;
import com.threerings.crowd.data.BodyObject;
import com.threerings.parlor.Log;
import com.threerings.parlor.data.Table;
import com.threerings.parlor.data.TableConfig;
import com.threerings.parlor.data.TableLobbyObject;
import com.threerings.parlor.game.data.GameConfig;
import com.threerings.parlor.util.ParlorContext;
import static com.threerings.parlor.Log.log;
/**
* As tables are created and managed within the scope of a place (a lobby), we want to fold the
* table management functionality into the standard hierarchy of place controllers that deal with
@@ -146,14 +147,14 @@ public class TableDirector extends BasicDirector
{
// if we're already in a table, refuse the request
if (_ourTable != null) {
Log.warning("Ignoring request to create table as we're already in a table " +
log.warning("Ignoring request to create table as we're already in a table " +
"[table=" + _ourTable + "].");
return;
}
// make sure we're currently in a place
if (_tlobj == null) {
Log.warning("Requested to create a table but we're not currently in a place " +
log.warning("Requested to create a table but we're not currently in a place " +
"[config=" + config + "].");
return;
}
@@ -170,14 +171,14 @@ public class TableDirector extends BasicDirector
{
// if we're already in a table, refuse the request
if (_ourTable != null) {
Log.warning("Ignoring request to join table as we're already in a table " +
log.warning("Ignoring request to join table as we're already in a table " +
"[table=" + _ourTable + "].");
return;
}
// make sure we're currently in a place
if (_tlobj == null) {
Log.warning("Requested to join a table but we're not currently in a place " +
log.warning("Requested to join a table but we're not currently in a place " +
"[tableId=" + tableId + "].");
return;
}
@@ -194,7 +195,7 @@ public class TableDirector extends BasicDirector
{
// make sure we're currently in a place
if (_tlobj == null) {
Log.warning("Requested to leave a table but we're not currently in a place " +
log.warning("Requested to leave a table but we're not currently in a place " +
"[tableId=" + tableId + "].");
return;
}
@@ -210,7 +211,7 @@ public class TableDirector extends BasicDirector
public void startTableNow (int tableId)
{
if (_tlobj == null) {
Log.warning("Requested to start a table but we're not currently in a place " +
log.warning("Requested to start a table but we're not currently in a place " +
"[tableId=" + tableId + "].");
return;
}
@@ -270,13 +271,13 @@ public class TableDirector extends BasicDirector
int tableId = (Integer)result;
if (_tlobj == null) {
// we've left, it's none of our concern anymore
Log.info("Table created, but no lobby. [tableId=" + tableId + "].");
log.info("Table created, but no lobby. [tableId=" + tableId + "].");
return;
}
Table table = (Table) _tlobj.getTables().get(tableId);
if (table == null) {
Log.warning("Table created, but where is it? [tableId=" + tableId + "]");
log.warning("Table created, but where is it? [tableId=" + tableId + "]");
return;
}
@@ -289,7 +290,7 @@ public class TableDirector extends BasicDirector
// from interface TableService.ResultListener
public void requestFailed (String reason)
{
Log.warning("Table action failed [reason=" + reason + "].");
log.warning("Table action failed [reason=" + reason + "].");
}
/**
@@ -33,12 +33,13 @@ import com.threerings.crowd.data.PlaceConfig;
import com.threerings.crowd.data.PlaceObject;
import com.threerings.crowd.util.CrowdContext;
import com.threerings.parlor.Log;
import com.threerings.parlor.game.data.GameCodes;
import com.threerings.parlor.game.data.GameConfig;
import com.threerings.parlor.game.data.GameObject;
import com.threerings.parlor.util.ParlorContext;
import static com.threerings.parlor.Log.log;
/**
* The game controller manages the flow and control of a game on the client side. This class serves
* as the root of a hierarchy of controller classes that aim to provide functionality shared
@@ -94,7 +95,7 @@ public abstract class GameController extends PlaceController
// we don't want to claim to be finished until any derived classes that overrode this
// method have executed, so we'll queue up a runnable here that will let the game manager
// know that we're ready on the next pass through the distributed event loop
Log.info("Entering game " + _gobj.which() + ".");
log.info("Entering game " + _gobj.which() + ".");
if (_gobj.getPlayerIndex(bobj.getVisibleName()) != -1) {
_ctx.getClient().getRunQueue().postRunnable(new Runnable() {
public void run () {
@@ -193,7 +194,7 @@ public abstract class GameController extends PlaceController
if (event.getName().equals(GameObject.STATE)) {
int newState = event.getIntValue();
if (!stateDidChange(newState)) {
Log.warning("Game transitioned to unknown state [gobj=" + _gobj +
log.warning("Game transitioned to unknown state [gobj=" + _gobj +
", state=" + newState + "].");
}
}
@@ -228,7 +229,7 @@ public abstract class GameController extends PlaceController
*/
protected void playerReady ()
{
Log.info("Reporting ready " + _gobj.which() + ".");
log.info("Reporting ready " + _gobj.which() + ".");
_gobj.manager.invoke("playerReady");
}
@@ -239,7 +240,7 @@ public abstract class GameController extends PlaceController
protected void gameDidStart ()
{
if (_gobj == null) {
Log.info("Received gameDidStart() after leaving game room.");
log.info("Received gameDidStart() after leaving game room.");
return;
}
@@ -454,7 +454,7 @@ public class GameManager extends PlaceManager
boolean result = startGame();
// TEMP: track down weirdness
if (!result && !_postponedStart) {
log.log(Level.WARNING, "First call to startGame: ", firstCall);
log.warning("First call to startGame: ", firstCall);
}
// End: temp
}
@@ -1286,7 +1286,7 @@ public class GameManager extends PlaceManager
try {
gmgr.tick(now);
} catch (Exception e) {
log.log(Level.WARNING, "Game manager choked during tick [gmgr=" + gmgr + "].", e);
log.warning("Game manager choked during tick [gmgr=" + gmgr + "].", e);
}
}
}
@@ -32,12 +32,13 @@ import com.threerings.crowd.data.BodyObject;
import com.threerings.crowd.server.CrowdServer;
import com.threerings.crowd.server.PlaceRegistry;
import com.threerings.parlor.Log;
import com.threerings.parlor.client.ParlorService;
import com.threerings.parlor.data.ParlorCodes;
import com.threerings.parlor.data.TableConfig;
import com.threerings.parlor.game.data.GameConfig;
import static com.threerings.parlor.Log.log;
/**
* The parlor manager is responsible for the parlor services in aggregate. This includes
* maintaining the registry of active games, handling the necessary coordination for the
@@ -107,7 +108,7 @@ public class ParlorManager
{
BodyObject user = (BodyObject)caller;
Log.debug("Processing start solitaire [caller=" + user.who() + ", config=" + config + "].");
log.debug("Processing start solitaire [caller=" + user.who() + ", config=" + config + "].");
try {
// just this fellow will be playing
@@ -123,9 +124,8 @@ public class ParlorManager
listener.requestProcessed();
} catch (InstantiationException ie) {
Log.warning("Error instantiating game manager " +
"[for=" + caller.who() + ", config=" + config + "].");
Log.logStackTrace(ie);
log.warning("Error instantiating game manager " +
"[for=" + caller.who() + ", config=" + config + "].", ie);
throw new InvocationException(INTERNAL_ERROR);
}
}
@@ -183,7 +183,7 @@ public class ParlorManager
// look up the invitation
Invitation invite = (Invitation)_invites.get(inviteId);
if (invite == null) {
Log.warning("Requested to respond to non-existent invitation " +
log.warning("Requested to respond to non-existent invitation " +
"[source=" + source + ", inviteId=" + inviteId +
", code=" + code + ", arg=" + arg + "].");
return;
@@ -191,7 +191,7 @@ public class ParlorManager
// make sure this response came from the proper person
if (source != invite.invitee) {
Log.warning("Got response from non-invitee [source=" + source +
log.warning("Got response from non-invitee [source=" + source +
", invite=" + invite + ", code=" + code +
", arg=" + arg + "].");
return;
@@ -221,7 +221,7 @@ public class ParlorManager
break;
default:
Log.warning("Requested to respond to invitation with unknown response code " +
log.warning("Requested to respond to invitation with unknown response code " +
"[source=" + source + ", invite=" + invite + ", code=" + code +
", arg=" + arg + "].");
break;
@@ -245,7 +245,7 @@ public class ParlorManager
protected void processAcceptedInvitation (Invitation invite)
{
try {
Log.info("Creating game manager [invite=" + invite + "].");
log.info("Creating game manager [invite=" + invite + "].");
// configure the game config with the player info
invite.config.players = new Name[] { invite.invitee.getVisibleName(),
@@ -256,8 +256,7 @@ public class ParlorManager
createGameManager(invite.config);
} catch (Exception e) {
Log.warning("Unable to create game manager [invite=" + invite + ", error=" + e + "].");
Log.logStackTrace(e);
log.warning("Unable to create game manager [invite=" + invite + "].", e);
}
}
@@ -47,7 +47,6 @@ import com.threerings.crowd.data.OccupantInfo;
import com.threerings.crowd.data.PlaceObject;
import com.threerings.crowd.server.CrowdServer;
import com.threerings.parlor.Log;
import com.threerings.parlor.client.TableService;
import com.threerings.parlor.data.ParlorCodes;
import com.threerings.parlor.data.Table;
@@ -58,6 +57,8 @@ import com.threerings.parlor.game.data.GameConfig;
import com.threerings.parlor.game.data.GameObject;
import com.threerings.parlor.game.server.GameManager;
import static com.threerings.parlor.Log.log;
/**
* A table manager can be used by a place manager (or other entity) to take care of the management
* of a table matchmaking service on a particular distributed object.
@@ -126,7 +127,7 @@ public class TableManager
try {
table = _tableClass.newInstance();
} catch (Exception e) {
Log.warning("Table.newInstance() failde [class=" + _tableClass + ", e=" + e + "].");
log.warning("Table.newInstance() failde [class=" + _tableClass + ", e=" + e + "].");
throw new InvocationException(INTERNAL_ERROR);
}
table.init(_dobj.getOid(), tableConfig, config);
@@ -136,7 +137,7 @@ public class TableManager
int cpos = (config.ais == null) ? 0 : config.ais.length;
String error = table.setPlayer(cpos, creator);
if (error != null) {
Log.warning("Unable to add creator to position zero of table!? [table=" + table +
log.warning("Unable to add creator to position zero of table!? [table=" + table +
", creator=" + creator + ", error=" + error + "].");
// bail out now and abort the table creation process
throw new InvocationException(error);
@@ -171,7 +172,7 @@ public class TableManager
// in which they are requesting to create a table
if (_dobj instanceof PlaceObject &&
!((PlaceObject)_dobj).occupants.contains(creator.getOid())) {
Log.warning("Requested to create a table in a place not occupied by the creator " +
log.warning("Requested to create a table in a place not occupied by the creator " +
"[creator=" + creator + ", ploid=" + _dobj.getOid() + "].");
throw new InvocationException(INTERNAL_ERROR);
}
@@ -240,7 +241,7 @@ public class TableManager
// remove the mapping from this user to the table
if (null == notePlayerRemoved(leaver.getOid(), leaver)) {
Log.warning("No body to table mapping to clear? [leaver=" + leaver.who() +
log.warning("No body to table mapping to clear? [leaver=" + leaver.who() +
", table=" + table + "].");
}
@@ -343,7 +344,7 @@ public class TableManager
return gobj.getOid();
} catch (Throwable t) {
Log.warning("Failed to create manager for game [config=" + table.config + "]: " + t);
log.warning("Failed to create manager for game [config=" + table.config + "]: " + t);
throw new InvocationException(INTERNAL_ERROR);
}
}
@@ -416,7 +417,7 @@ public class TableManager
if (table != null) {
purgeTable(table);
} else {
Log.warning("Requested to unmap table that wasn't mapped [gameOid=" + gameOid + "].");
log.warning("Requested to unmap table that wasn't mapped [gameOid=" + gameOid + "].");
}
}
@@ -432,7 +433,7 @@ public class TableManager
Table table = _goidMap.get(gameOid);
if (table == null) {
Log.warning("Unable to find table for running game [gameOid=" + gameOid + "].");
log.warning("Unable to find table for running game [gameOid=" + gameOid + "].");
return;
}
@@ -456,7 +457,7 @@ public class TableManager
// remove this player from the table
if (!pender.clearPlayerByOid(bodyOid)) {
Log.warning("Attempt to remove body from mapped table failed [table=" + pender +
log.warning("Attempt to remove body from mapped table failed [table=" + pender +
", bodyOid=" + bodyOid + "].");
return;
}
@@ -27,12 +27,13 @@ import com.threerings.util.Name;
import com.threerings.crowd.data.PlaceObject;
import com.threerings.crowd.server.PlaceManager;
import com.threerings.parlor.Log;
import com.threerings.parlor.game.server.GameManager;
import com.threerings.parlor.game.server.GameManagerDelegate;
import com.threerings.parlor.turn.data.TurnGameObject;
import static com.threerings.parlor.Log.log;
/**
* Performs the server-side turn-based game processing for a turn based game. Game managers which
* wish to make use of the turn services must implement {@link TurnGameManager} and either create
@@ -96,7 +97,7 @@ public class TurnGameManagerDelegate extends GameManagerDelegate
{
// sanity check
if (_turnIdx < 0 || _turnIdx >= _turnGame.getPlayers().length) {
Log.warning("startTurn() called with invalid turn index [game=" + where() +
log.warning("startTurn() called with invalid turn index [game=" + where() +
", turnIdx=" + _turnIdx + "].");
// abort, abort
return;
@@ -105,7 +106,7 @@ public class TurnGameManagerDelegate extends GameManagerDelegate
// get the player name and sanity-check again
Name name = _tgmgr.getPlayerName(_turnIdx);
if (name == null) {
Log.warning("startTurn() called with invalid player [game=" + where() +
log.warning("startTurn() called with invalid player [game=" + where() +
", turnIdx=" + _turnIdx + "].");
return;
}
@@ -218,7 +219,7 @@ public class TurnGameManagerDelegate extends GameManagerDelegate
if (_turnIdx == oturnIdx) {
// if we've wrapped all the way around, stop where we are even if the current
// player is not active.
Log.warning("1 or less active players. Unable to properly change turn. " +
log.warning("1 or less active players. Unable to properly change turn. " +
"[game=" + where() + "].");
break;
}
@@ -236,7 +237,7 @@ public class TurnGameManagerDelegate extends GameManagerDelegate
while (!_tgmgr.isActivePlayer(_turnIdx)) {
_turnIdx = (_turnIdx + 1) % size;
if (_turnIdx == firstPick) {
Log.warning("No players eligible for randomly-assigned turn. Choking. " +
log.warning("No players eligible for randomly-assigned turn. Choking. " +
"[game=" + where() + "].");
return;
}
+4 -28
View File
@@ -21,36 +21,12 @@
package com.threerings.puzzle;
import com.samskivert.util.Logger;
/**
* A placeholder class that contains a reference to the log object used by
* this package.
* Contains a reference to the log object used by this package.
*/
public class Log
{
public static com.samskivert.util.Log log =
new com.samskivert.util.Log("puzzle");
/** Convenience function. */
public static void debug (String message)
{
log.debug(message);
}
/** Convenience function. */
public static void info (String message)
{
log.info(message);
}
/** Convenience function. */
public static void warning (String message)
{
log.warning(message);
}
/** Convenience function. */
public static void logStackTrace (Throwable t)
{
log.logStackTrace(com.samskivert.util.Log.WARNING, t);
}
public static Logger log = Logger.getLogger("com.threerings.puzzle");
}
@@ -46,11 +46,12 @@ import com.threerings.media.sprite.Sprite;
import com.threerings.parlor.game.data.GameConfig;
import com.threerings.parlor.media.ScoreAnimation;
import com.threerings.puzzle.Log;
import com.threerings.puzzle.data.Board;
import com.threerings.puzzle.data.PuzzleCodes;
import com.threerings.puzzle.util.PuzzleContext;
import static com.threerings.puzzle.Log.log;
/**
* The puzzle board view displays a view of a puzzle game.
*/
@@ -160,7 +161,7 @@ public abstract class PuzzleBoardView extends VirtualMediaPanel
protected void animationFinished (Animation anim)
{
if (DEBUG_ACTION) {
Log.info("Animation cleared " + StringUtil.shortClassName(anim) +
log.info("Animation cleared " + StringUtil.shortClassName(anim) +
":" + _actionAnims.contains(anim));
}
@@ -194,7 +195,7 @@ public abstract class PuzzleBoardView extends VirtualMediaPanel
super.removeSprite(sprite);
if (DEBUG_ACTION) {
Log.info("Sprite cleared " + StringUtil.shortClassName(sprite) +
log.info("Sprite cleared " + StringUtil.shortClassName(sprite) +
":" + _actionSprites.contains(sprite));
}
@@ -253,7 +254,7 @@ public abstract class PuzzleBoardView extends VirtualMediaPanel
return StringUtil.shortClassName(obj);
}
};
Log.info("Board contents [board=" + StringUtil.shortClassName(this) +
log.info("Board contents [board=" + StringUtil.shortClassName(this) +
", sprites=" + StringUtil.listToString(_actionSprites, fmt) +
", anims=" + StringUtil.listToString(_actionAnims, fmt) +
"].");
@@ -348,7 +349,7 @@ public abstract class PuzzleBoardView extends VirtualMediaPanel
protected void maybeFireCleared ()
{
if (DEBUG_ACTION) {
Log.info("Maybe firing cleared " +
log.info("Maybe firing cleared " +
getActionCount() + ":" + isShowing());
}
if (getActionCount() == 0) {
@@ -50,12 +50,13 @@ import com.threerings.crowd.data.PlaceObject;
import com.threerings.parlor.game.client.GameController;
import com.threerings.parlor.game.data.GameObject;
import com.threerings.puzzle.Log;
import com.threerings.puzzle.data.Board;
import com.threerings.puzzle.data.PuzzleCodes;
import com.threerings.puzzle.data.PuzzleObject;
import com.threerings.puzzle.util.PuzzleContext;
import static com.threerings.puzzle.Log.log;
/**
* The puzzle game controller handles logical actions for a puzzle game.
*/
@@ -163,7 +164,7 @@ public abstract class PuzzleController extends GameController
// if we're moving focus to chat..
if (chatting) {
if (_unpauser != null) {
Log.warning("Huh? Already have a mouse unpauser?");
log.warning("Huh? Already have a mouse unpauser?");
_unpauser.release();
}
_unpauser = new Unpauser(_panel);
@@ -407,26 +408,26 @@ public abstract class PuzzleController extends GameController
// refuse to start the action if our puzzle view is hidden
if (_pidx != -1 && !_panel.getBoardView().isShowing()) {
Log.warning("Refusing to start action on hidden puzzle.");
log.warning("Refusing to start action on hidden puzzle.");
Thread.dumpStack();
return;
}
// refuse to start the action if it's already going
if (_astate != ACTION_CLEARED) {
Log.warning("Action state inappropriate for startAction() " +
log.warning("Action state inappropriate for startAction() " +
"[astate=" + _astate + "].");
Thread.dumpStack();
return;
}
if (isChatting() && supportsActionPause()) {
Log.info("Not starting action, player is chatting in a puzzle " +
log.info("Not starting action, player is chatting in a puzzle " +
"that supports pausing the action.");
return;
}
Log.debug("Starting puzzle action.");
log.debug("Starting puzzle action.");
// register the game progress updater; it may already be updated
// because we can cycle through clearing the action and starting
@@ -498,7 +499,7 @@ public abstract class PuzzleController extends GameController
return;
}
Log.debug("Attempting to clear puzzle action.");
log.debug("Attempting to clear puzzle action.");
// put ourselves into a pending clear state and attempt to clear
// the action
@@ -527,13 +528,13 @@ public abstract class PuzzleController extends GameController
// if the action is already ended, fire this pender immediately
if (_astate == ACTION_CLEARED) {
if (pender.actionCleared() == ClearPender.RESTART_ACTION) {
Log.debug("Restarting action at behest of pender " +
log.debug("Restarting action at behest of pender " +
pender + ".");
startAction();
}
} else {
Log.debug("Queueing action pender " + pender + ".");
log.debug("Queueing action pender " + pender + ".");
_clearPenders.add(pender);
}
}
@@ -593,7 +594,7 @@ public abstract class PuzzleController extends GameController
*/
protected void actuallyClearAction ()
{
Log.debug("Actually clearing action.");
log.debug("Actually clearing action.");
// make a note that we've cleared the action
_astate = ACTION_CLEARED;
@@ -617,8 +618,7 @@ public abstract class PuzzleController extends GameController
try {
actionWasCleared();
} catch (Exception e) {
Log.warning("Choked in actionWasCleared");
Log.logStackTrace(e);
log.warning("Choked in actionWasCleared", e);
}
// notify any penders that the action has cleared
@@ -734,7 +734,7 @@ public abstract class PuzzleController extends GameController
{
// make sure they don't queue things up at strange times
if (_puzobj.state != PuzzleObject.IN_PLAY) {
Log.warning("Rejecting progress event; game not in play " +
log.warning("Rejecting progress event; game not in play " +
"[puzobj=" + _puzobj.which() +
", event=" + event + "].");
return;
@@ -744,7 +744,7 @@ public abstract class PuzzleController extends GameController
if (isSyncingBoards()) {
_states.add((board == null) ? null : board.clone());
if (board == null) {
Log.warning("Added progress event with no associated board " +
log.warning("Added progress event with no associated board " +
"state, server will not be able to ensure " +
"board state synchronization.");
}
@@ -37,11 +37,12 @@ import com.threerings.crowd.data.PlaceObject;
import com.threerings.parlor.game.data.GameConfig;
import com.threerings.parlor.util.RobotPlayer;
import com.threerings.puzzle.Log;
import com.threerings.puzzle.data.PuzzleCodes;
import com.threerings.puzzle.data.PuzzleGameCodes;
import com.threerings.puzzle.util.PuzzleContext;
import static com.threerings.puzzle.Log.log;
/**
* The puzzle panel class should be extended by classes that provide a
* view for a puzzle game. The {@link PuzzleController} calls these
@@ -108,7 +109,7 @@ public abstract class PuzzlePanel extends JPanel
{
// bail if we've already got an overlay
if (_opanel != null) {
Log.info("Refusing to push overlay panel, we've already got one " +
log.info("Refusing to push overlay panel, we've already got one " +
"[opanel=" + _opanel + ", npanel=" + opanel + "].");
return false;
}
@@ -40,7 +40,6 @@ import com.threerings.media.util.Path;
import com.threerings.parlor.game.data.GameConfig;
import com.threerings.parlor.media.ScoreAnimation;
import com.threerings.puzzle.Log;
import com.threerings.puzzle.client.PuzzleBoardView;
import com.threerings.puzzle.data.Board;
import com.threerings.puzzle.util.PuzzleContext;
@@ -49,6 +48,8 @@ import com.threerings.puzzle.drop.data.DropBoard;
import com.threerings.puzzle.drop.data.DropConfig;
import com.threerings.puzzle.drop.data.DropPieceCodes;
import static com.threerings.puzzle.Log.log;
/**
* The drop board view displays a drop puzzle game in progress for a
* single player.
@@ -141,7 +142,7 @@ public abstract class DropBoardView extends PuzzleBoardView
public void createPiece (int piece, int sx, int sy)
{
if (sx < 0 || sy < 0 || sx >= _bwid || sy >= _bhei) {
Log.warning("Requested to create piece in invalid location " +
log.warning("Requested to create piece in invalid location " +
"[sx=" + sx + ", sy=" + sy + "].");
Thread.dumpStack();
return;
@@ -171,7 +172,7 @@ public abstract class DropBoardView extends PuzzleBoardView
public void updatePiece (int piece, int sx, int sy)
{
if (sx < 0 || sy < 0 || sx >= _bwid || sy >= _bhei) {
Log.warning("Requested to update piece in invalid location " +
log.warning("Requested to update piece in invalid location " +
"[sx=" + sx + ", sy=" + sy + "].");
Thread.dumpStack();
return;
@@ -192,7 +193,7 @@ public abstract class DropBoardView extends PuzzleBoardView
long duration)
{
if (tx < 0 || ty < 0 || tx >= _bwid || ty >= _bhei) {
Log.warning("Requested to create and move piece to invalid " +
log.warning("Requested to create and move piece to invalid " +
"location [tx=" + tx + ", ty=" + ty + "].");
Thread.dumpStack();
return;
@@ -224,7 +225,7 @@ public abstract class DropBoardView extends PuzzleBoardView
int spos = sy * _bwid + sx;
Sprite piece = _pieces[spos];
if (piece == null) {
Log.warning("Missing source sprite for drop [sx=" + sx +
log.warning("Missing source sprite for drop [sx=" + sx +
", sy=" + sy + ", tx=" + tx + ", ty=" + ty + "].");
return null;
}
@@ -247,11 +248,9 @@ public abstract class DropBoardView extends PuzzleBoardView
if (sx == tx && sy == ty) {
int tpos = ty * _bwid + tx;
if (_pieces[tpos] != null) {
Log.warning("Zoiks! Asked to add a piece where we already " +
log.warning("Zoiks! Asked to add a piece where we already " +
"have one [sx=" + sx + ", sy=" + sy +
", tx=" + tx + ", ty=" + ty + "].");
Log.logStackTrace(where);
return;
", tx=" + tx + ", ty=" + ty + "].", where);
}
_pieces[tpos] = piece;
piece.setLocation(start.x, start.y);
@@ -269,10 +268,9 @@ public abstract class DropBoardView extends PuzzleBoardView
public void pathCompleted (Sprite sprite, Path path, long when) {
sprite.removeSpriteObserver(this);
if (_pieces[tpos] != null) {
Log.warning("Oh god, we're dropping onto another piece " +
log.warning("Oh god, we're dropping onto another piece " +
"[sx=" + sx + ", sy=" + sy +
", tx=" + tx + ", ty=" + ty + "].");
Log.logStackTrace(where);
", tx=" + tx + ", ty=" + ty + "].", where);
return;
}
_pieces[tpos] = sprite;
@@ -39,7 +39,6 @@ import com.threerings.crowd.util.CrowdContext;
import com.threerings.puzzle.util.PuzzleContext;
import com.threerings.puzzle.Log;
import com.threerings.puzzle.client.PuzzleController;
import com.threerings.puzzle.client.PuzzleControllerDelegate;
import com.threerings.puzzle.client.PuzzlePanel;
@@ -55,6 +54,8 @@ import com.threerings.puzzle.drop.util.PieceDropLogic;
import com.threerings.puzzle.drop.util.PieceDropper.PieceDropInfo;
import com.threerings.puzzle.drop.util.PieceDropper;
import static com.threerings.puzzle.Log.log;
/**
* Games that wish to make use of the drop puzzle services will need to
* create an extension of this delegate class, customizing it for their
@@ -187,7 +188,7 @@ public abstract class DropControllerDelegate extends PuzzleControllerDelegate
// it on its merry way once more
if (_blocksprite != null) {
long delta = _dview.getTimeStamp() - _blockStamp;
Log.info("Restarting drop sprite [delta=" + delta + "].");
log.info("Restarting drop sprite [delta=" + delta + "].");
_blocksprite.fastForward(delta);
_blockStamp = 0L;
_dview.addSprite(_blocksprite);
@@ -196,7 +197,7 @@ public abstract class DropControllerDelegate extends PuzzleControllerDelegate
// bouncing, we need to land the block to get things going
// again
if (_blocksprite.isBouncing()) {
Log.info("Ended on a bounce, landing the block and " +
log.info("Ended on a bounce, landing the block and " +
"starting things up.");
checkBlockLanded("bounced", true, true);
}
@@ -210,7 +211,7 @@ public abstract class DropControllerDelegate extends PuzzleControllerDelegate
protected boolean canClearAction ()
{
if (!_stable) {
Log.info("Rejecting canClear() request because not stable.");
log.info("Rejecting canClear() request because not stable.");
}
return _stable && super.canClearAction();
}
@@ -442,7 +443,7 @@ public abstract class DropControllerDelegate extends PuzzleControllerDelegate
protected void dropNextBlock ()
{
if (_blocksprite != null || !_ctrl.hasAction()) {
Log.info("Not dropping block [bs=" + (_blocksprite != null) +
log.info("Not dropping block [bs=" + (_blocksprite != null) +
", action=" + _ctrl.hasAction() + "].");
return;
}
@@ -674,7 +675,7 @@ public abstract class DropControllerDelegate extends PuzzleControllerDelegate
if (_dboard.isValidDrop(rows, cols, pctdone)) {
if (commit) {
Log.info("Not valid drop [source=" + source +
log.info("Not valid drop [source=" + source +
", commit=" + commit + ", atTop=" + atTop +
", pctdone=" + pctdone + "].");
}
@@ -698,7 +699,7 @@ public abstract class DropControllerDelegate extends PuzzleControllerDelegate
// a valid position, and that we aren't somehow
// overwriting an existing piece
if (col < 0 || col >= _bwid || row >= _bhei) {
Log.warning("Placing drop block piece outside board " +
log.warning("Placing drop block piece outside board " +
"bounds!? [x=" + col + ", y=" + row +
", pidx=" + ii +
", blocksprite=" + _blocksprite + "].");
@@ -707,7 +708,7 @@ public abstract class DropControllerDelegate extends PuzzleControllerDelegate
} else {
int cpiece = _dboard.getPiece(col, row);
if (cpiece != PIECE_NONE) {
Log.warning("Placing drop block piece onto " +
log.warning("Placing drop block piece onto " +
"occupied board position!? [x=" + col +
", y=" + row + ", pidx=" + ii +
", blocksprite=" + _blocksprite + "].");
@@ -724,7 +725,7 @@ public abstract class DropControllerDelegate extends PuzzleControllerDelegate
if (DEBUG_PUZZLE && error) {
_dboard.dump();
Log.warning("Bailing out in a flaming pyre of glory.");
log.warning("Bailing out in a flaming pyre of glory.");
System.exit(0);
}
}
@@ -910,7 +911,7 @@ public abstract class DropControllerDelegate extends PuzzleControllerDelegate
boolean evolving = evolveBoard();
boolean debug = false;
if (debug) {
Log.info("Evolved board [evolving=" + evolving + "].");
log.info("Evolved board [evolving=" + evolving + "].");
}
// if we're no longer evolving and the action has not ended, go
@@ -922,7 +923,7 @@ public abstract class DropControllerDelegate extends PuzzleControllerDelegate
// this will trigger further puzzle activity
if (debug) {
Log.info("Board did stabilize");
log.info("Board did stabilize");
}
boardDidStabilize();
@@ -930,7 +931,7 @@ public abstract class DropControllerDelegate extends PuzzleControllerDelegate
// evolution, that it will now be cleared
if (!_ctrl.hasAction()) {
if (debug) {
Log.info("Maybe clearing action.");
log.info("Maybe clearing action.");
}
maybeClearAction();
}
@@ -1067,7 +1068,7 @@ public abstract class DropControllerDelegate extends PuzzleControllerDelegate
unstabilizeBoard();
} else {
Log.debug("Sticking fork in it [risers=" +
log.debug("Sticking fork in it [risers=" +
StringUtil.toString(pieces) + ".");
// let the controller know that we're done for
@@ -32,7 +32,7 @@ import com.threerings.util.DirectionUtil;
import com.threerings.media.image.Mirage;
import com.threerings.media.sprite.Sprite;
import com.threerings.puzzle.Log;
import static com.threerings.puzzle.Log.log;
/**
* The drop sprite is a sprite that displays one or more pieces falling
@@ -29,11 +29,12 @@ import org.apache.commons.lang.StringUtils;
import com.threerings.util.DirectionUtil;
import com.threerings.puzzle.Log;
import com.threerings.puzzle.data.Board;
import com.threerings.puzzle.drop.client.DropControllerDelegate;
import com.threerings.puzzle.drop.util.DropBoardUtil;
import static com.threerings.puzzle.Log.log;
/**
* A class that provides for various useful logical operations to be enacted on a two-dimensional
* board and provides an easier mechanism for referencing pieces by position.
@@ -132,8 +133,7 @@ public class DropBoard extends Board
try {
return _board[(row*_bwid) + col];
} catch (Exception e) {
Log.warning("Failed getting piece [col=" + col + ", row=" + row + ", error=" + e + "].");
Log.logStackTrace(e);
log.warning("Failed getting piece [col=" + col + ", row=" + row + "].", e);
return -1;
}
}
@@ -319,7 +319,7 @@ public class DropBoard extends Board
// this should never happen since even in the most tightly constrained case where the block
// is entirely surrounded by other pieces there are always two valid orientations.
Log.warning("**** We're horked and couldn't rotate at all!");
log.warning("**** We're horked and couldn't rotate at all!");
// System.exit(0);
return null;
}
@@ -425,7 +425,7 @@ public class DropBoard extends Board
return true;
} else {
Log.warning("Attempt to set piece outside board bounds " +
log.warning("Attempt to set piece outside board bounds " +
"[col=" + col + ", row=" + row + ", p=" + piece + "].");
return false;
}
@@ -649,7 +649,7 @@ public class DropBoard extends Board
{
// make sure the target board is a valid target
if (board.getWidth() != _bwid || board.getHeight() != _bhei) {
Log.warning("Can't copy board into destination board with different dimensions " +
log.warning("Can't copy board into destination board with different dimensions " +
"[src=" + this + ", dest=" + board + "].");
return;
}
@@ -686,7 +686,7 @@ public class DropBoard extends Board
{
int size = (_bwid*_bhei);
if (board.length < size) {
Log.warning("Attempt to set board with invalid data size " +
log.warning("Attempt to set board with invalid data size " +
"[len=" + board.length + ", expected=" + size + "].");
return;
}
@@ -24,7 +24,6 @@ package com.threerings.puzzle.drop.server;
import com.threerings.crowd.data.PlaceConfig;
import com.threerings.crowd.data.PlaceObject;
import com.threerings.puzzle.Log;
import com.threerings.puzzle.data.Board;
import com.threerings.puzzle.data.PuzzleCodes;
import com.threerings.puzzle.server.PuzzleManager;
@@ -37,6 +36,8 @@ import com.threerings.puzzle.drop.data.DropLogic;
import com.threerings.puzzle.drop.util.PieceDropLogic;
import com.threerings.puzzle.drop.util.PieceDropper;
import static com.threerings.puzzle.Log.log;
/**
* Provides the necessary support for a puzzle game that involves a
* two-dimensional board containing pieces, with new pieces either falling
@@ -81,7 +82,7 @@ public abstract class DropManagerDelegate extends PuzzleManagerDelegate
_usedrop = logic.useBlockDropping();
_userise = logic.useBoardRising();
if (_usedrop && _userise) {
Log.warning("Can't use dropping blocks and board rising "+
log.warning("Can't use dropping blocks and board rising "+
"functionality simultaneously in a drop puzzle game! " +
"Falling back to straight dropping.");
_userise = false;
@@ -27,10 +27,11 @@ import java.util.List;
import com.samskivert.util.StringUtil;
import com.threerings.puzzle.Log;
import com.threerings.puzzle.drop.data.DropBoard;
import com.threerings.puzzle.drop.data.DropPieceCodes;
import static com.threerings.puzzle.Log.log;
/**
* Handles dropping pieces in a board.
*/
@@ -156,7 +157,7 @@ public class PieceDropper
int end = _logic.getConstrainedEdge(board, xx, yy, RIGHT);
int bwid = board.getWidth();
if (start < 0 || end >= bwid) {
Log.warning("Board reported bogus constrained edge " +
log.warning("Board reported bogus constrained edge " +
"[x=" + xx + ", y=" + yy + ", start=" + start + ", end=" + end + "].");
board.dump();
start = Math.max(start, 0);
@@ -42,13 +42,14 @@ import com.threerings.parlor.game.server.GameManager;
import com.threerings.util.MessageBundle;
import com.threerings.util.Name;
import com.threerings.puzzle.Log;
import com.threerings.puzzle.data.Board;
import com.threerings.puzzle.data.BoardSummary;
import com.threerings.puzzle.data.PuzzleCodes;
import com.threerings.puzzle.data.PuzzleGameMarshaller;
import com.threerings.puzzle.data.PuzzleObject;
import static com.threerings.puzzle.Log.log;
/**
* Extends the {@link GameManager} with facilities for the puzzle games
* that are used in Yohoho. Only features generic to all of our games are
@@ -263,7 +264,7 @@ public abstract class PuzzleManager extends GameManager
// log the AI skill levels for games involving AIs as it's useful
// when tuning AI algorithms
if (_AIs != null) {
Log.info("AIs on the job [game=" + _puzobj.which() +
log.info("AIs on the job [game=" + _puzobj.which() +
", skillz=" + StringUtil.toString(_AIs) + "].");
}
}
@@ -411,7 +412,7 @@ public abstract class PuzzleManager extends GameManager
// apply the event to the player's board
if (!applyProgressEvent(pidx, gevent, cboard)) {
Log.warning("Unknown event [puzzle=" + where() +
log.warning("Unknown event [puzzle=" + where() +
", pidx=" + pidx + ", event=" + gevent + "].");
}
@@ -429,19 +430,19 @@ public abstract class PuzzleManager extends GameManager
int gevent, boolean before)
{
if (DEBUG_PUZZLE) {
Log.info((before ? "About to apply " : "Just applied ") +
log.info((before ? "About to apply " : "Just applied ") +
"[game=" + _puzobj.which() + ", pidx=" + pidx +
", event=" + gevent + "].");
}
if (boardstate == null) {
if (DEBUG_PUZZLE) {
Log.info("No board state provided. Can't compare.");
log.info("No board state provided. Can't compare.");
}
return;
}
boolean equal = _boards[pidx].equals(boardstate);
if (!equal) {
Log.warning("Client and server board states not equal! " +
log.warning("Client and server board states not equal! " +
"[game=" + _puzobj.which() +
", type=" + _puzobj.getClass().getName() + "].");
}
@@ -524,7 +525,7 @@ public abstract class PuzzleManager extends GameManager
// only warn if this isn't a straggling update from the
// previous round
if (roundId != _puzobj.roundId-1) {
Log.warning("Received progress update for invalid round, " +
log.warning("Received progress update for invalid round, " +
"not applying [game=" + _puzobj.which() +
", invalidRoundId=" + roundId +
", roundId=" + _puzobj.roundId + "].");
@@ -534,7 +535,7 @@ public abstract class PuzzleManager extends GameManager
// if the game is over, we wing straggling updates
if (!_puzobj.isInPlay()) {
Log.debug("Ignoring straggling events " +
log.debug("Ignoring straggling events " +
"[game=" + _puzobj.which() +
", who=" + caller.who() +
", events=" + StringUtil.toString(events) + "].");
@@ -544,7 +545,7 @@ public abstract class PuzzleManager extends GameManager
// determine the caller's player index in the game
int pidx = IntListUtil.indexOf(_playerOids, caller.getOid());
if (pidx == -1) {
Log.warning("Received progress update for non-player?! " +
log.warning("Received progress update for non-player?! " +
"[game=" + _puzobj.which() + ", who=" + caller.who() +
", ploids=" + StringUtil.toString(_playerOids) + "].");
return;
@@ -24,7 +24,7 @@ package com.threerings.puzzle.util;
import java.awt.Point;
import java.util.Iterator;
import com.threerings.puzzle.Log;
import static com.threerings.puzzle.Log.log;
/**
* The point set class provides an efficient implementation of a set
@@ -224,7 +224,7 @@ public class PointSet
}
if (_curY >= _rangeY) {
Log.warning("Advanced past point range.");
log.warning("Advanced past point range.");
_curY = 0;
}
}
+4 -28
View File
@@ -21,36 +21,12 @@
package com.threerings.stage;
import com.samskivert.util.Logger;
/**
* A placeholder class that contains a reference to the log object used by
* this package.
* Contains a reference to the log object used by this package.
*/
public class Log
{
public static com.samskivert.util.Log log =
new com.samskivert.util.Log("stage");
/** Convenience function. */
public static void debug (String message)
{
log.debug(message);
}
/** Convenience function. */
public static void info (String message)
{
log.info(message);
}
/** Convenience function. */
public static void warning (String message)
{
log.warning(message);
}
/** Convenience function. */
public static void logStackTrace (Throwable t)
{
log.logStackTrace(com.samskivert.util.Log.WARNING, t);
}
public static Logger log = Logger.getLogger("com.threerings.stage");
}
@@ -30,9 +30,10 @@ import com.threerings.media.tile.TileSet;
import com.threerings.miso.data.ObjectInfo;
import com.threerings.stage.Log;
import com.threerings.stage.data.StageScene;
import static com.threerings.stage.Log.log;
/**
* Handles colorization of object tiles in a scene.
*/
@@ -123,7 +124,7 @@ public class SceneColorizer implements TileSet.Colorizer
// 3. If there are no defaults whatsoever, just hash on the sceneId.
int[] cids = (int[])_cids.get(zation);
if (cids == null) {
Log.warning("Zoiks, have no colorizations for '" +
log.warning("Zoiks, have no colorizations for '" +
zation + "'.");
return -1;
} else {
@@ -29,10 +29,11 @@ import com.threerings.crowd.util.CrowdContext;
import com.threerings.whirled.data.SceneUpdate;
import com.threerings.whirled.spot.client.SpotSceneController;
import com.threerings.stage.Log;
import com.threerings.stage.data.StageLocation;
import com.threerings.stage.util.StageContext;
import static com.threerings.stage.Log.log;
/**
* Extends the {@link SpotSceneController} with functionality specific to
* displaying Stage scenes.
@@ -44,7 +45,7 @@ public class StageSceneController extends SpotSceneController
*/
public void handleLocationClicked (Object source, StageLocation loc)
{
Log.warning("handleLocationClicked(" + source + ", " + loc + ")");
log.warning("handleLocationClicked(" + source + ", " + loc + ")");
}
/**
@@ -55,7 +56,7 @@ public class StageSceneController extends SpotSceneController
*/
public void handleClusterClicked (Object source, Tuple tuple)
{
Log.warning("handleClusterClicked(" + source + ", " + tuple + ")");
log.warning("handleClusterClicked(" + source + ", " + tuple + ")");
}
// documentation inherited
@@ -70,7 +70,6 @@ import com.threerings.whirled.spot.data.Location;
import com.threerings.whirled.spot.data.Portal;
import com.threerings.whirled.spot.data.SceneLocation;
import com.threerings.stage.Log;
import com.threerings.stage.data.StageLocation;
import com.threerings.stage.data.StageMisoSceneModel;
import com.threerings.stage.data.StageScene;
@@ -78,6 +77,8 @@ import com.threerings.stage.data.StageSceneModel;
import com.threerings.stage.util.StageContext;
import com.threerings.stage.util.StageSceneUtil;
import static com.threerings.stage.Log.log;
/**
* Extends the basic Miso scene panel with Stage fun stuff like portals,
* clusters and locations.
@@ -149,7 +150,7 @@ public class StageScenePanel extends MisoScenePanel
setSceneModel(StageMisoSceneModel.getSceneModel(
scene.getSceneModel()));
} else {
Log.warning("Zoiks! We can't display a null scene!");
log.warning("Zoiks! We can't display a null scene!");
// TODO: display something to the user letting them know that
// we're so hosed that we don't even know what time it is
}
@@ -38,7 +38,7 @@ import com.threerings.whirled.spot.data.SpotScene;
import com.threerings.whirled.spot.data.SpotSceneImpl;
import com.threerings.whirled.spot.data.SpotSceneModel;
import com.threerings.stage.Log;
import static com.threerings.stage.Log.log;
/**
* The implementation of the Stage scene interface.
@@ -119,7 +119,7 @@ public class StageScene extends SceneImpl
StageMisoSceneModel mmodel = StageMisoSceneModel.getSceneModel(_model);
if (mmodel != null) {
if (!mmodel.addObject(info)) {
Log.warning("Scene model rejected object add " +
log.warning("Scene model rejected object add " +
"[scene=" + this + ", object=" + info + "].");
}
}
@@ -47,7 +47,6 @@ import com.threerings.whirled.spot.data.Portal;
import com.threerings.whirled.spot.data.SceneLocation;
import com.threerings.whirled.spot.server.SpotSceneManager;
import com.threerings.stage.Log;
import com.threerings.stage.client.StageSceneService;
import com.threerings.stage.data.DefaultColorUpdate;
import com.threerings.stage.data.ModifyObjectsUpdate;
@@ -61,6 +60,8 @@ import com.threerings.stage.data.StageSceneModel;
import com.threerings.stage.data.StageSceneObject;
import com.threerings.stage.util.StageSceneUtil;
import static com.threerings.stage.Log.log;
/**
* Defines extensions to the basic Stage scene manager specific to
* displaying isometric "stage" scenes (these may be indoor, outdoor or
@@ -111,7 +112,7 @@ public class StageSceneManager extends SpotSceneManager
Rectangle foot = StageSceneUtil.getObjectFootprint(
StageServer.tilemgr, info.tileId, info.x, info.y);
if (foot == null) {
Log.warning("Aiya! Unable to compute object footprint! " +
log.warning("Aiya! Unable to compute object footprint! " +
"[where=" + where() + ", info=" + info + "].");
return false;
}
@@ -130,7 +131,7 @@ public class StageSceneManager extends SpotSceneManager
update.init(_sscene.getId(), _sscene.getVersion(),
new ObjectInfo[] { info }, killOverlap ? lappers : null);
Log.info("Modifying objects '" + update + ".");
log.info("Modifying objects '" + update + ".");
recordUpdate(update, true);
return true;
@@ -197,7 +198,7 @@ public class StageSceneManager extends SpotSceneManager
ModifyObjectsUpdate update = new ModifyObjectsUpdate();
update.init(_sscene.getId(), _sscene.getVersion(), null, info);
Log.info("Modifying objects '" + update + ".");
log.info("Modifying objects '" + update + ".");
recordUpdate(update, true);
listener.requestProcessed();
@@ -393,7 +394,7 @@ public class StageSceneManager extends SpotSceneManager
{
// sanity check
if (entry == null) {
Log.warning("Requested to compute entering location for " +
log.warning("Requested to compute entering location for " +
"non-existent portal [where=" + where() +
", who=" + body.who() + "].");
entry = _sscene.getDefaultEntrance();
@@ -553,7 +554,7 @@ public class StageSceneManager extends SpotSceneManager
// make sure this person isn't already in our cluster
ClusterObject clobj = clrec.getClusterObject();
if (clobj != null && clobj.occupants.contains(bodyOid)) {
Log.warning("Ignoring stale occupant [where=" + where() +
log.warning("Ignoring stale occupant [where=" + where() +
", cluster=" + cl + ", occ=" + bodyOid + "].");
continue;
}
@@ -561,7 +562,7 @@ public class StageSceneManager extends SpotSceneManager
// make sure the subsumee exists
final BodyObject bobj = (BodyObject)StageServer.omgr.getObject(bodyOid);
if (bobj == null) {
Log.warning("Can't subsume disappeared body " +
log.warning("Can't subsume disappeared body " +
"[where=" + where() + ", cluster=" + cl +
", boid=" + bodyOid + "].");
continue;
@@ -574,12 +575,12 @@ public class StageSceneManager extends SpotSceneManager
StageServer.omgr.postRunnable(new Runnable() {
public void run () {
try {
Log.info("Subsuming " + bobj.who() +
log.info("Subsuming " + bobj.who() +
" into " + fclrec.getCluster() + ".");
fclrec.addBody(bobj);
} catch (InvocationException ie) {
Log.info("Unable to subsume neighbor " +
log.info("Unable to subsume neighbor " +
"[cluster=" + fclrec.getCluster() +
", neighbor=" + bobj.who() +
", cause=" + ie.getMessage() + "].");
@@ -672,7 +673,7 @@ public class StageSceneManager extends SpotSceneManager
cl.width = 1; cl.height = 1;
SceneLocation loc = locationForBody(bodyOid);
if (loc == null) {
Log.warning("Foreign body added to cluster [clrec=" + clrec +
log.warning("Foreign body added to cluster [clrec=" + clrec +
", body=" + body.who() + "].");
cl.x = 10; cl.y = 10;
} else {
@@ -710,7 +711,7 @@ public class StageSceneManager extends SpotSceneManager
if (sloc == null) {
BodyObject user = (BodyObject)StageServer.omgr.getObject(bodyOid);
String who = (user == null) ? ("" + bodyOid) : user.who();
Log.warning("Can't position locationless user " +
log.warning("Can't position locationless user " +
"[where=" + where() + ", cluster=" + cl +
", boid=" + who + "].");
return;
@@ -772,7 +773,7 @@ public class StageSceneManager extends SpotSceneManager
StageOccupantInfo info = (StageOccupantInfo)_ssobj.occupantInfo.get(
Integer.valueOf(target.getOid()));
if (info == null) {
Log.warning("Have no occinfo for cluster target " +
log.warning("Have no occinfo for cluster target " +
"[where=" + where() + ", init=" + initiator.who() +
", target=" + target.who() + "].");
throw new InvocationException(INTERNAL_ERROR);
@@ -28,9 +28,10 @@ import com.threerings.media.tile.bundle.BundledTileSetRepository;
import com.threerings.whirled.server.WhirledServer;
import com.threerings.stage.Log;
import com.threerings.stage.data.StageCodes;
import static com.threerings.stage.Log.log;
/**
* Extends the Whirled server to provide services needed by the Stage
* system.
@@ -62,7 +63,7 @@ public abstract class StageServer extends WhirledServer
new BundledTileSetRepository(rsrcmgr, null,
StageCodes.TILESET_RSRC_SET));
Log.info("Stage server initialized.");
log.info("Stage server initialized.");
}
/**
@@ -69,6 +69,8 @@ import com.threerings.stage.data.StageSceneModel;
import com.threerings.stage.tools.editor.util.EditorContext;
import com.threerings.stage.tools.xml.StageSceneWriter;
import static com.threerings.stage.Log.log;
/**
* A scene editor application that provides facilities for viewing,
* editing, and saving the scene templates that comprise a game.
@@ -84,7 +86,7 @@ public class EditorApp implements Runnable
final String target = (args.length > 0) ? args[0] : null;
if (System.getProperty("no_log_redir") != null) {
Log.info("Logging to console only.");
log.info("Logging to console only.");
} else {
String dlog = localDataDir("editor.log");
@@ -93,10 +95,10 @@ public class EditorApp implements Runnable
new BufferedOutputStream(new FileOutputStream(dlog)), true);
System.setOut(logOut);
System.setErr(logOut);
Log.info("Opened debug log '" + dlog + "'.");
log.info("Opened debug log '" + dlog + "'.");
} catch (IOException ioe) {
Log.warning("Failed to open debug log [path=" + dlog +
log.warning("Failed to open debug log [path=" + dlog +
", error=" + ioe + "].");
}
}
@@ -145,8 +147,7 @@ public class EditorApp implements Runnable
}
public void initializationFailed (Exception e) {
Log.warning("Failed unpacking bundles [e=" + e + "].");
Log.logStackTrace(e);
log.warning("Failed unpacking bundles [e=" + e + "].", e);
}
};
// we want our methods called on the AWT thread
@@ -166,7 +167,7 @@ public class EditorApp implements Runnable
_crepo = new BundledComponentRepository(
_rmgr, _imgr, "components");
} catch (IOException e) {
Log.warning("Exception loading tilesets and and icon manager " +
log.warning("Exception loading tilesets and and icon manager " +
"[Exception=" + e + "].");
return;
}
@@ -224,13 +225,12 @@ public class EditorApp implements Runnable
} catch (Throwable t) {
// Win98 seems to choke on it's own vomit when we attempt to
// enumerate the available display modes; yay!
Log.warning("Failed to probe display mode.");
Log.logStackTrace(t);
log.warning("Failed to probe display mode.", t);
}
if (_viewFullScreen.getValue() && gd.isFullScreenSupported() &&
pmode != null) {
Log.info("Switching to screen mode " +
log.info("Switching to screen mode " +
"[mode=" + ModeUtil.toString(pmode) + "].");
// set the frame to undecorated, full-screen
_frame.setUndecorated(true);
@@ -277,8 +277,7 @@ public class EditorApp implements Runnable
EventQueue.invokeLater(app);
} catch (IOException ioe) {
Log.warning("Unable to initialize editor.");
Log.logStackTrace(ioe);
log.warning("Unable to initialize editor.", ioe);
}
}
@@ -328,7 +327,7 @@ public class EditorApp implements Runnable
public String xlate (String bundle, String message) {
MessageBundle mbundle = _msgmgr.getBundle(bundle);
if (mbundle == null) {
Log.warning("Requested to translate message with " +
log.warning("Requested to translate message with " +
"non-existent bundle [bundle=" + bundle +
", message=" + message + "].");
return message;
@@ -52,6 +52,7 @@ import com.samskivert.swing.util.SwingUtil;
import com.threerings.media.ManagedJFrame;
import com.threerings.miso.tile.BaseTileSet;
import com.threerings.miso.util.MisoSceneMetrics;
import com.threerings.stage.data.StageScene;
import com.threerings.stage.data.StageSceneModel;
import com.threerings.stage.tools.editor.util.EditorContext;
@@ -60,6 +61,8 @@ import com.threerings.stage.tools.xml.StageSceneParser;
import com.threerings.stage.tools.xml.StageSceneWriter;
import com.threerings.whirled.tools.xml.SceneParser;
import static com.threerings.stage.Log.log;
public class EditorFrame extends ManagedJFrame
{
public EditorFrame (StageSceneWriter writer)
@@ -171,8 +174,7 @@ public class EditorFrame extends ManagedJFrame
try {
loaded = loadScene(lastFile);
} catch (Exception e) {
Log.warning("Unable to load last scene, creating new one [file=" + lastFile + "]");
Log.logStackTrace(e);
log.warning("Unable to load last scene, creating new one", "file", lastFile, e);
}
}
if (!loaded) {
@@ -290,8 +292,7 @@ public class EditorFrame extends ManagedJFrame
setScene(new StageScene(model, null));
} catch (Exception e) {
Log.warning("Unable to set blank scene.");
Log.logStackTrace(e);
log.warning("Unable to set blank scene.", e);
}
}
@@ -337,7 +338,7 @@ public class EditorFrame extends ManagedJFrame
} catch (Exception e) {
errmsg = "Parse error: " + e;
Log.logStackTrace(e);
log.warning(e);
}
if (errmsg != null) {
@@ -387,14 +388,14 @@ public class EditorFrame extends ManagedJFrame
// the old file
File sfile = new File(_filepath);
if (!sfile.delete()) {
Log.warning("Aiya! Not able to remove " + _filepath +
log.warning("Aiya! Not able to remove " + _filepath +
" so that we can replace it with " +
tmpfile.getPath() + ".");
}
// now rename the new save file into place
if (!tmpfile.renameTo(sfile)) {
Log.warning("Fork! Not able to rename " + tmpfile.getPath() +
log.warning("Fork! Not able to rename " + tmpfile.getPath() +
" to " + _filepath + ".");
}
@@ -402,9 +403,7 @@ public class EditorFrame extends ManagedJFrame
String errmsg = "Unable to save scene to " + _filepath + ":\n" + e;
JOptionPane.showMessageDialog(
this, errmsg, "Save error", JOptionPane.ERROR_MESSAGE);
Log.warning("Error writing scene " +
"[fname=" + _filepath + ", e=" + e + "].");
Log.logStackTrace(e);
log.warning("Error writing scene [fname=" + _filepath + "].", e);
}
}
@@ -514,7 +513,7 @@ public class EditorFrame extends ManagedJFrame
if (_model.getTileSet() instanceof BaseTileSet) {
_svpanel.updateDefaultTileSet(_model.getTileSetId());
} else {
Log.warning("Not making non-base tileset into default " +
log.warning("Not making non-base tileset into default " +
_model.getTileSet() + ".");
}
}
@@ -545,7 +544,7 @@ public class EditorFrame extends ManagedJFrame
break;
default:
Log.warning("Wha? Weird dialog type " + _chooser.getDialogType() + ".");
log.warning("Wha? Weird dialog type " + _chooser.getDialogType() + ".");
break;
}
}
@@ -30,6 +30,8 @@ import com.threerings.media.tile.TileUtil;
import com.threerings.util.DirectionCodes;
import static com.threerings.stage.Log.log;
/**
* The EditorModel class provides a holding place for storing,
* modifying and retrieving data that is shared across the Editor
@@ -183,7 +185,7 @@ public class EditorModel
}
}
Log.warning("Attempt to set to unknown mode [cmd=" + cmd + "].");
log.warning("Attempt to set to unknown mode [cmd=" + cmd + "].");
}
/**
@@ -75,6 +75,8 @@ import com.threerings.stage.tools.editor.util.EditorContext;
import com.threerings.stage.tools.editor.util.EditorDialogUtil;
import com.threerings.stage.tools.editor.util.ExtrasPainter;
import static com.threerings.stage.Log.log;
/**
* Displays the scene view and handles UI events on the scene. Various
* actions may be performed on the scene depending on the selected action
@@ -204,7 +206,7 @@ public class EditorScenePanel extends StageScenePanel
_vertRange.setRangeProperties(
vval, _vbounds.height, _area.y, vmax, false);
// Log.info("Updated extents area:" + StringUtil.toString(_area) +
// log.info("Updated extents area:" + StringUtil.toString(_area) +
// " vb:" + StringUtil.toString(_vbounds) + ".");
// update the dimensions of the scrollbox
@@ -251,7 +253,7 @@ public class EditorScenePanel extends StageScenePanel
protected void deleteTile (int x, int y)
{
Rectangle drag = clearTileSelectRegion(x, y);
Log.info("Deleting " + drag);
log.info("Deleting " + drag);
switch (_emodel.getLayerIndex()) {
case EditorModel.BASE_LAYER:
@@ -658,7 +660,7 @@ public class EditorScenePanel extends StageScenePanel
}
return true;
}
Log.warning("Requested to remove unknown object " + scobj + ".");
log.warning("Requested to remove unknown object " + scobj + ".");
return false;
}
@@ -32,6 +32,8 @@ import com.threerings.media.tile.TileIcon;
import com.threerings.media.tile.TileManager;
import com.threerings.media.tile.UniformTileSet;
import static com.threerings.stage.Log.log;
public class EditorToolBarPanel extends JPanel implements ActionListener
{
public EditorToolBarPanel (TileManager tilemgr, EditorModel model)
@@ -63,7 +65,7 @@ public class EditorToolBarPanel extends JPanel implements ActionListener
_buttons.add(b);
} else {
Log.warning("Unable to load toolbar icon " +
log.warning("Unable to load toolbar icon " +
"[index=" + ii + "].");
}
}
@@ -113,7 +115,7 @@ public class EditorToolBarPanel extends JPanel implements ActionListener
_model.setActionMode(cmd.substring(5));
} else {
Log.warning("Unknown action command [cmd=" + cmd + "].");
log.warning("Unknown action command [cmd=" + cmd + "].");
}
}
@@ -1,56 +0,0 @@
//
// $Id$
//
// Vilya library - tools for developing networked games
// Copyright (C) 2002-2007 Three Rings Design, Inc., All Rights Reserved
// http://www.threerings.net/code/vilya/
//
// This library is free software; you can redistribute it and/or modify it
// under the terms of the GNU Lesser General Public License as published
// by the Free Software Foundation; either version 2.1 of the License, or
// (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
package com.threerings.stage.tools.editor;
/**
* A placeholder class that contains a reference to the log object used by
* this package.
*/
public class Log
{
public static com.samskivert.util.Log log =
new com.samskivert.util.Log("stage.tools.editor");
/** Convenience function. */
public static void debug (String message)
{
log.debug(message);
}
/** Convenience function. */
public static void info (String message)
{
log.info(message);
}
/** Convenience function. */
public static void warning (String message)
{
log.warning(message);
}
/** Convenience function. */
public static void logStackTrace (Throwable t)
{
log.logStackTrace(com.samskivert.util.Log.WARNING, t);
}
}
@@ -38,6 +38,8 @@ import com.samskivert.swing.VGroupLayout;
import com.threerings.stage.tools.editor.util.EditorDialogUtil;
import static com.threerings.stage.Log.log;
/**
* A dialog for editing preferences.
*/
@@ -87,7 +89,7 @@ public class PreferencesDialog extends JInternalFrame
EditorDialogUtil.dispose(this);
} else {
Log.warning("Unknown action command [cmd=" + cmd + "].");
log.warning("Unknown action command [cmd=" + cmd + "].");
}
}
@@ -42,6 +42,8 @@ import com.threerings.media.tile.tools.xml.ObjectTileSetRuleSet;
import com.threerings.media.tile.tools.xml.SwissArmyTileSetRuleSet;
import com.threerings.media.tile.tools.xml.XMLTileSetParser;
import static com.threerings.stage.Log.log;
/**
* The TestTileLoader handles test tiles. Test tiles are tiles that an
* artist can load in on-the-fly to see how things look in the scene editor.
@@ -83,7 +85,7 @@ public class TestTileLoader implements TileSetIDBroker
File testdir = new File(directory);
// make sure it's a directory
if (!testdir.isDirectory()) {
Log.warning("Test tileset directory is not actually a directory: " +
log.warning("Test tileset directory is not actually a directory: " +
directory);
return map;
}
@@ -124,8 +126,7 @@ public class TestTileLoader implements TileSetIDBroker
try {
_parser.loadTileSets(xmlfile, tiles);
} catch (IOException ioe) {
Log.warning("Error while parsing " + xmlfile.getPath());
Log.logStackTrace(ioe);
log.warning("Error while parsing " + xmlfile.getPath(), ioe);
continue;
}
@@ -67,6 +67,8 @@ import com.threerings.media.tile.TileSetRepository;
import com.threerings.stage.tools.editor.util.EditorContext;
import com.threerings.stage.tools.editor.util.TileSetUtil;
import static com.threerings.stage.Log.log;
/**
* The tile info panel presents the user with options to select the
* tile to be applied to the scene.
@@ -114,8 +116,7 @@ public class TileInfoPanel extends JSplitPane
}
} catch (Exception e) {
Log.warning("Error enumerating tilesets.");
Log.logStackTrace(e);
log.warning("Error enumerating tilesets.", e);
}
// set up a border denoting our contents
@@ -271,7 +272,7 @@ public class TileInfoPanel extends JSplitPane
Object uobj = node.getUserObject();
if (!(uobj instanceof TileSetRecord)) {
Log.info("Eh? Non-TileSetRecord leaf [obj=" + uobj +
log.info("Eh? Non-TileSetRecord leaf [obj=" + uobj +
", class=" + StringUtil.shortClassName(uobj) + "].");
return;
}
@@ -24,7 +24,6 @@ package com.threerings.stage.tools.editor.util;
import com.threerings.media.tile.TileSet;
import com.threerings.miso.tile.BaseTileSet;
import com.threerings.stage.tools.editor.Log;
import com.threerings.stage.tools.editor.EditorModel;
/**
@@ -50,9 +50,10 @@ import com.threerings.cast.ComponentRepository;
import com.threerings.miso.tile.MisoTileManager;
import com.threerings.stage.Log;
import com.threerings.stage.util.StageContext;
import static com.threerings.stage.Log.log;
/**
* The ViewerApp is a scene viewing application that allows for trying out
* Stage scenes in a pseudo-runtime environment.
@@ -71,7 +72,7 @@ public class ViewerApp
// get the target graphics device
GraphicsDevice gd = env.getDefaultScreenDevice();
Log.info("Graphics device [dev=" + gd +
log.info("Graphics device [dev=" + gd +
", mem=" + gd.getAvailableAcceleratedMemory() +
", displayChange=" + gd.isDisplayChangeSupported() +
", fullScreen=" + gd.isFullScreenSupported() + "].");
@@ -79,7 +80,7 @@ public class ViewerApp
// get the graphics configuration and display mode information
GraphicsConfiguration gc = gd.getDefaultConfiguration();
DisplayMode dm = gd.getDisplayMode();
Log.info("Display mode [bits=" + dm.getBitDepth() +
log.info("Display mode [bits=" + dm.getBitDepth() +
", wid=" + dm.getWidth() + ", hei=" + dm.getHeight() +
", refresh=" + dm.getRefreshRate() + "].");
@@ -105,7 +106,7 @@ public class ViewerApp
// size and position the window, entering full-screen exclusive
// mode if available and desired
if (gd.isFullScreenSupported() /* && _viewFullScreen.getValue() */) {
Log.info("Entering full-screen exclusive mode.");
log.info("Entering full-screen exclusive mode.");
gd.setFullScreenWindow(_frame);
} else {
_frame.setSize(640, 575);
@@ -46,12 +46,13 @@ import com.threerings.whirled.spot.data.Location;
import com.threerings.whirled.spot.data.Portal;
import com.threerings.whirled.spot.data.SpotSceneModel;
import com.threerings.stage.Log;
import com.threerings.stage.data.StageScene;
import com.threerings.stage.data.StageSceneModel;
import com.threerings.stage.tools.xml.StageSceneParser;
import com.threerings.stage.util.StageContext;
import static com.threerings.stage.Log.log;
/**
* The viewer frame is the main application window.
*/
@@ -167,7 +168,7 @@ public class ViewerFrame extends ManagedJFrame
}
}
if (defloc == null) {
Log.warning("Scene has no def. entrance '" + path + "'.");
log.warning("Scene has no def. entrance '" + path + "'.");
}
_panel.setScene(new StageScene(model, null), defloc);
@@ -175,7 +176,7 @@ public class ViewerFrame extends ManagedJFrame
} catch (Exception e) {
errmsg = "Error parsing scene file '" + path + "'.";
Log.logStackTrace(e);
log.warning(e);
}
if (errmsg != null) {
@@ -48,11 +48,12 @@ import com.threerings.media.util.Path;
import com.threerings.stage.client.StageScenePanel;
import com.threerings.whirled.spot.data.Location;
import com.threerings.stage.Log;
import com.threerings.stage.data.StageLocation;
import com.threerings.stage.data.StageScene;
import com.threerings.stage.util.StageContext;
import static com.threerings.stage.Log.log;
public class ViewerScenePanel extends StageScenePanel
implements PerformanceObserver, PathObserver
{
@@ -165,7 +166,7 @@ public class ViewerScenePanel extends StageScenePanel
// documentation inherited
public void checkpoint (String name, int ticks)
{
Log.info(name + " [ticks=" + ticks + "].");
log.info(name + " [ticks=" + ticks + "].");
}
/** MouseListener interface methods */
@@ -40,11 +40,12 @@ import com.threerings.media.tile.TileManager;
import com.threerings.miso.data.ObjectInfo;
import com.threerings.stage.Log;
import com.threerings.stage.data.StageCodes;
import com.threerings.stage.data.StageMisoSceneModel;
import com.threerings.stage.data.StageScene;
import static com.threerings.stage.Log.log;
/**
* Maintains extra information on objects in a scene and checks proposed
* placement operations for constraint violations. When the constraints
@@ -169,7 +170,7 @@ public class PlacementConstraints
for (int ii = 0; ii < info.length; ii++) {
data[ii] = _objectData.get(info[ii]);
if (data[ii] == null) {
Log.warning("Couldn't match object info up to data [info=" +
log.warning("Couldn't match object info up to data [info=" +
info[ii] + "].");
return null;
}
@@ -532,9 +533,7 @@ public class PlacementConstraints
return new ObjectData(bounds, tile);
} catch (Exception e) {
Log.warning("Error retrieving tile for object [info=" +
info + ", error=" + e + "].");
Log.logStackTrace(e);
log.warning("Error retrieving tile for object [info=" + info + "].", e);
return null;
}
}
@@ -46,11 +46,12 @@ import com.threerings.miso.util.ObjectSet;
import com.threerings.whirled.spot.data.Cluster;
import com.threerings.whirled.spot.data.SceneLocation;
import com.threerings.stage.Log;
import com.threerings.stage.data.StageLocation;
import com.threerings.stage.data.StageMisoSceneModel;
import com.threerings.stage.data.StageSceneModel;
import static com.threerings.stage.Log.log;
/**
* Provides scene related utility functions.
*/
@@ -144,7 +145,7 @@ public class StageSceneUtil
return new StageLocation(opos.x, opos.y, (byte)orient);
} catch (Exception e) {
Log.warning("Unable to look up object tile for scene object " +
log.warning("Unable to look up object tile for scene object " +
"[tileId=" + tileId + ", error=" + e + "].");
}
return null;
@@ -208,7 +209,7 @@ public class StageSceneUtil
return true;
} catch (Exception e) {
Log.warning("Unable to look up object tile for scene object " +
log.warning("Unable to look up object tile for scene object " +
"[tileId=" + tileId + ", error=" + e + "].");
return false;
}
@@ -232,7 +233,7 @@ public class StageSceneUtil
return tset.getPassability()[tidx];
} catch (Exception e) {
Log.warning("Unable to look up base tile [tileId=" + tileId +
log.warning("Unable to look up base tile [tileId=" + tileId +
", error=" + e + "].");
return true;
}
@@ -266,7 +267,7 @@ public class StageSceneUtil
double radius = (double)fwid/2;
int clidx = cluster.width-2;
if (clidx >= CLUSTER_METRICS.length/2 || clidx < 0) {
Log.warning("Requested locs from invalid cluster " + cluster + ".");
log.warning("Requested locs from invalid cluster " + cluster + ".");
Thread.dumpStack();
return list;
}
@@ -434,7 +435,7 @@ public class StageSceneUtil
objs.remove(ii--);
}
} else {
Log.warning("Unknown potentially intersecting object?! " +
log.warning("Unknown potentially intersecting object?! " +
"[scene=" + model.name + " (" + model.sceneId +
"), info=" + info + "].");
}
+1 -1
View File
@@ -3,7 +3,7 @@
package com.threerings.stats;
import java.util.logging.Logger;
import com.samskivert.util.Logger;
/**
* A placeholder class that contains a reference to the log object used by this project.
@@ -103,7 +103,7 @@ public class StatRepository extends DepotRepository
updateStat(playerId, stats[ii]);
}
} catch (Exception e) {
log.log(Level.WARNING, "Error flushing modified stat [stat=" + stats[ii] + "].", e);
log.warning("Error flushing modified stat [stat=" + stats[ii] + "].", e);
}
}
}
@@ -120,7 +120,7 @@ public class StatRepository extends DepotRepository
try {
code = assignStringCode(type, value);
} catch (PersistenceException pe) {
log.log(Level.WARNING, "Failed to assign code [type=" + type +
log.warning("Failed to assign code [type=" + type +
", value=" + value + "].", pe);
// at this point the database is probably totally hosed, so we can just punt here,
// and assume that this value will never be persisted
@@ -142,7 +142,7 @@ public class StatRepository extends DepotRepository
try {
loadStringCodes(type);
} catch (PersistenceException pe) {
log.log(Level.WARNING, "Failed to reload string codes " +
log.warning("Failed to reload string codes " +
"[type=" + type + ", code=" + code + "].", pe);
}
map = _codeToString.get(type);
@@ -200,7 +200,7 @@ public class StatRepository extends DepotRepository
errmsg = "Unable to decode stat";
}
log.log(Level.WARNING, errmsg + " [type=" + stat.getType() + "]", error);
log.warning(errmsg + " [type=" + stat.getType() + "]", error);
return null;
}
+4 -35
View File
@@ -21,43 +21,12 @@
package com.threerings.whirled;
import com.samskivert.util.Logger;
/**
* A placeholder class that contains a reference to the log object used by
* the Whirled services.
* Contains a reference to the log object used by the Whirled services.
*/
public class Log
{
public static com.samskivert.util.Log log =
new com.samskivert.util.Log("whirled");
/** Convenience function. */
public static boolean debug ()
{
return (com.samskivert.util.Log.getLevel() ==
com.samskivert.util.Log.DEBUG);
}
/** Convenience function. */
public static void debug (String message)
{
log.debug(message);
}
/** Convenience function. */
public static void info (String message)
{
log.info(message);
}
/** Convenience function. */
public static void warning (String message)
{
log.warning(message);
}
/** Convenience function. */
public static void logStackTrace (Throwable t)
{
log.logStackTrace(com.samskivert.util.Log.WARNING, t);
}
public static Logger log = Logger.getLogger("com.threerings.whirled");
}
@@ -34,7 +34,6 @@ import com.threerings.crowd.client.LocationDirector;
import com.threerings.crowd.client.LocationObserver;
import com.threerings.crowd.data.PlaceConfig;
import com.threerings.whirled.Log;
import com.threerings.whirled.client.persist.SceneRepository;
import com.threerings.whirled.data.Scene;
import com.threerings.whirled.data.SceneCodes;
@@ -44,6 +43,8 @@ import com.threerings.whirled.util.SceneFactory;
import com.threerings.whirled.util.WhirledContext;
import com.threerings.whirled.data.SceneUpdate;
import static com.threerings.whirled.Log.log;
/**
* The scene director is the client's interface to all things scene related. It interfaces with the
* scene repository to ensure that scene objects are available when the client enters a particular
@@ -138,13 +139,13 @@ public class SceneDirector extends BasicDirector
{
// make sure the sceneId is valid
if (sceneId < 0) {
Log.warning("Refusing moveTo(): invalid sceneId " + sceneId + ".");
log.warning("Refusing moveTo(): invalid sceneId " + sceneId + ".");
return false;
}
// sanity-check the destination scene id
if (sceneId == _sceneId) {
Log.warning("Refusing request to move to the same scene [sceneId=" + sceneId + "].");
log.warning("Refusing request to move to the same scene [sceneId=" + sceneId + "].");
return false;
}
@@ -177,11 +178,11 @@ public class SceneDirector extends BasicDirector
// complain if we're over-writing a pending request
if (movePending()) {
if (refuse) {
Log.warning("Refusing moveTo; We have a request outstanding " +
log.warning("Refusing moveTo; We have a request outstanding " +
"[psid=" + _pendingSceneId + ", nsid=" + sceneId + "].");
return false;
} else {
Log.warning("Overriding stale moveTo request [psid=" + _pendingSceneId +
log.warning("Overriding stale moveTo request [psid=" + _pendingSceneId +
", nsid=" + sceneId + "].");
}
}
@@ -232,7 +233,7 @@ public class SceneDirector extends BasicDirector
// complain if we didn't find a scene
if (_model == null) {
Log.warning("Aiya! Unable to load scene [sid=" + _sceneId + ", plid=" + placeId + "].");
log.warning("Aiya! Unable to load scene [sid=" + _sceneId + ", plid=" + placeId + "].");
return;
}
@@ -243,7 +244,7 @@ public class SceneDirector extends BasicDirector
// from interface SceneService.SceneMoveListener
public void moveSucceededWithUpdates (int placeId, PlaceConfig config, SceneUpdate[] updates)
{
Log.info("Got updates [placeId=" + placeId + ", config=" + config +
log.info("Got updates [placeId=" + placeId + ", config=" + config +
", updates=" + StringUtil.toString(updates) + "].");
// apply the updates to our cached scene
@@ -253,7 +254,7 @@ public class SceneDirector extends BasicDirector
try {
updates[ii].validate(model);
} catch (IllegalStateException ise) {
Log.warning("Scene update failed validation [model=" + model +
log.warning("Scene update failed validation [model=" + model +
", update=" + updates[ii] + ", error=" + ise.getMessage() + "].");
failure = true;
break;
@@ -262,9 +263,8 @@ public class SceneDirector extends BasicDirector
try {
updates[ii].apply(model);
} catch (Exception e) {
Log.warning("Failure applying scene update [model=" + model +
", update=" + updates[ii] + "].");
Log.logStackTrace(e);
log.warning("Failure applying scene update [model=" + model +
", update=" + updates[ii] + "].", e);
failure = true;
break;
}
@@ -275,9 +275,8 @@ public class SceneDirector extends BasicDirector
try {
_screp.deleteSceneModel(_pendingSceneId);
} catch (IOException ioe) {
Log.warning("Failure removing booched scene model " +
"[sceneId=" + _pendingSceneId + "].");
Log.logStackTrace(ioe);
log.warning("Failure removing booched scene model " +
"[sceneId=" + _pendingSceneId + "].", ioe);
}
// act as if the scene move failed; we'll be in a funny state because the server thinks
@@ -296,7 +295,7 @@ public class SceneDirector extends BasicDirector
// from interface SceneService.SceneMoveListener
public void moveSucceededWithScene (int placeId, PlaceConfig config, SceneModel model)
{
Log.info("Got updated scene model [placeId=" + placeId + ", config=" + config +
log.info("Got updated scene model [placeId=" + placeId + ", config=" + config +
", scene=" + model.sceneId + "/" + model.name + "/" + model.version + "].");
// update the model in the repository
@@ -358,7 +357,7 @@ public class SceneDirector extends BasicDirector
public void setMoveHandler (MoveHandler handler)
{
if (_moveHandler != null) {
Log.warning("Requested to set move handler, but we've already got one. The " +
log.warning("Requested to set move handler, but we've already got one. The " +
"conflicting entities will likely need to perform more sophisticated " +
"coordination to deal with failures. [old=" + _moveHandler +
", new=" + handler + "].");
@@ -375,12 +374,12 @@ public class SceneDirector extends BasicDirector
// just finish up what we're doing and assume that the repeated move request was the
// spurious one as it would be in the case of lag causing rapid-fire repeat requests
if (movePending()) {
Log.info("Dropping forced move because we have a move pending " +
log.info("Dropping forced move because we have a move pending " +
"[pendId=" + _pendingSceneId + ", reqId=" + sceneId + "].");
return;
}
Log.info("Moving at request of server [sceneId=" + sceneId + "].");
log.info("Moving at request of server [sceneId=" + sceneId + "].");
// clear out our old scene and place data
didLeaveScene();
// move to the new scene
@@ -424,7 +423,7 @@ public class SceneDirector extends BasicDirector
}
// issue a moveTo request
Log.info("Issuing moveTo(" + _pendingSceneId + ", " + sceneVers + ").");
log.info("Issuing moveTo(" + _pendingSceneId + ", " + sceneVers + ").");
_sservice.moveTo(_ctx.getClient(), _pendingSceneId, sceneVers, this);
}
@@ -463,7 +462,7 @@ public class SceneDirector extends BasicDirector
} catch (IOException ioe) {
// complain first, then return null
Log.warning("Error loading scene [scid=" + sceneId + ", error=" + ioe + "].");
log.warning("Error loading scene [scid=" + sceneId + ", error=" + ioe + "].");
}
}
@@ -479,9 +478,8 @@ public class SceneDirector extends BasicDirector
try {
_screp.storeSceneModel(model);
} catch (IOException ioe) {
Log.warning("Failed to update repository with updated scene [sceneId=" + model.sceneId +
", nvers=" + model.version + "].");
Log.logStackTrace(ioe);
log.warning("Failed to update repository with updated scene [sceneId=" + model.sceneId +
", nvers=" + model.version + "].", ioe);
}
}
@@ -23,7 +23,7 @@ package com.threerings.whirled.data;
import com.threerings.crowd.data.PlaceConfig;
import com.threerings.whirled.Log;
import static com.threerings.whirled.Log.log;
/**
* An implementation of the {@link Scene} interface.
@@ -99,9 +99,8 @@ public class SceneImpl implements Scene
update.validate(_model);
update.apply(_model);
} catch (Exception e) {
Log.warning("Error applying update [scene=" + this +
", update=" + update + "].");
Log.logStackTrace(e);
log.warning("Error applying update [scene=" + this +
", update=" + update + "].", e);
}
}
@@ -30,7 +30,7 @@ import com.threerings.io.ObjectOutputStream;
import com.threerings.io.Streamable;
import com.threerings.util.ActionScript;
import com.threerings.whirled.Log;
import static com.threerings.whirled.Log.log;
/**
* Used to encapsulate updates to scenes in such a manner that updates can be stored persistently
@@ -109,7 +109,7 @@ public class SceneUpdate
// sanity check for the amazing two billion updates
if (model.version == _targetVersion) {
Log.warning("Egads! This scene has been updated two billion times [model=" + model +
log.warning("Egads! This scene has been updated two billion times [model=" + model +
", update=" + this + "].");
}
}
@@ -30,7 +30,7 @@ import com.threerings.crowd.data.BodyObject;
import com.threerings.whirled.client.SceneService;
import com.threerings.whirled.data.SceneCodes;
import com.threerings.whirled.Log;
import static com.threerings.whirled.Log.log;
/**
* Handles the basics of moving a client into a new scene, which may involve resolution. Takes care
@@ -52,7 +52,7 @@ public abstract class AbstractSceneMoveHandler
// make sure our caller is still around; under heavy load, clients might end their session
// while the scene is resolving
if (!_body.isActive()) {
Log.info("Abandoning scene move, client gone [who=" + _body.who() +
log.info("Abandoning scene move, client gone [who=" + _body.who() +
", dest=" + scmgr.where() + "].");
InvocationMarshaller.setNoResponse(_listener);
return;
@@ -65,7 +65,7 @@ public abstract class AbstractSceneMoveHandler
_listener.requestFailed(sfe.getMessage());
} catch (RuntimeException re) {
Log.logStackTrace(re);
log.warning(re);
_listener.requestFailed(SceneCodes.INTERNAL_ERROR);
}
}
@@ -73,7 +73,7 @@ public abstract class AbstractSceneMoveHandler
// from interface SceneRegistry.ResolutionListener
public void sceneFailedToResolve (int sceneId, Exception reason)
{
Log.warning("Unable to resolve scene [sceneid=" + sceneId + ", reason=" + reason + "].");
log.warning("Unable to resolve scene [sceneid=" + sceneId + ", reason=" + reason + "].");
_listener.requestFailed(SceneCodes.NO_SUCH_PLACE);
}
@@ -28,7 +28,6 @@ import com.threerings.crowd.data.Place;
import com.threerings.crowd.server.CrowdServer;
import com.threerings.crowd.server.PlaceManager;
import com.threerings.whirled.Log;
import com.threerings.whirled.data.Scene;
import com.threerings.whirled.data.SceneCodes;
import com.threerings.whirled.data.ScenePlace;
@@ -36,6 +35,8 @@ import com.threerings.whirled.data.SceneUpdate;
import com.threerings.whirled.server.WhirledServer;
import com.threerings.whirled.util.UpdateList;
import static com.threerings.whirled.Log.log;
/**
* The scene manager extends the place manager and takes care of basic scene services. Presently
* that is little more than registering the scene manager with the scene registry so that the
@@ -87,7 +88,7 @@ public class SceneManager extends PlaceManager
// make sure the list and our version of the scene are in accordance
if (!_updates.validate(scene.getVersion())) {
Log.warning("Provided with invalid updates; flushing [where=" + where() +
log.warning("Provided with invalid updates; flushing [where=" + where() +
", sceneId=" + scene.getId() + ", version=" + scene.getVersion() + "].");
// clear out the update list as it will not allow us to bring clients up to date with
// our current scene version; instead they'll have to download the whole thing
@@ -37,7 +37,6 @@ import com.threerings.crowd.server.CrowdServer;
import com.threerings.crowd.server.PlaceManager;
import com.threerings.crowd.server.PlaceRegistry;
import com.threerings.whirled.Log;
import com.threerings.whirled.client.SceneService;
import com.threerings.whirled.data.Scene;
import com.threerings.whirled.data.SceneCodes;
@@ -48,6 +47,8 @@ import com.threerings.whirled.util.NoSuchSceneException;
import com.threerings.whirled.util.SceneFactory;
import com.threerings.whirled.util.UpdateList;
import static com.threerings.whirled.Log.log;
/**
* The scene registry is responsible for the management of all scenes. It handles interaction with
* the scene repository and ensures that scenes are loaded into memory when needed and flushed from
@@ -269,8 +270,7 @@ public class SceneRegistry
{
// if this is not simply a missing scene, log a warning
if (!(cause instanceof NoSuchSceneException)) {
Log.info("Failed to resolve scene [sceneId=" + sceneId + ", cause=" + cause + "].");
Log.logStackTrace(cause);
log.info("Failed to resolve scene [sceneId=" + sceneId + "].", cause);
}
// alas things didn't work out, notify our penders
@@ -280,8 +280,7 @@ public class SceneRegistry
try {
rl.sceneFailedToResolve(sceneId, cause);
} catch (Exception e) {
Log.warning("Resolution listener choked.");
Log.logStackTrace(e);
log.warning("Resolution listener choked.", e);
}
}
}
@@ -297,9 +296,7 @@ public class SceneRegistry
int sceneId = scmgr.getScene().getId();
_scenemgrs.put(sceneId, scmgr);
if (Log.debug()) {
Log.debug("Registering scene manager [scid=" + sceneId + ", scmgr=" + scmgr + "].");
}
log.debug("Registering scene manager", "scid", sceneId, "scmgr", scmgr);
// now notify any penders
ArrayList<ResolutionListener> penders = _penders.remove(sceneId);
@@ -308,8 +305,7 @@ public class SceneRegistry
try {
rl.sceneWasResolved(scmgr);
} catch (Exception e) {
Log.warning("Resolution listener choked.");
Log.logStackTrace(e);
log.warning("Resolution listener choked.", e);
}
}
}
@@ -321,13 +317,11 @@ public class SceneRegistry
protected void unmapSceneManager (SceneManager scmgr)
{
if (_scenemgrs.remove(scmgr.getScene().getId()) == null) {
Log.warning("Requested to unmap unmapped scene manager [scmgr=" + scmgr + "].");
log.warning("Requested to unmap unmapped scene manager [scmgr=" + scmgr + "].");
return;
}
if (Log.debug()) {
Log.debug("Unmapped scene manager " + scmgr + ".");
}
log.debug("Unmapped scene manager", "scmgr", scmgr);
}
/** The entity from which we load scene models. */
@@ -30,10 +30,11 @@ import com.threerings.presents.server.PresentsClient;
import com.threerings.crowd.server.CrowdServer;
import com.threerings.whirled.Log;
import com.threerings.whirled.server.persist.SceneRepository;
import com.threerings.whirled.util.SceneFactory;
import static com.threerings.whirled.Log.log;
/**
* The Whirled server extends the {@link CrowdServer} and provides access to managers and the like
* that are needed by the Whirled serviecs.
@@ -23,12 +23,13 @@ package com.threerings.whirled.server.persist;
import com.samskivert.io.PersistenceException;
import com.threerings.whirled.Log;
import com.threerings.whirled.data.SceneModel;
import com.threerings.whirled.data.SceneUpdate;
import com.threerings.whirled.util.NoSuchSceneException;
import com.threerings.whirled.util.UpdateList;
import static com.threerings.whirled.Log.log;
/**
* The dummy scene repository just pretends to load and store scenes, but
* in fact it just creates new blank scenes when requested to load a scene
@@ -40,7 +41,7 @@ public class DummySceneRepository implements SceneRepository
public SceneModel loadSceneModel (int sceneId)
throws PersistenceException, NoSuchSceneException
{
Log.info("Creating dummy scene [id=" + sceneId + "].");
log.info("Creating dummy scene [id=" + sceneId + "].");
return SceneModel.blankSceneModel();
}
+4 -28
View File
@@ -21,36 +21,12 @@
package com.threerings.whirled.spot;
import com.samskivert.util.Logger;
/**
* A placeholder class that contains a reference to the log object used by
* the Whirled Spot services.
* Contains a reference to the log object used by the Whirled Spot services.
*/
public class Log
{
public static com.samskivert.util.Log log =
new com.samskivert.util.Log("whirled.spot");
/** Convenience function. */
public static void debug (String message)
{
log.debug(message);
}
/** Convenience function. */
public static void info (String message)
{
log.info(message);
}
/** Convenience function. */
public static void warning (String message)
{
log.warning(message);
}
/** Convenience function. */
public static void logStackTrace (Throwable t)
{
log.logStackTrace(com.samskivert.util.Log.WARNING, t);
}
public static Logger log = Logger.getLogger("com.threerings.whirled.spot");
}
@@ -46,13 +46,14 @@ import com.threerings.whirled.data.SceneModel;
import com.threerings.whirled.data.ScenePlace;
import com.threerings.whirled.util.WhirledContext;
import com.threerings.whirled.spot.Log;
import com.threerings.whirled.spot.data.ClusteredBodyObject;
import com.threerings.whirled.spot.data.Location;
import com.threerings.whirled.spot.data.Portal;
import com.threerings.whirled.spot.data.SpotCodes;
import com.threerings.whirled.spot.data.SpotScene;
import static com.threerings.whirled.spot.Log.log;
/**
* Extends the standard scene director with facilities to move between locations within a scene.
*/
@@ -124,7 +125,7 @@ public class SpotSceneDirector extends BasicDirector
// look up the destination scene and location
SpotScene scene = (SpotScene)_scdir.getScene();
if (scene == null) {
Log.warning("Requested to traverse portal when we have no scene " +
log.warning("Requested to traverse portal when we have no scene " +
"[portalId=" + portalId + "].");
return false;
}
@@ -133,7 +134,7 @@ public class SpotSceneDirector extends BasicDirector
int sceneId = _scdir.getScene().getId();
int clSceneId = ScenePlace.getSceneId((BodyObject)_ctx.getClient().getClientObject());
if (sceneId != clSceneId) {
Log.warning("Client and server differ in opinion of what scene we're in " +
log.warning("Client and server differ in opinion of what scene we're in " +
"[sSceneId=" + clSceneId + ", cSceneId=" + sceneId + "].");
return false;
}
@@ -141,14 +142,14 @@ public class SpotSceneDirector extends BasicDirector
// find the portal they're talking about
Portal dest = scene.getPortal(portalId);
if (dest == null) {
Log.warning("Requested to traverse non-existent portal [portalId=" + portalId +
log.warning("Requested to traverse non-existent portal [portalId=" + portalId +
", portals=" + StringUtil.toString(scene.getPortals()) + "].");
return false;
}
// prepare to move to this scene (sets up pending data)
if (!_scdir.prepareMoveTo(dest.targetSceneId, rl)) {
Log.info("Portal traversal vetoed by scene director [portalId=" + portalId + "].");
log.info("Portal traversal vetoed by scene director [portalId=" + portalId + "].");
return false;
}
@@ -161,7 +162,7 @@ public class SpotSceneDirector extends BasicDirector
}
// issue a traversePortal request
Log.info("Issuing traversePortal(" + sceneId + ", " + dest + ", " + sceneVer + ").");
log.info("Issuing traversePortal(" + sceneId + ", " + dest + ", " + sceneVer + ").");
_sservice.traversePortal(_ctx.getClient(), sceneId, portalId, sceneVer, _scdir);
return true;
}
@@ -181,7 +182,7 @@ public class SpotSceneDirector extends BasicDirector
// refuse if there's a pending location change or if we're already at the specified
// location
if (loc.equivalent(_location)) {
Log.info("Not going to " + loc + "; we're at " + _location + " and we're headed to " +
log.info("Not going to " + loc + "; we're at " + _location + " and we're headed to " +
_pendingLoc + ".");
if (listener != null) {
// This isn't really a failure, it's just a no-op.
@@ -191,7 +192,7 @@ public class SpotSceneDirector extends BasicDirector
}
if (_pendingLoc != null) {
Log.info("Not going to " + loc + "; we're at " + _location + " and we're headed to " +
log.info("Not going to " + loc + "; we're at " + _location + " and we're headed to " +
_pendingLoc + ".");
if (listener != null) {
// Already moving, best thing to do is ignore it.
@@ -202,7 +203,7 @@ public class SpotSceneDirector extends BasicDirector
SpotScene scene = (SpotScene)_scdir.getScene();
if (scene == null) {
Log.warning("Requested to change locations, but we're not currently in any scene " +
log.warning("Requested to change locations, but we're not currently in any scene " +
"[loc=" + loc + "].");
if (listener != null) {
listener.requestFailed(new Exception("m.cant_get_there"));
@@ -211,7 +212,7 @@ public class SpotSceneDirector extends BasicDirector
}
int sceneId = _scdir.getScene().getId();
Log.info("Sending changeLocation request [scid=" + sceneId + ", loc=" + loc + "].");
log.info("Sending changeLocation request [scid=" + sceneId + ", loc=" + loc + "].");
_pendingLoc = (Location)loc.clone();
ConfirmListener clist = new ConfirmListener() {
@@ -245,7 +246,7 @@ public class SpotSceneDirector extends BasicDirector
{
SpotScene scene = (SpotScene)_scdir.getScene();
if (scene == null) {
Log.warning("Requested to join cluster, but we're not currently in any scene " +
log.warning("Requested to join cluster, but we're not currently in any scene " +
"[froid=" + froid + "].");
if (listener != null) {
listener.requestFailed(new Exception("m.cant_get_there"));
@@ -253,7 +254,7 @@ public class SpotSceneDirector extends BasicDirector
return;
}
Log.info("Joining cluster [friend=" + froid + "].");
log.info("Joining cluster [friend=" + froid + "].");
_sservice.joinCluster(_ctx.getClient(), froid, new ConfirmListener() {
public void requestProcessed () {
@@ -293,14 +294,14 @@ public class SpotSceneDirector extends BasicDirector
// make sure we're currently in a scene
SpotScene scene = (SpotScene)_scdir.getScene();
if (scene == null) {
Log.warning("Requested to speak to cluster, but we're not currently in any scene " +
log.warning("Requested to speak to cluster, but we're not currently in any scene " +
"[message=" + message + "].");
return false;
}
// make sure we're part of a cluster
if (_self.getClusterOid() <= 0) {
Log.info("Ignoring cluster speak as we're not in a cluster " +
log.info("Ignoring cluster speak as we're not in a cluster " +
"[cloid=" + _self.getClusterOid() + "].");
return false;
}
@@ -333,7 +334,7 @@ public class SpotSceneDirector extends BasicDirector
// documentation inherited from interface
public void requestFailed (int oid, ObjectAccessException cause)
{
Log.warning("Unable to subscribe to cluster chat object [oid=" + oid +
log.warning("Unable to subscribe to cluster chat object [oid=" + oid +
", cause=" + cause + "].");
}
@@ -25,7 +25,7 @@ import java.util.Iterator;
import com.samskivert.util.HashIntMap;
import com.threerings.whirled.spot.Log;
import static com.threerings.whirled.spot.Log.log;
/**
* An implementation of the {@link SpotScene} interface.
@@ -103,7 +103,7 @@ public class SpotSceneImpl
public void addPortal (Portal portal)
{
if (portal.portalId <= 0) {
Log.warning("Refusing to add zero-id portal " +
log.warning("Refusing to add zero-id portal " +
"[scene=" + this + ", portal=" + portal + "].");
return;
}
@@ -37,13 +37,14 @@ import com.threerings.util.Name;
import com.threerings.whirled.client.SceneService.SceneMoveListener;
import com.threerings.whirled.data.ScenePlace;
import com.threerings.whirled.server.SceneRegistry;
import com.threerings.whirled.spot.Log;
import com.threerings.whirled.spot.client.SpotService;
import com.threerings.whirled.spot.data.Location;
import com.threerings.whirled.spot.data.Portal;
import com.threerings.whirled.spot.data.SpotCodes;
import com.threerings.whirled.spot.data.SpotScene;
import static com.threerings.whirled.spot.Log.log;
/**
* Provides the server-side implementation of the spot services.
*/
@@ -73,7 +74,7 @@ public class SpotProvider
BodyObject body = (BodyObject)caller;
int cSceneId = ScenePlace.getSceneId(body);
if (cSceneId != sceneId) {
Log.info("Ignoring stale traverse portal request [caller=" + caller.who() +
log.info("Ignoring stale traverse portal request [caller=" + caller.who() +
", oSceneId=" + sceneId + ", portalId=" + portalId +
", cSceneId=" + cSceneId + "].");
InvocationMarshaller.setNoResponse(listener);
@@ -83,7 +84,7 @@ public class SpotProvider
// obtain the source scene
SpotSceneManager srcmgr = (SpotSceneManager)_screg.getSceneManager(sceneId);
if (srcmgr == null) {
Log.warning("Traverse portal missing source scene " +
log.warning("Traverse portal missing source scene " +
"[user=" + body.who() + ", sceneId=" + sceneId +
", portalId=" + portalId + "].");
throw new InvocationException(INTERNAL_ERROR);
@@ -101,7 +102,7 @@ public class SpotProvider
// make sure this portal has valid info
if (dest == null || !dest.isValid()) {
Log.warning("Traverse portal with invalid portal [user=" + body.who() +
log.warning("Traverse portal with invalid portal [user=" + body.who() +
", scene=" + srcmgr.where() + ", pid=" + portalId + ", portal=" + dest +
", portals=" + StringUtil.toString(rss.getPortals()) + "].");
throw new InvocationException(NO_SUCH_PORTAL);
@@ -122,7 +123,7 @@ public class SpotProvider
BodyObject source = (BodyObject)caller;
int cSceneId = ScenePlace.getSceneId(source);
if (cSceneId != sceneId) {
Log.info("Rejecting changeLocation for invalid scene [user=" + source.who() +
log.info("Rejecting changeLocation for invalid scene [user=" + source.who() +
", insid=" + cSceneId + ", wantsid=" + sceneId + ", loc=" + loc + "].");
throw new InvocationException(INVALID_LOCATION);
}
@@ -130,7 +131,7 @@ public class SpotProvider
// look up the scene manager for the specified scene
SpotSceneManager smgr = (SpotSceneManager)_screg.getSceneManager(sceneId);
if (smgr == null) {
Log.warning("User requested to change location from non-existent scene " +
log.warning("User requested to change location from non-existent scene " +
"[user=" + source.who() + ", sceneId=" + sceneId + ", loc=" + loc +"].");
throw new InvocationException(INTERNAL_ERROR);
}
@@ -155,7 +156,7 @@ public class SpotProvider
// look up the scene manager for the specified scene
SpotSceneManager smgr = (SpotSceneManager)_screg.getSceneManager(sceneId);
if (smgr == null) {
Log.warning("User requested to join cluster from non-existent scene " +
log.warning("User requested to join cluster from non-existent scene " +
"[user=" + source.who() + ", sceneId=" + sceneId +
", foid=" + friendOid +"].");
throw new InvocationException(INTERNAL_ERROR);
@@ -223,7 +224,7 @@ public class SpotProvider
// look up the scene manager for the specified scene
SpotSceneManager smgr = (SpotSceneManager)_screg.getSceneManager(sceneId);
if (smgr == null) {
Log.warning("User requested cluster chat in non-existent scene " +
log.warning("User requested cluster chat in non-existent scene " +
"[user=" + message.speaker + ", sceneId=" + sceneId +
", message=" + message + "].");
return;
@@ -25,16 +25,19 @@ import java.util.HashMap;
import java.util.Iterator;
import com.samskivert.util.HashIntMap;
import com.threerings.util.Name;
import com.threerings.presents.dobj.DObject;
import com.threerings.presents.server.InvocationException;
import com.threerings.crowd.chat.data.UserMessage;
import com.threerings.crowd.chat.server.SpeakUtil;
import com.threerings.crowd.data.BodyObject;
import com.threerings.crowd.data.OccupantInfo;
import com.threerings.crowd.server.CrowdServer;
import com.threerings.presents.dobj.DObject;
import com.threerings.presents.server.InvocationException;
import com.threerings.util.Name;
import com.threerings.whirled.server.SceneManager;
import com.threerings.whirled.spot.Log;
import com.threerings.whirled.spot.data.Cluster;
import com.threerings.whirled.spot.data.ClusterObject;
import com.threerings.whirled.spot.data.ClusteredBodyObject;
@@ -45,6 +48,8 @@ import com.threerings.whirled.spot.data.SpotCodes;
import com.threerings.whirled.spot.data.SpotScene;
import com.threerings.whirled.spot.data.SpotSceneObject;
import static com.threerings.whirled.spot.Log.log;
/**
* Handles the movement of bodies between locations in the scene and creates the necessary
* distributed objects to allow bodies in clusters to chat with one another.
@@ -143,7 +148,7 @@ public class SpotSceneManager extends SceneManager
while (cliter.hasNext()) {
ClusterRecord clrec = cliter.next();
if (clrec.containsKey(bodyOid)) {
Log.info("Pruning departed body from cluster [boid=" + bodyOid +
log.info("Pruning departed body from cluster [boid=" + bodyOid +
", cluster=" + clrec + "].");
clrec.removeBody(bodyOid);
if (clrec.size() == 0) {
@@ -176,7 +181,7 @@ public class SpotSceneManager extends SceneManager
if (from != null && from.targetPortalId != -1) {
entry = _sscene.getPortal(from.targetPortalId);
if (entry == null) {
Log.warning("Body mapped at invalid portal [where=" + where() +
log.warning("Body mapped at invalid portal [where=" + where() +
", who=" + body.who() + ", from=" + from + "].");
entry = _sscene.getDefaultEntrance();
}
@@ -212,7 +217,7 @@ public class SpotSceneManager extends SceneManager
{
SpotScene scene = (SpotScene)getScene();
if (scene == null) {
Log.warning("No scene in moveBodyToDefaultPortal()? [who=" + body.who() +
log.warning("No scene in moveBodyToDefaultPortal()? [who=" + body.who() +
", where=" + where() + "].");
return;
}
@@ -221,7 +226,7 @@ public class SpotSceneManager extends SceneManager
Location eloc = scene.getDefaultEntrance().getLocation();
handleChangeLoc(body, eloc);
} catch (InvocationException ie) {
Log.warning("Could not move user to default portal [where=" + where() +
log.warning("Could not move user to default portal [where=" + where() +
", who=" + body.who() + ", error=" + ie + "].");
}
}
@@ -241,7 +246,7 @@ public class SpotSceneManager extends SceneManager
{
// make sure they are in our scene
if (!_ssobj.occupants.contains(source.getOid())) {
Log.warning("Refusing change loc from non-scene occupant [where=" + where() +
log.warning("Refusing change loc from non-scene occupant [where=" + where() +
", who=" + source.who() + ", loc=" + loc + "].");
throw new InvocationException(INTERNAL_ERROR);
}
@@ -277,7 +282,7 @@ public class SpotSceneManager extends SceneManager
SceneLocation sloc = new SceneLocation(loc, source.getOid());
if (!_ssobj.occupantLocs.contains(sloc)) {
// complain if they don't already have a location configured
Log.warning("Changing loc for occupant without previous loc [where=" + where() +
log.warning("Changing loc for occupant without previous loc [where=" + where() +
", who=" + source.who() + ", nloc=" + loc + "].");
Thread.dumpStack();
_ssobj.addToOccupantLocs(sloc);
@@ -310,7 +315,7 @@ public class SpotSceneManager extends SceneManager
// otherwise see if they sent us the user's oid
DObject tobj = CrowdServer.omgr.getObject(targetOid);
if (!(tobj instanceof BodyObject)) {
Log.info("Can't join cluster, missing target [creator=" + joiner.who() +
log.info("Can't join cluster, missing target [creator=" + joiner.who() +
", targetOid=" + targetOid + "].");
throw new InvocationException(NO_SUCH_CLUSTER);
}
@@ -318,7 +323,7 @@ public class SpotSceneManager extends SceneManager
// make sure we're in the same scene as said user
BodyObject friend = (BodyObject)tobj;
if (friend.getPlaceOid() != joiner.getPlaceOid()) {
Log.info("Refusing cluster join from non-proximate user [joiner=" + joiner.who() +
log.info("Refusing cluster join from non-proximate user [joiner=" + joiner.who() +
", jloc=" + joiner.location + ", target=" + friend.who() +
", tloc=" + friend.location + "].");
throw new InvocationException(NO_SUCH_CLUSTER);
@@ -405,7 +410,7 @@ public class SpotSceneManager extends SceneManager
{
ClusterRecord clrec = getCluster(sourceOid);
if (clrec == null) {
Log.warning("Non-clustered user requested cluster speak [where=" + where() +
log.warning("Non-clustered user requested cluster speak [where=" + where() +
", chatter=" + message.speaker + " (" + sourceOid + "), " +
"msg=" + message + "].");
} else {
@@ -472,7 +477,7 @@ public class SpotSceneManager extends SceneManager
throws InvocationException
{
if (!(body instanceof ClusteredBodyObject)) {
Log.warning("Refusing to add non-clustered body to cluster [cloid=" +
log.warning("Refusing to add non-clustered body to cluster [cloid=" +
_clobj.getOid() + ", size=" + size() + ", who=" + body.who() + "].");
throw new InvocationException(INTERNAL_ERROR);
}
@@ -518,7 +523,7 @@ public class SpotSceneManager extends SceneManager
{
BodyObject body = (BodyObject)remove(bodyOid);
if (body == null) {
Log.warning("Requested to remove unknown body from cluster [cloid=" +
log.warning("Requested to remove unknown body from cluster [cloid=" +
_clobj.getOid() + ", size=" + size() + ", who=" + bodyOid + "].");
return;
}
@@ -29,11 +29,12 @@ import org.xml.sax.helpers.AttributesImpl;
import com.megginson.sax.DataWriter;
import com.threerings.tools.xml.NestableWriter;
import com.threerings.whirled.spot.Log;
import com.threerings.whirled.spot.data.Location;
import com.threerings.whirled.spot.data.SpotSceneModel;
import com.threerings.whirled.spot.tools.EditablePortal;
import static com.threerings.whirled.spot.Log.log;
/**
* Generates an XML representation of a {@link SpotSceneModel}.
*/
@@ -93,7 +94,7 @@ public class SpotSceneWriter
attrs.addAttribute("", fields[ii].getName(), "", "",
String.valueOf(fields[ii].get(portalLoc)));
} catch (IllegalAccessException iae) {
Log.warning("Unable to write portal field, skipping " +
log.warning("Unable to write portal field, skipping " +
"[field=" + fields[ii].getName() + ", e=" + iae + "].");
}
}
@@ -32,10 +32,11 @@ import org.xml.sax.helpers.AttributesImpl;
import com.megginson.sax.DataWriter;
import com.threerings.tools.xml.NestableWriter;
import com.threerings.whirled.Log;
import com.threerings.whirled.data.AuxModel;
import com.threerings.whirled.data.SceneModel;
import static com.threerings.whirled.Log.log;
/**
* Generates an XML representation of an {@link SceneModel}.
*/
@@ -111,7 +112,7 @@ public class SceneWriter
if (awriter != null) {
awriter.write(amodel, writer);
} else {
Log.warning("No writer registered for auxiliary scene model " +
log.warning("No writer registered for auxiliary scene model " +
"[mclass=" + amodel.getClass() + "].");
}
}
@@ -25,9 +25,10 @@ import java.util.List;
import com.google.common.collect.Lists;
import com.threerings.whirled.Log;
import com.threerings.whirled.data.SceneUpdate;
import static com.threerings.whirled.Log.log;
/**
* A list specialized for storing {@link SceneUpdate} objects.
*/
@@ -51,7 +52,7 @@ public class UpdateList
int expVersion = last.getSceneVersion() + last.getVersionIncrement();
int gotVersion = update.getSceneVersion();
if (gotVersion > expVersion) {
Log.warning("Update continuity broken, flushing list [got=" + update +
log.warning("Update continuity broken, flushing list [got=" + update +
", expect=" + expVersion + ", ucount=" + _updates.size() + "].");
_updates.clear(); // flush out our old updates, fall through and add this one
+4 -28
View File
@@ -21,36 +21,12 @@
package com.threerings.whirled.zone;
import com.samskivert.util.Logger;
/**
* A placeholder class that contains a reference to the log object used by
* the Whirled Zone services.
* Contains a reference to the log object used by the Whirled Zone services.
*/
public class Log
{
public static com.samskivert.util.Log log =
new com.samskivert.util.Log("whirled.zone");
/** Convenience function. */
public static void debug (String message)
{
log.debug(message);
}
/** Convenience function. */
public static void info (String message)
{
log.info(message);
}
/** Convenience function. */
public static void warning (String message)
{
log.warning(message);
}
/** Convenience function. */
public static void logStackTrace (Throwable t)
{
log.logStackTrace(com.samskivert.util.Log.WARNING, t);
}
public static Logger log = Logger.getLogger("com.threerings.whirled.zone");
}
@@ -35,10 +35,11 @@ import com.threerings.whirled.data.SceneModel;
import com.threerings.whirled.data.SceneUpdate;
import com.threerings.whirled.util.WhirledContext;
import com.threerings.whirled.zone.Log;
import com.threerings.whirled.zone.data.ZoneSummary;
import com.threerings.whirled.zone.util.ZoneUtil;
import static com.threerings.whirled.zone.Log.log;
/**
* The zone director augments the scene services with the notion of zones. Zones are
* self-contained, connected groups of scenes. The normal scene director services can be used to
@@ -112,7 +113,7 @@ public class ZoneDirector extends BasicDirector
{
// make sure the zoneId and sceneId are valid
if (zoneId < 0 || sceneId < 0) {
Log.warning("Refusing moveTo(): invalid sceneId or zoneId " +
log.warning("Refusing moveTo(): invalid sceneId or zoneId " +
"[zoneId=" + zoneId + ", sceneId=" + sceneId + "].");
return false;
}
@@ -141,7 +142,7 @@ public class ZoneDirector extends BasicDirector
}
// issue a moveTo request
Log.info("Issuing zoned moveTo(" + ZoneUtil.toString(zoneId) +
log.info("Issuing zoned moveTo(" + ZoneUtil.toString(zoneId) +
", " + sceneId + ", " + sceneVers + ").");
_zservice.moveTo(_ctx.getClient(), zoneId, sceneId, sceneVers, this);
return true;
@@ -227,13 +228,13 @@ public class ZoneDirector extends BasicDirector
// just finish up what we're doing and assume that the repeated move request was the
// spurious one as it would be in the case of lag causing rapid-fire repeat requests
if (_scdir.movePending()) {
Log.info("Dropping forced move because we have a move pending " +
log.info("Dropping forced move because we have a move pending " +
"[pend=" + _scdir.getPendingModel() + ", rzId=" + zoneId +
", rsId=" + sceneId + "].");
return;
}
Log.info("Moving at request of server [zoneId=" + zoneId + ", sceneId=" + sceneId + "].");
log.info("Moving at request of server [zoneId=" + zoneId + ", sceneId=" + sceneId + "].");
// clear out our old scene and place data
_scdir.didLeaveScene();
// move to the new zone and scene
@@ -272,9 +273,8 @@ public class ZoneDirector extends BasicDirector
}
} catch (Throwable t) {
Log.warning("Zone observer choked during notification [data=" + data +
", obs=" + obs + "].");
Log.logStackTrace(t);
log.warning("Zone observer choked during notification [data=" + data +
", obs=" + obs + "].", t);
}
}
}
@@ -35,12 +35,13 @@ import com.threerings.whirled.server.SceneMoveHandler;
import com.threerings.whirled.server.SceneRegistry;
import com.threerings.whirled.server.WhirledServer;
import com.threerings.whirled.zone.Log;
import com.threerings.whirled.zone.client.ZoneService;
import com.threerings.whirled.zone.data.ZoneCodes;
import com.threerings.whirled.zone.data.ZoneSummary;
import com.threerings.whirled.zone.data.ZonedBodyObject;
import static com.threerings.whirled.zone.Log.log;
/**
* Handles transitioning between zones.
*/
@@ -74,7 +75,7 @@ public class ZoneMoveHandler extends AbstractSceneMoveHandler
// from interface ZoneManager.ResolutionListener
public void zoneFailedToResolve (int zoneId, Exception reason)
{
Log.warning("Unable to resolve zone [zoneId=" + zoneId + ", reason=" + reason + "].");
log.warning("Unable to resolve zone [zoneId=" + zoneId + ", reason=" + reason + "].");
_listener.requestFailed(ZoneCodes.NO_SUCH_ZONE);
}
@@ -36,12 +36,13 @@ import com.threerings.whirled.data.SceneUpdate;
import com.threerings.whirled.server.SceneManager;
import com.threerings.whirled.server.SceneRegistry;
import com.threerings.whirled.zone.Log;
import com.threerings.whirled.zone.client.ZoneService.ZoneMoveListener;
import com.threerings.whirled.zone.data.ZoneCodes;
import com.threerings.whirled.zone.data.ZoneSummary;
import com.threerings.whirled.zone.data.ZonedBodyObject;
import static com.threerings.whirled.zone.Log.log;
/**
* Provides zone related services which are presently the ability to move from zone to zone.
*/
@@ -74,7 +75,7 @@ public class ZoneProvider
throws InvocationException
{
if (!(caller instanceof ZonedBodyObject)) {
Log.warning("Request to switch zones by non-ZonedBodyObject " +
log.warning("Request to switch zones by non-ZonedBodyObject " +
"[clobj=" + caller.getClass() + "].");
throw new InvocationException(INTERNAL_ERROR);
}
@@ -93,7 +94,7 @@ public class ZoneProvider
// look up the zone manager for the zone
ZoneManager zmgr = _zonereg.getZoneManager(zoneId);
if (zmgr == null) {
Log.warning("Requested to enter a zone for which we have no manager " +
log.warning("Requested to enter a zone for which we have no manager " +
"[user=" + body.who() + ", zoneId=" + zoneId + "].");
throw new InvocationException(NO_SUCH_ZONE);
}
@@ -28,10 +28,11 @@ import com.threerings.presents.server.InvocationManager;
import com.threerings.crowd.server.PlaceRegistry;
import com.threerings.whirled.server.SceneRegistry;
import com.threerings.whirled.zone.Log;
import com.threerings.whirled.zone.data.ZoneCodes;
import com.threerings.whirled.zone.util.ZoneUtil;
import static com.threerings.whirled.zone.Log.log;
/**
* The zone registry takes care of mapping zone requests to the appropriate registered zone
* manager.
@@ -61,7 +62,7 @@ public class ZoneRegistry
{
ZoneManager old = (ZoneManager)_managers.get(zoneType);
if (old != null) {
Log.warning("Zone manager already registered with requested type [type=" + zoneType +
log.warning("Zone manager already registered with requested type [type=" + zoneType +
", old=" + old + ", new=" + manager + "].");
} else {
_managers.put(zoneType, manager);