diff -r 0e90bdfc2642 -r 4933920eba89 qmlfrontend/Page1.qml --- 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); + } } }