Skip to content

Commit 048e11b

Browse files
committed
New Loader Events, and sorted out the const assignments.
1 parent 8719bcc commit 048e11b

10 files changed

Lines changed: 69 additions & 33 deletions

File tree

v3/src/checksum.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
var CHECKSUM = {
2-
build: 'ada471e0-bbbc-11e6-8998-8541b7b364d1'
2+
build: 'b52ef110-bbc6-11e6-b803-3d5519c57e8c'
33
};
44
module.exports = CHECKSUM;

v3/src/events/EventBinding.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,8 @@ EventBinding.prototype = {
131131

132132
dispatch: function (event)
133133
{
134+
console.log('EventBinding.dispatch', this.active.length);
135+
134136
if (this.state !== CONST.DISPATCHER_IDLE)
135137
{
136138
throw new Error('Error: Failed to execute \'EventDispatcher.dispatch\' on \'' + this.type + '\': The event is already being dispatched.');

v3/src/events/EventDispatcher.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ EventDispatcher.prototype = {
4040
binding.add(listener, priority, false);
4141
}
4242

43+
console.log('on', binding);
44+
4345
return this;
4446
},
4547

@@ -120,6 +122,8 @@ EventDispatcher.prototype = {
120122

121123
_dispatchHandler: function (event)
122124
{
125+
console.log('_dispatchHandler', event.type);
126+
123127
event.reset(this);
124128

125129
// Pass the event through the filters first
@@ -140,6 +144,9 @@ EventDispatcher.prototype = {
140144

141145
var binding = this.getBinding(event.type);
142146

147+
console.log('_dispatchHandler', binding);
148+
console.dir(this.bindings);
149+
143150
if (binding)
144151
{
145152
binding.dispatch(event);

v3/src/loader/BaseLoader.js

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11

2-
var FILE_CONST = require('./const');
2+
var CONST = require('./const');
33
var Set = require('../structs/Set');
44
var XHRSettings = require('./XHRSettings');
5-
var Events = require('./events/');
5+
var Event = require('./events/');
6+
var EventDispatcher = require('../events/EventDispatcher');
67

78
var BaseLoader = function ()
89
{
@@ -16,6 +17,7 @@ var BaseLoader = function ()
1617
// 6) Multi File support (atlas + data)
1718
// 7) Atlas Loader
1819

20+
this.events = new EventDispatcher();
1921

2022
// Move to a 'setURL' method?
2123
this.baseURL = '';
@@ -37,7 +39,7 @@ var BaseLoader = function ()
3739

3840
this.storage = new Set();
3941

40-
this._state = 'PENDING';
42+
this._state = CONST.LOADER_IDLE;
4143
};
4244

4345
BaseLoader.prototype.contructor = BaseLoader;
@@ -73,13 +75,13 @@ BaseLoader.prototype = {
7375
// Is the Loader actively loading (or processing loaded files)
7476
isLoading: function ()
7577
{
76-
return (this._state === 'LOADING' || this._state === 'PROCESSING');
78+
return (this._state === CONST.LOADER_LOADING || this._state === CONST.LOADER_PROCESSING);
7779
},
7880

7981
// Is the Loader ready to start a new load?
8082
isReady: function ()
8183
{
82-
return (this._state === 'PENDING' || this._state === 'COMPLETE' || this._state === 'FAILED');
84+
return (this._state === CONST.LOADER_IDLE || this._state === CONST.LOADER_COMPLETE || this._state === CONST.LOADER_FAILED);
8385
},
8486

8587
start: function ()
@@ -91,15 +93,15 @@ BaseLoader.prototype = {
9193
return;
9294
}
9395

94-
this.state.sys.events.dispatch(new Events.LOADER_START_EVENT(this));
96+
this.events.dispatch(new Event.LOADER_START_EVENT(this));
9597

9698
if (this.list.size === 0)
9799
{
98100
this.finishedLoading();
99101
}
100102
else
101103
{
102-
// this.state = LOADING;
104+
this._state = CONST.LOADER_LOADING;
103105

104106
this.failed.clear();
105107
this.inflight.clear();
@@ -124,7 +126,7 @@ BaseLoader.prototype = {
124126

125127
this.list.each(function (file)
126128
{
127-
if (file.state === FILE_CONST.PENDING && _this.inflight.size < _this.maxParallelDownloads)
129+
if (file.state === CONST.FILE_PENDING && _this.inflight.size < _this.maxParallelDownloads)
128130
{
129131
console.log('ADDED TO QUEUE:', file.key);
130132

@@ -193,7 +195,7 @@ BaseLoader.prototype = {
193195
{
194196
console.log('BaseLoader.finishedLoading PROCESSING');
195197

196-
this.state = 'PROCESSING';
198+
this._state = CONST.LOADER_PROCESSING;
197199

198200
var storage = this.storage;
199201

@@ -223,11 +225,11 @@ BaseLoader.prototype = {
223225

224226
console.log('Loader Complete. Loaded:', storage.size, 'Failed:', this.failed.size);
225227

226-
console.log('BaseLoader COMPLETE');
228+
console.log('BaseLoader COMPLETE - dispatching event');
227229

228-
this.state = 'COMPLETE';
230+
this._state = CONST.LOADER_COMPLETE;
229231

230-
// Dispatch 'on complete' signals now
232+
this.events.dispatch(new Event.LOADER_COMPLETE_EVENT(this));
231233
},
232234

233235
getLoadedFiles (group = '', output = []) {
@@ -260,13 +262,13 @@ BaseLoader.prototype = {
260262
this.path = '';
261263
this.baseURL = '';
262264

263-
this.state = 'PENDING';
265+
this._state = CONST.LOADER_IDLE;
264266
},
265267

266268
destroy: function ()
267269
{
268270
this.reset();
269-
this.state = 'DESTROYED';
271+
this._state = CONST.LOADER_DESTROYED;
270272
}
271273

272274
};

v3/src/loader/File.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
var GetURL = require('./GetURL');
2-
var FILE_CONST = require('./const');
2+
var CONST = require('./const');
33
var XHRLoader = require('./XHRLoader');
44
var XHRSettings = require('./XHRSettings');
55

@@ -21,7 +21,7 @@ var File = function (type, key, url, responseType)
2121

2222
this.xhrLoader = null;
2323

24-
this.state = FILE_CONST.PENDING;
24+
this.state = CONST.FILE_PENDING;
2525

2626
// Set by onProgress (if loading via XHR)
2727
this.bytesTotal = 0;

v3/src/loader/const.js

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,18 @@
11
var FILE_CONST = {
22

3-
PENDING: 0, // file is in the load queue but not yet started
4-
LOADING: 1, // file has been started to load by the loader (onLoad called)
5-
LOADED: 2, // file has loaded successfully, awaiting processing
6-
FAILED: 3, // file failed to load
7-
PROCESSING: 4, // file is being processed (onProcess callback)
8-
COMPLETE: 5, // file has finished processing
9-
DESTROYED: 6 // file has been destroyed
3+
LOADER_IDLE: 0,
4+
LOADER_LOADING: 1,
5+
LOADER_PROCESSING: 2,
6+
LOADER_COMPLETE: 3,
7+
LOADER_DESTROYED: 4,
8+
9+
FILE_PENDING: 5, // file is in the load queue but not yet started
10+
FILE_LOADING: 6, // file has been started to load by the loader (onLoad called)
11+
FILE_LOADED: 7, // file has loaded successfully, awaiting processing
12+
FILE_FAILED: 8, // file failed to load
13+
FILE_PROCESSING: 9, // file is being processed (onProcess callback)
14+
FILE_COMPLETE: 10, // file has finished processing
15+
FILE_DESTROYED: 11 // file has been destroyed
1016

1117
};
1218

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
var Event = require('../../events/Event');
2+
3+
var LoaderCompleteEvent = function (loader)
4+
{
5+
Event.call(this, 'LOADER_COMPLETE_EVENT');
6+
7+
this.loader = loader;
8+
};
9+
10+
LoaderCompleteEvent.prototype = Object.create(Event.prototype);
11+
LoaderCompleteEvent.prototype.constructor = LoaderCompleteEvent;
12+
13+
module.exports = LoaderCompleteEvent;

v3/src/loader/events/LoaderStartEvent.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ var Event = require('../../events/Event');
22

33
var LoaderStartEvent = function (loader)
44
{
5-
Event.call(this);
5+
Event.call(this, 'LOADER_START_EVENT');
66

77
this.loader = loader;
88
};

v3/src/loader/events/index.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
module.exports = {
22

3-
LOADER_START_EVENT: require('./LoaderStartEvent')
3+
LOADER_START_EVENT: require('./LoaderStartEvent'),
4+
LOADER_COMPLETE_EVENT: require('./LoaderCompleteEvent')
45

56
};

v3/src/state/StateManager.js

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ var State = require('./State');
1010
var Settings = require('./Settings');
1111
var Systems = require('./Systems');
1212
var GetObjectValue = require('../utils/GetObjectValue');
13+
var LoaderEvent = require('../loader/events/');
1314

1415
/**
1516
* The State Manager is responsible for loading, setting up and switching game states.
@@ -360,33 +361,37 @@ StateManager.prototype = {
360361
// Is the loader empty?
361362
if (state.sys.load.list.size === 0)
362363
{
363-
console.log('empty queue');
364+
console.log('Loader: Empty queue');
364365
this.startCreate(state);
365366
}
366367
else
367368
{
368-
console.log('load start');
369+
console.log('-------------------> Loader: Start');
369370

370371
// Start the loader going as we have something in the queue
371-
// state.load.onLoadComplete.addOnce(this.loadComplete, this, 0, state);
372+
373+
state.sys.load.events.on('LOADER_COMPLETE_EVENT', this.loadComplete.bind(this));
372374

373375
state.sys.load.start();
374376
}
375377
}
376378
else
377379
{
378-
console.log('no preload');
379-
380380
// No preload? Then there was nothing to load either
381381
this.startCreate(state);
382382
}
383383

384384
}
385385
},
386386

387-
loadComplete: function (state)
387+
loadComplete: function (event)
388388
{
389-
console.log('loadComplete');
389+
console.log('Loader: Complete');
390+
console.log(arguments);
391+
392+
var state = event.loader.state;
393+
394+
console.log(state);
390395

391396
// Make sure to do load-update one last time before state is set to _created
392397

0 commit comments

Comments
 (0)