diff --git a/dev/lib/game/entities/ball.js b/dev/lib/game/entities/ball.js new file mode 100644 index 0000000..6cb8676 --- /dev/null +++ b/dev/lib/game/entities/ball.js @@ -0,0 +1,29 @@ +ig.module( + 'game.entities.ball' +) +.requires( + 'impact.entity' +) +.defines(function(){ + + EntityBall = ig.Entity.extend({ + + size: {x:48, y:48}, + collides: ig.Entity.COLLIDES.ACTIVE, + + animSheet: new ig.AnimationSheet( 'media/ball.png', 48, 48 ), + + bounciness: 1, + + init: function( x, y, settings ) { + this.parent( x, y, settings ); + + this.addAnim( 'idle', 1, [0] ); + + this.vel.x = -400; + this.vel.y = 200; + } + + }); + +}); \ No newline at end of file diff --git a/dev/lib/game/entities/paddle-enemy.js b/dev/lib/game/entities/paddle-enemy.js new file mode 100644 index 0000000..4364018 --- /dev/null +++ b/dev/lib/game/entities/paddle-enemy.js @@ -0,0 +1,26 @@ +ig.module( + 'game.entities.paddle-enemy' +) +.requires( + 'game.entities.ball', + 'game.entities.paddle' +) +.defines(function(){ + + EntityPaddleEnemy = EntityPaddle.extend({ + + update: function(){ + var ball = ig.game.getEntitiesByType( EntityBall )[0]; + + if( ball.pos.y + ball.size.y / 2 > this.pos.y + this.size.y / 2 ) { + this.vel.y = 100; + } else { + this.vel.y = -100; + } + + this.parent(); + } + + }); + +}); \ No newline at end of file diff --git a/dev/lib/game/entities/paddle-player.js b/dev/lib/game/entities/paddle-player.js new file mode 100644 index 0000000..8d61def --- /dev/null +++ b/dev/lib/game/entities/paddle-player.js @@ -0,0 +1,39 @@ +ig.module( + 'game.entities.paddle-player' +) +.requires( + 'game.entities.paddle' +) +.defines(function(){ + + EntityPaddlePlayer = EntityPaddle.extend({ + + animSheet: new ig.AnimationSheet( 'media/paddle-player.png', 64, 128 ), + + update: function(){ + if( ig.input.state('up') ) { + this.vel.y = -400; + } + else if( ig.input.state('down') ) { + this.vel.y = 400; + } + else { + this.vel.y = 0; + } + + if( ig.input.state('left') ) { + this.vel.x = -400; + } + else if( ig.input.state('right') ) { + this.vel.x = 400; + } + else { + this.vel.x = 0; + } + + this.parent(); + } + + }); + +}); \ No newline at end of file diff --git a/dev/lib/game/entities/paddle.js b/dev/lib/game/entities/paddle.js new file mode 100644 index 0000000..3b51bdb --- /dev/null +++ b/dev/lib/game/entities/paddle.js @@ -0,0 +1,26 @@ +ig.module( + 'game.entities.paddle' +) +.requires( + 'impact.entity' +) +.defines(function(){ + + EntityPaddle = ig.Entity.extend({ + + size: {x:64, y:128}, + collides: ig.Entity.COLLIDES.FIXED, + + animSheet: new ig.AnimationSheet( 'media/paddle.png', 64, 128 ), + + maxVel: {x: 400, y: 400}, + + init: function( x, y, settings ) { + this.parent( x, y, settings ); + + this.addAnim( 'idle', 1, [0] ); + } + + }); + +}); \ No newline at end of file diff --git a/dev/lib/game/levels/level1.js b/dev/lib/game/levels/level1.js new file mode 100644 index 0000000..3b9a26f --- /dev/null +++ b/dev/lib/game/levels/level1.js @@ -0,0 +1,6 @@ +ig.module( 'game.levels.level1' ) +.requires( 'impact.image','game.entities.paddle-enemy','game.entities.paddle-player','game.entities.ball' ) +.defines(function(){ +LevelLevel1=/*JSON[*/{"entities":[{"type":"EntityPaddleEnemy","x":8,"y":152},{"type":"EntityPaddlePlayer","x":548,"y":112},{"type":"EntityBall","x":288,"y":144}],"layer":[{"name":"bg","width":13,"height":8,"linkWithCollision":false,"visible":1,"tilesetName":"media/tileset.png","repeat":false,"preRender":false,"distance":"1","tilesize":48,"foreground":false,"data":[[1,1,1,1,1,1,1,1,1,1,1,1,1],[2,2,2,2,2,2,2,2,2,2,2,2,2],[2,2,2,2,1,2,2,2,2,2,2,2,2],[2,2,2,2,2,2,2,2,2,2,2,2,2],[2,2,2,2,2,2,2,2,2,2,2,2,2],[2,2,2,2,2,2,2,2,1,2,2,2,2],[2,2,2,2,2,2,2,2,2,2,2,2,2],[1,1,1,1,1,1,1,1,1,1,1,1,1]]},{"name":"collision","width":13,"height":8,"linkWithCollision":false,"visible":1,"tilesetName":"","repeat":false,"preRender":false,"distance":1,"tilesize":48,"foreground":false,"data":[[1,1,1,1,1,1,1,1,1,1,1,1,1],[0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,1,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,1,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0],[1,1,1,1,1,1,1,1,1,1,1,1,1]]}]}/*]JSON*/; +LevelLevel1Resources=[new ig.Image('media/tileset.png')]; +}); \ No newline at end of file diff --git a/dev/lib/game/main.js b/dev/lib/game/main.js index e9932da..4e1248b 100755 --- a/dev/lib/game/main.js +++ b/dev/lib/game/main.js @@ -3,7 +3,13 @@ ig.module( ) .requires( 'impact.game', - 'impact.font' + 'impact.font', + + 'game.entities.ball', + 'game.entities.paddle-enemy', + 'game.entities.paddle-player', + + 'game.levels.level1' ) .defines(function(){ @@ -14,7 +20,12 @@ MyGame = ig.Game.extend({ init: function() { - // Initialize your game here; bind keys etc. + ig.input.bind( ig.KEY.UP_ARROW, 'up' ); + ig.input.bind( ig.KEY.DOWN_ARROW, 'down' ); + ig.input.bind( ig.KEY.LEFT_ARROW, 'left' ); + ig.input.bind( ig.KEY.RIGHT_ARROW, 'right' ); + + this.loadLevel( LevelLevel1 ); }, update: function() { @@ -27,19 +38,12 @@ MyGame = ig.Game.extend({ draw: function() { // Draw all entities and backgroundMaps this.parent(); - - - // Add your own drawing code here - var x = ig.system.width/2, - y = ig.system.height/2; - - this.font.draw( 'It Works!', x, y, ig.Font.ALIGN.CENTER ); } }); -// Start the Game with 60fps, a resolution of 320x240, scaled +// Start the Game with 60fps, a resolution of 640x400 (16:10), scaled // up by a factor of 2 -ig.main( '#canvas', MyGame, 60, 320, 240, 2 ); +ig.main( '#canvas', MyGame, 60, 640, 400, 1 ); }); diff --git a/dev/lib/weltmeister/config.js b/dev/lib/weltmeister/config.js index 95beaef..417b72d 100755 --- a/dev/lib/weltmeister/config.js +++ b/dev/lib/weltmeister/config.js @@ -44,8 +44,8 @@ wm.config = { 'view': { 'zoom': 1, - 'zoomMax': 4, - 'zoomMin': 0.125, + 'zoomMax': 1, + 'zoomMin': 1, 'grid': false }, diff --git a/dev/media/ball.png b/dev/media/ball.png new file mode 100644 index 0000000..07d7fbd Binary files /dev/null and b/dev/media/ball.png differ diff --git a/dev/media/paddle-player.png b/dev/media/paddle-player.png new file mode 100644 index 0000000..f0bc0ee Binary files /dev/null and b/dev/media/paddle-player.png differ diff --git a/dev/media/paddle.png b/dev/media/paddle.png new file mode 100644 index 0000000..81961aa Binary files /dev/null and b/dev/media/paddle.png differ diff --git a/dev/media/tileset.png b/dev/media/tileset.png new file mode 100644 index 0000000..a895476 Binary files /dev/null and b/dev/media/tileset.png differ