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.
@@ -40,18 +40,21 @@ export default class AudioRenderer extends RendererBase {
40
40
  }
41
41
  });
42
42
 
43
- this.game.assets.getAsset(this.model.url.get(), (audio) => {
44
- if (!this.audio) {
45
- console.log('audio loaded after renderer was deactivated');
46
- return;
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.getAsset(this.model.image.uri.get(), (img) => {
53
- this.image = img;
54
- this.model.image.size.set(img.width, img.height);
55
- this.renderImage();
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.getAsset(uri, (img) => {
37
- this.container = img.cloneNode(true);
38
- this.dom.appendChild(this.container);
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
  }
@@ -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());
@@ -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.getAsset(url, onLoaded);
161
+ this.loadAsset(url, onLoaded);
162
162
  }
163
163
 
164
164
  loadAudio(materialId, onLoaded) {
165
- this.getAsset(`mat/${materialId}`, onLoaded);
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.getAsset(r));
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.getAsset(r, () => undefined));
179
+ resources.forEach((r) => this.loadAsset(r, () => undefined));
180
180
  }
181
181
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wgge",
3
- "version": "1.0.3",
3
+ "version": "1.0.4",
4
4
  "description": "Web GL Game Engine",
5
5
  "main": "index.js",
6
6
  "devDependencies": {
package/style/style.less CHANGED
@@ -1,3 +1,2 @@
1
1
  @import "basic/utilities.less";
2
- @import "basic/editor.less";
3
2
  @import "basic/game.less";
@@ -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
- }
@@ -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
- }