mirror of
https://github.com/scummvm/scummvm.git
synced 2026-06-20 05:45:29 +00:00
new debugging code, using Common::Debugger
svn-id: r11940
This commit is contained in:
+103
-150
@@ -30,195 +30,148 @@
|
||||
#include "queen/resource.h"
|
||||
#include "queen/structs.h"
|
||||
|
||||
#include "common/debugger.cpp"
|
||||
|
||||
namespace Queen {
|
||||
|
||||
Debug::Debug(QueenEngine *vm)
|
||||
: _passwordCharCount(0), _stubCount(0), _vm(vm) {
|
||||
|
||||
memset(_password, 0, sizeof(_password));
|
||||
|
||||
registerStub("zeroxpark", &Debug::jumpToRoom);
|
||||
registerStub("grimley", &Debug::printInfo);
|
||||
registerStub("kowamori", &Debug::toggleFastMode);
|
||||
Debugger::Debugger(QueenEngine *vm)
|
||||
: _drawAreas(false), _vm(vm) {
|
||||
|
||||
DCmd_Register("exit", &Debugger::Cmd_Exit);
|
||||
DCmd_Register("help", &Debugger::Cmd_Help);
|
||||
DCmd_Register("areas", &Debugger::Cmd_Areas);
|
||||
DCmd_Register("asm", &Debugger::Cmd_Asm);
|
||||
DCmd_Register("gs", &Debugger::Cmd_GameState);
|
||||
DCmd_Register("info", &Debugger::Cmd_Info);
|
||||
DCmd_Register("items", &Debugger::Cmd_Items);
|
||||
DCmd_Register("room", &Debugger::Cmd_Room);
|
||||
}
|
||||
|
||||
|
||||
void Debug::registerStub(const char *password, DebugFunc debugFunc) {
|
||||
|
||||
assert(_stubCount < MAX_STUB);
|
||||
_stub[_stubCount].password = password;
|
||||
_stub[_stubCount].function = debugFunc;
|
||||
++_stubCount;
|
||||
void Debugger::preEnter() {
|
||||
|
||||
// XXX mute all sounds
|
||||
}
|
||||
|
||||
|
||||
void Debug::update(int c) {
|
||||
void Debugger::postEnter() {
|
||||
|
||||
// XXX un-mute all sounds
|
||||
_vm->graphics()->bobSetupControl(); // re-init mouse cursor
|
||||
}
|
||||
|
||||
if (c >= 'a' && c <= 'z') {
|
||||
_password[_passwordCharCount] = (char)c;
|
||||
++_passwordCharCount;
|
||||
_passwordCharCount &= 15;
|
||||
|
||||
uint k;
|
||||
for (k = 0; k < _stubCount; ++k) {
|
||||
const char *pass = _stub[k].password;
|
||||
int i = strlen(pass) - 1;
|
||||
int j = _passwordCharCount - 1;
|
||||
bool match = true;
|
||||
for (; i >= 0; --i, --j) {
|
||||
if (_password[j & 15] != pass[i]) {
|
||||
match = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (match) {
|
||||
(this->*(_stub[k].function))();
|
||||
break;
|
||||
}
|
||||
}
|
||||
bool Debugger::Cmd_Exit(int argc, const char **argv) {
|
||||
|
||||
_detach_now = true;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
bool Debugger::Cmd_Help(int argc, const char **argv) {
|
||||
// console normally has 39 line width
|
||||
// wrap around nicely
|
||||
int width = 0, size, i;
|
||||
|
||||
DebugPrintf("Commands are:\n");
|
||||
for (i = 0 ; i < _dcmd_count ; i++) {
|
||||
size = strlen(_dcmds[i].name) + 1;
|
||||
|
||||
if ((width + size) >= 39) {
|
||||
DebugPrintf("\n");
|
||||
width = size;
|
||||
} else
|
||||
width += size;
|
||||
|
||||
DebugPrintf("%s ", _dcmds[i].name);
|
||||
}
|
||||
DebugPrintf("\n");
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
void Debug::jumpToRoom() {
|
||||
|
||||
debug(9, "Debug::jumpToRoom()");
|
||||
|
||||
_vm->graphics()->textCurrentColor(INK_JOE);
|
||||
_vm->graphics()->textSet(0, 142, "Enter new room");
|
||||
_vm->logic()->update();
|
||||
|
||||
int room;
|
||||
_digitTextCount = 0;
|
||||
if (_vm->input()->waitForNumber(room, digitKeyPressed, this)) {
|
||||
_vm->logic()->joeX(0);
|
||||
_vm->logic()->joeY(0);
|
||||
_vm->logic()->newRoom(room);
|
||||
_vm->logic()->entryObj(_vm->logic()->roomData(room) + 1);
|
||||
_vm->graphics()->textClear(0, 199);
|
||||
bool Debugger::Cmd_Asm(int argc, const char **argv) {
|
||||
|
||||
if (argc == 2) {
|
||||
uint16 sm = atoi(argv[1]);
|
||||
DebugPrintf("Executing special move %d\n", sm);
|
||||
_vm->logic()->executeSpecialMove(sm);
|
||||
} else {
|
||||
DebugPrintf("Usage: %s smnum\n", argv[0]);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
void Debug::toggleFastMode() {
|
||||
bool Debugger::Cmd_Areas(int argc, const char **argv) {
|
||||
|
||||
debug(9, "Debug::toggleFastMode()");
|
||||
_vm->input()->fastMode(!_vm->input()->fastMode());
|
||||
_drawAreas = !_drawAreas;
|
||||
DebugPrintf("Room areas display %s\n", _drawAreas ? "on" : "off");
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
void Debug::printInfo() {
|
||||
|
||||
debug(9, "Debug::printInfo()");
|
||||
|
||||
_vm->graphics()->textClear(0, 199);
|
||||
_vm->graphics()->textCurrentColor(INK_JOE);
|
||||
|
||||
char buf[100];
|
||||
|
||||
snprintf(buf, sizeof(buf), "Version : %s", _vm->resource()->JASVersion());
|
||||
_vm->graphics()->textSet(110, 20, buf);
|
||||
|
||||
snprintf(buf, sizeof(buf), "Room number : %d", _vm->logic()->currentRoom());
|
||||
_vm->graphics()->textSet(110, 40, buf);
|
||||
|
||||
snprintf(buf, sizeof(buf), "Room name : %s", _vm->logic()->roomName(_vm->logic()->currentRoom()));
|
||||
_vm->graphics()->textSet(110, 60, buf);
|
||||
|
||||
_vm->logic()->update();
|
||||
|
||||
char c;
|
||||
if (_vm->input()->waitForCharacter(c)) {
|
||||
switch (c) {
|
||||
case 'a':
|
||||
toggleAreasDrawing();
|
||||
break;
|
||||
case 's' :
|
||||
changeGameState();
|
||||
break;
|
||||
case 'x' :
|
||||
printGameState();
|
||||
break;
|
||||
case 'i' :
|
||||
giveAllItems();
|
||||
break;
|
||||
}
|
||||
}
|
||||
_vm->graphics()->textClear(0, 199);
|
||||
bool Debugger::Cmd_GameState(int argc, const char **argv) {
|
||||
|
||||
uint16 slot;
|
||||
switch (argc) {
|
||||
case 2:
|
||||
slot = atoi(argv[1]);
|
||||
DebugPrintf("GAMESTATE[%d] ", slot);
|
||||
DebugPrintf("is %d\n", _vm->logic()->gameState(slot));
|
||||
break;
|
||||
case 3:
|
||||
slot = atoi(argv[1]);
|
||||
DebugPrintf("GAMESTATE[%d] ", slot);
|
||||
DebugPrintf("was %d ", _vm->logic()->gameState(slot));
|
||||
_vm->logic()->gameState(slot, atoi(argv[2]));
|
||||
DebugPrintf("now %d\n", _vm->logic()->gameState(slot));
|
||||
break;
|
||||
default:
|
||||
DebugPrintf("Usage: %s slotnum value\n", argv[0]);
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
void Debug::toggleAreasDrawing() {
|
||||
|
||||
debug(9, "Debug::toggleAreasDrawing()");
|
||||
warning("Debug::toggleAreasDrawing() unimplemented");
|
||||
bool Debugger::Cmd_Info(int argc, const char **argv) {
|
||||
|
||||
DebugPrintf("Version: %s\n", _vm->resource()->JASVersion());
|
||||
DebugPrintf("Room number: %d\n", _vm->logic()->currentRoom());
|
||||
DebugPrintf("Room name: %s\n", _vm->logic()->roomName(_vm->logic()->currentRoom()));
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
void Debug::changeGameState() {
|
||||
|
||||
debug(9, "Debug::changeGameState()");
|
||||
_vm->graphics()->textSet(0, 142, "Set GAMESTATE");
|
||||
_vm->logic()->update();
|
||||
int slot, value;
|
||||
_digitTextCount = 0;
|
||||
if (_vm->input()->waitForNumber(slot, digitKeyPressed, this)) {
|
||||
_vm->graphics()->textClear(0, 199);
|
||||
_vm->graphics()->textSet(0, 142, "to");
|
||||
_vm->logic()->update();
|
||||
_digitTextCount = 0;
|
||||
if (_vm->input()->waitForNumber(value, digitKeyPressed, this)) {
|
||||
_vm->logic()->gameState(slot, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void Debug::printGameState() {
|
||||
|
||||
debug(9, "Debug::printGameState()");
|
||||
_vm->graphics()->textSet(0, 142, "Show GAMESTATE");
|
||||
_vm->logic()->update();
|
||||
int slot;
|
||||
_digitTextCount = 0;
|
||||
if (_vm->input()->waitForNumber(slot, digitKeyPressed, this)) {
|
||||
_vm->graphics()->textClear(0, 199);
|
||||
char buf[50];
|
||||
snprintf(buf, sizeof(buf), "Currently - %d", _vm->logic()->gameState(slot));
|
||||
_vm->graphics()->textSet(0, 142, buf);
|
||||
_vm->logic()->update();
|
||||
char c;
|
||||
_vm->input()->waitForCharacter(c);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void Debug::giveAllItems() {
|
||||
|
||||
debug(9, "Debug::giveAllItems()");
|
||||
bool Debugger::Cmd_Items(int argc, const char **argv) {
|
||||
|
||||
int n = _vm->logic()->itemDataCount();
|
||||
ItemData *item = _vm->logic()->itemData(1);
|
||||
while (n--) {
|
||||
item->name = ABS(item->name);
|
||||
++item;
|
||||
}
|
||||
DebugPrintf("Enabled all inventory items\n");
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
void Debug::digitKeyPressed(void *refCon, int key) {
|
||||
|
||||
Debug *debug = (Debug *)refCon;
|
||||
if(key != -1 && debug->_digitTextCount < sizeof(debug->_digitText) - 1) {
|
||||
debug->_digitText[debug->_digitTextCount] = (char)key;
|
||||
++debug->_digitTextCount;
|
||||
bool Debugger::Cmd_Room(int argc, const char **argv) {
|
||||
|
||||
if (argc == 2) {
|
||||
uint16 roomNum = atoi(argv[1]);
|
||||
_vm->logic()->joeX(0);
|
||||
_vm->logic()->joeY(0);
|
||||
_vm->logic()->newRoom(roomNum);
|
||||
_vm->logic()->entryObj(_vm->logic()->roomData(roomNum) + 1);
|
||||
DebugPrintf("Changing from room %d to %d\n", _vm->logic()->currentRoom(), roomNum);
|
||||
} else {
|
||||
DebugPrintf("Usage: %s roomnum\n", argv[0]);
|
||||
}
|
||||
else if (debug->_digitTextCount > 0) {
|
||||
--debug->_digitTextCount;
|
||||
}
|
||||
debug->_digitText[debug->_digitTextCount] = '\0';
|
||||
debug->_vm->graphics()->textSet(0, 151, debug->_digitText);
|
||||
debug->_vm->logic()->update();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
} // End of namespace Queen
|
||||
|
||||
+15
-34
@@ -22,57 +22,38 @@
|
||||
#ifndef QUEENDEBUG_H
|
||||
#define QUEENDEBUG_H
|
||||
|
||||
#include "common/util.h"
|
||||
#include "common/debugger.h"
|
||||
|
||||
namespace Queen {
|
||||
|
||||
class QueenEngine;
|
||||
|
||||
class Debug {
|
||||
class Debugger : public Common::Debugger<Debugger> {
|
||||
public:
|
||||
typedef void (Debug::*DebugFunc)();
|
||||
|
||||
Debug(QueenEngine *vm);
|
||||
Debugger(QueenEngine *vm);
|
||||
|
||||
void registerStub(const char *password, DebugFunc debugFunc);
|
||||
bool _drawAreas;
|
||||
|
||||
void update(int c);
|
||||
protected:
|
||||
|
||||
void jumpToRoom();
|
||||
void toggleFastMode();
|
||||
void printInfo();
|
||||
void toggleAreasDrawing();
|
||||
void changeGameState();
|
||||
void printGameState();
|
||||
void giveAllItems();
|
||||
|
||||
static void digitKeyPressed(void *refCon, int key);
|
||||
|
||||
struct DebugStub {
|
||||
const char *password;
|
||||
DebugFunc function;
|
||||
};
|
||||
|
||||
enum {
|
||||
MAX_STUB = 5
|
||||
};
|
||||
virtual void preEnter();
|
||||
virtual void postEnter();
|
||||
|
||||
bool Cmd_Exit(int argc, const char **argv);
|
||||
bool Cmd_Help(int argc, const char **argv);
|
||||
bool Cmd_Areas(int argc, const char **argv);
|
||||
bool Cmd_Asm(int argc, const char **argv);
|
||||
bool Cmd_GameState(int argc, const char **argv);
|
||||
bool Cmd_Info(int argc, const char **argv);
|
||||
bool Cmd_Items(int argc, const char **argv);
|
||||
bool Cmd_Room(int argc, const char **argv);
|
||||
|
||||
private:
|
||||
|
||||
char _password[16];
|
||||
uint _passwordCharCount;
|
||||
|
||||
char _digitText[50];
|
||||
uint _digitTextCount;
|
||||
|
||||
DebugStub _stub[MAX_STUB];
|
||||
uint _stubCount;
|
||||
|
||||
QueenEngine *_vm;
|
||||
};
|
||||
|
||||
|
||||
} // End of namespace Queen
|
||||
|
||||
#endif
|
||||
|
||||
+12
-40
@@ -36,7 +36,7 @@ const char* Input::_commandKeys[LANGUAGE_COUNT] = {
|
||||
Input::Input(Language language, OSystem *system) :
|
||||
_system(system), _fastMode(false), _keyVerb(VERB_NONE),
|
||||
_cutawayRunning(false), _cutawayQuit(false), _talkQuit(false),
|
||||
_quickSave(false), _quickLoad(false),
|
||||
_quickSave(false), _quickLoad(false), _debugger(false),
|
||||
_inKey(0), _mouse_x(0), _mouse_y(0), _mouseButton(0) {
|
||||
|
||||
switch (language) {
|
||||
@@ -83,7 +83,17 @@ void Input::delay(uint amount) {
|
||||
event.kbd.keycode,
|
||||
isprint(event.kbd.keycode) ? event.kbd.keycode : '.');
|
||||
|
||||
_inKey = event.kbd.keycode;
|
||||
if (event.kbd.flags == OSystem::KBD_CTRL) {
|
||||
if (event.kbd.keycode == 'd') {
|
||||
_debugger = true;
|
||||
}
|
||||
else if (event.kbd.keycode == 'f') {
|
||||
_fastMode = !_fastMode;
|
||||
}
|
||||
}
|
||||
else {
|
||||
_inKey = event.kbd.keycode;
|
||||
}
|
||||
break;
|
||||
|
||||
case OSystem::EVENT_MOUSEMOVE:
|
||||
@@ -219,43 +229,5 @@ int Input::checkKeys() {
|
||||
}
|
||||
|
||||
|
||||
bool Input::waitForNumber(int &i, keyPressedCallback callback, void *refCon) {
|
||||
|
||||
i = 0;
|
||||
int key = 0;
|
||||
do {
|
||||
delay(DELAY_SHORT);
|
||||
key = _inKey;
|
||||
_inKey = 0;
|
||||
if (key >= '0' && key <= '9') {
|
||||
i = i * 10 + key - '0';
|
||||
(*callback)(refCon, key);
|
||||
}
|
||||
else if (key == KEY_BACKSPACE) {
|
||||
i /= 10;
|
||||
(*callback)(refCon, -1);
|
||||
}
|
||||
} while (key != KEY_ESCAPE && key != KEY_RETURN);
|
||||
return key != KEY_ESCAPE;
|
||||
}
|
||||
|
||||
|
||||
bool Input::waitForCharacter(char &c) {
|
||||
|
||||
int key = 0;
|
||||
do {
|
||||
delay(DELAY_SHORT);
|
||||
if (_inKey >= 'a' && _inKey <= 'z' || _inKey == KEY_ESCAPE) {
|
||||
key = _inKey;
|
||||
if (_inKey != KEY_ESCAPE) {
|
||||
c = (char)_inKey;
|
||||
}
|
||||
}
|
||||
_inKey = 0;
|
||||
} while (key == 0);
|
||||
return key != KEY_ESCAPE;
|
||||
}
|
||||
|
||||
|
||||
} // End of namespace Queen
|
||||
|
||||
|
||||
+7
-7
@@ -31,8 +31,6 @@ class Input {
|
||||
|
||||
public:
|
||||
|
||||
typedef void (*keyPressedCallback)(void *refCon, int key);
|
||||
|
||||
//! Adjust here to change delays!
|
||||
enum {
|
||||
DELAY_SHORT = 10,
|
||||
@@ -75,6 +73,8 @@ class Input {
|
||||
void quickSaveReset() { _quickSave = false; }
|
||||
bool quickLoad() const { return _quickLoad; }
|
||||
void quickLoadReset() { _quickLoad = false; }
|
||||
bool debugger() const { return _debugger; }
|
||||
void debuggerReset() { _debugger = false; }
|
||||
|
||||
bool fastMode() const { return _fastMode; }
|
||||
void fastMode(bool fm) { _fastMode = fm; }
|
||||
@@ -87,9 +87,6 @@ class Input {
|
||||
int mouseButton() const { return _mouseButton; }
|
||||
void clearMouseButton() { _mouseButton = 0; }
|
||||
|
||||
bool waitForNumber(int &i, keyPressedCallback callback, void *refCon);
|
||||
bool waitForCharacter(char &c);
|
||||
|
||||
private:
|
||||
|
||||
enum KeyCode {
|
||||
@@ -146,6 +143,9 @@ class Input {
|
||||
//! Set if quickload requested
|
||||
bool _quickLoad;
|
||||
|
||||
//! Set if debugger requested
|
||||
bool _debugger;
|
||||
|
||||
//! Set by delay();
|
||||
int _inKey;
|
||||
|
||||
@@ -156,10 +156,10 @@ class Input {
|
||||
int _mouseButton;
|
||||
|
||||
//! Command keys for current language
|
||||
const char* _currentCommandKeys;
|
||||
const char *_currentCommandKeys;
|
||||
|
||||
//! Command keys for all languages
|
||||
static const char* _commandKeys[LANGUAGE_COUNT];
|
||||
static const char *_commandKeys[LANGUAGE_COUNT];
|
||||
};
|
||||
|
||||
} // End of namespace Queen
|
||||
|
||||
+27
-11
@@ -25,8 +25,8 @@
|
||||
#include "common/config-manager.h"
|
||||
#include "queen/command.h"
|
||||
#include "queen/cutaway.h"
|
||||
#include "queen/defs.h"
|
||||
#include "queen/debug.h"
|
||||
#include "queen/defs.h"
|
||||
#include "queen/display.h"
|
||||
#include "queen/graphics.h"
|
||||
#include "queen/input.h"
|
||||
@@ -45,15 +45,11 @@ Logic::Logic(QueenEngine *vm)
|
||||
: _vm(vm) {
|
||||
_joe.x = _joe.y = 0;
|
||||
_joe.scale = 100;
|
||||
_dbg = new Debug(vm);
|
||||
memset(_gameState, 0, sizeof(_gameState));
|
||||
memset(_talkSelected, 0, sizeof(_talkSelected));
|
||||
initialise();
|
||||
}
|
||||
|
||||
Logic::~Logic() {
|
||||
delete _dbg;
|
||||
}
|
||||
|
||||
void Logic::initialise() {
|
||||
|
||||
@@ -2226,23 +2222,43 @@ void Logic::handlePinnacleRoom() {
|
||||
|
||||
|
||||
void Logic::update() {
|
||||
|
||||
if (_vm->debugger()->isAttached()) {
|
||||
_vm->debugger()->onFrame();
|
||||
}
|
||||
|
||||
_vm->graphics()->update(_currentRoom);
|
||||
|
||||
_vm->input()->delay();
|
||||
|
||||
_vm->display()->palCustomScroll(_currentRoom);
|
||||
if (_vm->debugger()->_drawAreas) {
|
||||
for(int i = 1; i < MAX_ZONES_NUMBER; ++i) {
|
||||
const ZoneSlot *pzs = &_zones[ZONE_ROOM][i];
|
||||
if (pzs->valid) {
|
||||
const Box *b = &pzs->box;
|
||||
_vm->display()->drawBox(b->x1, b->y1, b->x2, b->y2, 3);
|
||||
}
|
||||
}
|
||||
}
|
||||
BobSlot *joe = _vm->graphics()->bob(0);
|
||||
_vm->display()->update(joe->active, joe->x, joe->y);
|
||||
_dbg->update(_vm->input()->checkKeys());
|
||||
|
||||
if (_vm->input()->quickSave())
|
||||
if (!_vm->input()->cutawayRunning()) {
|
||||
|
||||
_vm->input()->checkKeys();
|
||||
if (_vm->input()->debugger()) {
|
||||
_vm->input()->debuggerReset();
|
||||
_vm->debugger()->attach();
|
||||
}
|
||||
if (!_vm->input()->cutawayRunning()) {
|
||||
if (_vm->input()->quickSave()) {
|
||||
_vm->input()->quickSaveReset();
|
||||
gameSave(0, "Quicksave");
|
||||
}
|
||||
if (_vm->input()->quickLoad())
|
||||
if (!_vm->input()->cutawayRunning()) {
|
||||
if (_vm->input()->quickLoad()) {
|
||||
_vm->input()->quickLoadReset();
|
||||
gameLoad(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool Logic::gameSave(uint16 slot, const char *desc) {
|
||||
|
||||
@@ -52,14 +52,12 @@ struct ZoneSlot {
|
||||
Box box;
|
||||
};
|
||||
|
||||
class Debug;
|
||||
class QueenEngine;
|
||||
|
||||
class Logic {
|
||||
|
||||
public:
|
||||
Logic(QueenEngine *vm);
|
||||
~Logic();
|
||||
|
||||
uint16 currentRoom() const { return _currentRoom; }
|
||||
void currentRoom(uint16 room) {
|
||||
@@ -425,7 +423,6 @@ protected:
|
||||
|
||||
bool _subtitles;
|
||||
|
||||
Debug *_dbg;
|
||||
QueenEngine *_vm;
|
||||
};
|
||||
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
#include "queen/queen.h"
|
||||
#include "queen/command.h"
|
||||
#include "queen/cutaway.h"
|
||||
#include "queen/debug.h"
|
||||
#include "queen/display.h"
|
||||
#include "queen/graphics.h"
|
||||
#include "queen/input.h"
|
||||
@@ -105,6 +106,7 @@ QueenEngine::~QueenEngine() {
|
||||
delete _bam;
|
||||
delete _resource;
|
||||
delete _command;
|
||||
delete _debugger;
|
||||
delete _display;
|
||||
delete _graphics;
|
||||
delete _input;
|
||||
@@ -163,6 +165,7 @@ void QueenEngine::initialise(void) {
|
||||
_bam = new BamScene(this);
|
||||
_resource = new Resource(_gameDataPath, _system->get_savefile_manager(), getSavePath());
|
||||
_command = new Command(this);
|
||||
_debugger = new Debugger(this);
|
||||
_display = new Display(this, _resource->getLanguage(), _system);
|
||||
_graphics = new Graphics(this);
|
||||
_input = new Input(_resource->getLanguage(), _system);
|
||||
|
||||
@@ -30,6 +30,7 @@ namespace Queen {
|
||||
|
||||
class BamScene;
|
||||
class Command;
|
||||
class Debugger;
|
||||
class Display;
|
||||
class Graphics;
|
||||
class Input;
|
||||
@@ -47,6 +48,7 @@ public:
|
||||
|
||||
BamScene *bam() const { return _bam; }
|
||||
Command *command() const { return _command; }
|
||||
Debugger *debugger() const { return _debugger; }
|
||||
Display *display() const { return _display; }
|
||||
Graphics *graphics() const { return _graphics; }
|
||||
Input *input() const { return _input; }
|
||||
@@ -71,6 +73,7 @@ protected:
|
||||
|
||||
BamScene *_bam;
|
||||
Command *_command;
|
||||
Debugger *_debugger;
|
||||
Display *_display;
|
||||
Graphics *_graphics;
|
||||
Input *_input;
|
||||
|
||||
Reference in New Issue
Block a user