[Scummvm-git-logs] scummvm master -> 317a4b15b2dd77eb8c682835cddb5c9a17ca0ae9
whiterandrek
whiterandrek at gmail.com
Fri May 29 09:18:48 UTC 2020
This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
5473724684 PETKA: moved handling events to QSystem
317a4b15b2 PETKA: implemented handling key events
Commit: 5473724684fc80ca7282a4598850340fe38ac307
https://github.com/scummvm/scummvm/commit/5473724684fc80ca7282a4598850340fe38ac307
Author: Andrei Prykhodko (whiterandrek at gmail.com)
Date: 2020-05-29T10:39:57+03:00
Commit Message:
PETKA: moved handling events to QSystem
Changed paths:
engines/petka/petka.cpp
engines/petka/q_system.cpp
engines/petka/q_system.h
diff --git a/engines/petka/petka.cpp b/engines/petka/petka.cpp
index 8afc802114..5548882554 100644
--- a/engines/petka/petka.cpp
+++ b/engines/petka/petka.cpp
@@ -102,20 +102,8 @@ Common::Error PetkaEngine::run() {
case Common::EVENT_QUIT:
case Common::EVENT_RETURN_TO_LAUNCHER:
return Common::kNoError;
- case Common::EVENT_MOUSEMOVE:
- _qsystem->_currInterface->onMouseMove(event.mouse);
- break;
- case Common::EVENT_LBUTTONDOWN:
- _qsystem->_currInterface->onLeftButtonDown(event.mouse);
- break;
- case Common::EVENT_LBUTTONUP:
- break;
- case Common::EVENT_RBUTTONDOWN:
- _qsystem->_currInterface->onRightButtonDown(event.mouse);
- break;
- case Common::EVENT_KEYDOWN:
- break;
default:
+ _qsystem->onEvent(event);
break;
}
}
diff --git a/engines/petka/q_system.cpp b/engines/petka/q_system.cpp
index 9ed22f59dc..a7c617bedf 100644
--- a/engines/petka/q_system.cpp
+++ b/engines/petka/q_system.cpp
@@ -302,4 +302,20 @@ QObjectStar *QSystem::getStar() const {
return (QObjectStar *)_allObjects.back();
}
+void QSystem::onEvent(const Common::Event &event) {
+ switch (event.type) {
+ case Common::EVENT_MOUSEMOVE:
+ _currInterface->onMouseMove(event.mouse);
+ break;
+ case Common::EVENT_LBUTTONDOWN:
+ _currInterface->onLeftButtonDown(event.mouse);
+ break;
+ case Common::EVENT_RBUTTONDOWN:
+ _currInterface->onRightButtonDown(event.mouse);
+ break;
+ default:
+ break;
+ }
+}
+
}
diff --git a/engines/petka/q_system.h b/engines/petka/q_system.h
index 9c6dfe9ed3..b68655e3f6 100644
--- a/engines/petka/q_system.h
+++ b/engines/petka/q_system.h
@@ -24,6 +24,7 @@
#define PETKA_Q_SYSTEM_H
#include "common/ptr.h"
+#include "common/events.h"
#include "common/stream.h"
#include "common/list.h"
#include "common/hashmap.h"
@@ -76,6 +77,8 @@ public:
void setChapayev();
+ void onEvent(const Common::Event &event);
+
public:
Common::Array<QMessageObject *> _allObjects;
Common::List<QMessage> _messages;
Commit: 317a4b15b2dd77eb8c682835cddb5c9a17ca0ae9
https://github.com/scummvm/scummvm/commit/317a4b15b2dd77eb8c682835cddb5c9a17ca0ae9
Author: Andrei Prykhodko (whiterandrek at gmail.com)
Date: 2020-05-29T12:18:31+03:00
Commit Message:
PETKA: implemented handling key events
Changed paths:
engines/petka/interfaces/dialog_interface.cpp
engines/petka/interfaces/dialog_interface.h
engines/petka/objects/object_case.cpp
engines/petka/q_system.cpp
engines/petka/q_system.h
diff --git a/engines/petka/interfaces/dialog_interface.cpp b/engines/petka/interfaces/dialog_interface.cpp
index e5ca825d3a..41eb8ebc47 100644
--- a/engines/petka/interfaces/dialog_interface.cpp
+++ b/engines/petka/interfaces/dialog_interface.cpp
@@ -26,6 +26,7 @@
#include "petka/interfaces/main.h"
#include "petka/petka.h"
#include "petka/objects/object_cursor.h"
+#include "petka/objects/object_star.h"
#include "petka/objects/heroes.h"
#include "petka/q_system.h"
#include "petka/big_dialogue.h"
@@ -250,4 +251,10 @@ void DialogInterface::onUserMsgOpcode() {
_state = kPlaying;
}
+void DialogInterface::fixCursor() {
+ _isUserMsg = false;
+ _qsys->getCursor()->show(true);
+ _qsys->getStar()->_isActive = true;
+}
+
} // End of namespace Petka
diff --git a/engines/petka/interfaces/dialog_interface.h b/engines/petka/interfaces/dialog_interface.h
index a82974042e..4c2a941101 100644
--- a/engines/petka/interfaces/dialog_interface.h
+++ b/engines/petka/interfaces/dialog_interface.h
@@ -57,6 +57,8 @@ public:
void setSender(QMessageObject *sender);
void setReaction(QReaction *reaction);
+ void fixCursor();
+
private:
void onPlayOpcode(int prevTalkerId);
void onMenuOpcode();
diff --git a/engines/petka/objects/object_case.cpp b/engines/petka/objects/object_case.cpp
index 33ef7ba7f5..3c7d5da4e4 100644
--- a/engines/petka/objects/object_case.cpp
+++ b/engines/petka/objects/object_case.cpp
@@ -24,6 +24,7 @@
#include "petka/interfaces/main.h"
#include "petka/objects/object_case.h"
+#include "petka/objects/object_cursor.h"
#include "petka/flc.h"
#include "petka/petka.h"
#include "petka/q_manager.h"
@@ -180,7 +181,7 @@ void QObjectCase::onMouseMove(int x, int y) {
void QObjectCase::onClick(int x, int y) {
switch (_clickedObjIndex) {
case kChapayevButton:
- g_vm->getQSystem()->setChapayev();
+ g_vm->getQSystem()->setCursorAction(kActionObjUseChapayev);
break;
case kPanelButton:
g_vm->getQSystem()->togglePanelInterface();
diff --git a/engines/petka/q_system.cpp b/engines/petka/q_system.cpp
index a7c617bedf..a5cff6dc76 100644
--- a/engines/petka/q_system.cpp
+++ b/engines/petka/q_system.cpp
@@ -182,9 +182,10 @@ void QSystem::toggleMapInterface() {
}
}
-void QSystem::setChapayev() {
- if (getStar()->_isActive && _currInterface == _mainInterface.get() && getChapay()->_isShown) {
- getCursor()->setAction(kActionObjUseChapayev);
+void QSystem::setCursorAction(int action) {
+ if (getStar()->_isActive && _currInterface == _mainInterface.get()) {
+ if (action != kActionObjUseChapayev || getChapay()->_isShown)
+ getCursor()->setAction(action);
}
}
@@ -313,9 +314,75 @@ void QSystem::onEvent(const Common::Event &event) {
case Common::EVENT_RBUTTONDOWN:
_currInterface->onRightButtonDown(event.mouse);
break;
+ case Common::EVENT_KEYDOWN:
+ switch (event.kbd.keycode) {
+ case Common::KEYCODE_1:
+ case Common::KEYCODE_l:
+ setCursorAction(kActionLook);
+ break;
+ case Common::KEYCODE_2:
+ case Common::KEYCODE_w:
+ setCursorAction(kActionWalk);
+ break;
+ case Common::KEYCODE_3:
+ case Common::KEYCODE_g:
+ setCursorAction(kActionUse);
+ break;
+ case Common::KEYCODE_4:
+ case Common::KEYCODE_u:
+ setCursorAction(kActionTake);
+ break;
+ case Common::KEYCODE_5:
+ case Common::KEYCODE_t:
+ setCursorAction(kActionTalk);
+ break;
+ case Common::KEYCODE_6:
+ case Common::KEYCODE_c:
+ setCursorAction(kActionObjUseChapayev);
+ break;
+ case Common::KEYCODE_i:
+ toggleCase();
+ break;
+ case Common::KEYCODE_TAB:
+ case Common::KEYCODE_m:
+ toggleMapInterface();
+ break;
+ case Common::KEYCODE_o:
+ togglePanelInterface();
+ break;
+ case Common::KEYCODE_ESCAPE:
+ goPrevInterface();
+ break;
+ case Common::KEYCODE_F2:
+ _saveLoadInterface->start(kSaveMode);
+ break;
+ case Common::KEYCODE_F3:
+ _saveLoadInterface->start(kLoadMode);
+ break;
+ case Common::KEYCODE_r:
+ if (event.kbd.flags & Common::KBD_ALT) {
+ _mainInterface->_dialog.fixCursor(); // Buggy in original
+ }
+ break;
+ default:
+ break;
+ }
default:
break;
}
}
+void QSystem::goPrevInterface() {
+ getCase()->show(0);
+ if (_currInterface != _startupInterface.get() && _currInterface != _sequenceInterface.get())
+ _currInterface->stop();
+}
+
+void QSystem::toggleCase() {
+ if (_currInterface == _mainInterface.get() && getStar()->_isActive) {
+ QObjectCase *obj = getCase();
+ obj->show(obj->_isShown == 0);
+ }
+}
+
}
diff --git a/engines/petka/q_system.h b/engines/petka/q_system.h
index b68655e3f6..5709c01258 100644
--- a/engines/petka/q_system.h
+++ b/engines/petka/q_system.h
@@ -74,8 +74,11 @@ public:
void togglePanelInterface();
void toggleMapInterface();
+ void toggleCase();
- void setChapayev();
+ void goPrevInterface();
+
+ void setCursorAction(int action);
void onEvent(const Common::Event &event);
More information about the Scummvm-git-logs
mailing list