Skip to content

Commit 5e5a5ac

Browse files
committed
Testing out new Bounds component and Class getter mods.
1 parent 8b2b969 commit 5e5a5ac

7 files changed

Lines changed: 148 additions & 20 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: '4d6475f0-fa3c-11e6-ae9b-c374376ab063'
2+
build: '55224080-fa4e-11e6-841c-31e712585627'
33
};
44
module.exports = CHECKSUM;

v3/src/components/Bounds.js

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
2+
// Bounds Component
3+
4+
var Bounds = {
5+
6+
fizzpop: {
7+
atari: true,
8+
model: 520
9+
},
10+
11+
bounds: {
12+
13+
/**
14+
* The amount the Game Object is visually offset from its x coordinate.
15+
* This is the same as `width * anchor.x`.
16+
* It will only be > 0 if anchor.x is not equal to zero.
17+
*
18+
* @property {number} offsetX
19+
* @readOnly
20+
*/
21+
offsetX: {
22+
23+
get: function ()
24+
{
25+
console.log('ox get');
26+
console.log(this);
27+
// return 123;
28+
return this.anchorX * this.width;
29+
}
30+
31+
},
32+
33+
/**
34+
* The amount the Game Object is visually offset from its y coordinate.
35+
* This is the same as `height * anchor.y`.
36+
* It will only be > 0 if anchor.y is not equal to zero.
37+
*
38+
* @property {number} offsetY
39+
* @readOnly
40+
*/
41+
offsetY: {
42+
43+
get: function ()
44+
{
45+
// return 456;
46+
return this.anchorY * this.height;
47+
}
48+
49+
}
50+
51+
}
52+
53+
};
54+
55+
module.exports = Bounds;

v3/src/components/Transform.js

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,6 @@ var Transform = {
2121
anchorX: 0,
2222
anchorY: 0,
2323

24-
offsetX: 0,
25-
offsetY: 0,
26-
2724
scaleX: {
2825

2926
get: function ()

v3/src/components/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ module.exports = {
22

33
Alpha: require('./Alpha'),
44
BlendMode: require('./BlendMode'),
5+
Bounds: require('./Bounds'),
56
Children: require('./Children'),
67
Color: require('./Color'),
78
Data: require('./Data'),

v3/src/gameobjects/image/Image.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,15 @@ var ImageRender = require('./ImageRender');
77
var Image = new Class({
88

99
Mixins: [
10-
Components.Transform,
11-
Components.Texture,
12-
Components.Size,
1310
Components.Alpha,
1411
Components.BlendMode,
12+
Components.Bounds,
13+
Components.GetBounds,
1514
Components.ScaleMode,
15+
Components.Size,
16+
Components.Texture,
17+
Components.Transform,
1618
Components.Visible,
17-
Components.GetBounds,
1819
ImageRender
1920
],
2021

v3/src/gameobjects/index.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
11
// Required, but don't need Phaser level exports
22
// (maybe these should be Phaser export level?)
33

4-
require('./blitter/BlitterFactory');
5-
require('./container/ContainerFactory');
4+
// require('./blitter/BlitterFactory');
5+
// require('./container/ContainerFactory');
66
require('./image/ImageFactory');
7-
require('./sprite/SpriteFactory');
8-
require('./text/BitmapTextFactory');
7+
// require('./sprite/SpriteFactory');
8+
// require('./text/BitmapTextFactory');
99

1010
// Phaser.GameObjects
1111

1212
module.exports = {
1313

1414
Factory: require('./FactoryContainer'),
1515

16-
Blitter: require('./blitter/Blitter'),
17-
Container: require('./container/Container'),
16+
// Blitter: require('./blitter/Blitter'),
17+
// Container: require('./container/Container'),
1818
Image: require('./image/Image'),
19-
Sprite: require('./sprite/Sprite')
19+
// Sprite: require('./sprite/Sprite')
2020

2121
};

v3/src/utils/Class.js

Lines changed: 79 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ function getProperty (definition, k, isClassDescriptor)
1717
def = def.value;
1818
}
1919

20-
// This might be a regular property, or it may be a getter/setter the user defined in a class.
20+
// This might be a regular property, or it may be a getter / setter the user defined in a class.
2121
if (def && hasGetterOrSetter(def))
2222
{
2323
if (typeof def.enumerable === 'undefined')
@@ -34,7 +34,14 @@ function getProperty (definition, k, isClassDescriptor)
3434
}
3535
else
3636
{
37-
return false;
37+
// if (typeof definition[k] === 'object')
38+
// {
39+
// return -1;
40+
// }
41+
// else
42+
// {
43+
return false;
44+
// }
3845
}
3946
}
4047

@@ -60,7 +67,7 @@ function hasNonConfigurable (obj, k)
6067
return false;
6168
}
6269

63-
function extend (ctor, definition, isClassDescriptor, extend)
70+
function extend (ctor, definition, isClassDescriptor, extendCallback)
6471
{
6572
for (var k in definition)
6673
{
@@ -69,13 +76,78 @@ function extend (ctor, definition, isClassDescriptor, extend)
6976
continue;
7077
}
7178

79+
if (typeof definition[k] === 'object')
80+
{
81+
// Here goes nothing ...
82+
extend(ctor, def, false, extendCallback);
83+
}
84+
7285
var def = getProperty(definition, k, isClassDescriptor);
7386

74-
if (def !== false)
87+
// Object ...
88+
89+
if (def === -1)
90+
{
91+
console.log(k, def);
92+
93+
// Iterate the object, and see if any children are getters / setters
94+
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty
95+
96+
def = definition[k];
97+
98+
var entry = {};
99+
100+
entry[k] = {};
101+
102+
// ctor.prototype[k] = {};
103+
// Object.defineProperty(ctor.prototype, k, { value: {} });
104+
105+
console.log('iterating', def);
106+
107+
for (var key in def)
108+
{
109+
var child = def[key];
110+
111+
console.log('->', key, child);
112+
113+
if (child && hasGetterOrSetter(child))
114+
{
115+
if (typeof child.enumerable === 'undefined')
116+
{
117+
child.enumerable = true;
118+
}
119+
120+
if (typeof child.configurable === 'undefined')
121+
{
122+
child.configurable = true;
123+
}
124+
125+
Object.defineProperty(entry[k], key, child);
126+
}
127+
else
128+
{
129+
Object.defineProperty(entry[k], key, {
130+
value: child,
131+
writable: true,
132+
configurable: true,
133+
enumerable: true
134+
});
135+
136+
// ctor.prototype[k][key] = { value: child };
137+
}
138+
}
139+
140+
// ctor.prototype[k] = def;
141+
142+
console.dir(entry);
143+
144+
Object.defineProperties(ctor.prototype, entry);
145+
}
146+
else if (def !== false)
75147
{
76148
// If Extends is used, we will check its prototype to see if the final variable exists.
77149

78-
var parent = extend || ctor;
150+
var parent = extendCallback || ctor;
79151

80152
if (hasNonConfigurable(parent.prototype, k))
81153
{
@@ -104,6 +176,8 @@ function extend (ctor, definition, isClassDescriptor, extend)
104176

105177
function mixin (myClass, mixins)
106178
{
179+
console.log(myClass);
180+
107181
if (!mixins)
108182
{
109183
return;

0 commit comments

Comments
 (0)