push project up sabs assets
This commit is contained in:
137
billiards.gd
Normal file
137
billiards.gd
Normal file
@@ -0,0 +1,137 @@
|
||||
class_name Billiards extends Node
|
||||
|
||||
|
||||
@onready var server_net: Node = $server_net
|
||||
@onready var client_net: ClientNetworking = $client_net
|
||||
|
||||
|
||||
#
|
||||
#
|
||||
# Editor -> Debug > Customize run instance
|
||||
#
|
||||
# -- client host_snooker bobs_game
|
||||
#
|
||||
# -- client join bobs_game
|
||||
#
|
||||
#
|
||||
# CLI
|
||||
#
|
||||
# If going straight to game server:
|
||||
# ./billiards.sh -- server_5001 game snooker
|
||||
# ./billiards.sh -- join_server 127.0.0.1 5001
|
||||
#
|
||||
# If going through lobby server:
|
||||
# ./billiards.sh -- client host_snooker bobs_game
|
||||
# ./billiards.sh -- client join bobs_game
|
||||
#
|
||||
#
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
add_child(Globals.multiplayer_data.multiplayer_synchronizer)
|
||||
move_child(Globals.multiplayer_data.multiplayer_synchronizer, 0)
|
||||
|
||||
Globals.game_state.set_game_scene(
|
||||
"res://scenes/screens/start_screen/start.tscn"
|
||||
)
|
||||
|
||||
_parse_args()
|
||||
|
||||
func _parse_args() -> void:
|
||||
for arg in OS.get_cmdline_user_args():
|
||||
if "server_" in arg:
|
||||
server_(arg)
|
||||
elif "host_" in arg:
|
||||
host_(arg)
|
||||
|
||||
match arg:
|
||||
"join_server":
|
||||
join_server(arg)
|
||||
"client":
|
||||
client(arg)
|
||||
"game":
|
||||
game(arg)
|
||||
"join":
|
||||
join(arg)
|
||||
_:
|
||||
pass
|
||||
|
||||
func _set_game_mode(mode: String) -> void:
|
||||
match mode:
|
||||
"8ball":
|
||||
Globals.game_data.game_mode = "8ball"
|
||||
Globals.game_data.SelectedGameMode = \
|
||||
Globals.game_data.GameModeType.BALL_8
|
||||
"9ball":
|
||||
Globals.game_data.game_mode = "9ball"
|
||||
Globals.game_data.SelectedGameMode = \
|
||||
Globals.game_data.GameModeType.BALL_9
|
||||
"snooker":
|
||||
Globals.game_data.game_mode = "snooker"
|
||||
Globals.game_data.SelectedGameMode = \
|
||||
Globals.game_data.GameModeType.SNOOKER
|
||||
_:
|
||||
Globals.game_data.game_mode = "snooker"
|
||||
Globals.game_data.SelectedGameMode = \
|
||||
Globals.game_data.GameModeType.SNOOKER
|
||||
|
||||
|
||||
|
||||
|
||||
func server_(arg: String) -> void:
|
||||
var server_port = arg.split("_")[1]
|
||||
|
||||
server_net.start_server("0.0.0.0", int(server_port))
|
||||
|
||||
func host_(arg: String) -> void:
|
||||
var game_mode = arg.split("_")[1]
|
||||
var match_name = OS.get_cmdline_user_args()[-1]
|
||||
|
||||
Globals.multiplayer_data.wait_for_connection()
|
||||
|
||||
$scene/lobby_screen.find_child(game_mode, true, false).emit_signal("pressed")
|
||||
$scene/lobby_screen.find_child("new_match_name_input", true, false).text = match_name
|
||||
$scene/lobby_screen.find_child("match_create_bttn", true, false).emit_signal("pressed")
|
||||
|
||||
func join_server(_arg: String) -> void:
|
||||
var server_address = OS.get_cmdline_user_args()[1]
|
||||
var server_port = OS.get_cmdline_user_args()[2]
|
||||
|
||||
Globals.multiplayer_data.set_multiplayer_active()
|
||||
|
||||
# NOTE: Need to load lobby in order for signals to get bound
|
||||
# which then game server calls on its load to do handoff
|
||||
Globals.game_state.set_game_scene(
|
||||
"res://scenes/screens/lobby_screen/lobby.tscn"
|
||||
)
|
||||
|
||||
client_net.start_client(server_address, int(server_port))
|
||||
|
||||
func client(_arg: String) -> void:
|
||||
Globals.game_state.set_game_scene(
|
||||
"res://scenes/screens/lobby_screen/lobby.tscn"
|
||||
)
|
||||
|
||||
$scene/lobby_screen.find_child("host_connect_bttn", true, false).emit_signal("pressed")
|
||||
|
||||
func game(_arg: String) -> void:
|
||||
var game_mode = OS.get_cmdline_user_args()[-1]
|
||||
|
||||
_set_game_mode(game_mode)
|
||||
Globals.multiplayer_data.set_multiplayer_active()
|
||||
|
||||
Globals.game_state.set_game_scene(
|
||||
"res://scenes/game.tscn"
|
||||
)
|
||||
|
||||
func join(_arg: String) -> void:
|
||||
var _match_id = OS.get_cmdline_user_args()[-1]
|
||||
|
||||
Globals.multiplayer_data.wait_for_connection()
|
||||
|
||||
var button = $scene/lobby_screen.find_child("join_bttn", true, false)
|
||||
while not button:
|
||||
await get_tree().process_frame
|
||||
button = $scene/lobby_screen.find_child("join_bttn", true, false)
|
||||
|
||||
button.emit_signal("pressed")
|
||||
Reference in New Issue
Block a user