diff --git a/src/java/com/threerings/micasa/simulator/server/SimulatorManager.java b/src/java/com/threerings/micasa/simulator/server/SimulatorManager.java index 5a139b05a..5cd2d2288 100644 --- a/src/java/com/threerings/micasa/simulator/server/SimulatorManager.java +++ b/src/java/com/threerings/micasa/simulator/server/SimulatorManager.java @@ -1,5 +1,5 @@ // -// $Id: SimulatorManager.java,v 1.17 2004/08/27 02:12:54 mdb Exp $ +// $Id: SimulatorManager.java,v 1.18 2004/10/22 19:27:54 ray Exp $ // // Narya library - tools for developing networked games // Copyright (C) 2002-2004 Three Rings Design, Inc., All Rights Reserved @@ -135,7 +135,7 @@ public class SimulatorManager for (int ii = 1; ii < _playerCount; ii++) { // mark all simulants as AI players - _gmgr.setAI(ii, skill); + _gmgr.setAI(ii, skill, (byte) 0); } // resolve the simulant body objects diff --git a/src/java/com/threerings/parlor/game/AI.java b/src/java/com/threerings/parlor/game/AI.java new file mode 100644 index 000000000..4a4307cb9 --- /dev/null +++ b/src/java/com/threerings/parlor/game/AI.java @@ -0,0 +1,32 @@ +// +// $Id: AI.java,v 1.1 2004/10/22 19:27:54 ray Exp $ + +package com.threerings.parlor.game; + +/** + * Represents attributes of an AI player. + */ +public class AI +{ + /** The skill level of the AI. */ + public byte skill; + + /** The "personality" of the AI, which can be interpreted by + * each puzzle. */ + public byte personality; + + /** + * Construct an AI. + */ + public AI (byte skill, byte personality) + { + this.skill = skill; + this.personality = personality; + } + + // documentation inherited + public String toString () + { + return "skill(" + skill + "), personality(" + personality + ")"; + } +} diff --git a/src/java/com/threerings/parlor/game/GameManager.java b/src/java/com/threerings/parlor/game/GameManager.java index f08ee8087..9cfd6a7b7 100644 --- a/src/java/com/threerings/parlor/game/GameManager.java +++ b/src/java/com/threerings/parlor/game/GameManager.java @@ -1,5 +1,5 @@ // -// $Id: GameManager.java,v 1.75 2004/08/27 02:20:14 mdb Exp $ +// $Id: GameManager.java,v 1.76 2004/10/22 19:27:54 ray Exp $ // // Narya library - tools for developing networked games // Copyright (C) 2002-2004 Three Rings Design, Inc., All Rights Reserved @@ -227,7 +227,7 @@ public class GameManager extends PlaceManager if (_AIs != null) { // clear out the player's entry in the AI list - _AIs[pidx] = -1; + _AIs[pidx] = null; } // decrement the number of players in the game @@ -262,23 +262,22 @@ public class GameManager extends PlaceManager * @param pidx the player index of the AI. * @param skill the skill level, from 0 to 100 inclusive. */ - public void setAI (final int pidx, final byte skill) + public void setAI (final int pidx, final byte skill, final byte personality) { if (_AIs == null) { // create and initialize the AI skill level array - _AIs = new byte[getPlayerSlots()]; - Arrays.fill(_AIs, (byte)-1); + _AIs = new AI[getPlayerSlots()]; // set up a delegate op for AI ticking _tickAIOp = new TickAIDelegateOp(); } // save off the AI's skill level - _AIs[pidx] = skill; + _AIs[pidx] = new AI(skill, personality); // let the delegates know that the player's been made an AI applyToDelegates(new DelegateOp() { public void apply (PlaceManagerDelegate delegate) { - ((GameManagerDelegate)delegate).setAI(pidx, skill); + ((GameManagerDelegate)delegate).setAI(pidx, skill, personality); } }); } @@ -330,7 +329,7 @@ public class GameManager extends PlaceManager */ public boolean isAI (int pidx) { - return (_AIs != null && _AIs[pidx] != -1); + return (_AIs != null && _AIs[pidx] != null); } /** @@ -669,9 +668,8 @@ public class GameManager extends PlaceManager protected void tickAIs () { for (int ii = 0; ii < _AIs.length; ii++) { - byte level = _AIs[ii]; - if (level != -1) { - tickAI(ii, level); + if (_AIs[ii] != null) { + tickAI(ii, _AIs[ii]); } } } @@ -679,9 +677,9 @@ public class GameManager extends PlaceManager /** * Called by tickAIs to tick each AI in the game. */ - protected void tickAI (int pidx, byte level) + protected void tickAI (int pidx, AI ai) { - _tickAIOp.setAI(pidx, level); + _tickAIOp.setAI(pidx, ai); applyToDelegates(_tickAIOp); } @@ -868,7 +866,7 @@ public class GameManager extends PlaceManager { return (!_gameobj.isOccupiedPlayer(pidx) || // unoccupied slot _playerOids[pidx] != 0 || // player is ready - (_AIs != null && _AIs[pidx] != -1)); // player is AI + isAI(pidx)); // player is AI } // documentation inherited from interface @@ -970,17 +968,17 @@ public class GameManager extends PlaceManager protected class TickAIDelegateOp implements DelegateOp { public void apply (PlaceManagerDelegate delegate) { - ((GameManagerDelegate) delegate).tickAI(_pidx, _level); + ((GameManagerDelegate) delegate).tickAI(_pidx, _ai); } - public void setAI (int pidx, byte level) + public void setAI (int pidx, AI ai) { _pidx = pidx; - _level = level; + _ai = ai; } protected int _pidx; - protected byte _level; + protected AI _ai; } /** @@ -1006,7 +1004,7 @@ public class GameManager extends PlaceManager /** If AIs are present, contains their skill levels, or -1 at human * player indexes. */ - protected byte[] _AIs; + protected AI[] _AIs; /** If non-null, contains bundles and messages that should be sent as * system messages once the game has started. */ diff --git a/src/java/com/threerings/parlor/game/GameManagerDelegate.java b/src/java/com/threerings/parlor/game/GameManagerDelegate.java index 3d0a815ca..27f5fc5a6 100644 --- a/src/java/com/threerings/parlor/game/GameManagerDelegate.java +++ b/src/java/com/threerings/parlor/game/GameManagerDelegate.java @@ -1,5 +1,5 @@ // -// $Id: GameManagerDelegate.java,v 1.8 2004/08/27 02:20:14 mdb Exp $ +// $Id: GameManagerDelegate.java,v 1.9 2004/10/22 19:27:54 ray Exp $ // // Narya library - tools for developing networked games // Copyright (C) 2002-2004 Three Rings Design, Inc., All Rights Reserved @@ -59,7 +59,7 @@ public class GameManagerDelegate extends PlaceManagerDelegate * @param pidx the player index to fake some gameplay for. * @param skill the base skill level of the AI (0 - 100 inclusive). */ - public void tickAI (int pidx, byte skill) + public void tickAI (int pidx, AI ai) { } @@ -90,7 +90,7 @@ public class GameManagerDelegate extends PlaceManagerDelegate * Called when the specified player has been set as an AI with the * given skill level (ranging from 0 to 100 inclusive.) */ - public void setAI (int pidx, byte skill) + public void setAI (int pidx, byte skill, byte personality) { } }