wgge 1.0.3 → 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/core/audio/AudioRenderer.js +14 -11
- package/core/renderer/canvas/ImageCanvasRenderer.js +8 -5
- package/core/renderer/dom/ImageDomRenderer.js +7 -4
- package/game/GameController.js +0 -2
- package/game/GameModel.js +0 -7
- package/game/GameRenderer.js +0 -13
- package/game/resources/assets/AssetCache.js +4 -4
- package/package.json +1 -1
- package/style/style.less +0 -1
- package/game/save/editor/SaveGameEditorRenderer.js +0 -17
- package/style/basic/editor.less +0 -290
|
@@ -40,18 +40,21 @@ export default class AudioRenderer extends RendererBase {
|
|
|
40
40
|
}
|
|
41
41
|
});
|
|
42
42
|
|
|
43
|
-
this.game.assets.
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
43
|
+
this.game.assets.loadAsset(
|
|
44
|
+
this.model.url.get(),
|
|
45
|
+
(audio) => {
|
|
46
|
+
if (!this.audio) {
|
|
47
|
+
console.log('audio loaded after renderer was deactivated');
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
this.audio.addEventListener('canplaythrough', () => {
|
|
52
|
+
this.updatePlaying();
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
this.audio.src = audio.src;
|
|
47
56
|
}
|
|
48
|
-
|
|
49
|
-
this.audio.addEventListener('canplaythrough', () => {
|
|
50
|
-
this.updatePlaying();
|
|
51
|
-
});
|
|
52
|
-
|
|
53
|
-
this.audio.src = audio.src;
|
|
54
|
-
});
|
|
57
|
+
);
|
|
55
58
|
}
|
|
56
59
|
|
|
57
60
|
deactivateInternal() {
|
|
@@ -49,11 +49,14 @@ export default class ImageCanvasRenderer extends CanvasRenderer {
|
|
|
49
49
|
reloadImage() {
|
|
50
50
|
this.image = null;
|
|
51
51
|
if (this.model.image.uri.isEmpty()) return;
|
|
52
|
-
this.game.assets.
|
|
53
|
-
this.image
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
52
|
+
this.game.assets.loadAsset(
|
|
53
|
+
this.model.image.uri.get(),
|
|
54
|
+
(img) => {
|
|
55
|
+
this.image = img;
|
|
56
|
+
this.model.image.size.set(img.width, img.height);
|
|
57
|
+
this.renderImage();
|
|
58
|
+
}
|
|
59
|
+
);
|
|
57
60
|
}
|
|
58
61
|
|
|
59
62
|
}
|
|
@@ -33,9 +33,12 @@ export default class ImageDomRenderer extends DomRenderer {
|
|
|
33
33
|
console.error('Invalid image URI', uri);
|
|
34
34
|
return;
|
|
35
35
|
}
|
|
36
|
-
this.game.assets.
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
36
|
+
this.game.assets.loadAsset(
|
|
37
|
+
uri,
|
|
38
|
+
(img) => {
|
|
39
|
+
this.container = img.cloneNode(true);
|
|
40
|
+
this.dom.appendChild(this.container);
|
|
41
|
+
}
|
|
42
|
+
);
|
|
40
43
|
}
|
|
41
44
|
}
|
package/game/GameController.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import * as localForage from "localforage";
|
|
2
2
|
import ControllerBase from "../core/controller/ControllerBase";
|
|
3
|
-
import EditorController from "../editor/EditorController";
|
|
4
3
|
import ControlsController from "./controls/ControlsController";
|
|
5
4
|
|
|
6
5
|
export default class GameController extends ControllerBase {
|
|
@@ -19,7 +18,6 @@ export default class GameController extends ControllerBase {
|
|
|
19
18
|
this.resourcesTimeOut = null;
|
|
20
19
|
|
|
21
20
|
this.addChild(new ControlsController(this.game, this.model.controls));
|
|
22
|
-
this.addChild(new EditorController(this.game, this.model.editor));
|
|
23
21
|
|
|
24
22
|
this.addAutoEvent(
|
|
25
23
|
window,
|
package/game/GameModel.js
CHANGED
|
@@ -2,7 +2,6 @@ import ObjectModel from "../core/model/ObjectModel";
|
|
|
2
2
|
import Vector2 from "../core/model/vector/Vector2";
|
|
3
3
|
import ControlsModel from "./controls/ControlsModel";
|
|
4
4
|
import ResourcesModel from "./resources/ResourcesModel";
|
|
5
|
-
import EditorModel from "../editor/EditorModel";
|
|
6
5
|
import NullableNode from "../core/model/value/NullableNode";
|
|
7
6
|
import BoolValue from "../core/model/value/BoolValue";
|
|
8
7
|
import GlobalAudioModel from "../core/audio/global/GlobalAudioModel";
|
|
@@ -15,11 +14,6 @@ export default class GameModel extends ObjectModel {
|
|
|
15
14
|
*/
|
|
16
15
|
isInDebugMode;
|
|
17
16
|
|
|
18
|
-
/**
|
|
19
|
-
* @type EditorModel
|
|
20
|
-
*/
|
|
21
|
-
editor;
|
|
22
|
-
|
|
23
17
|
/**
|
|
24
18
|
* @type NullableNode<MenuModel>
|
|
25
19
|
*/
|
|
@@ -59,7 +53,6 @@ export default class GameModel extends ObjectModel {
|
|
|
59
53
|
super(false);
|
|
60
54
|
|
|
61
55
|
this.isInDebugMode = this.addProperty('isInDebugMode', new BoolValue(debugModeEnabled));
|
|
62
|
-
this.editor = this.addProperty('editor', new EditorModel());
|
|
63
56
|
this.menu = this.addProperty('menu', new NullableNode());
|
|
64
57
|
|
|
65
58
|
this.viewBoxSize = this.addProperty('viewBoxSize', new Vector2());
|
package/game/GameRenderer.js
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import DomRenderer from "../core/renderer/dom/DomRenderer";
|
|
2
|
-
import EditorRenderer from "../editor/EditorRenderer";
|
|
3
2
|
import NullableNodeRenderer from "../core/renderer/generic/NullableNodeRenderer";
|
|
4
3
|
import GlobalAudioRenderer from "../core/audio/global/GlobalAudioRenderer";
|
|
5
|
-
import ConditionalNodeRenderer from "../core/renderer/generic/ConditionalNodeRenderer";
|
|
6
4
|
import DOMHelper from "../core/helper/DOMHelper";
|
|
7
5
|
import MainMenuRenderer from "./menu/MainMenuRenderer";
|
|
8
6
|
|
|
@@ -35,15 +33,6 @@ export default class GameRenderer extends DomRenderer {
|
|
|
35
33
|
)
|
|
36
34
|
);
|
|
37
35
|
|
|
38
|
-
this.addChild(
|
|
39
|
-
new ConditionalNodeRenderer(
|
|
40
|
-
this.game,
|
|
41
|
-
this.model.isInDebugMode,
|
|
42
|
-
() => this.model.isInDebugMode.get(),
|
|
43
|
-
() => new EditorRenderer(this.game, this.model.editor, this.editorLayer)
|
|
44
|
-
)
|
|
45
|
-
);
|
|
46
|
-
|
|
47
36
|
this.addAutoEvents(
|
|
48
37
|
this.model.assets,
|
|
49
38
|
['session-finished-loaders-changed', 'session-total-loaders-changed'],
|
|
@@ -68,7 +57,6 @@ export default class GameRenderer extends DomRenderer {
|
|
|
68
57
|
this.saveGameLayer = DOMHelper.createElement(this.container, 'div', 'savegame-layer container container-host');
|
|
69
58
|
this.loadingLayer = DOMHelper.createElement(this.container, 'div', 'loading-layer');
|
|
70
59
|
this.menuLayer = DOMHelper.createElement(this.container, 'div', 'menu-layer');
|
|
71
|
-
this.editorLayer = DOMHelper.createElement(this.container, 'div', 'editor-layer');
|
|
72
60
|
|
|
73
61
|
this.model.assets.preload(this.model.getResourcesForPreload());
|
|
74
62
|
}
|
|
@@ -79,7 +67,6 @@ export default class GameRenderer extends DomRenderer {
|
|
|
79
67
|
this.saveGameLayer = null;
|
|
80
68
|
this.loadingLayer = null;
|
|
81
69
|
this.menuLayer = null;
|
|
82
|
-
this.editorLayer = null;
|
|
83
70
|
}
|
|
84
71
|
|
|
85
72
|
updateLoading() {
|
|
@@ -158,11 +158,11 @@ export default class AssetCache extends NodeWithEvents {
|
|
|
158
158
|
}
|
|
159
159
|
|
|
160
160
|
loadImage(url, onLoaded) {
|
|
161
|
-
this.
|
|
161
|
+
this.loadAsset(url, onLoaded);
|
|
162
162
|
}
|
|
163
163
|
|
|
164
164
|
loadAudio(materialId, onLoaded) {
|
|
165
|
-
this.
|
|
165
|
+
this.loadAsset(`mat/${materialId}`, onLoaded);
|
|
166
166
|
}
|
|
167
167
|
|
|
168
168
|
resetMaterial(materialId) {
|
|
@@ -171,11 +171,11 @@ export default class AssetCache extends NodeWithEvents {
|
|
|
171
171
|
|
|
172
172
|
preload(resources) {
|
|
173
173
|
console.log('Preloading:', resources);
|
|
174
|
-
resources.forEach((r) => this.
|
|
174
|
+
resources.forEach((r) => this.loadAsset(r));
|
|
175
175
|
}
|
|
176
176
|
|
|
177
177
|
load(resources) {
|
|
178
178
|
console.log('Loading:', resources);
|
|
179
|
-
resources.forEach((r) => this.
|
|
179
|
+
resources.forEach((r) => this.loadAsset(r, () => undefined));
|
|
180
180
|
}
|
|
181
181
|
}
|
package/package.json
CHANGED
package/style/style.less
CHANGED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import DomRenderer from "../../../core/renderer/dom/DomRenderer";
|
|
2
|
-
|
|
3
|
-
export default class SaveGameEditorRenderer extends DomRenderer {
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* @type SaveGameModel
|
|
7
|
-
*/
|
|
8
|
-
model;
|
|
9
|
-
|
|
10
|
-
constructor(game, model, dom) {
|
|
11
|
-
super(game, model, dom);
|
|
12
|
-
|
|
13
|
-
this.model = model;
|
|
14
|
-
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
}
|
package/style/basic/editor.less
DELETED
|
@@ -1,290 +0,0 @@
|
|
|
1
|
-
.instant-editor {
|
|
2
|
-
display: block;
|
|
3
|
-
position: static;
|
|
4
|
-
padding: 1px;
|
|
5
|
-
margin: 1px;
|
|
6
|
-
|
|
7
|
-
input[type=text],
|
|
8
|
-
textarea {
|
|
9
|
-
display: block;
|
|
10
|
-
width: 100%;
|
|
11
|
-
margin: auto;
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
.table-lookup {
|
|
16
|
-
background-color: black;
|
|
17
|
-
color: gray;
|
|
18
|
-
|
|
19
|
-
.buttons {
|
|
20
|
-
input {
|
|
21
|
-
margin: 2px !important;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
button {
|
|
25
|
-
background-color: gray !important;
|
|
26
|
-
color: black !important;
|
|
27
|
-
font-weight: normal !important;
|
|
28
|
-
box-shadow: none !important;
|
|
29
|
-
border-radius: 2px !important;
|
|
30
|
-
padding: 2px !important;
|
|
31
|
-
margin: 2px !important;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
.scroll {
|
|
36
|
-
overflow-y: auto;
|
|
37
|
-
overflow-x: hidden;
|
|
38
|
-
max-height: 400px;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
.row {
|
|
42
|
-
display: flex !important;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
tr.active {
|
|
46
|
-
color: white;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
.force-foreground {
|
|
51
|
-
position: fixed;
|
|
52
|
-
z-index: 9999999;
|
|
53
|
-
top: 20%;
|
|
54
|
-
left: 40%;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
.editor-section {
|
|
58
|
-
background-color: black;
|
|
59
|
-
color: gray;
|
|
60
|
-
|
|
61
|
-
button {
|
|
62
|
-
background-color: gray !important;
|
|
63
|
-
color: black !important;
|
|
64
|
-
font-weight: normal !important;
|
|
65
|
-
box-shadow: none !important;
|
|
66
|
-
border-radius: 2px !important;
|
|
67
|
-
padding: 2px !important;
|
|
68
|
-
margin: 2px !important;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
.editor-layer {
|
|
73
|
-
font-family: monospace;
|
|
74
|
-
position: absolute;
|
|
75
|
-
top: 0;
|
|
76
|
-
left: 0;
|
|
77
|
-
max-height: 100%;
|
|
78
|
-
overflow: hidden;
|
|
79
|
-
cursor: default;
|
|
80
|
-
|
|
81
|
-
.editor {
|
|
82
|
-
background-color: transparent;
|
|
83
|
-
font-size: 10pt;
|
|
84
|
-
position: fixed;
|
|
85
|
-
|
|
86
|
-
.bg {
|
|
87
|
-
background-color: black;
|
|
88
|
-
color: gray;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
ul.menu {
|
|
92
|
-
padding: 0;
|
|
93
|
-
margin: 0;
|
|
94
|
-
|
|
95
|
-
a:hover {
|
|
96
|
-
color: lightblue;
|
|
97
|
-
cursor: pointer;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
.active {
|
|
101
|
-
color: white;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
li {
|
|
105
|
-
padding: 4px;
|
|
106
|
-
list-style: none;
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
.buttons {
|
|
111
|
-
display: flex;
|
|
112
|
-
flex-direction: row;
|
|
113
|
-
justify-content: space-between;
|
|
114
|
-
|
|
115
|
-
& > div {
|
|
116
|
-
display: flex;
|
|
117
|
-
flex-direction: row;
|
|
118
|
-
justify-content: start;
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
input {
|
|
122
|
-
margin: @m-1;
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
button {
|
|
127
|
-
background-color: gray;
|
|
128
|
-
color: black;
|
|
129
|
-
border: 0;
|
|
130
|
-
border-radius: 5px;
|
|
131
|
-
cursor: pointer;
|
|
132
|
-
margin: @m-1;
|
|
133
|
-
|
|
134
|
-
&.active {
|
|
135
|
-
background-color: black;
|
|
136
|
-
color: white;
|
|
137
|
-
border: 1px white solid;
|
|
138
|
-
cursor: default;
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
&:hover {
|
|
142
|
-
background-color: lightblue;
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
&.special {
|
|
146
|
-
background-color: @light-brown;
|
|
147
|
-
color: @dark-brown;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
&.red {
|
|
151
|
-
background-color: red;
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
&.blue {
|
|
155
|
-
background-color: lightblue;
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
.dock {
|
|
160
|
-
width: 100%;
|
|
161
|
-
display: flex;
|
|
162
|
-
flex-direction: row;
|
|
163
|
-
align-items: flex-start;
|
|
164
|
-
justify-content: space-between;
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
.table,
|
|
168
|
-
form,
|
|
169
|
-
.item-def {
|
|
170
|
-
border: 1px gray solid;
|
|
171
|
-
border-radius: 5px;
|
|
172
|
-
margin: 10px;
|
|
173
|
-
padding: 10px;
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
.grab-icon {
|
|
177
|
-
cursor: move;
|
|
178
|
-
opacity: 0.5;
|
|
179
|
-
|
|
180
|
-
&::after {
|
|
181
|
-
content: "■";
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
.table .scroll,
|
|
186
|
-
form .scroll {
|
|
187
|
-
display: block;
|
|
188
|
-
overflow-y: auto;
|
|
189
|
-
overflow-x: hidden;
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
.table .scroll {
|
|
193
|
-
max-height: 200px;
|
|
194
|
-
max-width: 700px;
|
|
195
|
-
overflow-x: auto;
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
form .scroll {
|
|
199
|
-
max-height: 563px;
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
table {
|
|
203
|
-
margin-right: 20px;
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
table td {
|
|
207
|
-
border-left: 1px gray solid;
|
|
208
|
-
white-space: nowrap;
|
|
209
|
-
max-height: 1em;
|
|
210
|
-
overflow: hidden;
|
|
211
|
-
text-overflow: ellipsis;
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
table td:last-of-type {
|
|
215
|
-
border-right: 1px gray solid;
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
table tr:hover > td {
|
|
219
|
-
color: lightblue;
|
|
220
|
-
cursor: pointer;
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
table tr.active > td {
|
|
224
|
-
color: white;
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
form .fields .row {
|
|
228
|
-
display: grid;
|
|
229
|
-
grid-template-columns: 1fr 4fr;
|
|
230
|
-
gap: 10px;
|
|
231
|
-
margin-bottom: @m-1;
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
form .fields .row .field {
|
|
235
|
-
display: flex;
|
|
236
|
-
align-content: stretch;
|
|
237
|
-
flex-direction: column;
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
form .fields .row .field.with-lookup {
|
|
241
|
-
flex-direction: row;
|
|
242
|
-
align-items: center;
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
form .fields .row .field.with-lookup .lookup-button {
|
|
246
|
-
margin: 0;
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
form .fields .row input {
|
|
250
|
-
display: block;
|
|
251
|
-
width: auto;
|
|
252
|
-
margin-right: 10px;
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
form .fields .row input[type=checkbox] {
|
|
256
|
-
align-self: start;
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
form .fields .row .vector {
|
|
260
|
-
flex-direction: row;
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
form .fields .row .vector input {
|
|
264
|
-
width: 100px;
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
.battle-menu {
|
|
268
|
-
position: fixed;
|
|
269
|
-
right: 20px;
|
|
270
|
-
top: 20px;
|
|
271
|
-
padding: @m-2;
|
|
272
|
-
|
|
273
|
-
input[type=text] {
|
|
274
|
-
width: 50px;
|
|
275
|
-
}
|
|
276
|
-
|
|
277
|
-
input[type=radio] {
|
|
278
|
-
margin: 0;
|
|
279
|
-
padding: @m-1;
|
|
280
|
-
display: inline-block;
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
label {
|
|
284
|
-
padding: @m-1;
|
|
285
|
-
display: inline-block;
|
|
286
|
-
}
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
}
|
|
290
|
-
}
|