ajout du camion #87
* changements des objectifs, donnent juste des graines, sprite moins gros et objectifs plus nombreux * changement de la probabilité de mutation * refactor du code terrain et planet
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=13 format=3 uid="uid://d28cp7a21kwou"]
|
||||
[gd_scene load_steps=15 format=3 uid="uid://d28cp7a21kwou"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://12nak7amd1uq" path="res://gui/game/game_gui.tscn" id="1_yy1uy"]
|
||||
[ext_resource type="PackedScene" uid="uid://csiacsndm62ll" path="res://gui/game/pause/pause.tscn" id="2_bt4fd"]
|
||||
@@ -8,8 +8,10 @@
|
||||
[ext_resource type="Script" uid="uid://dedg615xudpoq" path="res://entities/interactables/item_object/script/item_object.gd" id="5_kgrdw"]
|
||||
[ext_resource type="PackedScene" uid="uid://dt6mptqg80dew" path="res://gui/game/tutorial/tutorial.tscn" id="5_orelw"]
|
||||
[ext_resource type="Script" uid="uid://dya38x1h1uiyg" path="res://common/inventory/scripts/items/shovel.gd" id="7_fbkgs"]
|
||||
[ext_resource type="PackedScene" uid="uid://d324mlmgls4fs" path="res://entities/interactables/machines/recharge_station/recharge_station.tscn" id="7_h4bgy"]
|
||||
[ext_resource type="PackedScene" uid="uid://tsi5j1uxppa4" path="res://stages/terrain/planet/planet.tscn" id="8_t31p7"]
|
||||
[ext_resource type="PackedScene" uid="uid://cg1visg52i21a" path="res://entities/interactables/truck/ladder/truck_ladder.tscn" id="9_gisiu"]
|
||||
[ext_resource type="PackedScene" uid="uid://d324mlmgls4fs" path="res://entities/interactables/truck/recharge/truck_recharge.tscn" id="10_cnjsq"]
|
||||
[ext_resource type="PackedScene" uid="uid://ceplumcunebag" path="res://stages/terrain/truck/truck_interior.tscn" id="13_cnjsq"]
|
||||
[ext_resource type="PackedScene" uid="uid://dj7gp3crtg2yt" path="res://entities/camera/camera.tscn" id="16_m18ms"]
|
||||
|
||||
[sub_resource type="Resource" id="Resource_orelw"]
|
||||
@@ -48,8 +50,13 @@ script = ExtResource("5_kgrdw")
|
||||
item = SubResource("Resource_orelw")
|
||||
metadata/_custom_type_script = "uid://dedg615xudpoq"
|
||||
|
||||
[node name="RechargeStation" parent="Entities" instance=ExtResource("7_h4bgy")]
|
||||
position = Vector2(0, -187)
|
||||
[node name="TruckLadder" parent="Entities" node_paths=PackedStringArray("truck_interior", "planet_camera") instance=ExtResource("9_gisiu")]
|
||||
position = Vector2(33, -139)
|
||||
truck_interior = NodePath("../../TruckInterior")
|
||||
planet_camera = NodePath("../../Camera")
|
||||
|
||||
[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")]
|
||||
loot_number = Array[int]([1])
|
||||
@@ -62,6 +69,9 @@ import_entities_from_node = NodePath("../Entities")
|
||||
position = Vector2(2.22, 0)
|
||||
following = NodePath("../Entities/Player")
|
||||
|
||||
[node name="TruckInterior" parent="." instance=ExtResource("13_cnjsq")]
|
||||
position = Vector2(-372, -4191)
|
||||
|
||||
[connection signal="pause_asked" from="CanvasLayer/RootGui" to="CanvasLayer/Pause" method="_on_root_gui_pause_asked"]
|
||||
[connection signal="player_updated" from="Entities/Player" to="CanvasLayer/RootGui" method="_on_player_updated"]
|
||||
[connection signal="upgraded" from="Entities/Player" to="CanvasLayer/RootGui" method="_on_player_upgraded"]
|
||||
|
||||
@@ -14,16 +14,14 @@ const DEFAULT_DAY_LIMIT : int = 7
|
||||
const PLANET_TEXTURE_SCALE : float = 5.0
|
||||
const OBJECTIVE_MAX_LEVEL : int = 10
|
||||
const OBJECTIVE_MIN_ANGLE_DIFF = PI/2
|
||||
const OBJECTIVE_FIRST_DISTANCE = 200
|
||||
const OBJECTIVE_BETWEEN_DISTANCE = 50
|
||||
|
||||
@export_group("Loot")
|
||||
@export var first_loot_number : int = 3
|
||||
@export var loot_number : Array[int] = [0,1,2]
|
||||
@export var loot_item_number : Array[int] = [1,2]
|
||||
|
||||
@export_group("Objectives")
|
||||
@export var objective_first_distance : int = 200
|
||||
@export var objective_between_distance : int = 200
|
||||
|
||||
@export_group("Textures")
|
||||
@export var background_texture : Texture2D
|
||||
@export var contamination_material : ShaderMaterial
|
||||
@@ -34,6 +32,14 @@ var decontamination_surface : float
|
||||
var garden_score : int
|
||||
|
||||
@onready var objective_scene : PackedScene = preload("res://entities/objectives/objective.tscn")
|
||||
var terrain_size = Vector2.ONE * 1000 :
|
||||
set(v):
|
||||
terrain_size = v
|
||||
if border_limit:
|
||||
border_limit.queue_free()
|
||||
border_limit = create_border_limit()
|
||||
|
||||
@onready var border_limit : StaticBody2D = create_border_limit()
|
||||
|
||||
var planet_data : PlanetData
|
||||
|
||||
@@ -43,7 +49,6 @@ var day_limit = DEFAULT_DAY_LIMIT
|
||||
var days_on_last_quota : int = 0
|
||||
var last_quota : float = 0
|
||||
var next_quota : float
|
||||
var player : Player
|
||||
|
||||
func _ready():
|
||||
planet_data = GameInfo.game_data.current_planet_data if GameInfo.game_data.current_planet_data else PlanetData.new()
|
||||
@@ -103,18 +108,6 @@ func instantiate_machine(m_type : MachineType, level, machine_position : Vector2
|
||||
|
||||
machine.global_position = machine_position
|
||||
|
||||
func add_entity(e : Node2D, container : Node2D = entity_container):
|
||||
if e.get_parent():
|
||||
e.get_parent().remove_child(e)
|
||||
|
||||
if "planet" in e:
|
||||
e.planet = self
|
||||
|
||||
if e is Player:
|
||||
player = e
|
||||
|
||||
container.add_child(e)
|
||||
|
||||
func generate_polygon_sprite(order : int = 0) -> Polygon2D:
|
||||
var sprite = Polygon2D.new()
|
||||
var size = terrain_size
|
||||
@@ -156,6 +149,29 @@ func generate_contamination_terrain_sprite() -> Polygon2D:
|
||||
|
||||
return sprite
|
||||
|
||||
func create_border_limit() -> StaticBody2D:
|
||||
var static_body = StaticBody2D.new()
|
||||
var static_body_collision = CollisionPolygon2D.new()
|
||||
|
||||
add_child(static_body)
|
||||
static_body.add_child(static_body_collision)
|
||||
|
||||
var size = terrain_size
|
||||
static_body_collision.polygon = PackedVector2Array([
|
||||
Vector2(0,0),
|
||||
Vector2(0, size.y),
|
||||
Vector2(size.x, size.y),
|
||||
Vector2(size.x, 0),
|
||||
Vector2(0,0),
|
||||
Vector2(-BORDER_WIDTH, -BORDER_WIDTH),
|
||||
Vector2(size.x + BORDER_WIDTH, -BORDER_WIDTH),
|
||||
Vector2(size.x + BORDER_WIDTH, size.y + BORDER_WIDTH),
|
||||
Vector2(- BORDER_WIDTH, size.y + BORDER_WIDTH),
|
||||
Vector2(-BORDER_WIDTH, -BORDER_WIDTH)
|
||||
])
|
||||
|
||||
return static_body
|
||||
|
||||
#endregion
|
||||
|
||||
#region ------------------ Usage ------------------
|
||||
@@ -221,7 +237,7 @@ func pass_day():
|
||||
|
||||
func generate_loot(number : int = loot_number.pick_random()):
|
||||
for i in range(number):
|
||||
var loot = UndergroundLoot.new(self)
|
||||
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())
|
||||
@@ -249,7 +265,7 @@ func generate_objectives():
|
||||
last_objective_angle = objective_angle
|
||||
|
||||
generate_objective(
|
||||
objective_first_distance + objective_between_distance * i,
|
||||
OBJECTIVE_FIRST_DISTANCE + OBJECTIVE_BETWEEN_DISTANCE * i,
|
||||
objective_angle,
|
||||
objective_reward,
|
||||
)
|
||||
|
||||
@@ -3,24 +3,28 @@ class_name Terrain
|
||||
|
||||
const BORDER_WIDTH = 100
|
||||
|
||||
var player : Player
|
||||
|
||||
@export var import_entities_from_node : Node2D = null
|
||||
|
||||
var terrain_size = Vector2.ONE * 1000 :
|
||||
set(v):
|
||||
terrain_size = v
|
||||
if border_limit:
|
||||
border_limit.queue_free()
|
||||
border_limit = create_border_limit()
|
||||
|
||||
@onready var border_limit : StaticBody2D = create_border_limit()
|
||||
@onready var entity_container : Node2D = create_entity_container()
|
||||
|
||||
func add_entity(e : Node2D, container : Node2D = entity_container):
|
||||
if e.get_parent():
|
||||
e.get_parent().remove_child(e)
|
||||
|
||||
if "terrain" in e:
|
||||
e.terrain = self
|
||||
|
||||
if e is Player:
|
||||
player = e
|
||||
|
||||
container.add_child(e)
|
||||
|
||||
func remove_entity(e : Node2D, container : Node2D = entity_container):
|
||||
if e.get_parent() == entity_container:
|
||||
container.remove_child(e)
|
||||
|
||||
func create_entity_container() -> Node2D:
|
||||
var container = Node2D.new()
|
||||
container.y_sort_enabled = true
|
||||
@@ -51,25 +55,3 @@ func drop_item(item: Item, item_position : Vector2, random_displacement_factor =
|
||||
|
||||
return item_object
|
||||
|
||||
func create_border_limit() -> StaticBody2D:
|
||||
var static_body = StaticBody2D.new()
|
||||
var static_body_collision = CollisionPolygon2D.new()
|
||||
|
||||
add_child(static_body)
|
||||
static_body.add_child(static_body_collision)
|
||||
|
||||
var size = terrain_size
|
||||
static_body_collision.polygon = PackedVector2Array([
|
||||
Vector2(0,0),
|
||||
Vector2(0, size.y),
|
||||
Vector2(size.x, size.y),
|
||||
Vector2(size.x, 0),
|
||||
Vector2(0,0),
|
||||
Vector2(-BORDER_WIDTH, -BORDER_WIDTH),
|
||||
Vector2(size.x + BORDER_WIDTH, -BORDER_WIDTH),
|
||||
Vector2(size.x + BORDER_WIDTH, size.y + BORDER_WIDTH),
|
||||
Vector2(- BORDER_WIDTH, size.y + BORDER_WIDTH),
|
||||
Vector2(-BORDER_WIDTH, -BORDER_WIDTH)
|
||||
])
|
||||
|
||||
return static_body
|
||||
|
||||
BIN
stages/terrain/truck/assets/sprite/truck_interior.png
Normal file
BIN
stages/terrain/truck/assets/sprite/truck_interior.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.1 MiB |
40
stages/terrain/truck/assets/sprite/truck_interior.png.import
Normal file
40
stages/terrain/truck/assets/sprite/truck_interior.png.import
Normal file
@@ -0,0 +1,40 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://d2p7h0aga85tn"
|
||||
path="res://.godot/imported/truck_interior.png-ff9bd2d0107d83f7c4209d959ee69f15.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://stages/terrain/truck/assets/sprite/truck_interior.png"
|
||||
dest_files=["res://.godot/imported/truck_interior.png-ff9bd2d0107d83f7c4209d959ee69f15.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/uastc_level=0
|
||||
compress/rdo_quality_loss=0.0
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/channel_remap/red=0
|
||||
process/channel_remap/green=1
|
||||
process/channel_remap/blue=2
|
||||
process/channel_remap/alpha=3
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
||||
BIN
stages/terrain/truck/assets/sprite/truck_interior.png~
Normal file
BIN
stages/terrain/truck/assets/sprite/truck_interior.png~
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.1 MiB |
6
stages/terrain/truck/scripts/truck_entrance.gd
Normal file
6
stages/terrain/truck/scripts/truck_entrance.gd
Normal file
@@ -0,0 +1,6 @@
|
||||
extends Node2D
|
||||
class_name TruckEntrance
|
||||
|
||||
var terrain : Terrain
|
||||
var planet : Planet :
|
||||
get(): return terrain if terrain is Planet else null
|
||||
1
stages/terrain/truck/scripts/truck_entrance.gd.uid
Normal file
1
stages/terrain/truck/scripts/truck_entrance.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://byu0woo6o3af0
|
||||
10
stages/terrain/truck/scripts/truck_interior.gd
Normal file
10
stages/terrain/truck/scripts/truck_interior.gd
Normal file
@@ -0,0 +1,10 @@
|
||||
extends Terrain
|
||||
class_name TruckInterior
|
||||
|
||||
signal player_exited(player : Player)
|
||||
|
||||
@onready var spawn_position : Node2D = %SpawnPosition
|
||||
@onready var camera : Camera = %Camera
|
||||
|
||||
func _on_exit_interacted(p: Player):
|
||||
player_exited.emit(p)
|
||||
1
stages/terrain/truck/scripts/truck_interior.gd.uid
Normal file
1
stages/terrain/truck/scripts/truck_interior.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://d0gmkwebxdptk
|
||||
62
stages/terrain/truck/truck_interior.tscn
Normal file
62
stages/terrain/truck/truck_interior.tscn
Normal file
@@ -0,0 +1,62 @@
|
||||
[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"]
|
||||
|
||||
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_wi5be"]
|
||||
radius = 69.76956
|
||||
height = 376.0
|
||||
|
||||
[node name="TruckInterior" type="Node2D"]
|
||||
position = Vector2(-40, -469)
|
||||
script = ExtResource("1_fk6sc")
|
||||
metadata/_custom_type_script = "uid://dfl1ijmbmw57r"
|
||||
|
||||
[node name="Sprite" type="Sprite2D" parent="."]
|
||||
modulate = Color(0.67495143, 0.69801295, 0.68495274, 1)
|
||||
position = Vector2(292, 376)
|
||||
scale = Vector2(0.5, 0.5)
|
||||
texture = ExtResource("1_5c5ey")
|
||||
|
||||
[node name="StaticBody2D" type="StaticBody2D" parent="."]
|
||||
scale = Vector2(0.5, 0.5)
|
||||
|
||||
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="StaticBody2D"]
|
||||
position = Vector2(112.00001, 670)
|
||||
scale = Vector2(0.8064369, 0.8064369)
|
||||
polygon = PackedVector2Array(141.36256, -138.8825, 1616.9894, -111.60202, 1656.67, 461.2884, 389.36707, 466.24847, 386.88702, 545.6099, -173.60316, 533.2097, -141.36258, -57.041016, -2.480053, -89.28162, 109.12198, -106.64194, 131, -327, -487, -326, -465, 841, 2150.1992, 815.9348, 2110.5183, -825.855, -521, -732, -482, -327, 133, -331)
|
||||
|
||||
[node name="SpawnPosition" type="Node2D" parent="."]
|
||||
unique_name_in_owner = true
|
||||
position = Vector2(52, 473.00003)
|
||||
scale = Vector2(0.5539248, 0.5539248)
|
||||
|
||||
[node name="Exit" type="Area2D" parent="."]
|
||||
position = Vector2(47, 497.00003)
|
||||
scale = Vector2(0.5539248, 0.5539248)
|
||||
script = ExtResource("3_fk6sc")
|
||||
default_interact_text = "Exit the truck"
|
||||
default_info_title = "Exit"
|
||||
default_info_desc = "A good old ladder."
|
||||
metadata/_custom_type_script = "uid://dyprcd68fjstf"
|
||||
|
||||
[node name="Bolt" type="Sprite2D" parent="Exit"]
|
||||
position = Vector2(10.831797, -16.24775)
|
||||
scale = Vector2(1.8052993, 1.8052993)
|
||||
texture = ExtResource("3_v18jm")
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="Exit"]
|
||||
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"
|
||||
|
||||
[connection signal="interacted" from="Exit" to="." method="_on_exit_interacted"]
|
||||
Reference in New Issue
Block a user