trying grenouille assets again
This commit is contained in:
@@ -0,0 +1,381 @@
|
||||
/*
|
||||
* Gothicvania Town Demo Code
|
||||
* @copyright 2017 Ansimuz
|
||||
* Get more free assets and code like these at: www.pixelgameart.org
|
||||
* Visit my store for premium content at https://ansimuz.itch.io/
|
||||
* */
|
||||
|
||||
var game;
|
||||
var player;
|
||||
var folkIndex = 0;
|
||||
var gameWidth = 430;
|
||||
var gameHeight = 272;
|
||||
var background;
|
||||
var middleground;
|
||||
var globalMap;
|
||||
var townFolks;
|
||||
|
||||
window.onload = function () {
|
||||
game = new Phaser.Game(gameWidth, gameHeight, Phaser.AUTO, "");
|
||||
game.state.add('Boot', boot);
|
||||
game.state.add('Preload', preload);
|
||||
game.state.add('TitleScreen', titleScreen);
|
||||
game.state.add('PlayGame', playGame);
|
||||
//
|
||||
game.state.start('Boot');
|
||||
}
|
||||
|
||||
var boot = function (game) {
|
||||
|
||||
}
|
||||
boot.prototype = {
|
||||
preload: function () {
|
||||
this.game.load.image('loading', 'assets/sprites/loading.png');
|
||||
},
|
||||
create: function () {
|
||||
game.scale.pageAlignHorizontally = true;
|
||||
game.scale.pageAlignVertically = true;
|
||||
game.scale.scaleMode = Phaser.ScaleManager.SHOW_ALL;
|
||||
game.renderer.renderSession.roundPixels = true;
|
||||
this.game.state.start('Preload');
|
||||
}
|
||||
}
|
||||
|
||||
var preload = function (game) {
|
||||
};
|
||||
|
||||
preload.prototype = {
|
||||
preload: function () {
|
||||
var loadingBar = this.add.sprite(game.width / 2, game.height / 2, 'loading');
|
||||
loadingBar.anchor.setTo(0.5);
|
||||
game.load.setPreloadSprite(loadingBar);
|
||||
// load title screen
|
||||
game.load.image('title', 'assets/sprites/title-screen.png');
|
||||
game.load.image('enter', 'assets/sprites/press-enter-text.png');
|
||||
game.load.image('credits', 'assets/sprites/credits-text.png');
|
||||
game.load.image('instructions', 'assets/sprites/instructions.png');
|
||||
// environment
|
||||
game.load.image('background', 'assets/environment/background.png');
|
||||
game.load.image('middleground', 'assets/environment/middleground.png');
|
||||
// tileset
|
||||
game.load.image('tileset', 'assets/environment/tileset.png');
|
||||
game.load.tilemap('map', 'assets/maps/map.json', null, Phaser.Tilemap.TILED_JSON);
|
||||
// atlas sprite
|
||||
game.load.atlasJSONArray('atlas', 'assets/atlas/atlas.png', 'assets/atlas/atlas.json');
|
||||
game.load.atlasJSONArray('atlas-props', 'assets/atlas/atlas-props.png', 'assets/atlas/atlas-props.json');
|
||||
// audio
|
||||
game.load.audio('music', ['assets/sounds/rpg_village02__loop.ogg','assets/sounds/rpg_village02__loop.mp3']);
|
||||
game.load.audio('switch', ['assets/sounds/switch.ogg']);
|
||||
},
|
||||
create: function () {
|
||||
//this.game.state.start('PlayGame');
|
||||
this.game.state.start('TitleScreen');
|
||||
}
|
||||
}
|
||||
|
||||
var titleScreen = function (game) {
|
||||
|
||||
};
|
||||
|
||||
titleScreen.prototype = {
|
||||
create: function () {
|
||||
background = game.add.tileSprite(0, 0, gameWidth, gameHeight, 'background');
|
||||
middleground = game.add.tileSprite(0, 0, gameWidth, gameHeight, 'middleground');
|
||||
//
|
||||
this.title = game.add.image(gameWidth / 2, 100, 'title');
|
||||
this.title.anchor.setTo(0.5);
|
||||
var credits = game.add.image(gameWidth / 2, game.height - 12, 'credits');
|
||||
credits.anchor.setTo(0.5);
|
||||
this.pressEnter = game.add.image(game.width / 2, game.height - 75, 'enter');
|
||||
this.pressEnter.anchor.setTo(0.5);
|
||||
|
||||
game.time.events.loop(700, this.blinkText, this);
|
||||
|
||||
var startKey = game.input.keyboard.addKey(Phaser.Keyboard.ENTER);
|
||||
startKey.onDown.add(this.startGame, this);
|
||||
|
||||
this.state = 1;
|
||||
},
|
||||
|
||||
blinkText: function () {
|
||||
if (this.pressEnter.alpha) {
|
||||
this.pressEnter.alpha = 0;
|
||||
} else {
|
||||
this.pressEnter.alpha = 1;
|
||||
}
|
||||
},
|
||||
update: function () {
|
||||
middleground.tilePosition.x -= 0.2;
|
||||
},
|
||||
startGame: function () {
|
||||
if (this.state == 1) {
|
||||
this.state = 2;
|
||||
this.title2 = game.add.image(game.width / 2, 40, 'instructions');
|
||||
this.title2.anchor.setTo(0.5, 0);
|
||||
this.title.destroy();
|
||||
} else {
|
||||
this.game.state.start('PlayGame');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var playGame = function (game) {
|
||||
};
|
||||
playGame.prototype = {
|
||||
|
||||
create: function () {
|
||||
this.bindKeys();
|
||||
this.createBackgrounds();
|
||||
this.createTileMap();
|
||||
this.decorWorld();
|
||||
this.populate();
|
||||
|
||||
var changeKey = game.input.keyboard.addKey(Phaser.Keyboard.SPACEBAR);
|
||||
|
||||
changeKey.onDown.add(this.switchCharacter, this);
|
||||
// music
|
||||
this.music = game.add.audio('music');
|
||||
this.music.loop = true;
|
||||
this.music.play();
|
||||
//
|
||||
this.switchSound = game.add.audio('switch');
|
||||
|
||||
},
|
||||
|
||||
decorWorld: function () {
|
||||
this.addProp(25 * 16, 3 * 16 + 2, 'house-a');
|
||||
this.addProp(35 * 16, -10, 'house-b');
|
||||
this.addProp(48 * 16, 3 * 16 + 2, 'house-a');
|
||||
//
|
||||
this.addProp(1 * 16 - 32, 10* 16 + 7 , 'crate-stack');
|
||||
this.addProp(76 * 16 - 32, 10* 16 + 7 , 'crate-stack');
|
||||
//
|
||||
this.addProp(1 * 16 , 8 * 16 , 'street-lamp');
|
||||
this.addProp(26 * 16 , 8 * 16 , 'street-lamp');
|
||||
this.addProp(60 * 16 , 8 * 16 , 'street-lamp');
|
||||
//
|
||||
this.addProp(17 * 16 , 11 * 16 - 3 , 'well');
|
||||
//
|
||||
this.addProp(42 * 16 - 5 , 10 * 16 , 'sign');
|
||||
this.addProp(3 * 16 , 13 * 16 , 'barrel');
|
||||
this.addProp(5 * 16 , 13 * 16 , 'barrel');
|
||||
this.addProp(70 * 16 , 13 * 16 , 'barrel');
|
||||
this.addProp(71 * 16 + 8 , 13 * 16 , 'barrel');
|
||||
|
||||
this.addProp(54 * 16 + 8 , 10 * 16 , 'wagon');
|
||||
this.addProp(23 * 16 , 13 * 16 - 6 , 'crate');
|
||||
},
|
||||
|
||||
addProp: function (x, y, item) {
|
||||
game.add.image(x, y, 'atlas-props', item);
|
||||
},
|
||||
|
||||
bindKeys: function () {
|
||||
this.wasd = {
|
||||
left: game.input.keyboard.addKey(Phaser.Keyboard.LEFT),
|
||||
right: game.input.keyboard.addKey(Phaser.Keyboard.RIGHT)
|
||||
}
|
||||
game.input.keyboard.addKeyCapture([
|
||||
Phaser.Keyboard.LEFT,
|
||||
Phaser.Keyboard.RIGHT,
|
||||
Phaser.Keyboard.SPACEBAR
|
||||
]);
|
||||
},
|
||||
|
||||
createBackgrounds: function () {
|
||||
background = game.add.tileSprite(0, 0, gameWidth, gameHeight, 'background');
|
||||
middleground = game.add.tileSprite(0, 0, gameWidth, gameHeight, 'middleground');
|
||||
background.fixedToCamera = true;
|
||||
middleground.fixedToCamera = true;
|
||||
},
|
||||
|
||||
createTileMap: function () {
|
||||
// tiles
|
||||
globalMap = game.add.tilemap('map');
|
||||
globalMap.addTilesetImage('tileset');
|
||||
this.layer = globalMap.createLayer('Tile Layer 1');
|
||||
this.layer.resizeWorld();
|
||||
|
||||
// collisions
|
||||
globalMap.setCollision([1, 354, 356, 203, 204, 206, 208, 209, 270, 271, 272]);
|
||||
|
||||
},
|
||||
|
||||
populate: function () {
|
||||
//groups
|
||||
townFolks = game.add.group();
|
||||
townFolks.enableBody = true;
|
||||
|
||||
this.addBearded(5, 13);
|
||||
this.addHatMan(18, 6);
|
||||
this.addOldman(35, 13);
|
||||
this.addWoman(60, 13);
|
||||
|
||||
player = townFolks.getAt(folkIndex);
|
||||
game.camera.follow(player, Phaser.Camera.FOLLOW_PLATFORMER);
|
||||
|
||||
},
|
||||
|
||||
addBearded: function (x, y) {
|
||||
var temp = new FolkBeard(game, x, y);
|
||||
|
||||
game.add.existing(temp);
|
||||
townFolks.add(temp);
|
||||
|
||||
},
|
||||
|
||||
addHatMan: function (x, y) {
|
||||
var temp = new FolkHat(game, x, y);
|
||||
game.add.existing(temp);
|
||||
townFolks.add(temp);
|
||||
},
|
||||
|
||||
addOldman: function (x, y) {
|
||||
var temp = new FolkOld(game, x, y);
|
||||
game.add.existing(temp);
|
||||
townFolks.add(temp);
|
||||
},
|
||||
|
||||
addWoman: function (x, y) {
|
||||
var temp = new FolkWoman(game, x, y);
|
||||
game.add.existing(temp);
|
||||
townFolks.add(temp);
|
||||
},
|
||||
|
||||
update: function () {
|
||||
game.physics.arcade.collide(townFolks, this.layer);
|
||||
|
||||
this.controlCharacter();
|
||||
this.parallaxBackground();
|
||||
|
||||
//this.debugGame();
|
||||
|
||||
},
|
||||
|
||||
parallaxBackground: function () {
|
||||
middleground.tilePosition.x = this.layer.x * -0.5;
|
||||
background.tilePosition.x = this.layer.x * -0.2;
|
||||
},
|
||||
|
||||
controlCharacter: function () {
|
||||
|
||||
if (player) {
|
||||
|
||||
var speed = 100;
|
||||
if (this.wasd.left.isDown) {
|
||||
player.body.velocity.x = -speed;
|
||||
player.scale.x = -1;
|
||||
player.animations.play('walk');
|
||||
} else if (this.wasd.right.isDown) {
|
||||
player.body.velocity.x = speed;
|
||||
player.scale.x = 1;
|
||||
player.animations.play('walk');
|
||||
} else {
|
||||
player.body.velocity.x = 0;
|
||||
player.animations.play('idle');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
switchCharacter: function () {
|
||||
|
||||
var total = townFolks.children.length;
|
||||
|
||||
if (folkIndex >= total - 1) {
|
||||
folkIndex = 0;
|
||||
} else {
|
||||
|
||||
folkIndex++;
|
||||
}
|
||||
|
||||
player.body.velocity.x = 0;
|
||||
player.animations.play('idle');
|
||||
|
||||
player = townFolks.getAt(folkIndex);
|
||||
game.camera.follow(player, Phaser.Camera.FOLLOW_PLATFORMER);
|
||||
|
||||
this.switchSound.play();
|
||||
},
|
||||
|
||||
debugGame: function () {
|
||||
townFolks.forEachAlive(this.renderGroup, this);
|
||||
|
||||
},
|
||||
|
||||
renderGroup: function (member) {
|
||||
game.debug.body(member);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// townfolk objects
|
||||
|
||||
FolkBeard = function (game, x, y) {
|
||||
|
||||
x *= 16;
|
||||
y *= 16;
|
||||
Phaser.Sprite.call(this, game, x, y, 'atlas', 'bearded-idle-1');
|
||||
var f = 'bearded-idle-4';
|
||||
this.animations.add('idle', ['bearded-idle-1', 'bearded-idle-2', 'bearded-idle-3', f, f, f, f, f, f, f, f, f, f, f, f], 10, true);
|
||||
this.animations.add('walk', Phaser.Animation.generateFrameNames('bearded-walk-', 1, 6, '', 0), 10, true);
|
||||
this.animations.play('idle');
|
||||
this.anchor.setTo(0.5);
|
||||
game.physics.arcade.enable(this);
|
||||
this.body.gravity.y = 500;
|
||||
|
||||
}
|
||||
FolkBeard.prototype = Object.create(Phaser.Sprite.prototype);
|
||||
FolkBeard.prototype.constructor = FolkBeard;
|
||||
|
||||
//
|
||||
|
||||
FolkHat = function (game, x, y) {
|
||||
x *= 16;
|
||||
y *= 16;
|
||||
Phaser.Sprite.call(this, game, x, y, 'atlas', 'hat-man-idle-1');
|
||||
this.animations.add('idle', Phaser.Animation.generateFrameNames('hat-man-idle-', 1, 4, '', 0), 10, true);
|
||||
this.animations.add('walk', Phaser.Animation.generateFrameNames('hat-man-walk-', 1, 6, '', 0), 10, true);
|
||||
this.animations.play('idle');
|
||||
this.anchor.setTo(0.5);
|
||||
game.physics.arcade.enable(this);
|
||||
this.body.gravity.y = 500;
|
||||
|
||||
}
|
||||
FolkHat.prototype = Object.create(Phaser.Sprite.prototype);
|
||||
FolkHat.prototype.constructor = FolkHat;
|
||||
|
||||
//
|
||||
|
||||
FolkOld = function (game, x, y) {
|
||||
x *= 16;
|
||||
y *= 16;
|
||||
Phaser.Sprite.call(this, game, x, y, 'atlas', 'oldman-idle-1');
|
||||
var f = 'oldman-idle-8';
|
||||
this.animations.add('idle', ['oldman-idle-1', 'oldman-idle-2', 'oldman-idle-3', 'oldman-idle-4', 'oldman-idle-5', 'oldman-idle-6', 'oldman-idle-7', f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, f, 'oldman-idle-6', 'oldman-idle-5', 'oldman-idle-4', 'oldman-idle-3'], 10, true);
|
||||
this.animations.add('walk', Phaser.Animation.generateFrameNames('oldman-walk-', 1, 12, '', 0), 10, true);
|
||||
this.animations.play('idle');
|
||||
this.anchor.setTo(0.5);
|
||||
game.physics.arcade.enable(this);
|
||||
this.body.gravity.y = 500;
|
||||
}
|
||||
FolkOld.prototype = Object.create(Phaser.Sprite.prototype);
|
||||
FolkOld.prototype.constructor = FolkOld;
|
||||
|
||||
//
|
||||
|
||||
FolkWoman = function (game, x, y) {
|
||||
x *= 16;
|
||||
y *= 16;
|
||||
Phaser.Sprite.call(this, game, x, y, 'atlas', 'woman-idle-1');
|
||||
this.animations.add('idle', Phaser.Animation.generateFrameNames('woman-idle-', 1, 7, '', 0), 10, true);
|
||||
this.animations.add('walk', Phaser.Animation.generateFrameNames('woman-walk-', 1, 6, '', 0), 10, true);
|
||||
this.animations.play('idle');
|
||||
this.anchor.setTo(0.5);
|
||||
game.physics.arcade.enable(this);
|
||||
this.body.gravity.y = 500;
|
||||
}
|
||||
FolkWoman.prototype = Object.create(Phaser.Sprite.prototype);
|
||||
FolkWoman.prototype.constructor = FolkWoman;
|
||||
Reference in New Issue
Block a user