Skip to content

Commit c8d22fe

Browse files
committed
Added BuildGameObject and related functions. Allows you to create a game object via a configuration object, rather than having to call all the functions directly. Applied to Images and Sprites so far. Accessed via this.make.sprite or this.make.image.
1 parent d08e23f commit c8d22fe

6 files changed

Lines changed: 161 additions & 11 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: '6d1ac140-1e01-11e7-abae-c74d411e0c22'
2+
build: '4806a5c0-1e58-11e7-b218-f9a99024fc4e'
33
};
44
module.exports = CHECKSUM;
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
var GetAdvancedValue = require('../utils/object/GetAdvancedValue');
2+
var ScaleModes = require('../renderer/ScaleModes');
3+
var BlendModes = require('../renderer/BlendModes');
4+
5+
var BuildGameObject = function (state, gameObject, config)
6+
{
7+
// Position
8+
9+
gameObject.x = GetAdvancedValue(config, 'x', 0);
10+
gameObject.y = GetAdvancedValue(config, 'y', 0);
11+
gameObject.z = GetAdvancedValue(config, 'z', 0);
12+
13+
// Flip
14+
15+
gameObject.flipX = GetAdvancedValue(config, 'flipX', false);
16+
gameObject.flipY = GetAdvancedValue(config, 'flipY', false);
17+
18+
// Scale
19+
// Either: { scale: 2 } or { scale: { x: 2, y: 2 }}
20+
21+
var scale = GetAdvancedValue(config, 'scale', null);
22+
23+
if (typeof scale === 'number')
24+
{
25+
gameObject.setScale(scale);
26+
}
27+
else if (scale !== null)
28+
{
29+
gameObject.scaleX = GetAdvancedValue(scale, 'x', 1);
30+
gameObject.scaleY = GetAdvancedValue(scale, 'y', 1);
31+
}
32+
33+
// Rotation
34+
35+
gameObject.rotation = GetAdvancedValue(config, 'rotation', 0);
36+
37+
var angle = GetAdvancedValue(config, 'angle', null);
38+
39+
if (angle !== null)
40+
{
41+
gameObject.angle = angle;
42+
}
43+
44+
// Alpha
45+
46+
gameObject.alpha = GetAdvancedValue(config, 'alpha', 1);
47+
48+
// Origin
49+
// Either: { origin: 0.5 } or { origin: { x: 0.5, y: 0.5 }}
50+
51+
var origin = GetAdvancedValue(config, 'origin', null);
52+
53+
if (typeof origin === 'number')
54+
{
55+
gameObject.setOrigin(origin);
56+
}
57+
else if (origin !== null)
58+
{
59+
var ox = GetAdvancedValue(config, 'x', 0.5);
60+
var oy = GetAdvancedValue(config, 'y', 0.5);
61+
62+
gameObject.setOrigin(ox, oy);
63+
}
64+
65+
// ScaleMode
66+
67+
gameObject.scaleMode = GetAdvancedValue(config, 'scaleMode', ScaleModes.DEFAULT);
68+
69+
// BlendMode
70+
71+
gameObject.blendMode = GetAdvancedValue(config, 'blendMode', BlendModes.NORMAL);
72+
73+
// Visible
74+
75+
gameObject.visible = GetAdvancedValue(config, 'visible', true);
76+
77+
// Add to State
78+
79+
var add = GetAdvancedValue(config, 'add', true);
80+
81+
if (add)
82+
{
83+
state.children.add(gameObject);
84+
}
85+
86+
return gameObject;
87+
};
88+
89+
module.exports = BuildGameObject;
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
var Image = require('./Image');
2+
var GetAdvancedValue = require('../../utils/object/GetAdvancedValue');
3+
var BuildGameObject = require('../BuildGameObject');
4+
5+
var BuildFromConfig = function (state, config)
6+
{
7+
var key = GetAdvancedValue(config, 'key', null);
8+
var frame = GetAdvancedValue(config, 'frame', null);
9+
10+
var image = new Image(state, 0, 0, key, frame);
11+
12+
BuildGameObject(state, image, config);
13+
14+
return image;
15+
};
16+
17+
module.exports = BuildFromConfig;

v3/src/gameobjects/image/ImageFactory.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11

22
var Image = require('./Image');
3+
var BuildFromConfig = require('./BuildFromConfig');
34
var FactoryContainer = require('../../gameobjects/FactoryContainer');
45

56
var ImageFactory = {
@@ -27,9 +28,9 @@ var ImageFactory = {
2728
return this.children.add(new Image(this.state, x, y, key, frame));
2829
},
2930

30-
make: function (x, y, key, frame)
31+
make: function (config)
3132
{
32-
return new Image(this.state, x, y, key, frame);
33+
return BuildFromConfig(this.state, config);
3334
}
3435

3536
};
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
var Sprite = require('./Sprite');
2+
var GetAdvancedValue = require('../../utils/object/GetAdvancedValue');
3+
var BuildGameObject = require('../BuildGameObject');
4+
5+
var BuildFromConfig = function (state, config)
6+
{
7+
var key = GetAdvancedValue(config, 'key', null);
8+
var frame = GetAdvancedValue(config, 'frame', null);
9+
10+
var sprite = new Sprite(state, 0, 0, key, frame);
11+
12+
BuildGameObject(state, sprite, config);
13+
14+
// Sprite specific config options:
15+
16+
// { anims: 'key' }
17+
// { anims: {
18+
// key: string
19+
// startFrame: [string|integer]
20+
// }
21+
// }
22+
23+
// delay: Components.Delay,
24+
// delayedPlay: Components.DelayedPlay,
25+
// load: Components.Load,
26+
// pause: Components.Pause,
27+
// paused: Components.Paused,
28+
// play: Components.Play,
29+
// progress: Components.Progress,
30+
// repeat: Components.Repeat,
31+
// repeatDelay: Components.RepeatDelay,
32+
// restart: Components.Restart,
33+
// resume: Components.Resume,
34+
// stop: Components.Stop,
35+
// timeScale: Components.TimeScale,
36+
// totalFrames: Components.TotalFrames,
37+
// totalProgress: Components.TotalProgress,
38+
// update: Components.Update,
39+
// updateFrame: Components.UpdateFrame,
40+
// yoyo: Components.Yoyo
41+
42+
// var anim = GetAdvancedValue(config, 'anims', null);
43+
44+
return sprite;
45+
};
46+
47+
module.exports = BuildFromConfig;

v3/src/gameobjects/sprite/SpriteFactory.js

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,7 @@
1-
/**
2-
* @author Richard Davey <rich@photonstorm.com>
3-
* @copyright 2016 Photon Storm Ltd.
4-
* @license {@link https://github.com/photonstorm/phaser/blob/master/license.txt|MIT License}
5-
*/
61

72
var Sprite = require('./Sprite');
8-
var FactoryContainer = require('../../gameobjects/FactoryContainer');
3+
var BuildFromConfig = require('./BuildFromConfig');
4+
var FactoryContainer = require('../FactoryContainer');
95

106
var SpriteFactory = {
117

@@ -31,9 +27,9 @@ var SpriteFactory = {
3127
return this.children.add(new Sprite(this.state, x, y, key, frame));
3228
},
3329

34-
make: function (x, y, key, frame)
30+
make: function (config)
3531
{
36-
return new Sprite(this.state, x, y, key, frame);
32+
return BuildFromConfig(this.state, config);
3733
}
3834

3935
};

0 commit comments

Comments
 (0)