Ticket #8857: kyra3-debugger.diff

File kyra3-debugger.diff, 3.7 KB (added by SF/clemty, 12 years ago)

kyra3 debugger. use ctrl+d to invoke

  • debugger.cpp

    Only in ./kyra-new: .deps
    Common subdirectories: ./kyra/.svn and ./kyra-new/.svn
    diff -u ./kyra/debugger.cpp ./kyra-new/debugger.cpp
    old new  
    2929#include "kyra/debugger.h"
    3030#include "kyra/kyra_v1.h"
    3131#include "kyra/kyra_v2.h"
     32#include "kyra/kyra_v3.h"
    3233#include "kyra/screen.h"
    3334#include "kyra/timer.h"
    3435#include "kyra/resource.h"
     
    449450                _vm->_dbgPass = val;           
    450451        } else {
    451452                DebugPrintf("Syntax: pass_codes <0/1>\n");
     453        }
     454
     455        return true;
     456}
     457
     458Debugger_v3::Debugger_v3(KyraEngine_v3 *vm) : Debugger(vm), _vm(vm) {
     459        DCmd_Register("continue",                       WRAP_METHOD(Debugger_v3, Cmd_Exit));
     460        DCmd_Register("give",                           WRAP_METHOD(Debugger_v3, cmd_giveItem));
     461}
     462
     463bool Debugger_v3::cmd_giveItem(int argc, const char **argv) {
     464        if (argc == 2) {
     465                int item = atoi(argv[1]);
     466
     467                // Kyrandia 3 has only 73 items (-1 to 71), otherwise it will crash
     468                if (item < -1 || item > 71) {
     469                        DebugPrintf("itemid must be any value between (including) -1 and 71\n");
     470                        return true;
     471                }
     472
     473                _vm->setHandItem(item);
     474        } else {
     475                DebugPrintf("Syntax: give <itemid>\n");
    452476        }
    453477
    454478        return true;
  • debugger.h

    diff -u ./kyra/debugger.h ./kyra-new/debugger.h
    old new  
    3333class KyraEngine;
    3434class KyraEngine_v1;
    3535class KyraEngine_v2;
     36class KyraEngine_v3;
    3637
    3738class Debugger : public ::GUI::Debugger {
    3839public:
     
    8687        bool cmd_giveItem(int argc, const char **argv);
    8788        bool cmd_passcodes(int argc, const char **argv);
    8889};
     90
     91class Debugger_v3 : public Debugger {
     92public:
     93        Debugger_v3(KyraEngine_v3 *vm);
     94        virtual ~Debugger_v3() {}
     95
     96protected:
     97        KyraEngine_v3 *_vm;
     98       
     99        bool cmd_giveItem(int argc, const char **argv);
     100};
     101
    89102
    90103} // End of namespace Kyra
    91104
  • kyra_v3.cpp

    diff -u ./kyra/kyra_v3.cpp ./kyra-new/kyra_v3.cpp
    old new  
    3232#include "kyra/vqa.h"
    3333#include "kyra/gui.h"
    3434#include "kyra/timer.h"
     35#include "kyra/debugger.h"
    3536
    3637#include "common/system.h"
    3738#include "common/config-manager.h"
     
    130131        _invWsaFrame = -1;
    131132        _score = 0;
    132133        memset(_scoreFlagTable, 0, sizeof(_scoreFlagTable));
     134        _debugger = 0;
    133135}
    134136
    135137KyraEngine_v3::~KyraEngine_v3() {
     
    188190        delete [] _stringBuffer;
    189191        delete [] _newShapeFiledata;
    190192        delete _invWsa;
     193        delete _debugger;
    191194}
    192195
    193196int KyraEngine_v3::init() {
     
    197200                error("_screen->init() failed");
    198201
    199202        KyraEngine::init();
     203       
     204        _debugger = new Debugger_v3(this);
     205        assert(_debugger);
    200206
    201207        _soundDigital = new SoundDigital(this, _mixer);
    202208        assert(_soundDigital);
     
    13441350                default:
    13451351                        break;
    13461352                }
     1353               
     1354    if (_debugger->isAttached())
     1355                _debugger->onFrame();
     1356               
    13471357        }
    13481358}
    13491359
     
    13761386                                if (event.kbd.keycode == 'd')
    13771387                                        _debugger->attach();
    13781388                        }*/
     1389
     1390                        if (event.kbd.flags == Common::KBD_CTRL) {
     1391                                if (event.kbd.keycode == 'd')
     1392                                        _debugger->attach();
     1393                        }
     1394                       
    13791395                        break;
    13801396
    13811397                case Common::EVENT_MOUSEMOVE: {
  • kyra_v3.h

    diff -u ./kyra/kyra_v3.h ./kyra-new/kyra_v3.h
    old new  
    4040class MainMenu;
    4141class WSAMovieV2;
    4242class TextDisplayer_v3;
     43class Debugger_v3;
    4344struct Button;
    4445
    4546class KyraEngine_v3 : public KyraEngine {
     47friend class Debugger_v3;
    4648friend class TextDisplayer_v3;
    4749public:
    4850        KyraEngine_v3(OSystem *system, const GameFlags &flags);
     
    742744
    743745        // misc
    744746        TextDisplayer_v3 *_text;
     747        Debugger_v3 *_debugger;
    745748        bool _wsaPlayingVQA;
    746749
    747750        // resource specific