From 404ce3192b20423ed33e1b68431deba27f9cc515 Mon Sep 17 00:00:00 2001 From: Alan Alexander Cerna <87852561+Kroppec@users.noreply.github.com> Date: Thu, 11 Nov 2021 16:47:42 +0200 Subject: [PATCH 1/3] [Minimal] Small issue fix --- .../server_handlers/trinity_site_level.gd | 40 ---- .../GUI/Player-character-theme-menu.png | Bin 0 -> 37003 bytes .../Player-character-theme-menu.png.import | 35 ++++ source/entities/menu_player/player_node.tscn | 8 +- source/entities/player/player_node.tscn | 184 +++++++++--------- source/scenes/GUI/main_menu.tscn | 2 +- 6 files changed, 132 insertions(+), 137 deletions(-) create mode 100644 source/assets/sprites/GUI/Player-character-theme-menu.png create mode 100644 source/assets/sprites/GUI/Player-character-theme-menu.png.import diff --git a/source/assets/scripts/server_handlers/trinity_site_level.gd b/source/assets/scripts/server_handlers/trinity_site_level.gd index 1b6bbdf..eae336e 100644 --- a/source/assets/scripts/server_handlers/trinity_site_level.gd +++ b/source/assets/scripts/server_handlers/trinity_site_level.gd @@ -3,52 +3,12 @@ extends Node2D var current_spawn_location_instance_number = 1 var current_player_location_instance_number = null -var gameControllerStates = {"singleplayer": false, "waiting": true, "allowMove": false, "allowShoot": false, "allowAim": false, "allowInput": false, "allowMenu": true, "simulatingEnvironment": false, "players": {}, "activePlayer": null} -var activePlayerIndicator = "0" -var gameTimer = 0 - func _ready() -> void: get_tree().connect("network_peer_disconnected", self, "_player_disconnected") if get_tree().is_network_server(): setup_player_positions() -func _process(delta): - gameTimer += delta - if not gameControllerStates["singleplayer"]: - if gameControllerStates["waiting"] and gameControllerStates["players"] != {} and not gameControllerStates["simulatingEnvironment"]: - if gameTimer > 5: - # Wait for tanks to fall to the ground - #gameControllerStates["allowMove"] = true - #gameControllerStates["activePlayer"] = gameControllerStates["players"] - #gameControllerStates["waiting"] = false - #gameTimer = 0 - pass - if gameControllerStates["allowMove"]: - # Get the active player and allow their inputs to have effect. - #print("Awaiting player input and processing it to adjust location and rotation") - # DO FOR EACH PLAYER - ONE AFTER THE OTHER - pass - if gameControllerStates["allowAim"] and gameControllerStates["allowInput"]: - # Get the active player and allow their input into adjusting function. - #print("Awaiting player input and processing it to adjust aim.") - # DO FOR EACH PLAYER - AT THE SAME TIME - pass - if gameControllerStates["allowShoot"]: - # Enable function locking feature and prepare for shooting phase -- simulatingEnvironment = true - #print("Awaiting player function confirmation.") - # DO FOR EACH PLAYER - AT THE SAME TIME - pass - if gameControllerStates["simulatingEnvironment"]: - # Ignore player input, request player weapons to fire the bullets and account for the damages. - # Reset the cycle back to the move stage if neither player won the game. - #print("Game result: undetermined, returning to move phase.") - pass - if gameControllerStates["singleplayer"]: - # Do not interrupt user input -> only request checking for victory. - #print("Singleplayer mode selected, awaiting game result.") - pass - func setup_player_positions() -> void: for player in PersistentNodes.get_children(): if player.is_in_group("Player"): diff --git a/source/assets/sprites/GUI/Player-character-theme-menu.png b/source/assets/sprites/GUI/Player-character-theme-menu.png new file mode 100644 index 0000000000000000000000000000000000000000..58f70ee271666727ce304c85b66a9475d656178b GIT binary patch literal 37003 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 Date: Thu, 11 Nov 2021 16:55:15 +0200 Subject: [PATCH 2/3] [Revert] --- .../server_handlers/trinity_site_level.gd | 40 ++++ .../GUI/Player-character-theme-menu.png | Bin 37003 -> 0 bytes .../Player-character-theme-menu.png.import | 35 ---- source/entities/menu_player/player_node.tscn | 8 +- source/entities/player/player_node.tscn | 194 +++++++++--------- source/scenes/GUI/main_menu.tscn | 2 +- 6 files changed, 144 insertions(+), 135 deletions(-) delete mode 100644 source/assets/sprites/GUI/Player-character-theme-menu.png delete mode 100644 source/assets/sprites/GUI/Player-character-theme-menu.png.import diff --git a/source/assets/scripts/server_handlers/trinity_site_level.gd b/source/assets/scripts/server_handlers/trinity_site_level.gd index eae336e..1b6bbdf 100644 --- a/source/assets/scripts/server_handlers/trinity_site_level.gd +++ b/source/assets/scripts/server_handlers/trinity_site_level.gd @@ -3,12 +3,52 @@ extends Node2D var current_spawn_location_instance_number = 1 var current_player_location_instance_number = null +var gameControllerStates = {"singleplayer": false, "waiting": true, "allowMove": false, "allowShoot": false, "allowAim": false, "allowInput": false, "allowMenu": true, "simulatingEnvironment": false, "players": {}, "activePlayer": null} +var activePlayerIndicator = "0" +var gameTimer = 0 + func _ready() -> void: get_tree().connect("network_peer_disconnected", self, "_player_disconnected") if get_tree().is_network_server(): setup_player_positions() +func _process(delta): + gameTimer += delta + if not gameControllerStates["singleplayer"]: + if gameControllerStates["waiting"] and gameControllerStates["players"] != {} and not gameControllerStates["simulatingEnvironment"]: + if gameTimer > 5: + # Wait for tanks to fall to the ground + #gameControllerStates["allowMove"] = true + #gameControllerStates["activePlayer"] = gameControllerStates["players"] + #gameControllerStates["waiting"] = false + #gameTimer = 0 + pass + if gameControllerStates["allowMove"]: + # Get the active player and allow their inputs to have effect. + #print("Awaiting player input and processing it to adjust location and rotation") + # DO FOR EACH PLAYER - ONE AFTER THE OTHER + pass + if gameControllerStates["allowAim"] and gameControllerStates["allowInput"]: + # Get the active player and allow their input into adjusting function. + #print("Awaiting player input and processing it to adjust aim.") + # DO FOR EACH PLAYER - AT THE SAME TIME + pass + if gameControllerStates["allowShoot"]: + # Enable function locking feature and prepare for shooting phase -- simulatingEnvironment = true + #print("Awaiting player function confirmation.") + # DO FOR EACH PLAYER - AT THE SAME TIME + pass + if gameControllerStates["simulatingEnvironment"]: + # Ignore player input, request player weapons to fire the bullets and account for the damages. + # Reset the cycle back to the move stage if neither player won the game. + #print("Game result: undetermined, returning to move phase.") + pass + if gameControllerStates["singleplayer"]: + # Do not interrupt user input -> only request checking for victory. + #print("Singleplayer mode selected, awaiting game result.") + pass + func setup_player_positions() -> void: for player in PersistentNodes.get_children(): if player.is_in_group("Player"): diff --git a/source/assets/sprites/GUI/Player-character-theme-menu.png b/source/assets/sprites/GUI/Player-character-theme-menu.png deleted file mode 100644 index 58f70ee271666727ce304c85b66a9475d656178b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37003 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 parent of 404ce31 ([Minimal] Small issue fix) +"loop": true, +"name": "move-speed-right-02", +"speed": 35.0 +}, { +"frames": [ ExtResource( 70 ), ExtResource( 49 ), ExtResource( 74 ), ExtResource( 75 ), ExtResource( 28 ), ExtResource( 52 ), ExtResource( 53 ), ExtResource( 55 ), ExtResource( 150 ), ExtResource( 156 ), ExtResource( 138 ), ExtResource( 161 ), ExtResource( 145 ), ExtResource( 148 ), ExtResource( 147 ), ExtResource( 133 ), ExtResource( 164 ), ExtResource( 134 ), ExtResource( 152 ), ExtResource( 160 ) ], +"loop": true, +"name": "boost-speed-left-03", +"speed": 50.0 +}, { +"frames": [ ExtResource( 167 ), ExtResource( 157 ), ExtResource( 158 ), ExtResource( 126 ), ExtResource( 90 ), ExtResource( 89 ), ExtResource( 97 ), ExtResource( 88 ), ExtResource( 98 ), ExtResource( 91 ), ExtResource( 125 ), ExtResource( 105 ), ExtResource( 82 ), ExtResource( 84 ), ExtResource( 92 ), ExtResource( 103 ), ExtResource( 122 ), ExtResource( 130 ), ExtResource( 104 ), ExtResource( 116 ) ], +"loop": true, +"name": "move-speed-right-02", +"speed": 35.0 +}, { +"frames": [ ExtResource( 5 ), ExtResource( 42 ), ExtResource( 35 ), ExtResource( 24 ), ExtResource( 8 ), ExtResource( 31 ), ExtResource( 30 ), ExtResource( 38 ), ExtResource( 10 ), ExtResource( 43 ), ExtResource( 41 ), ExtResource( 33 ), ExtResource( 44 ), ExtResource( 19 ), ExtResource( 29 ), ExtResource( 25 ), ExtResource( 36 ), ExtResource( 12 ), ExtResource( 45 ), ExtResource( 21 ) ], +"loop": true, +"name": "idle-speed-right-01", +"speed": 25.0 +}, { +"frames": [ ExtResource( 73 ), ExtResource( 57 ), ExtResource( 65 ), ExtResource( 64 ), ExtResource( 54 ), ExtResource( 71 ), ExtResource( 58 ), ExtResource( 66 ), ExtResource( 62 ), ExtResource( 59 ), ExtResource( 56 ), ExtResource( 60 ), ExtResource( 63 ), ExtResource( 50 ), ExtResource( 61 ), ExtResource( 67 ), ExtResource( 72 ), ExtResource( 51 ), ExtResource( 68 ), ExtResource( 69 ) ], +"loop": true, +"name": "idle-speed-left-02", +"speed": 25.0 +}, { +"frames": [ ExtResource( 162 ), ExtResource( 135 ), ExtResource( 146 ), ExtResource( 141 ), ExtResource( 143 ), ExtResource( 163 ), ExtResource( 149 ), ExtResource( 136 ), ExtResource( 154 ), ExtResource( 137 ), ExtResource( 165 ), ExtResource( 142 ), ExtResource( 139 ), ExtResource( 159 ), ExtResource( 140 ), ExtResource( 155 ), ExtResource( 144 ), ExtResource( 151 ), ExtResource( 153 ), ExtResource( 166 ) ], +"loop": true, +"name": "boost-speed-left-04", +"speed": 50.0 +}, { +"frames": [ ExtResource( 48 ), ExtResource( 4 ), ExtResource( 3 ), ExtResource( 46 ), ExtResource( 47 ), ExtResource( 32 ), ExtResource( 13 ), ExtResource( 40 ), ExtResource( 6 ), ExtResource( 15 ), ExtResource( 22 ), ExtResource( 14 ), ExtResource( 9 ), ExtResource( 37 ), ExtResource( 23 ), ExtResource( 39 ), ExtResource( 20 ), ExtResource( 18 ), ExtResource( 7 ), ExtResource( 34 ) ], +"loop": true, +"name": "idle-speed-left-01", +"speed": 25.0 +}, { +"frames": [ ExtResource( 162 ), ExtResource( 135 ), ExtResource( 146 ), ExtResource( 141 ), ExtResource( 143 ), ExtResource( 163 ), ExtResource( 149 ), ExtResource( 136 ), ExtResource( 154 ), ExtResource( 137 ), ExtResource( 165 ), ExtResource( 142 ), ExtResource( 139 ), ExtResource( 159 ), ExtResource( 140 ), ExtResource( 155 ), ExtResource( 144 ), ExtResource( 151 ), ExtResource( 153 ), ExtResource( 166 ) ], +"loop": true, +"name": "move-speed-left-04", +"speed": 35.0 +}, { "frames": [ ExtResource( 114 ), ExtResource( 128 ), ExtResource( 93 ), ExtResource( 107 ), ExtResource( 117 ), ExtResource( 102 ), ExtResource( 81 ), ExtResource( 118 ), ExtResource( 76 ), ExtResource( 115 ), ExtResource( 127 ), ExtResource( 123 ), ExtResource( 113 ), ExtResource( 77 ), ExtResource( 78 ), ExtResource( 124 ), ExtResource( 94 ), ExtResource( 112 ), ExtResource( 131 ), ExtResource( 95 ) ], "loop": true, "name": "boost-speed-right-03", @@ -317,6 +321,11 @@ radius = 41.5403 [sub_resource type="SpriteFrames" id=6] animations = [ { +"frames": [ ExtResource( 168 ) ], +"loop": true, +"name": "03", +"speed": 5.0 +}, { "frames": [ ExtResource( 170 ) ], "loop": true, "name": "02", @@ -331,11 +340,6 @@ animations = [ { "loop": true, "name": "04", "speed": 5.0 -}, { -"frames": [ ExtResource( 168 ) ], -"loop": true, -"name": "03", -"speed": 5.0 } ] [node name="player" type="KinematicBody2D" groups=[ diff --git a/source/scenes/GUI/main_menu.tscn b/source/scenes/GUI/main_menu.tscn index 5f5184c..175e14c 100644 --- a/source/scenes/GUI/main_menu.tscn +++ b/source/scenes/GUI/main_menu.tscn @@ -20,7 +20,7 @@ __meta__ = { [node name="background" parent="." instance=ExtResource( 2 )] [node name="player" parent="background" instance=ExtResource( 1 )] -position = Vector2( 408, 887 ) +position = Vector2( 408, 872 ) [node name="foreground" type="Control" parent="."] anchor_right = 1.0 From e9de8ba4e96918190ec62d4d4d3398d69905ca51 Mon Sep 17 00:00:00 2001 From: Alan Alexander Cerna <87852561+Kroppec@users.noreply.github.com> Date: Thu, 11 Nov 2021 16:56:05 +0200 Subject: [PATCH 3/3] [Revert] --- project.godot | 36 +++--- .../player_handlers/player_body_handler.gd | 111 ++++++------------ source/assets/scripts/shooting/Gun_.gd | 59 ++++++++++ .../shooting/Hyperbola/Hyperbolic_Bullet.gd | 1 - .../scripts/shooting/Line/Line_Bullet.gd | 2 +- .../shooting/Parabola/Parabolic_Bullet.gd | 3 +- .../scripts/shooting/Sine/Sine_Bullet.gd | 3 +- .../scripts/ui_element_handlers/game_UI.gd | 2 +- source/entities/player/player_node.tscn | 46 ++++---- .../Hyperbolic_Bullet.tscn | 8 +- .../shooting/Line_Trajectory/Line_Bullet.tscn | 8 +- .../Parabolic_Bullet.tscn | 8 +- .../shooting/Sine_Trajectory/Sine_Bullet.tscn | 8 +- .../trinity_site/trinity_site_level.tscn | 12 +- source/scenes/GUI/main_menu.tscn | 8 +- 15 files changed, 161 insertions(+), 154 deletions(-) create mode 100644 source/assets/scripts/shooting/Gun_.gd diff --git a/project.godot b/project.godot index d4bb446..2205cee 100644 --- a/project.godot +++ b/project.godot @@ -41,42 +41,42 @@ fps=false input_right={ "deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":68,"unicode":0,"echo":false,"script":null) -, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777233,"unicode":0,"echo":false,"script":null) +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":68,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777233,"physical_scancode":0,"unicode":0,"echo":false,"script":null) ] } input_left={ "deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":65,"unicode":0,"echo":false,"script":null) -, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777231,"unicode":0,"echo":false,"script":null) +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":65,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777231,"physical_scancode":0,"unicode":0,"echo":false,"script":null) ] } input_up={ "deadzone": 0.49, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":87,"unicode":0,"echo":false,"script":null) -, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777232,"unicode":0,"echo":false,"script":null) -, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":32,"unicode":0,"echo":false,"script":null) +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":87,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777232,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":32,"physical_scancode":0,"unicode":0,"echo":false,"script":null) ] } input_down={ "deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":83,"unicode":0,"echo":false,"script":null) -, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777234,"unicode":0,"echo":false,"script":null) +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":83,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777234,"physical_scancode":0,"unicode":0,"echo":false,"script":null) ] } input_debug={ "deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":96,"unicode":0,"echo":false,"script":null) +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":96,"physical_scancode":0,"unicode":0,"echo":false,"script":null) ] } input_enter={ "deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777221,"unicode":0,"echo":false,"script":null) +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777221,"physical_scancode":0,"unicode":0,"echo":false,"script":null) ] } input_shift={ "deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777237,"unicode":0,"echo":false,"script":null) +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777237,"physical_scancode":0,"unicode":0,"echo":false,"script":null) ] } input_shoot={ @@ -86,32 +86,32 @@ input_shoot={ } esc={ "deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777217,"unicode":0,"echo":false,"script":null) +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777217,"physical_scancode":0,"unicode":0,"echo":false,"script":null) ] } rotation_increase={ "deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":69,"unicode":0,"echo":false,"script":null) +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":69,"physical_scancode":0,"unicode":0,"echo":false,"script":null) ] } rotation_decrease={ "deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":81,"unicode":0,"echo":false,"script":null) +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":81,"physical_scancode":0,"unicode":0,"echo":false,"script":null) ] } line={ "deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777351,"unicode":0,"echo":false,"script":null) +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777351,"physical_scancode":0,"unicode":0,"echo":false,"script":null) ] } sine={ "deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777352,"unicode":0,"echo":false,"script":null) +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777352,"physical_scancode":0,"unicode":0,"echo":false,"script":null) ] } hyper={ "deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777353,"unicode":0,"echo":false,"script":null) +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777353,"physical_scancode":0,"unicode":0,"echo":false,"script":null) ] } parab={ diff --git a/source/assets/scripts/player_handlers/player_body_handler.gd b/source/assets/scripts/player_handlers/player_body_handler.gd index 676176c..51ad3d7 100644 --- a/source/assets/scripts/player_handlers/player_body_handler.gd +++ b/source/assets/scripts/player_handlers/player_body_handler.gd @@ -2,15 +2,13 @@ extends KinematicBody2D export var debugMode = false -var trajectory:String = 'line' -var trajectory_line = 'line' +var hp = 100 setget set_hp -var bullet -var player_bullet = load("res://source/entities/shooting/Line_Trajectory/Line_Bullet.tscn") +var player_bullet = load("res://source/entities/bullet/player_bullet.tscn") var username_text = load("res://source/scenes/OVERLAY/elements/username_text.tscn") var username setget username_set var username_text_instance = null -var hp = 100 setget set_hp + var can_shoot = true var is_reloading = false @@ -24,30 +22,15 @@ puppet var puppet_weapon_angle = 0 puppet var puppet_direction = "left" puppet var puppet_theme = "01" puppet var puppet_character_states = {} -puppet var puppet_bullet_position = Vector2() setget puppet_bullet_position_set + onready var tween = $Tween onready var sprite = $player_sprite onready var reload_timer = $reload_timer -onready var shoot_point = $"weaponHolder/Player-character-theme-gun/shoot_point" +onready var shoot_point = $shoot_point onready var hit_timer = $hit_timer -var bullet_env = { - 'line' : preload("res://source/entities/shooting/Line_Trajectory/Line_Env.tscn"), - 'sine' : preload("res://source/entities/shooting/Sine_Trajectory/Sine_Env.tscn"), - 'parab' : preload("res://source/entities/shooting/Parabolic_Trajectory/Parabolic_Env.tscn"), - 'hyper' : preload("res://source/entities/shooting/Hyperbolic_Trajectory/Hyperbolic_Env.tscn") -} - -var bullet_trajectory = { - 'line' : preload("res://source/entities/shooting/Line_Trajectory/Line_Barrel.tscn"), - 'sine' : preload("res://source/entities/shooting/Sine_Trajectory/Sine_Barrel.tscn"), - 'parab' : preload("res://source/entities/shooting/Parabolic_Trajectory/Parabolic_Barrel.tscn"), - 'hyper' : preload("res://source/entities/shooting/Hyperbolic_Trajectory/Hyperbolic_Barrel.tscn") -} - - # 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() @@ -97,6 +80,7 @@ func _ready(): if get_tree().has_network_peer(): if is_network_master(): Global.player_master = self + # Allow update process override. set_process(true) $player_animated_sprite.play("idle") @@ -243,17 +227,16 @@ func _physics_process(delta) -> void: velocityVDIR.y -= deccelerationSpeed velocityVDIR = Vector2(clamp(velocityVDIR.x, -maxMovementSpeed.x, maxMovementSpeed.x), clamp(velocityVDIR.y, -maxMovementSpeed.y, maxMovementSpeed.y)) move_and_slide(velocityVDIR.rotated(rotationalHolder)) - rotate_weapon() - - choose_trajectory() - enable_trajectory_line(trajectory_line) - if Input.is_action_just_released("input_shoot") and can_shoot and not is_reloading: -# shoot(trajectory) - rpc("shoot", trajectory, get_tree().get_network_unique_id()) - is_reloading = true - reload_timer.start() - else: + + + #if Input.is_action_pressed("input_shoot") and can_shoot and not is_reloading: + # rpc("instance_bullet", get_tree().get_network_unique_id()) + # is_reloading = true + # reload_timer.start() + + rotate_weapon() + else: rotation = lerp_angle(rotation, puppet_rotation, delta * 8) #rotation = puppet_rotation $"weaponHolder/Player-character-theme-gun".position = puppet_weapon_position @@ -268,43 +251,18 @@ func _physics_process(delta) -> void: else: $player_animated_sprite.play("idle-speed-"+direction+"-"+theme) $Particles2D.set_emitting(false) - rotate_weapon() + rotate_weapon() if not tween.is_active(): pass + + + if hp <= 0: if get_tree().is_network_server(): rpc("destroy") -func choose_trajectory(): - if Input.is_action_just_pressed("line"): - trajectory = 'line' - trajectory_line = 'line' - elif Input.is_action_just_pressed("sine"): - trajectory = 'sine' - trajectory_line = 'sine' - elif Input.is_action_just_pressed("parab"): - trajectory = 'parab' - trajectory_line = 'parab' - elif Input.is_action_just_pressed("hyper"): - trajectory = 'hyper' - trajectory_line = 'hyper' - - -sync func shoot(trajectory:String, id): - bullet = bullet_env[trajectory].instance() - add_child(bullet) - bullet.global_position = shoot_point.global_position - bullet.global_rotation = shoot_point.global_rotation - - -func enable_trajectory_line(trajectory_line:String): - var x = bullet_trajectory[trajectory_line].instance() - add_child(x) - x.global_position = shoot_point.global_position - x.global_rotation = shoot_point.global_rotation - func _draw(): if debugMode: @@ -316,6 +274,15 @@ func _draw(): 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 lerp_angle(from, to, weight): + return from + short_angle_dist(from, to) * weight + + +func short_angle_dist(from, to): + var max_angle = PI * 2 + var difference = fmod(to - from, max_angle) + return fmod(2 * difference, max_angle) - difference + func puppet_position_set(new_value) -> void: puppet_position = new_value @@ -323,11 +290,6 @@ func puppet_position_set(new_value) -> void: tween.start() -func puppet_bullet_position_set(new_value) -> void: - puppet_bullet_position = new_value - tween.interpolate_property(self, "global_position", global_position, puppet_bullet_position, 0.1) - tween.start() - func set_hp(new_value): hp = new_value if get_tree().has_network_peer(): @@ -368,7 +330,15 @@ func _on_network_tick_rate_timeout(): rset_unreliable("puppet_weapon_angle", weaponAngle) rset_unreliable("puppet_direction", direction) #rset_unreliable("puppet_character_states", characterStates) - rset_unreliable("puppet_bullet_position", bullet) + + +sync func instance_bullet(id): + var player_bullet_instance = Global.instance_node_at_location(player_bullet, PersistentNodes, shoot_point.global_position) + player_bullet_instance.name = "Bullet" + name + str(Network.networked_object_name_index) + player_bullet_instance.set_network_master(id) + player_bullet_instance.player_rotation = rotation + player_bullet_instance.player_owner = id + Network.networked_object_name_index += 1 sync func update_position(pos): @@ -390,7 +360,7 @@ func _on_hit_timer_timeout(): func _on_hitbox_area_entered(area): if get_tree().is_network_server(): - if area.is_in_group("Player_damager"): + if area.is_in_group("Player_damager") and area.get_parent().player_owner != int(name): rpc("hit_by_damager", area.get_parent().damage) area.get_parent().rpc("destroy") @@ -409,7 +379,6 @@ sync func enable() -> void: visible = true $player_collider.disabled = false $hitbox/CollisionShape2D.disabled = false - $weaponHolder.disabled = false if get_tree().has_network_peer(): if is_network_master(): @@ -424,7 +393,6 @@ sync func destroy() -> void: visible = false $player_collider.disabled = true $hitbox/CollisionShape2D.disabled = true - $weaponHolder.disabled = true Global.alive_players.erase(self) if get_tree().has_network_peer(): @@ -460,6 +428,3 @@ func rotate_weapon(): $"weaponHolder/Player-character-theme-gun".position = weaponPosition $"weaponHolder/Player-character-theme-gun".rotation_degrees = weaponAngle pass - - - diff --git a/source/assets/scripts/shooting/Gun_.gd b/source/assets/scripts/shooting/Gun_.gd new file mode 100644 index 0000000..5466602 --- /dev/null +++ b/source/assets/scripts/shooting/Gun_.gd @@ -0,0 +1,59 @@ +extends AnimatedSprite + +var trajectory:String = 'line' +var trajectory_line = 'line' + +var bullet_env = { + 'line' : preload("res://source/entities/shooting/Line_Trajectory/Line_Env.tscn"), + 'sine' : preload("res://source/entities/shooting/Sine_Trajectory/Sine_Env.tscn"), + 'parab' : preload("res://source/entities/shooting/Parabolic_Trajectory/Parabolic_Env.tscn"), + 'hyper' : preload("res://source/entities/shooting/Hyperbolic_Trajectory/Hyperbolic_Env.tscn") +} + +var bullet_trajectory = { + 'line' : preload("res://source/entities/shooting/Line_Trajectory/Line_Barrel.tscn"), + 'sine' : preload("res://source/entities/shooting/Sine_Trajectory/Sine_Barrel.tscn"), + 'parab' : preload("res://source/entities/shooting/Parabolic_Trajectory/Parabolic_Barrel.tscn"), + 'hyper' : preload("res://source/entities/shooting/Hyperbolic_Trajectory/Hyperbolic_Barrel.tscn") +} + +func choose_trajectory(): + trajectory + trajectory_line + if Input.is_action_just_pressed("line"): + trajectory = 'line' + trajectory_line = 'line' + elif Input.is_action_just_pressed("sine"): + trajectory = 'sine' + trajectory_line = 'sine' + elif Input.is_action_just_pressed("parab"): + trajectory = 'parab' + trajectory_line = 'parab' + elif Input.is_action_just_pressed("hyper"): + trajectory = 'hyper' + trajectory_line = 'hyper' + + +func shoot(trajectory:String): + var bullet = bullet_env[trajectory].instance() + get_parent().get_parent().get_parent().add_child(bullet) + bullet.global_position = $Shooting_Point.global_position + bullet.global_rotation = $Shooting_Point.global_rotation + pass + + +func enable_trajectory_line(trajectory_line:String): + var x = bullet_trajectory[trajectory_line].instance() + get_parent().get_parent().get_parent().add_child(x) + x.global_position = $Shooting_Point.global_position + x.global_rotation = $Shooting_Point.global_rotation + + + +func _process(delta): + choose_trajectory() + enable_trajectory_line(trajectory_line) + if Input.is_action_just_pressed("input_shoot"): + pass + elif Input.is_action_just_released("input_shoot"): + shoot(trajectory) diff --git a/source/assets/scripts/shooting/Hyperbola/Hyperbolic_Bullet.gd b/source/assets/scripts/shooting/Hyperbola/Hyperbolic_Bullet.gd index 6f77fdf..a645cb8 100644 --- a/source/assets/scripts/shooting/Hyperbola/Hyperbolic_Bullet.gd +++ b/source/assets/scripts/shooting/Hyperbola/Hyperbolic_Bullet.gd @@ -1,6 +1,5 @@ extends Sprite -export(int) var damage = 25 var velocity = Vector2() var speed_hyper = 100 var time = 0.05 diff --git a/source/assets/scripts/shooting/Line/Line_Bullet.gd b/source/assets/scripts/shooting/Line/Line_Bullet.gd index 6d0a906..1eda890 100644 --- a/source/assets/scripts/shooting/Line/Line_Bullet.gd +++ b/source/assets/scripts/shooting/Line/Line_Bullet.gd @@ -1,6 +1,5 @@ extends Sprite -export(int) var damage = 25 export var speed_line = 1000 var velocity = Vector2() @@ -13,6 +12,7 @@ func follow_line_trajectory(): velocity.y = time*a_parameter + func _process(delta): follow_line_trajectory() time += delta diff --git a/source/assets/scripts/shooting/Parabola/Parabolic_Bullet.gd b/source/assets/scripts/shooting/Parabola/Parabolic_Bullet.gd index 29c5a44..190e7c7 100644 --- a/source/assets/scripts/shooting/Parabola/Parabolic_Bullet.gd +++ b/source/assets/scripts/shooting/Parabola/Parabolic_Bullet.gd @@ -1,7 +1,6 @@ extends Sprite -export(int) var damage = 25 -export(int) var speed_parab = 100 +export var speed_parab = 100 var velocity = Vector2() var time = 0 diff --git a/source/assets/scripts/shooting/Sine/Sine_Bullet.gd b/source/assets/scripts/shooting/Sine/Sine_Bullet.gd index 77368f7..c35522e 100644 --- a/source/assets/scripts/shooting/Sine/Sine_Bullet.gd +++ b/source/assets/scripts/shooting/Sine/Sine_Bullet.gd @@ -1,7 +1,6 @@ extends Sprite -export(int) var damage = 25 -export(int) var speed = 100 +export var speed = 100 var velocity = Vector2() var time = 0 diff --git a/source/assets/scripts/ui_element_handlers/game_UI.gd b/source/assets/scripts/ui_element_handlers/game_UI.gd index f2e07d4..279f5a9 100644 --- a/source/assets/scripts/ui_element_handlers/game_UI.gd +++ b/source/assets/scripts/ui_element_handlers/game_UI.gd @@ -1,7 +1,7 @@ extends CanvasLayer # if 0, then singleplayer will work, if 1, then multiplayer only -var winner_amount = 1 +var winner_amount = 0 onready var win_timer = $Control/winner/win_timer onready var winner = $Control/winner diff --git a/source/entities/player/player_node.tscn b/source/entities/player/player_node.tscn index a090827..84826d6 100644 --- a/source/entities/player/player_node.tscn +++ b/source/entities/player/player_node.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=175 format=2] +[gd_scene load_steps=177 format=2] [ext_resource path="res://source/assets/sprites/character/player/theme/01/na/Player-character-theme-01.png" type="Texture" id=1] [ext_resource path="res://source/assets/scripts/player_handlers/player_collider_handler.gd" type="Script" id=2] @@ -15,6 +15,7 @@ [ext_resource path="res://source/assets/sprites/character/player/theme/01/animation/left_r/Player-character-theme-01_anim-idle – 7.png" type="Texture" id=13] [ext_resource path="res://source/assets/sprites/character/player/theme/01/animation/left_r/Player-character-theme-01_anim-idle – 12.png" type="Texture" id=14] [ext_resource path="res://source/assets/sprites/character/player/theme/01/animation/left_r/Player-character-theme-01_anim-idle – 10.png" type="Texture" id=15] +[ext_resource path="res://source/assets/scripts/shooting/Gun_.gd" type="Script" id=16] [ext_resource path="res://source/assets/sprites/character/player/theme/01/animation/left_r/Player-character-theme-01_anim-idle – 18.png" type="Texture" id=18] [ext_resource path="res://source/assets/sprites/character/player/theme/01/animation/right_r/Player-character-theme-01_anim-idle – 34.png" type="Texture" id=19] [ext_resource path="res://source/assets/sprites/character/player/theme/01/animation/left_r/Player-character-theme-01_anim-idle – 17.png" type="Texture" id=20] @@ -165,6 +166,7 @@ [ext_resource path="res://source/assets/sprites/character/player/theme/04/animation/left_r/Player-character-theme-01_anim-idle – 89.png" type="Texture" id=165] [ext_resource path="res://source/assets/sprites/character/player/theme/04/animation/left_r/Player-character-theme-04_anim-idle – 1.png" type="Texture" id=166] [ext_resource path="res://source/assets/sprites/character/player/theme/02/animation/right_r/Player-character-theme-01_anim-idle – 98.png" type="Texture" id=167] +[ext_resource path="res://source/assets/sprites/character/player/theme/03/na/Player-character-theme-gun-03.png" type="Texture" id=168] [ext_resource path="res://source/assets/sprites/character/player/theme/04/na/Player-character-theme-gun-04.png" type="Texture" id=169] [ext_resource path="res://source/assets/sprites/character/player/theme/02/na/Player-character-theme-gun-02.png" type="Texture" id=170] [ext_resource path="res://source/assets/sprites/character/player/theme/Player-character-theme-gun-05.png" type="Texture" id=171] @@ -195,7 +197,7 @@ animations = [ { }, { "frames": [ ExtResource( 99 ), ExtResource( 83 ), ExtResource( 109 ), ExtResource( 111 ), ExtResource( 101 ), ExtResource( 96 ), ExtResource( 79 ), ExtResource( 132 ), ExtResource( 119 ), ExtResource( 80 ), ExtResource( 85 ), ExtResource( 86 ), ExtResource( 87 ), ExtResource( 106 ), ExtResource( 121 ), ExtResource( 129 ), ExtResource( 100 ), ExtResource( 108 ), ExtResource( 110 ), ExtResource( 120 ) ], "loop": true, -"name": "idle-speed-left-01", +"name": "idle-speed-right-04", "speed": 25.0 }, { "frames": [ ExtResource( 162 ), ExtResource( 135 ), ExtResource( 146 ), ExtResource( 141 ), ExtResource( 143 ), ExtResource( 163 ), ExtResource( 149 ), ExtResource( 136 ), ExtResource( 154 ), ExtResource( 137 ), ExtResource( 165 ), ExtResource( 142 ), ExtResource( 139 ), ExtResource( 159 ), ExtResource( 140 ), ExtResource( 155 ), ExtResource( 144 ), ExtResource( 151 ), ExtResource( 153 ), ExtResource( 166 ) ], @@ -213,10 +215,10 @@ animations = [ { "name": "boost-speed-right-02", "speed": 50.0 }, { -"frames": [ ExtResource( 162 ), ExtResource( 135 ), ExtResource( 146 ), ExtResource( 141 ), ExtResource( 143 ), ExtResource( 163 ), ExtResource( 149 ), ExtResource( 136 ), ExtResource( 154 ), ExtResource( 137 ), ExtResource( 165 ), ExtResource( 142 ), ExtResource( 139 ), ExtResource( 159 ), ExtResource( 140 ), ExtResource( 155 ), ExtResource( 144 ), ExtResource( 151 ), ExtResource( 153 ), ExtResource( 166 ) ], +"frames": [ ExtResource( 99 ), ExtResource( 83 ), ExtResource( 109 ), ExtResource( 111 ), ExtResource( 101 ), ExtResource( 96 ), ExtResource( 79 ), ExtResource( 132 ), ExtResource( 119 ), ExtResource( 80 ), ExtResource( 85 ), ExtResource( 86 ), ExtResource( 87 ), ExtResource( 106 ), ExtResource( 121 ), ExtResource( 129 ), ExtResource( 100 ), ExtResource( 108 ), ExtResource( 110 ), ExtResource( 120 ) ], "loop": true, -"name": "boost-speed-left-04", -"speed": 50.0 +"name": "move-speed-right-04", +"speed": 35.0 }, { "frames": [ ExtResource( 48 ), ExtResource( 4 ), ExtResource( 3 ), ExtResource( 46 ), ExtResource( 47 ), ExtResource( 32 ), ExtResource( 13 ), ExtResource( 40 ), ExtResource( 6 ), ExtResource( 15 ), ExtResource( 22 ), ExtResource( 14 ), ExtResource( 9 ), ExtResource( 37 ), ExtResource( 23 ), ExtResource( 39 ), ExtResource( 20 ), ExtResource( 18 ), ExtResource( 7 ), ExtResource( 34 ) ], "loop": true, @@ -230,6 +232,7 @@ animations = [ { }, { "frames": [ ExtResource( 5 ), ExtResource( 42 ), ExtResource( 35 ), ExtResource( 24 ), ExtResource( 8 ), ExtResource( 31 ), ExtResource( 30 ), ExtResource( 38 ), ExtResource( 10 ), ExtResource( 43 ), ExtResource( 41 ), ExtResource( 33 ), ExtResource( 44 ), ExtResource( 19 ), ExtResource( 29 ), ExtResource( 25 ), ExtResource( 36 ), ExtResource( 12 ), ExtResource( 45 ), ExtResource( 21 ) ], "loop": true, +<<<<<<< HEAD "name": "idle-speed-left-04", "speed": 25.0 }, { @@ -244,6 +247,14 @@ animations = [ { "frames": [ ExtResource( 70 ), ExtResource( 49 ), ExtResource( 74 ), ExtResource( 75 ), ExtResource( 28 ), ExtResource( 52 ), ExtResource( 53 ), ExtResource( 55 ), ExtResource( 150 ), ExtResource( 156 ), ExtResource( 138 ), ExtResource( 161 ), ExtResource( 145 ), ExtResource( 148 ), ExtResource( 147 ), ExtResource( 133 ), ExtResource( 164 ), ExtResource( 134 ), ExtResource( 152 ), ExtResource( 160 ) ], "loop": true, "name": "move-speed-left-03", +======= +"name": "move-speed-right-01", +"speed": 35.0 +}, { +"frames": [ ExtResource( 48 ), ExtResource( 4 ), ExtResource( 3 ), ExtResource( 46 ), ExtResource( 47 ), ExtResource( 32 ), ExtResource( 13 ), ExtResource( 40 ), ExtResource( 6 ), ExtResource( 15 ), ExtResource( 22 ), ExtResource( 14 ), ExtResource( 9 ), ExtResource( 37 ), ExtResource( 23 ), ExtResource( 39 ), ExtResource( 20 ), ExtResource( 18 ), ExtResource( 7 ), ExtResource( 34 ) ], +"loop": true, +"name": "move-speed-left-01", +>>>>>>> parent of 64808b0 (Merge branch 'master' of https://github.com/KristofersSolo/Godot) "speed": 35.0 }, { "frames": [ ExtResource( 48 ), ExtResource( 4 ), ExtResource( 3 ), ExtResource( 46 ), ExtResource( 47 ), ExtResource( 32 ), ExtResource( 13 ), ExtResource( 40 ), ExtResource( 6 ), ExtResource( 15 ), ExtResource( 22 ), ExtResource( 14 ), ExtResource( 9 ), ExtResource( 37 ), ExtResource( 23 ), ExtResource( 39 ), ExtResource( 20 ), ExtResource( 18 ), ExtResource( 7 ), ExtResource( 34 ) ], @@ -286,11 +297,6 @@ animations = [ { "loop": true, "name": "move-speed-left-04", "speed": 35.0 -}, { -"frames": [ ExtResource( 114 ), ExtResource( 128 ), ExtResource( 93 ), ExtResource( 107 ), ExtResource( 117 ), ExtResource( 102 ), ExtResource( 81 ), ExtResource( 118 ), ExtResource( 76 ), ExtResource( 115 ), ExtResource( 127 ), ExtResource( 123 ), ExtResource( 113 ), ExtResource( 77 ), ExtResource( 78 ), ExtResource( 124 ), ExtResource( 94 ), ExtResource( 112 ), ExtResource( 131 ), ExtResource( 95 ) ], -"loop": true, -"name": "boost-speed-right-03", -"speed": 50.0 } ] [sub_resource type="RectangleShape2D" id=3] @@ -331,9 +337,9 @@ animations = [ { "name": "02", "speed": 5.0 }, { -"frames": [ ExtResource( 170 ) ], +"frames": [ ExtResource( 27 ) ], "loop": true, -"name": "02", +"name": "01", "speed": 5.0 }, { "frames": [ ExtResource( 169 ) ], @@ -342,10 +348,7 @@ animations = [ { "speed": 5.0 } ] -[node name="player" type="KinematicBody2D" groups=[ -"Net", -"Player", -]] +[node name="player" type="KinematicBody2D" groups=["Net", "Player"]] script = ExtResource( 11 ) [node name="player_collider" type="CollisionShape2D" parent="."] @@ -395,20 +398,21 @@ texture = ExtResource( 26 ) [node name="weaponHolder" type="CollisionShape2D" parent="."] shape = SubResource( 5 ) -[node name="Player-character-theme-gun-na3" type="Sprite" parent="weaponHolder"] -scale = Vector2( 0.3, 0.25 ) -texture = ExtResource( 171 ) - [node name="Player-character-theme-gun" type="AnimatedSprite" parent="weaponHolder"] scale = Vector2( 0.25, 0.25 ) frames = SubResource( 6 ) animation = "04" +script = ExtResource( 16 ) -[node name="shoot_point" type="Position2D" parent="weaponHolder/Player-character-theme-gun"] +[node name="Shooting_Point" type="Position2D" parent="weaponHolder/Player-character-theme-gun"] position = Vector2( -120, 0 ) rotation = 3.14159 scale = Vector2( 4, 4 ) +[node name="Player-character-theme-gun-na3" type="Sprite" parent="weaponHolder"] +scale = Vector2( 0.3, 0.25 ) +texture = ExtResource( 171 ) + [connection signal="timeout" from="network_tick_rate" to="." method="_on_network_tick_rate_timeout"] [connection signal="timeout" from="reload_timer" to="." method="_on_reload_timer_timeout"] [connection signal="timeout" from="hit_timer" to="." method="_on_hit_timer_timeout"] diff --git a/source/entities/shooting/Hyperbolic_Trajectory/Hyperbolic_Bullet.tscn b/source/entities/shooting/Hyperbolic_Trajectory/Hyperbolic_Bullet.tscn index 9a0d2f8..200bc31 100644 --- a/source/entities/shooting/Hyperbolic_Trajectory/Hyperbolic_Bullet.tscn +++ b/source/entities/shooting/Hyperbolic_Trajectory/Hyperbolic_Bullet.tscn @@ -5,15 +5,11 @@ [sub_resource type="CapsuleShape2D" id=1] -[node name="playert_bullet" type="Sprite" groups=[ -"Net", -]] +[node name="playert_bullet" type="Sprite" groups=["Net"]] texture = ExtResource( 1 ) script = ExtResource( 2 ) -[node name="hitbox" type="Area2D" parent="." groups=[ -"Player_damager", -]] +[node name="hitbox" type="Area2D" parent="." groups=["Player_damager"]] [node name="CollisionShape2D" type="CollisionShape2D" parent="hitbox"] rotation = 1.5708 diff --git a/source/entities/shooting/Line_Trajectory/Line_Bullet.tscn b/source/entities/shooting/Line_Trajectory/Line_Bullet.tscn index 4cdb733..2f5ea2b 100644 --- a/source/entities/shooting/Line_Trajectory/Line_Bullet.tscn +++ b/source/entities/shooting/Line_Trajectory/Line_Bullet.tscn @@ -5,15 +5,11 @@ [sub_resource type="CapsuleShape2D" id=1] -[node name="player_bullet" type="Sprite" groups=[ -"Net", -]] +[node name="player_bullet" type="Sprite" groups=["Net"]] texture = ExtResource( 1 ) script = ExtResource( 2 ) -[node name="hitbox" type="Area2D" parent="." groups=[ -"Player_damager", -]] +[node name="hitbox" type="Area2D" parent="." groups=["Player_damager"]] [node name="CollisionShape2D" type="CollisionShape2D" parent="hitbox"] rotation = 1.5708 diff --git a/source/entities/shooting/Parabolic_Trajectory/Parabolic_Bullet.tscn b/source/entities/shooting/Parabolic_Trajectory/Parabolic_Bullet.tscn index 391d84f..9157426 100644 --- a/source/entities/shooting/Parabolic_Trajectory/Parabolic_Bullet.tscn +++ b/source/entities/shooting/Parabolic_Trajectory/Parabolic_Bullet.tscn @@ -5,15 +5,11 @@ [sub_resource type="CapsuleShape2D" id=1] -[node name="player_bullet" type="Sprite" groups=[ -"Net", -]] +[node name="player_bullet" type="Sprite" groups=["Net"]] texture = ExtResource( 1 ) script = ExtResource( 2 ) -[node name="hitbox" type="Area2D" parent="." groups=[ -"Player_damager", -]] +[node name="hitbox" type="Area2D" parent="." groups=["Player_damager"]] [node name="CollisionShape2D" type="CollisionShape2D" parent="hitbox"] rotation = 1.5708 diff --git a/source/entities/shooting/Sine_Trajectory/Sine_Bullet.tscn b/source/entities/shooting/Sine_Trajectory/Sine_Bullet.tscn index 536bf28..3acf27f 100644 --- a/source/entities/shooting/Sine_Trajectory/Sine_Bullet.tscn +++ b/source/entities/shooting/Sine_Trajectory/Sine_Bullet.tscn @@ -5,15 +5,11 @@ [sub_resource type="CapsuleShape2D" id=1] -[node name="player_bullet" type="Sprite" groups=[ -"Net", -]] +[node name="player_bullet" type="Sprite" groups=["Net"]] texture = ExtResource( 1 ) script = ExtResource( 2 ) -[node name="hitbox" type="Area2D" parent="." groups=[ -"Player_damager", -]] +[node name="hitbox" type="Area2D" parent="." groups=["Player_damager"]] [node name="CollisionShape2D" type="CollisionShape2D" parent="hitbox"] rotation = 1.5708 diff --git a/source/levels/trinity_site/trinity_site_level.tscn b/source/levels/trinity_site/trinity_site_level.tscn index 1867346..f9d472b 100644 --- a/source/levels/trinity_site/trinity_site_level.tscn +++ b/source/levels/trinity_site/trinity_site_level.tscn @@ -106,19 +106,19 @@ z_index = -3 [node name="spawn_locations" type="Node" parent="."] [node name="1" type="Position2D" parent="spawn_locations"] -position = Vector2( 138.53, 694.841 ) +position = Vector2( 260, 540 ) z_index = 1 [node name="2" type="Position2D" parent="spawn_locations"] -position = Vector2( 677.446, 912.1 ) +position = Vector2( 460, 540 ) z_index = 1 [node name="3" type="Position2D" parent="spawn_locations"] -position = Vector2( 1174.91, 949.813 ) +position = Vector2( 1460, 540 ) z_index = 1 [node name="4" type="Position2D" parent="spawn_locations"] -position = Vector2( 1645.35, 803.706 ) +position = Vector2( 1640, 540 ) z_index = 1 [node name="UI" type="CanvasLayer" parent="."] @@ -131,7 +131,6 @@ script = ExtResource( 6 ) anchor_right = 1.0 anchor_bottom = 1.0 __meta__ = { -"_edit_lock_": true, "_edit_use_anchors_": false } @@ -143,16 +142,15 @@ margin_left = 2.37842 margin_top = -35.5 margin_right = 2.37842 margin_bottom = 106.5 -custom_fonts/font = SubResource( 1 ) custom_colors/font_color_shadow = Color( 0, 0, 0, 1 ) custom_constants/shadow_offset_x = 6 custom_constants/shadow_offset_y = 6 +custom_fonts/font = SubResource( 1 ) text = "You are the winner" align = 1 valign = 1 script = ExtResource( 5 ) __meta__ = { -"_edit_lock_": true, "_edit_use_anchors_": false } diff --git a/source/scenes/GUI/main_menu.tscn b/source/scenes/GUI/main_menu.tscn index 175e14c..c5aa6bf 100644 --- a/source/scenes/GUI/main_menu.tscn +++ b/source/scenes/GUI/main_menu.tscn @@ -51,8 +51,8 @@ margin_left = -150.0 margin_top = -36.0 margin_right = 150.0 margin_bottom = 36.0 -custom_fonts/font = ExtResource( 5 ) custom_colors/font_color = Color( 0, 0, 0, 1 ) +custom_fonts/font = ExtResource( 5 ) text = "PLAY" align = 1 valign = 1 @@ -76,8 +76,8 @@ margin_left = -98.8223 margin_top = -36.0 margin_right = 134.178 margin_bottom = 36.0 -custom_fonts/font = ExtResource( 5 ) custom_colors/font_color = Color( 0, 0, 0, 1 ) +custom_fonts/font = ExtResource( 5 ) text = "LAN Party" align = 1 valign = 1 @@ -108,8 +108,8 @@ margin_left = -150.0 margin_top = -36.0 margin_right = 150.0 margin_bottom = 36.0 -custom_fonts/font = ExtResource( 5 ) custom_colors/font_color = Color( 0, 0, 0, 1 ) +custom_fonts/font = ExtResource( 5 ) text = "EXIT" align = 1 valign = 1 @@ -123,8 +123,8 @@ margin_left = 1798.91 margin_top = 989.536 margin_right = 1889.91 margin_bottom = 1061.54 -custom_fonts/font = ExtResource( 8 ) custom_colors/font_color_disabled = Color( 1, 1, 1, 1 ) +custom_fonts/font = ExtResource( 8 ) __meta__ = { "_edit_use_anchors_": false }