diff --git a/Game/project.godot b/Game/project.godot index d19ef43..a59ebf8 100644 --- a/Game/project.godot +++ b/Game/project.godot @@ -11,13 +11,20 @@ config_version=4 [application] config/name="Game" -run/main_scene="res://source/levels/trinity_site/trinity-site-level.tscn" +run/main_scene="res://source/scenes/GUI/main_menu.tscn" config/icon="res://icon.png" +[autoload] + +Network="*res://source/assets/scripts/server-handlers/network_processors/network.gd" +Global="*res://source/assets/scripts/server-handlers/global.gd" +PersistentNodes="*res://source/scenes/OVERLAY/elements/persistent_nodes.tscn" + [display] window/size/width=1920 window/size/height=1080 +window/size/resizable=false window/size/test_width=1024 window/size/test_height=600 window/stretch/mode="2d" diff --git a/Game/source/assets/scripts/player-handlers/player-body-handler.gd b/Game/source/assets/scripts/player-handlers/player-body-handler.gd deleted file mode 100644 index dac1241..0000000 --- a/Game/source/assets/scripts/player-handlers/player-body-handler.gd +++ /dev/null @@ -1,148 +0,0 @@ -extends KinematicBody2D - -# Instance of data pre-processors -var VDIR_preset_pre_processor_instance = preload("res://source/assets/scripts/pre-processors/vdir_pre-processor.gd").new() -var UIN_preset_pre_processor_instance = preload("res://source/assets/scripts/pre-processors/uin_pre-processor.gd").new() - -# Local class constants - -# Local class variables -var VDIR = {} -var user_input = {} -var user_state = {} -var dimensions = {} -var gravityVector = Vector2(0,0) -var movementVector = Vector2(0,0) -var movementSpeed = 0 -var maxMovementSpeed = 60 -var accelerationSpeed = 3.5 -var deccelerationSpeed = 4.25 -var jumpState = false -var jumpSpeed = 0 -var maxJumpSpeed = 400 -var time = 0 -var timeOut = 1 -var timedOut = true -var movementRight = false -var movementLeft = true - -func _ready(): - # Allow update process override. - set_process(true) - $"player-animated-sprite".play("idle") - pass - -func get_user_state(): - # Create a dictionary of all variables that relate to clients' active state. - var user_state = { - "global_position": global_transform.origin - } - return user_state - -func get_dimensions(): - # Create a dictionary of all (required) sizes in regards to the client. - var dimensions = { - "sprite": { - "width":$"player-sprite".texture.get_width(), - "height":$"player-sprite".texture.get_height(), - "scale":$"player-sprite".scale, - }, - "collider": { - "shape":$"player-collider".get_shape(), - "radius":$"player-collider".get_shape().get_radius() - } - } - return dimensions - -func process_rotation(): - var VDIR_ray_positive_y = VDIR["1"]["1"]["ray"]["position"].y - user_state["global_position"].y - var VDIR_ray_negative_y = VDIR["1"]["2"]["ray"]["position"].y - user_state["global_position"].y - var VDIR_ray_positive_x = VDIR["1"]["1"]["ray"]["position"].x - user_state["global_position"].x - var VDIR_ray_negative_x = VDIR["1"]["2"]["ray"]["position"].x - user_state["global_position"].x - var VDIR_ray_offset = sqrt(VDIR_ray_positive_y * VDIR_ray_positive_y + VDIR_ray_positive_x * VDIR_ray_positive_x) - sqrt(VDIR_ray_negative_y * VDIR_ray_negative_y + VDIR_ray_negative_x * VDIR_ray_negative_x) - if VDIR_ray_offset > 1: - rotation_degrees += VDIR_ray_offset / 10 - if VDIR_ray_offset < 1: - rotation_degrees += VDIR_ray_offset / 10 - -func _process(delta): - user_input = UIN_preset_pre_processor_instance.update() - user_state = get_user_state() - dimensions = get_dimensions() - time += delta - VDIR = VDIR_preset_pre_processor_instance.update(user_state, dimensions) - for vector_type in VDIR: - var v_t = str(vector_type) - for vector in VDIR[v_t]: - var v = str(vector) - if v_t == "1": - var space_state = get_world_2d().direct_space_state - var ray_cast = space_state.intersect_ray((VDIR[v_t][v]["start"] - user_state["global_position"]).rotated(rotation) + user_state["global_position"],(VDIR[v_t][v]["end"] - user_state["global_position"]).rotated(rotation) + user_state["global_position"],[self]) - if "position" in ray_cast: - VDIR[v_t][v]["ray"]["position"] = ray_cast.position - VDIR[v_t][v]["ray"]["length"] = sqrt((VDIR[v_t][v]["ray"]["position"].y - user_state["global_position"].y)*(VDIR[v_t][v]["ray"]["position"].y - user_state["global_position"].y)+(VDIR[v_t][v]["ray"]["position"].x - user_state["global_position"].x)*(VDIR[v_t][v]["ray"]["position"].x - user_state["global_position"].x)) - VDIR[v_t][v]["ray"]["offset"] = dimensions["collider"]["radius"] - VDIR[v_t][v]["ray"]["length"] - VDIR[v_t][v]["ray"]["collided"] = true - else: - VDIR[v_t][v]["ray"]["position"] = (VDIR[v_t][v]["end"] - user_state["global_position"]).rotated(rotation) + user_state["global_position"] - VDIR[v_t][v]["ray"]["length"] = sqrt((VDIR[v_t][v]["ray"]["position"].y - user_state["global_position"].y)*(VDIR[v_t][v]["ray"]["position"].y - user_state["global_position"].y)+(VDIR[v_t][v]["ray"]["position"].x - user_state["global_position"].x)*(VDIR[v_t][v]["ray"]["position"].x - user_state["global_position"].x)) - VDIR[v_t][v]["ray"]["offset"] = dimensions["collider"]["radius"] - VDIR[v_t][v]["ray"]["length"] - VDIR[v_t][v]["ray"]["collided"] = false - update() - process_rotation() - -func _physics_process(delta): - if "0" in VDIR: - if VDIR["1"]["0"]["ray"]["length"] - dimensions["collider"]["radius"] > 2 and jumpState == false: - gravityVector = (VDIR["1"]["0"]["ray"]["position"] - user_state["global_position"]).normalized() - elif jumpState == false: - gravityVector = Vector2(0,0) - movementVector = Vector2(0,0) - if user_input["right"] == true: - movementVector = Vector2(1,0) - elif user_input["left"] == true: - movementVector = Vector2(-1,0) - else: - movementVector = Vector2(0,0) - if movementVector.x == 1 and movementRight == false: - movementRight = true - movementLeft = false - $"player-animated-sprite".flip_h = true - elif movementVector.x == -1 and movementLeft == false: - movementLeft = true - movementRight = false - $"player-animated-sprite".flip_h = false - if movementVector != Vector2(0,0) and jumpState == false: - movementSpeed = move_toward(movementSpeed, maxMovementSpeed, accelerationSpeed) - elif movementVector != Vector2(0,0) and jumpState == true: - movementSpeed = move_toward(movementSpeed, maxMovementSpeed * 2, accelerationSpeed) - else: - movementSpeed = move_toward(movementSpeed, 0, deccelerationSpeed) - if timedOut == true and user_input["up"] == true and jumpState == false and VDIR["1"]["0"]["ray"]["length"] - dimensions["collider"]["radius"] < 2: - gravityVector = (VDIR["1"]["0"]["ray"]["position"] - user_state["global_position"]).normalized() * -1 - jumpSpeed = 0 - jumpState = true - time = 0 - if jumpState == true and jumpSpeed < maxJumpSpeed: - rotation_degrees = move_toward(rotation_degrees, 0, accelerationSpeed/10) - jumpSpeed = move_toward(jumpSpeed, maxJumpSpeed, accelerationSpeed * 10) - else: - jumpState = false - jumpSpeed = 100 - if user_input["boost"] == true: - maxMovementSpeed = move_toward(maxMovementSpeed,120,accelerationSpeed) - else: - maxMovementSpeed = move_toward(maxMovementSpeed,60,deccelerationSpeed) - if time < timeOut: - timedOut = false - else: - timedOut = true - move_and_slide(gravityVector * jumpSpeed + movementVector.rotated(rotation).normalized() * movementSpeed) - -func _draw(): - for vector_type in VDIR: - var v_t = str(vector_type) - for vector in VDIR[v_t]: - var v = str(vector) - if v_t == "1": - draw_line(VDIR[v_t][v]["start"] - user_state["global_position"],(VDIR[v_t][v]["ray"]["position"] - user_state["global_position"]).rotated(-rotation),Color(255,255,255,1),1) diff --git a/Game/source/assets/scripts/player_handlers/player_body_handler.gd b/Game/source/assets/scripts/player_handlers/player_body_handler.gd new file mode 100644 index 0000000..64823cc --- /dev/null +++ b/Game/source/assets/scripts/player_handlers/player_body_handler.gd @@ -0,0 +1,229 @@ +extends KinematicBody2D + +var username_text = load("res://source/scenes/OVERLAY/elements/username_text.tscn") +var username setget username_set +var username_text_instance = null + +puppet var puppet_position = Vector2(0, 0) setget puppet_position_set +puppet var puppet_velocity = Vector2() +puppet var puppet_rotaion = 0 +puppet var puppet_username = "" setget puppet_username_set + +onready var tween = $Tween + + +# Instance of data pre_processors +var VDIR_preset_pre_processor_instance = preload("res://source/assets/scripts/pre_processors/vdir_pre_processor.gd").new() +var UIN_preset_pre_processor_instance = preload("res://source/assets/scripts/pre_processors/uin_pre_processor.gd").new() + +# Local class constants + +# Local class variables +var VDIR = {} +var user_input = {} +var user_state = {} +var dimensions = {} +var gravityVector = Vector2(0,0) +var movementVector = Vector2(0,0) +var movementSpeed = 0 +var maxMovementSpeed = 200 +var accelerationSpeed = 5 +var deccelerationSpeed = 4.25 +var jumpState = false +var jumpSpeed = 0 +var maxJumpSpeed = 400 +var time = 0 +var timeOut = 1 +var timedOut = true +var movementRight = false +var movementLeft = true + + +func _ready(): + get_tree().connect("network_peer_connected", self, "_network_peer_connected") + username_text_instance = Global.instance_node_at_location(username_text, PersistentNodes, global_position) + username_text_instance.player_following = self + + # Allow update process override. + set_process(true) + $player_animated_sprite.play("idle") + + +func get_user_state(): + # Create a dictionary of all variables that relate to clients' active state. + var user_state = { + "global_position": global_transform.origin + } + return user_state + + +func get_dimensions(): + # Create a dictionary of all (required) sizes in regards to the client. + var dimensions = { + "sprite": { + "width":$player_sprite.texture.get_width(), + "height":$player_sprite.texture.get_height(), + "scale":$player_sprite.scale, + }, + "collider": { + "shape":$player_collider.get_shape(), + "radius":$player_collider.get_shape().get_radius() + } + } + return dimensions + + +func process_rotation(): + var VDIR_ray_positive_y = VDIR["1"]["1"]["ray"]["position"].y - user_state["global_position"].y + var VDIR_ray_negative_y = VDIR["1"]["2"]["ray"]["position"].y - user_state["global_position"].y + var VDIR_ray_positive_x = VDIR["1"]["1"]["ray"]["position"].x - user_state["global_position"].x + var VDIR_ray_negative_x = VDIR["1"]["2"]["ray"]["position"].x - user_state["global_position"].x + var VDIR_ray_offset = sqrt(VDIR_ray_positive_y * VDIR_ray_positive_y + VDIR_ray_positive_x * VDIR_ray_positive_x) - sqrt(VDIR_ray_negative_y * VDIR_ray_negative_y + VDIR_ray_negative_x * VDIR_ray_negative_x) + if VDIR_ray_offset > 1: + rotation_degrees += VDIR_ray_offset / 10 + if VDIR_ray_offset < 1: + rotation_degrees += VDIR_ray_offset / 10 + + +func _process(delta: float) -> void: + if username_text_instance != null: + username_text_instance.name = "username" + name + + user_input = UIN_preset_pre_processor_instance.update() + user_state = get_user_state() + dimensions = get_dimensions() + time += delta + VDIR = VDIR_preset_pre_processor_instance.update(user_state, dimensions) + for vector_type in VDIR: + var v_t = str(vector_type) + for vector in VDIR[v_t]: + var v = str(vector) + if v_t == "1": + var space_state = get_world_2d().direct_space_state + var ray_cast = space_state.intersect_ray((VDIR[v_t][v]["start"] - user_state["global_position"]).rotated(rotation) + user_state["global_position"],(VDIR[v_t][v]["end"] - user_state["global_position"]).rotated(rotation) + user_state["global_position"],[self]) + if "position" in ray_cast: + VDIR[v_t][v]["ray"]["position"] = ray_cast.position + VDIR[v_t][v]["ray"]["length"] = sqrt((VDIR[v_t][v]["ray"]["position"].y - user_state["global_position"].y)*(VDIR[v_t][v]["ray"]["position"].y - user_state["global_position"].y)+(VDIR[v_t][v]["ray"]["position"].x - user_state["global_position"].x)*(VDIR[v_t][v]["ray"]["position"].x - user_state["global_position"].x)) + VDIR[v_t][v]["ray"]["offset"] = dimensions["collider"]["radius"] - VDIR[v_t][v]["ray"]["length"] + VDIR[v_t][v]["ray"]["collided"] = true + else: + VDIR[v_t][v]["ray"]["position"] = (VDIR[v_t][v]["end"] - user_state["global_position"]).rotated(rotation) + user_state["global_position"] + VDIR[v_t][v]["ray"]["length"] = sqrt((VDIR[v_t][v]["ray"]["position"].y - user_state["global_position"].y)*(VDIR[v_t][v]["ray"]["position"].y - user_state["global_position"].y)+(VDIR[v_t][v]["ray"]["position"].x - user_state["global_position"].x)*(VDIR[v_t][v]["ray"]["position"].x - user_state["global_position"].x)) + VDIR[v_t][v]["ray"]["offset"] = dimensions["collider"]["radius"] - VDIR[v_t][v]["ray"]["length"] + VDIR[v_t][v]["ray"]["collided"] = false + update() + process_rotation() + + +func _physics_process(delta): + if get_tree().has_network_peer(): + if is_network_master(): + if "0" in VDIR: + if VDIR["1"]["0"]["ray"]["length"] - dimensions["collider"]["radius"] > 2 and jumpState == false: + gravityVector = (VDIR["1"]["0"]["ray"]["position"] - user_state["global_position"]).normalized() + elif jumpState == false: + gravityVector = Vector2(0,0) + movementVector = Vector2(0,0) + if user_input["right"] == true: + movementVector = Vector2(1,0) + elif user_input["left"] == true: + movementVector = Vector2(-1,0) + else: + movementVector = Vector2(0,0) + if movementVector.x == 1 and movementRight == false: + movementRight = true + movementLeft = false + $player_animated_sprite.flip_h = true + elif movementVector.x == -1 and movementLeft == false: + movementLeft = true + movementRight = false + $player_animated_sprite.flip_h = false + if movementVector != Vector2(0,0) and jumpState == false: + movementSpeed = move_toward(movementSpeed, maxMovementSpeed, accelerationSpeed) + elif movementVector != Vector2(0,0) and jumpState == true: + movementSpeed = move_toward(movementSpeed, maxMovementSpeed * 2, accelerationSpeed) + else: + movementSpeed = move_toward(movementSpeed, 0, deccelerationSpeed) + if timedOut == true and user_input["up"] == true and jumpState == false and VDIR["1"]["0"]["ray"]["length"] - dimensions["collider"]["radius"] < 2: + gravityVector = (VDIR["1"]["0"]["ray"]["position"] - user_state["global_position"]).normalized() * -1 + jumpSpeed = 0 + jumpState = true + time = 0 + if jumpState == true and jumpSpeed < maxJumpSpeed: + rotation_degrees = move_toward(rotation_degrees, 0, accelerationSpeed/10) + jumpSpeed = move_toward(jumpSpeed, maxJumpSpeed, accelerationSpeed * 10) + else: + jumpState = false + jumpSpeed = 100 + if user_input["boost"] == true: + maxMovementSpeed = move_toward(maxMovementSpeed,120,accelerationSpeed) + else: + maxMovementSpeed = move_toward(maxMovementSpeed,60,deccelerationSpeed) + if time < timeOut: + timedOut = false + else: + timedOut = true + move_and_slide(gravityVector * jumpSpeed + movementVector.rotated(rotation).normalized() * movementSpeed) + + +func _draw(): + for vector_type in VDIR: + var v_t = str(vector_type) + for vector in VDIR[v_t]: + var v = str(vector) + if v_t == "1": + draw_line(VDIR[v_t][v]["start"] - user_state["global_position"],(VDIR[v_t][v]["ray"]["position"] - user_state["global_position"]).rotated(-rotation),Color(255,255,255,1),1) + + +func puppet_position_set(new_value) -> void: + puppet_position = new_value + tween.interpolate_property(self, "global_position", global_position, puppet_position, 0.1) + tween.start() + + +func username_set(new_value) -> void: + username = new_value + if is_network_master() and username_text_instance != null: + username_text_instance.text = username + rset("puppet_username", username) + + +func puppet_username_set(new_value) -> void: + puppet_username = new_value + if not is_network_master() and username_text_instance != null: + username_text_instance.text = puppet_username + + +func _network_peer_connected(id) -> void: + rset_id(id, "puppet_username", username) + + +func _on_network_tick_rate_timeout(): + if get_tree().has_network_peer(): + if is_network_master(): + rset_unreliable("puppet_position", global_position) + #rset_unreliable("puppet_velocity", movementVector) + #rset_unreliable("puppet_rotation", rotation_degrees) + + +sync func update_position(pos): + global_position = pos + puppet_position = pos + + +sync func destroy() -> void: + username_text_instance.visible = false + visible = false + $player_collider.disabled = true + Global.alive_players.erase(self) + + if get_tree().has_network_peer(): + if is_network_master(): + Global.player_master = null + + +func _exit_tree() -> void: + Global.alive_players.erase(self) + if get_tree().has_network_peer(): + if is_network_master(): + Global.player_master = null diff --git a/Game/source/assets/scripts/player-handlers/player-collider-handler.gd b/Game/source/assets/scripts/player_handlers/player_collider_handler.gd similarity index 100% rename from Game/source/assets/scripts/player-handlers/player-collider-handler.gd rename to Game/source/assets/scripts/player_handlers/player_collider_handler.gd diff --git a/Game/source/assets/scripts/pre-processors/uin_pre-processor.gd b/Game/source/assets/scripts/pre_processors/uin_pre_processor.gd similarity index 100% rename from Game/source/assets/scripts/pre-processors/uin_pre-processor.gd rename to Game/source/assets/scripts/pre_processors/uin_pre_processor.gd diff --git a/Game/source/assets/scripts/pre-processors/vdir_pre-processor.gd b/Game/source/assets/scripts/pre_processors/vdir_pre_processor.gd similarity index 100% rename from Game/source/assets/scripts/pre-processors/vdir_pre-processor.gd rename to Game/source/assets/scripts/pre_processors/vdir_pre_processor.gd diff --git a/Game/source/assets/scripts/server-handlers/global.gd b/Game/source/assets/scripts/server-handlers/global.gd new file mode 100644 index 0000000..0c2f85d --- /dev/null +++ b/Game/source/assets/scripts/server-handlers/global.gd @@ -0,0 +1,15 @@ +extends Node + +var player_master = null +var ui = null +var alive_players = [] + +func instance_node_at_location(node: Object, parent: Object, location: Vector2) -> Object: + var node_instance = instance_node(node, parent) + node_instance.global_position = location + return node_instance + +func instance_node(node: Object, parent: Object) -> Object: + var node_instance = node.instance() + parent.add_child(node_instance) + return node_instance diff --git a/Game/source/assets/scripts/server-handlers/network-processors/network.gd b/Game/source/assets/scripts/server-handlers/network_processors/network.gd similarity index 85% rename from Game/source/assets/scripts/server-handlers/network-processors/network.gd rename to Game/source/assets/scripts/server-handlers/network_processors/network.gd index 6d432b5..ff0b0ba 100644 --- a/Game/source/assets/scripts/server-handlers/network-processors/network.gd +++ b/Game/source/assets/scripts/server-handlers/network_processors/network.gd @@ -1,6 +1,6 @@ extends Node -const DEFAULT_PORT = 28960 +const DEFAULT_PORT = 28914 const MAX_CLIENTS = 4 var server = null @@ -37,7 +37,7 @@ func create_server() -> void: server = NetworkedMultiplayerENet.new() server.create_server(DEFAULT_PORT, MAX_CLIENTS) get_tree().set_network_peer(server) - Global.instance_node(load("res://scenes/server_advertiser.tscn"), get_tree().current_scene) + Global.instance_node(load("res://source/scenes/GUI/server_handlers/server_advertiser.tscn"), get_tree().current_scene) func join_server() -> void: @@ -69,7 +69,7 @@ func _server_disconnected() -> void: reset_network_connections() if Global.ui != null: - var prompt = Global.instance_node(load("res://scenes/simple_prompt.tscn"), Global.ui) + var prompt = Global.instance_node(load("res://source/scenes/OVERLAY/elements/simple_prompt.tscn"), Global.ui) prompt.set_text("Disconnected from server") @@ -78,7 +78,7 @@ func _client_connection_timeout(): print("Client has been timed out") reset_network_connection() - var connection_timeout_prompt = Global.instance_node(load("res://scenes/simple_prompt.tscn"), get_tree().current_scene) + var connection_timeout_prompt = Global.instance_node(load("res://source/scenes/OVERLAY/elements/simple_prompt.tscn"), get_tree().current_scene) connection_timeout_prompt.set_text("Connection timed out") @@ -89,7 +89,7 @@ func _connection_failed(): reset_network_connection() if Global.ui != null: - var prompt = Global.instance_node(load("res://scenes/simple_prompt.tscn"), Global.ui) + var prompt = Global.instance_node(load("res://source/scenes/OVERLAY/elements/simple_prompt.tscn"), Global.ui) prompt.set_text("Connection failed") diff --git a/Game/source/assets/scripts/server-handlers/network-processors/network_setup.gd b/Game/source/assets/scripts/server-handlers/network_processors/network_setup.gd similarity index 91% rename from Game/source/assets/scripts/server-handlers/network-processors/network_setup.gd rename to Game/source/assets/scripts/server-handlers/network_processors/network_setup.gd index 7769a39..a0faf77 100644 --- a/Game/source/assets/scripts/server-handlers/network-processors/network_setup.gd +++ b/Game/source/assets/scripts/server-handlers/network_processors/network_setup.gd @@ -1,6 +1,6 @@ extends Control -var player = load("res://scenes/player.tscn") +var player = load("res://source/entities/player/player_node.tscn") var current_spawn_location_instance_number = 1 var current_player_for_spawn_location_number = null @@ -66,7 +66,7 @@ func _on_join_server_pressed(): if username_text_edit.text != "": multiplayer_config_ui.hide() username_text_edit.hide() - Global.instance_node(load("res://scenes/server_browser.tscn"), self) + Global.instance_node(load("res://source/scenes/GUI/server_handlers/server_browser.tscn"), self) func _connected_to_server() -> void: @@ -74,7 +74,6 @@ func _connected_to_server() -> void: instance_player(get_tree().get_network_unique_id()) - func instance_player(id) -> void: var player_instance = Global.instance_node_at_location(player, PersistentNodes, Vector2(rand_range(0, 1920), rand_range(0, 1080))) player_instance.name = str(id) @@ -88,4 +87,4 @@ func _on_start_game_pressed(): sync func switch_to_game() -> void: - get_tree().change_scene("res://scenes/game.tscn") + get_tree().change_scene("res://source/levels/trinity_site/trinity_site_level.tscn") diff --git a/Game/source/assets/scripts/server-handlers/server-processors/server_advertiser.gd b/Game/source/assets/scripts/server-handlers/server_processors/server_advertiser.gd similarity index 100% rename from Game/source/assets/scripts/server-handlers/server-processors/server_advertiser.gd rename to Game/source/assets/scripts/server-handlers/server_processors/server_advertiser.gd diff --git a/Game/source/assets/scripts/server-handlers/server-processors/server_browser.gd b/Game/source/assets/scripts/server-handlers/server_processors/server_browser.gd similarity index 87% rename from Game/source/assets/scripts/server-handlers/server-processors/server_browser.gd rename to Game/source/assets/scripts/server-handlers/server_processors/server_browser.gd index 58fe7aa..a7515dc 100644 --- a/Game/source/assets/scripts/server-handlers/server-processors/server_browser.gd +++ b/Game/source/assets/scripts/server-handlers/server_processors/server_browser.gd @@ -11,14 +11,14 @@ func _ready() -> void: func _on_server_listener_new_server(serverInfo): - var server_node = Global.instance_node(load("res://scenes/server_display.tscn"), server_container) + var server_node = Global.instance_node(load("res://source/scenes/GUI/server-handlers/server_display.tscn"), server_container) server_node.text = "%s - %s" % [serverInfo.ip, serverInfo.name] server_node.ip_address = str(serverInfo.ip) func _on_server_listener_remove_server(serverIp): for serverNode in server_container.get_children(): - if serverNode.is_in_group("server_display"): + if serverNode.is_in_group("Server_display"): if serverNode.ip_address == serverIp: serverNode.queue_free() break diff --git a/Game/source/assets/scripts/server-handlers/server-processors/server_display.gd b/Game/source/assets/scripts/server-handlers/server_processors/server_display.gd similarity index 100% rename from Game/source/assets/scripts/server-handlers/server-processors/server_display.gd rename to Game/source/assets/scripts/server-handlers/server_processors/server_display.gd diff --git a/Game/source/assets/scripts/server-handlers/server-processors/server_listener.gd b/Game/source/assets/scripts/server-handlers/server_processors/server_listener.gd similarity index 100% rename from Game/source/assets/scripts/server-handlers/server-processors/server_listener.gd rename to Game/source/assets/scripts/server-handlers/server_processors/server_listener.gd diff --git a/Game/source/assets/scripts/server-handlers/trinity_site_level.gd b/Game/source/assets/scripts/server-handlers/trinity_site_level.gd new file mode 100644 index 0000000..1a1543e --- /dev/null +++ b/Game/source/assets/scripts/server-handlers/trinity_site_level.gd @@ -0,0 +1,27 @@ +extends Node2D + +var current_spawn_location_instance_number = 1 +var current_player_location_instance_number = null + + +func _ready() -> void: + get_tree().connect("network_peer_disconnected", self, "_player_disconnected") + + if get_tree().is_network_server(): + setup_player_positions() + + +func setup_player_positions() -> void: + for player in PersistentNodes.get_children(): + if player.is_in_group("Player"): + for spawn_location in $spawn_locations.get_children(): + if int(spawn_location.name) == current_spawn_location_instance_number and current_player_location_instance_number != player: + player.rpc("update_position", spawn_location.global_position) + current_spawn_location_instance_number += 1 + current_player_location_instance_number = player + + +func _player_disconnected(id) -> void: + if PersistentNodes.has_node(str(id)): + PersistentNodes.get_node(str(id)).username_text_instance.queue_free() + PersistentNodes.get_node(str(id)).queue_free() diff --git a/Game/source/assets/scripts/ui-element-handlers/UI.gd b/Game/source/assets/scripts/ui_element_handlers/UI.gd similarity index 100% rename from Game/source/assets/scripts/ui-element-handlers/UI.gd rename to Game/source/assets/scripts/ui_element_handlers/UI.gd diff --git a/Game/source/assets/scripts/ui-element-handlers/simple_prompt.gd b/Game/source/assets/scripts/ui_element_handlers/simple_prompt.gd similarity index 57% rename from Game/source/assets/scripts/ui-element-handlers/simple_prompt.gd rename to Game/source/assets/scripts/ui_element_handlers/simple_prompt.gd index b1e9d1b..dc85557 100644 --- a/Game/source/assets/scripts/ui-element-handlers/simple_prompt.gd +++ b/Game/source/assets/scripts/ui_element_handlers/simple_prompt.gd @@ -2,8 +2,7 @@ extends Control func _on_ok_pressed(): - get_tree().change_scene("res://scenes/main_menu.tscn") - + get_tree().change_scene("res://source/scenes/GUI/main_menu.tscn") func set_text(text) -> void: diff --git a/Game/source/assets/scripts/ui-element-handlers/username_text.gd b/Game/source/assets/scripts/ui_element_handlers/username_text.gd similarity index 100% rename from Game/source/assets/scripts/ui-element-handlers/username_text.gd rename to Game/source/assets/scripts/ui_element_handlers/username_text.gd diff --git a/Game/source/entities/player/player-node.tscn b/Game/source/entities/player/player_node.tscn similarity index 59% rename from Game/source/entities/player/player-node.tscn rename to Game/source/entities/player/player_node.tscn index a5237c7..372d661 100644 --- a/Game/source/entities/player/player-node.tscn +++ b/Game/source/entities/player/player_node.tscn @@ -1,46 +1,51 @@ [gd_scene load_steps=18 format=2] -[ext_resource path="res://source/assets/sprites/character/player/player_main_body_default_sprite.png" type="Texture" id=1] -[ext_resource path="res://source/assets/sprites/character/player/animation/idle/player_main_body_default_sprite_idle_animation – 9.png" type="Texture" id=2] -[ext_resource path="res://source/assets/sprites/character/player/animation/idle/player_main_body_default_sprite_idle_animation – 11.png" type="Texture" id=3] -[ext_resource path="res://source/assets/sprites/character/player/animation/idle/player_main_body_default_sprite_idle_animation – 10.png" type="Texture" id=4] -[ext_resource path="res://source/assets/sprites/character/player/animation/idle/player_main_body_default_sprite_idle_animation.png" type="Texture" id=5] +[ext_resource path="res://source/assets/sprites/character/player/animation/idle/player_main_body_default_sprite_idle_animation – 4.png" type="Texture" id=1] +[ext_resource path="res://source/assets/scripts/player_handlers/player_collider_handler.gd" type="Script" id=2] +[ext_resource path="res://source/assets/sprites/character/player/animation/idle/player_main_body_default_sprite_idle_animation – 1.png" type="Texture" id=3] +[ext_resource path="res://source/assets/sprites/character/player/animation/idle/player_main_body_default_sprite_idle_animation – 3.png" type="Texture" id=4] +[ext_resource path="res://source/assets/sprites/character/player/player_main_body_default_sprite.png" type="Texture" id=5] [ext_resource path="res://source/assets/sprites/character/player/animation/idle/player_main_body_default_sprite_idle_animation – 8.png" type="Texture" id=6] -[ext_resource path="res://source/assets/sprites/character/player/animation/idle/player_main_body_default_sprite_idle_animation – 4.png" type="Texture" id=7] -[ext_resource path="res://source/assets/sprites/character/player/animation/idle/player_main_body_default_sprite_idle_animation – 1.png" type="Texture" id=8] -[ext_resource path="res://source/assets/sprites/character/player/animation/idle/player_main_body_default_sprite_idle_animation – 3.png" type="Texture" id=9] -[ext_resource path="res://source/assets/sprites/character/player/animation/idle/player_main_body_default_sprite_idle_animation – 5.png" type="Texture" id=10] -[ext_resource path="res://source/assets/sprites/character/player/animation/idle/player_main_body_default_sprite_idle_animation – 6.png" type="Texture" id=11] -[ext_resource path="res://source/assets/sprites/character/player/animation/idle/player_main_body_default_sprite_idle_animation – 7.png" type="Texture" id=12] +[ext_resource path="res://source/assets/sprites/character/player/animation/idle/player_main_body_default_sprite_idle_animation.png" type="Texture" id=7] +[ext_resource path="res://source/assets/sprites/character/player/animation/idle/player_main_body_default_sprite_idle_animation – 9.png" type="Texture" id=8] +[ext_resource path="res://source/assets/sprites/character/player/animation/idle/player_main_body_default_sprite_idle_animation – 10.png" type="Texture" id=9] +[ext_resource path="res://source/assets/sprites/character/player/animation/idle/player_main_body_default_sprite_idle_animation – 11.png" type="Texture" id=10] +[ext_resource path="res://source/assets/scripts/player_handlers/player_body_handler.gd" type="Script" id=11] +[ext_resource path="res://source/assets/sprites/character/player/animation/idle/player_main_body_default_sprite_idle_animation – 5.png" type="Texture" id=12] [ext_resource path="res://source/assets/sprites/character/player/animation/idle/player_main_body_default_sprite_idle_animation – 2.png" type="Texture" id=13] -[ext_resource path="res://source/assets/scripts/player-handlers/player-collider-handler.gd" type="Script" id=14] -[ext_resource path="res://source/assets/scripts/player-handlers/player-body-handler.gd" type="Script" id=15] +[ext_resource path="res://source/assets/sprites/character/player/animation/idle/player_main_body_default_sprite_idle_animation – 6.png" type="Texture" id=14] +[ext_resource path="res://source/assets/sprites/character/player/animation/idle/player_main_body_default_sprite_idle_animation – 7.png" type="Texture" id=15] [sub_resource type="CircleShape2D" id=1] [sub_resource type="SpriteFrames" id=2] animations = [ { -"frames": [ ExtResource( 8 ), ExtResource( 13 ), ExtResource( 9 ), ExtResource( 7 ), ExtResource( 10 ), ExtResource( 11 ), ExtResource( 12 ), ExtResource( 6 ), ExtResource( 2 ), ExtResource( 4 ), ExtResource( 3 ), ExtResource( 5 ) ], +"frames": [ ExtResource( 3 ), ExtResource( 13 ), ExtResource( 4 ), ExtResource( 1 ), ExtResource( 12 ), ExtResource( 14 ), ExtResource( 15 ), ExtResource( 6 ), ExtResource( 8 ), ExtResource( 9 ), ExtResource( 10 ), ExtResource( 7 ) ], "loop": true, "name": "idle", "speed": 65.0 } ] -[node name="player-node" type="Node2D"] +[node name="player" type="KinematicBody2D" groups=[ +"Net", +"Player", +]] +script = ExtResource( 11 ) -[node name="player-body" type="KinematicBody2D" parent="."] -script = ExtResource( 15 ) - -[node name="player-collider" type="CollisionShape2D" parent="player-body"] +[node name="player_collider" type="CollisionShape2D" parent="."] shape = SubResource( 1 ) -script = ExtResource( 14 ) +script = ExtResource( 2 ) -[node name="player-animated-sprite" type="AnimatedSprite" parent="player-body"] -scale = Vector2( 0.3, 0.3 ) +[node name="player_animated_sprite" type="AnimatedSprite" parent="."] +scale = Vector2( 0.2, 0.2 ) frames = SubResource( 2 ) animation = "idle" -[node name="player-sprite" type="Sprite" parent="player-body"] +[node name="player_sprite" type="Sprite" parent="."] visible = false -scale = Vector2( 0.3, 0.3 ) -texture = ExtResource( 1 ) +scale = Vector2( 0.2, 0.2 ) +texture = ExtResource( 5 ) + +[node name="Tween" type="Tween" parent="."] + +[node name="network_tick_rate" type="Timer" parent="."] diff --git a/Game/source/floor.tscn b/Game/source/floor.tscn new file mode 100644 index 0000000..8ddbc8a --- /dev/null +++ b/Game/source/floor.tscn @@ -0,0 +1,14 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://source/sprites/floor.svg" type="Texture" id=1] + +[sub_resource type="RectangleShape2D" id=1] +extents = Vector2( 960, 24 ) + +[node name="floor" type="StaticBody2D"] + +[node name="floor" type="Sprite" parent="."] +texture = ExtResource( 1 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource( 1 ) diff --git a/Game/source/fonts/roboto/roboto.tres b/Game/source/fonts/roboto/roboto.tres index a9456d1..81ce35c 100644 --- a/Game/source/fonts/roboto/roboto.tres +++ b/Game/source/fonts/roboto/roboto.tres @@ -1,6 +1,6 @@ [gd_resource type="DynamicFont" load_steps=2 format=2] -[ext_resource path="res://font/Roboto-Regular.ttf" type="DynamicFontData" id=1] +[ext_resource path="res://source/fonts/roboto/Roboto-Regular.ttf" type="DynamicFontData" id=1] [resource] size = 64 diff --git a/Game/source/levels/trinity_site/trinity-site-level.tscn b/Game/source/levels/trinity_site/trinity_site_level.tscn similarity index 51% rename from Game/source/levels/trinity_site/trinity-site-level.tscn rename to Game/source/levels/trinity_site/trinity_site_level.tscn index bf8dd02..b41957b 100644 --- a/Game/source/levels/trinity_site/trinity-site-level.tscn +++ b/Game/source/levels/trinity_site/trinity_site_level.tscn @@ -1,26 +1,42 @@ -[gd_scene load_steps=3 format=2] +[gd_scene load_steps=4 format=2] -[ext_resource path="res://source/entities/player/player-node.tscn" type="PackedScene" id=1] -[ext_resource path="res://source/levels/trinity_site/images/trinity_site_level_layout-monochrome.png" type="Texture" id=2] +[ext_resource path="res://source/assets/scripts/server-handlers/trinity_site_level.gd" type="Script" id=1] +[ext_resource path="res://source/assets/scripts/ui_element_handlers/UI.gd" type="Script" id=2] +[ext_resource path="res://source/levels/trinity_site/images/trinity_site_level_layout-monochrome.png" type="Texture" id=3] [node name="trinity-site" type="Node2D"] +script = ExtResource( 1 ) -[node name="player-node" parent="." instance=ExtResource( 1 )] -position = Vector2( 373.976, 533.394 ) +[node name="trinity_site_body" type="StaticBody2D" parent="."] -[node name="trinity-site-body" type="StaticBody2D" parent="."] +[node name="trinity_site_level_layout-monochrome" type="Sprite" parent="trinity_site_body"] +position = Vector2( 960.281, 540 ) +scale = Vector2( 1.5, 1.42857 ) +texture = ExtResource( 3 ) -[node name="trinity_site_level_layout-monochrome" type="Sprite" parent="trinity-site-body"] -position = Vector2( 953.868, 573.156 ) -scale = Vector2( 1.49915, 1.42561 ) -texture = ExtResource( 2 ) - -[node name="trinity_site_outer_collider" type="CollisionPolygon2D" parent="trinity-site-body"] +[node name="trinity_site_outer_collider" type="CollisionPolygon2D" parent="trinity_site_body"] position = Vector2( 2.62201, 1.49829 ) scale = Vector2( 1.84456, 1.84456 ) -polygon = PoolVector2Array( 511.775, 1.29255e-07, 508.374, 81.3459, 502, 79.9369, 496.101, 77.9311, 489.258, 74.6276, 482.533, 69.3183, 475.336, 62.4752, 467.903, 57.2839, 459.526, 52.6825, 452.748, 49.4016, 445.163, 46.405, 438.233, 43.8766, 430.086, 42.4719, 423.063, 41.5355, 414.635, 40.88, 406.488, 41.4419, 398.434, 42.8465, 391.318, 44.0639, 384.669, 45.7495, 379.237, 47.716, 373.712, 49.7762, 365.753, 53.7093, 359.666, 57.455, 353.017, 62.1372, 347.867, 66.8194, 342.81, 72.2508, 337.847, 77.2139, 334.101, 82.1771, 329.606, 88.3576, 326.516, 93.3207, 321.74, 98.1902, 317.245, 102.123, 311.345, 106.15, 304.977, 108.866, 296.362, 111.3, 288.964, 112.424, 280.536, 112.05, 272.483, 110.364, 264.336, 108.304, 255.627, 106.525, 247.948, 105.401, 238.397, 104.183, 229.875, 103.903, 222.009, 103.528, 214.986, 103.903, 207.4, 104.183, 200.377, 104.933, 193.916, 105.588, 185.675, 106.806, 178.183, 108.304, 168.819, 110.926, 161.983, 112.986, 154.96, 115.421, 146.532, 118.324, 139.696, 121.695, 132.11, 125.628, 126.304, 129.093, 119.937, 132.745, 112.539, 136.491, 106.826, 140.705, 100.833, 145.574, 94.7464, 150.35, 90.8133, 153.815, 85.6629, 158.029, 81.0743, 162.617, 76.5794, 166.925, 73.1146, 170.577, 68.4324, 175.915, 65.1548, 179.754, 61.5061, 185.562, 56.3556, 193.866, 51.4153, 201.329, 46.0546, 208.582, 42.1655, 216.15, 38.8019, 224.349, 35.3332, 232.127, 32.4952, 239.695, 30.498, 246.002, 28.3958, 254.201, 26.9242, 261.348, 25.5578, 268.075, 24.4015, 274.382, 23.2453, 282.265, 23.2453, 288.887, 22.1942, 297.402, 22.2993, 305.705, 22.6146, 313.168, 23.3504, 322.103, 24.4488, 330.903, 25.1043, 337.552, 26.6026, 345.044, 28.1009, 352.254, 29.9738, 357.686, 31.8467, 363.398, 34.5624, 372.388, 37.559, 379.692, 40.0874, 386.435, 42.9903, 391.96, 46.2679, 398.515, 49.3581, 403.571, 53.8531, 410.782, 57.8798, 416.307, 61.3446, 422.488, 65.9332, 427.825, 72.301, 434.942, 77.2641, 440.186, 84.1938, 447.584, 89.7188, 452.922, 96.7421, 458.447, 103.297, 463.317, 110.227, 468.561, 117.344, 473.243, 125.023, 477.925, 132.421, 481.952, 140.193, 485.417, 147.123, 488.039, 156.3, 491.223, 163.042, 493.564, 171.564, 496.186, 180.46, 498.527, 189.918, 499.931, 198.814, 501.43, 207.898, 502.273, 218.199, 502.928, 226.72, 502.928, 234.586, 502.647, 242.452, 501.711, 248.165, 500.962, 255.904, 499.956, 265.225, 497.832, 275.843, 495.354, 283.978, 493.966, 292.715, 494.529, 301.092, 496.652, 308.525, 499.248, 314.778, 503.259, 320.913, 507.861, 325.397, 513.406, 331.178, 521.901, 337.785, 530.16, 343.448, 535.823, 351.707, 542.43, 359.966, 548.565, 369.523, 554.701, 378, 558.75, 387, 561.625, 396, 563.75, 406.125, 564.75, 418.125, 565.625, 429.125, 564.375, 438, 562.125, 446.875, 559.25, 458, 555.125, 466.25, 550.375, 471.875, 546.5, 477.125, 542.5, 483, 537, 488.875, 533.25, 494.25, 529.875, 500.25, 527.875, 507.5, 526.375, 514.375, 526.375, 520.125, 527, 530.125, 528.875, 539.625, 533.25, 544.25, 537.125, 552, 544, 557.625, 547.875, 565.875, 552.875, 573.125, 556.25, 580.5, 559.625, 588.125, 562.25, 595.875, 563.625, 605.125, 564.875, 613.25, 565.5, 622.875, 565.125, 631.875, 563.625, 641.5, 561.5, 647.5, 560.25, 655.375, 556.625, 662.625, 553, 670, 547.75, 678.625, 540.625, 685.625, 534.875, 691.125, 528.875, 696.625, 520, 701.625, 512.375, 707.375, 506.625, 713.75, 502.125, 723.75, 497.375, 735.458, 494.76, 745.863, 495.206, 757.607, 498.327, 772.918, 501.003, 783.472, 502.192, 794.621, 502.936, 809.04, 503.382, 822.567, 502.936, 834.905, 501.895, 849.621, 498.625, 864.486, 495.354, 874.595, 491.341, 886.487, 485.692, 898.23, 479.3, 912.798, 471.719, 923.946, 463.543, 933.163, 456.854, 943.271, 448.232, 951.298, 440.056, 957.839, 432.029, 968.857, 418.87, 978.034, 403.185, 983.874, 391.672, 989.046, 379.492, 992.383, 369.648, 999.224, 351.627, 1002.23, 337.278, 1003.4, 321.927, 1004.56, 307.911, 1004.4, 296.231, 1003.73, 280.714, 1001.06, 265.864, 998.056, 252.682, 994.385, 239.334, 988.546, 224.65, 982.872, 212.637, 975.865, 199.789, 968.69, 187.275, 960.013, 177.764, 951.337, 167.419, 943.828, 158.075, 934.818, 151.067, 925.141, 144.727, 913.127, 134.883, 900.947, 127.374, 887.932, 120.366, 873.582, 114.86, 859.4, 110.522, 847.052, 107.351, 832.369, 105.683, 817.352, 104.181, 801.167, 103.514, 786.484, 104.515, 772.969, 105.683, 761.122, 108.186, 748.942, 111.857, 741.099, 113.358, 729.757, 111.82, 718.178, 107.489, 706.776, 99.7108, 699.794, 91.4023, 694.225, 82.3867, 684.39, 70.9989, 676.071, 63.0041, 661.343, 53.1236, 650.831, 47.6174, 640.152, 44.2803, 626.804, 41.6106, 614.123, 41.2769, 600.607, 41.6106, 588.594, 43.7797, 576.747, 47.7843, 565.067, 52.623, 558.226, 57.1281, 551.385, 61.6332, 544.377, 67.9737, 539.538, 72.6456, 533.198, 76.9839, 522.686, 80.321, 511.173, 81.6558, 511.775, 1.29255e-07, 1040.9, 1.29255e-07, 1040.9, 585.505, 1.29255e-07, 585.505, 1.29255e-07, 1.29255e-07 ) +polygon = PoolVector2Array( 511.775, 1.29255e-07, 508.374, 81.3459, 502, 79.9369, 496.101, 77.9311, 489.258, 74.6276, 482.533, 69.3183, 475.336, 62.4752, 467.903, 57.2839, 459.526, 52.6825, 452.748, 49.4016, 445.163, 46.405, 438.233, 43.8766, 430.086, 42.4719, 423.063, 41.5355, 414.635, 40.88, 406.488, 41.4419, 398.434, 42.8465, 391.318, 44.0639, 384.669, 45.7495, 379.237, 47.716, 373.712, 49.7762, 365.753, 53.7093, 359.666, 57.455, 353.017, 62.1372, 347.867, 66.8194, 342.81, 72.2508, 337.847, 77.2139, 334.101, 82.1771, 329.606, 88.3576, 326.516, 93.3207, 321.74, 98.1902, 317.245, 102.123, 311.345, 106.15, 304.977, 108.866, 296.362, 111.3, 288.964, 112.424, 280.536, 112.05, 272.483, 110.364, 264.336, 108.304, 255.627, 106.525, 247.948, 105.401, 238.397, 104.183, 229.875, 103.903, 222.009, 103.528, 214.986, 103.903, 207.4, 104.183, 200.377, 104.933, 193.916, 105.588, 185.675, 106.806, 178.183, 108.304, 168.819, 110.926, 161.983, 112.986, 154.96, 115.421, 146.532, 118.324, 139.696, 121.695, 132.11, 125.628, 126.304, 129.093, 119.937, 132.745, 112.539, 136.491, 106.826, 140.705, 100.833, 145.574, 94.7464, 150.35, 90.8133, 153.815, 85.6629, 158.029, 81.0743, 162.617, 76.5794, 166.925, 73.1146, 170.577, 68.4324, 175.915, 65.1548, 179.754, 61.5061, 185.562, 56.3556, 193.866, 51.4153, 201.329, 46.0546, 208.582, 42.1655, 216.15, 38.8019, 224.349, 35.3332, 232.127, 32.4952, 239.695, 30.498, 246.002, 28.3958, 254.201, 26.9242, 261.348, 25.5578, 268.075, 24.4015, 274.382, 23.2453, 282.265, 23.2453, 288.887, 22.1942, 297.402, 22.2993, 305.705, 22.6146, 313.168, 23.3504, 322.103, 24.4488, 330.903, 25.1043, 337.552, 26.6026, 345.044, 28.1009, 352.254, 29.9738, 357.686, 31.8467, 363.398, 34.5624, 372.388, 37.559, 379.692, 40.0874, 386.435, 42.9903, 391.96, 46.2679, 398.515, 49.3581, 403.571, 53.8531, 410.782, 57.8798, 416.307, 61.3446, 422.488, 65.9332, 427.825, 72.301, 434.942, 77.2641, 440.186, 84.1938, 447.584, 89.7188, 452.922, 96.7421, 458.447, 103.297, 463.317, 103.89, 450.137, 113.627, 456.831, 127.473, 464.894, 140.827, 470.781, 159.064, 477.243, 179.885, 481.694, 198.312, 484.823, 212.315, 486.189, 227.171, 486.36, 238.441, 486.019, 252.615, 484.14, 268.837, 480.554, 284.826, 476.266, 299.358, 478.413, 312.009, 483.314, 320.114, 488.598, 328.196, 497.952, 333.395, 504.822, 338.391, 511.108, 344.355, 517.716, 351.179, 523.073, 357.096, 527.591, 364.519, 532.109, 377.585, 538.784, 384.652, 541.412, 392.16, 543.492, 402.653, 545.392, 412.918, 546.09, 423.973, 546.204, 434.23, 545.179, 445.843, 542.69, 462.506, 536.773, 472.007, 531.261, 481.838, 524.33, 489.253, 517.399, 500.189, 512.454, 510.687, 509.268, 520.951, 508.061, 530.671, 509.57, 544.625, 514.743, 553.771, 522.547, 562.47, 528.815, 575.245, 536.534, 588.352, 541.663, 599.065, 544.74, 614.109, 546.564, 629.477, 546.658, 641.63, 544.611, 654.895, 541.292, 666.587, 537.075, 683.506, 526.07, 691.029, 519.688, 696.271, 514.445, 702.653, 507.151, 710.403, 495.298, 720.091, 486.979, 735.168, 479.494, 751.061, 477.351, 767.868, 481.01, 785.623, 484.534, 802.293, 485.618, 817.473, 485.889, 836.991, 484.72, 850.653, 483.429, 863.239, 480.632, 875.395, 477.62, 892.423, 471.861, 903.923, 466.973, 916.574, 460.456, 926.438, 455.115, 933.037, 450.953, 949.48, 438.321, 957.212, 431.491, 968.857, 418.87, 978.034, 403.185, 983.874, 391.672, 989.046, 379.492, 992.383, 369.648, 999.224, 351.627, 1002.23, 337.278, 1003.4, 321.927, 1004.56, 307.911, 1004.4, 296.231, 1003.73, 280.714, 1001.06, 265.864, 998.056, 252.682, 994.385, 239.334, 988.546, 224.65, 982.872, 212.637, 975.865, 199.789, 968.69, 187.275, 960.013, 177.764, 951.337, 167.419, 943.828, 158.075, 934.818, 151.067, 925.141, 144.727, 913.127, 134.883, 900.947, 127.374, 887.932, 120.366, 873.582, 114.86, 859.4, 110.522, 847.052, 107.351, 832.369, 105.683, 817.352, 104.181, 801.167, 103.514, 786.484, 104.515, 772.969, 105.683, 761.122, 108.186, 748.942, 111.857, 741.099, 113.358, 729.757, 111.82, 718.178, 107.489, 706.776, 99.7108, 699.794, 91.4023, 694.225, 82.3867, 684.39, 70.9989, 676.071, 63.0041, 661.343, 53.1236, 650.831, 47.6174, 640.152, 44.2803, 626.804, 41.6106, 614.123, 41.2769, 600.607, 41.6106, 588.594, 43.7797, 576.747, 47.7843, 565.067, 52.623, 558.226, 57.1281, 551.385, 61.6332, 544.377, 67.9737, 539.538, 72.6456, 533.198, 76.9839, 522.686, 80.321, 511.173, 81.6558, 511.775, 1.29255e-07, 1040.9, 1.29255e-07, 1040.9, 585.505, 1.29255e-07, 585.505, 1.29255e-07, 1.29255e-07 ) -[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="trinity-site-body"] -position = Vector2( 0.794176, -14.9406 ) +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="trinity_site_body"] +position = Vector2( 9.53674e-07, -16 ) scale = Vector2( 1.86858, 1.83741 ) polygon = PoolVector2Array( 411.392, 250.341, 409.273, 253.255, 403.446, 255.638, 394.971, 258.552, 386.76, 263.055, 380.138, 269.146, 374.576, 276.298, 368.484, 285.568, 365.571, 297.222, 365.041, 307.817, 366.1, 318.147, 371.927, 329.536, 376.96, 336.422, 384.111, 343.309, 394.706, 348.341, 403.446, 351.785, 412.187, 356.552, 414.836, 362.379, 417.749, 372.444, 424.371, 382.774, 429.403, 388.866, 438.144, 395.223, 449.798, 398.931, 461.187, 400.785, 474.96, 401.579, 483.171, 398.666, 490.852, 393.898, 497.739, 389.925, 508.598, 385.952, 519.193, 386.217, 527.668, 389.396, 534.025, 392.574, 544.09, 397.606, 554.685, 400.52, 564.485, 402.109, 577.463, 400.785, 586.204, 396.282, 594.415, 391.779, 601.036, 385.952, 606.599, 378.801, 609.247, 370.325, 613.485, 359.995, 618.782, 353.374, 629.112, 350.99, 639.972, 345.428, 647.388, 338.541, 656.128, 328.741, 660.366, 320.001, 663.28, 307.022, 661.691, 296.693, 659.307, 285.038, 653.536, 274.373, 644.209, 264.114, 633.35, 258.817, 622.132, 254.55, 613.891, 248.982, 609.777, 238.952, 606.069, 229.417, 599.859, 219.36, 587.793, 210.611, 572.166, 204.519, 557.598, 203.725, 544.09, 206.373, 537.734, 209.552, 537.734, 209.552, 531.377, 214.319, 522.901, 218.557, 512.306, 220.411, 505.155, 218.557, 491.117, 212.995, 479.728, 207.698, 471.252, 205.314, 459.333, 203.46, 445.295, 206.109, 433.376, 212.995, 426.755, 218.557, 418.544, 227.298, 414.571, 238.157 ) + +[node name="spawn_locations" type="Node" parent="."] + +[node name="1" type="Position2D" parent="spawn_locations"] +position = Vector2( 395.113, 723.483 ) + +[node name="2" type="Position2D" parent="spawn_locations"] +position = Vector2( 962.095, 904.443 ) + +[node name="3" type="Position2D" parent="spawn_locations"] +position = Vector2( 1780.68, 680.768 ) + +[node name="4" type="Position2D" parent="spawn_locations"] +position = Vector2( 946.144, 307.022 ) + +[node name="UI" type="CanvasLayer" parent="."] +script = ExtResource( 2 ) diff --git a/Game/source/scenes/GUI/main_menu.txt b/Game/source/scenes/GUI/main_menu.tscn similarity index 72% rename from Game/source/scenes/GUI/main_menu.txt rename to Game/source/scenes/GUI/main_menu.tscn index 471daba..7e220c4 100644 --- a/Game/source/scenes/GUI/main_menu.txt +++ b/Game/source/scenes/GUI/main_menu.tscn @@ -1,8 +1,16 @@ -[gd_scene load_steps=4 format=2] +[gd_scene load_steps=7 format=2] -[ext_resource path="res://font/roboto.tres" type="DynamicFont" id=1] -[ext_resource path="res://code/server/network_setup.gd" type="Script" id=2] -[ext_resource path="res://code/UI.gd" type="Script" id=3] +[ext_resource path="res://source/fonts/roboto/roboto.tres" type="DynamicFont" id=1] +[ext_resource path="res://source/assets/scripts/server-handlers/network_processors/network_setup.gd" type="Script" id=2] +[ext_resource path="res://source/assets/scripts/ui_element_handlers/UI.gd" type="Script" id=3] +[ext_resource path="res://source/floor.tscn" type="PackedScene" id=4] +[ext_resource path="res://font/Roboto-Regular.ttf" type="DynamicFontData" id=5] + +[sub_resource type="DynamicFont" id=1] +size = 64 +use_mipmaps = true +use_filter = true +font_data = ExtResource( 5 ) [node name="network_setup" type="Control"] anchor_right = 1.0 @@ -70,9 +78,9 @@ script = ExtResource( 3 ) [node name="start_game" type="Button" parent="UI"] margin_left = 27.0 -margin_top = 27.0 +margin_top = 24.7551 margin_right = 391.0 -margin_bottom = 158.0 +margin_bottom = 155.755 custom_fonts/font = ExtResource( 1 ) text = "Start game" __meta__ = { @@ -84,13 +92,17 @@ anchor_top = 1.0 anchor_right = 1.0 anchor_bottom = 1.0 margin_top = -150.0 -custom_fonts/font = ExtResource( 1 ) +custom_fonts/font = SubResource( 1 ) align = 1 valign = 1 __meta__ = { "_edit_use_anchors_": false } +[node name="floor" parent="." instance=ExtResource( 4 )] +position = Vector2( 1048.45, 986.437 ) +scale = Vector2( 2, 1 ) + [connection signal="pressed" from="multiplayer_configure/create_server" to="." method="_on_create_server_pressed"] [connection signal="pressed" from="multiplayer_configure/join_server" to="." method="_on_join_server_pressed"] [connection signal="pressed" from="UI/start_game" to="." method="_on_start_game_pressed"] diff --git a/Game/source/scenes/GUI/server-handlers/server_advertiser.tscn b/Game/source/scenes/GUI/server-handlers/server_advertiser.tscn deleted file mode 100644 index 82d724d..0000000 --- a/Game/source/scenes/GUI/server-handlers/server_advertiser.tscn +++ /dev/null @@ -1,6 +0,0 @@ -[gd_scene load_steps=2 format=2] - -[ext_resource path="res://code/server/server_advertiser.gd" type="Script" id=1] - -[node name="server_advertiser" type="Node"] -script = ExtResource( 1 ) diff --git a/Game/source/scenes/GUI/server-handlers/server_listener.tscn b/Game/source/scenes/GUI/server-handlers/server_listener.tscn deleted file mode 100644 index 08fdcb6..0000000 --- a/Game/source/scenes/GUI/server-handlers/server_listener.tscn +++ /dev/null @@ -1,6 +0,0 @@ -[gd_scene load_steps=2 format=2] - -[ext_resource path="res://code/server/server_listener.gd" type="Script" id=1] - -[node name="server_listener" type="Node"] -script = ExtResource( 1 ) diff --git a/Game/source/scenes/GUI/server_handlers/server_advertiser.tscn b/Game/source/scenes/GUI/server_handlers/server_advertiser.tscn new file mode 100644 index 0000000..87755c2 --- /dev/null +++ b/Game/source/scenes/GUI/server_handlers/server_advertiser.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://source/assets/scripts/server-handlers/server_processors/server_advertiser.gd" type="Script" id=1] + +[node name="server_advertiser" type="Node"] +script = ExtResource( 1 ) diff --git a/Game/source/scenes/GUI/server-handlers/server_browser.tscn b/Game/source/scenes/GUI/server_handlers/server_browser.tscn similarity index 92% rename from Game/source/scenes/GUI/server-handlers/server_browser.tscn rename to Game/source/scenes/GUI/server_handlers/server_browser.tscn index 4825e50..f959144 100644 --- a/Game/source/scenes/GUI/server-handlers/server_browser.tscn +++ b/Game/source/scenes/GUI/server_handlers/server_browser.tscn @@ -1,8 +1,8 @@ [gd_scene load_steps=5 format=2] -[ext_resource path="res://font/roboto.tres" type="DynamicFont" id=1] -[ext_resource path="res://scenes/server_listener.tscn" type="PackedScene" id=2] -[ext_resource path="res://code/server/server_browser.gd" type="Script" id=3] +[ext_resource path="res://source/fonts/roboto/roboto.tres" type="DynamicFont" id=1] +[ext_resource path="res://source/scenes/GUI/server_handlers/server_listener.tscn" type="PackedScene" id=2] +[ext_resource path="res://source/assets/scripts/server-handlers/server_processors/server_browser.gd" type="Script" id=3] [sub_resource type="Animation" id=1] resource_name = "searching_for_servers" diff --git a/Game/source/scenes/GUI/server-handlers/server_display.tscn b/Game/source/scenes/GUI/server_handlers/server_display.tscn similarity index 70% rename from Game/source/scenes/GUI/server-handlers/server_display.tscn rename to Game/source/scenes/GUI/server_handlers/server_display.tscn index e27a169..5aa0035 100644 --- a/Game/source/scenes/GUI/server-handlers/server_display.tscn +++ b/Game/source/scenes/GUI/server_handlers/server_display.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=3 format=2] -[ext_resource path="res://font/roboto.tres" type="DynamicFont" id=1] -[ext_resource path="res://code/server/server_display.gd" type="Script" id=2] +[ext_resource path="res://source/fonts/roboto/roboto.tres" type="DynamicFont" id=1] +[ext_resource path="res://source/assets/scripts/server-handlers/server_processors/server_display.gd" type="Script" id=2] [node name="server_display" type="Label"] anchor_right = 1.0 @@ -18,7 +18,7 @@ __meta__ = { } [node name="join_button" type="Button" parent="." groups=[ -"server_display", +"Server_display", ]] anchor_left = 1.0 anchor_right = 1.0 @@ -28,5 +28,8 @@ margin_top = 13.0 margin_bottom = -13.0 custom_fonts/font = ExtResource( 1 ) text = "Join" +__meta__ = { +"_edit_use_anchors_": false +} [connection signal="pressed" from="join_button" to="." method="_on_join_button_pressed"] diff --git a/Game/source/scenes/GUI/server_handlers/server_listener.tscn b/Game/source/scenes/GUI/server_handlers/server_listener.tscn new file mode 100644 index 0000000..f081395 --- /dev/null +++ b/Game/source/scenes/GUI/server_handlers/server_listener.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://source/assets/scripts/server-handlers/server_processors/server_listener.gd" type="Script" id=1] + +[node name="server_listener" type="Node"] +script = ExtResource( 1 ) diff --git a/Game/source/scenes/OVERLAY/elements/persistent_nodes.tscn b/Game/source/scenes/OVERLAY/elements/persistent_nodes.tscn new file mode 100644 index 0000000..321b6c0 --- /dev/null +++ b/Game/source/scenes/OVERLAY/elements/persistent_nodes.tscn @@ -0,0 +1,3 @@ +[gd_scene format=2] + +[node name="persistent_nodes" type="Node"] diff --git a/Game/source/scenes/OVERLAY/elements/simple_prompt.tscn b/Game/source/scenes/OVERLAY/elements/simple_prompt.tscn index 9500bad..9141026 100644 --- a/Game/source/scenes/OVERLAY/elements/simple_prompt.tscn +++ b/Game/source/scenes/OVERLAY/elements/simple_prompt.tscn @@ -1,19 +1,14 @@ [gd_scene load_steps=5 format=2] -[ext_resource path="res://font/Roboto-Regular.ttf" type="DynamicFontData" id=1] -[ext_resource path="res://code/simple_prompt.gd" type="Script" id=2] +[ext_resource path="res://source/fonts/roboto/roboto.tres" type="DynamicFont" id=1] +[ext_resource path="res://source/assets/scripts/ui_element_handlers/simple_prompt.gd" type="Script" id=2] +[ext_resource path="res://source/fonts/roboto/Roboto-Regular.ttf" type="DynamicFontData" id=3] [sub_resource type="DynamicFont" id=1] size = 100 use_mipmaps = true use_filter = true -font_data = ExtResource( 1 ) - -[sub_resource type="DynamicFont" id=2] -size = 100 -use_mipmaps = true -use_filter = true -font_data = ExtResource( 1 ) +font_data = ExtResource( 3 ) [node name="simple_prompt" type="Control"] anchor_right = 1.0 @@ -45,7 +40,7 @@ margin_left = -257.0 margin_top = -310.0 margin_right = 257.0 margin_bottom = -113.0 -custom_fonts/font = SubResource( 1 ) +custom_fonts/font = ExtResource( 1 ) text = "OK" __meta__ = { "_edit_use_anchors_": false @@ -59,8 +54,8 @@ anchor_bottom = 0.5 margin_left = -516.0 margin_top = -155.5 margin_right = 516.0 -margin_bottom = -68.5 -custom_fonts/font = SubResource( 2 ) +margin_bottom = -37.5 +custom_fonts/font = SubResource( 1 ) text = "Simple prompt" align = 1 valign = 1 diff --git a/Game/source/scenes/OVERLAY/elements/username_text.tscn b/Game/source/scenes/OVERLAY/elements/username_text.tscn index 44e3bf0..e253804 100644 --- a/Game/source/scenes/OVERLAY/elements/username_text.tscn +++ b/Game/source/scenes/OVERLAY/elements/username_text.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=3 format=2] -[ext_resource path="res://font/roboto.tres" type="DynamicFont" id=1] -[ext_resource path="res://code/username_text.gd" type="Script" id=2] +[ext_resource path="res://source/fonts/roboto/roboto.tres" type="DynamicFont" id=1] +[ext_resource path="res://source/assets/scripts/ui_element_handlers/username_text.gd" type="Script" id=2] [node name="username_text" type="Node2D" groups=[ "Net", diff --git a/Game/source/sprites/floor.svg b/Game/source/sprites/floor.svg new file mode 100644 index 0000000..4d53002 --- /dev/null +++ b/Game/source/sprites/floor.svg @@ -0,0 +1,51 @@ + + + + + + + + + + diff --git a/Game/source/sprites/floor.svg.import b/Game/source/sprites/floor.svg.import new file mode 100644 index 0000000..3f37db6 --- /dev/null +++ b/Game/source/sprites/floor.svg.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/floor.svg-86da9fb94a8a492527a026759e2d9055.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://source/sprites/floor.svg" +dest_files=[ "res://.import/floor.svg-86da9fb94a8a492527a026759e2d9055.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0