feat: bullrush branch - mekton bulls arena, HUD, NPC managers, godot_ai updates
This commit is contained in:
@@ -36,6 +36,11 @@ signal gauntlet_round_duration_changed(duration: int)
|
||||
signal gauntlet_growth_interval_changed(interval: float)
|
||||
signal gauntlet_cells_per_tick_changed(cells: Dictionary)
|
||||
|
||||
# Mekton Bulls settings signals
|
||||
signal mekton_bulls_round_duration_changed(duration: int)
|
||||
signal mekton_bulls_phase_interval_changed(interval: int)
|
||||
signal mekton_bulls_points_changed(min_pts: int, max_pts: int)
|
||||
|
||||
# Room data structure
|
||||
var current_room: Dictionary = {}
|
||||
var players_in_room: Array = [] # [{id, name, is_ready}]
|
||||
@@ -88,13 +93,19 @@ var gauntlet_cells_per_tick: Dictionary = {
|
||||
"phase3": [8, 10],
|
||||
}
|
||||
|
||||
# Mekton Bulls settings
|
||||
var mekton_bulls_round_duration: int = 120
|
||||
var mekton_bulls_phase_interval: int = 30
|
||||
var mekton_bulls_min_points: int = 100
|
||||
var mekton_bulls_max_points: int = 1000
|
||||
|
||||
# Rematch tracking
|
||||
var rematch_votes: Array = [] # [player_id, ...]
|
||||
|
||||
# Character and area selection
|
||||
var available_characters: Array[String] = ["Copper", "Dabro", "Gatot", "Pip", "Random"]
|
||||
var available_areas: Array[String] = []
|
||||
var available_game_modes: Array[String] = ["Freemode", "Stop n Go", "Candy Pump Survival"]
|
||||
var available_game_modes: Array[String] = ["Freemode", "Stop n Go", "Tekton Doors", "Candy Pump Survival", "Mekton Bulls"]
|
||||
var selected_area: String = "Freemode Arena" # Host-controlled
|
||||
var game_mode: String = "Freemode" # Host-controlled
|
||||
var local_character_index: int = 0 # Local player's character index
|
||||
@@ -149,8 +160,12 @@ func _update_available_areas(mode: String) -> void:
|
||||
available_areas = ["Freemode Arena", "Classic", "Colloseum"]
|
||||
"Stop n Go":
|
||||
available_areas = ["Stop N Go Arena"]
|
||||
"Tekton Doors":
|
||||
available_areas = ["Tekton Doors Area"]
|
||||
"Candy Pump Survival":
|
||||
available_areas = ["Gauntlet Arena"]
|
||||
"Mekton Bulls":
|
||||
available_areas = ["Mekton Bulls Arena"]
|
||||
_:
|
||||
available_areas = ["Classic"]
|
||||
|
||||
@@ -584,6 +599,39 @@ func sync_gauntlet_cells_per_tick(cells: Dictionary) -> void:
|
||||
gauntlet_cells_per_tick = cells
|
||||
emit_signal("gauntlet_cells_per_tick_changed", cells)
|
||||
|
||||
# =============================================================================
|
||||
# Mekton Bulls Settings
|
||||
# =============================================================================
|
||||
|
||||
func set_mekton_bulls_round_duration(duration: int) -> void:
|
||||
mekton_bulls_round_duration = duration
|
||||
if is_host: rpc("sync_mekton_bulls_round_duration", duration)
|
||||
|
||||
@rpc("authority", "call_local", "reliable")
|
||||
func sync_mekton_bulls_round_duration(duration: int) -> void:
|
||||
mekton_bulls_round_duration = duration
|
||||
emit_signal("mekton_bulls_round_duration_changed", duration)
|
||||
|
||||
func set_mekton_bulls_phase_interval(interval: int) -> void:
|
||||
mekton_bulls_phase_interval = interval
|
||||
if is_host: rpc("sync_mekton_bulls_phase_interval", interval)
|
||||
|
||||
@rpc("authority", "call_local", "reliable")
|
||||
func sync_mekton_bulls_phase_interval(interval: int) -> void:
|
||||
mekton_bulls_phase_interval = interval
|
||||
emit_signal("mekton_bulls_phase_interval_changed", interval)
|
||||
|
||||
func set_mekton_bulls_points(min_pts: int, max_pts: int) -> void:
|
||||
mekton_bulls_min_points = min_pts
|
||||
mekton_bulls_max_points = max_pts
|
||||
if is_host: rpc("sync_mekton_bulls_points", min_pts, max_pts)
|
||||
|
||||
@rpc("authority", "call_local", "reliable")
|
||||
func sync_mekton_bulls_points(min_pts: int, max_pts: int) -> void:
|
||||
mekton_bulls_min_points = min_pts
|
||||
mekton_bulls_max_points = max_pts
|
||||
emit_signal("mekton_bulls_points_changed", min_pts, max_pts)
|
||||
|
||||
# =============================================================================
|
||||
# Character Selection
|
||||
# =============================================================================
|
||||
@@ -792,6 +840,10 @@ func start_game(force: bool = false) -> void:
|
||||
rpc("sync_gauntlet_round_duration", gauntlet_round_duration)
|
||||
rpc("sync_gauntlet_growth_interval", gauntlet_growth_interval)
|
||||
rpc("sync_gauntlet_cells_per_tick", gauntlet_cells_per_tick)
|
||||
# Sync mekton bulls
|
||||
rpc("sync_mekton_bulls_round_duration", mekton_bulls_round_duration)
|
||||
rpc("sync_mekton_bulls_phase_interval", mekton_bulls_phase_interval)
|
||||
rpc("sync_mekton_bulls_points", mekton_bulls_min_points, mekton_bulls_max_points)
|
||||
# Sync game mode
|
||||
rpc("sync_game_mode", game_mode)
|
||||
|
||||
@@ -870,6 +922,9 @@ func request_room_info(requester_id: int, requester_name: String, requester_char
|
||||
rpc_id(requester_id, "sync_gauntlet_round_duration", gauntlet_round_duration)
|
||||
rpc_id(requester_id, "sync_gauntlet_growth_interval", gauntlet_growth_interval)
|
||||
rpc_id(requester_id, "sync_gauntlet_cells_per_tick", gauntlet_cells_per_tick)
|
||||
rpc_id(requester_id, "sync_mekton_bulls_round_duration", mekton_bulls_round_duration)
|
||||
rpc_id(requester_id, "sync_mekton_bulls_phase_interval", mekton_bulls_phase_interval)
|
||||
rpc_id(requester_id, "sync_mekton_bulls_points", mekton_bulls_min_points, mekton_bulls_max_points)
|
||||
rpc_id(requester_id, "sync_game_mode", game_mode)
|
||||
rpc_id(requester_id, "sync_area", selected_area)
|
||||
|
||||
@@ -1021,3 +1076,7 @@ func reset() -> void:
|
||||
doors_swap_time = 15
|
||||
doors_refresh_time = 25
|
||||
doors_required_goals = 8
|
||||
mekton_bulls_round_duration = 120
|
||||
mekton_bulls_phase_interval = 30
|
||||
mekton_bulls_min_points = 100
|
||||
mekton_bulls_max_points = 1000
|
||||
|
||||
Reference in New Issue
Block a user