save work and menu

This commit is contained in:
2025-09-07 23:13:51 +02:00
parent 2dfa874181
commit 1290cd19fb
31 changed files with 647 additions and 4717 deletions

View File

@@ -4,8 +4,8 @@
[ext_resource type="Texture2D" uid="uid://dbingmvgsgvfv" path="res://assets/asteroidx1.png" id="1_u87q6"]
[node name="asteroid" type="RigidBody2D"]
collision_layer = 2
collision_mask = 2
collision_layer = 3
collision_mask = 3
mass = 5.0
contact_monitor = true
max_contacts_reported = 4

View File

@@ -4,8 +4,8 @@
[ext_resource type="Texture2D" uid="uid://bby053xsfn3cp" path="res://assets/asteroidx2.png" id="2_e2m2r"]
[node name="asteroid" type="RigidBody2D"]
collision_layer = 2
collision_mask = 2
collision_layer = 3
collision_mask = 3
mass = 10.0
contact_monitor = true
max_contacts_reported = 4

View File

@@ -4,8 +4,8 @@
[ext_resource type="Texture2D" uid="uid://dt08ism4ulfay" path="res://assets/asteroidx3.png" id="2_beklf"]
[node name="asteroid" type="RigidBody2D"]
collision_layer = 2
collision_mask = 2
collision_layer = 3
collision_mask = 3
mass = 20.0
contact_monitor = true
max_contacts_reported = 4

View File

@@ -4,8 +4,8 @@
[ext_resource type="Texture2D" uid="uid://bs836c8u5j3y6" path="res://assets/asteroidx4.png" id="2_gv6mu"]
[node name="asteroid" type="RigidBody2D"]
collision_layer = 2
collision_mask = 2
collision_layer = 3
collision_mask = 3
mass = 40.0
contact_monitor = true
max_contacts_reported = 4

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=6 format=3 uid="uid://jx8hrj6k1ju8"]
[gd_scene load_steps=9 format=3 uid="uid://jx8hrj6k1ju8"]
[ext_resource type="PackedScene" uid="uid://d1ugwu6dqomtg" path="res://scene/wall.tscn" id="1_7iavl"]
[ext_resource type="Theme" uid="uid://b46gto6k33wqr" path="res://theme.tres" id="3_7iavl"]
@@ -9,6 +9,19 @@ script/source = "extends Button
func _ready() -> void:
grab_focus()
func _on_pressed() -> void:
GameController.emit_signal(\"start_game_one_player\")
"
[sub_resource type="GDScript" id="GDScript_ruca2"]
script/source = "extends Button
func _on_pressed() -> void:
GameController.emit_signal(\"start_game_two_player\")
"
[sub_resource type="GDScript" id="GDScript_7iavl"]
@@ -20,6 +33,34 @@ func _on_pressed() -> void:
get_tree().quit()
"
[sub_resource type="GDScript" id="GDScript_dogtj"]
script/source = "extends Label
func _ready() -> void:
var tableau_paires = []
for key in GameController.score.score_singleplayer:
tableau_paires.append({\"key\": key, \"value\": GameController.score.score_singleplayer[key]})
# Trier par ordre alphabétique
tableau_paires.sort_custom(func(a, b): return a[\"value\"] > b[\"value\"])
for i in range(clamp(5, 0, tableau_paires.size())):
text += tableau_paires[i][\"key\"] + \" : \" + str(tableau_paires[i][\"value\"]) + \"\\n\"
"
[sub_resource type="GDScript" id="GDScript_u3kfb"]
script/source = "extends Label
func _ready() -> void:
var tableau_paires = []
for key in GameController.score.score_multiplayer:
print(key)
tableau_paires.append({\"key\": key, \"value\": GameController.score.score_multiplayer[key]})
# Trier par ordre alphabétique
tableau_paires.sort_custom(func(a, b): return a[\"value\"] < b[\"value\"])
for i in range(clamp(5, 0, tableau_paires.size())):
text += tableau_paires[i][\"key\"] + \" : \" + str(tableau_paires[i][\"value\"]) + \"\\n\"
"
[node name="load_screen" type="Node2D"]
[node name="wall" parent="." node_paths=PackedStringArray("spawner") instance=ExtResource("1_7iavl")]
@@ -29,7 +70,8 @@ spawner = NodePath("../spawner")
[node name="spawner" parent="." node_paths=PackedStringArray("player") instance=ExtResource("3_ruca2")]
player = NodePath("../CharacterBody2D")
delay_spawn = 1.0
distance = 500.0
delay_spawn = 0.5
load_screen = true
[node name="CharacterBody2D" type="CharacterBody2D" parent="."]
@@ -57,6 +99,7 @@ offset_right = 75.5
offset_bottom = 55.0
grow_horizontal = 2
grow_vertical = 2
theme_override_constants/separation = 64
[node name="buttons" type="VBoxContainer" parent="CanvasLayer/Control/HBoxContainer"]
layout_mode = 2
@@ -77,8 +120,8 @@ size_flags_vertical = 0
focus_next = NodePath("../exit")
focus_previous = NodePath("../1")
theme = ExtResource("3_7iavl")
disabled = true
text = "2 Players"
script = SubResource("GDScript_ruca2")
[node name="exit" type="Button" parent="CanvasLayer/Control/HBoxContainer/buttons"]
layout_mode = 2
@@ -92,11 +135,18 @@ script = SubResource("GDScript_7iavl")
[node name="scores" type="VBoxContainer" parent="CanvasLayer/Control/HBoxContainer"]
layout_mode = 2
theme_override_constants/separation = 64
[node name="Label" type="Label" parent="CanvasLayer/Control/HBoxContainer/scores"]
layout_mode = 2
theme = ExtResource("3_7iavl")
script = SubResource("GDScript_dogtj")
[node name="Label2" type="Label" parent="CanvasLayer/Control/HBoxContainer/scores"]
layout_mode = 2
theme = ExtResource("3_7iavl")
script = SubResource("GDScript_u3kfb")
[connection signal="pressed" from="CanvasLayer/Control/HBoxContainer/buttons/1" to="CanvasLayer/Control/HBoxContainer/buttons/1" method="_on_pressed"]
[connection signal="pressed" from="CanvasLayer/Control/HBoxContainer/buttons/2" to="CanvasLayer/Control/HBoxContainer/buttons/2" method="_on_pressed"]
[connection signal="pressed" from="CanvasLayer/Control/HBoxContainer/buttons/exit" to="CanvasLayer/Control/HBoxContainer/buttons/exit" method="_on_pressed"]

View File

@@ -1,8 +1,9 @@
[gd_scene load_steps=4 format=3 uid="uid://btcb75wp78ory"]
[gd_scene load_steps=5 format=3 uid="uid://btcb75wp78ory"]
[ext_resource type="PackedScene" uid="uid://d1ugwu6dqomtg" path="res://scene/wall.tscn" id="1_u115g"]
[ext_resource type="PackedScene" uid="uid://36q833dx6dmq" path="res://scene/ship.tscn" id="2_02eqj"]
[ext_resource type="PackedScene" uid="uid://b6hqwxrexoa2n" path="res://scene/spawner.tscn" id="3_50rem"]
[ext_resource type="PackedScene" uid="uid://c6dtnhntsit8m" path="res://scene/ui.tscn" id="4_02eqj"]
[node name="main_game" type="Node2D"]
@@ -10,9 +11,10 @@
spawner = NodePath("../spawner")
[node name="Camera2D" type="Camera2D" parent="."]
zoom = Vector2(0.375, 0.375)
[node name="CharacterBody2D" parent="." instance=ExtResource("2_02eqj")]
[node name="spawner" parent="." node_paths=PackedStringArray("player") instance=ExtResource("3_50rem")]
player = NodePath("../CharacterBody2D")
[node name="UI" parent="." instance=ExtResource("4_02eqj")]

View File

@@ -0,0 +1,26 @@
[gd_scene load_steps=5 format=3 uid="uid://diofotlwedch3"]
[ext_resource type="PackedScene" uid="uid://d1ugwu6dqomtg" path="res://scene/wall.tscn" id="1_xu8ia"]
[ext_resource type="PackedScene" uid="uid://36q833dx6dmq" path="res://scene/ship.tscn" id="2_xilri"]
[ext_resource type="PackedScene" uid="uid://b6hqwxrexoa2n" path="res://scene/spawner.tscn" id="3_hepd6"]
[ext_resource type="PackedScene" uid="uid://c6dtnhntsit8m" path="res://scene/ui.tscn" id="4_xilri"]
[node name="main_game_2_player" type="Node2D"]
[node name="wall" parent="." node_paths=PackedStringArray("spawner") instance=ExtResource("1_xu8ia")]
spawner = NodePath("../spawner")
[node name="Camera2D" type="Camera2D" parent="."]
[node name="CharacterBody2D" parent="." instance=ExtResource("2_xilri")]
position = Vector2(-141, -33)
rotation = -1.5708
[node name="CharacterBody2D2" parent="." instance=ExtResource("2_xilri")]
position = Vector2(115, -33)
rotation = -1.5708
[node name="spawner" parent="." node_paths=PackedStringArray("player") instance=ExtResource("3_hepd6")]
player = NodePath("../CharacterBody2D")
[node name="UI" parent="." instance=ExtResource("4_xilri")]

92
scene/score_saver.tscn Normal file
View File

@@ -0,0 +1,92 @@
[gd_scene load_steps=4 format=3 uid="uid://cg11wahb2kyqs"]
[ext_resource type="Script" uid="uid://byok0e08rgu4l" path="res://script/score_saver.gd" id="1_3aw1o"]
[ext_resource type="Theme" uid="uid://b46gto6k33wqr" path="res://theme.tres" id="1_sa1is"]
[sub_resource type="GDScript" id="GDScript_sa1is"]
script/source = "extends ItemList
func _ready() -> void:
grab_focus()
"
[node name="score_saver" type="Node2D" node_paths=PackedStringArray("keyboard", "label_name")]
script = ExtResource("1_3aw1o")
keyboard = NodePath("Control/ItemList")
label_name = NodePath("Control/Label")
[node name="ColorRect" type="ColorRect" parent="."]
custom_minimum_size = Vector2(640, 640)
offset_right = 640.0
offset_bottom = 640.0
color = Color(0, 0, 0, 1)
[node name="Control" type="Control" parent="."]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="ItemList" type="ItemList" parent="Control"]
layout_mode = 0
offset_top = 425.0
offset_right = 641.0
offset_bottom = 640.0
theme = ExtResource("1_sa1is")
auto_width = true
item_count = 32
max_columns = 11
item_0/text = "A"
item_1/text = "B"
item_2/text = "C"
item_3/text = "D"
item_4/text = "E"
item_5/text = "F"
item_6/text = "G"
item_7/text = "H"
item_8/text = " "
item_8/selectable = false
item_8/disabled = true
item_9/text = "Back"
item_10/text = " "
item_10/selectable = false
item_10/disabled = true
item_11/text = "I"
item_12/text = "J"
item_13/text = "K"
item_14/text = "L"
item_15/text = "M"
item_16/text = "N"
item_17/text = "O"
item_18/text = "P"
item_19/text = " "
item_19/selectable = false
item_19/disabled = true
item_20/text = "Enter"
item_21/text = " "
item_21/selectable = false
item_21/disabled = true
item_22/text = "Q"
item_23/text = "R"
item_24/text = "S"
item_25/text = "T"
item_26/text = "U"
item_27/text = "V"
item_28/text = "W"
item_29/text = "X"
item_30/text = "Y"
item_31/text = "Z"
script = SubResource("GDScript_sa1is")
[node name="Label" type="Label" parent="Control"]
layout_mode = 1
offset_right = 463.0
offset_bottom = 160.0
theme = ExtResource("1_sa1is")
theme_override_font_sizes/font_size = 64
text = "Player Name 0/15:"
[connection signal="item_activated" from="Control/ItemList" to="." method="_on_item_list_item_activated"]
[connection signal="item_selected" from="Control/ItemList" to="." method="_on_item_list_item_selected"]

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=5 format=3 uid="uid://36q833dx6dmq"]
[gd_scene load_steps=8 format=3 uid="uid://36q833dx6dmq"]
[ext_resource type="Script" uid="uid://c3i2bhlectmoo" path="res://script/ship.gd" id="1_4cq66"]
[ext_resource type="Texture2D" uid="uid://b037piy3tkefs" path="res://assets/ship.png" id="1_l3rv8"]
@@ -6,11 +6,48 @@
[sub_resource type="RectangleShape2D" id="RectangleShape2D_4cq66"]
[node name="CharacterBody2D" type="CharacterBody2D"]
collision_layer = 3
collision_mask = 3
[sub_resource type="Animation" id="Animation_bf7x5"]
resource_name = "blink"
length = 2.0
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Ship:modulate")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.2, 0.4, 0.601246, 0.801246, 1, 1.20781, 1.40781, 1.60781, 1.80906, 2),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1),
"update": 0,
"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 0), Color(1, 1, 1, 1), Color(1, 1, 1, 0), Color(1, 1, 1, 1), Color(1, 1, 1, 0), Color(1, 1, 1, 1), Color(1, 1, 1, 0), Color(1, 1, 1, 1), Color(1, 1, 1, 0), Color(1, 1, 1, 1)]
}
[sub_resource type="Animation" id="Animation_fbih1"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Ship:modulate")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 1)]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_l7n8u"]
_data = {
&"RESET": SubResource("Animation_fbih1"),
&"blink": SubResource("Animation_bf7x5")
}
[node name="CharacterBody2D" type="CharacterBody2D" node_paths=PackedStringArray("animation")]
script = ExtResource("1_4cq66")
SHOOT_NODE = ExtResource("2_v4325")
TIME_INVUL = 2.0
animation = NodePath("AnimationPlayer")
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
rotation = 1.5708
@@ -20,3 +57,8 @@ shape = SubResource("RectangleShape2D_4cq66")
texture_filter = 1
rotation = 1.5708
texture = ExtResource("1_l3rv8")
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
libraries = {
&"": SubResource("AnimationLibrary_l7n8u")
}

View File

@@ -20,3 +20,5 @@ texture = ExtResource("1_ttj7r")
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
shape = SubResource("CircleShape2D_yt1ub")
[connection signal="body_entered" from="." to="." method="_on_body_entered"]

71
scene/ui.tscn Normal file
View File

@@ -0,0 +1,71 @@
[gd_scene load_steps=4 format=3 uid="uid://c6dtnhntsit8m"]
[ext_resource type="Script" uid="uid://b0oww62n1rvul" path="res://script/ui.gd" id="1_kee8w"]
[ext_resource type="Texture2D" uid="uid://b037piy3tkefs" path="res://assets/ship.png" id="1_onfsl"]
[ext_resource type="Theme" uid="uid://b46gto6k33wqr" path="res://theme.tres" id="1_s2f8l"]
[node name="UI" type="CanvasLayer" node_paths=PackedStringArray("box_player1", "label_score")]
script = ExtResource("1_kee8w")
box_player1 = NodePath("Control/player1")
label_score = NodePath("Control/Label")
[node name="Control" type="Control" parent="."]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="player1" type="HBoxContainer" parent="Control"]
layout_mode = 1
anchors_preset = 2
anchor_top = 1.0
anchor_bottom = 1.0
offset_top = -32.0
offset_right = 96.0
grow_vertical = 0
theme_override_constants/separation = 0
[node name="PanelContainer" type="PanelContainer" parent="Control/player1"]
custom_minimum_size = Vector2(32, 32)
layout_mode = 2
theme = ExtResource("1_s2f8l")
[node name="Ship" type="Sprite2D" parent="Control/player1/PanelContainer"]
texture = ExtResource("1_onfsl")
centered = false
[node name="PanelContainer2" type="PanelContainer" parent="Control/player1"]
custom_minimum_size = Vector2(32, 32)
layout_mode = 2
theme = ExtResource("1_s2f8l")
[node name="Ship" type="Sprite2D" parent="Control/player1/PanelContainer2"]
texture = ExtResource("1_onfsl")
centered = false
[node name="PanelContainer3" type="PanelContainer" parent="Control/player1"]
custom_minimum_size = Vector2(32, 32)
layout_mode = 2
theme = ExtResource("1_s2f8l")
[node name="Ship" type="Sprite2D" parent="Control/player1/PanelContainer3"]
texture = ExtResource("1_onfsl")
centered = false
[node name="Label" type="Label" parent="Control"]
layout_mode = 1
anchors_preset = 3
anchor_left = 1.0
anchor_top = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = -40.0
offset_top = -23.0
grow_horizontal = 0
grow_vertical = 0
theme = ExtResource("1_s2f8l")
text = "0"
horizontal_alignment = 2
vertical_alignment = 1