revamped key rebinding system
This commit is contained in:
53
PCs/hero.gd
53
PCs/hero.gd
@ -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
|
||||
|
@ -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
|
||||
|
41
PCs/hud.gd
41
PCs/hud.gd
@ -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
|
||||
|
@ -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)
|
||||
|
Reference in New Issue
Block a user