diff --git a/assets/game-map.json b/assets/game-map.json index 7abda21..baf8480 100644 --- a/assets/game-map.json +++ b/assets/game-map.json @@ -315,6 +315,16 @@ "name":"forestTree", "type":"int", "value":40 + }, + { + "name":"glass", + "type":"int", + "value":2 + }, + { + "name":"rock", + "type":"int", + "value":4 }] }, { @@ -324,6 +334,16 @@ "name":"forestTree", "type":"int", "value":2 + }, + { + "name":"glass", + "type":"int", + "value":2 + }, + { + "name":"rock", + "type":"int", + "value":4 }] }, { @@ -334,6 +354,11 @@ "type":"int", "value":5 }, + { + "name":"glass", + "type":"int", + "value":2 + }, { "name":"palmTree", "type":"int", @@ -346,7 +371,21 @@ { "name":"forestTree", "type":"int", - "value":0 + "value":6 + }, + { + "name":"glass", + "type":"int", + "value":3 + }] + }, + { + "id":5, + "properties":[ + { + "name":"glass", + "type":"int", + "value":3 }] }, { @@ -366,10 +405,20 @@ "type":"int", "value":15 }, + { + "name":"glass", + "type":"int", + "value":2 + }, { "name":"palmTree", "type":"int", "value":2 + }, + { + "name":"rock", + "type":"int", + "value":5 }] }, { @@ -378,31 +427,51 @@ { "name":"fish", "type":"int", - "value":6 + "value":3 + }, + { + "name":"glass", + "type":"int", + "value":2 }, { "name":"palmTree", "type":"int", - "value":15 + "value":10 }, { "name":"rock", "type":"int", - "value":6 + "value":1 }, { "name":"seaShell", "type":"int", - "value":8 + "value":5 }] }, { "id":11, "properties":[ + { + "name":"fish", + "type":"int", + "value":2 + }, + { + "name":"glass", + "type":"int", + "value":5 + }, { "name":"palmTree", "type":"int", - "value":10 + "value":8 + }, + { + "name":"rock", + "type":"int", + "value":3 }] }, { @@ -420,6 +489,16 @@ { "name":"boulder", "type":"int", + "value":12 + }, + { + "name":"glass", + "type":"int", + "value":2 + }, + { + "name":"rock", + "type":"int", "value":8 }] }, @@ -438,12 +517,17 @@ { "name":"boulder", "type":"int", - "value":15 + "value":10 }, { "name":"forestTree", "type":"int", "value":2 + }, + { + "name":"rock", + "type":"int", + "value":7 }] }], "tilewidth":100 diff --git a/assets/images/player.png b/assets/images/player.png index 602101c..66db1ee 100644 Binary files a/assets/images/player.png and b/assets/images/player.png differ diff --git a/raw/game-map.tmx b/raw/game-map.tmx index 5a23e86..1321b21 100644 --- a/raw/game-map.tmx +++ b/raw/game-map.tmx @@ -13,22 +13,33 @@ + + + + + - + + + + + + + @@ -39,20 +50,26 @@ + + - - - - + + + + + - + + + + @@ -62,7 +79,9 @@ - + + + @@ -72,8 +91,9 @@ - + + diff --git a/raw/player.psd b/raw/player.psd index 1edcc52..a23ec99 100644 Binary files a/raw/player.psd and b/raw/player.psd differ diff --git a/src/main.js b/src/main.js index 30579e4..ff8ed72 100644 --- a/src/main.js +++ b/src/main.js @@ -20,7 +20,7 @@ const config = { }, backgroundColor: '#000000', scene: [ - MenuScene, + //MenuScene, // Intro, // Tutorial, Game diff --git a/src/objects.js b/src/objects.js index 5df819e..63cfcbb 100644 --- a/src/objects.js +++ b/src/objects.js @@ -68,8 +68,9 @@ export class ObjectManager { health: 200, fullHealth: 200, yield: 'rock', - amount: [1,3], - doneSprite: null + amount: [2,4], + doneSprite: null, + dropSprite: 21 }; this.createHealthBar(boulder); } else if (key === 'seaShell' && Phaser.Math.Between(1,300) <= objectType[key]) { @@ -82,7 +83,50 @@ export class ObjectManager { fullHealth: 1, yield: 'seaShell', amount: [1,1], - doneSprite: null + doneSprite: null, + dropSprite: 15 + }; + this.createHealthBar(item); + } else if (key === 'rock' && Phaser.Math.Between(1,300) <= objectType[key]) { + const item = this.scene.physics.add.sprite(x, y, 'objects', 6); + this.scene.objects.add(item); + item.setImmovable(true); + item.props = { + type: key, + health: 1, + fullHealth: 1, + yield: 'rock', + amount: [1,1], + doneSprite: null, + dropSprite: 16 + }; + this.createHealthBar(item); + } else if (key === 'fish' && Phaser.Math.Between(1,300) <= objectType[key]) { + const item = this.scene.physics.add.sprite(x, y, 'objects', 7); + this.scene.objects.add(item); + item.setImmovable(true); + item.props = { + type: key, + health: 1, + fullHealth: 1, + yield: 'fish', + amount: [1,1], + doneSprite: null, + dropSprite: 17 + }; + this.createHealthBar(item); + } else if (key === 'glass' && Phaser.Math.Between(1,300) <= objectType[key]) { + const item = this.scene.physics.add.sprite(x, y, 'objects', 8); + this.scene.objects.add(item); + item.setImmovable(true); + item.props = { + type: key, + health: 1, + fullHealth: 1, + yield: 'seaShell', + amount: [1,1], + doneSprite: null, + dropSprite: 18 }; this.createHealthBar(item); } @@ -158,15 +202,14 @@ export class ObjectManager { if (player.targetX === object.x && player.targetY === object.y) { switch (object.props.type){ case 'palmTree': - object.props.health -= dmg; - this.scene.sound.play('chop'); - break; case 'forestTree': - object.props.health -= dmg; + player.harvest(object.x, object.y, 'axe'); this.scene.sound.play('chop'); break; default: + player.harvest(object.x, object.y, 'hands'); } + object.props.health -= dmg; this.updateHealthBar(object); if (object.props.health <= 0) { this.destroyObject(object); @@ -194,10 +237,10 @@ export class ObjectManager { sprite = 13; } else { sprite = 12; - } - + } break; default: + sprite = object.props.dropSprite; } const drop = this.scene.physics.add.sprite(object.x-5, object.y-50, 'objects', sprite).setScale(.8); this.scene.tweens.add({ diff --git a/src/player.js b/src/player.js index 9a04397..71bdc19 100644 --- a/src/player.js +++ b/src/player.js @@ -18,6 +18,12 @@ export class Player extends Phaser.GameObjects.Sprite { this.dmgMax = 25; this.inventory = {}; this.canMove = true; + this.equipt = { + tools: {}, + armor: {}, + weapons: {} + } + this.isHarvesting = false; // Add input listener for mouse clicks scene.input.on('pointerdown', (pointer) => { @@ -147,6 +153,37 @@ export class Player extends Phaser.GameObjects.Sprite { } } + // Method to show harvesting activity + harvest(x, y, type) { + if (this.isHarvesting) return; + + this.isHarvesting = true; + if (type === 'axe') { + this.harvestTool(44, x, y, 2); + } + if (type === 'hands') { + this.harvestTool(40, x, y, 1); + } + + this.scene.time.delayedCall(500, () => { + this.isHarvesting = false; + }); + } + + harvestTool(startFrame, x, y, scale) { + const tool = this.scene.add.sprite(x, y, 'player', startFrame).setDepth(90).setScale(scale); + tool.anims.create({ + key: 'harvest', + frames: this.anims.generateFrameNumbers('player', { start: startFrame, end: startFrame+3 }), + frameRate: 8, + repeat: -1 + }); + tool.anims.play('harvest'); + this.scene.time.delayedCall(500, () => { + tool.destroy(); + }); + } + // Method to stop player movement stop() { this.body.setVelocity(0, 0);