ajout du déblocage/évolutions des plantes (#89) et fix divers

This commit is contained in:
2025-11-07 13:26:04 +01:00
parent 11ae967845
commit ed675ed532
54 changed files with 901 additions and 483 deletions

View File

@@ -2,7 +2,7 @@
[ext_resource type="PackedScene" uid="uid://12nak7amd1uq" path="res://gui/game/game_gui.tscn" id="1_yy1uy"]
[ext_resource type="PackedScene" uid="uid://v41hfc7haaye" path="res://gui/game/win/win.tscn" id="3_6guxm"]
[ext_resource type="PackedScene" uid="uid://doxm7uab8i3tq" path="res://gui/game/reward_choice/reward_choice.tscn" id="4_fbkgs"]
[ext_resource type="PackedScene" uid="uid://doxm7uab8i3tq" path="res://gui/game/quota_reward/quota_reward.tscn" id="4_fbkgs"]
[ext_resource type="PackedScene" uid="uid://bgvbgeq46wee2" path="res://entities/player/player.tscn" id="4_g33f4"]
[ext_resource type="PackedScene" uid="uid://dt6mptqg80dew" path="res://gui/game/tutorial/tutorial.tscn" id="5_orelw"]
[ext_resource type="PackedScene" uid="uid://tsi5j1uxppa4" path="res://stages/terrain/planet/planet.tscn" id="8_t31p7"]
@@ -12,13 +12,15 @@
[node name="PlanetRun" type="Node2D"]
[node name="Reward" parent="." instance=ExtResource("4_fbkgs")]
layer = 2
[node name="CanvasLayer" type="CanvasLayer" parent="."]
[node name="RootGui" parent="CanvasLayer" instance=ExtResource("1_yy1uy")]
[node name="RootGui" parent="CanvasLayer" node_paths=PackedStringArray("quota_reward") instance=ExtResource("1_yy1uy")]
quota_reward = NodePath("../../Reward")
metadata/_edit_use_anchors_ = true
[node name="RewardChoice" parent="CanvasLayer" instance=ExtResource("4_fbkgs")]
[node name="Win" parent="CanvasLayer" instance=ExtResource("3_6guxm")]
visible = false
@@ -38,8 +40,9 @@ position = Vector2(33, -139)
[node name="TruckRecharge" parent="Entities" instance=ExtResource("10_cnjsq")]
position = Vector2(-36, -154)
[node name="Planet" parent="." node_paths=PackedStringArray("import_entities_from_node") instance=ExtResource("8_t31p7")]
[node name="Planet" parent="." node_paths=PackedStringArray("quota_reward", "import_entities_from_node") instance=ExtResource("8_t31p7")]
loot_item_number = Array[int]([1])
quota_reward = NodePath("../Reward")
import_entities_from_node = NodePath("../Entities")
[node name="Camera" parent="." node_paths=PackedStringArray("following") instance=ExtResource("16_m18ms")]
@@ -49,4 +52,3 @@ following = NodePath("../Entities/Player")
[connection signal="day_limit_exceed" from="Planet" to="CanvasLayer/Win" method="_on_planet_day_limit_exceed"]
[connection signal="pass_day_ended" from="Planet" to="CanvasLayer/RootGui" method="_on_planet_pass_day_ended"]
[connection signal="pass_day_started" from="Planet" to="CanvasLayer/RootGui" method="_on_planet_pass_day_started"]
[connection signal="quota_reward_asked" from="Planet" to="CanvasLayer/RewardChoice" method="_on_planet_quota_reward_asked"]

View File

@@ -108,12 +108,8 @@ func generate_walls():
func generate_loot(number : int = LOOT_NUMBER.pick_random()):
for i in range(number):
var loot = UndergroundLoot.new()
for j in range(LOOT_ITEM_NUMBER.pick_random()):
loot.loot.append(
Seed.new(GameInfo.game_data.unlocked_plant_types.pick_random())
)
var loot : UndergroundLoot = (UndergroundLootData.SCENE.instantiate() as UndergroundLoot)
loot.item_number = LOOT_ITEM_NUMBER.pick_random()
var max_placement_try = 10
var valid_coord = false

View File

@@ -17,6 +17,7 @@ var size = PlanetData.DEFAULT_GARDEN_SIZE
func _init(_planet_data : PlanetData, _initial_plants : Array[Plant] = []):
planet_data = _planet_data
plants = _initial_plants
update_garden_score()
func _ready():
contamination_sprite = generate_contamination_terrain_sprite()

View File

@@ -5,7 +5,6 @@ signal day_limit_exceed(planet : Planet)
signal pass_day_started(planet : Planet)
signal pass_day_proceeded(planet : Planet)
signal pass_day_ended(planet : Planet)
signal quota_reward_asked(planet : Planet, item1 : Item, item2 : Item)
const PASS_DAY_ANIMATION_TIME : float = 1.5
const DEFAULT_DAY_LIMIT : int = 7
@@ -14,7 +13,8 @@ const PLANET_TEXTURE_SCALE : float = 5.0
@export_group("Loot")
@export var first_loot_number : int = 3
@export var loot_item_number : Array[int] = [1,2]
@export var quota_reward : QuotaReward
var data : PlanetData
var contamination_texture : ImageTexture
@@ -37,6 +37,9 @@ func _ready():
garden = Garden.new(data, plants)
add_child(garden)
if len(GameInfo.game_data.unlocked_plant_types) == 0:
quota_reward.trigger_reward()
generate_first_entities()
Music.enter_planet()
@@ -146,11 +149,8 @@ func pass_day():
func generate_loot(number : int):
for i in range(number):
var loot = UndergroundLoot.new()
for j in range(loot_item_number.pick_random()):
loot.loot.append(
Seed.new(GameInfo.game_data.unlocked_plant_types.pick_random())
)
var loot : UndergroundLoot = (UndergroundLootData.SCENE.instantiate() as UndergroundLoot)
loot.item_number = loot_item_number.pick_random()
var loot_random_range = UndergroundLoot.LOOTED_ITEM_RANDOM_RANGE
@@ -164,21 +164,10 @@ func generate_loot(number : int):
func reach_quota():
data.quota += 1
quota_reward.trigger_reward()
await quota_reward.reward_chosen
if data.garden_score >= data.get_quota_score():
reach_quota()
data.quota_days = data.get_quota_duration()
func ask_quota_reward():
quota_reward_asked.emit(
self,
generate_quota_reward(),
generate_quota_reward()
)
func generate_quota_reward() -> Item:
var random_level = randi_range(
max(data.quota - 1, 1),
min(data.quota, Machine.MAX_MACHINE_LEVEL),
)
var random_machine_type = GameInfo.game_data.unlocked_machines.pick_random()
return Blueprint.new(random_machine_type, random_level)
#endregion

View File

@@ -88,7 +88,7 @@ func generate_objective_rewards(level = 0) -> Array[ObjectiveReward]:
#endregion
#region ------------------ Quotas ------------------
func get_quota_score(q = quota) -> int:
func get_quota_score(q : int = quota) -> int:
var first_quotas = [
4,
10,

View File

@@ -39,7 +39,7 @@ func draw_random_zone(
ImageTools.draw_circle(
noise_image,
noise_image_center,
80/UNIT_PER_PIXEL,
int(round(80./float(UNIT_PER_PIXEL))),
Color.WHITE,
)

View File

@@ -9,6 +9,9 @@ const PLANET_RUN_PATH = "res://stages/planet_run/planet_run.tscn"
func _on_exit_interacted(_p : Player):
data.entities_saved_data = save_entities()
data.rewards = []
for c in composts:
data.rewards.append(c.reward)
get_tree().change_scene_to_file(PLANET_RUN_PATH)
func _ready():