Skip to content

Commit

Permalink
wip
Browse files Browse the repository at this point in the history
  • Loading branch information
Kvel2D committed Feb 8, 2025
1 parent dfff927 commit cef46e0
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 2 deletions.
3 changes: 2 additions & 1 deletion data/hints/chat_commands.csv
Original file line number Diff line number Diff line change
Expand Up @@ -54,4 +54,5 @@ The different versions [color=GOLD]attack[/color] vs [color=GOLD]friendly[/color

[color=GOLD]/check-range-attack off[/color] to hide range checker.
"
"/print-ranges-to-towers","Print ranges between selected tower and all other towers."
"/print-ranges-to-towers","Print ranges between selected tower and all other towers."
"/allow-all","Enables shared build space for teammates so that they can build towers in each other's areas."
18 changes: 17 additions & 1 deletion src/game_scene/build_space.gd
Original file line number Diff line number Diff line change
Expand Up @@ -91,13 +91,29 @@ func get_build_info_for_pos(player: Player, pos_canvas: Vector2) -> Array:
var quarter_pos: Vector2i = pos_map + offset
quarter_list.append(quarter_pos)

var team: Team = player.get_team()
var allow_shared_build_space: bool = team.get_allow_shared_build_space()

# NOTE: normally players can only build in their own areas
# but if this option is enabled, then players can build in
# teammate areas as well
var matching_player_id_list: Array[int] = []
if allow_shared_build_space:
var player_list: Array[Player] = team.get_players()

for team_player in player_list:
var team_player_id: int = team_player.get_id()
matching_player_id_list.append(team_player_id)
else:
matching_player_id_list.append(player_id)

var build_info: Array = [false, false, false, false]

for i in range(0, 4):
var quarter_pos: Vector2i = quarter_list[i]
var quarter_pos_is_occupied: bool = _occupied_map.get(quarter_pos, false)
var player_id_at_quarter_pos: int = _buildable_cells.get(quarter_pos, -1)
var quarter_is_buildable: bool = player_id_at_quarter_pos == player_id
var quarter_is_buildable: bool = matching_player_id_list.has(player_id_at_quarter_pos)

build_info[i] = !quarter_pos_is_occupied && quarter_is_buildable

Expand Down
11 changes: 11 additions & 0 deletions src/game_scene/chat_commands.gd
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ 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 PRINT_RANGES_TO_TOWERS: Array[String] = ["/print-ranges-to-towers", "/prtt"]
const ALLOW_ALL: Array[String] = ["/allow-all"]

const CREATE_ITEM: Array[String] = ["/createitem", "/ci"]
const PAUSE_WAVES: Array[String] = ["/pause-waves", "/pw"]
Expand Down Expand Up @@ -178,6 +179,8 @@ func process_command(player: Player, command: String):
_command_check_range_attack(player, command_args)
elif PRINT_RANGES_TO_TOWERS.has(command_main):
_command_print_ranges_to_towers(player)
elif ALLOW_ALL.has(command_main):
_command_allow_all(player)
else:
_add_error(player, "Unknown command: %s" % command_main)

Expand Down Expand Up @@ -583,6 +586,14 @@ func _command_print_ranges_to_towers(player: Player):
await get_tree().create_timer(1.0).timeout


func _command_allow_all(player: Player):
var team: Team = player.get_team()

team.enable_allow_shared_build_space()

_add_status_for_team(team, "Players in this team can now build towers in each other's area.")


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.")
Expand Down
9 changes: 9 additions & 0 deletions src/player/team.gd
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ var _level: int = 1
var _player_list: Array[Player] = []
var _finished_the_game: bool = false
var _player_defined_autospawn_time: float = -1
var _allow_shared_build_space: bool = false

@export var _next_wave_timer: ManualTimer
@export var _portal_damage_sound_cooldown_timer: Timer
Expand Down Expand Up @@ -194,6 +195,14 @@ func get_start_wave_action_is_on_cooldown() -> bool:
return is_on_cooldown


func enable_allow_shared_build_space():
_allow_shared_build_space = true


func get_allow_shared_build_space() -> bool:
return _allow_shared_build_space


#########################
### Private ###
#########################
Expand Down

0 comments on commit cef46e0

Please sign in to comment.