--- a/qmlfrontend/Page1.qml Sun May 19 15:55:26 2024 +0200
+++ b/qmlfrontend/Page1.qml Mon May 20 14:58:30 2024 +0200
@@ -2,18 +2,70 @@
import Hedgewars.Engine 1.0
Page1Form {
+ property HWEngine hwEngine
+ property var keyBindings: ({
+ "long": {
+ [Qt.Key_Space]: Engine.Attack,
+ [Qt.Key_Up]: Engine.ArrowUp,
+ [Qt.Key_Right]: Engine.ArrowRight,
+ [Qt.Key_Down]: Engine.ArrowDown,
+ [Qt.Key_Left]: Engine.ArrowLeft,
+ [Qt.Key_Shift]: Engine.Precision
+ },
+ "simple": {
+ [Qt.Key_Tab]: Engine.SwitchHedgehog,
+ [Qt.Key_Enter]: Engine.LongJump,
+ [Qt.Key_Backspace]: Engine.HighJump,
+ [Qt.Key_Y]: Engine.Accept,
+ [Qt.Key_N]: Engine.Deny
+ }
+ })
+ property NetSession netSession
+
focus: true
- property HWEngine hwEngine
- property NetSession netSession
+ Component.onCompleted: {
+ hwEngine = hwEngineComponent.createObject();
+ }
+ Keys.onPressed: event => {
+ if (event.isAutoRepeat) {
+ return;
+ }
+ let action = keyBindings["simple"][event.key];
+ if (action !== undefined) {
+ gameView.engineInstance.simpleEvent(action);
+ event.accepted = true;
+ return;
+ }
+ action = keyBindings["long"][event.key];
+ if (action !== undefined) {
+ gameView.engineInstance.longEvent(action, Engine.Set);
+ event.accepted = true;
+ }
+ }
+ Keys.onReleased: event => {
+ if (event.isAutoRepeat) {
+ return;
+ }
+ const action = keyBindings["long"][event.key];
+ if (action !== undefined) {
+ gameView.engineInstance.longEvent(action, Engine.Unset);
+ event.accepted = true;
+ }
+ }
+ netButton.onClicked: {
+ netSession = netSessionComponent.createObject();
+ netSession.open();
+ }
Component {
id: hwEngineComponent
HWEngine {
+ dataPath: "../share/hedgewars/Data"
engineLibrary: "../rust/lib-hedgewars-engine/target/debug/libhedgewars_engine.so"
- dataPath: "../share/hedgewars/Data"
previewAcceptor: PreviewAcceptor
+
onPreviewImageChanged: previewImage.source = "image://preview/image"
onPreviewIsRendering: previewImage.source = "qrc:/res/iconTime.png"
}
@@ -28,58 +80,41 @@
}
}
- Component.onCompleted: {
- hwEngine = hwEngineComponent.createObject()
+ tickButton {
+ onClicked: {
+ tickButton.visible = false;
+ gameView.tick(100);
+ }
}
- tickButton {
- onClicked: {
- tickButton.visible = false
- gameView.tick(100)
- }
- }
gameButton {
visible: !gameView.engineInstance
+
onClicked: {
- const engineInstance = hwEngine.runQuickGame()
- gameView.engineInstance = engineInstance
+ const engineInstance = hwEngine.runQuickGame();
+ gameView.engineInstance = engineInstance;
}
}
+
button1 {
visible: !gameView.engineInstance
+
onClicked: {
- hwEngine.getPreview()
+ hwEngine.getPreview();
}
}
+
preview {
visible: !gameView.engineInstance
}
- netButton.onClicked: {
- netSession = netSessionComponent.createObject()
- netSession.open()
- }
-
- Keys.onPressed: {
- if (event.key === Qt.Key_Enter)
- gameView.engineInstance.longEvent(Engine.Attack, Engine.Set)
- }
-
- Keys.onReleased: {
- if (event.key === Qt.Key_Enter)
- gameView.engineInstance.longEvent(Engine.Attack, Engine.Unset)
- }
-
gameMouseArea {
+ onPositionChanged: event => {
+ gameView.engineInstance.moveCamera(Qt.point(event.x - gameMouseArea.lastPoint.x, event.y - gameMouseArea.lastPoint.y));
+ gameMouseArea.lastPoint = Qt.point(event.x, event.y);
+ }
onPressed: event => {
- gameMouseArea.lastPoint = Qt.point(event.x, event.y)
- }
- onPositionChanged: event => {
- gameView.engineInstance.moveCamera(
- Qt.point(event.x - gameMouseArea.lastPoint.x,
- event.y - gameMouseArea.lastPoint.y))
-
- gameMouseArea.lastPoint = Qt.point(event.x, event.y)
- }
+ gameMouseArea.lastPoint = Qt.point(event.x, event.y);
+ }
}
}