Added ability to restart server if enough players quit #2
|
@ -27,7 +27,7 @@ func init() -> void:
|
||||||
func _process(delta : float) -> void:
|
func _process(delta : float) -> void:
|
||||||
var all_ready = true
|
var all_ready = true
|
||||||
for player in players.values():
|
for player in players.values():
|
||||||
if !player.is_ready and !player.has_died:
|
if !player.is_ready and !player.has_died and !player.is_zombie:
|
||||||
all_ready = false
|
all_ready = false
|
||||||
if all_ready:
|
if all_ready:
|
||||||
for player in players.values():
|
for player in players.values():
|
||||||
|
@ -36,12 +36,12 @@ func _process(delta : float) -> void:
|
||||||
player.calculate_plans()
|
player.calculate_plans()
|
||||||
|
|
||||||
func generate_translation() -> Vector3:
|
func generate_translation() -> Vector3:
|
||||||
#return Vector3(rand_range(-5,5),rand_range(-5,5),rand_range(-5,5))
|
return Vector3(rand_range(-5,5),rand_range(-5,5),rand_range(-5,5))
|
||||||
return Vector3(0,0,rand_range(-5,5))
|
#return Vector3(0,0,rand_range(-5,5))
|
||||||
|
|
||||||
func generate_rotation() -> Vector3:
|
func generate_rotation() -> Vector3:
|
||||||
#return Vector3(rand_range(-1,1),rand_range(-1,1),rand_range(-1,1)).normalized()
|
return Vector3(rand_range(-1,1),rand_range(-1,1),rand_range(-1,1)).normalized()
|
||||||
return Vector3(0,0,1)
|
#return Vector3(0,0,1)
|
||||||
|
|
||||||
func play_full_plans():
|
func play_full_plans():
|
||||||
for player in players.values():
|
for player in players.values():
|
||||||
|
@ -68,8 +68,6 @@ remote func request_rematch(id) -> void:
|
||||||
if len(rematch_requests) == len(get_parent().ids):
|
if len(rematch_requests) == len(get_parent().ids):
|
||||||
start_rematch()
|
start_rematch()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
func start_rematch() -> void:
|
func start_rematch() -> void:
|
||||||
for player_id in players.keys():
|
for player_id in players.keys():
|
||||||
players[player_id].queue_free()
|
players[player_id].queue_free()
|
||||||
|
|
|
@ -22,6 +22,7 @@ var health : float = 100.0
|
||||||
var is_alive : bool = true
|
var is_alive : bool = true
|
||||||
var time_of_death : float = -1
|
var time_of_death : float = -1
|
||||||
var has_died : bool = false
|
var has_died : bool = false
|
||||||
|
var is_zombie : bool = false
|
||||||
|
|
||||||
var turn_number : int = 0
|
var turn_number : int = 0
|
||||||
|
|
||||||
|
@ -195,7 +196,6 @@ func die(time : float) -> void:
|
||||||
$CollisionShape.disabled = true
|
$CollisionShape.disabled = true
|
||||||
time_of_death = time
|
time_of_death = time
|
||||||
|
|
||||||
|
|
||||||
func play_all_plans():
|
func play_all_plans():
|
||||||
get_parent().play_full_plans()
|
get_parent().play_full_plans()
|
||||||
|
|
||||||
|
@ -217,6 +217,8 @@ func play_last_plan():
|
||||||
$CollisionShape.disabled = false
|
$CollisionShape.disabled = false
|
||||||
|
|
||||||
func calculate_plans():
|
func calculate_plans():
|
||||||
|
if is_zombie:
|
||||||
|
create_zombie_plan()
|
||||||
if turn_number == 0:
|
if turn_number == 0:
|
||||||
play_full_plan()
|
play_full_plan()
|
||||||
else:
|
else:
|
||||||
|
@ -240,3 +242,7 @@ func _on_player_enter_firing_arc(body):
|
||||||
|
|
||||||
func _on_player_exit_firing_arc(body):
|
func _on_player_exit_firing_arc(body):
|
||||||
players_in_firing_arc.erase(body)
|
players_in_firing_arc.erase(body)
|
||||||
|
|
||||||
|
func create_zombie_plan() -> void:
|
||||||
|
add_thrust_element(5, Vector3.ZERO, Vector3.ZERO)
|
||||||
|
add_weapons_element(5, false)
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
extends Node
|
extends Node
|
||||||
|
|
||||||
|
|
||||||
const MAX_PLAYERS : int = 2
|
const MAX_PLAYERS : int = 3
|
||||||
const PORT : int = 9374
|
const PORT : int = 9374
|
||||||
|
|
||||||
const Arena = preload("res://Scenes/Arena.tscn")
|
const Arena = preload("res://Scenes/Arena.tscn")
|
||||||
|
@ -10,6 +10,7 @@ var peer : NetworkedMultiplayerENet = null
|
||||||
var ids = []
|
var ids = []
|
||||||
var console_output : TextEdit = null
|
var console_output : TextEdit = null
|
||||||
var ready_ids = []
|
var ready_ids = []
|
||||||
|
var playing : bool = false
|
||||||
var name_dict = {}
|
var name_dict = {}
|
||||||
var color_dict = {}
|
var color_dict = {}
|
||||||
|
|
||||||
|
@ -42,6 +43,15 @@ func _peer_connected(id : int) -> void:
|
||||||
func _peer_disconnected(id : int) -> void:
|
func _peer_disconnected(id : int) -> void:
|
||||||
ids.erase(id)
|
ids.erase(id)
|
||||||
self.console_print("Player has disconnected with id " + String(id))
|
self.console_print("Player has disconnected with id " + String(id))
|
||||||
|
if !playing:
|
||||||
|
return
|
||||||
|
var alive_online_players : int = 0
|
||||||
|
$Arena.players[id].is_zombie = true
|
||||||
|
for id in ids:
|
||||||
|
if $Arena.players[id].is_alive:
|
||||||
|
alive_online_players += 1
|
||||||
|
if alive_online_players < 2:
|
||||||
|
self.server_request_exit()
|
||||||
|
|
||||||
remote func client_ready(id : int) -> void:
|
remote func client_ready(id : int) -> void:
|
||||||
if id in ready_ids:
|
if id in ready_ids:
|
||||||
|
@ -57,6 +67,7 @@ func start_game() -> void:
|
||||||
console_print('Starting Game...')
|
console_print('Starting Game...')
|
||||||
send_name_dict()
|
send_name_dict()
|
||||||
send_color_dict()
|
send_color_dict()
|
||||||
|
playing = true
|
||||||
|
|
||||||
func send_name_dict() -> void:
|
func send_name_dict() -> void:
|
||||||
for element in name_dict.keys():
|
for element in name_dict.keys():
|
||||||
|
@ -84,8 +95,14 @@ func end_game() -> void:
|
||||||
peer.close_connection()
|
peer.close_connection()
|
||||||
peer.create_server( PORT, MAX_PLAYERS )
|
peer.create_server( PORT, MAX_PLAYERS )
|
||||||
peer.refuse_new_connections = false
|
peer.refuse_new_connections = false
|
||||||
|
playing = false
|
||||||
|
|
||||||
remote func request_exit() -> void:
|
remote func request_exit() -> void:
|
||||||
console_print("Exit requested...")
|
console_print("Exit requested...")
|
||||||
rpc("exit_requested")
|
rpc("exit_requested")
|
||||||
$ExitTimer.start()
|
$ExitTimer.start()
|
||||||
|
|
||||||
|
func server_request_exit() -> void:
|
||||||
|
console_print("Server requested exit...")
|
||||||
|
rpc("server_exit_requested")
|
||||||
|
$ExitTimer.start()
|
||||||
|
|
Loading…
Reference in New Issue