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:
7
stages/terrain/truck/scripts/truck_data.gd
Normal file
7
stages/terrain/truck/scripts/truck_data.gd
Normal file
@@ -0,0 +1,7 @@
|
||||
extends Resource
|
||||
class_name TruckData
|
||||
|
||||
@export var rewards : Array[Reward] = []
|
||||
@export var rewarded_times : int = 0
|
||||
@export var compost_containing_seeds : Array[int] = []
|
||||
@export var entities_saved_data : Array[EntityData] = []
|
||||
1
stages/terrain/truck/scripts/truck_data.gd.uid
Normal file
1
stages/terrain/truck/scripts/truck_data.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://dyx17r0phlodb
|
||||
@@ -1,53 +1,69 @@
|
||||
extends Terrain
|
||||
class_name TruckInterior
|
||||
|
||||
const PLANET_RUN_PATH = "res://stages/planet_run/planet_run.tscn"
|
||||
|
||||
@export var composts : Array[Compost]
|
||||
var rewarded_times = 0
|
||||
signal player_exited(player : Player)
|
||||
|
||||
@onready var spawn_position : Node2D = %SpawnPosition
|
||||
@onready var camera : Camera = %Camera
|
||||
@onready var data : TruckData = GameInfo.game_data.truck_data
|
||||
|
||||
func _on_exit_interacted(p: Player):
|
||||
player_exited.emit(p)
|
||||
func _on_exit_interacted(_p : Player):
|
||||
data.entities_saved_data = save_entities()
|
||||
get_tree().change_scene_to_file(PLANET_RUN_PATH)
|
||||
|
||||
func _ready():
|
||||
for c in composts:
|
||||
c.reward = generate_reward()
|
||||
c.rewarded.connect(_on_compost_rewarded)
|
||||
load_entities(data.entities_saved_data)
|
||||
while len(data.compost_containing_seeds) < len(composts):
|
||||
data.compost_containing_seeds.append(0)
|
||||
for i in range(len(composts)):
|
||||
var compost = composts[i]
|
||||
compost.containing_seed = data.compost_containing_seeds[i]
|
||||
compost.filled.connect(func (c: Compost): data.compost_containing_seeds[i] = c.containing_seed)
|
||||
|
||||
if i < len(data.rewards):
|
||||
compost.reward = data.rewards[i]
|
||||
else:
|
||||
var new_reward = generate_reward()
|
||||
compost.reward = new_reward
|
||||
data.rewards.append(new_reward)
|
||||
compost.rewarded.connect(_on_compost_rewarded)
|
||||
|
||||
func _on_compost_rewarded(c: Compost):
|
||||
rewarded_times += 1
|
||||
c.reward = generate_reward()
|
||||
data.rewarded_times += 1
|
||||
c.reward = generate_reward()
|
||||
|
||||
func get_compost_rewards() -> Array[Compost.Reward]:
|
||||
var rewards : Array[Compost.Reward] = []
|
||||
for c in composts:
|
||||
if c.reward:
|
||||
rewards.append(c.reward)
|
||||
return rewards
|
||||
func get_compost_rewards() -> Array[Reward]:
|
||||
var rewards : Array[Reward] = []
|
||||
for c in composts:
|
||||
if c.reward:
|
||||
rewards.append(c.reward)
|
||||
return rewards
|
||||
|
||||
func get_random_reward_cost() -> int:
|
||||
return randi_range(1 + rewarded_times * 2, 2 + rewarded_times * 2)
|
||||
return randi_range(1 + data.rewarded_times * 2, 2 + data.rewarded_times * 2)
|
||||
|
||||
func get_possible_rewards() -> Array[Compost.Reward]:
|
||||
return [
|
||||
Compost.UpgradeMaxEnergyReward.new(get_random_reward_cost() + 5),
|
||||
Compost.UpgradeMaxInventoryReward.new(get_random_reward_cost()),
|
||||
Compost.GiveItemReward.new(
|
||||
get_random_reward_cost(),
|
||||
Blueprint.new(preload("res://entities/interactables/machines/solar_pannel/solar_pannel.tres"))
|
||||
),
|
||||
Compost.GiveItemReward.new(
|
||||
get_random_reward_cost(),
|
||||
Knife.new()
|
||||
),
|
||||
Compost.GiveItemReward.new(
|
||||
get_random_reward_cost(),
|
||||
Trowel.new()
|
||||
)
|
||||
]
|
||||
func get_possible_rewards() -> Array[Reward]:
|
||||
return [
|
||||
UpgradeMaxEnergyReward.new(get_random_reward_cost() + 2),
|
||||
UpgradeMaxInventoryReward.new(get_random_reward_cost()),
|
||||
GiveItemReward.new(
|
||||
get_random_reward_cost(),
|
||||
Blueprint.new(preload("res://entities/interactables/machines/solar_pannel/solar_pannel.tres"))
|
||||
),
|
||||
GiveItemReward.new(
|
||||
get_random_reward_cost(),
|
||||
Knife.new()
|
||||
),
|
||||
GiveItemReward.new(
|
||||
get_random_reward_cost(),
|
||||
Trowel.new()
|
||||
)
|
||||
]
|
||||
|
||||
func generate_reward() -> Compost.Reward:
|
||||
return get_possible_rewards().pick_random()
|
||||
|
||||
func generate_reward() -> Reward:
|
||||
var max_tries = 3
|
||||
var reward = get_possible_rewards().pick_random()
|
||||
while get_compost_rewards().map(func(r): return r.desc()).find(reward.desc()) != -1 and max_tries > 0:
|
||||
max_tries -= 1
|
||||
reward = get_possible_rewards().pick_random()
|
||||
return reward
|
||||
|
||||
26
stages/terrain/truck/truck.tscn
Normal file
26
stages/terrain/truck/truck.tscn
Normal file
@@ -0,0 +1,26 @@
|
||||
[gd_scene load_steps=5 format=3 uid="uid://biwkti5cir5ut"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://ceplumcunebag" path="res://stages/terrain/truck/truck_interior.tscn" id="1_ycq4y"]
|
||||
[ext_resource type="Script" uid="uid://d1nsr56bh1a1y" path="res://entities/camera/scripts/camera.gd" id="2_063c3"]
|
||||
[ext_resource type="PackedScene" uid="uid://12nak7amd1uq" path="res://gui/game/game_gui.tscn" id="2_dw1sv"]
|
||||
[ext_resource type="PackedScene" uid="uid://bgvbgeq46wee2" path="res://entities/player/player.tscn" id="5_dw1sv"]
|
||||
|
||||
[node name="Truck" type="Node2D"]
|
||||
|
||||
[node name="CanvasLayer" type="CanvasLayer" parent="."]
|
||||
|
||||
[node name="GameGui" parent="CanvasLayer" instance=ExtResource("2_dw1sv")]
|
||||
|
||||
[node name="TruckInterior" parent="." node_paths=PackedStringArray("import_entities_from_node") instance=ExtResource("1_ycq4y")]
|
||||
position = Vector2(0, 0)
|
||||
import_entities_from_node = NodePath("../Entities")
|
||||
|
||||
[node name="Camera" type="Camera2D" parent="."]
|
||||
position = Vector2(385, 343)
|
||||
script = ExtResource("2_063c3")
|
||||
metadata/_custom_type_script = "uid://d1nsr56bh1a1y"
|
||||
|
||||
[node name="Entities" type="Node2D" parent="."]
|
||||
|
||||
[node name="Player" parent="Entities" instance=ExtResource("5_dw1sv")]
|
||||
position = Vector2(51, 492)
|
||||
@@ -1,10 +1,9 @@
|
||||
[gd_scene load_steps=8 format=3 uid="uid://ceplumcunebag"]
|
||||
[gd_scene load_steps=7 format=3 uid="uid://ceplumcunebag"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://d2p7h0aga85tn" path="res://stages/terrain/truck/assets/sprite/truck_interior.png" id="1_5c5ey"]
|
||||
[ext_resource type="Script" uid="uid://d0gmkwebxdptk" path="res://stages/terrain/truck/scripts/truck_interior.gd" id="1_fk6sc"]
|
||||
[ext_resource type="Script" uid="uid://dyprcd68fjstf" path="res://entities/interactables/scripts/interactable.gd" id="3_fk6sc"]
|
||||
[ext_resource type="Texture2D" uid="uid://dex283rx00fjb" path="res://common/icons/logout.svg" id="3_v18jm"]
|
||||
[ext_resource type="Script" uid="uid://d1nsr56bh1a1y" path="res://entities/camera/scripts/camera.gd" id="4_5di8w"]
|
||||
[ext_resource type="PackedScene" uid="uid://p2dkmy6xs31c" path="res://entities/interactables/truck/compost/compost.tscn" id="6_b7823"]
|
||||
|
||||
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_wi5be"]
|
||||
@@ -54,13 +53,6 @@ texture = ExtResource("3_v18jm")
|
||||
position = Vector2(9.026497, 81.2384)
|
||||
shape = SubResource("CapsuleShape2D_wi5be")
|
||||
|
||||
[node name="Camera" type="Camera2D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
position = Vector2(316, 340)
|
||||
zoom = Vector2(1.18, 1.18)
|
||||
script = ExtResource("4_5di8w")
|
||||
metadata/_custom_type_script = "uid://d1nsr56bh1a1y"
|
||||
|
||||
[node name="Compost" parent="." instance=ExtResource("6_b7823")]
|
||||
position = Vector2(358, 357)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user