Ver Fonte

:construction: first loot options

Felix Bytow há 10 meses atrás
pai
commit
196c2a4857

+ 6 - 0
assets/autoload/global_input.gd

@@ -5,6 +5,7 @@ const FULL_SCREEN_MODES: Array[DisplayServer.WindowMode] = [
 	DisplayServer.WINDOW_MODE_FULLSCREEN,
 ]
 
+var dragging_disabled = false
 var dragged_object: Node2D = null
 var drop_spot: Node2D = null
 var original_z: int = 0
@@ -15,6 +16,10 @@ func is_dragging() -> bool:
 func start_dragging(object: Node2D):
 	assert(object != null)
 	stop_dragging()
+	
+	if dragging_disabled:
+		return
+	
 	dragged_object = object
 	original_z = dragged_object.z_index
 	dragged_object.z_index = 1000
@@ -24,6 +29,7 @@ func stop_dragging():
 		if drop_spot != null:
 			drop_spot.drop(dragged_object)
 		dragged_object.position = Vector2.ZERO
+		dragged_object.rotation = 0.0
 		dragged_object.z_index = original_z
 		dragged_object = null
 

+ 2 - 2
assets/scenes/transition.gd

@@ -25,7 +25,7 @@ func slide_out():
 
 func transition(display_text: String = "", callback: Callable = Callable()):
 	text = display_text
-	slide_in()
+	await slide_in()
 	callback.call()
 	await get_tree().create_timer(2).timeout
-	slide_out()
+	await slide_out()

+ 35 - 0
assets/scenes/victory.gd

@@ -0,0 +1,35 @@
+extends Control
+class_name Victory
+
+signal loot_selected(index: int)
+
+@onready var animation: AnimationPlayer = $AnimationPlayer
+@onready var loot_button_1: Button = $VBoxContainer/Loot1Button
+@onready var loot_button_2: Button = $VBoxContainer/Loot2Button
+@onready var loot_button_3: Button = $VBoxContainer/Loot3Button
+
+var selection: int = -1
+
+func _ready() -> void:
+	animation.play("open")
+
+func set_loot_options(opt1: String, opt2: String, opt3: String) -> void:
+	loot_button_1.text = opt1
+	loot_button_2.text = opt2
+	loot_button_3.text = opt3
+
+func close(selected_loot: int) -> void:
+	selection = selected_loot
+	animation.play("close")
+	await animation.animation_finished
+	loot_selected.emit(selected_loot)
+	queue_free()
+
+func _on_loot_1_button_pressed():
+	close(0)
+
+func _on_loot_2_button_pressed():
+	close(1)
+
+func _on_loot_3_button_pressed():
+	close(2)

+ 246 - 0
assets/scenes/victory.tscn

@@ -0,0 +1,246 @@
+[gd_scene load_steps=18 format=3 uid="uid://da5qhyxbn7ij0"]
+
+[ext_resource type="Script" path="res://assets/scenes/victory.gd" id="1_xdx2i"]
+[ext_resource type="Texture2D" uid="uid://cpefd3ejowpm1" path="res://assets/textures/game_over/failure_2.png" id="2_3td6g"]
+[ext_resource type="Texture2D" uid="uid://boluxlomkwh4g" path="res://assets/textures/success/success_10.png" id="3_npwom"]
+[ext_resource type="Texture2D" uid="uid://bkos3wlwe2ljg" path="res://assets/textures/success/success_9.png" id="4_spnva"]
+[ext_resource type="Texture2D" uid="uid://ce1xgup6kidgi" path="res://assets/textures/success/success_8.png" id="5_uwqyk"]
+[ext_resource type="Texture2D" uid="uid://dv2xp2p6rr31v" path="res://assets/textures/success/success_7.png" id="6_mvx43"]
+[ext_resource type="Texture2D" uid="uid://bpmn5m2xlsra2" path="res://assets/textures/success/success_6.png" id="7_2u4aw"]
+[ext_resource type="Texture2D" uid="uid://cuin5sdi000tk" path="res://assets/textures/success/success_5.png" id="8_ptg32"]
+[ext_resource type="Texture2D" uid="uid://fxrvurwm10nu" path="res://assets/textures/success/success_4.png" id="9_5be4b"]
+[ext_resource type="Texture2D" uid="uid://ccexxcp3ekaw0" path="res://assets/textures/success/success_3.png" id="10_cr7ah"]
+[ext_resource type="Texture2D" uid="uid://d4lskgsgq0ug0" path="res://assets/textures/success/success_2.png" id="11_qdgok"]
+[ext_resource type="Texture2D" uid="uid://ba2ko85pm1oge" path="res://assets/textures/success/success_1.png" id="12_wbybd"]
+[ext_resource type="AudioStream" uid="uid://b74te21vx8th" path="res://assets/audio/Success_V2.wav" id="13_kn5eg"]
+
+[sub_resource type="Animation" id="Animation_bfgqb"]
+length = 0.5
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("Background:texture")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [ExtResource("2_3td6g")]
+}
+tracks/1/type = "value"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath("VBoxContainer/Loot1Button:visible")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [true]
+}
+tracks/2/type = "value"
+tracks/2/imported = false
+tracks/2/enabled = true
+tracks/2/path = NodePath("VBoxContainer/Loot3Button:visible")
+tracks/2/interp = 1
+tracks/2/loop_wrap = true
+tracks/2/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [false]
+}
+tracks/3/type = "value"
+tracks/3/imported = false
+tracks/3/enabled = true
+tracks/3/path = NodePath("VBoxContainer/Loot2Button:visible")
+tracks/3/interp = 1
+tracks/3/loop_wrap = true
+tracks/3/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [false]
+}
+
+[sub_resource type="Animation" id="Animation_yytoc"]
+resource_name = "close"
+length = 0.45
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("Background:texture")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45),
+"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1),
+"update": 1,
+"values": [ExtResource("3_npwom"), ExtResource("4_spnva"), ExtResource("5_uwqyk"), ExtResource("6_mvx43"), ExtResource("7_2u4aw"), ExtResource("8_ptg32"), ExtResource("9_5be4b"), ExtResource("10_cr7ah"), ExtResource("11_qdgok"), ExtResource("12_wbybd")]
+}
+tracks/1/type = "value"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath("VBoxContainer/Loot1Button:visible")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [false]
+}
+tracks/2/type = "value"
+tracks/2/imported = false
+tracks/2/enabled = true
+tracks/2/path = NodePath("VBoxContainer/Loot2Button:visible")
+tracks/2/interp = 1
+tracks/2/loop_wrap = true
+tracks/2/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [false]
+}
+tracks/3/type = "value"
+tracks/3/imported = false
+tracks/3/enabled = true
+tracks/3/path = NodePath("VBoxContainer/Loot3Button:visible")
+tracks/3/interp = 1
+tracks/3/loop_wrap = true
+tracks/3/keys = {
+"times": PackedFloat32Array(0),
+"transitions": PackedFloat32Array(1),
+"update": 1,
+"values": [false]
+}
+
+[sub_resource type="Animation" id="Animation_a40w7"]
+resource_name = "open"
+length = 0.45
+tracks/0/type = "value"
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/path = NodePath("Background:texture")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/keys = {
+"times": PackedFloat32Array(0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45),
+"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1),
+"update": 1,
+"values": [ExtResource("12_wbybd"), ExtResource("11_qdgok"), ExtResource("10_cr7ah"), ExtResource("9_5be4b"), ExtResource("8_ptg32"), ExtResource("7_2u4aw"), ExtResource("6_mvx43"), ExtResource("5_uwqyk"), ExtResource("4_spnva"), ExtResource("3_npwom")]
+}
+tracks/1/type = "value"
+tracks/1/imported = false
+tracks/1/enabled = true
+tracks/1/path = NodePath("VBoxContainer/Loot1Button:visible")
+tracks/1/interp = 1
+tracks/1/loop_wrap = true
+tracks/1/keys = {
+"times": PackedFloat32Array(0, 0.45),
+"transitions": PackedFloat32Array(1, 1),
+"update": 1,
+"values": [false, true]
+}
+tracks/2/type = "value"
+tracks/2/imported = false
+tracks/2/enabled = true
+tracks/2/path = NodePath("VBoxContainer/Loot2Button:visible")
+tracks/2/interp = 1
+tracks/2/loop_wrap = true
+tracks/2/keys = {
+"times": PackedFloat32Array(0, 0.45),
+"transitions": PackedFloat32Array(1, 1),
+"update": 1,
+"values": [false, true]
+}
+tracks/3/type = "value"
+tracks/3/imported = false
+tracks/3/enabled = true
+tracks/3/path = NodePath("VBoxContainer/Loot3Button:visible")
+tracks/3/interp = 1
+tracks/3/loop_wrap = true
+tracks/3/keys = {
+"times": PackedFloat32Array(0, 0.45),
+"transitions": PackedFloat32Array(1, 1),
+"update": 1,
+"values": [false, true]
+}
+
+[sub_resource type="AnimationLibrary" id="AnimationLibrary_fmmxf"]
+_data = {
+"RESET": SubResource("Animation_bfgqb"),
+"close": SubResource("Animation_yytoc"),
+"open": SubResource("Animation_a40w7")
+}
+
+[node name="Victory" type="Control"]
+process_mode = 3
+layout_mode = 3
+anchors_preset = 15
+anchor_right = 1.0
+anchor_bottom = 1.0
+grow_horizontal = 2
+grow_vertical = 2
+script = ExtResource("1_xdx2i")
+
+[node name="Background" type="TextureRect" parent="."]
+layout_mode = 1
+anchors_preset = 8
+anchor_left = 0.5
+anchor_top = 0.5
+anchor_right = 0.5
+anchor_bottom = 0.5
+offset_left = -20.0
+offset_top = -20.0
+offset_right = 20.0
+offset_bottom = 20.0
+grow_horizontal = 2
+grow_vertical = 2
+texture = ExtResource("2_3td6g")
+
+[node name="VBoxContainer" type="VBoxContainer" parent="."]
+layout_mode = 1
+anchors_preset = 8
+anchor_left = 0.5
+anchor_top = 0.5
+anchor_right = 0.5
+anchor_bottom = 0.5
+offset_left = -180.0
+offset_top = -64.0
+offset_right = 180.0
+offset_bottom = 176.0
+grow_horizontal = 2
+grow_vertical = 2
+
+[node name="Loot1Button" type="Button" parent="VBoxContainer"]
+layout_mode = 2
+theme_override_font_sizes/font_size = 42
+text = "LOOT 1"
+
+[node name="Loot2Button" type="Button" parent="VBoxContainer"]
+visible = false
+layout_mode = 2
+theme_override_font_sizes/font_size = 42
+text = "LOOT 2"
+
+[node name="Loot3Button" type="Button" parent="VBoxContainer"]
+visible = false
+layout_mode = 2
+theme_override_font_sizes/font_size = 42
+text = "LOOT 3"
+
+[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
+libraries = {
+"": SubResource("AnimationLibrary_fmmxf")
+}
+
+[node name="VoiceOver" type="AudioStreamPlayer" parent="."]
+stream = ExtResource("13_kn5eg")
+autoplay = true
+
+[connection signal="pressed" from="VBoxContainer/Loot1Button" to="." method="_on_loot_1_button_pressed"]
+[connection signal="pressed" from="VBoxContainer/Loot2Button" to="." method="_on_loot_2_button_pressed"]
+[connection signal="pressed" from="VBoxContainer/Loot3Button" to="." method="_on_loot_3_button_pressed"]

BIN
assets/textures/success/success_1.png


+ 34 - 0
assets/textures/success/success_1.png.import

@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://ba2ko85pm1oge"
+path="res://.godot/imported/success_1.png-1433e692080f6ed4bd09e04fc323c152.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://assets/textures/success/success_1.png"
+dest_files=["res://.godot/imported/success_1.png-1433e692080f6ed4bd09e04fc323c152.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+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/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
assets/textures/success/success_10.png


+ 34 - 0
assets/textures/success/success_10.png.import

@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://boluxlomkwh4g"
+path="res://.godot/imported/success_10.png-cb3b9f83c43a4e195bf35f09bda0d3f7.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://assets/textures/success/success_10.png"
+dest_files=["res://.godot/imported/success_10.png-cb3b9f83c43a4e195bf35f09bda0d3f7.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+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/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
assets/textures/success/success_2.png


+ 34 - 0
assets/textures/success/success_2.png.import

@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://d4lskgsgq0ug0"
+path="res://.godot/imported/success_2.png-099b68c18bdafdf4dbd6bf56ed7fbf61.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://assets/textures/success/success_2.png"
+dest_files=["res://.godot/imported/success_2.png-099b68c18bdafdf4dbd6bf56ed7fbf61.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+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/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
assets/textures/success/success_3.png


+ 34 - 0
assets/textures/success/success_3.png.import

@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://ccexxcp3ekaw0"
+path="res://.godot/imported/success_3.png-1a67c631118d3ec32ef0e294e740f929.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://assets/textures/success/success_3.png"
+dest_files=["res://.godot/imported/success_3.png-1a67c631118d3ec32ef0e294e740f929.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+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/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
assets/textures/success/success_4.png


+ 34 - 0
assets/textures/success/success_4.png.import

@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://fxrvurwm10nu"
+path="res://.godot/imported/success_4.png-76aacabafb8a034fd6d649fca3e92f24.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://assets/textures/success/success_4.png"
+dest_files=["res://.godot/imported/success_4.png-76aacabafb8a034fd6d649fca3e92f24.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+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/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
assets/textures/success/success_5.png


+ 34 - 0
assets/textures/success/success_5.png.import

@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cuin5sdi000tk"
+path="res://.godot/imported/success_5.png-61c7dcfb08285d434e4a329bdc881689.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://assets/textures/success/success_5.png"
+dest_files=["res://.godot/imported/success_5.png-61c7dcfb08285d434e4a329bdc881689.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+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/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
assets/textures/success/success_6.png


+ 34 - 0
assets/textures/success/success_6.png.import

@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bpmn5m2xlsra2"
+path="res://.godot/imported/success_6.png-73ee44dc76ba469d7cf95d3bd7dd51b6.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://assets/textures/success/success_6.png"
+dest_files=["res://.godot/imported/success_6.png-73ee44dc76ba469d7cf95d3bd7dd51b6.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+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/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
assets/textures/success/success_7.png


+ 34 - 0
assets/textures/success/success_7.png.import

@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dv2xp2p6rr31v"
+path="res://.godot/imported/success_7.png-34e876ec1fdd8b41114b1decac826398.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://assets/textures/success/success_7.png"
+dest_files=["res://.godot/imported/success_7.png-34e876ec1fdd8b41114b1decac826398.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+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/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
assets/textures/success/success_8.png


+ 34 - 0
assets/textures/success/success_8.png.import

@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://ce1xgup6kidgi"
+path="res://.godot/imported/success_8.png-d5c1a581ef9c074ad90cacbae73d11cf.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://assets/textures/success/success_8.png"
+dest_files=["res://.godot/imported/success_8.png-d5c1a581ef9c074ad90cacbae73d11cf.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+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/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
assets/textures/success/success_9.png


+ 34 - 0
assets/textures/success/success_9.png.import

@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bkos3wlwe2ljg"
+path="res://.godot/imported/success_9.png-515524b0726a06327ee6f159f715713e.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://assets/textures/success/success_9.png"
+dest_files=["res://.godot/imported/success_9.png-515524b0726a06327ee6f159f715713e.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+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/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

+ 33 - 14
screens/game.gd

@@ -11,11 +11,11 @@ extends Node2D
 @onready var next_phase_button: Button = $UI/Root/NextPhaseButton
 
 @onready var combat_start_sound: AudioStreamPlayer = $Sounds/CombatStartSound
-@onready var combat_end_sound: AudioStreamPlayer = $Sounds/CombatEndSound
 
 @onready var main_menu: PackedScene = load("res://screens/main_menu.tscn")
 @onready var bot_scene: PackedScene = load("res://assets/scenes/bot.tscn")
 @onready var game_over_scene: PackedScene = load("res://assets/scenes/game_over.tscn")
+@onready var victory_scene: PackedScene = load("res://assets/scenes/victory.tscn")
 
 @onready var spawn_points: Array[Marker2D] = [
 	$EnemySpawns/EnemySpawn_1,
@@ -29,6 +29,12 @@ enum Phase {
 	PHASE_LOOT,
 }
 
+enum Loot {
+	LOOT_SURVIVOR,
+	LOOT_HEAL,
+	LOOT_LOWER_COOLDOWN,
+}
+
 var phase: Phase = Phase.PHASE_SETUP:
 	set(new_value):
 		phase = new_value
@@ -102,6 +108,7 @@ func reset_survivors() -> void:
 	for survivor in survivors:
 		player_spawn.drop(survivor)
 		survivor.position = Vector2.ZERO
+		survivor.rotation = 0.0
 
 func _on_timer_timeout() -> void:
 	activate_foe()
@@ -121,28 +128,46 @@ func game_over() -> void:
 	gos.message = "YOU DIED AFTER\nCOMPLETING %d WAVES!" % waves_completed
 	ui_root.add_child(gos)
 	await gos.closed
-	
-	go_to_main_menu()
+	await go_to_main_menu()
 
 func _on_base_area_entered(area: Area2D) -> void:
 	if area.is_in_group("foe") || area.is_in_group("foe_weapons"):
 		base_hit()
 
 func start_combat() -> void:
+	GlobalInput.dragging_disabled = true
 	for n in (waves_completed + 1):
 		var spawner = spawn_points.pick_random()
 		spawn_bot(spawner)
-	spawn_timer.wait_time = 3.5
+	spawn_timer.wait_time = lerpf(3.5, 0.5, minf(float(waves_completed)/20.0, 1.0))
 	spawn_timer.start()
 	combat_start_sound.play()
 	activate_foe()
 
 func end_combat() -> void:
 	phase = Phase.PHASE_LOOT
-	next_phase_button.disabled = false
-	next_phase_button.text = "ACCEPT"
 	spawn_timer.stop()
-	combat_end_sound.play()
+	var vs: Victory = victory_scene.instantiate()
+	ui_root.add_child(vs)
+	vs.set_loot_options("+1 SURVIVOR", "+3 HEALTH", "FASTER SHOTS")
+	await vs.loot_selected
+	var loot = vs.selection
+	print("selected loot: " + str(loot))
+	var next_wave = waves_completed + 2
+	await transition.transition("WAVE %d" % next_wave, func ():
+		self.waves_completed += 1
+		self.phase = Phase.PHASE_SETUP
+		self.next_phase_button.disabled = false
+		self.reset_survivors()
+		match loot:
+			0:
+				self.player_spawn.add_survivor()
+			1:
+				self.health_bar.health += 3
+			2:
+				pass # TODO: increase fire rate
+	)
+	GlobalInput.dragging_disabled = false
 
 func _on_next_phase_button_pressed() -> void:
 	match phase:
@@ -153,10 +178,4 @@ func _on_next_phase_button_pressed() -> void:
 		Phase.PHASE_COMBAT:
 			pass # this should not happen
 		Phase.PHASE_LOOT:
-			var next_wave = waves_completed + 2
-			transition.transition("WAVE %d" % next_wave, func ():
-				self.waves_completed += 1
-				self.phase = Phase.PHASE_SETUP
-				self.next_phase_button.text = "NEXT PHASE"
-				self.reset_survivors()
-			)
+			pass # this should not happen

+ 7 - 5
screens/game.tscn

@@ -1,4 +1,4 @@
-[gd_scene load_steps=13 format=3 uid="uid://c483fkssc36s"]
+[gd_scene load_steps=12 format=3 uid="uid://c483fkssc36s"]
 
 [ext_resource type="Script" path="res://screens/game.gd" id="1_4dd0q"]
 [ext_resource type="Texture2D" uid="uid://ceelbowk0q0rl" path="res://assets/textures/room/Light_Overlay.png" id="2_px5xi"]
@@ -9,7 +9,6 @@
 [ext_resource type="PackedScene" uid="uid://cbmr1tbvbheda" path="res://assets/scenes/survivor_spot.tscn" id="6_c1csp"]
 [ext_resource type="PackedScene" uid="uid://bw0opjv1ewa8b" path="res://assets/scenes/player_spawn_zone.tscn" id="7_k4x0x"]
 [ext_resource type="AudioStream" uid="uid://evkshq2p1b3t" path="res://assets/audio/Begin_V2.wav" id="9_eq4qn"]
-[ext_resource type="AudioStream" uid="uid://b74te21vx8th" path="res://assets/audio/Success_V2.wav" id="10_w3850"]
 
 [sub_resource type="CanvasItemMaterial" id="CanvasItemMaterial_yhw6y"]
 blend_mode = 1
@@ -121,6 +120,7 @@ position = Vector2(641, 207)
 
 [node name="SurvivorSpot" parent="SurvivorSpots" instance=ExtResource("6_c1csp")]
 position = Vector2(497, 451)
+rotation = -0.785398
 
 [node name="SurvivorSpot7" parent="SurvivorSpots" instance=ExtResource("6_c1csp")]
 position = Vector2(575, 451)
@@ -133,27 +133,29 @@ position = Vector2(701, 451)
 
 [node name="SurvivorSpot2" parent="SurvivorSpots" instance=ExtResource("6_c1csp")]
 position = Vector2(497, 511)
+rotation = -1.5708
 
 [node name="SurvivorSpot3" parent="SurvivorSpots" instance=ExtResource("6_c1csp")]
 position = Vector2(497, 570)
+rotation = -1.5708
 
 [node name="SurvivorSpot4" parent="SurvivorSpots" instance=ExtResource("6_c1csp")]
 position = Vector2(778, 451)
+rotation = 0.785398
 
 [node name="SurvivorSpot5" parent="SurvivorSpots" instance=ExtResource("6_c1csp")]
 position = Vector2(778, 511)
+rotation = 1.5708
 
 [node name="SurvivorSpot6" parent="SurvivorSpots" instance=ExtResource("6_c1csp")]
 position = Vector2(778, 570)
+rotation = 1.5708
 
 [node name="Sounds" type="Node" parent="."]
 
 [node name="CombatStartSound" type="AudioStreamPlayer" parent="Sounds"]
 stream = ExtResource("9_eq4qn")
 
-[node name="CombatEndSound" type="AudioStreamPlayer" parent="Sounds"]
-stream = ExtResource("10_w3850")
-
 [connection signal="timeout" from="Timer" to="." method="_on_timer_timeout"]
 [connection signal="pressed" from="UI/Root/NextPhaseButton" to="." method="_on_next_phase_button_pressed"]
 [connection signal="area_entered" from="Base" to="." method="_on_base_area_entered"]