This repository has been archived by the owner on Jan 7, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathevents.js
105 lines (94 loc) · 2.94 KB
/
events.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
/*
* GameIndus - A free online platform to imagine, create and publish your game with ease!
*
* GameIndus old 2d engine
* Copyright (c) 2015-2016 Maxime Malgorn (Utarwyn)
* <https://github.com/GameIndus/engine-2d-old>
*
*/
function eventListener(){
var __listeners = new Array(), u = 'undefined', f = 'function';
this.on = function(type, fn){
if(typeof(fn) === f){
if(typeof(__listeners[type]) === u){
__listeners[type] = new Array();
}
__listeners[type].push(fn);
}
}
this.removeListener = function(type, fn){
if(typeof(__listeners[type]) !== u){
for(var i=0, j=__listeners[type].length; i<j; ++i){
if(typeof(fn) === f && __listeners[type][i] === fn){
__listeners[type].splice(i, 1);
}
}
//At the end, we clear unused listeners array type
for(var j=0; j<__listeners.length; ++j){
if(__listeners[j].length < 1){
__listeners.splice(j, 1);
}
}
}
}
this.dispatch = function(type, data){
var f = __listeners[type];
if(typeof(f) !== u){
for(var i=0, l=f.length; i<l; ++i){
var func = f[i](data);
return func;
}
}else{
return true;
}
}
this.reset = function(){
__listeners = new Array();
}
}
/*
* Hide window event
*/
var visibilityChange;
if (typeof document.hidden !== 'undefined') {
visibilityChange = 'visibilitychange';
}
else if (typeof document.mozHidden !== 'undefined') {
visibilityChange = 'mozvisibilitychange';
}
else if (typeof document.msHidden !== 'undefined') {
visibilityChange = 'msvisibilitychange';
}
else if (typeof document.webkitHidden !== 'undefined') {
visibilityChange = 'webkitvisibilitychange';
}
document.addEventListener(visibilityChange, function(e) {
if(Game == null) return false;
if(Game.paused)
Game.paused = false;
else
Game.paused = true;
Input.keyDownsActives = {};
Input.mouseDownsActives = {};
if(Game != null && Game.getCurrentScene() != null){
if(Game.getCurrentScene().gameobjects != null){
// For each gameobject with PlayerBehavior -> clear keysDown array
for(var i=0;i<Game.getCurrentScene().gameobjects.length;i++){
var go = Game.getCurrentScene().gameobjects[i];
if(go.behavior)
go.behavior.keysDown = [];
}
}
}
if(!document.hidden && Game.loader != null && !Game.loader.isLoaded) Game.paused = false;
}, false);
/**
* Detect errors
*/
window.onerror = function(error) {
if(Game == null) return false;
if(Game.errorView != null && !Game.errorView.enabled){
log("Errors detected. Enter in error mode. See below \\/", "error");
Game.errorView.enabled = true;
}
};