Skip to content

Commit

Permalink
Add /check-range-attack command
Browse files Browse the repository at this point in the history
And /check-range-friendly
  • Loading branch information
Kvel2D committed Oct 3, 2024
1 parent be2a39c commit 2ebe26d
Show file tree
Hide file tree
Showing 5 changed files with 79 additions and 3 deletions.
10 changes: 10 additions & 0 deletions data/hints/chat_commands.csv
Original file line number Diff line number Diff line change
Expand Up @@ -32,3 +32,13 @@ Use [color=GOLD]/unpause[/color] to resume.
[color=GOLD]/damage-meters-recent[/color] or [color=GOLD]/dmr[/color] - Prints a list of towers which dealt the most damage during the last 5 waves.
"
"/ping","Show/hide your ping."
"/check-range-attack","[color=GOLD]/check-range-attack <RADIUS>[/color] or [color=GOLD]/cra <RADIUS>[/color]

[color=GOLD]/check-range-friendly <RADIUS>[/color] or [color=GOLD]/crf <RADIUS>[/color]

Displays a range checker with a given radius.

The different versions [color=GOLD]attack[/color] vs [color=GOLD]friendly[/color] are used to check for range on creeps vs towers.

[color=GOLD]/check-range-attack OFF[/color] to hide range checker.
"
39 changes: 38 additions & 1 deletion src/game_scene/chat_commands.gd
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ const UNIGNORE: Array[String] = ["/unignore"]
const PING: Array[String] = ["/ping"]
const PAUSE: Array[String] = ["/pause"]
const UNPAUSE: Array[String] = ["/unpause"]
const CHECK_RANGE_FRIENDLY: Array[String] = ["/check-range-friendly", "/crf"]
const CHECK_RANGE_ATTACK: Array[String] = ["/check-range-attack", "/cra"]

const CREATE_ITEM: Array[String] = ["/createitem", "/ci"]
const PAUSE_WAVES: Array[String] = ["/pause-waves", "/pw"]
Expand Down Expand Up @@ -58,6 +60,8 @@ const LOCAL_ONLY_COMMANDS_LIST_OF_LISTS: Array = [
IGNORE,
UNIGNORE,
PING,
CHECK_RANGE_FRIENDLY,
CHECK_RANGE_ATTACK,
]

var not_allowed_in_multiplayer: Array = []
Expand All @@ -68,6 +72,7 @@ var host_command_list: Array = []
@export var _team_container: TeamContainer
@export var _hud: HUD
@export var _game_client: GameClient
@export var _range_checker: TowerPreview


#########################
Expand Down Expand Up @@ -165,6 +170,10 @@ func process_command(player: Player, command: String):
_command_pause()
elif UNPAUSE.has(command_main):
_command_unpause()
elif CHECK_RANGE_FRIENDLY.has(command_main):
_command_check_range_friendly(player, command_args)
elif CHECK_RANGE_ATTACK.has(command_main):
_command_check_range_attack(player, command_args)
else:
_add_error(player, "Unknown command: %s" % command_main)

Expand Down Expand Up @@ -512,12 +521,40 @@ func _command_pause():
func _command_unpause():
_command_pause_helper(false)


func _command_pause_helper(value: bool):
_hud.set_multiplayer_pause_indicator_visible(value)
_game_client.set_paused_by_host(value)


func _command_check_range_friendly(player: Player, args: Array):
var friendly: bool = true
_command_check_range_helper(player, args, friendly)


func _command_check_range_attack(player: Player, args: Array):
var friendly: bool = false
_command_check_range_helper(player, args, friendly)


func _command_check_range_helper(player: Player, args: Array, friendly: bool):
if args.size() != 1:
_add_error(player, "Invalid command args. Must specify range value or \"off\" to disable range checker.")

return

var arg_string: String = args[0]

if arg_string == "OFF":
_range_checker.hide()
_add_status(player, "Disabled range checker.")

return

var radius: int = arg_string.to_int()
_range_checker.set_range_manual(radius, friendly)
_range_checker.show()


# NOTE: oil counts are based on average oil counts obtained
# by wave 200
func _add_test_oils(player: Player, tower: Tower):
Expand Down
4 changes: 4 additions & 0 deletions src/game_scene/game_scene.gd
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ class_name GameScene extends Node
@export var _tutorial_menu: TutorialMenu
@export var _tutorial_controller: TutorialController
@export var _builder_menu: BuilderMenu
@export var _range_checker: TowerPreview

var _ui_input_is_enabled: bool = false

Expand Down Expand Up @@ -116,6 +117,9 @@ func _ready():
_shadow_above_builder_menu.show()
_set_ui_input_enabled(false)

# NOTE: 515 is Lesser Iron Defender, average placeholder looking tower
_range_checker.set_tower(515)

# NOTE: below are special tools which are not run during
# normal gameplay.
if Config.run_save_tooltips_tool():
Expand Down
12 changes: 10 additions & 2 deletions src/game_scene/game_scene.tscn
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ shader_parameter/vignette_intensity = 0.299
shader_parameter/vignette_opacity = 0.742
shader_parameter/vignette_rgb = Color(0, 0, 0.129412, 1)

[node name="GameScene" type="Node" node_paths=PackedStringArray("_game_menu", "_hud", "_map", "_camera", "_team_container", "_game_start_timer", "_select_point_for_cast", "_select_target_for_cast", "_move_item", "_select_unit", "_build_tower", "_mouse_state", "_game_client", "_game_time", "_pause_shadow_rect", "_shadow_below_builder_menu", "_shadow_above_builder_menu", "_object_container", "_build_space", "_tutorial_menu", "_tutorial_controller", "_builder_menu")]
[node name="GameScene" type="Node" node_paths=PackedStringArray("_game_menu", "_hud", "_map", "_camera", "_team_container", "_game_start_timer", "_select_point_for_cast", "_select_target_for_cast", "_move_item", "_select_unit", "_build_tower", "_mouse_state", "_game_client", "_game_time", "_pause_shadow_rect", "_shadow_below_builder_menu", "_shadow_above_builder_menu", "_object_container", "_build_space", "_tutorial_menu", "_tutorial_controller", "_builder_menu", "_range_checker")]
process_mode = 3
script = ExtResource("1_0wd1b")
_game_menu = NodePath("UI/GameMenu")
Expand All @@ -89,6 +89,7 @@ _build_space = NodePath("Gameplay/BuildSpace")
_tutorial_menu = NodePath("UI/VBoxContainer/TutorialMenu")
_tutorial_controller = NodePath("Gameplay/TutorialController")
_builder_menu = NodePath("UI/BuilderMenu")
_range_checker = NodePath("World/RangeChecker")

[node name="Gameplay" type="Node" parent="."]
process_mode = 1
Expand Down Expand Up @@ -150,11 +151,12 @@ _build_space = NodePath("../BuildSpace")
_chat_commands = NodePath("../ChatCommands")
_select_unit = NodePath("../SelectUnit")

[node name="ChatCommands" type="Node" parent="Gameplay" node_paths=PackedStringArray("_team_container", "_hud", "_game_client")]
[node name="ChatCommands" type="Node" parent="Gameplay" node_paths=PackedStringArray("_team_container", "_hud", "_game_client", "_range_checker")]
script = ExtResource("16_amwbk")
_team_container = NodePath("../TeamContainer")
_hud = NodePath("../../UI/HUD")
_game_client = NodePath("../GameClient")
_range_checker = NodePath("../../World/RangeChecker")

[node name="BuildSpace" type="Node" parent="Gameplay"]
script = ExtResource("16_p1jwo")
Expand Down Expand Up @@ -229,6 +231,12 @@ visible = false
z_index = 100
_build_space = NodePath("../../Gameplay/BuildSpace")

[node name="RangeChecker" parent="World" node_paths=PackedStringArray("_build_space") instance=ExtResource("22_53ta1")]
visible = false
modulate = Color(1, 1, 1, 0.784314)
z_index = 100
_build_space = NodePath("../../Gameplay/BuildSpace")

[node name="UI" type="CanvasLayer" parent="."]

[node name="DesaturationFilter" type="ColorRect" parent="UI"]
Expand Down
17 changes: 17 additions & 0 deletions src/towers/tower_preview.gd
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,23 @@ func set_tower(tower_id: int):
Utils.setup_range_indicators(range_data_list, _range_indicator_container, local_player)


func set_range_manual(radius: int, friendly: bool):
for old_range_indicator in _range_indicator_container.get_children():
old_range_indicator.queue_free()

var target_type: TargetType
if friendly:
target_type = TargetType.new(TargetType.TOWERS)
else:
target_type = TargetType.new(TargetType.CREEPS)

var range_data: RangeData = RangeData.new("", radius, target_type)
var range_data_list: Array[RangeData] = [range_data]

var local_player: Player = PlayerManager.get_local_player()
Utils.setup_range_indicators(range_data_list, _range_indicator_container, local_player)


func get_tower_id() -> int:
return _tower_id

Expand Down

0 comments on commit 2ebe26d

Please sign in to comment.