[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