1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423
|
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef ULTIMA4_CORE_DEBUGGER_H
#define ULTIMA4_CORE_DEBUGGER_H
#include "ultima/ultima4/core/coords.h"
#include "ultima/ultima4/core/types.h"
#include "ultima/ultima4/core/debugger_actions.h"
#include "ultima/shared/engine/debugger.h"
namespace Ultima {
namespace Ultima4 {
/**
* Debugger base class
*/
class Debugger : public Shared::Debugger, public DebuggerActions {
private:
MapTile _horse, _ship, _balloon;
bool _dontEndTurn;
protected:
/**
* Returns true if the debugger is active
*/
bool isDebuggerActive() const override {
return isActive();
}
/**
* Process the given command line.
* Returns true if and only if argv[0] is a known command and was
* handled, false otherwise.
*/
bool handleCommand(int argc, const char **argv, bool &keepRunning) override;
/**
* Prints a message to the console if it's active, or to the
* game screen if not
*/
void print(const char *fmt, ...) override;
/**
* Prints a message to the console if it's active, or to the
* game screen if not, with no newline
*/
void printN(const char *fmt, ...) override;
/**
* Prompts for input, but only if debugger isn't running
*/
void prompt() override;
/**
* Gets the direction for an action
*/
Direction getDirection(int argc, const char **argv);
/**
* Used by methods so that when they're triggered by a keybinding
* action, stops the turn from being finished when they're done
*/
void dontEndTurn() {
_dontEndTurn = true;
}
private:
/**
* Move the avatar in a given direction
*/
bool cmdMove(int argc, const char **argv);
/**
* Attack
*/
bool cmdAttack(int argc, const char **argv);
/**
* Board transport
*/
bool cmdBoard(int argc, const char **argv);
/**
* Cast spell
*/
bool cmdCastSpell(int argc, const char **argv);
/**
* Climb
*/
bool cmdClimb(int argc, const char **argv);
/**
* Descend
*/
bool cmdDescend(int argc, const char **argv);
/**
* Enter location
*/
bool cmdEnter(int argc, const char **argv);
/**
* Exit
*/
bool cmdExit(int argc, const char **argv);
/**
* Fire
*/
bool cmdFire(int argc, const char **argv);
/**
* Get chest
*/
bool cmdGetChest(int argc, const char **argv);
/**
* Hole Up & Camp
*/
bool cmdCamp(int argc, const char **argv);
/**
* Ignite Torch
*/
bool cmdIgnite(int argc, const char **argv);
/**
* Generic interaction
*/
bool cmdInteract(int argc, const char **argv);
/**
* Jimmy lock
*/
bool cmdJimmy(int argc, const char **argv);
/**
* Locate position
*/
bool cmdLocate(int argc, const char **argv);
/**
* Mix reagents
*/
bool cmdMixReagents(int argc, const char **argv);
/**
* Exchanges the position of two players in the party. Prompts the
* user for the player numbers.
*/
bool cmdNewOrder(int argc, const char **argv);
/**
* Open door
*/
bool cmdOpenDoor(int argc, const char **argv);
/**
* Specifies a particular party number
*/
bool cmdParty(int argc, const char **argv);
/**
* Pass turn
*/
bool cmdPass(int argc, const char **argv);
/**
* Peer
*/
bool cmdPeer(int argc, const char **argv);
/**
* Save and quit
*/
bool cmdQuitAndSave(int argc, const char **argv);
/**
* Readies a weapon for a player. Prompts for the player and/or the
* weapon if not provided.
*/
bool cmdReadyWeapon(int argc, const char **argv);
/**
* Search
*/
bool cmdSearch(int argc, const char **argv);
/**
* Speed up, down, or normal
*/
bool cmdSpeed(int argc, const char **argv);
/**
* Combat speed up, down, or normal
*/
bool cmdCombatSpeed(int argc, const char **argv);
/**
* Show character stats
*/
bool cmdStats(int argc, const char **argv);
/**
* Talk
*/
bool cmdTalk(int argc, const char **argv);
/**
* Use
*/
bool cmdUse(int argc, const char **argv);
/**
* Changes a player's armor
*/
bool cmdWearArmor(int argc, const char **argv);
/**
* Yell
*/
bool cmdYell(int argc, const char **argv);
private:
/**
* Collision detection on/off
*/
bool cmd3d(int argc, const char **argv);
/**
* Teleports to the Abyss final altar
*/
bool cmdAbyss(int argc, const char **argv);
/**
* Collision detection on/off
*/
bool cmdCollisions(int argc, const char **argv);
/**
* Have all the companions join the party
*/
bool cmdCompanions(int argc, const char **argv);
/**
* Toggle whether combat occurs
*/
bool cmdCombat(int argc, const char **argv);
/**
* Destroy an object
*/
bool cmdDestroy(int argc, const char **argv);
/**
* Destroy all creatures
*/
bool cmdDestroyCreatures(int argc, const char **argv);
/**
* Jumps to a given dungeon
*/
bool cmdDungeon(int argc, const char **argv);
/**
* Flee from combat
*/
bool cmdFlee(int argc, const char **argv);
/**
* All equipement
*/
bool cmdEquipment(int argc, const char **argv);
/**
* Full stats
*/
bool cmdFullStats(int argc, const char **argv);
/**
* Toggle hunger on or off
*/
bool cmdHunger(int argc, const char **argv);
/**
* Moongate teleportation
*/
bool cmdGate(int argc, const char **argv);
/**
* Go to any specified location by name
*/
bool cmdGoto(int argc, const char **argv);
/**
* Help.. sends the party to Lord British
*/
bool cmdLorddBritish(int argc, const char **argv);
/**
* Grant karma
*/
bool cmdKarma(int argc, const char **argv);
/**
* Give all the items
*/
bool cmdItems(int argc, const char **argv);
/**
* Leave the current location
*/
bool cmdLeave(int argc, const char **argv);
/**
* Displays the current location
*/
bool cmdLocation(int argc, const char **argv);
/**
* Give all the mixtures
*/
bool cmdMixtures(int argc, const char **argv);
/**
* Moon phase
*/
bool cmdMoon(int argc, const char **argv);
/**
* Toggle opacity
*/
bool cmdOpacity(int argc, const char **argv);
/**
* Toggle overhead view
*/
bool cmdOverhead(int argc, const char **argv);
/**
* Give all the reagents
*/
bool cmdReagents(int argc, const char **argv);
/**
* Summons a creature to fight
*/
bool cmdSummon(int argc, const char **argv);
/**
* Returns the torch duration
*/
bool cmdTorch(int argc, const char **argv);
/**
* Creates a given transport
*/
bool cmdTransport(int argc, const char **argv);
/**
* Move up a floor
*/
bool cmdUp(int argc, const char **argv);
/**
* Move down a floor
*/
bool cmdDown(int argc, const char **argv);
/**
* Gives full virtue, or increments a specific virtue
*/
bool cmdVirtue(int argc, const char **argv);
/**
* Set wind direction or locks the direction
*/
bool cmdWind(int argc, const char **argv);
/**
* Lists the triggers in a dungeon room
*/
bool cmdListTriggers(int argc, const char **argv);
public:
bool _collisionOverride;
bool _disableHunger;
bool _disableCombat;
public:
Debugger();
~Debugger() override;
/**
* Gets a chest.
* If the default -2 is used, it bypasses prompting for a
* user. Otherwise, a non-negative player number is expected
*/
void getChest(int player = -2);
};
extern Debugger *g_debugger;
} // End of namespace Ultima4
} // End of namespace Ultima
#endif
|