From d620fc7796e74636498aea980d6335e32e15a4d9 Mon Sep 17 00:00:00 2001 From: Sean Date: Sat, 13 Jul 2013 22:47:32 +0800 Subject: [PATCH] Camera tests, some of them not finished because of bugs. --- Tests/assets/buttons/baddie-buttons.png | Bin 0 -> 2514 bytes Tests/assets/buttons/follow-style-button.png | Bin 0 -> 8461 bytes Tests/cameras/basic follow.js | 64 +++++++++++ Tests/cameras/camera fade.js | 21 ++-- Tests/cameras/camera texture.js | 40 ++----- Tests/cameras/edit-template.js | 47 --------- Tests/cameras/follow styles.js | 99 ++++++++++++++++++ Tests/cameras/multi camera.js | 63 +++++++++++ Tests/cameras/radar template.js | 47 +++++++++ ...tor-compare.js => scrollfactor compare.js} | 0 10 files changed, 293 insertions(+), 88 deletions(-) create mode 100644 Tests/assets/buttons/baddie-buttons.png create mode 100644 Tests/assets/buttons/follow-style-button.png create mode 100644 Tests/cameras/basic follow.js delete mode 100644 Tests/cameras/edit-template.js create mode 100644 Tests/cameras/follow styles.js create mode 100644 Tests/cameras/multi camera.js create mode 100644 Tests/cameras/radar template.js rename Tests/cameras/{scrollfactor-compare.js => scrollfactor compare.js} (100%) diff --git a/Tests/assets/buttons/baddie-buttons.png b/Tests/assets/buttons/baddie-buttons.png new file mode 100644 index 0000000000000000000000000000000000000000..a16940fcb62d2721bca22d1efa7cefe9e64535e7 GIT binary patch literal 2514 zcma);X*e7B7RJ+((b1|dIxbpOY6(MCk%`=hsx4&_gIJrYy@=X^5Tr~os%WYywKQsN zs3nM$P(=r|)DnrEcI?EyFX5W|^qKo*?sM;lbAIQ2&-wU&-sc}{iZm1w6c+>l073{O zJ+mWzIjScojvw{8V725Uh~f0DapvBxxF82V7r;$tZ$}p?gqMSxifpPt`F!fknhXIa1RrKT%={1j)JN+7 zv>#@csw&vm)P<-{Jkmv~P3rBrE(-QR$lCHh`2Rs81UEsVi@a4!cs!({yGpy2&6k2R z6}bMI;4<2$tG_ulr;o-(?deIPLU)YYRO}Up4u`}Da*T@jw>A>^rLgIKCaaPGhb!-` zEsO-NU%0H*S+0r**r4I-Z3cb;oks znhf%(pJuhl1ME$lBTH`RdHv27!EY~6LJH>ObYV>e#s`DF*%PYo|!>gv!(n` zNfb*Ay&s9*akt9C9kv#lv!r^|1}kM3Hav_cbt?9Y811FO5+`3MoCvYMG3Z=?nl@ns zdtuY>dnq#_IbdrjUp@*-wfJn&H+#)U1~RcU=NEZ1JHQuPn?hUrkY-*csWtO)9O^gk-rpeZ4Uo$#}r}8Uerfv`er*qEcBao6hPjOIFdMJ4oJ8 zR*+V%4i?mu>v@+T=h+}v6gOqmRPd{J+p7<;=gl=dKk~y535M}#fl>7sQA5H7#>9(9 zY4{b{B(JC@ZenZ06Jjw~KSn4TYrUZ;ElFU69v(Ef`CaQD8!DW2zSBG0LV+PRyzrWsW$mxDPF;7mu_WtS~ zpYqwFN%_Gc_6z!}nh?fJ>1)$GhqhMf&SPAl1SsDSM{ITg{=yt_=IapR$NXbk(d!9G zObk*M7vk;aX4A7FlQJTiK9{NPal0D3&%AJIqzO?Qo-gZYf;O_u>8+Nx;}f~0`7+g( z2I>)oWYm6XFWtdqtOf-YR%)hdf(4L4zOy(9jb|c=zca{SX`^5p13OeYAyaxI+l%N(yKBHyamB1TZ-TiKXci3pK zha-hRIR`Z!rgqZS?W-0+?N-3?{QEyaXALIS8fbBB!IKFI26X;uEJ?k`*WY zm^Z7PMBSG@3zSScgVCTrO|^X(m(VzumsUh(<#d9BgbMCa1$%xp4++^-RB>iliXW)4Wn zVTv}Y@`_N={VD%&c2uyc4cD_hvhlNT3-aN*a3wvq;FkMN4-26{!U~R0?jd+mA=>5>MF}vDQkB9NlX5kN65w0OQ*>LVFxqofVU*!fS?Q97jP`i|H_Q+CPbe9R1#$2#GRTv&OBWhUhbH?0B7FQ=>j4M0rC7ju+eVfq)JTLaT_S5I&`!$o6$t% z5I5knv9JK)wwBF;r+M|BYzKPo6lptt@Ub9Tv?}vHJt;Nc;M`bcC$YJXAz9CN5_678)Q}0c*ad2PY0{71+6$v&%46^L=ad8_ zhC$Pn!F}&gBo*f{GBHY?JoK}f$Hbj}%WkToz7Viif^xuBv2x_cEE`3RT;3Yot7TMA zNhVxef4)Sen(L{@ZVwyAjD!7{26troTrPV|4aYMLrbdgER(t*X7vwIX6Q{x}^jGk| z*Bw&l%)QuvAD`XkFM5P4M}G)Ad|lnx7z@37SkOA0fh<|G98|AW(!{sNx7rn$9CTb$ zfE#_JoGLc0+IiDi_qvB-r(dfjGA4Gnh|w$|-YIKH@l%QzsJS81hwB-|P`gi#J1IXH z$i(l*7j#jg9g{}{&dSW{uc&*_LX#@ScQw|ytnnT8+%8nbfXtzD#hY) zG7F5k6!6>V;0Ejc4EuMV@ohLFC@xIZT{7^qpu6o8(a?L4<|`~8%CD)Xo-VixS3n#{ zp*1H2bMOFuAU{yY^c(&?=$QVc|IVJ2IdZ?<=$Kkd?V}zZ1595RSH@@fzdQP*0TB8~ Ky<**ak^ce(n#gzn literal 0 HcmV?d00001 diff --git a/Tests/assets/buttons/follow-style-button.png b/Tests/assets/buttons/follow-style-button.png new file mode 100644 index 0000000000000000000000000000000000000000..74a0481ca5a766ebfab09e1f559aad8f58fa08ee GIT binary patch literal 8461 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 +(function () { + var game = new Phaser.Game(this, 'game', 800, 600, init, create, update); + + var ufo; + var speed = 4; + + function init() { + game.world.setSize(1280, 600, true); + game.load.image('ground', 'assets/tests/ground-2x.png'); + game.load.image('river', 'assets/tests/river-2x.png'); + game.load.image('sky', 'assets/tests/sky-2x.png'); + game.load.image('cloud0', 'assets/tests/cloud-big-2x.png'); + game.load.image('cloud1', 'assets/tests/cloud-narrow-2x.png'); + game.load.image('cloud2', 'assets/tests/cloud-small-2x.png'); + + game.load.spritesheet('ufo', 'assets/sprites/ufo.png', 24, 21); + + game.load.start(); + } + function create() { + // background images + game.add.sprite(0, 0, 'sky') + .transform.scrollFactor.setTo(0, 0); + game.add.sprite(0, 360, 'ground') + .transform.scrollFactor.setTo(0.5, 0.5); + game.add.sprite(0, 400, 'river') + .transform.scrollFactor.setTo(1.3, 1.3); + game.add.sprite(200, 120, 'cloud0') + .transform.scrollFactor.setTo(0.3, 0.3); + game.add.sprite(-60, 120, 'cloud1') + .transform.scrollFactor.setTo(0.5, 0.3); + game.add.sprite(900, 170, 'cloud2') + .transform.scrollFactor.setTo(0.7, 0.3); + + // ufo spirte + ufo = game.add.sprite(320, 240, 'ufo'); + ufo.animations.add('fly', null, 30, false); + ufo.animations.play('fly'); + ufo.transform.origin.setTo(0.5, 0.5); + + // make camera follows ufo + game.camera.follow(ufo); + } + function update() { + if (game.input.keyboard.isDown(Phaser.Keyboard.LEFT)) { + ufo.x -= speed; + ufo.rotation = -15; + } + else if (game.input.keyboard.isDown(Phaser.Keyboard.RIGHT)) { + ufo.x += speed; + ufo.rotation = 15; + } + else { + ufo.rotation = 0; + } + if (game.input.keyboard.isDown(Phaser.Keyboard.UP)) { + ufo.y -= speed; + } + else if (game.input.keyboard.isDown(Phaser.Keyboard.DOWN)) { + ufo.y += speed; + } + } +})(); diff --git a/Tests/cameras/camera fade.js b/Tests/cameras/camera fade.js index 42ba6cf1..b86cbcc2 100644 --- a/Tests/cameras/camera fade.js +++ b/Tests/cameras/camera fade.js @@ -19,17 +19,24 @@ circle3 = game.add.sprite(221, 318, 'magenta'); circle1.input.start(0, false, true); + circle1.events.onInputUp.add(fade1, this); - fx = game.camera.fx.add(Phaser.FX.Camera.Shake); + fx = game.camera.fx.add(Phaser.FX.Camera.Fade); } function update() { - if (circle1.input.justReleased(0, 20)) { - console.log('pressed'); - fx.start(0.05, 0.5, function() { - console.log('fin'); - }); - } } function render() { + game.camera.fx.render(game.camera, + game.camera.x, game.camera.y, + game.camera.width, game.camera.height); + game.camera.fx.postRender(game.camera, + game.camera.x, game.camera.y, + game.camera.width, game.camera.height); + } + function fade1(pointer) { + console.log('pressed'); + fx.start(0.05, 0.5, function() { + console.log('fin'); + }); } })(); diff --git a/Tests/cameras/camera texture.js b/Tests/cameras/camera texture.js index 5608b2e6..5a95701a 100644 --- a/Tests/cameras/camera texture.js +++ b/Tests/cameras/camera texture.js @@ -1,47 +1,19 @@ /// (function () { - var game = new Phaser.Game(this, 'game', 800, 600, init, create, update, render); - - var radar; - var ships = []; - - var button; + var game = new Phaser.Game(this, 'game', 800, 600, init, create, null, render); function init() { game.world.setSize(800, 600, true); - game.load.image('radar-surface', 'assets/tests/radar-surface.png'); - game.load.image('ship', 'assets/sprites/asteroids_ship_white.png'); - game.load.image('enemy-ship', 'assets/sprites/asteroids_ship.png'); - - game.load.image('button', 'assets/tests/320x200.png'); + game.load.image('background', 'assets/misc/water_texture.jpg'); game.load.start(); } function create() { - for (var i = 0; i < 4; i++) { - ships.push(game.add.sprite(100 + i * 10, 300 + i * 16, 'ship')); - } - ships.push(game.add.sprite(160, 320, 'enemy-ship')); - radar = game.add.sprite(0, 0, 'radar-surface'); - - game.camera.setSize(400, 600); - var camera2 = game.add.camera(0, 0, 400, 600); - camera2.x = 400; - - button = game.add.sprite(500, 100, 'button'); - button.input.start(0, false, true); - } - function update() { - if (button.input.justReleased(0, 20)) { - } - - for (var i = 0; i < ships.length; i++) { - ships[i].x += 1; - if (ships[i].x > 400) { - ships[i].x = 40; - } - } + game.camera.texture.loadImage('background', false); } function render() { + Phaser.DebugUtils.context.fillStyle = 'rgb(255, 255, 255)'; + Phaser.DebugUtils.context.fillText('Draw background image using camera.texture property.', + 196, 320); } })(); diff --git a/Tests/cameras/edit-template.js b/Tests/cameras/edit-template.js deleted file mode 100644 index ab18e7aa..00000000 --- a/Tests/cameras/edit-template.js +++ /dev/null @@ -1,47 +0,0 @@ -/// -(function () { - var game = new Phaser.Game(this, 'game', 800, 600, init, create, update, render); - - var circle1, circle2, circle3; - var button; - - function init() { - game.world.setSize(800, 600, true); - game.load.image('blue', 'assets/tests/blue-circle.png'); - game.load.image('yellow', 'assets/tests/yellow-circle.png'); - game.load.image('magenta', 'assets/tests/magenta-circle.png'); - - game.load.image('button', 'assets/tests/320x200.png'); - - game.load.start(); - } - function create() { - circle1 = game.add.sprite(114, 34, 'blue'); - circle2 = game.add.sprite(426, 86, 'yellow'); - circle3 = game.add.sprite(221, 318, 'magenta'); - - circle1.input.start(0, false, true); - circle1.input.enableDrag(false); - - circle2.input.start(0, false, true); - circle2.input.enableDrag(false); - - circle3.input.start(0, false, true); - circle3.input.enableDrag(false); - - button = game.add.sprite(500, 100, 'button'); - button.input.start(0, false, true); - } - function update() { - if (button.input.justReleased(0, 20)) { - console.log('<1>: (' + circle1.x + ', ' + circle1.y + ')'); - console.log('<2>: (' + circle2.x + ', ' + circle2.y + ')'); - console.log('<3>: (' + circle3.x + ', ' + circle3.y + ')'); - } - } - function render() { - circle1.input.renderDebugInfo(32, 32); - circle2.input.renderDebugInfo(32, 160); - circle3.input.renderDebugInfo(32, 296); - } -})(); diff --git a/Tests/cameras/follow styles.js b/Tests/cameras/follow styles.js new file mode 100644 index 00000000..223286e3 --- /dev/null +++ b/Tests/cameras/follow styles.js @@ -0,0 +1,99 @@ +/// +(function () { + var game = new Phaser.Game(this, 'game', 800, 600, init, create, update, render); + + var ufo, + speed = 4; + + var btn0, btn1, btn2, btn3; + var style = 'default'; + + function init() { + game.world.setSize(1280, 800, true); + game.load.image('ground', 'assets/tests/ground-2x.png'); + game.load.image('river', 'assets/tests/river-2x.png'); + game.load.image('sky', 'assets/tests/sky-2x.png'); + game.load.image('cloud0', 'assets/tests/cloud-big-2x.png'); + game.load.image('cloud1', 'assets/tests/cloud-narrow-2x.png'); + game.load.image('cloud2', 'assets/tests/cloud-small-2x.png'); + + game.load.spritesheet('button', 'assets/buttons/follow-style-button.png', 224, 70); + + game.load.spritesheet('ufo', 'assets/sprites/ufo.png', 24, 21); + + game.load.start(); + } + function create() { + // background images + game.add.sprite(0, 0, 'sky') + .transform.scrollFactor.setTo(0, 0); + game.add.sprite(0, 360, 'ground') + .transform.scrollFactor.setTo(0.5, 0.1); + game.add.sprite(0, 400, 'river') + .transform.scrollFactor.setTo(1.3, 0.16); + game.add.sprite(200, 120, 'cloud0') + .transform.scrollFactor.setTo(0.3, 0.1); + game.add.sprite(-60, 120, 'cloud1') + .transform.scrollFactor.setTo(0.5, 0.1); + game.add.sprite(900, 170, 'cloud2') + .transform.scrollFactor.setTo(0.7, 0.1); + // ufo spirte + ufo = game.add.sprite(360, 240, 'ufo'); + ufo.animations.add('fly', null, 30, false); + ufo.animations.play('fly'); + ufo.transform.origin.setTo(0.5, 0.5); + + // make camera follows ufo + game.camera.follow(ufo); + + // follow style switch buttons + btn0 = game.add.button(16, 40, 'button', lockonFollow, 0, 0, 0); + btn1 = game.add.button(16, 120, 'button', platformerFollow, 1, 1, 1); + btn2 = game.add.button(16, 200, 'button', topdownFollow, 2, 2, 2); + btn3 = game.add.button(16, 280, 'button', topdownTightFollow, 3, 3, 3); + } + function update() { + if (game.input.keyboard.isDown(Phaser.Keyboard.LEFT)) { + ufo.x -= speed; + ufo.rotation = -15; + } + else if (game.input.keyboard.isDown(Phaser.Keyboard.RIGHT)) { + ufo.x += speed; + ufo.rotation = 15; + } + else { + ufo.rotation = 0; + } + if (game.input.keyboard.isDown(Phaser.Keyboard.UP)) { + ufo.y -= speed; + } + else if (game.input.keyboard.isDown(Phaser.Keyboard.DOWN)) { + ufo.y += speed; + } + } + function render() { + if (game.camera.deadzone) { + Phaser.DebugUtils.renderRectangle(game.camera.deadzone, 'rgba(240, 112, 111, 0.4)'); + } + // game.camera.renderDebugInfo(400, 16); + Phaser.DebugUtils.context.fillStyle = '#fff'; + Phaser.DebugUtils.context.fillText('Click buttons to switch between different styles.', 360, 32); + Phaser.DebugUtils.context.fillText('Current style: ' + style, 360, 48); + } + function lockonFollow() { + game.camera.follow(ufo, Phaser.Camera.STYLE_LOCKON); + style = 'STYLE_LOCKON'; + } + function platformerFollow() { + game.camera.follow(ufo, Phaser.Camera.STYLE_PLATFORMER); + style = 'STYLE_PLATFORMER'; + } + function topdownFollow() { + game.camera.follow(ufo, Phaser.Camera.STYLE_TOPDOWN); + style = 'STYLE_TOPDOWN'; + } + function topdownTightFollow() { + game.camera.follow(ufo, Phaser.Camera.STYLE_TOPDOWN_TIGHT); + style = 'STYLE_TOPDOWN_TIGHT'; + } +})(); diff --git a/Tests/cameras/multi camera.js b/Tests/cameras/multi camera.js new file mode 100644 index 00000000..7554e1f3 --- /dev/null +++ b/Tests/cameras/multi camera.js @@ -0,0 +1,63 @@ +/// +(function () { + var game = new Phaser.Game(this, 'game', 800, 600, init, create, update, render); + + var zombieCamera; + + var zombie; + var walkSpeed = 2, + direction = 1; + + function init() { + game.world.setSize(1280, 600, true); + game.load.image('ground', 'assets/tests/ground-2x.png'); + game.load.image('river', 'assets/tests/river-2x.png'); + game.load.image('sky', 'assets/tests/sky-2x.png'); + + game.load.spritesheet('zombie', 'assets/sprites/metalslug_monster39x40.png', 39, 40); + + game.load.start(); + } + function create() { + // background images + game.add.sprite(0, 0, 'sky'); + game.add.sprite(0, 360, 'ground'); + game.add.sprite(0, 400, 'river'); + + // zombie spirte + zombie = game.add.sprite(480, 336, 'zombie'); + zombie.animations.add('walk', null, 30, true); + zombie.animations.play('walk'); + + // create a small camera which looks at the zombie + zombieCamera = game.add.camera(0, 0, 800, 600); + zombieCamera.x = 420; + zombieCamera.y = 240; + zombieCamera.setPosition(0, 0); + zombieCamera.setSize(200, 200); + } + function update() { + if (game.input.keyboard.isDown(Phaser.Keyboard.LEFT)) { + zombieCamera.x -= 2; + } + else if (game.input.keyboard.isDown(Phaser.Keyboard.RIGHT)) { + zombieCamera.x += 2; + } + if (game.input.keyboard.isDown(Phaser.Keyboard.UP)) { + zombieCamera.y -= 2; + } + else if (game.input.keyboard.isDown(Phaser.Keyboard.DOWN)) { + zombieCamera.y += 2; + } + // zombie wandering update + zombie.x += walkSpeed * direction; + if (zombie.x > 540 || zombie.x < 440) { + direction *= -1; + zombie.transform.scale.setTo(direction, 1); + } + } + function render() { + game.camera.renderDebugInfo(32, 32); + zombieCamera.renderDebugInfo(32, 128); + } +})(); diff --git a/Tests/cameras/radar template.js b/Tests/cameras/radar template.js new file mode 100644 index 00000000..5608b2e6 --- /dev/null +++ b/Tests/cameras/radar template.js @@ -0,0 +1,47 @@ +/// +(function () { + var game = new Phaser.Game(this, 'game', 800, 600, init, create, update, render); + + var radar; + var ships = []; + + var button; + + function init() { + game.world.setSize(800, 600, true); + game.load.image('radar-surface', 'assets/tests/radar-surface.png'); + game.load.image('ship', 'assets/sprites/asteroids_ship_white.png'); + game.load.image('enemy-ship', 'assets/sprites/asteroids_ship.png'); + + game.load.image('button', 'assets/tests/320x200.png'); + + game.load.start(); + } + function create() { + for (var i = 0; i < 4; i++) { + ships.push(game.add.sprite(100 + i * 10, 300 + i * 16, 'ship')); + } + ships.push(game.add.sprite(160, 320, 'enemy-ship')); + radar = game.add.sprite(0, 0, 'radar-surface'); + + game.camera.setSize(400, 600); + var camera2 = game.add.camera(0, 0, 400, 600); + camera2.x = 400; + + button = game.add.sprite(500, 100, 'button'); + button.input.start(0, false, true); + } + function update() { + if (button.input.justReleased(0, 20)) { + } + + for (var i = 0; i < ships.length; i++) { + ships[i].x += 1; + if (ships[i].x > 400) { + ships[i].x = 40; + } + } + } + function render() { + } +})(); diff --git a/Tests/cameras/scrollfactor-compare.js b/Tests/cameras/scrollfactor compare.js similarity index 100% rename from Tests/cameras/scrollfactor-compare.js rename to Tests/cameras/scrollfactor compare.js