Updates to Harvesting

This commit is contained in:
Brian Fertig 2025-08-19 08:39:46 -06:00
parent 2e618eec16
commit b9958f9c43
7 changed files with 209 additions and 25 deletions

View File

@ -315,6 +315,16 @@
"name":"forestTree", "name":"forestTree",
"type":"int", "type":"int",
"value":40 "value":40
},
{
"name":"glass",
"type":"int",
"value":2
},
{
"name":"rock",
"type":"int",
"value":4
}] }]
}, },
{ {
@ -324,6 +334,16 @@
"name":"forestTree", "name":"forestTree",
"type":"int", "type":"int",
"value":2 "value":2
},
{
"name":"glass",
"type":"int",
"value":2
},
{
"name":"rock",
"type":"int",
"value":4
}] }]
}, },
{ {
@ -334,6 +354,11 @@
"type":"int", "type":"int",
"value":5 "value":5
}, },
{
"name":"glass",
"type":"int",
"value":2
},
{ {
"name":"palmTree", "name":"palmTree",
"type":"int", "type":"int",
@ -346,7 +371,21 @@
{ {
"name":"forestTree", "name":"forestTree",
"type":"int", "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", "type":"int",
"value":15 "value":15
}, },
{
"name":"glass",
"type":"int",
"value":2
},
{ {
"name":"palmTree", "name":"palmTree",
"type":"int", "type":"int",
"value":2 "value":2
},
{
"name":"rock",
"type":"int",
"value":5
}] }]
}, },
{ {
@ -378,31 +427,51 @@
{ {
"name":"fish", "name":"fish",
"type":"int", "type":"int",
"value":6 "value":3
},
{
"name":"glass",
"type":"int",
"value":2
}, },
{ {
"name":"palmTree", "name":"palmTree",
"type":"int", "type":"int",
"value":15 "value":10
}, },
{ {
"name":"rock", "name":"rock",
"type":"int", "type":"int",
"value":6 "value":1
}, },
{ {
"name":"seaShell", "name":"seaShell",
"type":"int", "type":"int",
"value":8 "value":5
}] }]
}, },
{ {
"id":11, "id":11,
"properties":[ "properties":[
{
"name":"fish",
"type":"int",
"value":2
},
{
"name":"glass",
"type":"int",
"value":5
},
{ {
"name":"palmTree", "name":"palmTree",
"type":"int", "type":"int",
"value":10 "value":8
},
{
"name":"rock",
"type":"int",
"value":3
}] }]
}, },
{ {
@ -420,6 +489,16 @@
{ {
"name":"boulder", "name":"boulder",
"type":"int", "type":"int",
"value":12
},
{
"name":"glass",
"type":"int",
"value":2
},
{
"name":"rock",
"type":"int",
"value":8 "value":8
}] }]
}, },
@ -438,12 +517,17 @@
{ {
"name":"boulder", "name":"boulder",
"type":"int", "type":"int",
"value":15 "value":10
}, },
{ {
"name":"forestTree", "name":"forestTree",
"type":"int", "type":"int",
"value":2 "value":2
},
{
"name":"rock",
"type":"int",
"value":7
}] }]
}], }],
"tilewidth":100 "tilewidth":100

Binary file not shown.

Before

Width:  |  Height:  |  Size: 195 KiB

After

Width:  |  Height:  |  Size: 218 KiB

View File

@ -13,22 +13,33 @@
<tile id="1"> <tile id="1">
<properties> <properties>
<property name="forestTree" type="int" value="40"/> <property name="forestTree" type="int" value="40"/>
<property name="glass" type="int" value="2"/>
<property name="rock" type="int" value="4"/>
</properties> </properties>
</tile> </tile>
<tile id="2"> <tile id="2">
<properties> <properties>
<property name="forestTree" type="int" value="2"/> <property name="forestTree" type="int" value="2"/>
<property name="glass" type="int" value="2"/>
<property name="rock" type="int" value="4"/>
</properties> </properties>
</tile> </tile>
<tile id="3"> <tile id="3">
<properties> <properties>
<property name="forestTree" type="int" value="5"/> <property name="forestTree" type="int" value="5"/>
<property name="glass" type="int" value="2"/>
<property name="palmTree" type="int" value="2"/> <property name="palmTree" type="int" value="2"/>
</properties> </properties>
</tile> </tile>
<tile id="4"> <tile id="4">
<properties> <properties>
<property name="forestTree" type="int" value="0"/> <property name="forestTree" type="int" value="6"/>
<property name="glass" type="int" value="3"/>
</properties>
</tile>
<tile id="5">
<properties>
<property name="glass" type="int" value="3"/>
</properties> </properties>
</tile> </tile>
<tile id="7"> <tile id="7">
@ -39,20 +50,26 @@
<tile id="8"> <tile id="8">
<properties> <properties>
<property name="forestTree" type="int" value="15"/> <property name="forestTree" type="int" value="15"/>
<property name="glass" type="int" value="2"/>
<property name="palmTree" type="int" value="2"/> <property name="palmTree" type="int" value="2"/>
<property name="rock" type="int" value="5"/>
</properties> </properties>
</tile> </tile>
<tile id="10"> <tile id="10">
<properties> <properties>
<property name="fish" type="int" value="6"/> <property name="fish" type="int" value="3"/>
<property name="palmTree" type="int" value="15"/> <property name="glass" type="int" value="2"/>
<property name="rock" type="int" value="6"/> <property name="palmTree" type="int" value="10"/>
<property name="seaShell" type="int" value="8"/> <property name="rock" type="int" value="1"/>
<property name="seaShell" type="int" value="5"/>
</properties> </properties>
</tile> </tile>
<tile id="11"> <tile id="11">
<properties> <properties>
<property name="palmTree" type="int" value="10"/> <property name="fish" type="int" value="2"/>
<property name="glass" type="int" value="5"/>
<property name="palmTree" type="int" value="8"/>
<property name="rock" type="int" value="3"/>
</properties> </properties>
</tile> </tile>
<tile id="12"> <tile id="12">
@ -62,7 +79,9 @@
</tile> </tile>
<tile id="13"> <tile id="13">
<properties> <properties>
<property name="boulder" type="int" value="8"/> <property name="boulder" type="int" value="12"/>
<property name="glass" type="int" value="2"/>
<property name="rock" type="int" value="8"/>
</properties> </properties>
</tile> </tile>
<tile id="14"> <tile id="14">
@ -72,8 +91,9 @@
</tile> </tile>
<tile id="16"> <tile id="16">
<properties> <properties>
<property name="boulder" type="int" value="15"/> <property name="boulder" type="int" value="10"/>
<property name="forestTree" type="int" value="2"/> <property name="forestTree" type="int" value="2"/>
<property name="rock" type="int" value="7"/>
</properties> </properties>
</tile> </tile>
</tileset> </tileset>

Binary file not shown.

View File

@ -20,7 +20,7 @@ const config = {
}, },
backgroundColor: '#000000', backgroundColor: '#000000',
scene: [ scene: [
MenuScene, //MenuScene,
// Intro, // Intro,
// Tutorial, // Tutorial,
Game Game

View File

@ -68,8 +68,9 @@ export class ObjectManager {
health: 200, health: 200,
fullHealth: 200, fullHealth: 200,
yield: 'rock', yield: 'rock',
amount: [1,3], amount: [2,4],
doneSprite: null doneSprite: null,
dropSprite: 21
}; };
this.createHealthBar(boulder); this.createHealthBar(boulder);
} else if (key === 'seaShell' && Phaser.Math.Between(1,300) <= objectType[key]) { } else if (key === 'seaShell' && Phaser.Math.Between(1,300) <= objectType[key]) {
@ -82,7 +83,50 @@ export class ObjectManager {
fullHealth: 1, fullHealth: 1,
yield: 'seaShell', yield: 'seaShell',
amount: [1,1], 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); this.createHealthBar(item);
} }
@ -158,15 +202,14 @@ export class ObjectManager {
if (player.targetX === object.x && player.targetY === object.y) { if (player.targetX === object.x && player.targetY === object.y) {
switch (object.props.type){ switch (object.props.type){
case 'palmTree': case 'palmTree':
object.props.health -= dmg;
this.scene.sound.play('chop');
break;
case 'forestTree': case 'forestTree':
object.props.health -= dmg; player.harvest(object.x, object.y, 'axe');
this.scene.sound.play('chop'); this.scene.sound.play('chop');
break; break;
default: default:
player.harvest(object.x, object.y, 'hands');
} }
object.props.health -= dmg;
this.updateHealthBar(object); this.updateHealthBar(object);
if (object.props.health <= 0) { if (object.props.health <= 0) {
this.destroyObject(object); this.destroyObject(object);
@ -194,10 +237,10 @@ export class ObjectManager {
sprite = 13; sprite = 13;
} else { } else {
sprite = 12; sprite = 12;
} }
break; break;
default: default:
sprite = object.props.dropSprite;
} }
const drop = this.scene.physics.add.sprite(object.x-5, object.y-50, 'objects', sprite).setScale(.8); const drop = this.scene.physics.add.sprite(object.x-5, object.y-50, 'objects', sprite).setScale(.8);
this.scene.tweens.add({ this.scene.tweens.add({

View File

@ -18,6 +18,12 @@ export class Player extends Phaser.GameObjects.Sprite {
this.dmgMax = 25; this.dmgMax = 25;
this.inventory = {}; this.inventory = {};
this.canMove = true; this.canMove = true;
this.equipt = {
tools: {},
armor: {},
weapons: {}
}
this.isHarvesting = false;
// Add input listener for mouse clicks // Add input listener for mouse clicks
scene.input.on('pointerdown', (pointer) => { 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 // Method to stop player movement
stop() { stop() {
this.body.setVelocity(0, 0); this.body.setVelocity(0, 0);