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);