LILLIPUT: Add preliminar mouse handler

This commit is contained in:
Strangerke 2012-04-10 00:57:59 +02:00 committed by Eugene Sandulenko
parent bda5b14cdc
commit cabc7a375d
3 changed files with 28 additions and 9 deletions

View file

@ -111,6 +111,9 @@ LilliputEngine::LilliputEngine(OSystem *syst, const LilliputGameDescription *gd)
_console = new LilliputConsole(this);
_rnd = 0;
_mouseX = 0;
_mouseY = 0;
_mouseButton = 0;
_scriptHandler = new LilliputScript(this);
_byte1714E = 0;
@ -153,6 +156,18 @@ Common::Platform LilliputEngine::getPlatform() const {
return _platform;
}
void LilliputEngine::getMouseEvent() {
Common::EventManager *_event = _system->getEventManager();
Common::Event event;
while (_event->pollEvent(event) && !_shouldQuit)
;
_mouseX = _event->getMousePos().x;
_mouseY = _event->getMousePos().y;
_mouseButton = _event->getButtonState();
}
byte *LilliputEngine::loadVGA(Common::String filename, bool loadPal) {
Common::File f;
@ -445,6 +460,7 @@ void LilliputEngine::initialize() {
_rnd = new Common::RandomSource("robin");
_rnd->setSeed(42); // Kick random number generator
_shouldQuit = false;
for (int i = 0; i < 4; i++) {
_arr18560[i]._field0 = 0;

View file

@ -176,12 +176,19 @@ public:
Common::String getSavegameFilename(int slot);
void syncSoundSettings();
int _mouseX;
int _mouseY;
int _mouseButton;
void getMouseEvent();
// Temporary stubs
byte _mouse_byte1299A;
byte _mouse_savedMousePosDivided;
byte _keyboard_getch();
protected:
Common::EventManager *_eventMan;
bool _shouldQuit;
// Engine APIs
Common::Error run();

View file

@ -1307,30 +1307,26 @@ void LilliputScript::OC_sub184F5() {
_vm->_word12D3D = 0;
_vm->_word12D3F = 0;
//
_vm->_mouse_byte1299A = 0;
_vm->_mouseButton = 0;
_vm->_byte16F09 = 0;
// TODO: Remove when the sound and the events are hooked
// _vm->_mouse_byte1299A = 1;
//
for (;;) {
sub185B4_display();
_vm->getMouseEvent();
if (_vm->_keyboard_nextIndex != _vm->_keyboard_oldIndex) {
_vm->_byte16F09 = _vm->_keyboard_getch();
_vm->_keyboard_getch();
break;
}
if (_vm->_mouse_byte1299A == 1)
if (_vm->_mouseButton & 1)
break;
if ((_vm->_byte184F4 != 0) && (_vm->_sound_byte16F06 == 0))
break;
}
_vm->_mouse_byte1299A = 0;
_vm->_mouseButton = 0;
}
void LilliputScript::OC_sub1853B() {