Compare commits

...

9 Commits

21 changed files with 1021 additions and 192 deletions

View File

@ -35,7 +35,7 @@ load-constant-name: (([A-Z][a-z0-9]*)+|_?[A-Z][A-Z0-9]*(_[A-Z0-9]+)*)
loop-variable-name: _?[a-z][a-z0-9]*(_[a-z0-9]+)*
max-file-lines: 1000
max-line-length: 100
max-public-methods: 20
max-public-methods: 40
max-returns: 6
mixed-tabs-and-spaces: null
no-elif-return: null

View File

@ -53,6 +53,12 @@ Asset credits
*** License: OFL 1.1
** Two Weekends Sans
*** Retrieved from https://github.com/AlphaZTX/Two-Weekends-Sans
*** License: OFL 1.1
* Sound
** drive1.wav

View File

@ -0,0 +1,7 @@
[gd_resource type="FontVariation" load_steps=2 format=3 uid="uid://dvgdisbh5rhw3"]
[ext_resource type="FontFile" uid="uid://gmoy5so1q8pt" path="res://assets/fonts/twoweekendssans/twoweekendssans-regular.otf" id="1_ybe2l"]
[resource]
base_font = ExtResource("1_ybe2l")
baseline_offset = 0.1

View File

@ -0,0 +1,8 @@
[gd_resource type="FontVariation" load_steps=2 format=3 uid="uid://bwkgmcww503uf"]
[ext_resource type="FontFile" uid="uid://gmoy5so1q8pt" path="res://assets/fonts/twoweekendssans/twoweekendssans-regular.otf" id="1_remmo"]
[resource]
base_font = ExtResource("1_remmo")
variation_embolden = 0.8
baseline_offset = 0.1

View File

@ -0,0 +1,8 @@
[gd_resource type="FontVariation" load_steps=2 format=3 uid="uid://bekh6jfretwuu"]
[ext_resource type="FontFile" uid="uid://gmoy5so1q8pt" path="res://assets/fonts/twoweekendssans/twoweekendssans-regular.otf" id="1_q528l"]
[resource]
base_font = ExtResource("1_q528l")
variation_transform = Transform2D(1, 0.2, 0, 1, 0, 0)
baseline_offset = 0.1

View File

@ -0,0 +1,34 @@
[remap]
importer="font_data_dynamic"
type="FontFile"
uid="uid://gmoy5so1q8pt"
path="res://.godot/imported/twoweekendssans-regular.otf-d398b11ad37476a7fdda48f9ce7f7243.fontdata"
[deps]
source_file="res://assets/fonts/twoweekendssans/twoweekendssans-regular.otf"
dest_files=["res://.godot/imported/twoweekendssans-regular.otf-d398b11ad37476a7fdda48f9ce7f7243.fontdata"]
[params]
Rendering=null
antialiasing=2
generate_mipmaps=true
disable_embedded_bitmaps=true
multichannel_signed_distance_field=false
msdf_pixel_range=8
msdf_size=48
allow_system_fallback=true
force_autohinter=false
hinting=1
subpixel_positioning=1
oversampling=0.0
Fallbacks=null
fallbacks=[Resource("res://assets/fonts/promptfont/promptfont.otf")]
Compress=null
compress=true
preload=[]
language_support={}
script_support={}
opentype_features={}

View File

@ -125,6 +125,16 @@ ACTION_pause,Pause
ACTION_ball_next,"Select next ball"
ACTION_ball_previous,"Select previous ball"
,
ACTION_FREE_CAMERA,"Free Camera"
ACTION_AIM,Aim
ACTION_ZOOM,Zoom
ACTION_HOLD_MODIFIER,(hold)
ACTION_SET_POWER,"Set Power Level"
ACTION_SET_CURVE,"Set Shot Curve"
ACTION_CHANGE_BALL,"Switch Ball"
ACTION_CHANGE_CLUB,"Switch Club"
ACTION_FREE_CAM_MOVE,"Move Camera"
,
CLUB_DRIVER,Driver
CLUB_IRON,Iron
CLUB_WEDGE,Wedge

1 keys en
125 ACTION_ball_next Select next ball
126 ACTION_ball_previous Select previous ball
127
128 ACTION_FREE_CAMERA Free Camera
129 ACTION_AIM Aim
130 ACTION_ZOOM Zoom
131 ACTION_HOLD_MODIFIER (hold)
132 ACTION_SET_POWER Set Power Level
133 ACTION_SET_CURVE Set Shot Curve
134 ACTION_CHANGE_BALL Switch Ball
135 ACTION_CHANGE_CLUB Switch Club
136 ACTION_FREE_CAM_MOVE Move Camera
137
138 CLUB_DRIVER Driver
139 CLUB_IRON Iron
140 CLUB_WEDGE Wedge

View File

@ -57,7 +57,7 @@ environment = SubResource("Environment_og4m2")
camera_attributes = SubResource("CameraAttributesPractical_gful3")
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
transform = Transform3D(0.782608, -0.611691, 0.11558, 0, 0.185667, 0.982613, -0.622515, -0.769001, 0.145304, 0, 0, 0)
transform = Transform3D(1, 0, 0, 0, 0.045363, 0.998971, 0, -0.998971, 0.045363, 0, 0, 0)
shadow_enabled = true
shadow_blur = 4.0
directional_shadow_split_1 = 0.017
@ -72,7 +72,6 @@ gravity_space_override = 3
gravity_point = true
gravity_point_center = Vector3(0, 0, 0)
gravity_direction = Vector3(0, 0, 0)
gravity = 27.0
[node name="CollisionShape3D" type="CollisionShape3D" parent="WorldGravity"]
shape = SubResource("WorldBoundaryShape3D_i61an")

View File

@ -10,10 +10,11 @@ config_version=5
[application]
config/name="GFOLF 2"
config/name="GFOLF"
config/description="GFOLF: Combat Golf Action"
config/version="0.0.0"
config/version="0.0.1"
run/main_scene="res://src/game/game.tscn"
config/use_custom_user_dir=true
config/project_settings_override="user://settings.godot"
config/features=PackedStringArray("4.3", "Forward Plus")
run/max_fps=60
@ -260,5 +261,8 @@ jolt_3d/limits/max_temporary_memory=64
[rendering]
textures/canvas_textures/default_texture_filter=0
lights_and_shadows/directional_shadow/size=8192
lights_and_shadows/directional_shadow/soft_shadow_filter_quality=3
lights_and_shadows/directional_shadow/size=16384
lights_and_shadows/directional_shadow/soft_shadow_filter_quality=0
anti_aliasing/quality/msaa_3d=3
anti_aliasing/quality/screen_space_aa=1
anti_aliasing/quality/use_debanding=true

View File

@ -161,6 +161,7 @@ var _tracking_camera: OrbitalCamera
@onready var downswing_timer: Timer = %DownswingTimer
@onready var ball_return_timer: Timer = %BallReturnTimer
@onready var reset_prompt_timer: Timer = %ResetPromptTimer
@onready var idle_prompt_timer: Timer = %IdlePromptTimer
@onready var explosion_animation: AnimationPlayer = %ExplosionAnimation
@onready var player_label: Label3D = %PlayerLabel
@ -217,6 +218,10 @@ func _set_camera_distance(value: float) -> void:
func _unhandled_input(event: InputEvent) -> void:
# Hide idle prompts if shown & reset timer
hud.hide_idle_prompts()
idle_prompt_timer.start()
if event is InputEventMouseButton:
Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
elif event is InputEventMouseMotion:
@ -334,6 +339,7 @@ func insert_free_cam() -> void:
arrow_animation.play("hide")
_show_shot_projection()
hud.hide_hud()
hud.show_free_cam_prompts()
_free_camera = FreeCamera.create(camera)
add_sibling(_free_camera)
# Un-gimbal-lock ourselves: quickly tween Z rotation to 0
@ -351,6 +357,7 @@ func return_free_cam() -> void:
shot_projection.hide()
hud.show_hud()
hud.hide_free_cam_prompts()
_free_camera.queue_free()
_free_camera = null
control_disabled = false
@ -471,6 +478,9 @@ func _on_phase_change(new_phase: Phase) -> void:
reset_prompt_timer.stop()
reset_enabled = false
idle_prompt_timer.start()
hud.hide_idle_prompts()
match new_phase:
Phase.AIM:
hud.show_hud()
@ -483,7 +493,6 @@ func _on_phase_change(new_phase: Phase) -> void:
character.reset()
Phase.POWER_ADJUST:
hud.curve_bar.hide()
hud.power_bar.show()
hud.reset_power_bar() # Reset if needed
Phase.CURVE_ADJUST:
@ -705,3 +714,17 @@ static func create(_player: WorldPlayer) -> ShotSetup:
var instance: ShotSetup = ShotSetup.scene.instantiate()
instance.player = _player
return instance
func _on_idle_prompt_timer_timeout() -> void:
if _free_camera:
# Don't show idle prompts while in free-cam mode
return
match phase:
Phase.AIM:
hud.show_aim_prompt()
Phase.POWER_ADJUST:
hud.show_power_prompt()
Phase.CURVE_ADJUST:
hud.show_curve_prompt()

View File

@ -589,20 +589,6 @@ libraries = {
"": SubResource("AnimationLibrary_u78hq")
}
[node name="DownswingTimer" type="Timer" parent="."]
unique_name_in_owner = true
wait_time = 0.42
one_shot = true
[node name="BallReturnTimer" type="Timer" parent="."]
unique_name_in_owner = true
one_shot = true
[node name="ResetPromptTimer" type="Timer" parent="."]
unique_name_in_owner = true
wait_time = 45.0
one_shot = true
[node name="Hitbox" type="Area3D" parent="."]
script = ExtResource("7_uh8kn")
@ -648,10 +634,32 @@ line_spacing = -16.0
autowrap_mode = 2
width = 120.0
[node name="Timers" type="Node" parent="."]
[node name="DownswingTimer" type="Timer" parent="Timers"]
unique_name_in_owner = true
wait_time = 0.42
one_shot = true
[node name="BallReturnTimer" type="Timer" parent="Timers"]
unique_name_in_owner = true
one_shot = true
[node name="ResetPromptTimer" type="Timer" parent="Timers"]
unique_name_in_owner = true
wait_time = 45.0
one_shot = true
[node name="IdlePromptTimer" type="Timer" parent="Timers"]
unique_name_in_owner = true
wait_time = 5.0
one_shot = true
[connection signal="tree_exiting" from="." to="." method="_on_tree_exiting"]
[connection signal="ball_changed" from="BallPoint" to="." method="_on_game_ball_changed"]
[connection signal="timeout" from="DownswingTimer" to="." method="finish_downswing"]
[connection signal="timeout" from="BallReturnTimer" to="." method="_on_ball_return_timer_timeout"]
[connection signal="timeout" from="ResetPromptTimer" to="." method="_on_reset_prompt_timer_timeout"]
[connection signal="ball_collision" from="Hitbox" to="." method="_on_hitbox_ball_collision"]
[connection signal="body_entered" from="Hitbox" to="Hitbox" method="_on_body_entered"]
[connection signal="timeout" from="Timers/DownswingTimer" to="." method="finish_downswing"]
[connection signal="timeout" from="Timers/BallReturnTimer" to="." method="_on_ball_return_timer_timeout"]
[connection signal="timeout" from="Timers/ResetPromptTimer" to="." method="_on_reset_prompt_timer_timeout"]
[connection signal="timeout" from="Timers/IdlePromptTimer" to="." method="_on_idle_prompt_timer_timeout"]

View File

@ -1,9 +1,46 @@
[gd_scene load_steps=3 format=3 uid="uid://dd17ce110sw6p"]
[gd_scene load_steps=7 format=3 uid="uid://dd17ce110sw6p"]
[ext_resource type="Script" path="res://src/ui/camera/free_camera/free_camera.gd" id="1_3gm3q"]
[ext_resource type="PackedScene" uid="uid://b47goj32i6sdh" path="res://src/ui/elements/input_prompt/input_prompt.tscn" id="2_6hucw"]
[sub_resource type="SphereShape3D" id="SphereShape3D_wmusx"]
[sub_resource type="Animation" id="Animation_vc2i5"]
resource_name = "RESET"
length = 0.001
tracks/0/type = "bezier"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath(".:offset_bottom")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"handle_modes": PackedInt32Array(0),
"points": PackedFloat32Array(0, -0.2, 0, 0.2, 0),
"times": PackedFloat32Array(0)
}
[sub_resource type="Animation" id="Animation_8gctc"]
resource_name = "show"
length = 0.4
tracks/0/type = "bezier"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath(".:offset_bottom")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"handle_modes": PackedInt32Array(0, 0),
"points": PackedFloat32Array(0, -0.2, 0, 0.2, 0, 55, -0.2, 0, 0.2, 0),
"times": PackedFloat32Array(0, 0.4)
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_fk25i"]
_data = {
"RESET": SubResource("Animation_vc2i5"),
"show": SubResource("Animation_8gctc")
}
[node name="FreeCamera" type="CharacterBody3D"]
process_mode = 3
collision_layer = 0
@ -16,3 +53,42 @@ shape = SubResource("SphereShape3D_wmusx")
[node name="Camera3D" type="Camera3D" parent="."]
current = true
far = 8192.0
[node name="FreeCamHUD" 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="UtilityPrompts" type="MarginContainer" parent="FreeCamHUD"]
layout_mode = 1
anchors_preset = -1
anchor_left = 0.5
anchor_right = 0.5
grow_horizontal = 2
grow_vertical = 0
theme_override_constants/margin_top = 16
theme_override_constants/margin_right = 16
[node name="HBoxContainer" type="HBoxContainer" parent="FreeCamHUD/UtilityPrompts"]
layout_mode = 2
theme_override_constants/separation = 64
[node name="InputPrompt" parent="FreeCamHUD/UtilityPrompts/HBoxContainer" instance=ExtResource("2_6hucw")]
layout_mode = 2
text = "❓ - ACTION_camera_sprint"
action = &"camera_sprint"
[node name="InputPrompt2" parent="FreeCamHUD/UtilityPrompts/HBoxContainer" instance=ExtResource("2_6hucw")]
layout_mode = 2
text = "❓ - ACTION_camera_cancel"
action = &"camera_cancel"
[node name="AimEquipPromptAnimation" type="AnimationPlayer" parent="FreeCamHUD/UtilityPrompts"]
unique_name_in_owner = true
libraries = {
"": SubResource("AnimationLibrary_fk25i")
}
autoplay = "show"

View File

@ -0,0 +1,47 @@
class_name Fader extends Control
## A UI container which fades between child elements
## I don't want to write logic to check for non CanvasItems here so don't try it.
## Time in seconds for which an element will be shown before fading out.
@export var show_time := 2.0
## Time in seconds for an element to fade in or out.
@export var fade_time := 0.4
## Time in seconds for which an element will be hidden before fading in.
@export var hidden_time := 0.0
## Modulate color when fully visible
@export var visible_modulate := Color.WHITE
## Modulate color when fully hidden
@export var hidden_modulate := Color.TRANSPARENT
var _index := -1
func _ready() -> void:
if get_child_count() == 0:
return
# Hide all children initially
for child: Node in get_children():
var canvas_item: CanvasItem = child
canvas_item.hide()
canvas_item.modulate = hidden_modulate
# Start animation cycle
_fade_next_child()
func _fade_next_child() -> void:
_index = wrapi(_index + 1, 0, get_child_count())
var child: CanvasItem = get_children()[_index]
child.show()
var tween := create_tween()
tween.tween_property(child, "modulate", visible_modulate, fade_time)
tween.tween_interval(show_time)
tween.tween_property(child, "modulate", hidden_modulate, fade_time)
tween.tween_interval(hidden_time)
tween.tween_callback(child.hide)
tween.tween_callback(_fade_next_child)

View File

@ -1,14 +1,16 @@
[gd_resource type="Theme" load_steps=15 format=3 uid="uid://diodjft5u2cck"]
[gd_resource type="Theme" load_steps=21 format=3 uid="uid://diodjft5u2cck"]
[ext_resource type="FontFile" uid="uid://dsa0oh7c0h4pu" path="res://assets/fonts/Racing_Sans_One/RacingSansOne-Regular.ttf" id="1_3rv2b"]
[ext_resource type="FontFile" uid="uid://comihs66wounx" path="res://assets/fonts/Dokdo/Dokdo-Regular.ttf" id="1_eha6a"]
[ext_resource type="FontFile" uid="uid://b6gxwgomstkgu" path="res://assets/fonts/Geo/Geo-Italic.ttf" id="2_5ty6u"]
[ext_resource type="FontVariation" uid="uid://bekh6jfretwuu" path="res://assets/fonts/twoweekendssans/two_weekends_sans_italics.tres" id="1_xssha"]
[ext_resource type="FontFile" uid="uid://dyog4ex5nqfat" path="res://assets/fonts/promptfont/promptfont.otf" id="2_8kux8"]
[ext_resource type="FontFile" uid="uid://s4c1kf0rk2mb" path="res://assets/fonts/Geo/Geo-Regular.ttf" id="3_cee6l"]
[ext_resource type="FontFile" uid="uid://dyx4wcq8wlpbh" path="res://assets/fonts/Orbitron/static/Orbitron-Black.ttf" id="5_7lyjk"]
[ext_resource type="FontVariation" uid="uid://ehkfcv7lram0" path="res://assets/fonts/Geo/Geo_Bold.tres" id="5_sbhqb"]
[ext_resource type="FontVariation" uid="uid://y3lcfr4ys8d3" path="res://assets/fonts/Orbitron/Orbitron_Bold_Italics.tres" id="6_r7l37"]
[ext_resource type="FontVariation" uid="uid://cjisjunqauv68" path="res://assets/fonts/Orbitron/Orbitron_Italics.tres" id="7_0c31n"]
[ext_resource type="FontFile" uid="uid://bmv0pofrw1wh0" path="res://assets/fonts/Orbitron/static/Orbitron-Regular.ttf" id="8_njdo1"]
[ext_resource type="FontVariation" uid="uid://dvgdisbh5rhw3" path="res://assets/fonts/twoweekendssans/two_weekends_sans.tres" id="9_7pqpr"]
[ext_resource type="FontVariation" uid="uid://bwkgmcww503uf" path="res://assets/fonts/twoweekendssans/two_weekends_sans_bold.tres" id="9_uy5ad"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_5pkn5"]
content_margin_left = 16.0
@ -49,32 +51,89 @@ corner_detail = 5
font_names = PackedStringArray("Monospace")
generate_mipmaps = true
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_nsmeb"]
content_margin_left = 36.0
content_margin_top = 18.0
content_margin_right = 36.0
content_margin_bottom = 18.0
bg_color = Color(0.1, 0.1, 0.1, 0.3)
corner_radius_top_left = 24
corner_radius_top_right = 24
corner_radius_bottom_right = 24
corner_radius_bottom_left = 24
corner_detail = 5
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_5k4vo"]
content_margin_left = 36.0
content_margin_top = 18.0
content_margin_right = 36.0
content_margin_bottom = 18.0
bg_color = Color(1, 1, 1, 0.75)
draw_center = false
border_width_left = 2
border_width_top = 2
border_width_right = 2
border_width_bottom = 2
corner_radius_top_left = 24
corner_radius_top_right = 24
corner_radius_bottom_right = 24
corner_radius_bottom_left = 24
corner_detail = 5
expand_margin_left = 2.0
expand_margin_top = 2.0
expand_margin_right = 2.0
expand_margin_bottom = 2.0
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_4vo7v"]
content_margin_left = 36.0
content_margin_top = 18.0
content_margin_right = 36.0
content_margin_bottom = 18.0
bg_color = Color(0.225, 0.225, 0.225, 0.6)
corner_radius_top_left = 24
corner_radius_top_right = 24
corner_radius_bottom_right = 24
corner_radius_bottom_left = 24
corner_detail = 5
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ynsl8"]
content_margin_left = 36.0
content_margin_top = 8.0
content_margin_top = 18.0
content_margin_right = 36.0
content_margin_bottom = 8.0
content_margin_bottom = 18.0
bg_color = Color(0.1, 0.1, 0.1, 0.6)
corner_radius_top_left = 3
corner_radius_top_right = 3
corner_radius_bottom_right = 3
corner_radius_bottom_left = 3
corner_radius_top_left = 24
corner_radius_top_right = 24
corner_radius_bottom_right = 24
corner_radius_bottom_left = 24
corner_detail = 5
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_twj44"]
content_margin_left = 36.0
content_margin_top = 18.0
content_margin_right = 36.0
content_margin_bottom = 18.0
bg_color = Color(0, 0, 0, 0.6)
corner_radius_top_left = 24
corner_radius_top_right = 24
corner_radius_bottom_right = 24
corner_radius_bottom_left = 24
corner_detail = 5
[resource]
default_font = ExtResource("3_cee6l")
default_font_size = 18
default_font = ExtResource("9_7pqpr")
default_font_size = 14
AlertButton/base_type = &"UIButton"
AlertButton/colors/font_color = Color(0.819608, 0.196078, 0.196078, 1)
AlertButton/colors/font_outline_color = Color(0, 0, 0, 1)
AlertButton/constants/outline_size = 6
AlertButton/font_sizes/font_size = 24
AlertButton/fonts/font = ExtResource("2_5ty6u")
AlertButton/font_sizes/font_size = 21
AlertButton/fonts/font = ExtResource("9_uy5ad")
CancelButton/base_type = &"UIButton"
CancelButton/colors/font_outline_color = Color(0, 0, 0, 1)
CancelButton/constants/outline_size = 6
CancelButton/font_sizes/font_size = 24
CancelButton/fonts/font = ExtResource("2_5ty6u")
CancelButton/font_sizes/font_size = 21
CancelButton/fonts/font = ExtResource("9_uy5ad")
ChannelMixerIcon/base_type = &"Label"
ChannelMixerIcon/colors/font_color = Color(1, 1, 0.870588, 1)
ChannelMixerIcon/colors/font_outline_color = Color(0, 0, 0, 1)
@ -146,11 +205,13 @@ InputPrompt/colors/font_color = Color(1, 1, 0.870588, 1)
InputPrompt/constants/outline_size = 8
InputPrompt/font_sizes/font_size = 32
InputPrompt/fonts/font = ExtResource("2_8kux8")
InputPromptContainer/base_type = &"HBoxContainer"
InputPromptContainer/constants/separation = 8
PauseMenuButton/base_type = &"UIButton"
PauseMenuButton/colors/font_outline_color = Color(0, 0, 0, 1)
PauseMenuButton/constants/outline_size = 6
PauseMenuButton/font_sizes/font_size = 32
PauseMenuButton/fonts/font = ExtResource("2_5ty6u")
PauseMenuButton/font_sizes/font_size = 21
PauseMenuButton/fonts/font = ExtResource("9_uy5ad")
PlayerNameInput/base_type = &"LineEdit"
PlayerNameInput/font_sizes/font_size = 32
PlayerNameInput/fonts/font = ExtResource("1_3rv2b")
@ -159,12 +220,13 @@ QuantityLabel/colors/font_color = Color(0.819608, 0.196078, 0.196078, 1)
QuantityLabel/colors/font_outline_color = Color(1, 0.901961, 0.509804, 1)
QuantityLabel/constants/outline_size = 6
QuantityLabel/font_sizes/font_size = 22
QuantityLabel/fonts/font = ExtResource("5_sbhqb")
SettingsInputLabel/base_type = &"Label"
SettingsInputLabel/colors/font_color = Color(1, 1, 0.870588, 1)
SettingsInputLabel/colors/font_outline_color = Color(0, 0, 0, 1)
SettingsInputLabel/constants/outline_size = 6
SettingsInputLabel/font_sizes/font_size = 36
SettingsInputLabel/fonts/font = ExtResource("2_5ty6u")
SettingsInputLabel/font_sizes/font_size = 32
SettingsInputLabel/fonts/font = ExtResource("1_xssha")
SettingsList/base_type = &"VBoxContainer"
SettingsList/constants/separation = 4
SettingsListMargin/base_type = &"MarginContainer"
@ -173,7 +235,7 @@ SettingsListMargin/constants/margin_left = 8
SettingsListMargin/constants/margin_right = 8
SettingsListMargin/constants/margin_top = 8
SettingsPageContainer/base_type = &"MarginContainer"
SettingsPageContainer/constants/margin_bottom = 72
SettingsPageContainer/constants/margin_bottom = 88
SettingsPageContainer/constants/margin_left = 72
SettingsPageContainer/constants/margin_right = 72
SettingsPageContainer/constants/margin_top = 72
@ -198,4 +260,8 @@ TitleScreenMenuLabel/colors/font_outline_color = Color(0, 0, 0, 1)
TitleScreenMenuLabel/constants/outline_size = 6
TitleScreenMenuLabel/font_sizes/font_size = 32
UIButton/base_type = &"Button"
UIButton/styles/disabled = SubResource("StyleBoxFlat_nsmeb")
UIButton/styles/focus = SubResource("StyleBoxFlat_5k4vo")
UIButton/styles/hover = SubResource("StyleBoxFlat_4vo7v")
UIButton/styles/normal = SubResource("StyleBoxFlat_ynsl8")
UIButton/styles/pressed = SubResource("StyleBoxFlat_twj44")

View File

@ -102,13 +102,14 @@ layout_mode = 2
[node name="MarginContainer" type="MarginContainer" parent="QuitConfirm/PanelContainer"]
layout_mode = 2
theme_override_constants/margin_left = 8
theme_override_constants/margin_top = 8
theme_override_constants/margin_right = 8
theme_override_constants/margin_bottom = 8
theme_override_constants/margin_left = 16
theme_override_constants/margin_top = 16
theme_override_constants/margin_right = 16
theme_override_constants/margin_bottom = 16
[node name="VBoxContainer" type="VBoxContainer" parent="QuitConfirm/PanelContainer/MarginContainer"]
layout_mode = 2
theme_override_constants/separation = 16
[node name="Label" type="Label" parent="QuitConfirm/PanelContainer/MarginContainer/VBoxContainer"]
layout_mode = 2
@ -147,13 +148,14 @@ layout_mode = 2
[node name="MarginContainer" type="MarginContainer" parent="EndGameConfirm/PanelContainer"]
layout_mode = 2
theme_override_constants/margin_left = 8
theme_override_constants/margin_top = 8
theme_override_constants/margin_right = 8
theme_override_constants/margin_bottom = 8
theme_override_constants/margin_left = 16
theme_override_constants/margin_top = 16
theme_override_constants/margin_right = 16
theme_override_constants/margin_bottom = 16
[node name="VBoxContainer" type="VBoxContainer" parent="EndGameConfirm/PanelContainer/MarginContainer"]
layout_mode = 2
theme_override_constants/separation = 16
[node name="Label" type="Label" parent="EndGameConfirm/PanelContainer/MarginContainer/VBoxContainer"]
layout_mode = 2

View File

@ -1,71 +1,10 @@
[gd_scene load_steps=10 format=3 uid="uid://ccx2u5oli6men"]
[gd_scene load_steps=8 format=3 uid="uid://ccx2u5oli6men"]
[ext_resource type="Script" path="res://src/ui/menus/title_screen/deathmatch_setup/deathmatch_setup.gd" id="1_bchix"]
[ext_resource type="PackedScene" uid="uid://cr13d4p235b5y" path="res://src/ui/menus/title_screen/deathmatch_setup/player_setup/player_setup.tscn" id="2_on4ab"]
[ext_resource type="Script" path="res://src/ui/decorations/fader.gd" id="3_krl60"]
[ext_resource type="PackedScene" uid="uid://b47goj32i6sdh" path="res://src/ui/elements/input_prompt/input_prompt.tscn" id="4_2vecx"]
[sub_resource type="Animation" id="Animation_r61vj"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("GamepadStartSymbol: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, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("KeyboardStartSymbol:modulate")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 1)]
}
[sub_resource type="Animation" id="Animation_c3p73"]
resource_name = "rotate"
length = 4.8
loop_mode = 1
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("GamepadStartSymbol:modulate")
tracks/0/interp = 2
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 1.6, 2.4, 3.2, 4),
"transitions": PackedFloat32Array(1, 0.618, 1, 1.618, 1),
"update": 0,
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 0), Color(1, 1, 1, 1), Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("KeyboardStartSymbol:modulate")
tracks/1/interp = 2
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.8, 1.6, 4, 4.8),
"transitions": PackedFloat32Array(1, 1.618, 1, 0.618, 1),
"update": 0,
"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 1), Color(1, 1, 1, 0), Color(1, 1, 1, 0), Color(1, 1, 1, 1)]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_5sl0m"]
_data = {
"RESET": SubResource("Animation_r61vj"),
"rotate": SubResource("Animation_c3p73")
}
[sub_resource type="Animation" id="Animation_x4wqc"]
length = 0.001
tracks/0/type = "value"
@ -111,7 +50,7 @@ tracks/0/keys = {
tracks/1/type = "method"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("../../..")
tracks/1/path = NodePath("../../../..")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
@ -158,10 +97,11 @@ layout_mode = 2
theme_override_constants/margin_left = 32
theme_override_constants/margin_top = 32
theme_override_constants/margin_right = 32
theme_override_constants/margin_bottom = 80
theme_override_constants/margin_bottom = 32
[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer"]
layout_mode = 2
theme_override_constants/separation = 16
[node name="Label" type="Label" parent="MarginContainer/VBoxContainer"]
layout_mode = 2
@ -262,86 +202,53 @@ grow_vertical = 2
layout_mode = 2
alignment = 1
[node name="SymbolBlinker" type="Control" parent="MarginContainer/VBoxContainer/PlayersContainer/MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/HBoxContainer/AddPlayerButton/CenterContainer/VBoxContainer"]
[node name="Fader" type="Control" parent="MarginContainer/VBoxContainer/PlayersContainer/MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/HBoxContainer/AddPlayerButton/CenterContainer/VBoxContainer"]
custom_minimum_size = Vector2(64, 64)
layout_mode = 2
mouse_filter = 1
script = ExtResource("3_krl60")
[node name="GamepadStartSymbol" parent="MarginContainer/VBoxContainer/PlayersContainer/MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/HBoxContainer/AddPlayerButton/CenterContainer/VBoxContainer/SymbolBlinker" instance=ExtResource("4_2vecx")]
modulate = Color(1, 1, 1, 0)
[node name="GamepadStartSymbol" parent="MarginContainer/VBoxContainer/PlayersContainer/MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/HBoxContainer/AddPlayerButton/CenterContainer/VBoxContainer/Fader" instance=ExtResource("4_2vecx")]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -56.5
offset_top = -19.5
offset_right = 56.5
offset_bottom = 19.5
text = "❓"
horizontal_alignment = 1
action = &"ui_start"
show_name = false
event_index = 1
[node name="KeyboardStartSymbol" parent="MarginContainer/VBoxContainer/PlayersContainer/MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/HBoxContainer/AddPlayerButton/CenterContainer/VBoxContainer/SymbolBlinker" instance=ExtResource("4_2vecx")]
[node name="KeyboardStartSymbol" parent="MarginContainer/VBoxContainer/PlayersContainer/MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/HBoxContainer/AddPlayerButton/CenterContainer/VBoxContainer/Fader" instance=ExtResource("4_2vecx")]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -56.5
offset_top = -19.5
offset_right = 56.5
offset_bottom = 19.5
text = "❓"
horizontal_alignment = 1
action = &"ui_start"
show_name = false
[node name="AnimationPlayer" type="AnimationPlayer" parent="MarginContainer/VBoxContainer/PlayersContainer/MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/HBoxContainer/AddPlayerButton/CenterContainer/VBoxContainer/SymbolBlinker"]
libraries = {
"": SubResource("AnimationLibrary_5sl0m")
}
autoplay = "rotate"
[node name="Label2" type="Label" parent="MarginContainer/VBoxContainer/PlayersContainer/MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/HBoxContainer/AddPlayerButton/CenterContainer/VBoxContainer"]
layout_mode = 2
text = "DM_ADD_PLAYER"
horizontal_alignment = 1
[node name="SouthEast" type="MarginContainer" parent="."]
layout_mode = 2
size_flags_horizontal = 8
size_flags_vertical = 8
theme_override_constants/margin_left = 16
theme_override_constants/margin_top = 16
theme_override_constants/margin_right = 32
theme_override_constants/margin_bottom = 16
[node name="HBoxContainer" type="HBoxContainer" parent="SouthEast"]
[node name="Buttons" type="HBoxContainer" parent="MarginContainer/VBoxContainer"]
layout_mode = 2
theme_override_constants/separation = 16
alignment = 2
[node name="Cancel" type="Button" parent="SouthEast/HBoxContainer"]
[node name="Cancel" type="Button" parent="MarginContainer/VBoxContainer/Buttons"]
layout_mode = 2
theme_type_variation = &"CancelButton"
text = "UI_CANCEL"
[node name="Start" type="Button" parent="SouthEast/HBoxContainer"]
[node name="Start" type="Button" parent="MarginContainer/VBoxContainer/Buttons"]
unique_name_in_owner = true
layout_mode = 2
theme_type_variation = &"AlertButton"
text = "UI_START"
[node name="AnimationPlayer" type="AnimationPlayer" parent="SouthEast/HBoxContainer/Start"]
[node name="AnimationPlayer" type="AnimationPlayer" parent="MarginContainer/VBoxContainer/Buttons/Start"]
libraries = {
"": SubResource("AnimationLibrary_s1eyj")
}
[connection signal="item_selected" from="MarginContainer/VBoxContainer/MapSelectContainer/MarginContainer/VBoxContainer/MapSelect" to="." method="check_start_conditions" unbinds=1]
[connection signal="pressed" from="MarginContainer/VBoxContainer/PlayersContainer/MarginContainer/VBoxContainer/ScrollContainer/MarginContainer/HBoxContainer/AddPlayerButton" to="." method="_on_add_player_button_pressed"]
[connection signal="pressed" from="SouthEast/HBoxContainer/Cancel" to="." method="cancel"]
[connection signal="pressed" from="SouthEast/HBoxContainer/Start" to="SouthEast/HBoxContainer/Start/AnimationPlayer" method="play" binds= ["fade_out"]]
[connection signal="pressed" from="MarginContainer/VBoxContainer/Buttons/Cancel" to="." method="cancel"]
[connection signal="pressed" from="MarginContainer/VBoxContainer/Buttons/Start" to="MarginContainer/VBoxContainer/Buttons/Start/AnimationPlayer" method="play" binds= ["fade_out"]]

View File

@ -69,7 +69,7 @@ tracks/0/keys = {
tracks/1/type = "method"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("../../..")
tracks/1/path = NodePath("../../../..")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
@ -116,10 +116,11 @@ layout_mode = 2
theme_override_constants/margin_left = 32
theme_override_constants/margin_top = 32
theme_override_constants/margin_right = 32
theme_override_constants/margin_bottom = 80
theme_override_constants/margin_bottom = 32
[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer"]
layout_mode = 2
theme_override_constants/separation = 16
[node name="Label" type="Label" parent="MarginContainer/VBoxContainer"]
layout_mode = 2
@ -163,35 +164,27 @@ max_columns = 8
icon_mode = 0
fixed_icon_size = Vector2i(64, 64)
[node name="SouthEast" type="MarginContainer" parent="."]
layout_mode = 2
size_flags_horizontal = 8
size_flags_vertical = 8
theme_override_constants/margin_left = 16
theme_override_constants/margin_top = 16
theme_override_constants/margin_right = 32
theme_override_constants/margin_bottom = 16
[node name="HBoxContainer" type="HBoxContainer" parent="SouthEast"]
[node name="Buttons" type="HBoxContainer" parent="MarginContainer/VBoxContainer"]
layout_mode = 2
theme_override_constants/separation = 16
alignment = 2
[node name="Cancel" type="Button" parent="SouthEast/HBoxContainer"]
[node name="Cancel" type="Button" parent="MarginContainer/VBoxContainer/Buttons"]
layout_mode = 2
theme_type_variation = &"CancelButton"
text = "UI_CANCEL"
[node name="Start" type="Button" parent="SouthEast/HBoxContainer"]
[node name="Start" type="Button" parent="MarginContainer/VBoxContainer/Buttons"]
unique_name_in_owner = true
layout_mode = 2
theme_type_variation = &"AlertButton"
text = "UI_START"
[node name="AnimationPlayer" type="AnimationPlayer" parent="SouthEast/HBoxContainer/Start"]
[node name="AnimationPlayer" type="AnimationPlayer" parent="MarginContainer/VBoxContainer/Buttons/Start"]
libraries = {
"": SubResource("AnimationLibrary_s1eyj")
}
[connection signal="item_selected" from="MarginContainer/VBoxContainer/MapSelectContainer/MarginContainer/VBoxContainer/MapSelect" to="." method="check_start_conditions" unbinds=1]
[connection signal="pressed" from="SouthEast/HBoxContainer/Cancel" to="." method="cancel"]
[connection signal="pressed" from="SouthEast/HBoxContainer/Start" to="SouthEast/HBoxContainer/Start/AnimationPlayer" method="play" binds= ["fade_out"]]
[connection signal="pressed" from="MarginContainer/VBoxContainer/Buttons/Cancel" to="." method="cancel"]
[connection signal="pressed" from="MarginContainer/VBoxContainer/Buttons/Start" to="MarginContainer/VBoxContainer/Buttons/Start/AnimationPlayer" method="play" binds= ["fade_out"]]

View File

@ -1482,7 +1482,7 @@ grow_horizontal = 2
grow_vertical = 2
[node name="PressStart" type="Label" parent="Menu"]
modulate = Color(1, 1, 1, 0.124112)
modulate = Color(1, 1, 1, 0.98649)
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5

View File

@ -14,6 +14,11 @@ const LIFE_BAR_HEAL_TIME := 1.0
var player: WorldPlayer
var _aim_prompt_shown := false
var _power_prompt_shown := false
var _curve_prompt_shown := false
var _free_cam_prompts_shown := false
@onready var power_bar: TextureProgressBar = %PowerBar
@onready var curve_bar: CurveBar = %CurveBar
@ -36,6 +41,12 @@ var player: WorldPlayer
@onready var _player_name: Label = %PlayerName
@onready var _reset_prompt_animation: AnimationPlayer = %ResetPromptAnimation
@onready var _aim_equip_prompt_animation: AnimationPlayer = %AimEquipPromptAnimation
@onready var _aim_prompt_animation: AnimationPlayer = %AimPromptAnimation
@onready var _power_prompt_animation: AnimationPlayer = %PowerPromptAnimation
@onready var _curve_prompt_animation: AnimationPlayer = %CurvePromptAnimation
@onready var _free_cam_util_prompt_animation: AnimationPlayer = %FreeCamUtilPromptAnimation
@onready var _free_cam_motion_prompt_animation: AnimationPlayer = %FreeCamMotionPromptAnimation
@onready var _life_bar_rumbler: Rumbler = %LifeBarRumbler
@ -118,6 +129,64 @@ func hide_reset_prompt() -> void:
_reset_prompt_animation.play_backwards("show")
func show_aim_prompt() -> void:
if not _aim_prompt_shown:
_aim_prompt_shown = true
_aim_equip_prompt_animation.play("show")
_aim_prompt_animation.play("show")
func hide_aim_prompt() -> void:
if _aim_prompt_shown:
_aim_prompt_shown = false
_aim_equip_prompt_animation.play_backwards("show")
_aim_prompt_animation.play_backwards("show")
func show_power_prompt() -> void:
if not _power_prompt_shown:
_power_prompt_shown = true
_power_prompt_animation.play("show")
func hide_power_prompt() -> void:
if _power_prompt_shown:
_power_prompt_shown = false
_power_prompt_animation.play_backwards("show")
func show_curve_prompt() -> void:
if not _curve_prompt_shown:
_curve_prompt_shown = true
_curve_prompt_animation.play("show")
func hide_curve_prompt() -> void:
if _curve_prompt_shown:
_curve_prompt_shown = false
_curve_prompt_animation.play_backwards("show")
func show_free_cam_prompts() -> void:
if not _free_cam_prompts_shown:
_free_cam_prompts_shown = true
_free_cam_motion_prompt_animation.play("show")
_free_cam_util_prompt_animation.play("show")
func hide_free_cam_prompts() -> void:
if _free_cam_prompts_shown:
_free_cam_prompts_shown = false
_free_cam_motion_prompt_animation.play_backwards("show")
_free_cam_util_prompt_animation.play_backwards("show")
func hide_idle_prompts() -> void:
hide_aim_prompt()
hide_power_prompt()
hide_curve_prompt()
## Set the value of the life bar, potentially playing some kind of effect in response.
##
## To set the life bar without triggering an effect, set it directly with `life_bar.value`

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=47 format=3 uid="uid://c4ifdiohng830"]
[gd_scene load_steps=51 format=3 uid="uid://c4ifdiohng830"]
[ext_resource type="Script" path="res://src/ui/shot_hud/shot_hud.gd" id="1_x5b4c"]
[ext_resource type="Shader" path="res://src/shaders/canvas_retro.gdshader" id="1_ybxxp"]
@ -18,6 +18,7 @@
[ext_resource type="PackedScene" uid="uid://b47goj32i6sdh" path="res://src/ui/elements/input_prompt/input_prompt.tscn" id="14_ik4gg"]
[ext_resource type="Texture2D" uid="uid://y07v10c8r1s6" path="res://assets/sprites/particles/health.png" id="15_eyqdi"]
[ext_resource type="AudioStream" uid="uid://csbrinugqepk3" path="res://assets/sound/sfx/player/heal.wav" id="16_pub5c"]
[ext_resource type="Script" path="res://src/ui/decorations/fader.gd" id="19_vn2m0"]
[sub_resource type="Animation" id="Animation_2gt87"]
resource_name = "RESET"
@ -477,17 +478,53 @@ _data = {
"idle": SubResource("Animation_ornnh")
}
[sub_resource type="Animation" id="Animation_i0y3d"]
resource_name = "RESET"
length = 0.001
tracks/0/type = "bezier"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath(".:offset_bottom")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"handle_modes": PackedInt32Array(0),
"points": PackedFloat32Array(0, -0.2, 0, 0.2, 0),
"times": PackedFloat32Array(0)
}
[sub_resource type="Animation" id="Animation_2o53u"]
resource_name = "show"
length = 0.4
tracks/0/type = "bezier"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath(".:offset_bottom")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"handle_modes": PackedInt32Array(0, 0),
"points": PackedFloat32Array(0, -0.2, 0, 0.2, 0, 55, -0.2, 0, 0.2, 0),
"times": PackedFloat32Array(0, 0.4)
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_e82k6"]
_data = {
"RESET": SubResource("Animation_i0y3d"),
"show": SubResource("Animation_2o53u")
}
[sub_resource type="Animation" id="Animation_qjs4v"]
length = 0.001
tracks/0/type = "bezier"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath(".:position:y")
tracks/0/path = NodePath(".:offset_bottom")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"handle_modes": PackedInt32Array(0),
"points": PackedFloat32Array(-55, -0.25, 0, 0.25, 0),
"points": PackedFloat32Array(55, -0.2, 0, 0.2, 0),
"times": PackedFloat32Array(0)
}
@ -497,12 +534,12 @@ length = 0.4
tracks/0/type = "bezier"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath(".:position:y")
tracks/0/path = NodePath(".:offset_bottom")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"handle_modes": PackedInt32Array(0, 0),
"points": PackedFloat32Array(-55, -0.25, 0, 0.0709939, 50.4391, 0, -0.251647, 15.8692, 0.2, 0),
"points": PackedFloat32Array(55, -0.2, 0, 0.2, 0, 0, -0.2, 0, 0.2, 0),
"times": PackedFloat32Array(0, 0.4)
}
@ -784,25 +821,33 @@ libraries = {
"": SubResource("AnimationLibrary_c3i4w")
}
[node name="ResetPrompt" type="MarginContainer" parent="."]
[node name="Prompts" type="Control" parent="."]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="ResetPrompt" type="MarginContainer" parent="Prompts"]
layout_mode = 1
anchors_preset = -1
anchor_left = 0.5
anchor_right = 0.5
offset_left = -237.5
offset_top = -55.0
offset_right = 237.5
grow_horizontal = 2
grow_vertical = 0
theme_override_constants/margin_top = 16
[node name="ResetInputPrompt" parent="ResetPrompt" instance=ExtResource("14_ik4gg")]
[node name="ResetInputPrompt" parent="Prompts/ResetPrompt" instance=ExtResource("14_ik4gg")]
clip_children = 2
layout_mode = 2
text = "❓ - ACTION_shot_reset"
uppercase = true
action = &"shot_reset"
[node name="Glint" type="TextureRect" parent="ResetPrompt/ResetInputPrompt"]
[node name="Glint" type="TextureRect" parent="Prompts/ResetPrompt/ResetInputPrompt"]
layout_mode = 1
anchors_preset = -1
anchor_left = -1.0
@ -811,13 +856,530 @@ grow_horizontal = 2
grow_vertical = 2
texture = SubResource("GradientTexture2D_q43a6")
[node name="GlintAnimation" type="AnimationPlayer" parent="ResetPrompt/ResetInputPrompt"]
[node name="GlintAnimation" type="AnimationPlayer" parent="Prompts/ResetPrompt/ResetInputPrompt"]
libraries = {
"": SubResource("AnimationLibrary_bdkm3")
}
autoplay = "idle"
[node name="ResetPromptAnimation" type="AnimationPlayer" parent="ResetPrompt"]
[node name="ResetPromptAnimation" type="AnimationPlayer" parent="Prompts/ResetPrompt"]
unique_name_in_owner = true
libraries = {
"": SubResource("AnimationLibrary_e82k6")
}
[node name="AimEquipPrompts" type="MarginContainer" parent="Prompts"]
layout_mode = 1
anchors_preset = -1
anchor_left = 0.5
anchor_right = 0.5
grow_horizontal = 2
grow_vertical = 0
theme_override_constants/margin_top = 16
theme_override_constants/margin_right = 16
[node name="HBoxContainer" type="HBoxContainer" parent="Prompts/AimEquipPrompts"]
layout_mode = 2
theme_override_constants/separation = 64
[node name="ChangeClubPrompt" type="HBoxContainer" parent="Prompts/AimEquipPrompts/HBoxContainer"]
layout_mode = 2
theme_type_variation = &"InputPromptContainer"
[node name="ClubControlFader" type="Control" parent="Prompts/AimEquipPrompts/HBoxContainer/ChangeClubPrompt"]
custom_minimum_size = Vector2(32, 0)
layout_mode = 2
size_flags_horizontal = 4
script = ExtResource("19_vn2m0")
show_time = 1.0
fade_time = 0.2
[node name="InputPrompt" parent="Prompts/AimEquipPrompts/HBoxContainer/ChangeClubPrompt/ClubControlFader" instance=ExtResource("14_ik4gg")]
layout_mode = 1
anchors_preset = 6
anchor_left = 1.0
anchor_top = 0.5
anchor_bottom = 0.5
offset_left = -32.0
offset_top = -19.5
offset_bottom = 19.5
grow_horizontal = 0
text = "❓"
action = &"club_next"
show_name = false
[node name="InputPrompt2" parent="Prompts/AimEquipPrompts/HBoxContainer/ChangeClubPrompt/ClubControlFader" instance=ExtResource("14_ik4gg")]
layout_mode = 1
anchors_preset = 6
anchor_left = 1.0
anchor_top = 0.5
anchor_bottom = 0.5
offset_left = -32.0
offset_top = -19.5
offset_bottom = 19.5
grow_horizontal = 0
text = "❓"
action = &"club_previous"
show_name = false
[node name="Label" type="Label" parent="Prompts/AimEquipPrompts/HBoxContainer/ChangeClubPrompt"]
layout_mode = 2
theme_type_variation = &"InputPrompt"
text = "-"
[node name="Label2" type="Label" parent="Prompts/AimEquipPrompts/HBoxContainer/ChangeClubPrompt"]
layout_mode = 2
theme_type_variation = &"InputPrompt"
text = "ACTION_CHANGE_CLUB"
[node name="ChangeBallPrompt" type="HBoxContainer" parent="Prompts/AimEquipPrompts/HBoxContainer"]
layout_mode = 2
theme_type_variation = &"InputPromptContainer"
[node name="BallControlFader" type="Control" parent="Prompts/AimEquipPrompts/HBoxContainer/ChangeBallPrompt"]
custom_minimum_size = Vector2(32, 0)
layout_mode = 2
size_flags_horizontal = 4
script = ExtResource("19_vn2m0")
show_time = 1.0
fade_time = 0.2
[node name="InputPrompt" parent="Prompts/AimEquipPrompts/HBoxContainer/ChangeBallPrompt/BallControlFader" instance=ExtResource("14_ik4gg")]
layout_mode = 1
anchors_preset = 6
anchor_left = 1.0
anchor_top = 0.5
anchor_bottom = 0.5
offset_left = -32.0
offset_top = -19.5
offset_bottom = 19.5
grow_horizontal = 0
text = "❓"
action = &"ball_next"
show_name = false
[node name="InputPrompt2" parent="Prompts/AimEquipPrompts/HBoxContainer/ChangeBallPrompt/BallControlFader" instance=ExtResource("14_ik4gg")]
layout_mode = 1
anchors_preset = 6
anchor_left = 1.0
anchor_top = 0.5
anchor_bottom = 0.5
offset_left = -32.0
offset_top = -19.5
offset_bottom = 19.5
grow_horizontal = 0
text = "❓"
action = &"ball_previous"
show_name = false
[node name="Label" type="Label" parent="Prompts/AimEquipPrompts/HBoxContainer/ChangeBallPrompt"]
layout_mode = 2
theme_type_variation = &"InputPrompt"
text = "-"
[node name="Label2" type="Label" parent="Prompts/AimEquipPrompts/HBoxContainer/ChangeBallPrompt"]
layout_mode = 2
theme_type_variation = &"InputPrompt"
text = "ACTION_CHANGE_BALL"
[node name="AimEquipPromptAnimation" type="AnimationPlayer" parent="Prompts/AimEquipPrompts"]
unique_name_in_owner = true
libraries = {
"": SubResource("AnimationLibrary_e82k6")
}
[node name="AimPrompts" type="MarginContainer" parent="Prompts"]
layout_mode = 1
anchors_preset = -1
anchor_left = 0.5
anchor_top = 1.0
anchor_right = 0.5
anchor_bottom = 1.0
offset_top = 60.0
offset_bottom = 55.0
grow_horizontal = 2
grow_vertical = 0
theme_override_constants/margin_right = 16
theme_override_constants/margin_bottom = 16
[node name="HBoxContainer" type="HBoxContainer" parent="Prompts/AimPrompts"]
layout_mode = 2
theme_override_constants/separation = 64
[node name="AcceptPrompt" parent="Prompts/AimPrompts/HBoxContainer" instance=ExtResource("14_ik4gg")]
layout_mode = 2
text = "❓ - ACTION_shot_accept"
action = &"shot_accept"
[node name="FreeCameraPrompt" type="HBoxContainer" parent="Prompts/AimPrompts/HBoxContainer"]
layout_mode = 2
theme_type_variation = &"InputPromptContainer"
[node name="FreeCamControlFader" type="Control" parent="Prompts/AimPrompts/HBoxContainer/FreeCameraPrompt"]
custom_minimum_size = Vector2(32, 0)
layout_mode = 2
size_flags_horizontal = 4
script = ExtResource("19_vn2m0")
show_time = 1.0
fade_time = 0.2
[node name="InputPrompt" parent="Prompts/AimPrompts/HBoxContainer/FreeCameraPrompt/FreeCamControlFader" instance=ExtResource("14_ik4gg")]
layout_mode = 1
anchors_preset = 6
anchor_left = 1.0
anchor_top = 0.5
anchor_bottom = 0.5
offset_left = -32.0
offset_top = -19.5
offset_bottom = 19.5
grow_horizontal = 0
text = "❓"
action = &"camera_forward"
show_name = false
[node name="InputPrompt2" parent="Prompts/AimPrompts/HBoxContainer/FreeCameraPrompt/FreeCamControlFader" instance=ExtResource("14_ik4gg")]
layout_mode = 1
anchors_preset = 6
anchor_left = 1.0
anchor_top = 0.5
anchor_bottom = 0.5
offset_left = -32.0
offset_top = -19.5
offset_bottom = 19.5
grow_horizontal = 0
text = "❓"
action = &"camera_left"
show_name = false
[node name="InputPrompt3" parent="Prompts/AimPrompts/HBoxContainer/FreeCameraPrompt/FreeCamControlFader" instance=ExtResource("14_ik4gg")]
layout_mode = 1
anchors_preset = 6
anchor_left = 1.0
anchor_top = 0.5
anchor_bottom = 0.5
offset_left = -32.0
offset_top = -19.5
offset_bottom = 19.5
grow_horizontal = 0
text = "❓"
action = &"camera_back"
show_name = false
[node name="InputPrompt4" parent="Prompts/AimPrompts/HBoxContainer/FreeCameraPrompt/FreeCamControlFader" instance=ExtResource("14_ik4gg")]
layout_mode = 1
anchors_preset = 6
anchor_left = 1.0
anchor_top = 0.5
anchor_bottom = 0.5
offset_left = -32.0
offset_top = -19.5
offset_bottom = 19.5
grow_horizontal = 0
text = "❓"
action = &"camera_right"
show_name = false
[node name="Label" type="Label" parent="Prompts/AimPrompts/HBoxContainer/FreeCameraPrompt"]
layout_mode = 2
theme_type_variation = &"InputPrompt"
text = "-"
[node name="Label2" type="Label" parent="Prompts/AimPrompts/HBoxContainer/FreeCameraPrompt"]
layout_mode = 2
theme_type_variation = &"InputPrompt"
text = "ACTION_FREE_CAMERA"
[node name="ZoomPrompt" type="HBoxContainer" parent="Prompts/AimPrompts/HBoxContainer"]
layout_mode = 2
theme_type_variation = &"InputPromptContainer"
[node name="ZoomControlFader" type="Control" parent="Prompts/AimPrompts/HBoxContainer/ZoomPrompt"]
custom_minimum_size = Vector2(32, 0)
layout_mode = 2
size_flags_horizontal = 4
script = ExtResource("19_vn2m0")
show_time = 1.0
fade_time = 0.2
[node name="InputPrompt" parent="Prompts/AimPrompts/HBoxContainer/ZoomPrompt/ZoomControlFader" instance=ExtResource("14_ik4gg")]
layout_mode = 1
anchors_preset = 6
anchor_left = 1.0
anchor_top = 0.5
anchor_bottom = 0.5
offset_left = -32.0
offset_top = -19.5
offset_bottom = 19.5
grow_horizontal = 0
text = "❓"
action = &"shot_zoom_in"
show_name = false
[node name="InputPrompt2" parent="Prompts/AimPrompts/HBoxContainer/ZoomPrompt/ZoomControlFader" instance=ExtResource("14_ik4gg")]
layout_mode = 1
anchors_preset = 6
anchor_left = 1.0
anchor_top = 0.5
anchor_bottom = 0.5
offset_left = -32.0
offset_top = -19.5
offset_bottom = 19.5
grow_horizontal = 0
text = "❓"
action = &"shot_zoom_out"
show_name = false
[node name="Label" type="Label" parent="Prompts/AimPrompts/HBoxContainer/ZoomPrompt"]
layout_mode = 2
theme_type_variation = &"InputPrompt"
text = "-"
[node name="Label2" type="Label" parent="Prompts/AimPrompts/HBoxContainer/ZoomPrompt"]
layout_mode = 2
theme_type_variation = &"InputPrompt"
text = "ACTION_ZOOM"
[node name="AimPrompt" type="HBoxContainer" parent="Prompts/AimPrompts/HBoxContainer"]
layout_mode = 2
theme_type_variation = &"InputPromptContainer"
[node name="Label" type="Label" parent="Prompts/AimPrompts/HBoxContainer/AimPrompt"]
layout_mode = 2
theme_type_variation = &"InputPrompt"
text = "⟺ -"
[node name="Label2" type="Label" parent="Prompts/AimPrompts/HBoxContainer/AimPrompt"]
layout_mode = 2
theme_type_variation = &"InputPrompt"
text = "ACTION_AIM"
[node name="AimPromptAnimation" type="AnimationPlayer" parent="Prompts/AimPrompts"]
unique_name_in_owner = true
libraries = {
"": SubResource("AnimationLibrary_o70c6")
}
[node name="PowerPrompt" type="MarginContainer" parent="Prompts"]
layout_mode = 1
anchors_preset = -1
anchor_left = 0.5
anchor_top = 1.0
anchor_right = 0.5
anchor_bottom = 1.0
offset_bottom = 55.0
grow_horizontal = 2
grow_vertical = 0
theme_override_constants/margin_right = 16
theme_override_constants/margin_bottom = 16
[node name="HBoxContainer" type="HBoxContainer" parent="Prompts/PowerPrompt"]
layout_mode = 2
theme_type_variation = &"InputPromptContainer"
[node name="InputPrompt" parent="Prompts/PowerPrompt/HBoxContainer" instance=ExtResource("14_ik4gg")]
layout_mode = 2
text = "❓"
action = &"shot_accept"
show_name = false
[node name="Label" type="Label" parent="Prompts/PowerPrompt/HBoxContainer"]
layout_mode = 2
theme_type_variation = &"InputPrompt"
text = "ACTION_HOLD_MODIFIER"
[node name="Label2" type="Label" parent="Prompts/PowerPrompt/HBoxContainer"]
layout_mode = 2
theme_type_variation = &"InputPrompt"
text = "-"
[node name="Label3" type="Label" parent="Prompts/PowerPrompt/HBoxContainer"]
layout_mode = 2
theme_type_variation = &"InputPrompt"
text = "ACTION_SET_POWER"
[node name="PowerPromptAnimation" type="AnimationPlayer" parent="Prompts/PowerPrompt"]
unique_name_in_owner = true
libraries = {
"": SubResource("AnimationLibrary_o70c6")
}
[node name="CurvePrompt" type="MarginContainer" parent="Prompts"]
layout_mode = 1
anchors_preset = -1
anchor_left = 0.5
anchor_top = 1.0
anchor_right = 0.5
anchor_bottom = 1.0
offset_bottom = 55.0
grow_horizontal = 2
grow_vertical = 0
theme_override_constants/margin_right = 16
theme_override_constants/margin_bottom = 16
[node name="HBoxContainer" type="HBoxContainer" parent="Prompts/CurvePrompt"]
layout_mode = 2
theme_type_variation = &"InputPromptContainer"
[node name="InputPrompt" parent="Prompts/CurvePrompt/HBoxContainer" instance=ExtResource("14_ik4gg")]
layout_mode = 2
text = "❓"
action = &"shot_accept"
show_name = false
[node name="Label2" type="Label" parent="Prompts/CurvePrompt/HBoxContainer"]
layout_mode = 2
theme_type_variation = &"InputPrompt"
text = "-"
[node name="Label3" type="Label" parent="Prompts/CurvePrompt/HBoxContainer"]
layout_mode = 2
theme_type_variation = &"InputPrompt"
text = "ACTION_SET_CURVE"
[node name="CurvePromptAnimation" type="AnimationPlayer" parent="Prompts/CurvePrompt"]
unique_name_in_owner = true
libraries = {
"": SubResource("AnimationLibrary_o70c6")
}
[node name="FreeCamUtilPrompts" type="MarginContainer" parent="Prompts"]
layout_mode = 1
anchors_preset = -1
anchor_left = 0.5
anchor_right = 0.5
grow_horizontal = 2
grow_vertical = 0
theme_override_constants/margin_top = 16
theme_override_constants/margin_right = 16
[node name="HBoxContainer" type="HBoxContainer" parent="Prompts/FreeCamUtilPrompts"]
layout_mode = 2
theme_override_constants/separation = 64
[node name="InputPrompt" parent="Prompts/FreeCamUtilPrompts/HBoxContainer" instance=ExtResource("14_ik4gg")]
layout_mode = 2
text = "❓ - ACTION_camera_sprint"
action = &"camera_sprint"
[node name="InputPrompt2" parent="Prompts/FreeCamUtilPrompts/HBoxContainer" instance=ExtResource("14_ik4gg")]
layout_mode = 2
text = "❓ - ACTION_camera_cancel"
action = &"camera_cancel"
[node name="FreeCamUtilPromptAnimation" type="AnimationPlayer" parent="Prompts/FreeCamUtilPrompts"]
unique_name_in_owner = true
libraries = {
"": SubResource("AnimationLibrary_e82k6")
}
[node name="FreeCamMotionPrompts" type="MarginContainer" parent="Prompts"]
layout_mode = 1
anchors_preset = -1
anchor_left = 0.5
anchor_top = 1.0
anchor_right = 0.5
anchor_bottom = 1.0
offset_left = -230.5
offset_right = 230.5
offset_bottom = 55.0
grow_horizontal = 2
grow_vertical = 0
theme_override_constants/margin_right = 16
theme_override_constants/margin_bottom = 16
[node name="HBoxContainer" type="HBoxContainer" parent="Prompts/FreeCamMotionPrompts"]
layout_mode = 2
theme_override_constants/separation = 64
[node name="WASDPrompt" type="HBoxContainer" parent="Prompts/FreeCamMotionPrompts/HBoxContainer"]
layout_mode = 2
theme_type_variation = &"InputPromptContainer"
[node name="WASDFader" type="Control" parent="Prompts/FreeCamMotionPrompts/HBoxContainer/WASDPrompt"]
custom_minimum_size = Vector2(32, 0)
layout_mode = 2
size_flags_horizontal = 4
script = ExtResource("19_vn2m0")
show_time = 1.0
fade_time = 0.2
[node name="InputPrompt" parent="Prompts/FreeCamMotionPrompts/HBoxContainer/WASDPrompt/WASDFader" instance=ExtResource("14_ik4gg")]
layout_mode = 1
anchors_preset = 6
anchor_left = 1.0
anchor_top = 0.5
anchor_bottom = 0.5
offset_left = -32.0
offset_top = -19.5
offset_bottom = 19.5
grow_horizontal = 0
text = "❓"
action = &"camera_forward"
show_name = false
[node name="InputPrompt2" parent="Prompts/FreeCamMotionPrompts/HBoxContainer/WASDPrompt/WASDFader" instance=ExtResource("14_ik4gg")]
layout_mode = 1
anchors_preset = 6
anchor_left = 1.0
anchor_top = 0.5
anchor_bottom = 0.5
offset_left = -32.0
offset_top = -19.5
offset_bottom = 19.5
grow_horizontal = 0
text = "❓"
action = &"camera_left"
show_name = false
[node name="InputPrompt3" parent="Prompts/FreeCamMotionPrompts/HBoxContainer/WASDPrompt/WASDFader" instance=ExtResource("14_ik4gg")]
layout_mode = 1
anchors_preset = 6
anchor_left = 1.0
anchor_top = 0.5
anchor_bottom = 0.5
offset_left = -32.0
offset_top = -19.5
offset_bottom = 19.5
grow_horizontal = 0
text = "❓"
action = &"camera_back"
show_name = false
[node name="InputPrompt4" parent="Prompts/FreeCamMotionPrompts/HBoxContainer/WASDPrompt/WASDFader" instance=ExtResource("14_ik4gg")]
layout_mode = 1
anchors_preset = 6
anchor_left = 1.0
anchor_top = 0.5
anchor_bottom = 0.5
offset_left = -32.0
offset_top = -19.5
offset_bottom = 19.5
grow_horizontal = 0
text = "❓"
action = &"camera_right"
show_name = false
[node name="Label" type="Label" parent="Prompts/FreeCamMotionPrompts/HBoxContainer/WASDPrompt"]
layout_mode = 2
theme_type_variation = &"InputPrompt"
text = "-"
[node name="Label2" type="Label" parent="Prompts/FreeCamMotionPrompts/HBoxContainer/WASDPrompt"]
layout_mode = 2
theme_type_variation = &"InputPrompt"
text = "ACTION_FREE_CAM_MOVE"
[node name="InputPrompt" parent="Prompts/FreeCamMotionPrompts/HBoxContainer" instance=ExtResource("14_ik4gg")]
layout_mode = 2
text = "❓ - ACTION_camera_up"
action = &"camera_up"
[node name="InputPrompt2" parent="Prompts/FreeCamMotionPrompts/HBoxContainer" instance=ExtResource("14_ik4gg")]
layout_mode = 2
text = "❓ - ACTION_camera_down"
action = &"camera_down"
[node name="FreeCamMotionPromptAnimation" type="AnimationPlayer" parent="Prompts/FreeCamMotionPrompts"]
unique_name_in_owner = true
libraries = {
"": SubResource("AnimationLibrary_o70c6")