author | unC0Rr |
Mon, 20 May 2024 14:58:30 +0200 | |
changeset 16045 | 4933920eba89 |
parent 16041 | caba603f461f |
child 16046 | e8afb1bf2779 |
permissions | -rw-r--r-- |
16041
caba603f461f
Allow to move camera by dragging mouse cursor over game field
unC0Rr
parents:
15919
diff
changeset
|
1 |
import QtQuick |
14164 | 2 |
import Hedgewars.Engine 1.0 |
12854 | 3 |
|
4 |
Page1Form { |
|
16045 | 5 |
property HWEngine hwEngine |
6 |
property var keyBindings: ({ |
|
7 |
"long": { |
|
8 |
[Qt.Key_Space]: Engine.Attack, |
|
9 |
[Qt.Key_Up]: Engine.ArrowUp, |
|
10 |
[Qt.Key_Right]: Engine.ArrowRight, |
|
11 |
[Qt.Key_Down]: Engine.ArrowDown, |
|
12 |
[Qt.Key_Left]: Engine.ArrowLeft, |
|
13 |
[Qt.Key_Shift]: Engine.Precision |
|
14 |
}, |
|
15 |
"simple": { |
|
16 |
[Qt.Key_Tab]: Engine.SwitchHedgehog, |
|
17 |
[Qt.Key_Enter]: Engine.LongJump, |
|
18 |
[Qt.Key_Backspace]: Engine.HighJump, |
|
19 |
[Qt.Key_Y]: Engine.Accept, |
|
20 |
[Qt.Key_N]: Engine.Deny |
|
21 |
} |
|
22 |
}) |
|
23 |
property NetSession netSession |
|
24 |
||
16041
caba603f461f
Allow to move camera by dragging mouse cursor over game field
unC0Rr
parents:
15919
diff
changeset
|
25 |
focus: true |
14875
aed75d439027
Implement external events approach to input user actions into engine.
unc0rr
parents:
14393
diff
changeset
|
26 |
|
16045 | 27 |
Component.onCompleted: { |
28 |
hwEngine = hwEngineComponent.createObject(); |
|
29 |
} |
|
30 |
Keys.onPressed: event => { |
|
31 |
if (event.isAutoRepeat) { |
|
32 |
return; |
|
33 |
} |
|
34 |
let action = keyBindings["simple"][event.key]; |
|
35 |
if (action !== undefined) { |
|
36 |
gameView.engineInstance.simpleEvent(action); |
|
37 |
event.accepted = true; |
|
38 |
return; |
|
39 |
} |
|
40 |
action = keyBindings["long"][event.key]; |
|
41 |
if (action !== undefined) { |
|
42 |
gameView.engineInstance.longEvent(action, Engine.Set); |
|
43 |
event.accepted = true; |
|
44 |
} |
|
45 |
} |
|
46 |
Keys.onReleased: event => { |
|
47 |
if (event.isAutoRepeat) { |
|
48 |
return; |
|
49 |
} |
|
50 |
const action = keyBindings["long"][event.key]; |
|
51 |
if (action !== undefined) { |
|
52 |
gameView.engineInstance.longEvent(action, Engine.Unset); |
|
53 |
event.accepted = true; |
|
54 |
} |
|
55 |
} |
|
56 |
netButton.onClicked: { |
|
57 |
netSession = netSessionComponent.createObject(); |
|
58 |
netSession.open(); |
|
59 |
} |
|
15919 | 60 |
|
16041
caba603f461f
Allow to move camera by dragging mouse cursor over game field
unC0Rr
parents:
15919
diff
changeset
|
61 |
Component { |
caba603f461f
Allow to move camera by dragging mouse cursor over game field
unC0Rr
parents:
15919
diff
changeset
|
62 |
id: hwEngineComponent |
14392
90bd2c331703
Add possibility to instantiate HWEngine objects from QML, reorganize work with preview
unC0Rr
parents:
14319
diff
changeset
|
63 |
|
16041
caba603f461f
Allow to move camera by dragging mouse cursor over game field
unC0Rr
parents:
15919
diff
changeset
|
64 |
HWEngine { |
16045 | 65 |
dataPath: "../share/hedgewars/Data" |
16041
caba603f461f
Allow to move camera by dragging mouse cursor over game field
unC0Rr
parents:
15919
diff
changeset
|
66 |
engineLibrary: "../rust/lib-hedgewars-engine/target/debug/libhedgewars_engine.so" |
caba603f461f
Allow to move camera by dragging mouse cursor over game field
unC0Rr
parents:
15919
diff
changeset
|
67 |
previewAcceptor: PreviewAcceptor |
16045 | 68 |
|
16041
caba603f461f
Allow to move camera by dragging mouse cursor over game field
unC0Rr
parents:
15919
diff
changeset
|
69 |
onPreviewImageChanged: previewImage.source = "image://preview/image" |
caba603f461f
Allow to move camera by dragging mouse cursor over game field
unC0Rr
parents:
15919
diff
changeset
|
70 |
onPreviewIsRendering: previewImage.source = "qrc:/res/iconTime.png" |
14392
90bd2c331703
Add possibility to instantiate HWEngine objects from QML, reorganize work with preview
unC0Rr
parents:
14319
diff
changeset
|
71 |
} |
16041
caba603f461f
Allow to move camera by dragging mouse cursor over game field
unC0Rr
parents:
15919
diff
changeset
|
72 |
} |
14392
90bd2c331703
Add possibility to instantiate HWEngine objects from QML, reorganize work with preview
unC0Rr
parents:
14319
diff
changeset
|
73 |
|
16041
caba603f461f
Allow to move camera by dragging mouse cursor over game field
unC0Rr
parents:
15919
diff
changeset
|
74 |
Component { |
caba603f461f
Allow to move camera by dragging mouse cursor over game field
unC0Rr
parents:
15919
diff
changeset
|
75 |
id: netSessionComponent |
14936 | 76 |
|
16041
caba603f461f
Allow to move camera by dragging mouse cursor over game field
unC0Rr
parents:
15919
diff
changeset
|
77 |
NetSession { |
caba603f461f
Allow to move camera by dragging mouse cursor over game field
unC0Rr
parents:
15919
diff
changeset
|
78 |
nickname: "test0272" |
caba603f461f
Allow to move camera by dragging mouse cursor over game field
unC0Rr
parents:
15919
diff
changeset
|
79 |
url: "hwnet://gameserver.hedgewars.org:46632" |
14936 | 80 |
} |
16041
caba603f461f
Allow to move camera by dragging mouse cursor over game field
unC0Rr
parents:
15919
diff
changeset
|
81 |
} |
14936 | 82 |
|
16045 | 83 |
tickButton { |
84 |
onClicked: { |
|
85 |
tickButton.visible = false; |
|
86 |
gameView.tick(100); |
|
87 |
} |
|
16041
caba603f461f
Allow to move camera by dragging mouse cursor over game field
unC0Rr
parents:
15919
diff
changeset
|
88 |
} |
14392
90bd2c331703
Add possibility to instantiate HWEngine objects from QML, reorganize work with preview
unC0Rr
parents:
14319
diff
changeset
|
89 |
|
16041
caba603f461f
Allow to move camera by dragging mouse cursor over game field
unC0Rr
parents:
15919
diff
changeset
|
90 |
gameButton { |
caba603f461f
Allow to move camera by dragging mouse cursor over game field
unC0Rr
parents:
15919
diff
changeset
|
91 |
visible: !gameView.engineInstance |
16045 | 92 |
|
16041
caba603f461f
Allow to move camera by dragging mouse cursor over game field
unC0Rr
parents:
15919
diff
changeset
|
93 |
onClicked: { |
16045 | 94 |
const engineInstance = hwEngine.runQuickGame(); |
95 |
gameView.engineInstance = engineInstance; |
|
16041
caba603f461f
Allow to move camera by dragging mouse cursor over game field
unC0Rr
parents:
15919
diff
changeset
|
96 |
} |
caba603f461f
Allow to move camera by dragging mouse cursor over game field
unC0Rr
parents:
15919
diff
changeset
|
97 |
} |
16045 | 98 |
|
16041
caba603f461f
Allow to move camera by dragging mouse cursor over game field
unC0Rr
parents:
15919
diff
changeset
|
99 |
button1 { |
caba603f461f
Allow to move camera by dragging mouse cursor over game field
unC0Rr
parents:
15919
diff
changeset
|
100 |
visible: !gameView.engineInstance |
16045 | 101 |
|
16041
caba603f461f
Allow to move camera by dragging mouse cursor over game field
unC0Rr
parents:
15919
diff
changeset
|
102 |
onClicked: { |
16045 | 103 |
hwEngine.getPreview(); |
14875
aed75d439027
Implement external events approach to input user actions into engine.
unc0rr
parents:
14393
diff
changeset
|
104 |
} |
16041
caba603f461f
Allow to move camera by dragging mouse cursor over game field
unC0Rr
parents:
15919
diff
changeset
|
105 |
} |
16045 | 106 |
|
16041
caba603f461f
Allow to move camera by dragging mouse cursor over game field
unC0Rr
parents:
15919
diff
changeset
|
107 |
preview { |
caba603f461f
Allow to move camera by dragging mouse cursor over game field
unC0Rr
parents:
15919
diff
changeset
|
108 |
visible: !gameView.engineInstance |
caba603f461f
Allow to move camera by dragging mouse cursor over game field
unC0Rr
parents:
15919
diff
changeset
|
109 |
} |
caba603f461f
Allow to move camera by dragging mouse cursor over game field
unC0Rr
parents:
15919
diff
changeset
|
110 |
|
caba603f461f
Allow to move camera by dragging mouse cursor over game field
unC0Rr
parents:
15919
diff
changeset
|
111 |
gameMouseArea { |
16045 | 112 |
onPositionChanged: event => { |
113 |
gameView.engineInstance.moveCamera(Qt.point(event.x - gameMouseArea.lastPoint.x, event.y - gameMouseArea.lastPoint.y)); |
|
114 |
gameMouseArea.lastPoint = Qt.point(event.x, event.y); |
|
115 |
} |
|
16041
caba603f461f
Allow to move camera by dragging mouse cursor over game field
unC0Rr
parents:
15919
diff
changeset
|
116 |
onPressed: event => { |
16045 | 117 |
gameMouseArea.lastPoint = Qt.point(event.x, event.y); |
118 |
} |
|
16041
caba603f461f
Allow to move camera by dragging mouse cursor over game field
unC0Rr
parents:
15919
diff
changeset
|
119 |
} |
12854 | 120 |
} |