refactor du code et ajouts des quotas, avec des récompense entre chaque quota #68

This commit is contained in:
2025-09-14 19:35:43 +02:00
parent 85cd832864
commit 43bdbc3581
44 changed files with 918 additions and 339 deletions

View File

@@ -0,0 +1,10 @@
[gd_resource type="Resource" script_class="MachineType" load_steps=3 format=3 uid="uid://cv2tf0tydqj5v"]
[ext_resource type="PackedScene" uid="uid://bkwh1ntvgkkrt" path="res://entities/interactables/machines/compost/compost.tscn" id="1_8ajib"]
[ext_resource type="Script" uid="uid://bhncww816fjsb" path="res://entities/interactables/machines/scripts/machine_info.gd" id="1_vktn1"]
[resource]
script = ExtResource("1_vktn1")
name = "Compost"
scene = ExtResource("1_8ajib")
description = "Can generate temporary energy in exchange of seeds."

View File

@@ -1,32 +1,30 @@
extends Machine
class_name Compost
@export var seed_needed : int = 2
@export var energy_production : int = 1
var containing_seed : int = 0
func get_seed_needed(l : int = level) -> int:
match l:
1: return 3
2: return 2
3: return 2
_: return 1
func get_energy_production(l : int = level) -> int:
match l:
1: return 1
2: return 1
_: return 2
func _process(_delta):
%ProgressBar.value = lerp(%ProgressBar.value, float(containing_seed) / float(seed_needed) * 100, 0.5)
func pointer_text():
return "Compost"
%ProgressBar.value = lerp(%ProgressBar.value, float(containing_seed) / float(get_seed_needed()) * 100, 0.5)
func interact_text():
return "Put a seed ("+str(seed_needed - containing_seed)+" left)"
func inspector_info() -> Inspector.Info:
return Inspector.Info.new(
pointer_text(),
"The compost allow you to generate one energy for " + str(seed_needed) + " seeds."
)
return "Put a seed ("+str(get_seed_needed() - containing_seed)+" left)"
func can_interact(p : Player) -> bool:
return p.inventory.get_item() and p.inventory.get_item() is Seed
func requirement_text() -> String:
return "You must have a seed in hand"
func interact(p : Player) -> bool:
if not can_interact(p):
return false
@@ -34,10 +32,10 @@ func interact(p : Player) -> bool:
p.play_sfx("harvest")
p.delete_item(p.inventory.get_item())
containing_seed += 1
if containing_seed >= seed_needed:
if containing_seed >= get_seed_needed():
$AnimationPlayer.play("empty")
containing_seed = 0
p.recharge(energy_production)
p.recharge(get_energy_production())
else:
$AnimationPlayer.play("fill")
return true

View File

@@ -1,2 +1,22 @@
extends Interactable
class_name Machine
class_name Machine
const MAX_MACHINE_LEVEL = 5
var level : int = 1
var machine_name : String = ""
var machine_desc : String = ""
func setup_machine_info(machine_type : MachineType, _level : int = 1):
level = _level
machine_name = machine_type.name
machine_desc = machine_type.description
func pointer_text():
return machine_name
func inspector_info() -> Inspector.Info:
return Inspector.Info.new(
pointer_text() + " level " + str(level),
machine_desc
)

View File

@@ -0,0 +1,6 @@
extends Resource
class_name MachineType
@export var name : String
@export var scene : PackedScene
@export_multiline var description : String

View File

@@ -0,0 +1 @@
uid://bhncww816fjsb

View File

@@ -1,21 +0,0 @@
[gd_resource type="Resource" script_class="LootItemReward" load_steps=6 format=3 uid="uid://clmsn7r2shw6j"]
[ext_resource type="Script" uid="uid://dva05p817w00f" path="res://entities/objectives/scripts/rewards/loot_item_reward.gd" id="1_dyn78"]
[ext_resource type="Texture2D" uid="uid://0xg54agef5gh" path="res://common/icons/package.svg" id="1_gvg4i"]
[ext_resource type="PackedScene" uid="uid://bkwh1ntvgkkrt" path="res://entities/interactables/machines/compost/compost.tscn" id="2_22dgr"]
[ext_resource type="Script" uid="uid://b6kubqgq0k7vj" path="res://common/inventory/scripts/items/package.gd" id="3_0bwtl"]
[sub_resource type="Resource" id="Resource_00nan"]
script = ExtResource("3_0bwtl")
scene = ExtResource("2_22dgr")
name = "Compost"
description = "The compost allow you to upgrade your max energy when putting in it a certain amount of seeds."
icon = ExtResource("1_gvg4i")
use_zone_radius = 5
use_energy = 1
metadata/_custom_type_script = "uid://b6kubqgq0k7vj"
[resource]
script = ExtResource("1_dyn78")
item = SubResource("Resource_00nan")
metadata/_custom_type_script = "uid://dva05p817w00f"

View File

@@ -68,7 +68,7 @@ func _process(_delta):
func _on_inventory_updated(_inventory: Inventory):
if inventory.get_item():
setup_preview_zone(inventory.get_item().use_zone_radius)
setup_preview_zone(inventory.get_item().usage_zone_radius)
var item_texture = inventory.get_item().icon
%ItemSprite.texture = item_texture
%ItemSprite.scale = Vector2(
@@ -125,7 +125,7 @@ func delete_item(item: Item):
func try_use_item(item : Item, use_position : Vector2):
has_just_received_instruction = true
setup_action_zone(use_position, item.use_zone_radius)
setup_action_zone(use_position, item.usage_zone_radius)
instruction = ItemActionInstruction.new(
use_position,
item
@@ -137,7 +137,7 @@ func preview_can_use_item(item : Item) -> bool:
func can_use_item_on_zone(item : Item, zone: Area2D) -> bool:
return (
inventory.has_item(item)
and (energy - item.use_energy) >= 0
and (energy - item.energy_usage) >= 0
and item.can_use(self, zone)
)
@@ -145,7 +145,7 @@ func use_item(item : Item):
if can_use_item_on_zone(item, action_zone):
var is_item_used = item.use(self, action_zone)
if is_item_used:
energy -= item.use_energy
energy -= item.energy_usage
if item.is_one_time_use():
delete_item(item)