gros dev pre proto

* Changement de l'UI, ajouts de l'inspecteur par carte et changement de police
* Ajout d'un semblant d'exploration
* Ajout de la sauvegarde des entités
* Restructuration mineure de l'arborescence
* Fix divers et réécriture des textes
This commit is contained in:
2025-10-31 13:52:45 +01:00
parent ceae7af589
commit ed7a8bcb6e
167 changed files with 2665 additions and 1201 deletions

View File

@@ -5,6 +5,7 @@ const INDICATOR_SCENE = preload("res://gui/game/tutorial/in_game_indicator/in_ga
var indicators : Array[InGameIndicator]
@export var player : Player
@export var planet : Planet
@onready var steps : Array[Step] = [
TakeShovelStep.new(),
@@ -19,14 +20,15 @@ var actual_step : Step = null : set = pass_to_step
func _process(_d):
if not GameInfo.game_data.tutorial_done:
if not actual_step and len(steps):
if not actual_step and planet.data.tutorial_step < len(steps):
destroy_indicators()
pass_to_step(steps.pop_front())
pass_to_step(steps[planet.data.tutorial_step])
if player and actual_step and actual_step.is_step_over(player):
if player and actual_step and actual_step.is_step_over(player, planet):
destroy_indicators()
if len(steps):
pass_to_step(steps.pop_front())
planet.data.tutorial_step += 1
if planet.data.tutorial_step < len(steps):
pass_to_step(steps[planet.data.tutorial_step])
else :
GameInfo.game_data.tutorial_done = true
@@ -37,7 +39,7 @@ func destroy_indicators():
func pass_to_step(new_step : Step):
actual_step = new_step
indicators = new_step.generate_indicators(player)
indicators = new_step.generate_indicators(player, planet)
for i in indicators:
add_child(i)
@@ -49,15 +51,15 @@ class Step:
)
return new_indicator
func generate_indicators(_player : Player) -> Array[InGameIndicator]:
func generate_indicators(_player : Player, _planet : Planet) -> Array[InGameIndicator]:
return []
func is_step_over(_p : Player) -> bool:
func is_step_over(_p : Player, _planet : Planet) -> bool:
return true
class TakeShovelStep extends Step:
func generate_indicators(p: Player) -> Array[InGameIndicator]:
for entity in p.planet.entity_container.get_children():
func generate_indicators(_p: Player, planet : Planet) -> Array[InGameIndicator]:
for entity in planet.entity_container.get_children():
if entity is ItemObject and entity.item is Shovel:
var indicator = generate_indicator("Take the Shovel")
indicator.follow_entity(entity)
@@ -67,31 +69,40 @@ class TakeShovelStep extends Step:
printerr("No Shovel found...")
return []
func is_step_over(p : Player) -> bool:
return p.inventory.items.size() > 0
func is_step_over(p : Player, _planet : Planet) -> bool:
for item in p.data.inventory.items:
if item is Shovel:
return true
return false
class DigLootStep extends Step:
func generate_indicators(p: Player) -> Array[InGameIndicator]:
var indicators : Array[InGameIndicator] = []
for entity in p.planet.entity_container.get_children():
func generate_indicators(p: Player, planet : Planet) -> Array[InGameIndicator]:
var closest_loot : UndergroundLoot
var closest_distance = 10000000
for entity in planet.entity_container.get_children():
if entity is UndergroundLoot:
var indicator = generate_indicator("Dig Underground Loot")
indicator.follow_entity(entity)
indicators.append(
indicator
)
return indicators
var distance = entity.global_position.distance_to(p.global_position)
if distance < closest_distance:
closest_distance = distance
closest_loot = entity
if closest_loot:
var indicator = generate_indicator("Dig Underground Loot")
indicator.follow_entity(closest_loot)
return [indicator]
return []
func is_step_over(p : Player) -> bool:
for entity in p.terrain.entity_container.get_children():
func is_step_over(_p : Player, planet : Planet) -> bool:
for entity in planet.entity_container.get_children():
if entity is ItemObject and entity.item is Seed:
return true
return false
class TakeSeedStep extends Step:
func generate_indicators(p: Player) -> Array[InGameIndicator]:
func generate_indicators(_p: Player, planet : Planet) -> Array[InGameIndicator]:
var indicators : Array[InGameIndicator] = []
for entity in p.terrain.entity_container.get_children():
for entity in planet.entity_container.get_children():
if entity is ItemObject and entity.item is Seed:
var indicator = generate_indicator("Take a seed")
indicator.follow_entity(entity)
@@ -100,27 +111,27 @@ class TakeSeedStep extends Step:
)
return indicators
func is_step_over(p : Player) -> bool:
for item in p.inventory.items:
func is_step_over(p : Player, _planet : Planet) -> bool:
for item in p.data.inventory.items:
if item is Seed:
return true
return false
class PlantSeedStep extends Step:
func generate_indicators(p: Player) -> Array[InGameIndicator]:
func generate_indicators(_p: Player, planet : Planet) -> Array[InGameIndicator]:
var indicator = generate_indicator("Plant the seed in decontamined zone")
indicator.follow_game_position(Vector2(0,0) + p.planet.entity_container.global_position)
indicator.follow_game_position(Vector2(0,0) + planet.entity_container.global_position)
return [indicator]
func is_step_over(p : Player) -> bool:
for entity in p.terrain.entity_container.get_children():
func is_step_over(_p : Player, planet : Planet) -> bool:
for entity in planet.entity_container.get_children():
if entity is Plant:
return true
return false
class RechargeStep extends Step:
func generate_indicators(p: Player) -> Array[InGameIndicator]:
for entity in p.planet.entity_container.get_children():
func generate_indicators(_p: Player, planet : Planet) -> Array[InGameIndicator]:
for entity in planet.entity_container.get_children():
var indicator = generate_indicator("Recharge to pass days")
indicator.follow_entity(entity)
if entity is TruckRecharge:
@@ -130,19 +141,19 @@ class RechargeStep extends Step:
printerr("No Recharge Station found...")
return []
func is_step_over(p : Player) -> bool:
if p.planet == null :
func is_step_over(_p : Player, planet : Planet) -> bool:
if planet == null :
return false
return p.planet.day > 1
return planet.data.day > 1
class WaitMaturePlant extends Step:
func generate_indicators(_p: Player) -> Array[InGameIndicator]:
func generate_indicators(_p: Player, _planet : Planet) -> Array[InGameIndicator]:
return []
func is_step_over(p : Player) -> bool:
if p.planet == null :
func is_step_over(_p : Player, planet : Planet) -> bool:
if planet == null :
return false
for entity in p.planet.entity_container.get_children():
for entity in planet.entity_container.get_children():
if entity is Plant and entity.state == Plant.State.MATURE:
return true
return false
@@ -151,9 +162,9 @@ class HarvestMaturePlant extends Step:
var mature_plant_number : int = 0
func generate_indicators(p: Player) -> Array[InGameIndicator]:
func generate_indicators(_p: Player, planet : Planet) -> Array[InGameIndicator]:
var indicators : Array[InGameIndicator] = []
for entity in p.planet.entity_container.get_children():
for entity in planet.entity_container.get_children():
if entity is Plant and entity.state == Plant.State.MATURE:
var indicator = generate_indicator("Harvest mature plants with shovel")
indicator.follow_entity(entity)
@@ -163,11 +174,11 @@ class HarvestMaturePlant extends Step:
mature_plant_number += 1
return indicators
func is_step_over(p : Player) -> bool:
if p.planet == null :
func is_step_over(_p : Player, planet : Planet) -> bool:
if planet == null :
return false
var actual_mature_plant_number = 0
for entity in p.planet.entity_container.get_children():
for entity in planet.entity_container.get_children():
if entity is Plant and entity.state == Plant.State.MATURE:
actual_mature_plant_number += 1
return mature_plant_number != actual_mature_plant_number