revamped key rebinding system

This commit is contained in:
2025-06-06 11:11:52 +10:00
parent 4a21701a35
commit c44a730b59
1547 changed files with 6435 additions and 17228 deletions

View File

@ -175,7 +175,13 @@ func _process(delta: float) -> void:
movement.can_sprint = false
if Input.is_action_pressed("Secondary Fire"):
movement.can_sprint = false
if Input.is_action_just_pressed("Equip In Gauntlet"):
if Input.is_action_just_pressed("Equip Primary Weapon"):
if equipped_weapon == 1 and weapons[0]:
swap_weapons()
if Input.is_action_just_pressed("Equip Secondary Weapon"):
if equipped_weapon == 0 and weapons[1]:
swap_weapons()
if Input.is_action_just_pressed("Swap Weapons"):
swap_weapons()
if movement.sprinting:
@ -266,7 +272,6 @@ func enter_editing_mode(value: int) -> void:
weapons_active = false
hud.set_wave_count(value + 1)
hud.set_energy_visible(false)
hud.set_offhand_energy_visible(false)
hud.grow_wave_start_label()
editing_mode = true
edit_tool.enabled = true
@ -282,17 +287,18 @@ func exit_editing_mode(value: int) -> void:
hud.set_wave_count(value)
#if !weapon and offhand_weapon:
# swap_weapons()
var offhand_weapon: Weapon = weapons[0] if equipped_weapon == 1 else weapons[1]
if offhand_weapon:
offhand_weapon.current_energy = offhand_weapon.max_energy
#offhand_weapon.energy_changed.emit(offhand_weapon.current_energy)
if (!weapons[equipped_weapon] and offhand_weapon) or (weapons[0] and equipped_weapon == 1):
swap_weapons()
if weapons[equipped_weapon]:
hud.set_energy_visible(true)
#weapon.set_visible(false)
weapons[equipped_weapon].current_energy = weapons[equipped_weapon].max_energy
#this had to be commented out coz the new energy bar thinks "energy changed" is "energy used"
#weapons[equipped_weapon].energy_changed.emit(weapons[equipped_weapon].current_energy)
var offhand_weapon: Weapon = weapons[0] if equipped_weapon == 1 else weapons[1]
if offhand_weapon:
hud.set_offhand_energy_visible(true)
offhand_weapon.current_energy = offhand_weapon.max_energy
#offhand_weapon.energy_changed.emit(offhand_weapon.current_energy)
edit_tool.enabled = false
edit_tool.delete_tower_preview()
left_hand.visible = false
@ -355,13 +361,9 @@ func equip_weapon(slot: int = 0) -> void:
if weapons[slot].stats.energy_type == Data.EnergyType.DISCRETE:
hud.new_energy_bar.create_discrete_icons(weapons[slot].max_energy)
else:
weapons[slot].energy_spent.connect(hud.new_energy_bar2.use_energy)
weapons[slot].energy_recharged.connect(hud.new_energy_bar2.gain_energy)
hud.new_energy_bar2.max_energy = weapons[slot].max_energy
if weapons[slot].stats.energy_type == Data.EnergyType.CONTINUOUS:
hud.new_energy_bar2.enable_progress_bar()
if weapons[slot].stats.energy_type == Data.EnergyType.DISCRETE:
hud.new_energy_bar2.create_discrete_icons(weapons[slot].max_energy)
weapons[slot].energy_recharged.connect(hud.new_energy_bar.gain_secondary_energy)
hud.new_energy_bar.secondary_max_energy = weapons[slot].max_energy
hud.new_energy_bar.secondary_energy = weapons[slot].current_energy
func stow_weapon(slot: int = 0) -> void:
@ -370,21 +372,15 @@ func stow_weapon(slot: int = 0) -> void:
weapons[slot].visible = false
weapons[slot].energy_spent.disconnect(hud.new_energy_bar.use_energy)
weapons[slot].energy_recharged.disconnect(hud.new_energy_bar.gain_energy)
weapons[slot].energy_spent.connect(hud.new_energy_bar2.use_energy)
weapons[slot].energy_recharged.connect(hud.new_energy_bar2.gain_energy)
hud.set_offhand_energy(weapons[slot].current_energy)
hud.new_energy_bar2.max_energy = weapons[slot].max_energy
if weapons[slot].stats.energy_type == Data.EnergyType.CONTINUOUS:
hud.new_energy_bar2.enable_progress_bar()
if weapons[slot].stats.energy_type == Data.EnergyType.DISCRETE:
hud.new_energy_bar2.create_discrete_icons(weapons[slot].max_energy)
weapons[slot].energy_recharged.connect(hud.new_energy_bar.gain_secondary_energy)
hud.new_energy_bar.secondary_max_energy = weapons[slot].max_energy
hud.new_energy_bar.secondary_energy = weapons[slot].current_energy
func show_weapon(slot: int = 0) -> void:
weapons[slot].release_trigger()
weapons[slot].release_second_trigger()
weapons[slot].energy_spent.disconnect(hud.new_energy_bar2.use_energy)
weapons[slot].energy_recharged.disconnect(hud.new_energy_bar2.gain_energy)
weapons[slot].energy_recharged.disconnect(hud.new_energy_bar.gain_secondary_energy)
weapons[slot].energy_spent.connect(hud.new_energy_bar.use_energy)
weapons[slot].energy_recharged.connect(hud.new_energy_bar.gain_energy)
hud.set_weapon_energy(weapons[slot].current_energy, weapons[slot].stats.energy_type)
@ -393,6 +389,10 @@ func show_weapon(slot: int = 0) -> void:
hud.new_energy_bar.enable_progress_bar()
if weapons[slot].stats.energy_type == Data.EnergyType.DISCRETE:
hud.new_energy_bar.create_discrete_icons(weapons[slot].max_energy)
hud.new_energy_bar.use_energy(weapons[slot].max_energy - weapons[slot].current_energy, weapons[slot].stats.energy_type)
var offhand: int = 0 if equipped_weapon == 1 else 1
if !weapons[offhand]:
hud.new_energy_bar.disable_secondary_energy()
func swap_weapons() -> void:
@ -401,7 +401,8 @@ func swap_weapons() -> void:
weapons_active = false
swap_off_audio.play()
hud.audio_guard = true
stow_weapon(equipped_weapon)
if weapons[equipped_weapon]:
stow_weapon(equipped_weapon)
equipped_weapon = 0 if equipped_weapon == 1 else 1
show_weapon(equipped_weapon)
weapon_swap_timer.start()
@ -422,7 +423,7 @@ func unequip_weapon(slot: int = 0) -> void:
hud.new_energy_bar.blank()
else:
hud.swap_icon.visible = true
hud.new_energy_bar2.blank()
hud.new_energy_bar.disable_secondary_energy()
#gauntlet_sprite.set_visible(true)
weapons[slot].queue_free()
weapons[slot] = null

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=64 format=3 uid="uid://dxgxbtf68lcv5"]
[gd_scene load_steps=62 format=3 uid="uid://dxgxbtf68lcv5"]
[ext_resource type="Script" uid="uid://1fqpoegbdm6n" path="res://PCs/hero.gd" id="1_pihpe"]
[ext_resource type="Resource" uid="uid://b5pc3frhx467q" path="res://Classes/Engineer/class.tres" id="2_dbyo0"]
@ -24,9 +24,7 @@
[ext_resource type="Texture2D" uid="uid://cvjcu3hofahr6" path="res://Assets/Textures/place_slot.png" id="18_okmpi"]
[ext_resource type="Script" uid="uid://b5wle8f6rv3e7" path="res://PCs/player_movement.gd" id="20_cfhw8"]
[ext_resource type="Shader" uid="uid://dhtylicctk3g4" path="res://UI/crosshair.gdshader" id="20_gxpgc"]
[ext_resource type="Texture2D" uid="uid://r202vo47jw1q" path="res://Assets/Textures/enemyhealth.png" id="21_apps2"]
[ext_resource type="AudioStream" uid="uid://csu2hce4bfoki" path="res://Audio/cardPlace1.ogg" id="24_8ch4w"]
[ext_resource type="Texture2D" uid="uid://b8woqvpwq3tsq" path="res://Assets/Textures/swap_slot.png" id="24_gr6xt"]
[ext_resource type="AudioStream" uid="uid://dxq8b77wa41os" path="res://Audio/cardPlace2.ogg" id="25_awl6m"]
[ext_resource type="AudioStream" uid="uid://bxripx3suub1v" path="res://Audio/cardPlace3.ogg" id="26_7tm07"]
[ext_resource type="PackedScene" uid="uid://c2id8hjico4w8" path="res://energy_bar.tscn" id="27_14ugt"]
@ -384,7 +382,7 @@ max_look_down_angle = 80.0
max_look_up_angle = 80.0
enable_jumping = true
[node name="HUD" type="CanvasLayer" parent="." node_paths=PackedStringArray("player", "wave_count", "lives_count", "currency_count", "minimap_outline", "crosshair", "minimap", "minimap_cam", "minimap_viewport", "fps_label", "hover_text", "enemy_sprites", "enemy_counts", "weapon_energy_bar", "offhand_energy_bar", "wave_start_label", "place_icon", "swap_icon", "place_text", "swap_text", "new_energy_bar", "new_energy_bar2")]
[node name="HUD" type="CanvasLayer" parent="." node_paths=PackedStringArray("player", "wave_count", "lives_count", "currency_count", "minimap_outline", "crosshair", "minimap", "minimap_cam", "minimap_viewport", "fps_label", "hover_text", "enemy_sprites", "enemy_counts", "wave_start_label", "place_icon", "swap_icon", "place_text", "swap_text", "new_energy_bar")]
script = ExtResource("8_yl6ka")
player = NodePath("..")
wave_count = NodePath("WaveCount")
@ -399,8 +397,6 @@ fps_label = NodePath("FPSCounter")
hover_text = NodePath("RichTextLabel2")
enemy_sprites = [NodePath("EnemyTracker/TextureRect"), NodePath("EnemyTracker/TextureRect2"), NodePath("EnemyTracker/TextureRect3"), NodePath("EnemyTracker/TextureRect4"), NodePath("EnemyTracker/TextureRect5")]
enemy_counts = [NodePath("EnemyTracker/TextureRect/Label"), NodePath("EnemyTracker/TextureRect2/Label2"), NodePath("EnemyTracker/TextureRect3/Label3"), NodePath("EnemyTracker/TextureRect4/Label4"), NodePath("EnemyTracker/TextureRect5/Label5")]
weapon_energy_bar = NodePath("PrimaryEnergyBar")
offhand_energy_bar = NodePath("OffhandEnergyBar")
pickup_notif_scene = ExtResource("17_oyeww")
wave_start_label = NodePath("RichTextLabel")
place_icon = NodePath("PlaceIcon")
@ -409,7 +405,6 @@ place_text = NodePath("PlaceIcon/RichTextLabel")
swap_text = NodePath("SwapIcon/RichTextLabel")
enemy_card_scene = ExtResource("18_dfkac")
new_energy_bar = NodePath("EnergyBar")
new_energy_bar2 = NodePath("EnergyBar2")
[node name="FirstPersonCam" type="TextureRect" parent="HUD"]
anchors_preset = 15
@ -436,20 +431,16 @@ texture = ExtResource("18_okmpi")
[node name="RichTextLabel" type="RichTextLabel" parent="HUD/PlaceIcon"]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -30.0
offset_top = -19.0
offset_right = 30.0
offset_bottom = 41.0
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
bbcode_enabled = true
text = "#Equip In Gauntlet#"
text = "#Equip Primary Weapon#"
scroll_active = false
horizontal_alignment = 1
vertical_alignment = 1
[node name="SwapIcon" type="TextureRect" parent="HUD"]
anchors_preset = 3
@ -463,24 +454,20 @@ offset_right = -6.0
offset_bottom = -1.0
grow_horizontal = 0
grow_vertical = 0
texture = ExtResource("24_gr6xt")
texture = ExtResource("18_okmpi")
[node name="RichTextLabel" type="RichTextLabel" parent="HUD/SwapIcon"]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -30.0
offset_top = -29.0
offset_right = 30.0
offset_bottom = 31.0
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
bbcode_enabled = true
text = "#Secondary Fire#"
text = "#Equip Secondary Weapon#"
scroll_active = false
horizontal_alignment = 1
vertical_alignment = 1
[node name="Minimap" type="TextureRect" parent="HUD"]
anchors_preset = 1
@ -519,10 +506,10 @@ scale = Vector2(3, 3)
mouse_filter = 2
[node name="LivesCount" type="Label" parent="HUD"]
offset_left = -5.0
offset_top = 15.0
offset_right = 100.0
offset_bottom = 72.0
offset_left = -2.24
offset_top = 23.28
offset_right = 102.76
offset_bottom = 112.28
theme_override_colors/font_color = Color(0.65098, 0.227451, 0.243137, 1)
theme_override_font_sizes/font_size = 37
text = "120
@ -724,47 +711,6 @@ grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
[node name="PrimaryEnergyBar" type="TextureProgressBar" parent="HUD"]
visible = false
anchors_preset = 3
anchor_left = 1.0
anchor_top = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = -500.0
offset_top = -40.0
grow_horizontal = 0
grow_vertical = 0
step = 0.01
value = 100.0
fill_mode = 1
nine_patch_stretch = true
texture_under = ExtResource("21_apps2")
texture_progress = ExtResource("21_apps2")
tint_under = Color(0, 1, 1, 0.168627)
tint_progress = Color(0, 1, 1, 1)
[node name="OffhandEnergyBar" type="TextureProgressBar" parent="HUD"]
visible = false
anchors_preset = 3
anchor_left = 1.0
anchor_top = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = -379.0
offset_top = -50.0
offset_bottom = -40.0
grow_horizontal = 0
grow_vertical = 0
step = 0.01
value = 100.0
fill_mode = 1
nine_patch_stretch = true
texture_under = ExtResource("21_apps2")
texture_progress = ExtResource("21_apps2")
tint_under = Color(0, 1, 1, 0.168627)
tint_progress = Color(0, 1, 1, 1)
[node name="VBoxContainer" type="VBoxContainer" parent="HUD"]
anchors_preset = 4
anchor_top = 0.5
@ -813,11 +759,6 @@ grow_vertical = 2
[node name="EnergyBar" parent="HUD" instance=ExtResource("27_14ugt")]
mouse_filter = 2
[node name="EnergyBar2" parent="HUD" instance=ExtResource("27_14ugt")]
offset_left = -72.0
offset_right = -72.0
mouse_filter = 2
[node name="WeaponSwapTimer" type="Timer" parent="."]
wait_time = 0.4
one_shot = true

View File

@ -16,8 +16,6 @@ var minimap_anchor: Node3D
var enemy_names: Array[String]
@export var enemy_sprites: Array[TextureRect]
@export var enemy_counts: Array[Label]
@export var weapon_energy_bar: TextureProgressBar
@export var offhand_energy_bar: TextureProgressBar
@export var pickup_notif_scene: PackedScene
@export var wave_start_label: RichTextLabel
@export var place_icon: TextureRect
@ -26,7 +24,6 @@ var enemy_names: Array[String]
@export var swap_text: RichTextLabel
@export var enemy_card_scene: PackedScene
@export var new_energy_bar: EnergyBar
@export var new_energy_bar2: EnergyBar
var audio_guard: bool = false
var cards: Array[EnemyCardUI] = []
@ -65,20 +62,14 @@ func show_wave_generation_anim(wave: Wave) -> void:
func set_energy_visible(value: bool) -> void:
pass
#weapon_energy_bar.set_visible(value)
func set_offhand_energy_visible(value: bool) -> void:
pass
#offhand_energy_bar.set_visible(value)
new_energy_bar.visible = value
func _process(_delta: float) -> void:
fps_label.text = "FPS: " + str(Engine.get_frames_per_second())
wave_start_label.text = parse_action_tag("[center]Press #Ready# to start wave")
place_text.text = parse_action_tag("[center]#Equip In Gauntlet#")
swap_text.text = parse_action_tag("[center]#Secondary Fire#")
place_text.text = parse_action_tag("[center]#Equip Primary Weapon#")
swap_text.text = parse_action_tag("[center]#Equip Secondary Weapon#")
func grow_wave_start_label() -> void:
@ -157,7 +148,7 @@ func set_crosshair_visible(value: bool) -> void:
#TODO: the fuck is audio_guard for?
func set_weapon_energy(value: int, energy_type: Data.EnergyType) -> void:
weapon_energy_bar.value = value
#weapon_energy_bar.value = value
if player.editing_mode:
audio_guard = true
if value == 0 and !audio_guard:
@ -170,10 +161,6 @@ func set_weapon_energy(value: int, energy_type: Data.EnergyType) -> void:
audio_guard = false
func set_offhand_energy(value: int) -> void:
offhand_energy_bar.value = value
func maximise_minimap(anchor: Node3D) -> void:
minimap_cam.anchor = anchor
minimap.set_anchors_and_offsets_preset(Control.PRESET_FULL_RECT)
@ -208,11 +195,21 @@ func pickup(card: Card) -> void:
func parse_action_tag(text: String) -> String:
var string_array: PackedStringArray = text.split("#")
var output: Array[String] = []
if string_array.size() > 1:
var event: InputEvent = InputMap.action_get_events(string_array[1])[0]
if event is InputEventKey:
string_array[1] = "[img=top,50]%s[/img]" % KeyIconMap.keys[str(event.keycode)]
if event is InputEventMouseButton:
string_array[1] = "[img=top,50]%s[/img]" % KeyIconMap.mouse_buttons[str(event.button_index)]
for i: int in InputMap.action_get_events(string_array[1]).size():
var event: InputEvent = InputMap.action_get_events(string_array[1])[i]
if InputMap.action_get_events(string_array[1]).size() > 1:
var last: bool = true if i == InputMap.action_get_events(string_array[1]).size() - 1 else false
var first: bool = true if i == 0 else false
if last:
output.append(" or ")
elif !first:
output.append(", ")
if event is InputEventKey:
output.append("[img=top,50]%s[/img]" % KeyIconMap.keys[str(event.physical_keycode)])
if event is InputEventMouseButton:
output.append("[img=top,50]%s[/img]" % KeyIconMap.mouse_buttons[str(event.button_index)])
string_array[1] = "".join(output)
text = "".join(string_array)
return text

View File

@ -172,9 +172,9 @@ func _process(_delta: float) -> void:
change_crouch = true
if crouching:
crouch()
if Input.is_action_just_pressed("Crouch") and is_in_climb_zone:
if Input.is_action_just_pressed("Hold Climbing") and is_in_climb_zone:
hold_climb = true
if Input.is_action_just_released("Crouch") and is_in_climb_zone:
if Input.is_action_just_released("Hold Climbing") and is_in_climb_zone:
hold_climb = false
look_vector.x = Input.get_joy_axis(0, JOY_AXIS_RIGHT_X)
look_vector.y = Input.get_joy_axis(0, JOY_AXIS_RIGHT_Y)