From 8c4457a8837d1b21796a5851fe196dfb3a25a61d Mon Sep 17 00:00:00 2001 From: John Breaux Date: Mon, 8 Nov 2021 07:40:11 -0600 Subject: [PATCH 001/107] Create game classes --- godot_ship/script/game/Gameplay/Board.gd | 27 ++++++++++++ godot_ship/script/game/Gameplay/Game.gd | 25 +++++++++++ godot_ship/script/game/Gameplay/Player.gd | 51 +++++++++++++++++++++++ godot_ship/script/game/Gameplay/Ship.gd | 40 ++++++++++++++++++ 4 files changed, 143 insertions(+) create mode 100644 godot_ship/script/game/Gameplay/Board.gd create mode 100644 godot_ship/script/game/Gameplay/Game.gd create mode 100644 godot_ship/script/game/Gameplay/Player.gd create mode 100644 godot_ship/script/game/Gameplay/Ship.gd diff --git a/godot_ship/script/game/Gameplay/Board.gd b/godot_ship/script/game/Gameplay/Board.gd new file mode 100644 index 0000000..90dc099 --- /dev/null +++ b/godot_ship/script/game/Gameplay/Board.gd @@ -0,0 +1,27 @@ +extends Node + +var bottomBoard # Player board +var topBoard # Opponent board +var ships # list of Ships +var shipCount # number of 'active' (un-sunk) ships + +# Called when the node enters the scene tree for the first time. +func _ready(): + pass # Replace with function body. + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +#func _process(delta): +# pass + +func getState(): + pass + +func placeShip(): + pass + +func getBottomBoard(): + pass + +func getShipCount(): + pass diff --git a/godot_ship/script/game/Gameplay/Game.gd b/godot_ship/script/game/Gameplay/Game.gd new file mode 100644 index 0000000..5289713 --- /dev/null +++ b/godot_ship/script/game/Gameplay/Game.gd @@ -0,0 +1,25 @@ +extends Node + +var players # = player1, player2, ... +var turnCount = 0 +var wasHit = false +var isMultiplayer = false + +# Called when the node enters the scene tree for the first time. +func _ready(): + gameStart() + pass # Replace with function body. + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +#func _process(delta): +# pass + +func gameStart(): + pass + +func victoryScreen(): + pass + +func displayTurn(): + pass diff --git a/godot_ship/script/game/Gameplay/Player.gd b/godot_ship/script/game/Gameplay/Player.gd new file mode 100644 index 0000000..ddaa32c --- /dev/null +++ b/godot_ship/script/game/Gameplay/Player.gd @@ -0,0 +1,51 @@ +extends Node + +var pid +var board + +# Called when the node enters the scene tree for the first time. +func _ready(): + pass # Replace with function body. + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +#func _process(delta): +# pass + +# hit: Called when opponent fires on us. +# Update internal state, and return bool hit/miss +func hit(): + pass + +# placeShip: called when ships are placed. +# forwards Ship locations to the Board, so that it may construct a ship +# ship: a list of ship properties {possition, orientation, size} +func placeShips(_ship): + pass + +# setUp: set up the board given the placed ship locations +# translates the ship positions in the Setup UI to board-space, then places each ship +# ships: a list of lists of ship properties {{position, orientation, size}, ...} +func setUp(_ships): + pass + +# turnStart: start player's turn +# Initiates the player's turn, and blocks until the player selects a location to fire upon +# returns: fire {player, coordinates} +func turnStart(): + pass + +# getBoard: returns the player's board +# returns: board +func getBoard(): + return board + +# forfeit: ends game for player +# Sinks all ships +func forfeit(): + pass + +# getShipCount: get the number of ships the player has left alive +func getShipCount(): + pass + diff --git a/godot_ship/script/game/Gameplay/Ship.gd b/godot_ship/script/game/Gameplay/Ship.gd new file mode 100644 index 0000000..d8799b8 --- /dev/null +++ b/godot_ship/script/game/Gameplay/Ship.gd @@ -0,0 +1,40 @@ +extends Node + +# This is the rendered element of a "ship", auto-generated when + +var size = 0 # Size of ship in units +var position # Coordinates of ship's center. Ship extends [-(size-1 >> 1), (size/2 >> 1)] +var sunk = false +var orientation = false + +# index into ship sprite table +var texture = 0 + +# Called when the node enters the scene tree for the first time. +func _ready(): + pass # Replace with function body. + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +#func _process(delta): +# pass + +func getSize(): + return size + +func getPosition(): + return position + +func getOrientation(): + return orientation + +func getSunk(): + return sunk + +func setSunk(): + sunk = true + +func makeShip(in_position, in_size, in_orientation): + position = in_position + size = in_size + orientation = in_orientation From eaa1617b9a823b5c4449ea71b0948a24df04ff9b Mon Sep 17 00:00:00 2001 From: John Breaux Date: Thu, 11 Nov 2021 14:38:10 -0600 Subject: [PATCH 002/107] Pushing what I've done of the game logic. --- godot_ship/script/game/Gameplay/Board.gd | 31 ++++++++++++++++++----- godot_ship/script/game/Gameplay/Game.gd | 4 ++- godot_ship/script/game/Gameplay/Player.gd | 3 +++ godot_ship/script/game/Gameplay/Ship.gd | 7 +++-- 4 files changed, 35 insertions(+), 10 deletions(-) diff --git a/godot_ship/script/game/Gameplay/Board.gd b/godot_ship/script/game/Gameplay/Board.gd index 90dc099..adb134a 100644 --- a/godot_ship/script/game/Gameplay/Board.gd +++ b/godot_ship/script/game/Gameplay/Board.gd @@ -1,5 +1,8 @@ extends Node +# Path to Ship class, for instantiating new Ships in code +onready var Ship = load("res://script/game/Gameplay/Ship.gd") + var bottomBoard # Player board var topBoard # Opponent board var ships # list of Ships @@ -7,17 +10,16 @@ var shipCount # number of 'active' (un-sunk) ships # Called when the node enters the scene tree for the first time. func _ready(): - pass # Replace with function body. - - -# Called every frame. 'delta' is the elapsed time since the previous frame. -#func _process(delta): -# pass + ships = [] + shipCount = 0 +# TODO: What state? func getState(): pass -func placeShip(): +# Place a ship on the board at board-space coordinates +func placeShip(in_position, in_size, in_orientation): + ships.append(Ship.new(in_position, in_size, in_orientation)) pass func getBottomBoard(): @@ -25,3 +27,18 @@ func getBottomBoard(): func getShipCount(): pass + +func _init(): + for i in range(10): + bottomBoard.append([]) + for _i in range(0, 10): + bottomBoard[i].resize(10) + for i in range(10): + topBoard.append([]) + for _i in range(0, 10): + bottomBoard[i].resize(10) + +func worldspace_to_boardspace(coordinate:Vector2): + coordinate -= Vector2(36, 36) + coordinate /= Vector2(32,32) + return coordinate diff --git a/godot_ship/script/game/Gameplay/Game.gd b/godot_ship/script/game/Gameplay/Game.gd index 5289713..1af66d2 100644 --- a/godot_ship/script/game/Gameplay/Game.gd +++ b/godot_ship/script/game/Gameplay/Game.gd @@ -1,5 +1,8 @@ extends Node +# Path to Player class, for instantiating new Players in code +var Player = "res://script/game/Gameplay/Player.gd" + var players # = player1, player2, ... var turnCount = 0 var wasHit = false @@ -8,7 +11,6 @@ var isMultiplayer = false # Called when the node enters the scene tree for the first time. func _ready(): gameStart() - pass # Replace with function body. # Called every frame. 'delta' is the elapsed time since the previous frame. diff --git a/godot_ship/script/game/Gameplay/Player.gd b/godot_ship/script/game/Gameplay/Player.gd index ddaa32c..72ca7f6 100644 --- a/godot_ship/script/game/Gameplay/Player.gd +++ b/godot_ship/script/game/Gameplay/Player.gd @@ -1,5 +1,8 @@ extends Node +# Path to Board class, for instantiating new Boards in code +var Board = "res://script/game/Gameplay/Board.gd" + var pid var board diff --git a/godot_ship/script/game/Gameplay/Ship.gd b/godot_ship/script/game/Gameplay/Ship.gd index d8799b8..a7502f1 100644 --- a/godot_ship/script/game/Gameplay/Ship.gd +++ b/godot_ship/script/game/Gameplay/Ship.gd @@ -1,6 +1,9 @@ extends Node -# This is the rendered element of a "ship", auto-generated when +# This is the rendered element of a "ship", generated when the game transitions from the placing state to the gameplay state + +# +enum Orientation {X = 1, Y = 0} var size = 0 # Size of ship in units var position # Coordinates of ship's center. Ship extends [-(size-1 >> 1), (size/2 >> 1)] @@ -34,7 +37,7 @@ func getSunk(): func setSunk(): sunk = true -func makeShip(in_position, in_size, in_orientation): +func _init(in_position = Vector2(0,0), in_size = 2, in_orientation = Orientation.X): position = in_position size = in_size orientation = in_orientation From f9592f425e780bb668f0331da22126bf5e551083 Mon Sep 17 00:00:00 2001 From: tommy-l-ngo Date: Thu, 11 Nov 2021 15:08:14 -0600 Subject: [PATCH 003/107] Commented my code Deals with ship placement on board and ship rotation on board --- godot_ship/script/game/moveShip.gd | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/godot_ship/script/game/moveShip.gd b/godot_ship/script/game/moveShip.gd index a64aba7..80ac020 100644 --- a/godot_ship/script/game/moveShip.gd +++ b/godot_ship/script/game/moveShip.gd @@ -4,14 +4,14 @@ extends RigidBody2D # var a = 2 # var b = "text" var held = false -var originalPos -var snapOriginalPos = false -var vertical = true -var startingPos +var originalPos # Position before moving the ship +var snapOriginalPos = false # Gets the original position +var vertical = true # Gets ship which is either vertical or horizonal +var startingPos # Starting position of ships before being placed # Called when the node enters the scene tree for the first time. func _ready(): - startingPos = position + startingPos = position # Sets the position of ships when game is started to the startingPos variable pass var click_radius = 16 @@ -26,14 +26,17 @@ func _input(event): if held and not event.pressed: held = false; + # If ship is placed on board, snap to board if (position.x > 17.4 and position.x < 335.5) and (position.y > 20.2 and position.y < 335.5): - position = position.snapped(Vector2(32, 32)) + Vector2(4, 4) - else: + position = position.snapped(Vector2(32, 32)) + Vector2(4, 4) # Position snapping on board + else: # If not placed on board, ships are placed back at the starting position if originalPos != null: position = originalPos rotation = 0 vertical = true + # Lines 40-98 make sure that the ships placed on the board are not able to hang off the board + # 2-Ship if (get_parent().get_node("2Ship").rotation_degrees == 0): if (get_parent().get_node("2Ship").position.y > 308): @@ -119,6 +122,7 @@ func _input(event): rotate(PI/2) vertical = true + # Lines 126-196 move the ship back accordingly after being rotated to make sure that the ships do not hang off the board if(position.x > 17.4 and position.x < 335.5) and (position.y > 20.2 and position.y < 335.5): # 2-Ship if (get_parent().get_node("2Ship").rotation_degrees == 0): @@ -208,7 +212,7 @@ func drop(impulse=Vector2.ZERO): held = false snapOriginalPos = false -func checkOriginalPos(): +func checkOriginalPos(): # Checks whether the position of the ship is the stating position of the ship if position == startingPos: return true else: From a8f96eed9de6d1d238fadbdb9c4a052db89881f1 Mon Sep 17 00:00:00 2001 From: John Breaux Date: Thu, 11 Nov 2021 15:38:50 -0600 Subject: [PATCH 004/107] Comment game logic code, and edit for style. --- godot_ship/script/game/Gameplay/Board.gd | 22 +++++++------- godot_ship/script/game/Gameplay/Game.gd | 32 +++++++++++--------- godot_ship/script/game/Gameplay/Player.gd | 21 ++++++------- godot_ship/script/game/Gameplay/Ship.gd | 36 +++++++++++++++-------- 4 files changed, 65 insertions(+), 46 deletions(-) diff --git a/godot_ship/script/game/Gameplay/Board.gd b/godot_ship/script/game/Gameplay/Board.gd index adb134a..6e6e3aa 100644 --- a/godot_ship/script/game/Gameplay/Board.gd +++ b/godot_ship/script/game/Gameplay/Board.gd @@ -3,10 +3,10 @@ extends Node # Path to Ship class, for instantiating new Ships in code onready var Ship = load("res://script/game/Gameplay/Ship.gd") -var bottomBoard # Player board -var topBoard # Opponent board +var bottom_board # Player board +var top_board # Opponent board var ships # list of Ships -var shipCount # number of 'active' (un-sunk) ships +var ship_count # number of 'active' (un-sunk) ships # Called when the node enters the scene tree for the first time. func _ready(): @@ -29,16 +29,18 @@ func getShipCount(): pass func _init(): + # Initialize the bottom_board to a 10x10 array for i in range(10): - bottomBoard.append([]) + bottom_board.append([]) for _i in range(0, 10): - bottomBoard[i].resize(10) + bottom_board[i].resize(10) + # Initialize the top_board to a 10x10 array for i in range(10): - topBoard.append([]) + top_board.append([]) for _i in range(0, 10): - bottomBoard[i].resize(10) + top_board[i].resize(10) +# worldspace_to_boardspace: convert a Vector2 in world-space to board-space func worldspace_to_boardspace(coordinate:Vector2): - coordinate -= Vector2(36, 36) - coordinate /= Vector2(32,32) - return coordinate + # subtract 36 to get the position relative to (0,0) on the board, and integer divide by 32 + return Vector2(int(coordinate.x - 36) >> 5, int(coordinate.y-36) >> 5) diff --git a/godot_ship/script/game/Gameplay/Game.gd b/godot_ship/script/game/Gameplay/Game.gd index 1af66d2..29d7d1d 100644 --- a/godot_ship/script/game/Gameplay/Game.gd +++ b/godot_ship/script/game/Gameplay/Game.gd @@ -3,25 +3,29 @@ extends Node # Path to Player class, for instantiating new Players in code var Player = "res://script/game/Gameplay/Player.gd" +# Array of instances of the Player class; stores the Players var players # = player1, player2, ... -var turnCount = 0 -var wasHit = false -var isMultiplayer = false +# turn counter +var turn = 0 +# Variable transporting hit state between players +var hit = false +# Variable tracking whether a game is multiplayer (so that the correct Player type can be spawned) +# TODO: Multiplayer +var is_multiplayer = false # Called when the node enters the scene tree for the first time. func _ready(): - gameStart() + game_start() +# Member functions: +# game_start: starts the game +func game_start(): + pass -# Called every frame. 'delta' is the elapsed time since the previous frame. -#func _process(delta): -# pass +# victory_screen: display the victory screen +func victory_screen(): + pass -func gameStart(): - pass - -func victoryScreen(): - pass - -func displayTurn(): +# display_turn(): display which turn it is on the screen +func display_turn(): pass diff --git a/godot_ship/script/game/Gameplay/Player.gd b/godot_ship/script/game/Gameplay/Player.gd index 72ca7f6..bb122bd 100644 --- a/godot_ship/script/game/Gameplay/Player.gd +++ b/godot_ship/script/game/Gameplay/Player.gd @@ -3,39 +3,40 @@ extends Node # Path to Board class, for instantiating new Boards in code var Board = "res://script/game/Gameplay/Board.gd" +# Player ID of this player var pid +# board (an instance of the Board class) var board # Called when the node enters the scene tree for the first time. func _ready(): pass # Replace with function body. - -# Called every frame. 'delta' is the elapsed time since the previous frame. -#func _process(delta): -# pass - +# Member functions: # hit: Called when opponent fires on us. # Update internal state, and return bool hit/miss func hit(): pass -# placeShip: called when ships are placed. +# place_ship: called when ships are placed. # forwards Ship locations to the Board, so that it may construct a ship -# ship: a list of ship properties {possition, orientation, size} -func placeShips(_ship): +# ship: a list of ship properties {position, orientation, size} +func place_ship(_ship): pass # setUp: set up the board given the placed ship locations # translates the ship positions in the Setup UI to board-space, then places each ship # ships: a list of lists of ship properties {{position, orientation, size}, ...} -func setUp(_ships): +func set_up(_ships): pass # turnStart: start player's turn # Initiates the player's turn, and blocks until the player selects a location to fire upon -# returns: fire {player, coordinates} +# returns: fire = [player id, target coordinates] func turnStart(): + var player_id = 0 + var target = Vector2(0,0) + return [player_id, target] pass # getBoard: returns the player's board diff --git a/godot_ship/script/game/Gameplay/Ship.gd b/godot_ship/script/game/Gameplay/Ship.gd index a7502f1..c6df16d 100644 --- a/godot_ship/script/game/Gameplay/Ship.gd +++ b/godot_ship/script/game/Gameplay/Ship.gd @@ -2,42 +2,54 @@ extends Node # This is the rendered element of a "ship", generated when the game transitions from the placing state to the gameplay state -# +# Enum denoting the orientation (X is 1, Y is 0) enum Orientation {X = 1, Y = 0} -var size = 0 # Size of ship in units -var position # Coordinates of ship's center. Ship extends [-(size-1 >> 1), (size/2 >> 1)] +# Size of ship in board units +var size +# Coordinates of ship's center. Ship extends [-(size-1 >> 1), (size/2 >> 1)] +var position +# Variable storing whether the ship is sunk, for rendering purposes var sunk = false -var orientation = false +# Orientation of the ship (see enum Orientation) +var orientation = Orientation.Y -# index into ship sprite table +# Ship sprite metadata +# sprite: the texture atlas containing all ship parts +var atlas # = TODO: figure out how to use one sprite for multiple textures +# texture: the offset into the texture atlas of the first part of the ship. var texture = 0 # Called when the node enters the scene tree for the first time. func _ready(): pass # Replace with function body. - -# Called every frame. 'delta' is the elapsed time since the previous frame. -#func _process(delta): -# pass - +# member functions: +# getSize: get the size of the ship, in board-units (2 for 2-ship, 3 for 3-ship, ...) func getSize(): return size +# getPosition: get the position of the ship's center, in board units func getPosition(): return position +# getOrientation: get the orientation of the ship (see enum Orientation) func getOrientation(): return orientation - + +# getSunk: get whether the ship is sunk func getSunk(): return sunk +# setSunk: sink the ship func setSunk(): sunk = true -func _init(in_position = Vector2(0,0), in_size = 2, in_orientation = Orientation.X): +# _init: called on object initialization. Accepts args if called via .new(...) +# in_position: position of the ship, in board-coordinates; (0,0) by default +# in_size: size of the ship, in board-units; 2 by default +# in_orientation: orientation of the ship (see enum Orientation); vertical by default +func _init(in_position = Vector2(0,0), in_size = 2, in_orientation = Orientation.Y): position = in_position size = in_size orientation = in_orientation From 7d85195dd12552e065498269a050f06e135a29ec Mon Sep 17 00:00:00 2001 From: tommy-l-ngo Date: Thu, 11 Nov 2021 20:43:09 -0600 Subject: [PATCH 005/107] Added Clear board button and Confirm Placement button --- godot_ship/scenes/Gameplay.tscn | 44 +++++++++++++++++++++++++--- godot_ship/script/game/moveShip.gd | 47 +++++++++++++++++++++++++++++- 2 files changed, 86 insertions(+), 5 deletions(-) diff --git a/godot_ship/scenes/Gameplay.tscn b/godot_ship/scenes/Gameplay.tscn index b820cb7..5f7044a 100644 --- a/godot_ship/scenes/Gameplay.tscn +++ b/godot_ship/scenes/Gameplay.tscn @@ -43,10 +43,10 @@ anchor_left = 0.912 anchor_top = 0.932 anchor_right = 0.912 anchor_bottom = 0.932 -margin_left = 0.319946 -margin_top = 0.47998 -margin_right = 53.3199 -margin_bottom = 20.48 +margin_left = -3.68005 +margin_top = -4.52002 +margin_right = 49.3199 +margin_bottom = 15.48 __meta__ = { "_edit_use_anchors_": false } @@ -97,5 +97,41 @@ collision_layer = 3 contacts_reported = 1 contact_monitor = true +[node name="Confirm Placement" type="Button" parent="."] +margin_left = 409.0 +margin_top = 331.0 +margin_right = 543.0 +margin_bottom = 351.0 +text = "Confirm Placement" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Clear" type="Button" parent="."] +margin_left = 353.0 +margin_top = 331.0 +margin_right = 406.0 +margin_bottom = 351.0 +text = "Clear" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="AcceptDialog" type="AcceptDialog" parent="."] +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +margin_left = -179.0 +margin_top = -29.0 +margin_right = 179.0 +margin_bottom = 29.0 +dialog_text = "You can't confirm placement until all ships are placed" +__meta__ = { +"_edit_use_anchors_": false +} + [connection signal="pressed" from="VBoxContainer/Forfeit" to="." method="_on_Forfeit_pressed"] [connection signal="about_to_show" from="ConfirmationDialog" to="." method="_on_ConfirmationDialog_about_to_show"] +[connection signal="pressed" from="Confirm Placement" to="2Ship" method="_on_Confirm_Placement_pressed"] +[connection signal="pressed" from="Clear" to="2Ship" method="_on_Clear_pressed"] diff --git a/godot_ship/script/game/moveShip.gd b/godot_ship/script/game/moveShip.gd index 80ac020..be5d0c6 100644 --- a/godot_ship/script/game/moveShip.gd +++ b/godot_ship/script/game/moveShip.gd @@ -8,11 +8,20 @@ var originalPos # Position before moving the ship var snapOriginalPos = false # Gets the original position var vertical = true # Gets ship which is either vertical or horizonal var startingPos # Starting position of ships before being placed +var TwoShip_StartingPos +var ThreeShipA_StartingPos +var ThreeShipB_StartingPos +var FourShip_StartingPos +var FiveShip_StartingPos # Called when the node enters the scene tree for the first time. func _ready(): startingPos = position # Sets the position of ships when game is started to the startingPos variable - pass + TwoShip_StartingPos = get_parent().get_node("2Ship").position + ThreeShipA_StartingPos = get_parent().get_node("3ShipA").position + ThreeShipB_StartingPos = get_parent().get_node("3ShipB").position + FourShip_StartingPos = get_parent().get_node("4Ship").position + FiveShip_StartingPos = get_parent().get_node("5Ship").position var click_radius = 16 var orient = 0; @@ -217,3 +226,39 @@ func checkOriginalPos(): # Checks whether the position of the ship is the statin return true else: return false + +func _on_Clear_pressed(): + get_parent().get_node("2Ship").position = TwoShip_StartingPos + get_parent().get_node("2Ship").rotation = 0 + get_parent().get_node("3ShipA").position = ThreeShipA_StartingPos + get_parent().get_node("3ShipA").rotation = 0 + get_parent().get_node("3ShipB").position = ThreeShipB_StartingPos + get_parent().get_node("3ShipB").rotation = 0 + get_parent().get_node("4Ship").position = FourShip_StartingPos + get_parent().get_node("4Ship").rotation = 0 + get_parent().get_node("5Ship").position = FiveShip_StartingPos + get_parent().get_node("5Ship").rotation = 0 + vertical = true + +func check_all_ships_are_on_board(): + if !((get_parent().get_node("2Ship").position.x > 17.4 and get_parent().get_node("2Ship").position.x < 335.5) and (get_parent().get_node("2Ship").position.y > 20.2 and get_parent().get_node("2Ship").position.y < 335.5)): + return false + elif !((get_parent().get_node("3ShipA").position.x > 17.4 and get_parent().get_node("3ShipA").position.x < 335.5) and (get_parent().get_node("3ShipA").position.y > 20.2 and get_parent().get_node("3ShipA").position.y < 335.5)): + return false + elif !((get_parent().get_node("3ShipB").position.x > 17.4 and get_parent().get_node("3ShipB").position.x < 335.5) and (get_parent().get_node("3ShipB").position.y > 20.2 and get_parent().get_node("3ShipB").position.y < 335.5)): + return false + elif !((get_parent().get_node("4Ship").position.x > 17.4 and get_parent().get_node("4Ship").position.x < 335.5) and (get_parent().get_node("4Ship").position.y > 20.2 and get_parent().get_node("4Ship").position.y < 335.5)): + return false + elif !((get_parent().get_node("5Ship").position.x > 17.4 and get_parent().get_node("5Ship").position.x < 335.5) and (get_parent().get_node("5Ship").position.y > 20.2 and get_parent().get_node("5Ship").position.y < 335.5)): + return false + else: + return true + +func _on_Confirm_Placement_pressed(): + if check_all_ships_are_on_board(): + print("all ships are on board") # Remove this line + # Convert ships to board pieces + else: + print("You can't confirm placement until all ships are placed") + get_parent().get_node("AcceptDialog").popup() + #OS.alert("You can't confirm placement until all ships are placed", "Confirm Placement") From fae2631637ca5fcdf4930ae6abf331567f01a940 Mon Sep 17 00:00:00 2001 From: John Breaux Date: Thu, 11 Nov 2021 20:45:38 -0600 Subject: [PATCH 006/107] Fix up some stuff --- godot_ship/script/game/Gameplay/Board.gd | 24 +++++++++++++++-------- godot_ship/script/game/Gameplay/Player.gd | 2 +- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/godot_ship/script/game/Gameplay/Board.gd b/godot_ship/script/game/Gameplay/Board.gd index 6e6e3aa..d9a2f0b 100644 --- a/godot_ship/script/game/Gameplay/Board.gd +++ b/godot_ship/script/game/Gameplay/Board.gd @@ -8,10 +8,13 @@ var top_board # Opponent board var ships # list of Ships var ship_count # number of 'active' (un-sunk) ships +# a board is square. This is its side lengths +var board_len = 10 + # Called when the node enters the scene tree for the first time. func _ready(): ships = [] - shipCount = 0 + ship_count = 0 # TODO: What state? func getState(): @@ -26,21 +29,26 @@ func getBottomBoard(): pass func getShipCount(): - pass + return ship_count func _init(): # Initialize the bottom_board to a 10x10 array - for i in range(10): + for _row in range(board_len): bottom_board.append([]) - for _i in range(0, 10): - bottom_board[i].resize(10) + for column in bottom_board: + column.resize(10) # Initialize the top_board to a 10x10 array - for i in range(10): + for _row in range(board_len): top_board.append([]) - for _i in range(0, 10): - top_board[i].resize(10) + for column in top_board: + column.resize(board_len) # worldspace_to_boardspace: convert a Vector2 in world-space to board-space func worldspace_to_boardspace(coordinate:Vector2): # subtract 36 to get the position relative to (0,0) on the board, and integer divide by 32 return Vector2(int(coordinate.x - 36) >> 5, int(coordinate.y-36) >> 5) + +# Coordinates of ship's center. Ship extends [-(size-1 >> 1), (size/2 >> 1)] +func shiptoboard(ship:Ship): + for i in range (ship.) + pass \ No newline at end of file diff --git a/godot_ship/script/game/Gameplay/Player.gd b/godot_ship/script/game/Gameplay/Player.gd index bb122bd..ca89ece 100644 --- a/godot_ship/script/game/Gameplay/Player.gd +++ b/godot_ship/script/game/Gameplay/Player.gd @@ -6,7 +6,7 @@ var Board = "res://script/game/Gameplay/Board.gd" # Player ID of this player var pid # board (an instance of the Board class) -var board +onready var board = Board.new() # Called when the node enters the scene tree for the first time. func _ready(): From 1403f7eccb07dbd135d64c4895fce07a94d4a0ee Mon Sep 17 00:00:00 2001 From: John Breaux Date: Thu, 11 Nov 2021 20:55:19 -0600 Subject: [PATCH 007/107] Pass --- godot_ship/script/game/Gameplay/Board.gd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/godot_ship/script/game/Gameplay/Board.gd b/godot_ship/script/game/Gameplay/Board.gd index d9a2f0b..de71f89 100644 --- a/godot_ship/script/game/Gameplay/Board.gd +++ b/godot_ship/script/game/Gameplay/Board.gd @@ -51,4 +51,4 @@ func worldspace_to_boardspace(coordinate:Vector2): # Coordinates of ship's center. Ship extends [-(size-1 >> 1), (size/2 >> 1)] func shiptoboard(ship:Ship): for i in range (ship.) - pass \ No newline at end of file + pass From 304389138f4fb1a128ed67a6eeb3b14fcbd5111b Mon Sep 17 00:00:00 2001 From: John Breaux Date: Fri, 12 Nov 2021 03:01:23 -0600 Subject: [PATCH 008/107] I accidentally the buttons + Fix some hitbox mistakes. --- godot_ship/scenes/Gameplay.tscn | 4 +-- godot_ship/scenes/ships/2Ship.tscn | 2 ++ godot_ship/scenes/ships/3ShipB.tscn | 2 ++ godot_ship/scenes/ships/3shipA.tscn | 2 ++ godot_ship/scenes/ships/4Ship.tscn | 6 ++-- godot_ship/scenes/ships/5Ship.tscn | 3 +- godot_ship/script/game/Gameplay.gd | 19 ++++++++++ godot_ship/script/game/moveShip.gd | 56 +++++++++++++++-------------- 8 files changed, 62 insertions(+), 32 deletions(-) diff --git a/godot_ship/scenes/Gameplay.tscn b/godot_ship/scenes/Gameplay.tscn index 5f7044a..3518ee1 100644 --- a/godot_ship/scenes/Gameplay.tscn +++ b/godot_ship/scenes/Gameplay.tscn @@ -133,5 +133,5 @@ __meta__ = { [connection signal="pressed" from="VBoxContainer/Forfeit" to="." method="_on_Forfeit_pressed"] [connection signal="about_to_show" from="ConfirmationDialog" to="." method="_on_ConfirmationDialog_about_to_show"] -[connection signal="pressed" from="Confirm Placement" to="2Ship" method="_on_Confirm_Placement_pressed"] -[connection signal="pressed" from="Clear" to="2Ship" method="_on_Clear_pressed"] +[connection signal="pressed" from="Confirm Placement" to="." method="_on_Confirm_Placement_pressed"] +[connection signal="pressed" from="Clear" to="." method="_on_Clear_pressed"] diff --git a/godot_ship/scenes/ships/2Ship.tscn b/godot_ship/scenes/ships/2Ship.tscn index 9b64cc0..157b309 100644 --- a/godot_ship/scenes/ships/2Ship.tscn +++ b/godot_ship/scenes/ships/2Ship.tscn @@ -18,10 +18,12 @@ texture = ExtResource( 2 ) [node name="CollisionShape2D" type="CollisionShape2D" parent="."] position = Vector2( 0.125, 16 ) +scale = Vector2( 0.9, 0.95 ) shape = SubResource( 1 ) [node name="Area2D" type="Area2D" parent="."] [node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] position = Vector2( 0.125, 16 ) +scale = Vector2( 0.9, 0.95 ) shape = SubResource( 1 ) diff --git a/godot_ship/scenes/ships/3ShipB.tscn b/godot_ship/scenes/ships/3ShipB.tscn index bcbc759..c00df62 100644 --- a/godot_ship/scenes/ships/3ShipB.tscn +++ b/godot_ship/scenes/ships/3ShipB.tscn @@ -16,9 +16,11 @@ script = ExtResource( 1 ) texture = ExtResource( 2 ) [node name="CollisionShape2D" type="CollisionShape2D" parent="."] +scale = Vector2( 0.9, 0.966 ) shape = SubResource( 1 ) [node name="Area2D" type="Area2D" parent="."] [node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] +scale = Vector2( 0.9, 0.966 ) shape = SubResource( 1 ) diff --git a/godot_ship/scenes/ships/3shipA.tscn b/godot_ship/scenes/ships/3shipA.tscn index 6e5da1b..8a8bea3 100644 --- a/godot_ship/scenes/ships/3shipA.tscn +++ b/godot_ship/scenes/ships/3shipA.tscn @@ -16,9 +16,11 @@ script = ExtResource( 1 ) texture = ExtResource( 2 ) [node name="CollisionShape2D" type="CollisionShape2D" parent="."] +scale = Vector2( 0.9, 0.966 ) shape = SubResource( 1 ) [node name="Area2D" type="Area2D" parent="."] [node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] +scale = Vector2( 0.9, 0.966 ) shape = SubResource( 1 ) diff --git a/godot_ship/scenes/ships/4Ship.tscn b/godot_ship/scenes/ships/4Ship.tscn index 18f3a4d..cc5bf9a 100644 --- a/godot_ship/scenes/ships/4Ship.tscn +++ b/godot_ship/scenes/ships/4Ship.tscn @@ -17,11 +17,13 @@ position = Vector2( 0, 16 ) texture = ExtResource( 2 ) [node name="CollisionShape2D" type="CollisionShape2D" parent="."] -position = Vector2( 1, 15 ) +position = Vector2( 0, 16 ) +scale = Vector2( 0.9, 0.975 ) shape = SubResource( 1 ) [node name="Area2D" type="Area2D" parent="."] [node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] -position = Vector2( 1, 15 ) +position = Vector2( 0, 16 ) +scale = Vector2( 0.9, 0.975 ) shape = SubResource( 1 ) diff --git a/godot_ship/scenes/ships/5Ship.tscn b/godot_ship/scenes/ships/5Ship.tscn index a599393..ff7659a 100644 --- a/godot_ship/scenes/ships/5Ship.tscn +++ b/godot_ship/scenes/ships/5Ship.tscn @@ -15,10 +15,11 @@ script = ExtResource( 1 ) texture = ExtResource( 2 ) [node name="CollisionShape2D" type="CollisionShape2D" parent="."] -visible = false +scale = Vector2( 0.9, 0.98 ) shape = SubResource( 1 ) [node name="Area2D" type="Area2D" parent="."] [node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] +scale = Vector2( 0.9, 0.98 ) shape = SubResource( 1 ) diff --git a/godot_ship/script/game/Gameplay.gd b/godot_ship/script/game/Gameplay.gd index 8b00fae..0f19861 100644 --- a/godot_ship/script/game/Gameplay.gd +++ b/godot_ship/script/game/Gameplay.gd @@ -1,5 +1,7 @@ extends Control +onready var Ships = ["2Ship", "3ShipA", "3ShipB", "4Ship", "5Ship"] + # Called when the node enters the scene tree for the first time. func _ready(): @@ -11,3 +13,20 @@ func _on_Forfeit_pressed(): queue_free(); MessageBus.emit_signal("change_scene", "Title") + + +func _on_Confirm_Placement_pressed(): + var valid = true + for ship in Ships: + # validate_placement returns the x-axis distance from the board + # if this is more than zero, the ship is invalid + if get_node(ship).validate_placement(): + valid = false + print ("Placement: ", valid) + return valid # Replace with function body. + + +func _on_Clear_pressed(): + for ship in Ships: + get_node(ship).clear() + pass # Replace with function body. diff --git a/godot_ship/script/game/moveShip.gd b/godot_ship/script/game/moveShip.gd index 8efebd5..3bac767 100644 --- a/godot_ship/script/game/moveShip.gd +++ b/godot_ship/script/game/moveShip.gd @@ -4,14 +4,15 @@ extends RigidBody2D var held = false var originalPos # Position before moving the ship var snapOriginalPos = false # Gets the original position +var mousePos var vertical = true # Gets ship which is either vertical or horizonal var startingPos # Starting position of ships before being placed -var mousePos # Ships are all named starting with their length, # So we cast from string to int, on the ship name, and get the length onready var ship_length = int(name) +# This is set when we're colliding with something var collision = false # Called when the node enters the scene tree for the first time. @@ -37,16 +38,13 @@ func _input(event): pickup() if held and not event.pressed: - drop() # Convert the center of this piece to board-space var bs_position = world_to_board_space(position) # Check whether the piece is within half a board-space of the grid (-0.5, 9.5) if not (bs_position.x > -0.5 and bs_position.x < 9.5 and bs_position.y > -0.5 and bs_position.y < 9.5): -# if not (position.x > 17.4 and position.x < 335.5) and (position.y > 20.2 and position.y < 335.5): if originalPos != null: collision = true - rotation = 0 vertical = true if event is InputEventMouseMotion and held: @@ -57,19 +55,12 @@ func _input(event): mousePos = event.position; if event.is_action_pressed("ui_rotate"): - if held: - return - if checkOriginalPos(): - return - else: - AudioBus.emit_signal("button_clicked") - if originalPos == null: - if position == originalPos: - return - elif(event.position - position).length() < click_radius: + if not held and not checkOriginalPos(): + if(event.position - position).length() < click_radius: + #Play a sound + AudioBus.emit_signal("button_clicked") # Rotation has been moved to _physics_process, # as per recommendation of godot_engine.org - #rotation = (-PI/2) vertical = not vertical @@ -82,6 +73,9 @@ var prev_position = Vector2(0,0) # The number of frames after an object is released to check for physics updates var released = 0 +func _integrate_forces(state): + if state.get_contact_count(): + collision = true # _physics_process: called in place of the physics processor # Checks collision and updates the position and rotation of the object @@ -94,16 +88,12 @@ func _physics_process(_delta): if held and mousePos and mousePos != position: position = mousePos mousePos = null - + # Snap it to the grid if not held (and previously moved) if not held and moved: position = (position - offset).snapped(Vector2(32, 32)) + offset prev_position = position - # Check collisions after released, reset if colliding - if collision and released: - position = startingPos - # If it's been moved or rotated, snap it to the board if released or rotated: # check whether the ends of the piece are within the board @@ -116,6 +106,11 @@ func _physics_process(_delta): position += 32 * Vector2(linear_move, 0) pass + # Check collisions after released, reset if colliding + if collision and released: + position = startingPos + rotation = 0 + vertical = true # Rotate if the piece needs to be rotated if rotated: prev_vertical = vertical @@ -153,29 +148,36 @@ func ship_unstacked(_body): # Returns how many squares to move the ship along its orientation axis (positive or negative) func check_extents(center, orientation, length): center = world_to_board_space(center) # Convert to board-space (0-10) - print("Center: ", center) # Calculate the position of the front of the ship # Orientation is true when the ship is vertical var bow = vectorget(center, orientation) - floor((length - 1) / 2) - print("Bow: ", bow) # if out of bounds, return how much to move the ship by if bow < 0: - print("return: ", -bow) return -bow # Calculate the position of the rear of the ship var stern = vectorget(center, orientation) + floor(length / 2) - print("Stern: ", stern) # If out of bounds, return how much to move the ship by if stern >= 10: - print("return: ", -(stern - 9)) return -(stern - 9) - print("return: ", 0) return 0 +func validate_placement(): + # Checks whether the ship's center is on the board. + # As long as the ship was moved according to the rules defined in the + # _physics_process function, this should be necessary and sufficient + # to say the ship is on the board + return check_extents(position, false, 1) + +func clear(): + # ships return home on collision + # simulate a collision + collision = true + released = 1 + # Convert the world-space coordinates to positions on the board func world_to_board_space(vector): # Do math - var res = (vector - offset) / 32 # Subtract the distance between the screen corner and square (0,0) + var res = (vector - offset) / 32 # Basically Fahrenheit/Celcius conversion, but in 2D return res # Inverse of the above function. From 9a3061c16e89dcbc0e36accb0dad870286200fcf Mon Sep 17 00:00:00 2001 From: John Breaux Date: Fri, 12 Nov 2021 03:33:31 -0600 Subject: [PATCH 009/107] Improve hitbox leniency, and don't allow ships to rotate into each other. --- godot_ship/scenes/ships/2Ship.tscn | 4 ++-- godot_ship/scenes/ships/3ShipB.tscn | 2 +- godot_ship/scenes/ships/3shipA.tscn | 4 ++-- godot_ship/scenes/ships/4Ship.tscn | 4 ++-- godot_ship/scenes/ships/5Ship.tscn | 4 ++-- godot_ship/script/game/moveShip.gd | 24 ++++++++++++++---------- 6 files changed, 23 insertions(+), 19 deletions(-) diff --git a/godot_ship/scenes/ships/2Ship.tscn b/godot_ship/scenes/ships/2Ship.tscn index 157b309..fae014f 100644 --- a/godot_ship/scenes/ships/2Ship.tscn +++ b/godot_ship/scenes/ships/2Ship.tscn @@ -18,12 +18,12 @@ texture = ExtResource( 2 ) [node name="CollisionShape2D" type="CollisionShape2D" parent="."] position = Vector2( 0.125, 16 ) -scale = Vector2( 0.9, 0.95 ) +scale = Vector2( 0.5, 0.75 ) shape = SubResource( 1 ) [node name="Area2D" type="Area2D" parent="."] [node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] position = Vector2( 0.125, 16 ) -scale = Vector2( 0.9, 0.95 ) +scale = Vector2( 0.5, 0.75 ) shape = SubResource( 1 ) diff --git a/godot_ship/scenes/ships/3ShipB.tscn b/godot_ship/scenes/ships/3ShipB.tscn index c00df62..42ddd21 100644 --- a/godot_ship/scenes/ships/3ShipB.tscn +++ b/godot_ship/scenes/ships/3ShipB.tscn @@ -22,5 +22,5 @@ shape = SubResource( 1 ) [node name="Area2D" type="Area2D" parent="."] [node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] -scale = Vector2( 0.9, 0.966 ) +scale = Vector2( 0.5, 0.833 ) shape = SubResource( 1 ) diff --git a/godot_ship/scenes/ships/3shipA.tscn b/godot_ship/scenes/ships/3shipA.tscn index 8a8bea3..ea692db 100644 --- a/godot_ship/scenes/ships/3shipA.tscn +++ b/godot_ship/scenes/ships/3shipA.tscn @@ -16,11 +16,11 @@ script = ExtResource( 1 ) texture = ExtResource( 2 ) [node name="CollisionShape2D" type="CollisionShape2D" parent="."] -scale = Vector2( 0.9, 0.966 ) +scale = Vector2( 0.5, 0.875 ) shape = SubResource( 1 ) [node name="Area2D" type="Area2D" parent="."] [node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] -scale = Vector2( 0.9, 0.966 ) +scale = Vector2( 0.5, 0.833 ) shape = SubResource( 1 ) diff --git a/godot_ship/scenes/ships/4Ship.tscn b/godot_ship/scenes/ships/4Ship.tscn index cc5bf9a..43934e1 100644 --- a/godot_ship/scenes/ships/4Ship.tscn +++ b/godot_ship/scenes/ships/4Ship.tscn @@ -18,12 +18,12 @@ texture = ExtResource( 2 ) [node name="CollisionShape2D" type="CollisionShape2D" parent="."] position = Vector2( 0, 16 ) -scale = Vector2( 0.9, 0.975 ) +scale = Vector2( 0.5, 0.875 ) shape = SubResource( 1 ) [node name="Area2D" type="Area2D" parent="."] [node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] position = Vector2( 0, 16 ) -scale = Vector2( 0.9, 0.975 ) +scale = Vector2( 0.5, 0.875 ) shape = SubResource( 1 ) diff --git a/godot_ship/scenes/ships/5Ship.tscn b/godot_ship/scenes/ships/5Ship.tscn index ff7659a..2034d47 100644 --- a/godot_ship/scenes/ships/5Ship.tscn +++ b/godot_ship/scenes/ships/5Ship.tscn @@ -15,11 +15,11 @@ script = ExtResource( 1 ) texture = ExtResource( 2 ) [node name="CollisionShape2D" type="CollisionShape2D" parent="."] -scale = Vector2( 0.9, 0.98 ) +scale = Vector2( 0.5, 0.9 ) shape = SubResource( 1 ) [node name="Area2D" type="Area2D" parent="."] [node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] -scale = Vector2( 0.9, 0.98 ) +scale = Vector2( 0.5, 0.9 ) shape = SubResource( 1 ) diff --git a/godot_ship/script/game/moveShip.gd b/godot_ship/script/game/moveShip.gd index 3bac767..6c41215 100644 --- a/godot_ship/script/game/moveShip.gd +++ b/godot_ship/script/game/moveShip.gd @@ -4,7 +4,7 @@ extends RigidBody2D var held = false var originalPos # Position before moving the ship var snapOriginalPos = false # Gets the original position -var mousePos +var mousePos # Stores the last known mouse position so the physics engine can use it var vertical = true # Gets ship which is either vertical or horizonal var startingPos # Starting position of ships before being placed @@ -18,6 +18,8 @@ var collision = false # Called when the node enters the scene tree for the first time. func _ready(): mode = MODE_KINEMATIC + contacts_reported = 64 + set_use_custom_integrator(true) # Snap the ships to the grid, so the engine won't get mad when they're moved away from the starting position every frame position = (position - offset).snapped(Vector2(32, 32)) + offset startingPos = position @@ -62,7 +64,9 @@ func _input(event): # Rotation has been moved to _physics_process, # as per recommendation of godot_engine.org vertical = not vertical - + # It takes 3 physics ticks for the rotation to update the hitboxes + # Determined imperically through testing, may work differently on different machines(?) + released = 3 # Offset from the corner of the screen to the corner of the board const offset = Vector2(36, 36) @@ -73,9 +77,6 @@ var prev_position = Vector2(0,0) # The number of frames after an object is released to check for physics updates var released = 0 -func _integrate_forces(state): - if state.get_contact_count(): - collision = true # _physics_process: called in place of the physics processor # Checks collision and updates the position and rotation of the object @@ -83,17 +84,17 @@ func _physics_process(_delta): # calculate whether the piece has been rotated or moved var rotated = prev_vertical != vertical var moved = prev_position != position - + # If the piece is held, move it to the mouse: if held and mousePos and mousePos != position: position = mousePos mousePos = null - + # Snap it to the grid if not held (and previously moved) if not held and moved: position = (position - offset).snapped(Vector2(32, 32)) + offset prev_position = position - + # If it's been moved or rotated, snap it to the board if released or rotated: # check whether the ends of the piece are within the board @@ -105,17 +106,18 @@ func _physics_process(_delta): else: position += 32 * Vector2(linear_move, 0) pass - + # Check collisions after released, reset if colliding if collision and released: position = startingPos rotation = 0 vertical = true + # Rotate if the piece needs to be rotated if rotated: prev_vertical = vertical rotation = -PI/2 * int(not vertical) # int(true) == 1, int(false) == 0 - + # Count down the number of physics timesteps left until the piece can stop processing if released > 0: released = released - 1 @@ -139,9 +141,11 @@ func checkOriginalPos(): # Called when *this* ship collides with another ship func ship_stacked(_body): + print("stacked") collision = true # Called when *this* ship stops colliding with another ship func ship_unstacked(_body): + print("unstacked") collision = false # Calculate the extents (front to back) of the ship and check whether they're on the board From a47cb991f20d133323f49b242128a9a93e1f3342 Mon Sep 17 00:00:00 2001 From: tommy-l-ngo Date: Fri, 12 Nov 2021 03:44:52 -0600 Subject: [PATCH 010/107] Fixed Dialog Box that pops up for Confirm Placement --- godot_ship/scenes/Gameplay.tscn | 1 + godot_ship/script/game/Gameplay.gd | 2 ++ 2 files changed, 3 insertions(+) diff --git a/godot_ship/scenes/Gameplay.tscn b/godot_ship/scenes/Gameplay.tscn index 3518ee1..7489604 100644 --- a/godot_ship/scenes/Gameplay.tscn +++ b/godot_ship/scenes/Gameplay.tscn @@ -118,6 +118,7 @@ __meta__ = { } [node name="AcceptDialog" type="AcceptDialog" parent="."] +visible = true anchor_left = 0.5 anchor_top = 0.5 anchor_right = 0.5 diff --git a/godot_ship/script/game/Gameplay.gd b/godot_ship/script/game/Gameplay.gd index 0f19861..2f8f64b 100644 --- a/godot_ship/script/game/Gameplay.gd +++ b/godot_ship/script/game/Gameplay.gd @@ -23,6 +23,8 @@ func _on_Confirm_Placement_pressed(): if get_node(ship).validate_placement(): valid = false print ("Placement: ", valid) + if valid == false: + get_node("AcceptDialog").popup() return valid # Replace with function body. From 6e5471cc666f5107dc91a9b66772cb2fe71631bc Mon Sep 17 00:00:00 2001 From: tommy-l-ngo Date: Fri, 12 Nov 2021 03:45:34 -0600 Subject: [PATCH 011/107] Update Gameplay.tscn --- godot_ship/scenes/Gameplay.tscn | 1 - 1 file changed, 1 deletion(-) diff --git a/godot_ship/scenes/Gameplay.tscn b/godot_ship/scenes/Gameplay.tscn index 7489604..3518ee1 100644 --- a/godot_ship/scenes/Gameplay.tscn +++ b/godot_ship/scenes/Gameplay.tscn @@ -118,7 +118,6 @@ __meta__ = { } [node name="AcceptDialog" type="AcceptDialog" parent="."] -visible = true anchor_left = 0.5 anchor_top = 0.5 anchor_right = 0.5 From c87a1d031c9c9fcbc7c03f12061e2ce05ff05238 Mon Sep 17 00:00:00 2001 From: hpham474 Date: Fri, 12 Nov 2021 07:08:01 -0600 Subject: [PATCH 012/107] Partial fire functionality added. Currently hides all ship placement UI and makes visible all fire functionality. The crosshair currently does not snap to a grid. The ships are saved in an area of location objects holding the length, orientation, and coordinates of the ship. --- ...r.png-ed59a214d85db7c21233257c8daddbef.md5 | 3 ++ ....png-ed59a214d85db7c21233257c8daddbef.stex | Bin 0 -> 393 bytes godot_ship/assets/game/RedCrosshair.png | Bin 0 -> 237 bytes .../assets/game/RedCrosshair.png.import | 34 +++++++++++++ godot_ship/scenes/Gameplay.tscn | 21 +++++++- godot_ship/script/game/Gameplay.gd | 47 +++++++++++++++++- godot_ship/script/game/Gameplay/Crosshair.gd | 29 +++++++++++ 7 files changed, 132 insertions(+), 2 deletions(-) create mode 100644 godot_ship/.import/RedCrosshair.png-ed59a214d85db7c21233257c8daddbef.md5 create mode 100644 godot_ship/.import/RedCrosshair.png-ed59a214d85db7c21233257c8daddbef.stex create mode 100644 godot_ship/assets/game/RedCrosshair.png create mode 100644 godot_ship/assets/game/RedCrosshair.png.import create mode 100644 godot_ship/script/game/Gameplay/Crosshair.gd diff --git a/godot_ship/.import/RedCrosshair.png-ed59a214d85db7c21233257c8daddbef.md5 b/godot_ship/.import/RedCrosshair.png-ed59a214d85db7c21233257c8daddbef.md5 new file mode 100644 index 0000000..4daad2d --- /dev/null +++ b/godot_ship/.import/RedCrosshair.png-ed59a214d85db7c21233257c8daddbef.md5 @@ -0,0 +1,3 @@ +source_md5="f6d6cf59e576f46ace6228c7c6fbcd43" +dest_md5="5fbfd5548d2fd8ed92f2a987ce11d3c4" + diff --git a/godot_ship/.import/RedCrosshair.png-ed59a214d85db7c21233257c8daddbef.stex b/godot_ship/.import/RedCrosshair.png-ed59a214d85db7c21233257c8daddbef.stex new file mode 100644 index 0000000000000000000000000000000000000000..217971f4190e9467fe1621a4adb410e67fbf849d GIT binary patch literal 393 zcmZ>F2@X+UU|;}Y79eI|5MXBnlDR-4z|UQw6G-rKNpS&%cs)H_f`GIF2y?Ij$>OT2 zFF=a1ILO_JVcj{Imq50%r;B4qMC;M;XrX2U4wb&`AOE?(tbF7DR^Z9T?pyErg%vg^ zPMn~~7&kHL*uS5BrwX{AEbmN6nC0M-vQuCWt8}tU7fbcR_DzK;NdgB;A0(!f@d(~@ zNy%mFThQt7JXvJ*`Z+OI&$myQ%X8qiRL23?gNj0tZ0|VYetqHy**`P=`b=RVfs^6u z{VkOIYonO1dVRThf$yut*M~wDb5c)y`EuutK-7ZYJ~!9(8BTQyD!XJTS;4aU%LF*J$dUkH;f$p@r z?+4g^1@vNLy`%`YK0`1Zh?WqVx6P4g nZ=7m80#W~gGMJ^Np98o6_PWf#lf#dO00000NkvXXu0mjf$8}=) literal 0 HcmV?d00001 diff --git a/godot_ship/assets/game/RedCrosshair.png.import b/godot_ship/assets/game/RedCrosshair.png.import new file mode 100644 index 0000000..dac2332 --- /dev/null +++ b/godot_ship/assets/game/RedCrosshair.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/RedCrosshair.png-ed59a214d85db7c21233257c8daddbef.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/game/RedCrosshair.png" +dest_files=[ "res://.import/RedCrosshair.png-ed59a214d85db7c21233257c8daddbef.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 diff --git a/godot_ship/scenes/Gameplay.tscn b/godot_ship/scenes/Gameplay.tscn index 3518ee1..e4cdb33 100644 --- a/godot_ship/scenes/Gameplay.tscn +++ b/godot_ship/scenes/Gameplay.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=9 format=2] +[gd_scene load_steps=11 format=2] [ext_resource path="res://assets/game/board_blue.png" type="Texture" id=1] [ext_resource path="res://script/title screen/Title-Screen-Background.png" type="Texture" id=2] @@ -8,6 +8,8 @@ [ext_resource path="res://scenes/ships/3ShipB.tscn" type="PackedScene" id=6] [ext_resource path="res://scenes/ships/3shipA.tscn" type="PackedScene" id=7] [ext_resource path="res://scenes/ships/4Ship.tscn" type="PackedScene" id=8] +[ext_resource path="res://assets/game/RedCrosshair.png" type="Texture" id=9] +[ext_resource path="res://script/game/Gameplay/Crosshair.gd" type="Script" id=10] [node name="Game" type="Control"] anchor_right = 1.0 @@ -38,6 +40,11 @@ __meta__ = { "_edit_lock_": true } +[node name="Crosshair" type="Sprite" parent="."] +visible = false +texture = ExtResource( 9 ) +script = ExtResource( 10 ) + [node name="VBoxContainer" type="VBoxContainer" parent="."] anchor_left = 0.912 anchor_top = 0.932 @@ -131,7 +138,19 @@ __meta__ = { "_edit_use_anchors_": false } +[node name="Fire" type="Button" parent="."] +visible = false +margin_left = 443.545 +margin_top = 264.473 +margin_right = 528.545 +margin_bottom = 318.473 +text = "FIRE" +__meta__ = { +"_edit_use_anchors_": false +} + [connection signal="pressed" from="VBoxContainer/Forfeit" to="." method="_on_Forfeit_pressed"] [connection signal="about_to_show" from="ConfirmationDialog" to="." method="_on_ConfirmationDialog_about_to_show"] [connection signal="pressed" from="Confirm Placement" to="." method="_on_Confirm_Placement_pressed"] [connection signal="pressed" from="Clear" to="." method="_on_Clear_pressed"] +[connection signal="pressed" from="Fire" to="." method="_on_Fire_pressed"] diff --git a/godot_ship/script/game/Gameplay.gd b/godot_ship/script/game/Gameplay.gd index 2f8f64b..5f404c3 100644 --- a/godot_ship/script/game/Gameplay.gd +++ b/godot_ship/script/game/Gameplay.gd @@ -1,7 +1,12 @@ extends Control onready var Ships = ["2Ship", "3ShipA", "3ShipB", "4Ship", "5Ship"] +onready var Crosshair +class Location: + var Coor: Vector2 + var Length: int + var Orientation: bool #vertical is true, (Trueship = vertical) (Falseship = horizontal) # Called when the node enters the scene tree for the first time. func _ready(): @@ -25,10 +30,50 @@ func _on_Confirm_Placement_pressed(): print ("Placement: ", valid) if valid == false: get_node("AcceptDialog").popup() + else: + #Saves the location of ships and length of ship into an array + var shipLocation = [] + for ship in Ships: + var location = Location.new() + location.Coor = get_node(ship).position + location.Length = get_node(ship).get("ship_length") + location.Orientation = get_node(ship).get("vertical") + shipLocation.append(location) + + #print out the array for testing + for x in shipLocation: + print("Ship Length: ", x.Length, ", Ship Orientation: ", x.Orientation, "Ship Coor: ", x.Coor) + + #Hides the ship placement UI + var confirmButton = get_node("Confirm Placement") + var clearButton = get_node("Clear") + var ship1 = get_node("2Ship") + var ship2 = get_node("3ShipA") + var ship3 = get_node("3ShipB") + var ship4 = get_node("4Ship") + var ship5 = get_node("5Ship") + confirmButton.visible = false + clearButton.visible = false + ship1.visible = false + ship2.visible = false + ship3.visible = false + ship4.visible = false + ship5.visible = false + + #Changes to firing mode, makes the fireing mode UI visible (The location of this can be changed later. This position is for testing) + var crosshair = get_node("Crosshair") + var fireButton = get_node("Fire") + crosshair.visible = true + fireButton.visible = true return valid # Replace with function body. - func _on_Clear_pressed(): for ship in Ships: get_node(ship).clear() pass # Replace with function body. + + +func _on_Fire_pressed(): + var crosshair = get_node("Crosshair") + print("Fire at position: ", crosshair.position) + pass # Replace with function body. diff --git a/godot_ship/script/game/Gameplay/Crosshair.gd b/godot_ship/script/game/Gameplay/Crosshair.gd new file mode 100644 index 0000000..3790674 --- /dev/null +++ b/godot_ship/script/game/Gameplay/Crosshair.gd @@ -0,0 +1,29 @@ +extends Sprite + + +# Declare member variables here. Examples: +# var a = 2 +# var b = "text" + +var snapped = false #when snapped if true crosshair stops following mouse + +# Called when the node enters the scene tree for the first time. +func _ready(): + pass # Replace with function body. + +func _physics_process(delta): + if snapped == false: + position += (get_global_mouse_position() - position)/10 + +func _input(event): + #Check if left click is being clicked and the sprite is visible (i.e only checks for inputs after ship positions are confirmed) + if event is InputEventMouseButton and event.button_index == BUTTON_LEFT and visible == true: + #Locks the position of the crosshair with left click + snapped = true + if event is InputEventMouseButton and event.button_index == BUTTON_RIGHT and visible == true: + #Unlocks the position of the crosshair with right click + snapped = false + +# Called every frame. 'delta' is the elapsed time since the previous frame. +#func _process(delta): +# pass From 421c2af83cebc0a73282db73f99cd60965cf19fd Mon Sep 17 00:00:00 2001 From: hpham474 Date: Fri, 12 Nov 2021 18:07:37 -0600 Subject: [PATCH 013/107] Crosshair now snaps into place --- godot_ship/scenes/Gameplay.tscn | 29 +++++++++------ godot_ship/script/game/Gameplay.gd | 16 +++++++-- godot_ship/script/game/Gameplay/Crosshair.gd | 38 +++++++++++++++++--- 3 files changed, 66 insertions(+), 17 deletions(-) diff --git a/godot_ship/scenes/Gameplay.tscn b/godot_ship/scenes/Gameplay.tscn index e4cdb33..4ff061b 100644 --- a/godot_ship/scenes/Gameplay.tscn +++ b/godot_ship/scenes/Gameplay.tscn @@ -124,7 +124,18 @@ __meta__ = { "_edit_use_anchors_": false } -[node name="AcceptDialog" type="AcceptDialog" parent="."] +[node name="Fire" type="Button" parent="."] +visible = false +margin_left = 443.545 +margin_top = 264.473 +margin_right = 528.545 +margin_bottom = 318.473 +text = "FIRE" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="PlaceShipDialog" type="AcceptDialog" parent="."] anchor_left = 0.5 anchor_top = 0.5 anchor_right = 0.5 @@ -138,19 +149,15 @@ __meta__ = { "_edit_use_anchors_": false } -[node name="Fire" type="Button" parent="."] -visible = false -margin_left = 443.545 -margin_top = 264.473 -margin_right = 528.545 -margin_bottom = 318.473 -text = "FIRE" -__meta__ = { -"_edit_use_anchors_": false -} +[node name="FireDialog" type="AcceptDialog" parent="."] +pause_mode = 2 +margin_right = 83.0 +margin_bottom = 58.0 +dialog_text = "You can't fire outside the board" [connection signal="pressed" from="VBoxContainer/Forfeit" to="." method="_on_Forfeit_pressed"] [connection signal="about_to_show" from="ConfirmationDialog" to="." method="_on_ConfirmationDialog_about_to_show"] [connection signal="pressed" from="Confirm Placement" to="." method="_on_Confirm_Placement_pressed"] [connection signal="pressed" from="Clear" to="." method="_on_Clear_pressed"] [connection signal="pressed" from="Fire" to="." method="_on_Fire_pressed"] +[connection signal="confirmed" from="FireDialog" to="." method="_on_FireDialog_confirmed"] diff --git a/godot_ship/script/game/Gameplay.gd b/godot_ship/script/game/Gameplay.gd index 5f404c3..6d01c94 100644 --- a/godot_ship/script/game/Gameplay.gd +++ b/godot_ship/script/game/Gameplay.gd @@ -29,7 +29,7 @@ func _on_Confirm_Placement_pressed(): valid = false print ("Placement: ", valid) if valid == false: - get_node("AcceptDialog").popup() + get_node("PlaceShipDialog").popup() else: #Saves the location of ships and length of ship into an array var shipLocation = [] @@ -75,5 +75,17 @@ func _on_Clear_pressed(): func _on_Fire_pressed(): var crosshair = get_node("Crosshair") - print("Fire at position: ", crosshair.position) + # hides crosshair + crosshair.visible = false + if crosshair.validate_position(crosshair.position) == true: + # fires at position + print("Fire at position: ", crosshair.position) + else: + #if invalid position popup appears + var dialog = get_node("FireDialog") + dialog.popup_centered() + pass # Replace with function body. + +func _on_FireDialog_confirmed(): + get_node("Crosshair").visible = true pass # Replace with function body. diff --git a/godot_ship/script/game/Gameplay/Crosshair.gd b/godot_ship/script/game/Gameplay/Crosshair.gd index 3790674..274cca8 100644 --- a/godot_ship/script/game/Gameplay/Crosshair.gd +++ b/godot_ship/script/game/Gameplay/Crosshair.gd @@ -16,14 +16,44 @@ func _physics_process(delta): position += (get_global_mouse_position() - position)/10 func _input(event): - #Check if left click is being clicked and the sprite is visible (i.e only checks for inputs after ship positions are confirmed) + # Check if left click is being clicked and the sprite is visible (i.e only checks for inputs after ship positions are confirmed) if event is InputEventMouseButton and event.button_index == BUTTON_LEFT and visible == true: - #Locks the position of the crosshair with left click - snapped = true + # Locks the position of the crosshair with left click + if validate_position(position) == true: + # rounds the board position to the nearest integer + snapped = true + position.x = int(round(world_to_board_space(position).x)) + position.y = int(round(world_to_board_space(position).y)) + position = board_to_world_space(position) + # Check if left click is being clicked and the sprite is visible (i.e only checks for inputs after ship positions are confirmed) if event is InputEventMouseButton and event.button_index == BUTTON_RIGHT and visible == true: - #Unlocks the position of the crosshair with right click + # Unlocks the position of the crosshair with right click snapped = false +func validate_position(vector): + # rounds the board position to the nearest integer + var boardx = int(round(world_to_board_space(vector).x)) + var boardy = int(round(world_to_board_space(vector).y)) + # Checks if the board position is within bounds of the board + if boardx < 11 and boardx > 0 and boardy < 11 and boardy > 0: + # changes the position of the crosshair + return true + else: + # unlocks the crosshair if not within bounds + return false + +# Convert the world-space coordinates to positions on the board +func world_to_board_space(vector): + # Do math + var res = (vector - offset) / 32 # Basically Fahrenheit/Celcius conversion, but in 2D + return res + +# Inverse of the above function. +func board_to_world_space(vector): + # Do math + var res = (vector * 32) + offset #Invert the above function + return res #Truncate decimals + # Called every frame. 'delta' is the elapsed time since the previous frame. #func _process(delta): # pass From 7a0d1251ebccf180899dd81647b10a5ae19ac9d3 Mon Sep 17 00:00:00 2001 From: tommy-l-ngo Date: Fri, 12 Nov 2021 22:09:23 -0600 Subject: [PATCH 014/107] Created Sprites for 2Ship and 3ShipA --- ...p.png-1f2b7957a514f8da6d9bb3c6b90e97f4.md5 | 3 ++ ....png-1f2b7957a514f8da6d9bb3c6b90e97f4.stex | Bin 0 -> 1080 bytes ...p.png-f56f600f71c287a0900c4554ec6e9837.md5 | 3 ++ ....png-f56f600f71c287a0900c4554ec6e9837.stex | Bin 0 -> 1080 bytes ...A.png-1fe0003af4adcd83b8c94b2b9d6e5b6d.md5 | 3 ++ ....png-1fe0003af4adcd83b8c94b2b9d6e5b6d.stex | Bin 0 -> 1506 bytes ...d.png-e33a9570b9c50f914f31c7204a2ce0c6.md5 | 3 ++ godot_ship/assets/game/2Ship.png | Bin 0 -> 968 bytes godot_ship/assets/game/2Ship.png.import | 34 ++++++++++++++++++ godot_ship/assets/game/3ShipA.png | Bin 0 -> 1423 bytes godot_ship/assets/game/3ShipA.png.import | 34 ++++++++++++++++++ godot_ship/scenes/ships/2Ship.tscn | 6 ++-- godot_ship/scenes/ships/3shipA.tscn | 5 +-- 13 files changed, 86 insertions(+), 5 deletions(-) create mode 100644 godot_ship/.import/2Ship.png-1f2b7957a514f8da6d9bb3c6b90e97f4.md5 create mode 100644 godot_ship/.import/2Ship.png-1f2b7957a514f8da6d9bb3c6b90e97f4.stex create mode 100644 godot_ship/.import/2Ship.png-f56f600f71c287a0900c4554ec6e9837.md5 create mode 100644 godot_ship/.import/2Ship.png-f56f600f71c287a0900c4554ec6e9837.stex create mode 100644 godot_ship/.import/3ShipA.png-1fe0003af4adcd83b8c94b2b9d6e5b6d.md5 create mode 100644 godot_ship/.import/3ShipA.png-1fe0003af4adcd83b8c94b2b9d6e5b6d.stex create mode 100644 godot_ship/.import/old.png-e33a9570b9c50f914f31c7204a2ce0c6.md5 create mode 100644 godot_ship/assets/game/2Ship.png create mode 100644 godot_ship/assets/game/2Ship.png.import create mode 100644 godot_ship/assets/game/3ShipA.png create mode 100644 godot_ship/assets/game/3ShipA.png.import diff --git a/godot_ship/.import/2Ship.png-1f2b7957a514f8da6d9bb3c6b90e97f4.md5 b/godot_ship/.import/2Ship.png-1f2b7957a514f8da6d9bb3c6b90e97f4.md5 new file mode 100644 index 0000000..8b1bdfe --- /dev/null +++ b/godot_ship/.import/2Ship.png-1f2b7957a514f8da6d9bb3c6b90e97f4.md5 @@ -0,0 +1,3 @@ +source_md5="b036b8f385ad112e84a3fc1fd979a64d" +dest_md5="011d0a786d919144661c98365d2a2849" + diff --git a/godot_ship/.import/2Ship.png-1f2b7957a514f8da6d9bb3c6b90e97f4.stex b/godot_ship/.import/2Ship.png-1f2b7957a514f8da6d9bb3c6b90e97f4.stex new file mode 100644 index 0000000000000000000000000000000000000000..99f406302551c0b6f8e856495eb9c9828cfd17d5 GIT binary patch literal 1080 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 IM6N<$f<|Gob^rhX literal 0 HcmV?d00001 diff --git a/godot_ship/.import/old.png-e33a9570b9c50f914f31c7204a2ce0c6.md5 b/godot_ship/.import/old.png-e33a9570b9c50f914f31c7204a2ce0c6.md5 new file mode 100644 index 0000000..60c77bb --- /dev/null +++ b/godot_ship/.import/old.png-e33a9570b9c50f914f31c7204a2ce0c6.md5 @@ -0,0 +1,3 @@ +source_md5="679a219fb184d568adf29ad2c7caa3c2" +dest_md5="91aa89d551b22c26e3abc14f2a044464" + diff --git a/godot_ship/assets/game/2Ship.png b/godot_ship/assets/game/2Ship.png new file mode 100644 index 0000000000000000000000000000000000000000..c13c33d708466276f5a459adbb58b4f746aeed6a GIT binary patch literal 968 zcmV;(12_DMP)Px&f=NU{RA_K|lwojzE6Gr4Vx--R;Nhor(nfD*HZm-n^Z8ySD-! zQ2_h>^SI@8<04}`DH5Fiep!2!n?x=G`~CB{y|=S+EiVaY0u+4o=}YEb9uiIjOu+$Q zvr=&;k-G+}je6c!^AS*GAB8>upmQ_;04##QS%r-}!FAbRzF!jAtW>ZF0{rm5S;v1W zWlEsn9}eEGT<@P

s4yNJwF2n9ly|=QHE;&z`>kAXmYu2yMXu;Lq=$E<>6L*xJqn zX+eq=kYrDAQ6aYvtPB4xfgi`wszaa3Ftt<+j~2>{r(HU z!xY`$+#w2m%qAlz5}6ukdEIzxw~gV+sqzILoTJ*Pqg1Xb-!T=Uu?St|RKZq=&P513 z%y$|(1=dC&3VjSueDsbFlWW{7=F>5NWj#pujA8 z1m`4xr5d`a;!r9;?Z%M~PJ=Ik0Kjq!Mm0c6NKj}w?j0W{8S9`*MoXaOb>mXGmbe=S z_XWzHE3ycJyPeMF(3A!73Y4$00)>jR~7ZKdh~px1e44eB~o zS_0I1w4T$PnmU1kOWKd1or3iI@pd#p+I|ElE0*qbdHdO5Y(rHQORbm(H%;3Lf$QI2iD!!Nv}IMG&-Sf^Fdy3x+m=hPx)Nl8RORA_-C)j_klo2yZgTP zW8RP10Y2jYj3*b*x5vTx_CC+p$txHDT4yI1T-^WwR&k7f7Jqv`&-;ca7tgn?vlDdM zPt|XGl}c_BpXL!hdie?f(7xymfYB)z}7#6C&|h^>bswG7_-i&D(cg zBxt3$kRo6+{e9rFLV|$J^uC&NWVyo21$p6eg(C0}rq^Mzg3$tbqCN}c3LQ=t+{gD) zyq6eo!K)k}?eAh4%`qL1u!>_tYqh7z}UK^+aN?Qc-mv7XcdvS2yVNx_I;UU1nfz)(g~|f!Gq_ASA)V z>wZFeLcJNNhQtR(0{r1*dLNJ#B(C`2%kc3L;LD7b-$TMH5fQTb!UrWl!-%OH&I4x* z@byoajz?DEre&Cw4~!N#+TX==JW2?kjz{W$zASnFu!`dZ30jJ?NvJw#5dnfOoCMpl zA*Ez$$vFudj4q&&n?st4IS~$_WEfAQ@1)HC?rkV)S_$yfX(EzE5J<*^_gp}jjz`XP?9!I64sQZ{nf?6B zPgWs6{5Z7!XG=aJ0wnmGufGET{P{X^KF9{wSOy4IL8)9-Bzz#Pq@u~FRIa9~pj3F) zByA-?nt%C4&5MLCJj)W!7$6dj(^jIkyWk@{lYkB)k(KRCqkXPCaQ7xPnf0V)y09Pw zkZMk8^tO@l2|}?8d|pIJg^LN$OYM3y5LY`Ap0!;g+N?G`xG0EXfQabrwrLwivMu9H z;34sN2^6_=E`DM0SNQABX1!3EtB4))tW#A^7qlpa#uTt?k6+xOWqj~1NRu|}Gd_WPe52+>>I1e=HL`-$ScA}EQb)eDf2(Il+ppHD} di$CIn;a?Z!Uy3!ty4(N&002ovPDHLkV1lUumwEsI literal 0 HcmV?d00001 diff --git a/godot_ship/assets/game/3ShipA.png.import b/godot_ship/assets/game/3ShipA.png.import new file mode 100644 index 0000000..d16c7db --- /dev/null +++ b/godot_ship/assets/game/3ShipA.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/3ShipA.png-1fe0003af4adcd83b8c94b2b9d6e5b6d.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/game/3ShipA.png" +dest_files=[ "res://.import/3ShipA.png-1fe0003af4adcd83b8c94b2b9d6e5b6d.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=false +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=false +svg/scale=1.0 diff --git a/godot_ship/scenes/ships/2Ship.tscn b/godot_ship/scenes/ships/2Ship.tscn index fae014f..9ea72be 100644 --- a/godot_ship/scenes/ships/2Ship.tscn +++ b/godot_ship/scenes/ships/2Ship.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=4 format=2] [ext_resource path="res://script/game/moveShip.gd" type="Script" id=1] -[ext_resource path="res://assets/game/2longShipS.png" type="Texture" id=2] +[ext_resource path="res://assets/game/2Ship.png" type="Texture" id=2] [sub_resource type="RectangleShape2D" id=1] extents = Vector2( 16, 32 ) @@ -12,8 +12,8 @@ gravity_scale = 0.0 custom_integrator = true script = ExtResource( 1 ) -[node name="2longShipS" type="Sprite" parent="."] -position = Vector2( 0, 16 ) +[node name="2Ship_Sprite" type="Sprite" parent="."] +position = Vector2( -0.00390625, 15.622 ) texture = ExtResource( 2 ) [node name="CollisionShape2D" type="CollisionShape2D" parent="."] diff --git a/godot_ship/scenes/ships/3shipA.tscn b/godot_ship/scenes/ships/3shipA.tscn index ea692db..9b5aeba 100644 --- a/godot_ship/scenes/ships/3shipA.tscn +++ b/godot_ship/scenes/ships/3shipA.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=4 format=2] [ext_resource path="res://script/game/moveShip.gd" type="Script" id=1] -[ext_resource path="res://assets/game/3longShipAS.png" type="Texture" id=2] +[ext_resource path="res://assets/game/3ShipA.png" type="Texture" id=2] [sub_resource type="RectangleShape2D" id=1] extents = Vector2( 16, 48 ) @@ -12,7 +12,8 @@ gravity_scale = 0.0 custom_integrator = true script = ExtResource( 1 ) -[node name="3longShipAS" type="Sprite" parent="."] +[node name="3ShipA_Sprite" type="Sprite" parent="."] +position = Vector2( -0.0212851, 0 ) texture = ExtResource( 2 ) [node name="CollisionShape2D" type="CollisionShape2D" parent="."] From 450adb8713944a51b8263aadd927a7b9778fc434 Mon Sep 17 00:00:00 2001 From: tommy-l-ngo Date: Fri, 12 Nov 2021 22:39:03 -0600 Subject: [PATCH 015/107] Created Sprite for Ship3B --- ...B.png-28ed039caa6839d715648812af8f65e4.md5 | 3 ++ ....png-28ed039caa6839d715648812af8f65e4.stex | Bin 0 -> 1311 bytes godot_ship/assets/game/3ShipB.png | Bin 0 -> 1198 bytes godot_ship/assets/game/3ShipB.png.import | 34 ++++++++++++++++++ godot_ship/scenes/ships/3ShipB.tscn | 4 +-- 5 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 godot_ship/.import/3ShipB.png-28ed039caa6839d715648812af8f65e4.md5 create mode 100644 godot_ship/.import/3ShipB.png-28ed039caa6839d715648812af8f65e4.stex create mode 100644 godot_ship/assets/game/3ShipB.png create mode 100644 godot_ship/assets/game/3ShipB.png.import diff --git a/godot_ship/.import/3ShipB.png-28ed039caa6839d715648812af8f65e4.md5 b/godot_ship/.import/3ShipB.png-28ed039caa6839d715648812af8f65e4.md5 new file mode 100644 index 0000000..7f1a842 --- /dev/null +++ b/godot_ship/.import/3ShipB.png-28ed039caa6839d715648812af8f65e4.md5 @@ -0,0 +1,3 @@ +source_md5="b24ae375fc3e444bb3b893dd4fa081c9" +dest_md5="4da9fc0a51c5baaf5ce99f822e2ccf4b" + diff --git a/godot_ship/.import/3ShipB.png-28ed039caa6839d715648812af8f65e4.stex b/godot_ship/.import/3ShipB.png-28ed039caa6839d715648812af8f65e4.stex new file mode 100644 index 0000000000000000000000000000000000000000..edcaddf45357552a168d6d57101903c5666c388e GIT binary patch literal 1311 zcmV+)1>pKeL{n5C0001B000000000001yTN000031pok0PDdb#P)Px(xk*GpRA_B0{;MtlMqLTI}oCAfhZ^dAq&t| zjzpC|VTxpq-M!hp+4F56@FYw2-FoNk+nL?jj|K#|J9un;x6Cr@yB~}9rFCztW4sJE zqTA~cSjV`Ogq486_{#WHBGIU7e0+2O0QmC#C%%39ijVJJS?eQkKCxM5i8D@y0pQ!G zujV@^2@{3FC9Pj|`$NoUDeL{C!x+gVX6q%GDwIZnYP{KsFrTGpwxZnN=r9HVbb13M zlNej=Hc;XdDm12!*00Fu`Pl*h&}>E2@7QX$b44x*&~H`=RRtdfa>D>He0U$z zLH>-4`yeMEX+7{;0RTu}yw-lJe&Om0H7vaq0D$q)0n!(*vAw&4ZhwgLvjsZ6L6xdX z30PZigH#16fdZ)YCaS97BA~V2#P;q^{=M5DTFaHGP{{}CgqVP&{|T-fp)vu$-v5Lu ze&9u5dVB&v?|%aM0gaA92+$Pl!j&lCLQn-<;YJ9mz#@SoCTGY<^^H}sQ3@QcA9yPufsX>406%}5+0gX(r0~p! zAPR61FrTID@EpVkB=Z2FRs|@mI0d@>A^V&Zkfdg%%X6xP8v{s{W-HRd(F{s#0NOTCa8>90m*)D zs3^D*-ImV8xuqCGAD7f=rUu^8=t$Y9IT=3-dd1+ZH z6HI|8r_Wg;=JVilL75s=6U;>G6rSFfkEKf%z;&w?D)(%P=186^`zx z8-gn^I*hfn+&ov5Dj*8O(P6APm>GiRci=(+35m+%0BzaO0fuR;79SuvZBd{uPEFL} z1Jtjk4>Vg5#-qLb_s4gy3d^&#eL#(A(+6nCC1SRtH za|&>m8l2-mvlX!ls3dH-HW`tXfZD%*EGHxq)8rWd*?|Sk6SdBUG{TOF8e*LuYJ1IZ*7so>Lk7XelUA4pp7BEZ5m{Z_?>4|N2AjlSg-aOWeW=UUgxuhBu&HIJD2<_Gy;-~$OPM(unbkNbQV-F7bR6%&lW1# zJzo(44hkvprB=3}U<<#nnI&m;UH6KCi!L$ueZB4zm;Om|kl_QHgF9K*MZy(bzW_yz Vv~_@^mCpbG002ovPDHLkV1h4uSz!PG literal 0 HcmV?d00001 diff --git a/godot_ship/assets/game/3ShipB.png b/godot_ship/assets/game/3ShipB.png new file mode 100644 index 0000000000000000000000000000000000000000..6e30dbaad00cef15c8efc738dbc7e48fc3df7517 GIT binary patch literal 1198 zcmV;f1X25mP)Px(Xh}ptRA__vXzH-~+FW z1>1jI_jX1A(2rvPz+>;us;gC5FN&!(zu0$IJ+!Bhof1*rEj zY*o+_kb5s$i921r!JNj?X8Sr82oGuy=f}BqD#$eJ+@!hLr+~?&?T2v(3r|RGu(ZMwEp& z;|10>Kp8P*&E={$pL{?>vwe^dlT-0rb3#hVDJw2lJ@n&v{#kLi6Qz1CKIfhlpB^5i z7A7)sQ=r?4P^s0?k7G0&yJJUpGz_^b&}jLov|K({5I>3+{n~4pOoH{QM7pF32Vgod;vJDi9E}D(qRTJE3IS+y1QvnE-ra(H+ycDB{VWya4Q(+n>8|y#_Xonj zXQ^P)do2N-3MSz6UQ0lStm)SlS^}~PB2!}G43Gv Date: Fri, 12 Nov 2021 23:22:22 -0600 Subject: [PATCH 016/107] Created Sprite for Ship4 --- ...p.png-1102455fdea5ccc9870ef475ee45f60a.md5 | 3 ++ ....png-1102455fdea5ccc9870ef475ee45f60a.stex | Bin 0 -> 1594 bytes godot_ship/assets/game/4Ship.png | Bin 0 -> 1504 bytes godot_ship/assets/game/4Ship.png.import | 34 ++++++++++++++++++ godot_ship/scenes/ships/4Ship.tscn | 4 +-- 5 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 godot_ship/.import/4Ship.png-1102455fdea5ccc9870ef475ee45f60a.md5 create mode 100644 godot_ship/.import/4Ship.png-1102455fdea5ccc9870ef475ee45f60a.stex create mode 100644 godot_ship/assets/game/4Ship.png create mode 100644 godot_ship/assets/game/4Ship.png.import diff --git a/godot_ship/.import/4Ship.png-1102455fdea5ccc9870ef475ee45f60a.md5 b/godot_ship/.import/4Ship.png-1102455fdea5ccc9870ef475ee45f60a.md5 new file mode 100644 index 0000000..87d2cda --- /dev/null +++ b/godot_ship/.import/4Ship.png-1102455fdea5ccc9870ef475ee45f60a.md5 @@ -0,0 +1,3 @@ +source_md5="1d6228ffb0d2ea2aa0e22c3f58bbe4fa" +dest_md5="afaef7c4779eef6d0254b50d8f875dc5" + diff --git a/godot_ship/.import/4Ship.png-1102455fdea5ccc9870ef475ee45f60a.stex b/godot_ship/.import/4Ship.png-1102455fdea5ccc9870ef475ee45f60a.stex new file mode 100644 index 0000000000000000000000000000000000000000..239c36c3ecd0e4df4d879fdbbf84496f3a06110c GIT binary patch literal 1594 zcmV-A2F3YDL{n5C0001h000000000001yTN0000U1^@t1PDdb#P)Px))Ja4^RCt{2TfJ%{R}}ta z{0yoVKBc}J#18~M8pW67P4w!(Ky^g(CcFwMP3p`6Hvkl zc}Q3ZaGbBzX`^}E^`7T4gH!{l)f2L6A#)UzD>e0gXZIlMZOjDn#J&wSGe|UGRX-t% z88Vrm)oG_b<2Yks1d0TgfLHwlsTooPd=994e-gfEFgfCrF@X^`clX5-SVsIOku(EG z18fH*NE}gQ0*Zf^>ZSQ$<(*KhegfAFia?(DPePIpR^9|L6cP8i2rL6G0#*ln{ptnl z<{U>{1N;tX+W&p<gI~J;9Rb4R>Nd~i0DyIi{bLTOhu?e_ zVj4vN9$Ir<6Q)+39B~>&3jihkyO*`MSobkBWxz+zHVT{1LUql~?tycD0KiYcgjT1m zw4$4VG$Vo72g;S2F*jVEpISBJf=L6c1eEl85^ge?%MY9ysP8w7pKoq&VQ2RM8`Y|M z*@XKNQsyw6&q4qXtD8oV627^;CAv>0CmfH4sr1}xzR%Ppvk1I?^+I_&2{&!czK}Cv zZ9WT?I=LX>eRxg31>Lr*)k$1~xX@FGEg+vQF0c+v7jB?yW0QLO_#-riVgqf;j zqX}%AP#)M46*~$(eEgj)?9Dgdv(IG{keEhN8Hu*z-~Rf?d(L-19s%Ix03gG5Or}VN zB?*=yQ$3&)$=e$|&DQLhz%v0t5#90A)j$!e2ZV_z==Ec@BGr9*%_psjV;XR+D%tm4 zo}Z$5+%?VsBwaGg1UfN&lSvZRiEu}|UIOJxP2IR$sj1^&aH2*u)R5?%GIw6U@`2`Y zSIq;+-ZyvmN`Prf;%eD-u%ke4ID)}Rsx^D;dPKrS1jzQm-~>UhAFCVnp%ehoynsc3 zRtuy%V^ep%QLVDW(dz^AS(vJl^FgU@^?m?^!r(D4uRyB4gCQROl zW`p{%4ZdXLC6Js62E9Il!HGK7%|Q8|gkGMX<|jb7xx0_`hqjpkX@dm&!cZIqwjm`D zFHE?-;nS@N|DOb=QG{0Wy*hT4WJ@7HbDqi7t#uca?hCA^X0~$N1#Kdhj{uR-djMC6 zNy{=Lf$?YegCE=mbjhS-7Ag(*)XTeM!c)YOQefkLyh! zO_&4_Ia)P$TNdYm&FwABXCYdhHd>u_tXZM&C15$Bp8IVNt@I*PLL$?c&h@(@@{htx zGD4OI)Gmm9fF9Y>`{r?19cQVI3*C&$m6~|eFERl+UaQkiRm75?dg)l*?U++i>7MTL zdRO{R5-9nK$gD7>VG{usihPQ;Zi?$=XuyWmb;4%?fb3D74ZewrkpMN7MQuF#2#-Uc zWcaKor0$(76BdEhc0wRqyCu1H&Gw%_ZfE0z%K^WJU#uEfh9es9$?}0LKUn2n<0OzY z1NR5b1ef|b1d23+^ z3oiBQvt!rlby-{uuuZ{Ly^#RN83D5?xT;UeNU`+%Pk7;qZO-bw1h^zjkP3I6>?2|M sTqGRG{yU<=vZV7yoPW=A;BxMN0b$Auq}y4&Jpcdz07*qoM6N<$f)BXo!vFvP literal 0 HcmV?d00001 diff --git a/godot_ship/assets/game/4Ship.png b/godot_ship/assets/game/4Ship.png new file mode 100644 index 0000000000000000000000000000000000000000..7e83f89e6e1acc4e374927f9c39ce33cb94a6481 GIT binary patch literal 1504 zcmV<61t0o}P)Px)nn^@KRCt{2TR&?fR}deEdYY$bs!eF>$wo5$PT_h;tq$|ooOfw5Lzz4^WQ z_hx2gfG4ED4{v^6ZWZ^JY1a5Mjqvj6F)Zc*0KoDt_^^?N2wV8&KX=Qc(%EvWxG#RY zto4P9@bc*~_|2AhZx)8IStx)D2{r*4UcCyHS|iO8JOZlSBV4uMtbtsU!mRy%f zXM!w1CSX!O!o>_u8u04X#CxvJ_&7{JQ9puf2DS!d?~lVJ8XkuUbhx>_|GWgUfRzBp z0TCQWWN857-=unOK3H!PxTqgNH3L}#rudJ8lMmM01aV{$_o)c10$Ktl2Ym7T8EJ8f zBa$?rI{$5;=7aS$feC)I1*1VvTrcJUbbk5_714A&N%L_4(Da6J2b9BaF%MuCh5!IC z8uTKXkY6Lv5kb>GTANc<2K=<3QrKc1h|laDmXxGe1XS?qRiPEx45%3noN7W*<8G%_C!YmAh z@a^3l);dm3IP7;5>DjBicIpdA1YSIUCcGVmtBz({$f@9D0u(;%cVXD?!gM@&nC8@P zwuI`3{Vp7wlp&Wd!eSl>5?n1rOmI{>TW;^}C_@mP4tIZjbph8`7vk?PrF%IkS*rm# zq>zwTufn_YSMcuqRpS2Zs|)z+_qW0kWfCUmB%8piSK-I+zP8>clR&MRU?mV&JqNQe zv>w^yl1!y`9XMJL1dd8)+QM-a<#>Vsz{lJ_>~~itOjRW-O`to3(m*$26SEh?RPtP4gj2!NM(;&3_(a`__6!VvsU8}<%M zkun@}1$9_O)_}^^-QWI<2nJZelGEsY@iNPV@r7_UC|~PfOGZ`#@tL6C zY=Pfti)+~onEz4eXwXYf0C97BAL$QuGXvBH3butII|_6|N`Po#LhTJ7Z%z3BBrpp@ z@G7sxwW%aq2?3n*Ove-LDabt+NKegl<+usbY&abOBq8?zrV!(nWl93WemC;L^64=E ze2i_|?&V$MsW=@^v~`3aaM^pmaa1~6Vv(r=9<{b4quVtWuB36j3aAN{03?UIrXI`e zJg~jH1B-b8UcCxly&7p&@b4UuoKVjFx`$SB5y~OqG^R6suL%7k^O6kV@_^a|wh!PV zTYO!qHN>?`b)4y8l*<>{qkfhN(DA%_HBk|BzUn1oeUD>GNhN!_$?Hw&J3`>H_kP1x zM7lzih7$y+$nq&#fWr^CODB}Bybme*l>*oT?ND<5QjXT(Shr*RswM?nA9uJjw!n*5m1pZfg_wuAP$u& zT)*7T3bn1`{?ZiN+}*PY$Rt$Y3U?xaBvkJ|=zm}TXYelo&lYwegck$=0000 Date: Sat, 13 Nov 2021 00:01:13 -0600 Subject: [PATCH 017/107] Created Sprite for Ship5 --- ...p.png-78bcea6c287110425f92a7d06eaf0b2b.md5 | 3 ++ ....png-78bcea6c287110425f92a7d06eaf0b2b.stex | Bin 0 -> 1781 bytes godot_ship/assets/game/5Ship.png | Bin 0 -> 1744 bytes godot_ship/assets/game/5Ship.png.import | 34 ++++++++++++++++++ godot_ship/scenes/ships/5Ship.tscn | 4 +-- 5 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 godot_ship/.import/5Ship.png-78bcea6c287110425f92a7d06eaf0b2b.md5 create mode 100644 godot_ship/.import/5Ship.png-78bcea6c287110425f92a7d06eaf0b2b.stex create mode 100644 godot_ship/assets/game/5Ship.png create mode 100644 godot_ship/assets/game/5Ship.png.import diff --git a/godot_ship/.import/5Ship.png-78bcea6c287110425f92a7d06eaf0b2b.md5 b/godot_ship/.import/5Ship.png-78bcea6c287110425f92a7d06eaf0b2b.md5 new file mode 100644 index 0000000..c4b09d8 --- /dev/null +++ b/godot_ship/.import/5Ship.png-78bcea6c287110425f92a7d06eaf0b2b.md5 @@ -0,0 +1,3 @@ +source_md5="138929229182774ac17e092717625524" +dest_md5="4abf17415a8fd06eeb2ef60cfb9581ba" + diff --git a/godot_ship/.import/5Ship.png-78bcea6c287110425f92a7d06eaf0b2b.stex b/godot_ship/.import/5Ship.png-78bcea6c287110425f92a7d06eaf0b2b.stex new file mode 100644 index 0000000000000000000000000000000000000000..0eb4ca17d474f9dab5111e51f85ac916f256d050 GIT binary patch literal 1781 zcmV000000000001yTN0002l1^@t1PDdb#P)Px*k4Z#9RCt{2Tt90gM-+bw z_Zd_jNYxTAVli8|O5qf4jx=_uBSeKifUbxQuGESvav$Idg~OXpYJwrCh-wug2%`g4 zHl*^Ga0>I*v$OBby!o@M1oDI9^k+2hH}BuPeLL$85cqcR9rbY|_@*^U4BiOGJvSh` z<3a#N*OT(~@zGoO>+9d;{~Wk+v+3(x-X=IcdRzN!x7muusqiL1t^DcnUNkNW0Sc$* zL+9TdJPQ8zf&Z=#*isxEg_wT7dEa8={(k@_|-O zK>2{p1mb#t!gzEECubM%^mq>s`#k_a<^8AGXX_ji0?%qO0sv6l-obh~2LOOH&mhgS z%J*rW!E8Dy37X8{tby5d0{tYZRY)qiG|$TKSBnD1qdDk{@FK9=Y@wedrL9qLaeG%A z_w;xVr{_aBJs-kuvxU{7AbrHi3D?VcMR;+0R}+rt_6D$86aesI67&&o0%{?N!U0}F z5B))ZuaeN`K!{Cna&}R3HW!SpCuE`$YXFmsx_SvzEl`O{tO3r3008|Y5$%N39L`}# ztzMnDpCnH6Ir#v*XAFn=PbyRtiwF z9g;)rHd|OP`OT;!5MJAkSBs*wCpR(ri@JGf-@P^{TVP!@5`iJ{PmPc61Gd%ciRj=? z7@dG^^|~3HqF{V;6=Z*^UB^a2TeU&dy}%{>5Un|3a2Uppe`f+V_^2PiAqtL8B5coS#>Rsv`SmzDkW z!}sF6!4mN8`{`IM3fOJ7<;_bmftVP+f5#@Ppu6W%6t{QmZ62crR5Q4Q*RQ|-SutOl zXXK48mOw1~Be10}Ccr_W1!|0XcSVP@51;@&EI)kw!fMW>0hWMivNX?XD>dbRi~!Mn z!`Su*c*zCM8i)m3TgRDzOZly4zK8vuJcAG=3{B(5H&DM zsEsFxfTa1PuXcQ6zn-iWr7`U-GjUO*WQ_vDtyge%8ymbu;RWN0+q$As3%PRk0MIyJyg$))?D%R3FgO zZ(i3-H8n9h{<7bj1Uq&B@aWDDwd}vHeEP>G8k2;SDjU^&fzs(HJ1YFuL z>RGbjQ?*TjB@n~@04?}HXrwrqAoSD}1yTdj5Y!L3sUFWA0ksl{760n7J|sjTN)#aB zZf^kN(PgO_NoiIiz^&fb{@vcdFBSVB%`@mHiMS$;P5|Il?TwV>67{Ry5D5vVcD?io zyO?K6z2S9+q%9JvX~YCf_Sch_UYwd9j<6E2*+0#*vKx*hY>g>3MMv8Wk%&r6f~dFe z_4m>G11^WwTq(ik4Qz7Fm!=S7zW)ni%~fR`9O?o$Adee_^w$~ zAf1qlfAsE${oeQhOVlXPF}}GfD_=GLx3(FXQnK!pUMH(<<+mz?daVkL+N=hEvgN8H z+9?_vxCd852nF9YqX-2>fy?C=r;R9kL0f3$00ScE$!iKWXVV4tlLY;te9o~(ATPLoM9m3t^*E68bTuj2a)YT!L26*ND9Tl=mvcz-tg_;M zl2lfy{y7LrxCv|+QeAHKJ^pnClK@GNi1h(ot@=I?>#;DB018u|s8;uZ^>S`ZufYUH z*AtjcC$$y}+L+q=O)#};SQBvJr<0+8+EKLB;l_5f=Z<6j2{=}u4qXG{AI8GLcf)@G XZ7^B2K(^xh00000NkvXXu0mjfo5?^w literal 0 HcmV?d00001 diff --git a/godot_ship/assets/game/5Ship.png b/godot_ship/assets/game/5Ship.png new file mode 100644 index 0000000000000000000000000000000000000000..5a7005bd832546fb36820fe9cee6d87f846c9776 GIT binary patch literal 1744 zcmV;>1~2)EP)Px*ib+I4RCt{2Tt90gM-+b!_Zd_Lq-yakLL6JTa^Vzijx=_uBSeKifUbxQuGESv zav$Idg~OXpYJwrCh>ELJh#-XSP-R0Ze+ge<-umtAo0&I%c9oF(fw80=&HK&!H*aTV z1@M2zfuzx4_xLfk;4hm`2LJ#sq+b|Zjf&T=UVaaMfBvWVuY<1LWc=LMcW%7PovYZc z)}nS4-UPUjKiqFb?V=FiaB|jn{!UZ^KKSMX|6L!jsaD!9stGtBXw(Fp57-dZ1e^~v zY672jQBA=4fDKVi!1+LmSP008;TEiC6#002m{9;8{XbUn>_Fd2^uf+jOKYhW@SK_^Kn6%r+vX1(J2VwS^j zFa>oGUIezQHFT1sur&(KZ*D8?9_}}Aa@L2Fvp#HBYgo*3)<>M2a53PN3TrjvAv588o0ZcM<^b$}l zaEVH+0i6v206Iw`nhCi+oWqbCJ?*%YBu@P~`2fI^8e8qI@w%-K3TGcUIqN$W9+(ew zSNm`#fSqGVAqh^c_&Ey46wbjZ z3ev0x%lQ?1u14%6gZ`qc#KrNNJ-$6|RGH zy+{X^fK+%4R0uRFyh5N3;U@c+2>1w>*xwcrB@HyCb}fN@pp*xE<6H-u{VN1$dCkpU zH0S%qzj~WiBEa2D*6kN10!@Y=V((7qMZh=yx%PY4K*mTu6=YLu#H|#M0C^WE)s>=}e8VQ6YUyuK`Q zz{CBfQoxo7*aZ7jzk9nc;3l3R0+Piib+p54`~764D2-`w)eO3+mxCw_b*j|0$K7=Guhs5WG+A3J#>Eai_OqN%&6ClW&8LIm;G)tX zH})}jgkjk?T_hKdg9JY1Gd|5{7iD>%jg3!_L5J|`o_eh zB@nvyL;EqIwnT*Lx0%72fXng=JxdmRsV-IEly1jM_38i?4M@6 zVl^B|*cPT}ijFoLA`wbVf~ec~>icNx11^WwTGcZ#x{VLaTwrEU)Bz^*TUxUN8x6wY!yws5l{x9vkXB zohBt)ZZIuUuo_s*@?sRr`4rNuR~m6ANlK%nKL^1HH$fYQ+$uMHkH4;95+GS4()xg^ zR&^eT^;j570EN*fs_8tioKKDEHJHHQY6O$ Date: Sat, 13 Nov 2021 00:23:59 -0600 Subject: [PATCH 018/107] Created Sprite for "Hit" --- ...t.png-17e3984e00632881a34870756ffe8c73.md5 | 3 ++ ....png-17e3984e00632881a34870756ffe8c73.stex | Bin 0 -> 717 bytes ...t.png-30856058168b013ca9959912101c2c87.md5 | 3 ++ ....png-30856058168b013ca9959912101c2c87.stex | Bin 0 -> 724 bytes ...t.png-87d7e3b710f3d0b308b047fd65cd9a0a.md5 | 3 ++ ....png-87d7e3b710f3d0b308b047fd65cd9a0a.stex | Bin 0 -> 717 bytes godot_ship/assets/game/Hit.png | Bin 0 -> 576 bytes godot_ship/assets/game/Hit.png.import | 34 ++++++++++++++++++ 8 files changed, 43 insertions(+) create mode 100644 godot_ship/.import/Hit.png-17e3984e00632881a34870756ffe8c73.md5 create mode 100644 godot_ship/.import/Hit.png-17e3984e00632881a34870756ffe8c73.stex create mode 100644 godot_ship/.import/Hit.png-30856058168b013ca9959912101c2c87.md5 create mode 100644 godot_ship/.import/Hit.png-30856058168b013ca9959912101c2c87.stex create mode 100644 godot_ship/.import/Hit.png-87d7e3b710f3d0b308b047fd65cd9a0a.md5 create mode 100644 godot_ship/.import/Hit.png-87d7e3b710f3d0b308b047fd65cd9a0a.stex create mode 100644 godot_ship/assets/game/Hit.png create mode 100644 godot_ship/assets/game/Hit.png.import diff --git a/godot_ship/.import/Hit.png-17e3984e00632881a34870756ffe8c73.md5 b/godot_ship/.import/Hit.png-17e3984e00632881a34870756ffe8c73.md5 new file mode 100644 index 0000000..e3aa620 --- /dev/null +++ b/godot_ship/.import/Hit.png-17e3984e00632881a34870756ffe8c73.md5 @@ -0,0 +1,3 @@ +source_md5="d7fa4a808d473904c3043c7892700d02" +dest_md5="603497c5e82c90610e6693faacd65c41" + diff --git a/godot_ship/.import/Hit.png-17e3984e00632881a34870756ffe8c73.stex b/godot_ship/.import/Hit.png-17e3984e00632881a34870756ffe8c73.stex new file mode 100644 index 0000000000000000000000000000000000000000..df0ccf24d7a948cf1228cd0588586a7f9521ebbe GIT binary patch literal 717 zcmV;;0y6zaL{n5C0000W000040000001yWO000270ssI|PDdb#P)Px%XGugsR9J<@mratRFbsu1 zr#gKc`YPFk1LR;i0BmxV<~XqMEc}Bc%aBaf)ToLAY?=2YOR@-LiPv;rHe4C5{W+y~ z2VTeD`Vr4x?*I+gL(B+-b85T%isy@`AOPbhAO0J;{Gu5N5)wR`yB(MB(TpD&Q9a=8 z*Kp4txB)ky@9F{)n6mDz&K+)#ih*TQ?him5B!B%W&-(Bd$sU110;=^&Sp;a~)=WI| zoz@AD_DukS*ngMd5Fvkb*V*06GW%K5Nx?$`0MVpj0AXDLpTvrhn)i}e9oxycThkB_ zfcth73l;bic&=9^LdjO2f+ucohZi#YPz~mscA+0w=ib7C@VFmPnEH z36m*g9}w8VZ>Y-FW=4*ILadyK-&ya#3q1lFTuR9VMZ&2Sl|&lpdBG!4m6k0>ak0MK zC5d-Z@`bF5iiBGU?WKx{Br(#Fmeew8q*LPx%Zb?KzR9J5 zTNHRB0no2gj|9M%69uDC3z;PO02H-3T+>4DeUYc_^xC92c?GXTN%2^^s_9yUC z8SoW>3Vuhm2tb<|6a$4=c@cj|@4yQ^0vcRO$pl5hxht4N9_e|(Bfv`AhoZPxUw$Qt zGby=3-inHZdlTBGE)hv$Mn_sw+oEcX{!JJsYAH7sc@(Q?4WM|SRNOSiBmlT_dTH^C z(H(rI0Oj{WPx4EUaKPilmy%l%RcX%I$PRnM<)TFDTg$1ijT3@-q7hQ-frOP86`-6I zlLj`{cy~r%(m*QZ8c<1i1e9fEa|3=@c*dKqFF}=-x7G$>w}w9f&T~#ZD6>jW*pf_E z!_xgHz)2H!B3Ky}9e0000Px%XGugsR9J<@mratRFbsu1 zr#gKc`YPFk1LR;i0BmxV<~XqMEc}Bc%aBaf)ToLAY?=2YOR@-LiPv;rHe4C5{W+y~ z2VTeD`Vr4x?*I+gL(B+-b85T%isy@`AOPbhAO0J;{Gu5N5)wR`yB(MB(TpD&Q9a=8 z*Kp4txB)ky@9F{)n6mDz&K+)#ih*TQ?him5B!B%W&-(Bd$sU110;=^&Sp;a~)=WI| zoz@AD_DukS*ngMd5Fvkb*V*06GW%K5Nx?$`0MVpj0AXDLpTvrhn)i}e9oxycThkB_ zfcth73l;bic&=9^LdjO2f+ucohZi#YPz~mscA+0w=ib7C@VFmPnEH z36m*g9}w8VZ>Y-FW=4*ILadyK-&ya#3q1lFTuR9VMZ&2Sl|&lpdBG!4m6k0>ak0MK zC5d-Z@`bF5iiBGU?WKx{Br(#Fmeew8q*LAxPx$`bk7VR9J=WR#A?GAPjwMmOYMM#UDMu9LxhaKXVm5&iKK8K&6y|GLy|_lWk%Y zsO@WM9{_({R=~aU|Hn@ne+z)K(K&rfK-$=iaQxqwgK*XxBcqzm3ct>sI9Jx!J3 zb{Ge^j!c={xg7U^F-B^p`n|BEDxZm#*3L4cd$h}SrE`E~poEaivA08<+wQ4z(%bfG z47#lF1tj;Cj8a`V$DUAh$J!|7Y;LOxfIx5{y7M^&Q2?d|bDjlmtmu4>AV#F)1`rt! z^nls!0H!eUoP~xMPXLx#Uta(WzD7E$w{4M#B8Xc_B{-1)6_5aUQSw4p0gytHi3j_h zPCyl$_kd~Q0ZLWUW&@O{Z%CsK0H+WH%I$qhM0~%xF?=jQUJJJ{PhsY~+K>Jdi~$Q%IeV zY=OcRfdla6XG&Sf0C1&k4^>S2NpB9~N=rU)5RwFu-3PR4U3a*n4uY`=LX#X6wPR;_c}2JyBES zk!mMeqEm>RvUdrD27o)S>1pd6Sk+O>^}7b*OsD#DX$x9xyt4K$zb4;@uL Date: Sat, 13 Nov 2021 01:04:45 -0600 Subject: [PATCH 019/107] Created Sprites for Ship2 Destroyed and Ship3A Destroyed --- ...d.png-3b174719764d2b2b3ae9a0fec7d0ff67.md5 | 3 ++ ....png-3b174719764d2b2b3ae9a0fec7d0ff67.stex | Bin 0 -> 1531 bytes ...d.png-95908b7b74da915910232dfaef45af1c.md5 | 3 ++ ....png-95908b7b74da915910232dfaef45af1c.stex | Bin 0 -> 2401 bytes godot_ship/assets/game/2Ship_Destroyed.png | Bin 0 -> 1391 bytes .../assets/game/2Ship_Destroyed.png.import | 34 ++++++++++++++++++ godot_ship/assets/game/3ShipA_Destroyed.png | Bin 0 -> 2132 bytes .../assets/game/3ShipA_Destroyed.png.import | 34 ++++++++++++++++++ 8 files changed, 74 insertions(+) create mode 100644 godot_ship/.import/2Ship_Destroyed.png-3b174719764d2b2b3ae9a0fec7d0ff67.md5 create mode 100644 godot_ship/.import/2Ship_Destroyed.png-3b174719764d2b2b3ae9a0fec7d0ff67.stex create mode 100644 godot_ship/.import/3ShipA_Destroyed.png-95908b7b74da915910232dfaef45af1c.md5 create mode 100644 godot_ship/.import/3ShipA_Destroyed.png-95908b7b74da915910232dfaef45af1c.stex create mode 100644 godot_ship/assets/game/2Ship_Destroyed.png create mode 100644 godot_ship/assets/game/2Ship_Destroyed.png.import create mode 100644 godot_ship/assets/game/3ShipA_Destroyed.png create mode 100644 godot_ship/assets/game/3ShipA_Destroyed.png.import diff --git a/godot_ship/.import/2Ship_Destroyed.png-3b174719764d2b2b3ae9a0fec7d0ff67.md5 b/godot_ship/.import/2Ship_Destroyed.png-3b174719764d2b2b3ae9a0fec7d0ff67.md5 new file mode 100644 index 0000000..4468dc7 --- /dev/null +++ b/godot_ship/.import/2Ship_Destroyed.png-3b174719764d2b2b3ae9a0fec7d0ff67.md5 @@ -0,0 +1,3 @@ +source_md5="9851fdcd4e3e392cd9108e0ca5cda633" +dest_md5="4ef99e0b7c006730df94a3ba8e8b61c4" + diff --git a/godot_ship/.import/2Ship_Destroyed.png-3b174719764d2b2b3ae9a0fec7d0ff67.stex b/godot_ship/.import/2Ship_Destroyed.png-3b174719764d2b2b3ae9a0fec7d0ff67.stex new file mode 100644 index 0000000000000000000000000000000000000000..a68e88a396913e1eef5e8133aab6e9671b9f09f3 GIT binary patch literal 1531 zcmVL{n5C0000$000000000001yTN0002r1pok0PDdb#P)Px)l}SWFRA_;%Sx-nDR~-H( zg!QCgkWF(aD+vxo7pWeMNI^?UZNgsk5?q@`Y65!DxX_J|lc$1RsEH}$U<-<^lFNEo zDn>#Sf=xVVkgW|XN|uDiid32$TK6(N?EIc@X5PH_cJzaR*_qk-zTfY?-=Fu!fCOJ9 zzL(v`UOvmtU*&S1`!BOkrT+(jQ$fiASoR?#2Y`>Fp9B}6K@OYTl06tmfWmq!-hIVa zkQ*v5cm(K>&;0VM@LmuRr3`_L9Mz^N6`>_SW8wh-Y8&fIk(x%&@CXx83RE6&Sidlv zlD@36>H+|{7u+7ujsg`q037UZ>%Pt@K*#!0Ae)fxXwdS2j`f66y>Lo5_D>SL7lIa} z6N8_Cz~fKQO-xD;)Hc>5k($;frktP)k$_`cPtfs#arT3A9s&8CIvfse!ORpK*1I#H z8*Wccj*j>yB}z!5RP1=Lf4SFs(E5{uK$MDuLRt%Qu@C?l!(X1YMt}Ybn`;{YfcCB= zfTN1IG&chPXzPe;6O-qa#i(K;!$e$P1LECR@Zyg*0FH{&=Gq4K@>wj+%?L%vl9NSCJRSeQ-WdGl*jOk_|tUITEE;qU-8pQ5t6zA}$QYFbE4R##S~9XF~?(@!uHz|R3g zbqIu6qEbv=5RuzM#jXjXAQuZEzf*_ZKgY5A_7Qg9K0n32wO7M(a>@kQ<*28#Kh11Tr9*68H7s!E!);CDB z7PFcvEAmB*){GaQ2?V%PF%N3RmgZ(KB&G8Qkss`DvvVHC7oA_bud#$g`M}+BZLV!N z!i7JK=uM~Es1@K7}+(uO1)i8^LI01WlqP?DB1R8j%= z-`_+3axbgrG^VmhAaXt*1QI|!e%W{p?!Ui>vE((>Hr8u(Iz%3hM1u>kbGfG+>+Ta1 zx$1f0{y;7kf|)58z)`cw_xbHzNo6W_Ph7vPT;KfxTZDUc0|3UtY|3iyO8O=xKi7*k zE2K*^z*$x~Sfa|Nf=GZe73X3hY9v|b3jhPktgIulF>{{!GKxF*!Kb+Z5f002ovPDHLkV1ig3#b*Ej literal 0 HcmV?d00001 diff --git a/godot_ship/.import/3ShipA_Destroyed.png-95908b7b74da915910232dfaef45af1c.md5 b/godot_ship/.import/3ShipA_Destroyed.png-95908b7b74da915910232dfaef45af1c.md5 new file mode 100644 index 0000000..bc1e9b6 --- /dev/null +++ b/godot_ship/.import/3ShipA_Destroyed.png-95908b7b74da915910232dfaef45af1c.md5 @@ -0,0 +1,3 @@ +source_md5="981973bd65846a8aa0b6cdaf90b7d8e7" +dest_md5="8aedf2e5eaf3c7b65c34d1ba49f4736c" + diff --git a/godot_ship/.import/3ShipA_Destroyed.png-95908b7b74da915910232dfaef45af1c.stex b/godot_ship/.import/3ShipA_Destroyed.png-95908b7b74da915910232dfaef45af1c.stex new file mode 100644 index 0000000000000000000000000000000000000000..1f166f8a487a7a85a6bf81efdcb413c20734c7a4 GIT binary patch literal 2401 zcmV-n37+;xL{n5C0001B000040000001yWO0000*2><|4PDdb#P)Px-`$k#5G#>QUS@o``!M%Ao^$WH_ntA64~CihZ+^e? zo%8)YSA&QA=E|SFE@L~t%6@MehU5D4)&F=t4*-V_3eJlR8~~2Be0(qhir}X8@f1H2 z4gw0`CIEBre6KQ*A3h7YUen42A3WcS$c4|?i3VKM!|6}5qK-r%cOfC zio0#C$cVIZA~v->DQ9z^Gl3P+>wsrs!vmu6}@AErAoTTZ%?5Ih~3#A}X%gVTKboZ#!;^+$d>7B|nr! zMX#w~1ag@yPMjW;-c*T{+)Bq>322pE**+pzS(OU#LE^ls_@?Dlg1a@Mc&TVKB-zfd zGH^ctYEtlh120+Wd?6=5fVoW80q*zb;9MdL zfYpS8kp1(ke|KlY5%8o0?4xu8CK-fYL z?;jCh$8x>!jAug9+}5g;R(U;VX-%^OD-j@38NJuNyE_}8Y zo++~gWdbT%pnIse;hc}@_PlfrEY8nLeZEb-OpI^M23NL#SGu7b4zLj0w+!nBA3ZB^XVRlqNcWys$`A-1glTk zi&deXFv0;g@99(=6EpV!I1?M~*L|O`Kd1|}2)1j40~9<=E|fBrTi_-wHr7KJUT4M3 z%-E>VQQTY7?Yycd-+jXlj3bW;7{x*Yp`*{(HQDI-wP4SLNec^eFT!LyoC1yj6hweMJUPKq(Rr2 z`?fbCXcH6I@4CwJ0Z#&azo6U-*;?&v3f$6irA@2F`B~4xRHmtp<$6lNHS0HmQ%#OV z=t+P#v%mcHPp3ktfhs+F3BOJit>1Zjv8eYfc_r7qf30~X^8oq_km-&3HC^JJb@tA5tb6YFw zLM@Ic=p{V3S5HADE7r!NLuHY$gL`dexbK))m5db+wDIT=OR@Y+QWe~j0D<$KZ0x~) zc=hY9$(kH8bFGrON}N%(35*+_dpcwUFt4bwX3G$ip}nUD0`Qry{k`o!-Bxw8dq)vgjX=`9{pb**=gp*5w4MT{5?C2t zNB=8vQNFVl4VMuKA3g_tX9TS3NwaTqTE{|U^dxYQJp>v#nJ!rpeRGAbD*>%E|0T~= zP9{XH85+60FRYrB3UcAvsPfARd~1d$@&3=gl!603et^2>*$E5!~>pqw>8qC(Px)DM>^@RA_ZNFDD>VxW z)f(8e(37VHH&AOm^iX$E+*QhgUc$P;mMSbR^`J$AyF?0x7W{*3$qF`l*tZAy#+l5U znKu&;-QOjXd6W13-uHd)_kC{y{9kc9@t9p{zRSv;=L@&S>H1vgVp${{6S$pt%vx_= z)7>kFgd+lEeC+364P$Oe2ota}4gdi~aYe#a4g@1%H$QVvfVcXsd=>!E_OKTKu$IfY z@`B{lxY_E5`woZ%6a{O!9RAAwZaX&s922IhG2WlNrMsUO?RTQn*%Pqac2;nbkU}01Sv|q27hLJUQR4F?P)_^_qIqEJ zfnX$zL~2ynFlmA)3Q)mp{!{E+k^}2t1-_p1v0!n%xBOSoZa;v0SVIz=7NCjPp>4%S=h{>-52_T{GlBv?Ylf`79c*w<6JS5c5*wlm~0M8~}Yx zi@Qy1uX`0IPoKfc!jf$Z@46iKJbHk-%gu&8zSq5quIl>$fcfbO)1);JxYB%=dE}5m z-2mXpci*emG~u1t*M`^^cbn9B*IjNFS_szzS~cS-8;MJ4;%Qf}1xfgeQ?Kym!h1e} z#kncnry0zYjS`PMI6pn1j%CJEcyr-BPCQTJ_|vl}#AVe}>O^+i1pwEu*XL)^mZWMl zpeXRjA@!O^xDc0F%}`#_5pV;q&(9L6QPss{6gb!+AGhDxO0lb5;Pv^L*XL&=>DPua z+L|K9xdgmEKP$v#R@`l3?B8D)W6O-OWmep6VuiTONEt`cuMNVa&3qCwJ8+9pSM_~l zzDyw(`&Pa8M@I&48$KY>aG+{-s;H#*-4P(^1psQrW+unbBQ%|J7-FOqB+>v9ANszs zu%z2&T2K-K5IP|X^#eqRS}xLeo@#211N;hmE_9I*F(CqEaDIBi(MyPcqL3EoDy$a5 z9g)bYdGN>~MCA~kMZy^F>qTw7qI$=c0L9)ThY*Z}P2+9`+Ll%&*^&Sm*5b+Vkl{Jr zF>Zc(LYK&{2yErE*ve-OL_|9y0Jcqur4)PQkS^;1pr&do#n zk=N&E^jg*lcmy21tS01Q73iuyOh!?8=2b^m9&r2j46ighCQ#gMVqeu2%Qj4K6avPU z*+1XJ5Kt}|#Px-4oO5oRA_iu^YIP{SeYKim3yoBzjPbFiMcP!)i<8_)3Z| z5Trb0`k;Q3+1;7lSy`bEcRvu4c4znd%{MdOzZu~Fs1k3Ce!vbyjQM2LP<)^SHPArRR5fCh*4S2W;@zL5vJX`L!0q*b<3tUWLzHy#W9i9veq4lSMj} z6p1jeB(xff!qcfFx_Tl2fQ{lRfJ*O)gjY?}c@;i9Hjehr4gf$?D2%31*fb1xv#((@ z8q%JejzeHoJ0X|J0(hnY5#`b%8fS{y8c;U03b#%^8NNw3pkez>Pjf)30aeetdLn4= z>_9G)<-HsK( zi)frF`d)sekN=;XoiPbbr;?bxpdM>S0=l@ia~W&-JSJynxP2fJErx-vo`^{^H7C$G zQ}o@0=)xqEX^lazQ5iU(XywP*ni(j;KSd41fUWF z%A(tSrp& z`y*#h^WS3pu$Ir8NYGMDr;Y-XzGrFLLtVNPoEMfHlv_t(Qe-3ouhJ(Np}Xc&5CbT*?Qc5=rlC25leC@2{@ zdm0-T+)Geuv+_M1Lm-3gzyR!kAK3N{VwJv@lHt2fXT z3gbcYWB#&<_z>egJr;+r?u2VmL#!97f*KQny@v;t=CjgM05e4ZH*GH}J>Jj!4Tk_! zmRmVi;Jr_$l9-&G!N_pb<{534P$s-ByoXW3BJ1U5G{nlWLPfAe`0RyoUQv;i>$so; zk>ji>6vo9zQzp-~84a9h4-oC~r@IGsx3ryu_%T~)S8r~(OBVdU&-zNZM7 zqi9tqEdrs1b48n?hmNSdd`zhJj!+qh9wN$w-A0RFiR|xQg{3 z&bi43AQ=KONMcH+LW^N=^KC6e=x$;9rOjF&r zcVROM=C+UQNI+a>m;UxwWxIF(GAq4)5oZNvD#gvju?tkb`X* zQiw(2m4CVw?VTNH3WaT6&@xAq7FNMg9 zkEY;%wH4)C1$09rJMKG@!CU7J;?V0aK};&i_tTh*-?D35_;f4$4Ts>LZpEG5-`NOg zuL7@Fnopo{{l3qd$_0X-vloB!TmJvK6e!-g^`hOd;X$k{ z%<-&;mKTu_ujMjXTz>CHZI1I1MB!rCt=bRNjf6!w4uRP77Q=AegzUb(%X1>@I0RNQ zy129ZJMCkgu8pijWPU(qFRtxe)*|8gAaYxHkCuw7J!$>Fho1pyNqe`mhL=nL0000< KMNUMnLSTYPU-!fS literal 0 HcmV?d00001 diff --git a/godot_ship/assets/game/3ShipA_Destroyed.png.import b/godot_ship/assets/game/3ShipA_Destroyed.png.import new file mode 100644 index 0000000..e4249e1 --- /dev/null +++ b/godot_ship/assets/game/3ShipA_Destroyed.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/3ShipA_Destroyed.png-95908b7b74da915910232dfaef45af1c.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/game/3ShipA_Destroyed.png" +dest_files=[ "res://.import/3ShipA_Destroyed.png-95908b7b74da915910232dfaef45af1c.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 From c97de2eacad5c630cd3dacc0d26c5d2c9ed74343 Mon Sep 17 00:00:00 2001 From: tommy-l-ngo Date: Sat, 13 Nov 2021 01:07:48 -0600 Subject: [PATCH 020/107] Created Sprite for Ship3B Destroyed --- ...d.png-78d0de82a039cc20026f662e8052d260.md5 | 3 ++ ....png-78d0de82a039cc20026f662e8052d260.stex | Bin 0 -> 2221 bytes godot_ship/assets/game/3ShipB_Destroyed.png | Bin 0 -> 1977 bytes .../assets/game/3ShipB_Destroyed.png.import | 34 ++++++++++++++++++ godot_ship/scenes/Gameplay.tscn | 7 +++- 5 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 godot_ship/.import/3ShipB_Destroyed.png-78d0de82a039cc20026f662e8052d260.md5 create mode 100644 godot_ship/.import/3ShipB_Destroyed.png-78d0de82a039cc20026f662e8052d260.stex create mode 100644 godot_ship/assets/game/3ShipB_Destroyed.png create mode 100644 godot_ship/assets/game/3ShipB_Destroyed.png.import diff --git a/godot_ship/.import/3ShipB_Destroyed.png-78d0de82a039cc20026f662e8052d260.md5 b/godot_ship/.import/3ShipB_Destroyed.png-78d0de82a039cc20026f662e8052d260.md5 new file mode 100644 index 0000000..2a1b1ac --- /dev/null +++ b/godot_ship/.import/3ShipB_Destroyed.png-78d0de82a039cc20026f662e8052d260.md5 @@ -0,0 +1,3 @@ +source_md5="611b7d43c6690e48e4f1a7c1b3304738" +dest_md5="825663500e46723735569e6cd71245f5" + diff --git a/godot_ship/.import/3ShipB_Destroyed.png-78d0de82a039cc20026f662e8052d260.stex b/godot_ship/.import/3ShipB_Destroyed.png-78d0de82a039cc20026f662e8052d260.stex new file mode 100644 index 0000000000000000000000000000000000000000..4243f47def42a044463fdd5985518cc22cf57cfb GIT binary patch literal 2221 zcmV;e2vYY)L{n5C0001B000000000001yTN0001y2mk<3PDdb#P)Px-M@d9MRA_;4jsh*S?MQcwtDEqkao5VQ$M4TT(H-Gi}s+Dk)C4(eJEB!Z!dA&_bh zOG1zk10}c~k`QcCMhsd*2qH@3W!FQehn?^F=FNLEZ&v$*f!*2J`M&pi-~0Z(XTS$v zc75mfGuAE3_xHb6{_y=B01EOIu7l5NzQ|7j4dJ$M<*kH~kMM!vs{nwPZ{Fec^H*42 zn3KMXhiW>G1xXWylVAXN{rr{qo39cwxc(3@db_o=2aEHwQse6#N?>Lr;dv(y84F4y z6or?T*I;pe7NzAiOknR&0szp^)`gjo1S(7u2(SqeOk1DP+az>rV+8@clLfe1}6MN$*nu;TutirvMkMZK!L#_X5DG)UO_f9@WG+71Y z);_y*l+b2CHUAupY$oNocVr5TUAqpzJ^uhOI(RWBynmJ5GgJEjfZ~$MKqW#kAj60E zLnxYxqi8A)UI|BdAhg5r*tP4BtqhU&Z2u~(SOmbP@?9r5lhRh8wX;Wz|4bkcqCclZ zFtn#&aeh{Mf3js7aMrq++Q*0YL)dtGhADyoKcLNk-zu1Fna1egMNdX#ruJ>QEo`t) z1-jWUtpXM5nmYh4QMFFnNKL0cX^Pcs;s%Ln)jX z3d_PVX~c>}RQ}r-9lU7AZ~Ur!VOTqmF<_7r`S|@P0Ps!)0F28|`;;#X%Yf1d1)&U% zi&ZKSmH}T+Xr}gI;lS5hu?UK$;_Un4xmnNZXlUySr9_}BCMGuCo&g|6zf+#)Lo=Wg zwanB$%0K-RfIG^ycK+yjmKa#KEUjuOkb$D9IPl4cOBq7lPOezxvm~ARfrqar^oi~E zt<)1%q*9)ck1vpVLK04)G@7j9m9XoYJ6Mwf$c>s$RzewJ<5HRD=I-{IwA*3DBKBm< zv@$s%gjosFDQNE=1iXzX+sS^gZdsTaNhpOJ$uey39>ns(97gWc;Pvx=QQdN2Xbo*$ zzQ(4*z(1GD{S_e0j3hipB?hJT?m^c|5QV3k)ERPMLPC8YAXkLQ!t$fLH(d95g`Hrh zEKULya5`UF`2amb43KbDT+vd1XFwOkfEA0tiba?kha@r4O3VEc5fLw*Jw*FK1;wb3 zCadhv8#12f!*)uw!5iK|_2l(AN7kSa5lvQ6&j0{yRhlj`U>~OArL}jES1j;jBiARaHKK(voUXker~p3&wk(GW zV*}K%`uP1Q6JA_WsVvh)1*9Mw&=t-b9gd<`Obk#Va`|Z=2EO?jd|^Vu`Ty;1uStE1 zxDpJmTVYq2rmGW1Q7zrHiDbr;5v&7_d+Uq$0m8FshV3?LVLoYC8L%^jYd z6av4a;>&>J&plPLc=3H8D;8nJtBzMyD&TlNBi*#=DojM|Zm(f?dksLYDMfiBpqCp; z6(HeeY9CzI>`7AjOJ?ml40!y&#NIee!JvvuDs2F`a=Z)Gzt!UM(>|QvIg5eeUl4D3 z#~c+EDU=@)1GI-Ai--m3rcKcG`|ZC0z@SV9U^RlvAMi9U&d<6sWd3tQTNlzzo4)%9 z{1g}f4BmfRv54)|2vUDAcI`R_hOfHz5qVHdfMB%zpj|c)EsPz+alpQE{0H_M&%ok* zt}n1|Ss3WOqTY=EH@pm`N-ptQUO1HG5n_vM8-m(M@Ha~6$DWz3e|ygDbH2H%8) zU(=!ukh3AhWVwV>CChpZ>|S0B&|!w^`dYRE0C*ZxWD|}vV^`x+8R#-3r(9TA-r87U zZgjF`+T~`s!z&CVoc>D=$}b!%r(j}l9MRiVh!)0?&7^R-zt6QaNfEJ8L0z-0jg`Ek zp`qG}6^oPV`dXBh*SIdeQ6YpA zTa1)E#4alD17ruBd{5DcH;PLt?OUlQK7YwUcl1FD7~tGzx@j}i88IMu^nk(>@*yEAKSX*Mzu6+aXkfZRdM-F*lT?P!vjyMy{ z_Y`!5^YAF3a~hhUstJR@%Lrow9u~x+B<$#w4+NZswn+gQIHk0X_bMOKI2Z0|>*f@WCs2p87ByNOw;3w00000NkvXXu0mjfCm;nA literal 0 HcmV?d00001 diff --git a/godot_ship/assets/game/3ShipB_Destroyed.png b/godot_ship/assets/game/3ShipB_Destroyed.png new file mode 100644 index 0000000000000000000000000000000000000000..5d500a04f98f302ae811afecab5bed82c3266f90 GIT binary patch literal 1977 zcmV;q2S)gbP)Px+b4f%&RA_L26j= zP&Xc;;3=0aYd!dHp&;pE*)}5V>K>#bR%$`Sc&Md>R_vu&%lhX~$Oek`(6@&;&w2Ca zy*HDnd)NsJVhDkX23;Q_2AV<^Fm#7XZSjuLp0djjioio{ekN)6&@=#pGaAdO3s` zxE{Q%7JL0zo{gi}>(>-^_D2B#HBCWG4n|Sx^GP#diDawSD4G}%`+Sk2x{a$!M=0Wy15@?n7sfSo-n71fp6=f>7{ z?QkLr9UCNHM^Z-M{;D z)h!2LRRA(dsOxFhw024nw!FXmAfcY+;lW)?vB#^yvy|ec{3m)&REJ6MBWUD%7uwuu6sTc1_1LYcxDV7_Ppi#2EqWZfIU$F zzPV3Wo{j5DbU>_r$Qyvm?NJ}jJ=2O*0wNb*U;tnjzg=#RT2N8fo1COq9rH=zY3ojX-iPiLipRCK^G=Gr>dBAY=oH zz&0FXW$5ndf@7>K>tx2}(B0F8+O-m{a^er{#1cRvunlJ{r8tuSVyWz4ECt{x^{tfd zH|da9z2EQv%d>Hz%*YhL!qgC)k|&@pw?`#;BOsO=a&2H?YKTi~I^xuM7i7^ z)#di6JZl$;D+UI}Goyx?6Qj9vK8T7xD$)JC3%5R8MR?#B^fnwfFiDX@@0B0WCZaymkv1Bjjp(84WFdDhBf zAUx2gwQ$)j$EM`M09YYbZ59>jGCdcu1whu7WuVyWN4PVjJ+Cj$=o;9!K3o-whL*8_ z-qWlN5NAVx@p6fyWieduNQb;CG0>bCAeR{`sw=e}0A!7j212$c+ee@)B-?O2o*4xK zS?@;}U}sN+C@=Q8(jX zum=^Sx4555=9Uj^CRdb1U|V&Jl^uDp36B2f;++VLgoO@;qQgrr~0GzRuk`8%wE>!4^l-SK4uyMt;Yb8h=B`Db(VJq+O z%ZjB9Y$jI}vjm0LFEVTKTU~CGGQv`y50isY&HK>`$!D_uqLBIiEY`|C#&?OTf|Raa;2{00000 LNkvXXu0mjf`LUyK literal 0 HcmV?d00001 diff --git a/godot_ship/assets/game/3ShipB_Destroyed.png.import b/godot_ship/assets/game/3ShipB_Destroyed.png.import new file mode 100644 index 0000000..4555e0f --- /dev/null +++ b/godot_ship/assets/game/3ShipB_Destroyed.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/3ShipB_Destroyed.png-78d0de82a039cc20026f662e8052d260.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/game/3ShipB_Destroyed.png" +dest_files=[ "res://.import/3ShipB_Destroyed.png-78d0de82a039cc20026f662e8052d260.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=false +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=false +svg/scale=1.0 diff --git a/godot_ship/scenes/Gameplay.tscn b/godot_ship/scenes/Gameplay.tscn index 4ff061b..c877f34 100644 --- a/godot_ship/scenes/Gameplay.tscn +++ b/godot_ship/scenes/Gameplay.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=11 format=2] +[gd_scene load_steps=12 format=2] [ext_resource path="res://assets/game/board_blue.png" type="Texture" id=1] [ext_resource path="res://script/title screen/Title-Screen-Background.png" type="Texture" id=2] @@ -10,6 +10,7 @@ [ext_resource path="res://scenes/ships/4Ship.tscn" type="PackedScene" id=8] [ext_resource path="res://assets/game/RedCrosshair.png" type="Texture" id=9] [ext_resource path="res://script/game/Gameplay/Crosshair.gd" type="Script" id=10] +[ext_resource path="res://assets/game/3ShipB_Destroyed.png" type="Texture" id=11] [node name="Game" type="Control"] anchor_right = 1.0 @@ -155,6 +156,10 @@ margin_right = 83.0 margin_bottom = 58.0 dialog_text = "You can't fire outside the board" +[node name="3ShipB_Destroyed" type="Sprite" parent="."] +position = Vector2( 228.464, 163.857 ) +texture = ExtResource( 11 ) + [connection signal="pressed" from="VBoxContainer/Forfeit" to="." method="_on_Forfeit_pressed"] [connection signal="about_to_show" from="ConfirmationDialog" to="." method="_on_ConfirmationDialog_about_to_show"] [connection signal="pressed" from="Confirm Placement" to="." method="_on_Confirm_Placement_pressed"] From f6e2eb25445146dd45ae863185e45e4af4c14b62 Mon Sep 17 00:00:00 2001 From: tommy-l-ngo Date: Sat, 13 Nov 2021 01:19:19 -0600 Subject: [PATCH 021/107] Created Sprite for Ship4 Destroyed --- ...d.png-acd8cae1448d0240f60f78c6681833bd.md5 | 3 ++ ....png-acd8cae1448d0240f60f78c6681833bd.stex | Bin 0 -> 2738 bytes godot_ship/assets/game/4Ship_Destroyed.png | Bin 0 -> 2415 bytes .../assets/game/4Ship_Destroyed.png.import | 34 ++++++++++++++++++ godot_ship/scenes/Gameplay.tscn | 6 ++-- 5 files changed, 40 insertions(+), 3 deletions(-) create mode 100644 godot_ship/.import/4Ship_Destroyed.png-acd8cae1448d0240f60f78c6681833bd.md5 create mode 100644 godot_ship/.import/4Ship_Destroyed.png-acd8cae1448d0240f60f78c6681833bd.stex create mode 100644 godot_ship/assets/game/4Ship_Destroyed.png create mode 100644 godot_ship/assets/game/4Ship_Destroyed.png.import diff --git a/godot_ship/.import/4Ship_Destroyed.png-acd8cae1448d0240f60f78c6681833bd.md5 b/godot_ship/.import/4Ship_Destroyed.png-acd8cae1448d0240f60f78c6681833bd.md5 new file mode 100644 index 0000000..0c59f15 --- /dev/null +++ b/godot_ship/.import/4Ship_Destroyed.png-acd8cae1448d0240f60f78c6681833bd.md5 @@ -0,0 +1,3 @@ +source_md5="dd0aa67efe22d26c04757928ec2b2822" +dest_md5="85b500eeadf9068df9f503ca7b8eaef2" + diff --git a/godot_ship/.import/4Ship_Destroyed.png-acd8cae1448d0240f60f78c6681833bd.stex b/godot_ship/.import/4Ship_Destroyed.png-acd8cae1448d0240f60f78c6681833bd.stex new file mode 100644 index 0000000000000000000000000000000000000000..474b2a64a58b11b9768464dfe510e1fc9cdafdf9 GIT binary patch literal 2738 zcmV;j3QhG#L{n5C0001h000000000001yTN0001%3IG65PDdb#P)Px@l-IS4pjt!!HNIFu`(iKtiuyq$i-A;uTnLad)4{EV5zHGtDu1S38AQmj$ zQ3_k#hcF_pjKW|w4^>L09TF5X9d>6#l&!ENzTACC&hea^bMHO(Mwi_W0?EBM`M>+0 z|NQs+|8ru44!-F7v)*aM7iV?P|B(1j_dEcU7+#?bCI2c4ngk5)Ug_#?!v&9r5E0^{ z_o{UQM#jUB9%Cn&G$e7-1gLR>Vo3-I7zG~ygoXytGdOI;rZE8x6x=;QFU&Pwa@(eXRWIedwhGtiX_fCw7GN_9d{= zo0H+?Irr!1ylJR|kdA3KnBwBW9(7X*POkN@RdL2e4=tmFR4OVe0H}=t$i)Xss=nd) zu0_U;5)uHE-YdV)9T-21a1omfl)>%@sB?i*-_T0OojihTF4yAi>o>Xv3kawWy!vth zpMTXt+@&ry6##e^`<6Qx>bYa614Ov!y($jEj{WQC8|}ha|4nY(vcVLd#l96jnq{V( z2qnAegyzYX&VIc5a)FcF#Q5^uG?wS4@%HtbqBOu$xXOO*guPB9ss$cfYYZkB!xNdcK~y)@(`^K8)BYMF@q41~Art zlk@~QY^=^>VP=#DB1^(3IHjJ3p`iiX3S2Y1jwN9JGzBo(s3b$7o|ZwmEWfo(@rwO6);5;2)}%Q!S3Tsm(9eKY%m2{;FO#D zJ!t~rM~|siJl~&d(U9>~S6600gHSK4u_Be7*Phssu!b}PLl3aT*oO?8)%=UIocc9W zALvd)r^`!!%<1xyT7aEy%9F;Y!fuFczrfG~suJ4<02P(h@UP_#_{#aAV~IFjUc=6b zVIm@nlK^ZLmDTJiB|J5W_~I<$i?g&eyWsKAyO-&l7!v3keU5{@E#+Wu3-8|i9sqE# zx1|6%#Y_ycv9gm)vLaNs-ET->d2SlXKp6=-CB1z~si>?*cxtksNX^%O03c=Dkic#_ zkz1BOmQ%KDFop2cB*Kp#a|)Vm&jC3vkYhEMYc*}?2I0o)JP;_OQU6)(UjbC1r}4N) zpoI$_58}-996yY}{yR6OMkEQ4;Pb?ekOXODRnhb8-D@Q=GCf(Xuo;gb8(e}PI+~Ep zc1({@IoR7mMP;>Ab9!TS9?7#y@T00gBiN&EWj)`WD$d(j>wm(Xl zRtxMB`2(oxFec zrxJYV<(r)BO^Nmx&=_Fa^a_w$5pQAgygH?lY{!1iW`3kb*kSX;j_}LR{{$w}g#_63 z0itd?_OGLfxoCNAn%le*e)JgOsY&{o3_~^;;fxYgR95E*2vGXlKm3|I;B>VC`{LHh z=DVM`?lu59nPznN><~CzUb>hi zdY-5W*mlzig@{ZMoGvf)&a>BPk;{9?23VK{#1kR|gdDkRJuymPDG$_KuElOTfzZ$Z zLPG=8C>a_V!vxYn$mV|XbW}eN*cwrmgdqXCduE021L*CrBJm+ZLYKh!VT7urY$k^B zU<9wwW_hVz1Yrz}A4c%Ezx)WOx?uLG8@B@2;A?KDQ_a`hj-J6``q}I?lGhklU)G20H`P zp5SW5#-i-Y$AF+IsT9*8B{1D9W=XVk7H!|y19nHCV0#w;#mr)+9<)55yNgC2c+{k9AN z0J;4{b-qkd>j6gi|Jc}Ub(fUPcS`{6KPIvb=VG80fRum+O#f?20@n8rSlPNO^BqG1 z>S2)G+D)M6ei;HMISj(zq6B3AAy=?DT@9vGZ_ZyPXgN*A53JAyqBOo3MS=X~RgbWS-F|Fv$ZJE0_Bp^#d s1T)5UFO(snaa`IsP~0}26UmbQ0Z!__@($i=Y5)KL07*qoM6N<$f*)QJg#Z8m literal 0 HcmV?d00001 diff --git a/godot_ship/assets/game/4Ship_Destroyed.png b/godot_ship/assets/game/4Ship_Destroyed.png new file mode 100644 index 0000000000000000000000000000000000000000..5c2a710e87c299f3ea05a94550991386aef31e3c GIT binary patch literal 2415 zcmV-#36S=QP)Px;DM>^@RCt`#TVF_A*%|*`DRB^ttSqCJ+6h}6Qg@K(gJvaQ7DwEO4~=~gP2Gfz z$mSuFkuoNjm%KD!ggVBDEWs3)w2IKxmtkFrvI@bdlqg}EgezT~Ce%L^ixGx9dGPjO za*pTzKj+S9Hoq6=-@V`OeE-h(efJ1_sQ9w`&+5s*88y@U{KBp9_6tqePQ(E~eHni& zWlBUy_z(YhseaM&m3lI8hW>SXzZ_BF?H8I5y?uv%wl2#!;rGKW2_XV3!o5AXbp4jw z%f$(pt)3tgEx6Kv*B79#s~cJX0ON(TSY7rA-^*1L=&`!&fhR8^VK{L(1nks5v^SU* z?h?W#2>15T*8`Cb6b!o;?utOR;Yh$v{YOH81?&9)(B1zKyPdv__JgdLKuHEQBt-Io zYXYk;UIPHG=3hf9v<7uQsw&B#DyosJXy9Jm1EiD~QlT}p?$iriYnul|9I)$V6P6bz z0Ho70IJaqT4UqUJsyBn1&FSZx2QrC&k=>C?1N!*41KAyU@$)r-9(K-ms079fXL0{e z-{Z>s<)b4&9PqPm8j*Xq47r|W9KYX*5-yZ5a|E_ zY$xIv>2qJ6zxOb7T@`O_Zb&12x2S_HKbkQ7hBzW@Hl~a;@W2253n%=3B7`)n0QfUv zMg$T+eG0EHAe5@JN+1TGe zE8>Aa_EuwmGvPc5Nkiaj{xz;LyQsKCt*kwVby>!`EK}j-RTX^f85qLw$=B1^MWgDE zy~Wn%hDK#dGN}4K`6s@O{iwMne5q5o4zMHu0IfUq=t+*Lcj{?nJU2Otv*+94 z^#!nLt|S6fVubQ-YwI-C)>VIRZL8w4@)B0 z4!NFY05ep0x|&M3E6WKHo(=bb{AKuKZ|VEopFTypq@S_8 zMo9+MQ`Ji51g^|qHpH|iZ^QPQ-AO>EiF!5v zn(1$aH9+jls#@KTswpJ~Al=+t{Np}t*VbhPm9^Gwn=pascQ!W>g56T0lTcm7ODEUW+NdZ0#;y&nQbz1^D#pyF47;^ z67c#0^k!aPz>rvWJALZCx(BFkXfX)oofkN2fOI^|k0wmBn%;CQ5uVA3qZ1B9It+q= z^nBN&R$#{f264*|}Fi@Sx}k*<5fM%akc-SZm*QXc(dWU>pFT6#d-QMLYe#q9Mv3N ziQc}0=*TdAPt1@C4Q58*cYpXbyuK!2$9%N1`r@@F`RJ!7Zi*9EjY+t-$8>bl*cLHt zT!%s+o5(tW#1cvqoar}Na z03fBrFcccZ6Es;4q}{-jz|h_xa{pTP?yPW_ey${g>cvk!M`K$A+le^VWf|2CEhw+5 zz})1hrXS>m!3kFurVN!a0naHKuP-3<(8Hhso|1ZNb34( zo!48X?~F9C`Jd}Tzt^YXj0uqGXeP+YDVp~}V7Jp}Ie->fVk72wHdQajII$=y`w>K8(Gt#LKNfW%0<4E9T{ITRV8q6vnVFG%v;~6W6 zI4lB#t7{x(S85`002ovPDHLkV1lFzi5>s| literal 0 HcmV?d00001 diff --git a/godot_ship/assets/game/4Ship_Destroyed.png.import b/godot_ship/assets/game/4Ship_Destroyed.png.import new file mode 100644 index 0000000..c3d46de --- /dev/null +++ b/godot_ship/assets/game/4Ship_Destroyed.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/4Ship_Destroyed.png-acd8cae1448d0240f60f78c6681833bd.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/game/4Ship_Destroyed.png" +dest_files=[ "res://.import/4Ship_Destroyed.png-acd8cae1448d0240f60f78c6681833bd.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=false +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=false +svg/scale=1.0 diff --git a/godot_ship/scenes/Gameplay.tscn b/godot_ship/scenes/Gameplay.tscn index c877f34..12a7bb6 100644 --- a/godot_ship/scenes/Gameplay.tscn +++ b/godot_ship/scenes/Gameplay.tscn @@ -10,7 +10,7 @@ [ext_resource path="res://scenes/ships/4Ship.tscn" type="PackedScene" id=8] [ext_resource path="res://assets/game/RedCrosshair.png" type="Texture" id=9] [ext_resource path="res://script/game/Gameplay/Crosshair.gd" type="Script" id=10] -[ext_resource path="res://assets/game/3ShipB_Destroyed.png" type="Texture" id=11] +[ext_resource path="res://assets/game/4Ship_Destroyed.png" type="Texture" id=11] [node name="Game" type="Control"] anchor_right = 1.0 @@ -156,8 +156,8 @@ margin_right = 83.0 margin_bottom = 58.0 dialog_text = "You can't fire outside the board" -[node name="3ShipB_Destroyed" type="Sprite" parent="."] -position = Vector2( 228.464, 163.857 ) +[node name="4Ship_Destroyed" type="Sprite" parent="."] +position = Vector2( 196.65, 181.634 ) texture = ExtResource( 11 ) [connection signal="pressed" from="VBoxContainer/Forfeit" to="." method="_on_Forfeit_pressed"] From e8f11bcbc359f0c81625400e164d72a67c5c24b2 Mon Sep 17 00:00:00 2001 From: tommy-l-ngo Date: Sat, 13 Nov 2021 01:41:31 -0600 Subject: [PATCH 022/107] Created Sprite for Ship5 Destroyed --- ...d.png-95908b7b74da915910232dfaef45af1c.md5 | 2 +- ....png-95908b7b74da915910232dfaef45af1c.stex | Bin 2401 -> 2401 bytes ...d.png-26b685facbe48d12dffaa45c142d98de.md5 | 3 ++ ....png-26b685facbe48d12dffaa45c142d98de.stex | Bin 0 -> 3590 bytes .../assets/game/3ShipA_Destroyed.png.import | 4 +-- godot_ship/assets/game/5Ship_Destroyed.png | Bin 0 -> 3263 bytes .../assets/game/5Ship_Destroyed.png.import | 34 ++++++++++++++++++ godot_ship/scenes/Gameplay.tscn | 7 +--- 8 files changed, 41 insertions(+), 9 deletions(-) create mode 100644 godot_ship/.import/5Ship_Destroyed.png-26b685facbe48d12dffaa45c142d98de.md5 create mode 100644 godot_ship/.import/5Ship_Destroyed.png-26b685facbe48d12dffaa45c142d98de.stex create mode 100644 godot_ship/assets/game/5Ship_Destroyed.png create mode 100644 godot_ship/assets/game/5Ship_Destroyed.png.import diff --git a/godot_ship/.import/3ShipA_Destroyed.png-95908b7b74da915910232dfaef45af1c.md5 b/godot_ship/.import/3ShipA_Destroyed.png-95908b7b74da915910232dfaef45af1c.md5 index bc1e9b6..3868b2f 100644 --- a/godot_ship/.import/3ShipA_Destroyed.png-95908b7b74da915910232dfaef45af1c.md5 +++ b/godot_ship/.import/3ShipA_Destroyed.png-95908b7b74da915910232dfaef45af1c.md5 @@ -1,3 +1,3 @@ source_md5="981973bd65846a8aa0b6cdaf90b7d8e7" -dest_md5="8aedf2e5eaf3c7b65c34d1ba49f4736c" +dest_md5="4fff7820ce95350d0c7eac5e6e5d8310" diff --git a/godot_ship/.import/3ShipA_Destroyed.png-95908b7b74da915910232dfaef45af1c.stex b/godot_ship/.import/3ShipA_Destroyed.png-95908b7b74da915910232dfaef45af1c.stex index 1f166f8a487a7a85a6bf81efdcb413c20734c7a4..f5772a0df75fc0fb018a3eec5506d869911acc80 100644 GIT binary patch delta 29 ecmaDT^iW8|-6c3gfq{V`0f-?$fNi6QFDC$AfCSzE delta 29 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 M07*qoM6N<$f=)TAzW@LL literal 0 HcmV?d00001 diff --git a/godot_ship/assets/game/3ShipA_Destroyed.png.import b/godot_ship/assets/game/3ShipA_Destroyed.png.import index e4249e1..ef51b82 100644 --- a/godot_ship/assets/game/3ShipA_Destroyed.png.import +++ b/godot_ship/assets/game/3ShipA_Destroyed.png.import @@ -20,7 +20,7 @@ compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 -flags/filter=true +flags/filter=false flags/mipmaps=false flags/anisotropic=false flags/srgb=2 @@ -30,5 +30,5 @@ process/HDR_as_SRGB=false process/invert_color=false stream=false size_limit=0 -detect_3d=true +detect_3d=false svg/scale=1.0 diff --git a/godot_ship/assets/game/5Ship_Destroyed.png b/godot_ship/assets/game/5Ship_Destroyed.png new file mode 100644 index 0000000000000000000000000000000000000000..6a906610b23cdb50853cd469998de6276e444517 GIT binary patch literal 3263 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 literal 0 HcmV?d00001 diff --git a/godot_ship/assets/game/5Ship_Destroyed.png.import b/godot_ship/assets/game/5Ship_Destroyed.png.import new file mode 100644 index 0000000..60b407c --- /dev/null +++ b/godot_ship/assets/game/5Ship_Destroyed.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/5Ship_Destroyed.png-26b685facbe48d12dffaa45c142d98de.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/game/5Ship_Destroyed.png" +dest_files=[ "res://.import/5Ship_Destroyed.png-26b685facbe48d12dffaa45c142d98de.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=false +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=false +svg/scale=1.0 diff --git a/godot_ship/scenes/Gameplay.tscn b/godot_ship/scenes/Gameplay.tscn index 12a7bb6..4ff061b 100644 --- a/godot_ship/scenes/Gameplay.tscn +++ b/godot_ship/scenes/Gameplay.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=12 format=2] +[gd_scene load_steps=11 format=2] [ext_resource path="res://assets/game/board_blue.png" type="Texture" id=1] [ext_resource path="res://script/title screen/Title-Screen-Background.png" type="Texture" id=2] @@ -10,7 +10,6 @@ [ext_resource path="res://scenes/ships/4Ship.tscn" type="PackedScene" id=8] [ext_resource path="res://assets/game/RedCrosshair.png" type="Texture" id=9] [ext_resource path="res://script/game/Gameplay/Crosshair.gd" type="Script" id=10] -[ext_resource path="res://assets/game/4Ship_Destroyed.png" type="Texture" id=11] [node name="Game" type="Control"] anchor_right = 1.0 @@ -156,10 +155,6 @@ margin_right = 83.0 margin_bottom = 58.0 dialog_text = "You can't fire outside the board" -[node name="4Ship_Destroyed" type="Sprite" parent="."] -position = Vector2( 196.65, 181.634 ) -texture = ExtResource( 11 ) - [connection signal="pressed" from="VBoxContainer/Forfeit" to="." method="_on_Forfeit_pressed"] [connection signal="about_to_show" from="ConfirmationDialog" to="." method="_on_ConfirmationDialog_about_to_show"] [connection signal="pressed" from="Confirm Placement" to="." method="_on_Confirm_Placement_pressed"] From aea9bbe2b0e3ac6cdc49a2c9d29aaaaac89bc2d5 Mon Sep 17 00:00:00 2001 From: tommy-l-ngo Date: Sat, 13 Nov 2021 02:06:56 -0600 Subject: [PATCH 023/107] Created Sprite for "Miss" --- ...s.png-ddfb2f437f6e39c5895f51ba5ab8423e.md5 | 3 ++ ....png-ddfb2f437f6e39c5895f51ba5ab8423e.stex | Bin 0 -> 545 bytes godot_ship/assets/game/Miss.png | Bin 0 -> 379 bytes godot_ship/assets/game/Miss.png.import | 34 ++++++++++++++++++ godot_ship/scenes/Gameplay.tscn | 3 +- 5 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 godot_ship/.import/Miss.png-ddfb2f437f6e39c5895f51ba5ab8423e.md5 create mode 100644 godot_ship/.import/Miss.png-ddfb2f437f6e39c5895f51ba5ab8423e.stex create mode 100644 godot_ship/assets/game/Miss.png create mode 100644 godot_ship/assets/game/Miss.png.import diff --git a/godot_ship/.import/Miss.png-ddfb2f437f6e39c5895f51ba5ab8423e.md5 b/godot_ship/.import/Miss.png-ddfb2f437f6e39c5895f51ba5ab8423e.md5 new file mode 100644 index 0000000..8347cc4 --- /dev/null +++ b/godot_ship/.import/Miss.png-ddfb2f437f6e39c5895f51ba5ab8423e.md5 @@ -0,0 +1,3 @@ +source_md5="7db22073ddecad057e2516a409e715e9" +dest_md5="7831bb54cb10c5c9023e7f33bc355eff" + diff --git a/godot_ship/.import/Miss.png-ddfb2f437f6e39c5895f51ba5ab8423e.stex b/godot_ship/.import/Miss.png-ddfb2f437f6e39c5895f51ba5ab8423e.stex new file mode 100644 index 0000000000000000000000000000000000000000..d790ddd0cecd4b5c989de0ac75ae2af1fe8e1965 GIT binary patch literal 545 zcmV++0^a>cL{n5C0000W000000000001yTN000050ssI|PDdb#P)Px$yGcYrR9J<@m(NPWKoG{i zgkDUcAPDMB5Q>LhyowK?S0BL#^ASAz03HP|A`%GnmIMPiHPMUfrMul^XaCGL(1AkR z%(vgKyR*Af;J}gSAMPF=jf8cc8{d6>ypn@adMaL?pVa%5D+Yk8)orx-I5*{rDTo-o z)Xdn*5yZuExz7;0C9s6pzGB0xcL4~k0AnD;I?rVhTlF>oK~z5nVxV_HBmi)Fc5V!C zd~#_Ue6V$i8ld3OHieg93&A$`0dOFq%+*7p1`IP>O|(sc zqil{pks+HeSmt$A?h>Yg0D#~AJILHfngXKlHo@j(;=T|ZbAY%Du5a!Q(dYXc03b~| zWkf+Z&JHVpw;vcm2no@58<(MT7W95XB?ernYODQp)npK%{lH+K%W4PIx|15$fU?$n z2a#beL#uZ7v90HO`vJY>wkgQvm;rR_9bv9R zxcZ4fSo?uUa~&c`@9K&ZZQ3~IEWH&V;#ZRpz65d!9MwFCx+;ycog0c!{?p-@>k)8^ jl6r1GK$=gbKS=xo_=ypP5a>$i00000NkvXXu0mjfXD{bP literal 0 HcmV?d00001 diff --git a/godot_ship/assets/game/Miss.png b/godot_ship/assets/game/Miss.png new file mode 100644 index 0000000000000000000000000000000000000000..2b1014de02a14dcde42e7d744eeffe2b2d896373 GIT binary patch literal 379 zcmV->0fhdEP)Px$HAzH4R9J=W)-lS$Fcb&yzfPKhAPCk){1C)JJb?%3+#~d09>LiIcmxL#3g4z; zp_7V>ajHmpN#09E9Qw9aU;aPRCMi%?UB6sWoapInp{w*qaboRn*qZn}72u&2RL~KHvjGwW0Nih9R=5bjMcl3zcDNY8K}f;@peY5kRe(H8$=^({ zj{$~%bL~P%&ki;qiW9AZ4q7V2ClM?_d7T$;JAldvC&0AH6mR?KcxY5XSOKQ+@;a}A zV1Ex3Wm{@K2N*d6zI(fECi>xkoCy-(d$70=R2c_+e|A1Q-23D3>3Io7;0K9PgL?ZwI002ovPDHLkV1oSYq2B-i literal 0 HcmV?d00001 diff --git a/godot_ship/assets/game/Miss.png.import b/godot_ship/assets/game/Miss.png.import new file mode 100644 index 0000000..7809347 --- /dev/null +++ b/godot_ship/assets/game/Miss.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Miss.png-ddfb2f437f6e39c5895f51ba5ab8423e.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/game/Miss.png" +dest_files=[ "res://.import/Miss.png-ddfb2f437f6e39c5895f51ba5ab8423e.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=false +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=false +svg/scale=1.0 diff --git a/godot_ship/scenes/Gameplay.tscn b/godot_ship/scenes/Gameplay.tscn index 4ff061b..8c635ee 100644 --- a/godot_ship/scenes/Gameplay.tscn +++ b/godot_ship/scenes/Gameplay.tscn @@ -12,8 +12,9 @@ [ext_resource path="res://script/game/Gameplay/Crosshair.gd" type="Script" id=10] [node name="Game" type="Control"] +anchor_top = 0.00123732 anchor_right = 1.0 -anchor_bottom = 0.889 +anchor_bottom = 0.890237 margin_left = -0.5 margin_top = 0.740086 margin_right = -0.5 From b0995cbd0d4affd80b8563a3bb7eeb84e9c9fe0f Mon Sep 17 00:00:00 2001 From: tommy-l-ngo Date: Sat, 13 Nov 2021 02:09:41 -0600 Subject: [PATCH 024/107] Fixed blurry pixel art Changed texture rendering --- ...d.png-a36d67b33a10832808db404a3f8ef365.md5 | 2 +- ....png-a36d67b33a10832808db404a3f8ef365.stex | Bin 8689 -> 8689 bytes ...d.png-dbef7fef33c56892772634130111c923.md5 | 2 +- ....png-dbef7fef33c56892772634130111c923.stex | Bin 8689 -> 8689 bytes ...e.png-8626e50dfcb57a0efd28af7e65ef2b42.md5 | 2 +- ....png-8626e50dfcb57a0efd28af7e65ef2b42.stex | Bin 1264 -> 1264 bytes godot_ship/assets/game/board_blue.png.import | 4 ++-- .../options/Option-Background.png.import | 4 ++-- .../Title-Screen-Background.png.import | 4 ++-- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/godot_ship/.import/Option-Background.png-a36d67b33a10832808db404a3f8ef365.md5 b/godot_ship/.import/Option-Background.png-a36d67b33a10832808db404a3f8ef365.md5 index 65f245f..f5e763d 100644 --- a/godot_ship/.import/Option-Background.png-a36d67b33a10832808db404a3f8ef365.md5 +++ b/godot_ship/.import/Option-Background.png-a36d67b33a10832808db404a3f8ef365.md5 @@ -1,3 +1,3 @@ source_md5="a88d669f1f058a347cc4de2244bac64b" -dest_md5="1073062c6e594eff250036d7489d44a7" +dest_md5="1ed8fab74f35d40e257776b2eab84c5f" diff --git a/godot_ship/.import/Option-Background.png-a36d67b33a10832808db404a3f8ef365.stex b/godot_ship/.import/Option-Background.png-a36d67b33a10832808db404a3f8ef365.stex index 1ea8a2a7bec397add7b1da989202550a02af9110..502efb50c84cb40c4866cdd0a7481bc3968db5c8 100644 GIT binary patch delta 29 fcmez9{Lxv&-6c4rfr)`3gOLFW1lTr;+*Jesb;Aa8 delta 29 icmez9{Lxv&-6c4rfr)`3gOP!Og#iQv*f)yYRRjQa_y%|Y diff --git a/godot_ship/.import/Title-Screen-Background.png-dbef7fef33c56892772634130111c923.md5 b/godot_ship/.import/Title-Screen-Background.png-dbef7fef33c56892772634130111c923.md5 index 65f245f..f5e763d 100644 --- a/godot_ship/.import/Title-Screen-Background.png-dbef7fef33c56892772634130111c923.md5 +++ b/godot_ship/.import/Title-Screen-Background.png-dbef7fef33c56892772634130111c923.md5 @@ -1,3 +1,3 @@ source_md5="a88d669f1f058a347cc4de2244bac64b" -dest_md5="1073062c6e594eff250036d7489d44a7" +dest_md5="1ed8fab74f35d40e257776b2eab84c5f" diff --git a/godot_ship/.import/Title-Screen-Background.png-dbef7fef33c56892772634130111c923.stex b/godot_ship/.import/Title-Screen-Background.png-dbef7fef33c56892772634130111c923.stex index 1ea8a2a7bec397add7b1da989202550a02af9110..502efb50c84cb40c4866cdd0a7481bc3968db5c8 100644 GIT binary patch delta 29 fcmez9{Lxv&-6c4rfr)`3gOLFW1lTr;+*Jesb;Aa8 delta 29 icmez9{Lxv&-6c4rfr)`3gOP!Og#iQv*f)yYRRjQa_y%|Y diff --git a/godot_ship/.import/board_blue.png-8626e50dfcb57a0efd28af7e65ef2b42.md5 b/godot_ship/.import/board_blue.png-8626e50dfcb57a0efd28af7e65ef2b42.md5 index 4238530..ec1b676 100644 --- a/godot_ship/.import/board_blue.png-8626e50dfcb57a0efd28af7e65ef2b42.md5 +++ b/godot_ship/.import/board_blue.png-8626e50dfcb57a0efd28af7e65ef2b42.md5 @@ -1,3 +1,3 @@ source_md5="b92638ab580fe79d74bb8107654c3251" -dest_md5="63739009bf08a9c44da9311804dd83ec" +dest_md5="17edee549d78810f083297a469b16f26" diff --git a/godot_ship/.import/board_blue.png-8626e50dfcb57a0efd28af7e65ef2b42.stex b/godot_ship/.import/board_blue.png-8626e50dfcb57a0efd28af7e65ef2b42.stex index 515531db0a694adde2c93fe4b1046e1d89509450..a234899ed312817c6c715e461369558194b1f1a2 100644 GIT binary patch delta 29 dcmeys`GHf!-6c50g^_^)gdsqHZKKE?764)`1%3bk delta 29 fcmeys`GHf!-6c50g^_^)gjpCsK!AOt$Q>2{Vqyh@ diff --git a/godot_ship/assets/game/board_blue.png.import b/godot_ship/assets/game/board_blue.png.import index 9778702..6feeedd 100644 --- a/godot_ship/assets/game/board_blue.png.import +++ b/godot_ship/assets/game/board_blue.png.import @@ -20,7 +20,7 @@ compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 -flags/filter=true +flags/filter=false flags/mipmaps=false flags/anisotropic=false flags/srgb=2 @@ -30,5 +30,5 @@ process/HDR_as_SRGB=false process/invert_color=false stream=false size_limit=0 -detect_3d=true +detect_3d=false svg/scale=1.0 diff --git a/godot_ship/script/options/Option-Background.png.import b/godot_ship/script/options/Option-Background.png.import index 5e1dc21..759ef6d 100644 --- a/godot_ship/script/options/Option-Background.png.import +++ b/godot_ship/script/options/Option-Background.png.import @@ -20,7 +20,7 @@ compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 -flags/filter=true +flags/filter=false flags/mipmaps=false flags/anisotropic=false flags/srgb=2 @@ -30,5 +30,5 @@ process/HDR_as_SRGB=false process/invert_color=false stream=false size_limit=0 -detect_3d=true +detect_3d=false svg/scale=1.0 diff --git a/godot_ship/script/title screen/Title-Screen-Background.png.import b/godot_ship/script/title screen/Title-Screen-Background.png.import index 2fb52fc..7a15ce8 100644 --- a/godot_ship/script/title screen/Title-Screen-Background.png.import +++ b/godot_ship/script/title screen/Title-Screen-Background.png.import @@ -20,7 +20,7 @@ compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 -flags/filter=true +flags/filter=false flags/mipmaps=false flags/anisotropic=false flags/srgb=2 @@ -30,5 +30,5 @@ process/HDR_as_SRGB=false process/invert_color=false stream=false size_limit=0 -detect_3d=true +detect_3d=false svg/scale=1.0 From c766a50949de2bfb0700b8234e8e9d12fc31d1d2 Mon Sep 17 00:00:00 2001 From: tommy-l-ngo Date: Sat, 13 Nov 2021 02:38:35 -0600 Subject: [PATCH 025/107] Added temporary title screen text --- godot_ship/scenes/Title Screen.tscn | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/godot_ship/scenes/Title Screen.tscn b/godot_ship/scenes/Title Screen.tscn index a309212..e65961a 100644 --- a/godot_ship/scenes/Title Screen.tscn +++ b/godot_ship/scenes/Title Screen.tscn @@ -53,6 +53,28 @@ margin_bottom = 92.0 focus_neighbour_bottom = NodePath("../Singleplayer") text = "Quit" +[node name="Label" type="Label" parent="."] +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +margin_left = -128.8 +margin_top = -43.9321 +margin_right = -42.8001 +margin_bottom = -29.9321 +rect_scale = Vector2( 3, 3 ) +size_flags_stretch_ratio = 0.0 +custom_colors/font_outline_modulate = Color( 0, 0, 0, 1 ) +custom_colors/font_color_shadow = Color( 0, 0, 0, 1 ) +custom_constants/shadow_offset_x = 0 +custom_constants/shadow_offset_y = 1 +text = "BOAT BATTLE" +align = 1 +valign = 1 +__meta__ = { +"_edit_use_anchors_": false +} + [connection signal="pressed" from="VBoxContainer/Singleplayer" to="." method="_on_Singleplayer_pressed"] [connection signal="pressed" from="VBoxContainer/Multiplayer" to="." method="_on_Multiplayer_pressed"] [connection signal="pressed" from="VBoxContainer/Options" to="." method="_on_Options_pressed"] From 1cb400361d83c3a9ae6c57220b7398f02b9c176d Mon Sep 17 00:00:00 2001 From: John Breaux Date: Sat, 13 Nov 2021 04:34:39 -0600 Subject: [PATCH 026/107] Major restructuring to better support object-oriented design of the main game logic and UI. This was necessary, I swear. --- godot_ship/project.godot | 4 +- godot_ship/scenes/Game/Fire.tscn | 47 ++++++++++ godot_ship/scenes/Game/Game.tscn | 42 +++++++++ .../scenes/{Gameplay.tscn => Game/Setup.tscn} | 94 ++++--------------- godot_ship/scenes/Main.tscn | 4 +- godot_ship/scenes/MultiplayerController.tscn | 6 -- godot_ship/scenes/ships/2Ship.tscn | 2 +- godot_ship/scenes/ships/3ShipB.tscn | 4 +- godot_ship/scenes/ships/3shipA.tscn | 2 +- godot_ship/scenes/ships/4Ship.tscn | 2 +- godot_ship/scenes/ships/5Ship.tscn | 2 +- godot_ship/script/{game => }/Main.gd | 8 +- godot_ship/script/{game => }/Message Bus.gd | 0 .../{game => audio controller}/Audio Bus.gd | 0 godot_ship/script/game/Border.gd | 18 ---- godot_ship/script/game/Gameplay.gd | 91 ------------------ godot_ship/script/game/Gameplay/Crosshair.gd | 39 ++++---- godot_ship/script/game/Gameplay/Fire.gd | 30 ++++++ godot_ship/script/game/Gameplay/Game.gd | 25 ++++- godot_ship/script/game/Setup.gd | 54 +++++++++++ .../script/game/{moveShip.gd => SetupShip.gd} | 2 - .../multiplayer/Multiplayer Controller.gd | 16 ---- 22 files changed, 251 insertions(+), 241 deletions(-) create mode 100644 godot_ship/scenes/Game/Fire.tscn create mode 100644 godot_ship/scenes/Game/Game.tscn rename godot_ship/scenes/{Gameplay.tscn => Game/Setup.tscn} (51%) delete mode 100644 godot_ship/scenes/MultiplayerController.tscn rename godot_ship/script/{game => }/Main.gd (94%) rename godot_ship/script/{game => }/Message Bus.gd (100%) rename godot_ship/script/{game => audio controller}/Audio Bus.gd (100%) delete mode 100644 godot_ship/script/game/Border.gd delete mode 100644 godot_ship/script/game/Gameplay.gd create mode 100644 godot_ship/script/game/Gameplay/Fire.gd create mode 100644 godot_ship/script/game/Setup.gd rename godot_ship/script/game/{moveShip.gd => SetupShip.gd} (99%) delete mode 100644 godot_ship/script/game/multiplayer/Multiplayer Controller.gd diff --git a/godot_ship/project.godot b/godot_ship/project.godot index 826454e..fbccc41 100644 --- a/godot_ship/project.godot +++ b/godot_ship/project.godot @@ -16,8 +16,8 @@ config/icon="res://icon.png" [autoload] -MessageBus="*res://script/game/Message Bus.gd" -AudioBus="*res://script/game/Audio Bus.gd" +MessageBus="*res://script/Message Bus.gd" +AudioBus="*res://script/audio controller/Audio Bus.gd" OptionsController="*res://script/options/OptionsController.gd" AudioController="*res://scenes/AudioController.tscn" diff --git a/godot_ship/scenes/Game/Fire.tscn b/godot_ship/scenes/Game/Fire.tscn new file mode 100644 index 0000000..47b2f5b --- /dev/null +++ b/godot_ship/scenes/Game/Fire.tscn @@ -0,0 +1,47 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://assets/game/RedCrosshair.png" type="Texture" id=1] +[ext_resource path="res://script/game/Gameplay/Fire.gd" type="Script" id=2] +[ext_resource path="res://script/game/Gameplay/Crosshair.gd" type="Script" id=3] +[ext_resource path="res://assets/game/board_blue.png" type="Texture" id=4] + +[node name="Fire" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +rect_pivot_offset = Vector2( 147.423, 85.3825 ) +mouse_filter = 2 +script = ExtResource( 2 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="board_blue" type="Sprite" parent="."] +position = Vector2( 18, 18 ) +texture = ExtResource( 4 ) +centered = false +__meta__ = { +"_edit_lock_": true +} + +[node name="Crosshair" type="Sprite" parent="."] +texture = ExtResource( 1 ) +script = ExtResource( 3 ) + +[node name="Fire" type="Button" parent="."] +margin_left = 443.545 +margin_top = 264.473 +margin_right = 528.545 +margin_bottom = 318.473 +text = "FIRE" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="FireDialog" type="AcceptDialog" parent="."] +pause_mode = 2 +margin_right = 83.0 +margin_bottom = 58.0 +dialog_text = "You can't fire outside the board" + +[connection signal="pressed" from="Fire" to="." method="_on_Fire_pressed"] +[connection signal="confirmed" from="FireDialog" to="." method="_on_FireDialog_confirmed"] diff --git a/godot_ship/scenes/Game/Game.tscn b/godot_ship/scenes/Game/Game.tscn new file mode 100644 index 0000000..a2e98ce --- /dev/null +++ b/godot_ship/scenes/Game/Game.tscn @@ -0,0 +1,42 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://script/title screen/Title-Screen-Background.png" type="Texture" id=1] +[ext_resource path="res://script/game/Gameplay/Game.gd" type="Script" id=3] + +[node name="Game" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +mouse_filter = 2 +script = ExtResource( 3 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Background" type="Sprite" parent="."] +show_behind_parent = true +position = Vector2( 321.081, 179.931 ) +texture = ExtResource( 1 ) +flip_h = true +__meta__ = { +"_edit_lock_": true +} + +[node name="Buttons" type="VBoxContainer" parent="."] +anchor_left = 0.912 +anchor_top = 0.932 +anchor_right = 0.912 +anchor_bottom = 0.932 +margin_left = -3.68005 +margin_top = -4.52002 +margin_right = 49.3199 +margin_bottom = 15.48 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Forfeit" type="Button" parent="Buttons"] +margin_right = 53.0 +margin_bottom = 20.0 +text = "Forfeit" + +[connection signal="pressed" from="Buttons/Forfeit" to="." method="_on_Forfeit_pressed"] diff --git a/godot_ship/scenes/Gameplay.tscn b/godot_ship/scenes/Game/Setup.tscn similarity index 51% rename from godot_ship/scenes/Gameplay.tscn rename to godot_ship/scenes/Game/Setup.tscn index 8c635ee..6e0dcf3 100644 --- a/godot_ship/scenes/Gameplay.tscn +++ b/godot_ship/scenes/Game/Setup.tscn @@ -1,17 +1,14 @@ -[gd_scene load_steps=11 format=2] +[gd_scene load_steps=8 format=2] [ext_resource path="res://assets/game/board_blue.png" type="Texture" id=1] -[ext_resource path="res://script/title screen/Title-Screen-Background.png" type="Texture" id=2] -[ext_resource path="res://script/game/Gameplay.gd" type="Script" id=3] -[ext_resource path="res://scenes/ships/2Ship.tscn" type="PackedScene" id=4] -[ext_resource path="res://scenes/ships/5Ship.tscn" type="PackedScene" id=5] -[ext_resource path="res://scenes/ships/3ShipB.tscn" type="PackedScene" id=6] -[ext_resource path="res://scenes/ships/3shipA.tscn" type="PackedScene" id=7] -[ext_resource path="res://scenes/ships/4Ship.tscn" type="PackedScene" id=8] -[ext_resource path="res://assets/game/RedCrosshair.png" type="Texture" id=9] -[ext_resource path="res://script/game/Gameplay/Crosshair.gd" type="Script" id=10] +[ext_resource path="res://scenes/ships/3ShipB.tscn" type="PackedScene" id=4] +[ext_resource path="res://scenes/ships/3shipA.tscn" type="PackedScene" id=5] +[ext_resource path="res://scenes/ships/4Ship.tscn" type="PackedScene" id=6] +[ext_resource path="res://scenes/ships/5Ship.tscn" type="PackedScene" id=7] +[ext_resource path="res://scenes/ships/2Ship.tscn" type="PackedScene" id=8] +[ext_resource path="res://script/game/Setup.gd" type="Script" id=10] -[node name="Game" type="Control"] +[node name="Setup" type="Control"] anchor_top = 0.00123732 anchor_right = 1.0 anchor_bottom = 0.890237 @@ -19,7 +16,8 @@ margin_left = -0.5 margin_top = 0.740086 margin_right = -0.5 margin_bottom = 40.7 -script = ExtResource( 3 ) +mouse_filter = 2 +script = ExtResource( 10 ) __meta__ = { "_edit_use_anchors_": false } @@ -32,38 +30,6 @@ __meta__ = { "_edit_lock_": true } -[node name="Title-Screen-Background" type="Sprite" parent="."] -show_behind_parent = true -position = Vector2( 321.081, 179.931 ) -texture = ExtResource( 2 ) -flip_h = true -__meta__ = { -"_edit_lock_": true -} - -[node name="Crosshair" type="Sprite" parent="."] -visible = false -texture = ExtResource( 9 ) -script = ExtResource( 10 ) - -[node name="VBoxContainer" type="VBoxContainer" parent="."] -anchor_left = 0.912 -anchor_top = 0.932 -anchor_right = 0.912 -anchor_bottom = 0.932 -margin_left = -3.68005 -margin_top = -4.52002 -margin_right = 49.3199 -margin_bottom = 15.48 -__meta__ = { -"_edit_use_anchors_": false -} - -[node name="Forfeit" type="Button" parent="VBoxContainer"] -margin_right = 53.0 -margin_bottom = 20.0 -text = "Forfeit" - [node name="ConfirmationDialog" type="ConfirmationDialog" parent="."] margin_left = 199.156 margin_top = 155.6 @@ -75,32 +41,32 @@ __meta__ = { "_edit_use_anchors_": false } -[node name="2Ship" parent="." instance=ExtResource( 4 )] -position = Vector2( 529.802, 70.7151 ) +[node name="2Ship" parent="." instance=ExtResource( 8 )] +position = Vector2( 490.802, 90.7151 ) collision_layer = 3 contacts_reported = 1 contact_monitor = true -[node name="3ShipA" parent="." instance=ExtResource( 7 )] -position = Vector2( 434.236, 114.21 ) +[node name="3ShipA" parent="." instance=ExtResource( 5 )] +position = Vector2( 429.236, 124.21 ) collision_layer = 3 contacts_reported = 1 contact_monitor = true -[node name="3ShipB" parent="." instance=ExtResource( 6 )] -position = Vector2( 443.216, 266.865 ) +[node name="3ShipB" parent="." instance=ExtResource( 4 )] +position = Vector2( 427.216, 248.865 ) collision_layer = 3 contacts_reported = 1 contact_monitor = true -[node name="4Ship" parent="." instance=ExtResource( 8 )] -position = Vector2( 522.911, 218.599 ) +[node name="4Ship" parent="." instance=ExtResource( 6 )] +position = Vector2( 491.911, 217.599 ) collision_layer = 3 contacts_reported = 1 contact_monitor = true -[node name="5Ship" parent="." instance=ExtResource( 5 )] -position = Vector2( 607.096, 211.864 ) +[node name="5Ship" parent="." instance=ExtResource( 7 )] +position = Vector2( 557.096, 213.864 ) collision_layer = 3 contacts_reported = 1 contact_monitor = true @@ -125,17 +91,6 @@ __meta__ = { "_edit_use_anchors_": false } -[node name="Fire" type="Button" parent="."] -visible = false -margin_left = 443.545 -margin_top = 264.473 -margin_right = 528.545 -margin_bottom = 318.473 -text = "FIRE" -__meta__ = { -"_edit_use_anchors_": false -} - [node name="PlaceShipDialog" type="AcceptDialog" parent="."] anchor_left = 0.5 anchor_top = 0.5 @@ -150,15 +105,6 @@ __meta__ = { "_edit_use_anchors_": false } -[node name="FireDialog" type="AcceptDialog" parent="."] -pause_mode = 2 -margin_right = 83.0 -margin_bottom = 58.0 -dialog_text = "You can't fire outside the board" - -[connection signal="pressed" from="VBoxContainer/Forfeit" to="." method="_on_Forfeit_pressed"] [connection signal="about_to_show" from="ConfirmationDialog" to="." method="_on_ConfirmationDialog_about_to_show"] [connection signal="pressed" from="Confirm Placement" to="." method="_on_Confirm_Placement_pressed"] [connection signal="pressed" from="Clear" to="." method="_on_Clear_pressed"] -[connection signal="pressed" from="Fire" to="." method="_on_Fire_pressed"] -[connection signal="confirmed" from="FireDialog" to="." method="_on_FireDialog_confirmed"] diff --git a/godot_ship/scenes/Main.tscn b/godot_ship/scenes/Main.tscn index a32d817..2376afa 100644 --- a/godot_ship/scenes/Main.tscn +++ b/godot_ship/scenes/Main.tscn @@ -1,11 +1,11 @@ [gd_scene load_steps=2 format=2] -[ext_resource path="res://script/game/Main.gd" type="Script" id=5] +[ext_resource path="res://script/Main.gd" type="Script" id=5] [node name="Main" type="Control"] anchor_right = 1.0 anchor_bottom = 1.0 -mouse_filter = 1 +mouse_filter = 2 script = ExtResource( 5 ) __meta__ = { "_edit_use_anchors_": false diff --git a/godot_ship/scenes/MultiplayerController.tscn b/godot_ship/scenes/MultiplayerController.tscn deleted file mode 100644 index d39d64e..0000000 --- a/godot_ship/scenes/MultiplayerController.tscn +++ /dev/null @@ -1,6 +0,0 @@ -[gd_scene format=2] - -[node name="Control" type="Control"] -__meta__ = { -"_edit_use_anchors_": false -} diff --git a/godot_ship/scenes/ships/2Ship.tscn b/godot_ship/scenes/ships/2Ship.tscn index 9ea72be..4d9fe35 100644 --- a/godot_ship/scenes/ships/2Ship.tscn +++ b/godot_ship/scenes/ships/2Ship.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=4 format=2] -[ext_resource path="res://script/game/moveShip.gd" type="Script" id=1] +[ext_resource path="res://script/game/SetupShip.gd" type="Script" id=1] [ext_resource path="res://assets/game/2Ship.png" type="Texture" id=2] [sub_resource type="RectangleShape2D" id=1] diff --git a/godot_ship/scenes/ships/3ShipB.tscn b/godot_ship/scenes/ships/3ShipB.tscn index 7677e5a..4969277 100644 --- a/godot_ship/scenes/ships/3ShipB.tscn +++ b/godot_ship/scenes/ships/3ShipB.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=4 format=2] -[ext_resource path="res://script/game/moveShip.gd" type="Script" id=1] +[ext_resource path="res://script/game/SetupShip.gd" type="Script" id=1] [ext_resource path="res://assets/game/3ShipB.png" type="Texture" id=2] [sub_resource type="RectangleShape2D" id=1] @@ -16,7 +16,7 @@ script = ExtResource( 1 ) texture = ExtResource( 2 ) [node name="CollisionShape2D" type="CollisionShape2D" parent="."] -scale = Vector2( 0.9, 0.966 ) +scale = Vector2( 0.5, 0.833 ) shape = SubResource( 1 ) [node name="Area2D" type="Area2D" parent="."] diff --git a/godot_ship/scenes/ships/3shipA.tscn b/godot_ship/scenes/ships/3shipA.tscn index 9b5aeba..889544e 100644 --- a/godot_ship/scenes/ships/3shipA.tscn +++ b/godot_ship/scenes/ships/3shipA.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=4 format=2] -[ext_resource path="res://script/game/moveShip.gd" type="Script" id=1] +[ext_resource path="res://script/game/SetupShip.gd" type="Script" id=1] [ext_resource path="res://assets/game/3ShipA.png" type="Texture" id=2] [sub_resource type="RectangleShape2D" id=1] diff --git a/godot_ship/scenes/ships/4Ship.tscn b/godot_ship/scenes/ships/4Ship.tscn index a136e6d..8ab7397 100644 --- a/godot_ship/scenes/ships/4Ship.tscn +++ b/godot_ship/scenes/ships/4Ship.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=4 format=2] -[ext_resource path="res://script/game/moveShip.gd" type="Script" id=1] +[ext_resource path="res://script/game/SetupShip.gd" type="Script" id=1] [ext_resource path="res://assets/game/4Ship.png" type="Texture" id=2] [sub_resource type="RectangleShape2D" id=1] diff --git a/godot_ship/scenes/ships/5Ship.tscn b/godot_ship/scenes/ships/5Ship.tscn index 44357b6..216643a 100644 --- a/godot_ship/scenes/ships/5Ship.tscn +++ b/godot_ship/scenes/ships/5Ship.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=4 format=2] -[ext_resource path="res://script/game/moveShip.gd" type="Script" id=1] +[ext_resource path="res://script/game/SetupShip.gd" type="Script" id=1] [ext_resource path="res://assets/game/5Ship.png" type="Texture" id=2] [sub_resource type="RectangleShape2D" id=1] diff --git a/godot_ship/script/game/Main.gd b/godot_ship/script/Main.gd similarity index 94% rename from godot_ship/script/game/Main.gd rename to godot_ship/script/Main.gd index 86d5867..9db0959 100644 --- a/godot_ship/script/game/Main.gd +++ b/godot_ship/script/Main.gd @@ -2,7 +2,7 @@ extends Control # Scenes onready var title_screen = preload("res://scenes/Title Screen.tscn") -onready var gameplay = preload("res://scenes/Gameplay.tscn" ) +onready var game = preload("res://scenes/Game/Game.tscn" ) onready var options = preload("res://scenes/Options.tscn" ) onready var debug_menu = preload("res://scenes/Debug Menu.tscn" ) @@ -48,10 +48,12 @@ func _on_scene_start(scene): #print ("_on_scene_start(",scene,")") match scene: "Singleplayer": - add_child (gameplay.instance()) + add_child (game.instance()) return true "Multiplayer": - add_child (gameplay.instance()) + game = game.instance() + game.is_multiplayer = true + add_child (game) # add_child (multiplayercontroller.instance()) return true "Options": diff --git a/godot_ship/script/game/Message Bus.gd b/godot_ship/script/Message Bus.gd similarity index 100% rename from godot_ship/script/game/Message Bus.gd rename to godot_ship/script/Message Bus.gd diff --git a/godot_ship/script/game/Audio Bus.gd b/godot_ship/script/audio controller/Audio Bus.gd similarity index 100% rename from godot_ship/script/game/Audio Bus.gd rename to godot_ship/script/audio controller/Audio Bus.gd diff --git a/godot_ship/script/game/Border.gd b/godot_ship/script/game/Border.gd deleted file mode 100644 index ce5e6c3..0000000 --- a/godot_ship/script/game/Border.gd +++ /dev/null @@ -1,18 +0,0 @@ -extends Area2D - -# Declare member variables here. Examples: -# var a = 2 -# var b = "text" - - -# Called when the node enters the scene tree for the first time. -func _ready(): - pass # Replace with function body. - - -# Called every frame. 'delta' is the elapsed time since the previous frame. -#func _process(delta): -# pass - -func _on_Border_body_entered(body): - print(body) diff --git a/godot_ship/script/game/Gameplay.gd b/godot_ship/script/game/Gameplay.gd deleted file mode 100644 index 6d01c94..0000000 --- a/godot_ship/script/game/Gameplay.gd +++ /dev/null @@ -1,91 +0,0 @@ -extends Control - -onready var Ships = ["2Ship", "3ShipA", "3ShipB", "4Ship", "5Ship"] -onready var Crosshair - -class Location: - var Coor: Vector2 - var Length: int - var Orientation: bool #vertical is true, (Trueship = vertical) (Falseship = horizontal) - -# Called when the node enters the scene tree for the first time. -func _ready(): - if find_next_valid_focus(): find_next_valid_focus().grab_focus() - - -func _on_Forfeit_pressed(): - AudioBus.emit_signal("button_clicked") - queue_free(); - MessageBus.emit_signal("change_scene", "Title") - - - -func _on_Confirm_Placement_pressed(): - var valid = true - for ship in Ships: - # validate_placement returns the x-axis distance from the board - # if this is more than zero, the ship is invalid - if get_node(ship).validate_placement(): - valid = false - print ("Placement: ", valid) - if valid == false: - get_node("PlaceShipDialog").popup() - else: - #Saves the location of ships and length of ship into an array - var shipLocation = [] - for ship in Ships: - var location = Location.new() - location.Coor = get_node(ship).position - location.Length = get_node(ship).get("ship_length") - location.Orientation = get_node(ship).get("vertical") - shipLocation.append(location) - - #print out the array for testing - for x in shipLocation: - print("Ship Length: ", x.Length, ", Ship Orientation: ", x.Orientation, "Ship Coor: ", x.Coor) - - #Hides the ship placement UI - var confirmButton = get_node("Confirm Placement") - var clearButton = get_node("Clear") - var ship1 = get_node("2Ship") - var ship2 = get_node("3ShipA") - var ship3 = get_node("3ShipB") - var ship4 = get_node("4Ship") - var ship5 = get_node("5Ship") - confirmButton.visible = false - clearButton.visible = false - ship1.visible = false - ship2.visible = false - ship3.visible = false - ship4.visible = false - ship5.visible = false - - #Changes to firing mode, makes the fireing mode UI visible (The location of this can be changed later. This position is for testing) - var crosshair = get_node("Crosshair") - var fireButton = get_node("Fire") - crosshair.visible = true - fireButton.visible = true - return valid # Replace with function body. - -func _on_Clear_pressed(): - for ship in Ships: - get_node(ship).clear() - pass # Replace with function body. - - -func _on_Fire_pressed(): - var crosshair = get_node("Crosshair") - # hides crosshair - crosshair.visible = false - if crosshair.validate_position(crosshair.position) == true: - # fires at position - print("Fire at position: ", crosshair.position) - else: - #if invalid position popup appears - var dialog = get_node("FireDialog") - dialog.popup_centered() - pass # Replace with function body. - -func _on_FireDialog_confirmed(): - get_node("Crosshair").visible = true - pass # Replace with function body. diff --git a/godot_ship/script/game/Gameplay/Crosshair.gd b/godot_ship/script/game/Gameplay/Crosshair.gd index 274cca8..41ef586 100644 --- a/godot_ship/script/game/Gameplay/Crosshair.gd +++ b/godot_ship/script/game/Gameplay/Crosshair.gd @@ -1,24 +1,28 @@ extends Sprite -# Declare member variables here. Examples: -# var a = 2 -# var b = "text" - var snapped = false #when snapped if true crosshair stops following mouse +const world_offset = Vector2(36,36) # Called when the node enters the scene tree for the first time. func _ready(): + # Move the cursor to 0,0 + position = board_to_world_space(Vector2(-2,-2)) pass # Replace with function body. -func _physics_process(delta): - if snapped == false: - position += (get_global_mouse_position() - position)/10 +func _physics_process(_delta): + var mousePos = get_global_mouse_position() + # If the cursor is not snapped, and the mouse is over the board + if snapped == false and validate_position(mousePos): + # Snap the crosshair to the grid, but following the mouse + position = (mousePos - world_offset).snapped(Vector2(32,32)) + world_offset func _input(event): # Check if left click is being clicked and the sprite is visible (i.e only checks for inputs after ship positions are confirmed) - if event is InputEventMouseButton and event.button_index == BUTTON_LEFT and visible == true: - # Locks the position of the crosshair with left click + if event is InputEventMouseButton and event.button_index == BUTTON_LEFT and visible and not event.is_pressed(): + # Make a noise + AudioBus.emit_signal("button_clicked") + # Locks the position of the crosshair with left click release if validate_position(position) == true: # rounds the board position to the nearest integer snapped = true @@ -26,16 +30,15 @@ func _input(event): position.y = int(round(world_to_board_space(position).y)) position = board_to_world_space(position) # Check if left click is being clicked and the sprite is visible (i.e only checks for inputs after ship positions are confirmed) - if event is InputEventMouseButton and event.button_index == BUTTON_RIGHT and visible == true: - # Unlocks the position of the crosshair with right click + elif event is InputEventMouseButton and event.button_index == BUTTON_LEFT and visible == true: + # Unlocks the position of the crosshair with left click snapped = false func validate_position(vector): # rounds the board position to the nearest integer - var boardx = int(round(world_to_board_space(vector).x)) - var boardy = int(round(world_to_board_space(vector).y)) + var board = world_to_board_space(vector) # Checks if the board position is within bounds of the board - if boardx < 11 and boardx > 0 and boardy < 11 and boardy > 0: + if board.x < 9.5 and board.x >= -0.5 and board.y < 9.5 and board.y >= -0.5: # changes the position of the crosshair return true else: @@ -45,15 +48,11 @@ func validate_position(vector): # Convert the world-space coordinates to positions on the board func world_to_board_space(vector): # Do math - var res = (vector - offset) / 32 # Basically Fahrenheit/Celcius conversion, but in 2D + var res = (vector - world_offset) / 32 # Basically Fahrenheit/Celcius conversion, but in 2D return res # Inverse of the above function. func board_to_world_space(vector): # Do math - var res = (vector * 32) + offset #Invert the above function + var res = (vector * 32) + world_offset #Invert the above function return res #Truncate decimals - -# Called every frame. 'delta' is the elapsed time since the previous frame. -#func _process(delta): -# pass diff --git a/godot_ship/script/game/Gameplay/Fire.gd b/godot_ship/script/game/Gameplay/Fire.gd new file mode 100644 index 0000000..8ad90f4 --- /dev/null +++ b/godot_ship/script/game/Gameplay/Fire.gd @@ -0,0 +1,30 @@ +extends Control + +# Called when the node enters the scene tree for the first time. +func _ready(): + pass # Replace with function body. + +# Signal to pass the fire location back to yet-unknown nodes +signal fire_at + + +func _on_Fire_pressed(): + var crosshair = get_node("Crosshair") + # hides crosshair + crosshair.visible = false + if crosshair.validate_position(crosshair.position) == true: + var crosshair_pos = crosshair.world_to_board_space(crosshair.position) + # fires at position + print("Fire at position: ", crosshair_pos) + emit_signal("fire_at", crosshair_pos) + # Close the Firing menu + queue_free() + else: + #if invalid position popup appears + var dialog = get_node("FireDialog") + dialog.popup_centered() + pass # Replace with function body. + +func _on_FireDialog_confirmed(): + get_node("Crosshair").visible = true + pass # Replace with function body. diff --git a/godot_ship/script/game/Gameplay/Game.gd b/godot_ship/script/game/Gameplay/Game.gd index 29d7d1d..3c2f7cd 100644 --- a/godot_ship/script/game/Gameplay/Game.gd +++ b/godot_ship/script/game/Gameplay/Game.gd @@ -1,8 +1,18 @@ extends Node +class ShipData: + var Coor: Vector2 + var Length: int + var Orientation: bool #vertical is true, (Trueship = vertical) (Falseship = horizontal) + +# Preloaded assets, to be used later +onready var Setup = preload("res://scenes/Game/Setup.tscn") +onready var Fire = preload("res://scenes/Game/Fire.tscn") + # Path to Player class, for instantiating new Players in code var Player = "res://script/game/Gameplay/Player.gd" + # Array of instances of the Player class; stores the Players var players # = player1, player2, ... # turn counter @@ -15,7 +25,13 @@ var is_multiplayer = false # Called when the node enters the scene tree for the first time. func _ready(): - game_start() + var setup = Setup.instance() + setup.connect("game_ready", self, "game_setup") + add_child(setup) + +func game_setup(_ships): + print_debug("Congrats! Setup complete.") + add_child(Fire.instance()) # Member functions: # game_start: starts the game @@ -29,3 +45,10 @@ func victory_screen(): # display_turn(): display which turn it is on the screen func display_turn(): pass + +func _on_Forfeit_pressed(): + AudioBus.emit_signal("button_clicked") + end() + +func end(): + queue_free() diff --git a/godot_ship/script/game/Setup.gd b/godot_ship/script/game/Setup.gd new file mode 100644 index 0000000..f689e96 --- /dev/null +++ b/godot_ship/script/game/Setup.gd @@ -0,0 +1,54 @@ +extends Control + +signal forfeit +signal game_ready + +onready var Ships = ["2Ship", "3ShipA", "3ShipB", "4Ship", "5Ship"] + +class ShipData: + var Position: Vector2 + var Length: int + var Orientation: bool # (True = vertical) (False = horizontal) + +# Called when the node enters the scene tree for the first time. +func _ready(): + # Moves the focus to this menu + if find_next_valid_focus(): find_next_valid_focus().grab_focus() + + +func _on_Confirm_Placement_pressed(): + # Make the button noise + AudioBus.emit_signal("button_clicked") + var valid = true + for ship in Ships: + # validate_placement returns the x-axis distance from the board + # if this is more than zero, the ship is invalid + if get_node(ship).validate_placement(): + valid = false + print ("Placement: ", valid) + if valid == false: + get_node("PlaceShipDialog").popup() + else: + #Saves the location of ships and length of ship into an array + var shipLocation = [] + for ship in Ships: + var location = ShipData.new() + location.Position = get_node(ship).position + location.Length = get_node(ship).get("ship_length") + location.Orientation = get_node(ship).get("vertical") + shipLocation.append(location) + + #print out the array for testing + for x in shipLocation: + print("Ship Length: ", x.Length, ", Ship Orientation: ", x.Orientation, ", Ship Position: ", x.Position) + + # Return the shipLocation array to those listening on game_ready + emit_signal("game_ready", shipLocation) + queue_free() + return valid # Replace with function body. + +func _on_Clear_pressed(): + AudioBus.emit_signal("button_clicked") + for ship in Ships: + get_node(ship).clear() + pass # Replace with function body. diff --git a/godot_ship/script/game/moveShip.gd b/godot_ship/script/game/SetupShip.gd similarity index 99% rename from godot_ship/script/game/moveShip.gd rename to godot_ship/script/game/SetupShip.gd index 6c41215..6d923a2 100644 --- a/godot_ship/script/game/moveShip.gd +++ b/godot_ship/script/game/SetupShip.gd @@ -141,11 +141,9 @@ func checkOriginalPos(): # Called when *this* ship collides with another ship func ship_stacked(_body): - print("stacked") collision = true # Called when *this* ship stops colliding with another ship func ship_unstacked(_body): - print("unstacked") collision = false # Calculate the extents (front to back) of the ship and check whether they're on the board diff --git a/godot_ship/script/game/multiplayer/Multiplayer Controller.gd b/godot_ship/script/game/multiplayer/Multiplayer Controller.gd deleted file mode 100644 index 1eccaec..0000000 --- a/godot_ship/script/game/multiplayer/Multiplayer Controller.gd +++ /dev/null @@ -1,16 +0,0 @@ -extends Node - - -# Declare member variables here. Examples: -# var a = 2 -# var b = "text" - - -# Called when the node enters the scene tree for the first time. -func _ready(): - pass # Replace with function body. - - -# Called every frame. 'delta' is the elapsed time since the previous frame. -#func _process(delta): -# pass From 2a3aae73acc7cb2716e977e2441c8abd4de6e640 Mon Sep 17 00:00:00 2001 From: John Breaux Date: Sat, 13 Nov 2021 04:38:20 -0600 Subject: [PATCH 027/107] Accidentally offset the Setup menu by a handful of pixels. Whoops. --- godot_ship/scenes/Game/Fire.tscn | 1 - godot_ship/scenes/Game/Setup.tscn | 6 ++---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/godot_ship/scenes/Game/Fire.tscn b/godot_ship/scenes/Game/Fire.tscn index 47b2f5b..7f42da6 100644 --- a/godot_ship/scenes/Game/Fire.tscn +++ b/godot_ship/scenes/Game/Fire.tscn @@ -8,7 +8,6 @@ [node name="Fire" type="Control"] anchor_right = 1.0 anchor_bottom = 1.0 -rect_pivot_offset = Vector2( 147.423, 85.3825 ) mouse_filter = 2 script = ExtResource( 2 ) __meta__ = { diff --git a/godot_ship/scenes/Game/Setup.tscn b/godot_ship/scenes/Game/Setup.tscn index 6e0dcf3..42db1cd 100644 --- a/godot_ship/scenes/Game/Setup.tscn +++ b/godot_ship/scenes/Game/Setup.tscn @@ -12,10 +12,8 @@ anchor_top = 0.00123732 anchor_right = 1.0 anchor_bottom = 0.890237 -margin_left = -0.5 -margin_top = 0.740086 -margin_right = -0.5 -margin_bottom = 40.7 +margin_top = -0.445435 +margin_bottom = 39.5145 mouse_filter = 2 script = ExtResource( 10 ) __meta__ = { From 1a031ac9d24932b1d43cd8dae4d82a6d6f8d99e8 Mon Sep 17 00:00:00 2001 From: John Breaux Date: Sat, 13 Nov 2021 04:46:28 -0600 Subject: [PATCH 028/107] Setup: remove unused signal --- godot_ship/script/game/Setup.gd | 1 - 1 file changed, 1 deletion(-) diff --git a/godot_ship/script/game/Setup.gd b/godot_ship/script/game/Setup.gd index f689e96..f9900b1 100644 --- a/godot_ship/script/game/Setup.gd +++ b/godot_ship/script/game/Setup.gd @@ -1,6 +1,5 @@ extends Control -signal forfeit signal game_ready onready var Ships = ["2Ship", "3ShipA", "3ShipB", "4Ship", "5Ship"] From 2f5a2cd47f3dbea34cfbe2409c631150b25d0e01 Mon Sep 17 00:00:00 2001 From: John Breaux Date: Sat, 13 Nov 2021 05:08:53 -0600 Subject: [PATCH 029/107] Comment on which parts of Game are only there for testing purposes. --- godot_ship/script/game/Gameplay/Game.gd | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/godot_ship/script/game/Gameplay/Game.gd b/godot_ship/script/game/Gameplay/Game.gd index 3c2f7cd..fd8d964 100644 --- a/godot_ship/script/game/Gameplay/Game.gd +++ b/godot_ship/script/game/Gameplay/Game.gd @@ -6,7 +6,9 @@ class ShipData: var Orientation: bool #vertical is true, (Trueship = vertical) (Falseship = horizontal) # Preloaded assets, to be used later +# TODO: Move Setup into the Player. It's just here, for now, so that it can be tested and the game doesn't appear broken onready var Setup = preload("res://scenes/Game/Setup.tscn") +# TODO: Move Fire into the Player. See above. onready var Fire = preload("res://scenes/Game/Fire.tscn") # Path to Player class, for instantiating new Players in code @@ -25,12 +27,15 @@ var is_multiplayer = false # Called when the node enters the scene tree for the first time. func _ready(): + # TODO: Move Setup into the Player. var setup = Setup.instance() setup.connect("game_ready", self, "game_setup") add_child(setup) +# TODO: Move Setup into the Player. func game_setup(_ships): print_debug("Congrats! Setup complete.") + # TODO: Move Fire into the Player. add_child(Fire.instance()) # Member functions: From 7465349de38ae3b514fd288fcd58274562e548db Mon Sep 17 00:00:00 2001 From: tommy-l-ngo Date: Sat, 13 Nov 2021 15:18:12 -0600 Subject: [PATCH 030/107] Fixed up the Title Screen text imported font --- godot_ship/assets/font/Minecraft.ttf | Bin 0 -> 14488 bytes godot_ship/scenes/Title Screen.tscn | 21 ++++++++++++++------- 2 files changed, 14 insertions(+), 7 deletions(-) create mode 100644 godot_ship/assets/font/Minecraft.ttf diff --git a/godot_ship/assets/font/Minecraft.ttf b/godot_ship/assets/font/Minecraft.ttf new file mode 100644 index 0000000000000000000000000000000000000000..85c14725a3bf6d67aaf0f03292f9b763c1654f07 GIT binary patch literal 14488 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 Z*c*kN@$GAW{e3oGeYSI$CI24pe*xM150(G` literal 0 HcmV?d00001 diff --git a/godot_ship/scenes/Title Screen.tscn b/godot_ship/scenes/Title Screen.tscn index e65961a..6ac6e67 100644 --- a/godot_ship/scenes/Title Screen.tscn +++ b/godot_ship/scenes/Title Screen.tscn @@ -1,7 +1,14 @@ -[gd_scene load_steps=3 format=2] +[gd_scene load_steps=5 format=2] [ext_resource path="res://script/title screen/Title-Screen-Background.png" type="Texture" id=1] [ext_resource path="res://script/title screen/Title Screen.gd" type="Script" id=2] +[ext_resource path="res://assets/font/Minecraft.ttf" type="DynamicFontData" id=3] + +[sub_resource type="DynamicFont" id=1] +size = 44 +outline_size = 2 +outline_color = Color( 0, 0, 0, 1 ) +font_data = ExtResource( 3 ) [node name="Title Node" type="Control"] anchor_right = 1.0 @@ -58,16 +65,16 @@ anchor_left = 0.5 anchor_top = 0.5 anchor_right = 0.5 anchor_bottom = 0.5 -margin_left = -128.8 -margin_top = -43.9321 -margin_right = -42.8001 -margin_bottom = -29.9321 -rect_scale = Vector2( 3, 3 ) +margin_left = -157.0 +margin_top = -50.0 +margin_right = 157.0 +margin_bottom = -6.0 size_flags_stretch_ratio = 0.0 +custom_fonts/font = SubResource( 1 ) custom_colors/font_outline_modulate = Color( 0, 0, 0, 1 ) custom_colors/font_color_shadow = Color( 0, 0, 0, 1 ) custom_constants/shadow_offset_x = 0 -custom_constants/shadow_offset_y = 1 +custom_constants/shadow_offset_y = 8 text = "BOAT BATTLE" align = 1 valign = 1 From 71d31e3db92984a12155c74cc161526c593ea65a Mon Sep 17 00:00:00 2001 From: tommy-l-ngo Date: Sat, 13 Nov 2021 15:23:11 -0600 Subject: [PATCH 031/107] Fixed Crosshair pixel rendering --- ...air.png-ed59a214d85db7c21233257c8daddbef.md5 | 2 +- ...ir.png-ed59a214d85db7c21233257c8daddbef.stex | Bin 393 -> 393 bytes godot_ship/assets/game/RedCrosshair.png.import | 4 ++-- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/godot_ship/.import/RedCrosshair.png-ed59a214d85db7c21233257c8daddbef.md5 b/godot_ship/.import/RedCrosshair.png-ed59a214d85db7c21233257c8daddbef.md5 index 4daad2d..de8e442 100644 --- a/godot_ship/.import/RedCrosshair.png-ed59a214d85db7c21233257c8daddbef.md5 +++ b/godot_ship/.import/RedCrosshair.png-ed59a214d85db7c21233257c8daddbef.md5 @@ -1,3 +1,3 @@ source_md5="f6d6cf59e576f46ace6228c7c6fbcd43" -dest_md5="5fbfd5548d2fd8ed92f2a987ce11d3c4" +dest_md5="847ce85590ffc54d7107d859e3aedafc" diff --git a/godot_ship/.import/RedCrosshair.png-ed59a214d85db7c21233257c8daddbef.stex b/godot_ship/.import/RedCrosshair.png-ed59a214d85db7c21233257c8daddbef.stex index 217971f4190e9467fe1621a4adb410e67fbf849d..7b43ace09d56f0174f1e448b29cea2da4159b434 100644 GIT binary patch delta 29 dcmeBV?qn8mcL@$rU|?VXVF(al+bB}X2mnN01MmO< delta 29 gcmeBV?qn8mcL@$rU|?VXVHO}}U=U#6C{oG@07R1m^#A|> diff --git a/godot_ship/assets/game/RedCrosshair.png.import b/godot_ship/assets/game/RedCrosshair.png.import index dac2332..a5ee952 100644 --- a/godot_ship/assets/game/RedCrosshair.png.import +++ b/godot_ship/assets/game/RedCrosshair.png.import @@ -20,7 +20,7 @@ compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 -flags/filter=true +flags/filter=false flags/mipmaps=false flags/anisotropic=false flags/srgb=2 @@ -30,5 +30,5 @@ process/HDR_as_SRGB=false process/invert_color=false stream=false size_limit=0 -detect_3d=true +detect_3d=false svg/scale=1.0 From 8232bec5d0b2ff9bb5dc87b2806d43b965a3a300 Mon Sep 17 00:00:00 2001 From: John Breaux Date: Sat, 13 Nov 2021 22:46:24 -0600 Subject: [PATCH 032/107] Consolidate backgrounds --- ...k.png-1931de55ce8abaebbea8e169cd476889.md5 | 3 ++ ....png-1931de55ce8abaebbea8e169cd476889.stex | Bin 0 -> 8689 bytes .../backgrounds/dark.png} | Bin .../dark.png.import} | 6 ++-- godot_ship/assets/game/2longShipS.png | Bin 9113 -> 0 bytes godot_ship/assets/game/2longShipS.png.import | 34 ------------------ godot_ship/assets/game/3longShipAS.png | Bin 11770 -> 0 bytes godot_ship/assets/game/3longShipAS.png.import | 34 ------------------ godot_ship/assets/game/3longShipBS.png | Bin 10335 -> 0 bytes godot_ship/assets/game/3longShipBS.png.import | 34 ------------------ godot_ship/assets/game/4longShipS.png | Bin 12121 -> 0 bytes godot_ship/assets/game/4longShipS.png.import | 34 ------------------ godot_ship/assets/game/5longShipS.png | Bin 13540 -> 0 bytes godot_ship/scenes/Game/Game.tscn | 2 +- godot_ship/scenes/Game/Player.tscn | 8 +++++ godot_ship/scenes/Options.tscn | 2 +- godot_ship/scenes/Title Screen.tscn | 2 +- godot_ship/script/game/Gameplay/Game.gd | 4 ++- .../options/Option-Background.png.import | 34 ------------------ .../title screen/Title-Screen-Background.png | Bin 9397 -> 0 bytes .../Title-Screen-Background.png.import | 34 ------------------ 21 files changed, 20 insertions(+), 211 deletions(-) create mode 100644 godot_ship/.import/dark.png-1931de55ce8abaebbea8e169cd476889.md5 create mode 100644 godot_ship/.import/dark.png-1931de55ce8abaebbea8e169cd476889.stex rename godot_ship/{script/options/Option-Background.png => assets/backgrounds/dark.png} (100%) rename godot_ship/assets/{game/5longShipS.png.import => backgrounds/dark.png.import} (69%) delete mode 100644 godot_ship/assets/game/2longShipS.png delete mode 100644 godot_ship/assets/game/2longShipS.png.import delete mode 100644 godot_ship/assets/game/3longShipAS.png delete mode 100644 godot_ship/assets/game/3longShipAS.png.import delete mode 100644 godot_ship/assets/game/3longShipBS.png delete mode 100644 godot_ship/assets/game/3longShipBS.png.import delete mode 100644 godot_ship/assets/game/4longShipS.png delete mode 100644 godot_ship/assets/game/4longShipS.png.import delete mode 100644 godot_ship/assets/game/5longShipS.png create mode 100644 godot_ship/scenes/Game/Player.tscn delete mode 100644 godot_ship/script/options/Option-Background.png.import delete mode 100644 godot_ship/script/title screen/Title-Screen-Background.png delete mode 100644 godot_ship/script/title screen/Title-Screen-Background.png.import diff --git a/godot_ship/.import/dark.png-1931de55ce8abaebbea8e169cd476889.md5 b/godot_ship/.import/dark.png-1931de55ce8abaebbea8e169cd476889.md5 new file mode 100644 index 0000000..65f245f --- /dev/null +++ b/godot_ship/.import/dark.png-1931de55ce8abaebbea8e169cd476889.md5 @@ -0,0 +1,3 @@ +source_md5="a88d669f1f058a347cc4de2244bac64b" +dest_md5="1073062c6e594eff250036d7489d44a7" + diff --git a/godot_ship/.import/dark.png-1931de55ce8abaebbea8e169cd476889.stex b/godot_ship/.import/dark.png-1931de55ce8abaebbea8e169cd476889.stex new file mode 100644 index 0000000000000000000000000000000000000000..1ea8a2a7bec397add7b1da989202550a02af9110 GIT binary patch literal 8689 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 literal 0 HcmV?d00001 diff --git a/godot_ship/script/options/Option-Background.png b/godot_ship/assets/backgrounds/dark.png similarity index 100% rename from godot_ship/script/options/Option-Background.png rename to godot_ship/assets/backgrounds/dark.png diff --git a/godot_ship/assets/game/5longShipS.png.import b/godot_ship/assets/backgrounds/dark.png.import similarity index 69% rename from godot_ship/assets/game/5longShipS.png.import rename to godot_ship/assets/backgrounds/dark.png.import index 4e6d2e9..ed01e88 100644 --- a/godot_ship/assets/game/5longShipS.png.import +++ b/godot_ship/assets/backgrounds/dark.png.import @@ -2,15 +2,15 @@ importer="texture" type="StreamTexture" -path="res://.import/5longShipS.png-9d546ec87dabd586e250ea5c5229aa8f.stex" +path="res://.import/dark.png-1931de55ce8abaebbea8e169cd476889.stex" metadata={ "vram_texture": false } [deps] -source_file="res://assets/game/5longShipS.png" -dest_files=[ "res://.import/5longShipS.png-9d546ec87dabd586e250ea5c5229aa8f.stex" ] +source_file="res://assets/backgrounds/dark.png" +dest_files=[ "res://.import/dark.png-1931de55ce8abaebbea8e169cd476889.stex" ] [params] diff --git a/godot_ship/assets/game/2longShipS.png b/godot_ship/assets/game/2longShipS.png deleted file mode 100644 index 8af3d657079a1175950102c1190c0f1e98174ff5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9113 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 diff --git a/godot_ship/assets/game/3longShipAS.png.import b/godot_ship/assets/game/3longShipAS.png.import deleted file mode 100644 index 2ea37c8..0000000 --- a/godot_ship/assets/game/3longShipAS.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/3longShipAS.png-c88b2d866e65fe50f618c22da6c0a5d4.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/game/3longShipAS.png" -dest_files=[ "res://.import/3longShipAS.png-c88b2d866e65fe50f618c22da6c0a5d4.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 diff --git a/godot_ship/assets/game/3longShipBS.png b/godot_ship/assets/game/3longShipBS.png deleted file mode 100644 index a904795b05d3ff93c83dfb487534256dd13bdf15..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10335 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 xzNwq(v~TLAsyw;9wXwcYRn@Ty# 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 P00000NkvXXu0mjfw#FyW diff --git a/godot_ship/assets/game/4longShipS.png.import b/godot_ship/assets/game/4longShipS.png.import deleted file mode 100644 index 1f6589d..0000000 --- a/godot_ship/assets/game/4longShipS.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/4longShipS.png-8dc80f51885d7a7242ed523ee285aaa0.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://assets/game/4longShipS.png" -dest_files=[ "res://.import/4longShipS.png-8dc80f51885d7a7242ed523ee285aaa0.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 diff --git a/godot_ship/assets/game/5longShipS.png b/godot_ship/assets/game/5longShipS.png deleted file mode 100644 index 2c7832e2e26ccc83fa40ccc72a4754aaf444566e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13540 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 eWK<2x@?Qe^UC|t*@Yizy0000jF>HFKnC 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 R`acpGTsFE?dePzT{{Wf8vgZH* diff --git a/godot_ship/script/title screen/Title-Screen-Background.png.import b/godot_ship/script/title screen/Title-Screen-Background.png.import deleted file mode 100644 index 7a15ce8..0000000 --- a/godot_ship/script/title screen/Title-Screen-Background.png.import +++ /dev/null @@ -1,34 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture" -path="res://.import/Title-Screen-Background.png-dbef7fef33c56892772634130111c923.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://script/title screen/Title-Screen-Background.png" -dest_files=[ "res://.import/Title-Screen-Background.png-dbef7fef33c56892772634130111c923.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=false -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=false -svg/scale=1.0 From 96c5678cf4dc1aae56359ccc302cea29b1281be1 Mon Sep 17 00:00:00 2001 From: hpham474 Date: Sat, 13 Nov 2021 23:05:13 -0600 Subject: [PATCH 033/107] Added more SFX sounds --- godot_ship/assets/audio/HitSFX.ogg | Bin 0 -> 8616 bytes godot_ship/assets/audio/MissSFX.ogg | Bin 0 -> 43673 bytes godot_ship/assets/audio/SunkSFX.ogg | Bin 0 -> 29141 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 godot_ship/assets/audio/HitSFX.ogg create mode 100644 godot_ship/assets/audio/MissSFX.ogg create mode 100644 godot_ship/assets/audio/SunkSFX.ogg diff --git a/godot_ship/assets/audio/HitSFX.ogg b/godot_ship/assets/audio/HitSFX.ogg new file mode 100644 index 0000000000000000000000000000000000000000..96a2dfb65c87fec145f295a5f966af40b3c09bc2 GIT binary patch literal 8616 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

_6rz^UltN#lR`?IFe@2;(To6= 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 !8 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 Date: Sat, 13 Nov 2021 23:06:13 -0600 Subject: [PATCH 034/107] Created Sprite for Light Mode --- ...k.png-f04f9416ce96aca35dfd0f16063b0d5b.md5 | 3 ++ ....png-f04f9416ce96aca35dfd0f16063b0d5b.stex | Bin 0 -> 8689 bytes ...t.png-3684b7dcc3b1fd645e9fff4401113c01.md5 | 3 ++ ....png-3684b7dcc3b1fd645e9fff4401113c01.stex | Bin 0 -> 9376 bytes .../{dark.png => Background_Dark.png} | Bin ....png.import => Background_Dark.png.import} | 6 ++-- .../assets/backgrounds/Background_Light.png | Bin 0 -> 9344 bytes .../backgrounds/Background_Light.png.import | 34 ++++++++++++++++++ godot_ship/scenes/Game/Game.tscn | 3 +- godot_ship/scenes/Options.tscn | 2 +- godot_ship/scenes/Title Screen.tscn | 7 +--- .../script/options/OptionsController.gd | 1 + 12 files changed, 48 insertions(+), 11 deletions(-) create mode 100644 godot_ship/.import/Background_Dark.png-f04f9416ce96aca35dfd0f16063b0d5b.md5 create mode 100644 godot_ship/.import/Background_Dark.png-f04f9416ce96aca35dfd0f16063b0d5b.stex create mode 100644 godot_ship/.import/Background_Light.png-3684b7dcc3b1fd645e9fff4401113c01.md5 create mode 100644 godot_ship/.import/Background_Light.png-3684b7dcc3b1fd645e9fff4401113c01.stex rename godot_ship/assets/backgrounds/{dark.png => Background_Dark.png} (100%) rename godot_ship/assets/backgrounds/{dark.png.import => Background_Dark.png.import} (67%) create mode 100644 godot_ship/assets/backgrounds/Background_Light.png create mode 100644 godot_ship/assets/backgrounds/Background_Light.png.import diff --git a/godot_ship/.import/Background_Dark.png-f04f9416ce96aca35dfd0f16063b0d5b.md5 b/godot_ship/.import/Background_Dark.png-f04f9416ce96aca35dfd0f16063b0d5b.md5 new file mode 100644 index 0000000..65f245f --- /dev/null +++ b/godot_ship/.import/Background_Dark.png-f04f9416ce96aca35dfd0f16063b0d5b.md5 @@ -0,0 +1,3 @@ +source_md5="a88d669f1f058a347cc4de2244bac64b" +dest_md5="1073062c6e594eff250036d7489d44a7" + diff --git a/godot_ship/.import/Background_Dark.png-f04f9416ce96aca35dfd0f16063b0d5b.stex b/godot_ship/.import/Background_Dark.png-f04f9416ce96aca35dfd0f16063b0d5b.stex new file mode 100644 index 0000000000000000000000000000000000000000..1ea8a2a7bec397add7b1da989202550a02af9110 GIT binary patch literal 8689 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 literal 0 HcmV?d00001 diff --git a/godot_ship/.import/Background_Light.png-3684b7dcc3b1fd645e9fff4401113c01.md5 b/godot_ship/.import/Background_Light.png-3684b7dcc3b1fd645e9fff4401113c01.md5 new file mode 100644 index 0000000..ee05183 --- /dev/null +++ b/godot_ship/.import/Background_Light.png-3684b7dcc3b1fd645e9fff4401113c01.md5 @@ -0,0 +1,3 @@ +source_md5="def9518adb67248106449930ecafbf56" +dest_md5="f9d758e8df7027a5ee66a8f1cb4910e6" + diff --git a/godot_ship/.import/Background_Light.png-3684b7dcc3b1fd645e9fff4401113c01.stex b/godot_ship/.import/Background_Light.png-3684b7dcc3b1fd645e9fff4401113c01.stex new file mode 100644 index 0000000000000000000000000000000000000000..4d5e2974b252a6d248075c87d9ad652d94221e88 GIT binary patch literal 9376 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 literal 0 HcmV?d00001 diff --git a/godot_ship/assets/backgrounds/dark.png b/godot_ship/assets/backgrounds/Background_Dark.png similarity index 100% rename from godot_ship/assets/backgrounds/dark.png rename to godot_ship/assets/backgrounds/Background_Dark.png diff --git a/godot_ship/assets/backgrounds/dark.png.import b/godot_ship/assets/backgrounds/Background_Dark.png.import similarity index 67% rename from godot_ship/assets/backgrounds/dark.png.import rename to godot_ship/assets/backgrounds/Background_Dark.png.import index ed01e88..d8ce35a 100644 --- a/godot_ship/assets/backgrounds/dark.png.import +++ b/godot_ship/assets/backgrounds/Background_Dark.png.import @@ -2,15 +2,15 @@ importer="texture" type="StreamTexture" -path="res://.import/dark.png-1931de55ce8abaebbea8e169cd476889.stex" +path="res://.import/Background_Dark.png-f04f9416ce96aca35dfd0f16063b0d5b.stex" metadata={ "vram_texture": false } [deps] -source_file="res://assets/backgrounds/dark.png" -dest_files=[ "res://.import/dark.png-1931de55ce8abaebbea8e169cd476889.stex" ] +source_file="res://assets/backgrounds/Background_Dark.png" +dest_files=[ "res://.import/Background_Dark.png-f04f9416ce96aca35dfd0f16063b0d5b.stex" ] [params] diff --git a/godot_ship/assets/backgrounds/Background_Light.png b/godot_ship/assets/backgrounds/Background_Light.png new file mode 100644 index 0000000000000000000000000000000000000000..29a1aebed448074a86de7edead25550cb967adad GIT binary patch literal 9344 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 Date: Sat, 13 Nov 2021 23:07:19 -0600 Subject: [PATCH 035/107] Fix null deref when entering singleplayer after exiting multiplayer --- godot_ship/scenes/Game/Game.tscn | 12 +----------- godot_ship/script/Main.gd | 18 +++++++++--------- 2 files changed, 10 insertions(+), 20 deletions(-) diff --git a/godot_ship/scenes/Game/Game.tscn b/godot_ship/scenes/Game/Game.tscn index 8adf30b..21f5718 100644 --- a/godot_ship/scenes/Game/Game.tscn +++ b/godot_ship/scenes/Game/Game.tscn @@ -1,6 +1,5 @@ -[gd_scene load_steps=3 format=2] +[gd_scene load_steps=2 format=2] -[ext_resource path="res://assets/backgrounds/dark.png" type="Texture" id=1] [ext_resource path="res://script/game/Gameplay/Game.gd" type="Script" id=3] [node name="Game" type="Control"] @@ -12,15 +11,6 @@ __meta__ = { "_edit_use_anchors_": false } -[node name="Background" type="Sprite" parent="."] -show_behind_parent = true -position = Vector2( 321.081, 179.931 ) -texture = ExtResource( 1 ) -flip_h = true -__meta__ = { -"_edit_lock_": true -} - [node name="Buttons" type="VBoxContainer" parent="."] anchor_left = 0.912 anchor_top = 0.932 diff --git a/godot_ship/script/Main.gd b/godot_ship/script/Main.gd index 9db0959..e47590d 100644 --- a/godot_ship/script/Main.gd +++ b/godot_ship/script/Main.gd @@ -1,10 +1,10 @@ extends Control # Scenes -onready var title_screen = preload("res://scenes/Title Screen.tscn") -onready var game = preload("res://scenes/Game/Game.tscn" ) -onready var options = preload("res://scenes/Options.tscn" ) -onready var debug_menu = preload("res://scenes/Debug Menu.tscn" ) +onready var Title_Screen = preload("res://scenes/Title Screen.tscn") +onready var Game = preload("res://scenes/Game/Game.tscn" ) +onready var Options = preload("res://scenes/Options.tscn" ) +onready var Debug_Menu = preload("res://scenes/Debug Menu.tscn" ) #flags var power_saving = true @@ -26,7 +26,7 @@ func _ready(): OS.low_processor_usage_mode_sleep_usec = 6800 OS.window_fullscreen = start_fullscreen if debug_enabled: - add_child(debug_menu.instance()) + add_child(Debug_Menu.instance()) # Process global keybinds func _input(event): @@ -48,19 +48,19 @@ func _on_scene_start(scene): #print ("_on_scene_start(",scene,")") match scene: "Singleplayer": - add_child (game.instance()) + add_child (Game.instance()) return true "Multiplayer": - game = game.instance() + var game = Game.instance() game.is_multiplayer = true add_child (game) # add_child (multiplayercontroller.instance()) return true "Options": - add_child (options.instance()) + add_child (Options.instance()) return true "Title": - add_child (title_screen.instance()) + add_child (Title_Screen.instance()) return true func _on_scene_start_by_name(scene): From f099ed6c80175f597a5a1a71bef1d634c6d932c7 Mon Sep 17 00:00:00 2001 From: tommy-l-ngo Date: Sat, 13 Nov 2021 23:08:01 -0600 Subject: [PATCH 036/107] Hien's work --- ...SFX.ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.md5 | 3 +++ ....ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.oggstr | Bin 0 -> 8911 bytes ...SFX.ogg-d7b93821aa1c2b607fa4dc4bb3561322.md5 | 3 +++ ....ogg-d7b93821aa1c2b607fa4dc4bb3561322.oggstr | Bin 0 -> 43971 bytes ...SFX.ogg-52b6d419298328defecfc61b6c15659d.md5 | 3 +++ ....ogg-52b6d419298328defecfc61b6c15659d.oggstr | Bin 0 -> 29439 bytes godot_ship/assets/audio/HitSFX.ogg.import | 15 +++++++++++++++ godot_ship/assets/audio/MissSFX.ogg.import | 15 +++++++++++++++ godot_ship/assets/audio/SunkSFX.ogg.import | 15 +++++++++++++++ godot_ship/scenes/Main.tscn | 12 +++++++++++- 10 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 godot_ship/.import/HitSFX.ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.md5 create mode 100644 godot_ship/.import/HitSFX.ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.oggstr create mode 100644 godot_ship/.import/MissSFX.ogg-d7b93821aa1c2b607fa4dc4bb3561322.md5 create mode 100644 godot_ship/.import/MissSFX.ogg-d7b93821aa1c2b607fa4dc4bb3561322.oggstr create mode 100644 godot_ship/.import/SunkSFX.ogg-52b6d419298328defecfc61b6c15659d.md5 create mode 100644 godot_ship/.import/SunkSFX.ogg-52b6d419298328defecfc61b6c15659d.oggstr create mode 100644 godot_ship/assets/audio/HitSFX.ogg.import create mode 100644 godot_ship/assets/audio/MissSFX.ogg.import create mode 100644 godot_ship/assets/audio/SunkSFX.ogg.import diff --git a/godot_ship/.import/HitSFX.ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.md5 b/godot_ship/.import/HitSFX.ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.md5 new file mode 100644 index 0000000..dd2febb --- /dev/null +++ b/godot_ship/.import/HitSFX.ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.md5 @@ -0,0 +1,3 @@ +source_md5="aa361943427692c39cd21430895a1f89" +dest_md5="a384b01bb3a48f53f019cb11e44e2019" + diff --git a/godot_ship/.import/HitSFX.ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.oggstr b/godot_ship/.import/HitSFX.ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.oggstr new file mode 100644 index 0000000000000000000000000000000000000000..0d5b2793ff2d555d48127164f53c4a472842c9d5 GIT binary patch literal 8911 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 literal 0 HcmV?d00001 diff --git a/godot_ship/.import/MissSFX.ogg-d7b93821aa1c2b607fa4dc4bb3561322.md5 b/godot_ship/.import/MissSFX.ogg-d7b93821aa1c2b607fa4dc4bb3561322.md5 new file mode 100644 index 0000000..93ca95d --- /dev/null +++ b/godot_ship/.import/MissSFX.ogg-d7b93821aa1c2b607fa4dc4bb3561322.md5 @@ -0,0 +1,3 @@ +source_md5="4121e74ab010d628490c26ed5391a8f1" +dest_md5="e6145a1ff71559de29a79fa4b0b0fee2" + diff --git a/godot_ship/.import/MissSFX.ogg-d7b93821aa1c2b607fa4dc4bb3561322.oggstr b/godot_ship/.import/MissSFX.ogg-d7b93821aa1c2b607fa4dc4bb3561322.oggstr new file mode 100644 index 0000000000000000000000000000000000000000..e3ddb9aab69cca80856bc07e6424314458518377 GIT binary patch literal 43971 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 literal 0 HcmV?d00001 diff --git a/godot_ship/.import/SunkSFX.ogg-52b6d419298328defecfc61b6c15659d.md5 b/godot_ship/.import/SunkSFX.ogg-52b6d419298328defecfc61b6c15659d.md5 new file mode 100644 index 0000000..6f77432 --- /dev/null +++ b/godot_ship/.import/SunkSFX.ogg-52b6d419298328defecfc61b6c15659d.md5 @@ -0,0 +1,3 @@ +source_md5="d71fa2832e0ad78e94bbd353bc53c2bf" +dest_md5="87d33fdc866cbaaee42f97113a36ceac" + diff --git a/godot_ship/.import/SunkSFX.ogg-52b6d419298328defecfc61b6c15659d.oggstr b/godot_ship/.import/SunkSFX.ogg-52b6d419298328defecfc61b6c15659d.oggstr new file mode 100644 index 0000000000000000000000000000000000000000..f3bc4717d00476505db16e268565f1ae73d3ae44 GIT binary patch literal 29439 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 Dy?`ru literal 0 HcmV?d00001 diff --git a/godot_ship/assets/audio/HitSFX.ogg.import b/godot_ship/assets/audio/HitSFX.ogg.import new file mode 100644 index 0000000..f39b0c1 --- /dev/null +++ b/godot_ship/assets/audio/HitSFX.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/HitSFX.ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.oggstr" + +[deps] + +source_file="res://assets/audio/HitSFX.ogg" +dest_files=[ "res://.import/HitSFX.ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.oggstr" ] + +[params] + +loop=true +loop_offset=0 diff --git a/godot_ship/assets/audio/MissSFX.ogg.import b/godot_ship/assets/audio/MissSFX.ogg.import new file mode 100644 index 0000000..5689c33 --- /dev/null +++ b/godot_ship/assets/audio/MissSFX.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/MissSFX.ogg-d7b93821aa1c2b607fa4dc4bb3561322.oggstr" + +[deps] + +source_file="res://assets/audio/MissSFX.ogg" +dest_files=[ "res://.import/MissSFX.ogg-d7b93821aa1c2b607fa4dc4bb3561322.oggstr" ] + +[params] + +loop=true +loop_offset=0 diff --git a/godot_ship/assets/audio/SunkSFX.ogg.import b/godot_ship/assets/audio/SunkSFX.ogg.import new file mode 100644 index 0000000..df8f7c6 --- /dev/null +++ b/godot_ship/assets/audio/SunkSFX.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/SunkSFX.ogg-52b6d419298328defecfc61b6c15659d.oggstr" + +[deps] + +source_file="res://assets/audio/SunkSFX.ogg" +dest_files=[ "res://.import/SunkSFX.ogg-52b6d419298328defecfc61b6c15659d.oggstr" ] + +[params] + +loop=true +loop_offset=0 diff --git a/godot_ship/scenes/Main.tscn b/godot_ship/scenes/Main.tscn index 2376afa..056eeb3 100644 --- a/godot_ship/scenes/Main.tscn +++ b/godot_ship/scenes/Main.tscn @@ -1,5 +1,6 @@ -[gd_scene load_steps=2 format=2] +[gd_scene load_steps=3 format=2] +[ext_resource path="res://assets/backgrounds/Background_Dark.png" type="Texture" id=1] [ext_resource path="res://script/Main.gd" type="Script" id=5] [node name="Main" type="Control"] @@ -10,3 +11,12 @@ script = ExtResource( 5 ) __meta__ = { "_edit_use_anchors_": false } + +[node name="Background" type="TextureRect" parent="."] +margin_right = 40.0 +margin_bottom = 40.0 +texture = ExtResource( 1 ) +__meta__ = { +"_edit_lock_": true, +"_edit_use_anchors_": false +} From 0b98580d8acb81db64ceaf745f44642e324eb24e Mon Sep 17 00:00:00 2001 From: tommy-l-ngo Date: Sat, 13 Nov 2021 23:09:23 -0600 Subject: [PATCH 037/107] Revert "Hien's work" This reverts commit f099ed6c80175f597a5a1a71bef1d634c6d932c7. --- ...SFX.ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.md5 | 3 --- ....ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.oggstr | Bin 8911 -> 0 bytes ...SFX.ogg-d7b93821aa1c2b607fa4dc4bb3561322.md5 | 3 --- ....ogg-d7b93821aa1c2b607fa4dc4bb3561322.oggstr | Bin 43971 -> 0 bytes ...SFX.ogg-52b6d419298328defecfc61b6c15659d.md5 | 3 --- ....ogg-52b6d419298328defecfc61b6c15659d.oggstr | Bin 29439 -> 0 bytes godot_ship/assets/audio/HitSFX.ogg.import | 15 --------------- godot_ship/assets/audio/MissSFX.ogg.import | 15 --------------- godot_ship/assets/audio/SunkSFX.ogg.import | 15 --------------- godot_ship/scenes/Main.tscn | 12 +----------- 10 files changed, 1 insertion(+), 65 deletions(-) delete mode 100644 godot_ship/.import/HitSFX.ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.md5 delete mode 100644 godot_ship/.import/HitSFX.ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.oggstr delete mode 100644 godot_ship/.import/MissSFX.ogg-d7b93821aa1c2b607fa4dc4bb3561322.md5 delete mode 100644 godot_ship/.import/MissSFX.ogg-d7b93821aa1c2b607fa4dc4bb3561322.oggstr delete mode 100644 godot_ship/.import/SunkSFX.ogg-52b6d419298328defecfc61b6c15659d.md5 delete mode 100644 godot_ship/.import/SunkSFX.ogg-52b6d419298328defecfc61b6c15659d.oggstr delete mode 100644 godot_ship/assets/audio/HitSFX.ogg.import delete mode 100644 godot_ship/assets/audio/MissSFX.ogg.import delete mode 100644 godot_ship/assets/audio/SunkSFX.ogg.import diff --git a/godot_ship/.import/HitSFX.ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.md5 b/godot_ship/.import/HitSFX.ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.md5 deleted file mode 100644 index dd2febb..0000000 --- a/godot_ship/.import/HitSFX.ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="aa361943427692c39cd21430895a1f89" -dest_md5="a384b01bb3a48f53f019cb11e44e2019" - diff --git a/godot_ship/.import/HitSFX.ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.oggstr b/godot_ship/.import/HitSFX.ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.oggstr deleted file mode 100644 index 0d5b2793ff2d555d48127164f53c4a472842c9d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8911 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 diff --git a/godot_ship/.import/MissSFX.ogg-d7b93821aa1c2b607fa4dc4bb3561322.md5 b/godot_ship/.import/MissSFX.ogg-d7b93821aa1c2b607fa4dc4bb3561322.md5 deleted file mode 100644 index 93ca95d..0000000 --- a/godot_ship/.import/MissSFX.ogg-d7b93821aa1c2b607fa4dc4bb3561322.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="4121e74ab010d628490c26ed5391a8f1" -dest_md5="e6145a1ff71559de29a79fa4b0b0fee2" - diff --git a/godot_ship/.import/MissSFX.ogg-d7b93821aa1c2b607fa4dc4bb3561322.oggstr b/godot_ship/.import/MissSFX.ogg-d7b93821aa1c2b607fa4dc4bb3561322.oggstr deleted file mode 100644 index e3ddb9aab69cca80856bc07e6424314458518377..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43971 zcmeFYcT`hN_dj|P0)!rVs0Ikt0HI3N6u{6F0->YyCcO%_P^BAsM|ufGx(cH7t~5ae z3krxJU_*JtN4df0eZSxLch|b>ch~*izwWw|nK^s*p0+vsMAYF5V&k&inuP%0Md#r-fkmkbtmYSNDs)0j|!z7efOs zhPb->y94b1Df4&sa|h^Y95?4s=RbsRKtLeCO5+?87Xv&zLfk_EMp`<=HP|~altusm zh!&V>;ZMz4ii%3W-Z7iz{x7ux(}c(21T7R$0pPr+r^O!zEe!y_hCzR7c;a_o7bFS_ z|1TuKdX0ZF0OZc&Mgia+=ugRin6&t~aWY3*rWf|G1C206B{jqiF3GznufwD zbp<6f`nUvw7To<^1Kiw$b!kFZnovna^;nAV^>+EEAc+2-t0WF@1p+VtfDD1l8B~Yx z#lZw|W&&%%xF?r(1aKytF~Z6w_LGt!6tSu@T%x^9^bCar92dBWz04DrjD?EDN$T2U z#!Bnbs6r_yPsAZq-FN{C0F+h8Bv;5V!vx!yfiVDpVa$0(gM`O3 zgvVQjS)gpTv^fF-ptO91T-E#YGB<78d${oJCNVH$OQWb0Ki?7y=7$@d3jn!XrV zLYngnS?JuR7s7zkMNoMQd+;93Bp6$a+n#;zRh6v;mCOku8cF{HI2gb{#o~F0gnvga ziDC)x;0f8!^v<}LI|VeZdz!))(fvtNpLJh=9f=Kl(Fw#jw3{a^e)s?+X#1Z}eaqloMX zJY-7qJu(~iZ#8KH3Iy_;{WIST+mOa{$j5W2^IuiZbL*P(=+CQ?W_caWPx+avyU(jR zTBtjcto*EV{p`EKR`T3e4z9ia5AVqMM@23G(8`pM%@mi-T+>KL8e+W02%4Mv_NBK3(h;t#rH)?;*q2bGZe!KleO)qixH<<_MEY90E| zqVcZ*007qU7M{sjVN)*21)@C3LVkg$zhFW7-#OEHRa0&nuuK321W;fW^712vOesj0 zIiH3yS61Rqbt^&6v-9qRQarr#g5b?;bJ&%7q-!#EO1^4FR;p>y5*N=?mG3IYOJpa~ z1}`3f6@pd+g)wa?n*W0g08mufW^_1OR5|{YMw-&0&eN$*A3xjvrw%ixiutNT^Z%-d z*3c&%&QE%r|4O5#=~QRwbj)e1$N$*j{i>i$ckFzbH`?^Su|U!U*m*=U zU`P|ps3wa4w13qg zyv}(Z@50T%~Pcoo9*%~ehFYrLs)Xj2l+W;I(qhCQ}s=q(VR&$M??Nh-+RUPNo`+Vam*YH?OprypBV1gsaI3ApoWc3`8il`zIWqIQ)jpQUNvxz>kBp6Y) zKARaQCz(S8fTd_UT8KCE8Z!bA8~_<@aQx6dCtk(l`b1NjlbEcuS)660^p0i*8OjRK zp5~iX*?&wPqR}x=Q?~k#-IGl;qFGAkjASL_o?xY`v*&2`5jOx>{z1EP>>We``v-0! z2w+WjJ%*cxR4($*Xvq}TNE!Y!0Mzk+9~ajGDVZR}*bSXqY)X3v+*-8;$B|-dSz~fKL!cpbRWzbyh=GkOigcCVBk4 z#K2=IG?UyNhGQ0s%O*l;cg259e=dMPoARlxi^m4lBF2*z(J1oNpX7f>#AE4yC;x9z z@-*Y@kA?Oh5j}87(g6NCv(%zBU^r{zL>o~MnKs?~;MMRDR-A0LC6qP-p_X>5bCG1i13wD>#Bk-5@ zDb-ztDN3jRS|*~D799W}B9;!&i%C;yM3(TTGw=(xaRD^k5HQ*#q0JfEtf(TUYSLx} zI}TcIN#p&Y#IjS5XV0Jg57CIm`$JKP+yA0qMzSTxC62d9vemJFq%b3y>MEXp?U?GT zvX3buj;1Ybp#J2OtfE=C$2@2`ZSag_<7vgJvuP^JR&yCKNyc#zWo4^*jG$sPA&qBg z#8e)~MVp+**wZR7lBJEVum;UIhGV4#NPNzfO#Gt%tSW9ao2Me1C@ZfYBVG-!f*Tv~ zhM3tU*9Ef@AJ-F~Al@N!6P4n!vn-Y0@!(i-+rnWcvJCP$aNG#IYAM*bJmh%OjRnYL z3he~|gkA;cTLs>Pz(T>0vqAtFq34mPH;4!Pawp^C6Kgb{GUBIf($?)|5#MVD>wx5&nCO? z&Y$vsHrdDgCs(fZI~w7SOx4xZPo2_GG1k&Mf*-LRG5Q24-v zywMl{KD5BCp14XT9W2C-d#a!F*ST>o|9azz_18aRtw*L_T-CZBc&Yz7N%F=uL*$t( zLgAzB8#@ParDu2LU#WR_uA49e&O3VieT?rnh^u*%bi4wT`bWdFGm4$2nG^iis_tGtPqi9;yZQU*^VLHgjkbiik^!q#ge%~ER+&jv7U(+x zV2=L!zBbr>=KB)I*YmE$8P8Qz8WVy^q$UF+CXJ?Ro8c}-8#k|+XmaE4NKBl1IC}dt z>G1uxV%LkJKevZV4th6_YS(`;-uxC6xVd#bD!(+#*J*Dz{L#vd{SUj}C-PJ7k1qY} zx_STT;qCJQpkU>I{Pu{ogL>gtJ(cHfKUr+t&C0pP@Gew&?`sV8K=|lY;Kz@C=Wd_l zFKRk%d!+KC>8}azL;jKn?6vzk={??0&WTuv_pGhfK5GBsJywIX6xQ-Qr}DToRdjZm zLxM3Am4fJ^P|DsNEKU^3k$&JZ$FF_f{yez8gz?>hAX8BVjJ<7&mo7v!YF?Q3_aE(8 zr-~-+7P3fb|In#XGi;5-T?drEQP1YOgbN8}1wXD95D{a@xc+c$4X-Lsxwz2&Iezgu z;~l$?dTsPi&3;4V{bl%F3K;?Zy1s9KHAm%kyZzWNzxq2KKc4-5H9qm}fvr7JrsFWo z`KlPx>2?-J6y4BMKDr%wcjlQVEHG!ePZsuw1tHxYgKve=5k>aZ4V-sEP7P{0+%!4t zP(CMmCd%$aCvA9=MJ{&#+vSq zRyKcX*Nsx^<(}BB3MgWmGBW|D%#xUr6#)fHW`{h;0b7JmLl3{A;|;ZQlWdx~*K?&W zszA*@)O&? ziw}O?ojy$24?fhi(jC3_nbAv53V31Z21++X(FZuarJHe*`}DYrefspnZ;PKg^mpUz z&%S+gar^rR)VJ%GLpYF=i`P^a?*C|MW$LH(&;%GVGl6{p>xuDRt_7(y*QPxt*ljN+ zF&JE2SRM_u+fO?&InpHa?I?4q#H1G+F8TL4B?2-~JBYl^m~Y7w{lkFCzj4=NITGEx z|8pUHW%z<(-mjo1a8&7;(i1(g2q>7k``zk7RK4LfOH$emAD?T@>*Ma0T#vk(Ks?W^ zEI49(Kh*PY-p3ox#L4iC1-d%KGOC1MtS{*GJ7ddzjwh7l3z^eaPao^84c>XnxAeK; z`lIileXCAuuAlY`a#G*vOiGb9(Gr*yBjjh5j{z^RWe4tQ4I+AS6>b^zuo-aM}zTv41_fwJ0t z+L07~<8g45he2pteuJP3>6-U@58<2L)3UR73*5RBYWLoWw(gDW?H*!lpgu$9MV?YYu}XB?C!4@C zUv6Hi8~X54hHo`1DNmH1jp?VVETZLO5{p{znXrpl+n@MF_QJ9wznsS->*HGNm~m*0 zOeJ@!@~00~7qns(s}HJ2}>w)&KLhkNHxDx?CLXu8WM;#%d{gUFa5@dGL)gEc07!+SCqHgR2R zC7O1I-Te3-BBPz=4X&e(rgIDhM45LVJ*!sikv)v9)<}8cuqUg?d$&o8IZ3fBD#(2+uls z$qBATBLo`=8jTmOA?%*NR5#@cJ2WRPgci;-gL+zA>v5#a`o>Hx$|sB_vyKx*Cz_1I zlz-7jh2nO61To_L&l&i^`E?I!2C$c7hM_`LQrxaL!@(S~sKn7wn;Um=Q zvn_HLgSi`DMa}x>sKd4 zG$Nlp`FMHLrl3)?KJsFT3NAVEi2uxXylIrDkg(;vz7{UjeL;r97v=M>qm5xS(%kpPkH7q!5UO8m0_=J+07!zM1^e{hhjOsBpt5*uTr{i;gUCs10oM<}%)H3p6+X4P8sbZF zK6YVqW<+9fvIyj4m%KOj?UNotzn})WPu%G27^+;DV#aRHP&};uCaL!n7oCq)G{8-u zWF|)nOdLuTniOZ;A0VC_MW|i>y<#~gXP?7Tq-*|5Sdf2TV=Y;ew@lrO2L1M&`>7MBu`OJ@JffPc$>c`0NhTWT-bK+pM3BMZ#9(J+GmI7 zQuDKIltolq8QV^m!E%@2R=jJ4R$`JMM8?zQ5jV)`TQC9~#w%#-VbIuM!0!9ou@udw zl`XQ)=98xsAa#h*2!Ey|6w|YKEhB2&UAolkn)$8$l`F5*esz?yCPOlAMLEi9w@}d2 z@i}7xdR(*HMd9gtSKC$X-e2K@?v!}Ox$y_w?V)401F0uHzb$>iyCWK62kP5H1)Biv zpuUGEm#!a~$z&;**9oVzx{yk4=i)EQ=g**DYluqUyyr=;p>HDz^7ghoXPd#yD@S`r zEoWIpwCQBRJL}2OH**-_((P91Wma10VGu$+AZrGL3c2w>Ld*K-!N!0DV~E($L>sG& z8K8lOwg$QQj=sa3Ss~<_&Z870s8j$+_wIR3J{yo^hOA!9Q_v1ke60U^KI#R0ww(U? zZDx-Xe=kI;)P3Me{;0qap?1iqsjLQ57F!%X?A=RB^p?JPv?~5t%73@(w&Ld%uNXSY zcov)fOJ;>!?zO(;OEIocUpaxEjc6MzaN);PCWFaJ2DaeQS8qDTDLP=+ktzI(8#?5c zmmSI~#ly>PN)8_{rsh5!!@+~nfwpL9itEyZ8s9d&AMj~h( z>WhefiEvnKg}OZszRXx77>n7>)?vQL#Mz35mbKsVy{@b9c&!1lUHKA!H$G&@>qZd% zgP1nw2cE^Rh5Ga8p40Vg+AS@8eCaz*8&1DuOb$0fuKsZQz0*H8Jwa4`r-Iqb&3z{A zgEeaZ%$n+T#RO+XS5WrM*{$r_64S#-Jq$1aTGbVdya0$}o(}fRlkImf=NV$tWhj%u z3uYvtj};})+lSx>m6?=vLRQjL5gVd@s3a+Z;sxgL8wpc|iJ&I`}Mtc*T>LwI*E+0*a$w%PXcTBZ@6dl zv~Th-$E!qECZmeNIAV4Xf07ueHIz}de)ZbvyRN{*7^Q_Fq*i4M`qiwtIEA$PTw6XL zHrRTqAj-9J2y#28t}eE>XrZgHRM##oMYqtW%8;sAGN0DNwB=z*Hi^n`&$jfSYW2Pi z)@-@t<{6`k%;b1GOuzKRW~|~u7vpIS-O1`hQ%ibC=8o;)3{+=ttX!^rOWJDtLo6W| zgcUxicB$GKo)ITDGy~I8H<}l}lmR1fF(HtMP*7%xx;tH;UIy|`IU6*;Au}g&WW?&K z$vY=(YyXlHQ4d>XO_HeCsQa4(;G6fK&cuA|vU06So;&Ad z5Us98E#Xg;Kh~}DqQT!`YhSUpDJm%U0s}8&k)I=L0wNrM6rn7ok2w}l94ns&+ znIPwZg^-1IEz@Q7g`(?LiyFNz9eU=HwA#)!D`?o}y}Zn85;FxT0M>evF;)Vw%6YHH z<1XyEzqV^ylbFz}QcC#)q7-lmHY!U88&}fB)Y7X+(6}fxt`L4NCh^->*y&5uqV+^- zbRZH5TMA|{%;v>rLX^4}M|><3k+0_FbMIz3IHUwUs{HlHbie3k#`W(_=r34AzF|kL z#Wj(Hc$Cr&@O3$*oH)xZpD3QXy<5&M2?0uMFDzZ*;16_+?w7(jVxmVnhpH$D~xV4^a zL2+9U;#nvevxxYHn|dTQqLINh#7j3Qi>88QdZq@CHgJr1+uK7Br2oTnZQ!WkK+*3eE-A10A`j|e8KzSet0l^>B6bX z$*S7g!}Qz(vPhKDZ^M*Q4#~F>?<`wlq1}z?dy7*fBDXSnmB zABvYyN{(}uQmN7!+;+BPJH^-An<6z?7e9+?8%t?FiZQA)&twhuGVX(mUFtVhOU-Tz zoJhRKGIAx-BAH>Nmw_GHC)$T5BT}Ibw`F#!6;&2sf8|4z$U%p%i05jAdVGq7C5dzz za6>*wE@I>5Mop%BrBVG1v!h&8!M*Pb%_$3n+z^F?8&h06?iFufJ7+$1`#jGg^QTrC zr?F|-=X`mF<@x@zD0c=m^h6qW7u~h;1akB{ZbU0(?a~V5s4mm{7sI(u8@PIceaVRW zD}fGHrso3KA=VPiLI!1#LC+*G{QFdBLwRF| z`c`hlL~7)rc8dfN=_=+Nc4tG+*9Ju~WJfDG8)4uWr4gC>;+K1kJ(3E7z#b>VC2%ck z5X1?S%?}}ef|N7ZwQWS#yobP|S@;$$WmyNt%Se-K3CJWgOs;Q1!EDkFfYe|a6rr$z zTvsuq8w+Z3h!0aTHy}@N5HE2jo$y@_dm~l!k?7%{@UZkf>*>VKxH~ndI*x3{kg^@t z*iro8*=uaA)`p2;ZA1Hwk3~FBOuuO;{^0tvrN_dgeC>sRJ4m}*B>IhVp{I=CCV1sa zY1$5hD3fJ0+kLpV4EZeL7I$RG?3q-jh zoF23>pTn+Dh>6L}1JDCM2XnEuz{r8|Hs|UJNrny?otQp=`hs?lT0Y7HlF0(%alT0^OB1eG;ft+oyG>lD!L&dW&cWJ0CO`mn(;2 zynDt;Qto^z^Eg3nN4IOP#!#aEL*8fd%V^~xw54XG2p7UrLmawbz?Y$nfQY{V%aS(4 zzympUi0ma3b)c1kb|x#a+pLSl3qw^0q4Z=xNrp*qt)g?n35@|LPJPjwnyvAVSM4kH zGv%r+yz^oURrv~UQSQqmJ-3OwCRHJ1e%X%Yh5?=Subqn2t`XVt=9G0u3&ph;1FJt& zl2OrqD0H$JWWZ*?i4_C+zW=B_)1lK;?B<%gn@9XDNc~$dVdXkQ>{F5WcYG^!&w<~k zrdF8C_<)*0=dw?L0m$jsgMi2SjcJKcll&#!iNqR-+ydA8#ZDx(k6~Y$29d^#JeRJu zLR~JRiSuD|N+PF;x(8($I~m;r`DJqj3%w2>J0{Z&s&_-@RDZp!@l#;Sr@(B9w(%QK zAkb@^^Bc&JakZam1PofViIH;g#*l^dJQpBKZdGrJUBnn|%kwV`l$HFl`EGYzjA#JQ zckkPmt0eU%7kEkl4kz?y{N603RH&YHb7r+;WkwBRgsl|KJ@tK&6JqDzXdI>v6@WgH^`>go=o6{bSr!it-NCxLDg7yh*f$= z)e66bkGUk6)}&ai#+8K{f7%q*iBgT?)cp|I8{%hmrEpKu%Cge2xkqH~d=oRBn=2VD z@D{@t2iSo1TrAVkCl%cTG`(*E(Qw;%q_$;pKRm8i+!PRLzJ#o=6}rQ_xsy|(q~Q=E zi?q7S!}OJUUJf&obe4AKNQ;RxtYw1pI_0L`D4tN}9J6K+gkB|B)nV=oZ- z-~%7^_prUQ2Ifv4cj|`^0z!AV#>iLL#UswNE(StfmOms*Bo@~$ROrlpe#{AKmtCCb zSv@t{?~SK(UJNnbTSSUybX^BMgg<8B84#lDy9<462iFT_Ab0XxQ#Aejbmzn3!+1 zR#j3s_WhYn&q{+NuQ}xDTjL{Ll$bIfpR$d{??)CW;f1ghi>Xa3hp>(-?rDNCSl5n1 zjMZ4vjERY?p zZi68|FYDQ7s z!f{SQa6Bgzo+^QBa2YKR5@_&^S!WzW4{gD)ykZQfE09EXumJP;llVZ|4&KOt+~*dX zMK7)f5;agoaD+RtW>r!_ASd$p@EJidKAy?gHy^G$C2O0VaI(;N#$pV$(%+()%k{e# ze#BfgcrTe9eme9~q~cxgH|i1Y_agVBM4NIy?RhqCdpAUPwoLmOUCm+S+d`rkI|7@1 z3vT`}*xQd2suB4azWO4;RGRL3qHqVoj2*Z;qu~ZB(*znL_?$Wl3e0(09i~W6NMSE@ zZhxP1(!$I2I=JSLh7+1G%2I?3v{Z9j*UI(U`fsj>X=Q~$x>Fz-yl=kL^CkcUb;H2H zUU!}w2!hvV5|$n-!^bfgf=OaK6K&@JmraX-)nk;(2ZCoHtR`~t%=f|L3tYnsw(t{GWLKMT5i7<;+r?}X3JpI%&aY_7fg>E3X@ znc%6b%`YD{!i*-L{#bt@wf-Q)yJ@$Bx$A^=|B1zi!yqo*1=(NLn_=x;nohx1odd7b z$YZA3i{6vTdd;8Ts3{8Y&*1^n7%2nd(11>+o$piMSb$ zPHIK_RA(Cyhjv7$B`I>;S{?29zQ|Y25&EhqAa>ZMvBS+!blmRUeJ!e`W(Hejpf5id zU`ut~!47sGrdU9jVKcM#aU8O>iOda}@eF6b2@ZGq-UG%ij5lzl4?-y`v&XQ0>NTiyiw{0&9syT?YJ*qu=i; z06lzE&UuL&4Mo1sZl?ac4gZn*ik%yLqtmL#Gwfr0s~Pb&ZU#(r;3`AiLT zRq|=G^C@@agq3r)Gi(?pFah437wRi0S(XdQ{`2b8dUbyMO0D;{Pbb?v?@Z5Vc_!Hx1(OxyUTSQ0&fI9EPE z?#IjJdl^rRtdjKXVu_C%_X%zEo_g1f&5v#?AlBz9gagqH!f+jEZ3<}KOuUwf40S*PzNGaUvuQYHmE=R_trxjYvI)bG7;cyc8#eWPk_ z!1UL$|IJQUx>5~c2rQ5ZxKu&=yB&e7>-*bMpHHYyHgrxmdA&Gf*tdmxo$IHUHNtNR z_W+TBFZVFuGbUO}D=*MB3x6LvOTHJaubPppDaG3)$6MybzFkoFY%IDe8nzQuq4k`+ zt6aq|!405MK$kUNJzk=)1!pYYK@V!x0v04qIRW2SU?azXsdj!u5^GQa=wJ{O7skb4QF+V5na*FZYk6O!8nEkLimvEgo zTp{8|;r3%inQr)Kfl!G>>7l)NbMQwSGCCi@kYOO;Mt=wOu`20Y#mU7HC+P~zBOPgM zGZ!v2d@j)M3L|hqW(uIsG=2d1uc8M(C$bt|1??PMjGDt%WrwRq8C1WmaZws+q*~29 z>OSv>?BusVKV2AfFs7uQXkN}&$K7FL_dUz~{XIr*YN#vG$K%TVsY|57E?N6rCNA)# z*{Na7sh%*t5DvDKtXCOt8!zb>&)+fc?c6)x9)Vi+Xr15AJjs<@=@7p`FLV>UXv=5o zsduOPIh+MhV)DU?yQ=VZ;9aO{Aloet9nC`5^4e%={YZcfQ4&<}MMvma+ zn1J~bOe#Z30Yr>;>LJIKbTeU(J6I+^!PWO(5b~^xIJNja!hY+%Wr2FfzK&mnVnTy| zz)EPhh}~dw`xW(GQ)`QDm#5Dg{8YHxP(xBFhAtBN5rQsAC@xF`OSY*tGvLvH0?2}X z30D_I1dB-o6k+*>EFjxgFIg&Z~t&M$oP^A@PB3;{Hb>AxazRsKUFADX8VpmXRm&2~1WU5WR&fk7& z$$P^l>QU!QvC>Cy_|ERmq2}Ex6O1a4vRv`zq?(KkUDPV-H|&DVlsLqepbkQQyd6MZ zM|@3XA|C`iy0HBf5MSwW`;KGV$PY0@ZBn1Sd+_Ldxz})Lns8lBOum_OK3(m_CY{E^ z<}Q>v>zc7Hx+1D^hx#O{T#+hfBH6f}IGjJ;s?eNZl*xo9&)evR$0y7{R9C?%Q{rC9 z>_}@8qM%geeOlW|wQLbE82`q*m5>8W+-p?Wk(l2rwW)1u$b4cbU<9rLz47kmiFpz~ zzctWTZ&~p*{7kFh#AdR`%dT=BG4Ie^pWBGl@L%TKAMWBj znc5*j%PnndQf21czEw8vL}r_nN(hI5DT{{&7NNR5}JDGtZzn`KdO80Lq9E^KGKbwAqax%E;4=}(|_9X@? zaXpXXmzqCGDQ{hP5?R*sgwvJ&v2&N}o0x7*zKZ81re_379%e5mE*^D1Ufx~0_B2L0 zZl>%-L0^WgQaS#U>d>?OqxmKn=+%MH0K^6AE5L&h4b;G)83ZAHKL#sn=0YfM9L8TPXgf&i1)+ewl2U6O7>FlqxYX{3`r)=rjwbG4t-B@TtF>hm^SZ zr%s3v#(t1~q4>qrf5)w9dA1ngA)ox-%pA7nECjtFWt{VFh*2#`6!AOrIUsQ=N=3nf zV%v3iY27gy`pC7=e&VkH>6fcW9LMNULeQW?L3WpQppNds@f_lStAa%YWWR5%)jq8(ncXN$!aa}8H8UPC#6wSg2OU%ZYl9dwm*(aEBaX=b$ zBR3`6*GcduD-kAOh+{WItD~Ig5cYh|Ltg7j!I~y`9%x^AKdu07F%lv61Tx_SX1eY6 zd~RA}L;p)t!7HgXcG=03?51IM-C}>Ob)3xpBptitH{KVtP{Kyfr2HdLLwciiO@u84 zb#r7Xvq8(~dmEwP9yinH9tX|8f61GOniP0p{n`>M&qY&MgubZfUrWu|>wuk^iWP-U zscLud`;>CLiI_> zptXFbQK`m&1h)FSQD);Zf>kU;97Lh{bg|t{8ML~dSh+9sy&DD7vP>v~O5Y86kS!`rfDp zs6W;GTKA#7C*<*+q&n4U-j0_)Q{);4Rg&XcNmSz(WK+x ze^SxASgilztsU~+s<4WYNwe{?xvkQY0CCrM*iPZ4mODN3Aevr6S|nNLmvSMm#7GRR zpsx&*nxSt;*J9<82=t}Nx1}}>FtiLL3qI!@dH*z{-2QBV()?0e9d9>)Nb(F4h+8k4 z7DYatnrWm96sf-Ps;l-yy%!WGHl8?>vNC#>De5Lls(`2cw7|I^8EGdzFPM0qd4bPU zPu4K;1M3~!wFm|PrP;^ zE6h)P7;As?YcZ(wK*&D>0iG~sD8M@BA}|_uKWAdQuJ7rjRs!PO;B&cE+NPjU6kmvK zBXuxvIIL}&SI%_P#zd*fgSWvR6^1vJyE!g5Ki^oKWAsjIs~q>1!0>sCK;|^SMOPU_ zQvfM3{9vdpSi+mHS9+78O0DXUr)RB>v3&~>usUg(Icx)BhO)AjV?`xM@#&|TNLHyY z%hT$OBb6dl9NgDJp_sAm2Jx|*2HtCGbLIAHr!R8F8&kLbRyV?>$d+@QJ}RF9tsbmb zaGI$9w1Y;o1RzDK;2u8RS1e0xrVa%SB;DJ>+O#%8^c80x<@|V@`@6eHPQBQa(Uc?l zT4i}?R|-?zq_D|_dwvh|g%wnNYh#_G6=yY&NMCI-%d21L+!j4u4V7e#QBqC=H8O+@ z;}U8zScIg6}QTQA$Z;oF% zA5dt>Q&~ly0KZMmd^$4K)@|CU;*}l-NjML2n@-6JGtCudf3@!(Z2W00tYUa3vh?r? zRqutO_?VTrk5Y7i4R;%?l{Eg)cdAcS0RD*0rL#+&^cN|~K_Vo;7MN1uS zD@F!>lYSrrjIg?Ut_w#9~Xh?U+BFd_jy^#c+u_rq$A`# zq&M~GmKJGkl-o4Lkp#SR^%(In?}`%>BfP>}pYyY-hz9%hL6evUTXIW9tAht@a!o5O zcAJT~r-r09?F#up70$m1V8aZ#I&{1Q_EJT1LAJA`9*Qd|x>1fe(%emScQfWvb1Dps2lts1@j39s#h)o-;#$S$LVZ`6y z2;(&>!F*#Tr;_|tGG=YO$2eRl(NuF{{7pNh1;gN@qM4+|`=q zsS)K0ps`a-c~`#Mxo+L>O4GCY&`O-&e^cb6zV(;S+{K^I>h~hy^!?t}>m3=s9J4lz5cvNyFEta?Mdu3oBN5}SSB@`k2={r&#VwkQ5i z^(Fms#asl6=sEK#6gk>Avp3oDv!O9ShF;tS2JnH$Ns1Gm%SmRWjg6i;4^)I;n1H#R zs^dLpmbMThHqn~z$1q!Vfri%9m^03GbHGP3UiIdKbIi$SwoUGyvQgr#+JE(n>gZVy z<9YD_9%g?zDSJWz#;Z&p3yPHMVu zHLF?IPg)3mVl;2xy>PqUF}?s72TRPgre_U?uVx5vGUJyGK}t@U#WNYHtm@=OOd3aI z$Yk%V6nAyKdX({HhmMwY*0`LulVFfC3P@vxlRY@SI9G|Y!ERxV7(bi-)fHoI>P7}s zOZ<7>-lHCu^y&EwBXT8v5YKVJhTV8SKIIlF{BlE2_r+b`UKoRGoGSt%_LgdR-;^!y zuJku+T|}q3in2h@_n%Fn+6nifyej@uP>8i~yxTeV(!k$Xd2vDPF6ce|>3Y^klXLXI zgUPC4=Q3g76`d59xUJVauNh0hOBf~V=52x} zL34(oZ_MIiiB< ze6;;kwp|F1LaM#gYLqh!i?P{B7`hIS*6vx4m>=`JuaHT37baG_W6)qafZ!}MT69p7 z_~^G`*DwE<%<|rw;nJoZb-3C%xd}JrIdOg;mW5s)7S^APqQ%af>W6kkU;FUEJ!8W2 zuAWr2hud!(+N&-vl!tZd*`Xs(2(8Ntu-zBXuU=$wl~+~?%Axz`gL?quNPDeGbH|^} zAAi;O$f!S_d<6P^NIRlWcf?6Mj}M`p(C1WAQc%U7p&iI){7pNcFR6@HMJu9}a9G^w zBP8wgJ`3%~aRj5C{pX+^@fTG_pT*Q=wLEO)!;lup)ecIRu%gx_0=j!C=L8p|pKVpqh^f zy2PtG2R3GZz#OaU6uVq5(5GIz*j1n5u2O5`CCF9!#`VP#%ew7lc_cUB2hevw2=E-G zHoQcR2tBTXzT7-F!#t}4D^u-4q{m&zCxkvXBk{eIBl%U@2#QBz6&gR~8PET)?Xbla zPA@&)r?l=e+n)`nAUQ`|cK)O$Yza+Di|V{zc<<$qs{Yi<^UqC}FRJuiEhaL%xx_Yq zd*tkjXSdN%-g}(fTHYGuJg@JcRLC;Q@#=YpA#)kW{dAg0?U;l?UvhTz6Z z@WjN^FJ)JCVrBZpW%OcO%4}1;THeBt53)o2P7{eyR&8a2r|)5(+NTuoB-hnAT4gB? zChn_=zj^#@5X~h$^GGJCfOGy)TFa-gknCin*#6`^`s;U@v&}sc!!s_Sl|3P;I|lrp z$`$o+BS{8T&AtKS&kMF0?0HKgr@%lQg#4{7pAII&0$ge4DCT-GI0bV}CFKrNeP#{t z!&B)#O>ZTi+nLvw1!H#lfQCvsBbeFO!1}QnuWyejmR09qCt|(B^o-@klo?#c$L?v= zEEpA)gZ=DToS+$eO!w8CzLK?rK3w)SD5J zusQ!UNL{gj4CH1U+2UPW$o=_d(+>~-mP36#^uG3nY3SO3(NA7^r&}*_u!jhJ?a3~1SR@QW)nQ`O@X^*bEv4f=o`VM?2*++s&94j(HK2L{~O5Gy3 zg?TEMsun6b(beUhZw8c$3H0B~f>Z@}zu#5YyW&mcO%OpvF9TAQ;50ioR!BU!exhFS z?i@>}*Cc{;51k||z=((eJq0`v%ud7JS=&qlMncxUWy_+PF@$n@*b>6!t%_1i_N8nD znjyx*lAs*34kl3|(%tiSMw_gOBCP_yUxc9KPcD?rzZ{d_EB;9zQaWd{i{j5K#`jXK z-l}nd`<9a9!0I8l53pwIa@w<(wC&Cl^QUzqr7QdQ9LuLvEBrVd1Fs$Wdi{8hzw+tl zt4UBfsMLE3%nD^-@!#4R|z zodV4$JXTB4t7UO_Glf}K#ZqC+$<;`6+Sdz75|!RnxG^cn%xX>?Cw%ro31G*{H^SoA z(y4`ZDpyu~y1`lSyIU*9|60Gz*0-LGkyw{K?q}NB1KswJVe6C@QBa7QNd3bicDK;7 zdoKyd0;dJ`yKnvN4hP*g7BIcFS2zUuMEAaHZ)OLRix1{z(+pMw28Wl;uLl?=qI1=Y?P zr3k^JRV!YeYwuQmwxYk;t!YsGBDRk4J&6^gTewq`(`~sgrHRy!2Dj+dDvi0tkQds& zw*lo=wuv$((qrIMwM-kN*r^mHWhCnt)^bnOEijm#OAJ%7w3Usz*~X?PAxY2VCbw4blzD=PwldT+!!4wlprqknOV(eHzHiI=37nKTxo_jp6N>Sa*Q3Xmjer(dnB_~esiP( zQrgg`bKz>Gk|er^mxYO-GJtJo;O!>>@Q((6x8MZs?-)o)Y>7`&#XRm)PYZ`ej-QP5 zU4EPXHf8JNyh)b4LE-YK!F+Q*y2ys3`+_ud!J;T@*5PTJac9YPIQ-u z?Ez}9!pFz*h(|kc^Wjkz=1A`9$=8uh_JJA+0{R|(=S9=rLMdA}?Iu+mgEO4fxRw7F z{yzYjKxV&XC<1JV41nIu?GDA-OBw$nl@|2&AeLT@sJ5^uCRH&9J;ja`Hf+JJtLLh6*AWsLw0BdA}K_J7dtBfQBLN<}o?~6tN zXhDpCh@2Pzg9HX##t{O63=t9_kZ6>MrAh?^5yF53epm)2CF&|sZNQbc%%mX`C9*O! zs01XyA#jN2fXILZH+KSd64ajAIp(UEV^w{2@WA(7 zOnZZ~Aq`$4nS^_IQnh;=AyS>{!v?SKJp_4hxU#DUtA`G_lZ(~v<;>3P41E`ZQb{2R zObD%Tu@DM`#ncC!1foeIP$-|sd@s3j;%3VrS+%ZHv+OI-5(o_TN*u@nj09=0?ZPNw zVu&rGQpngiH4s|}TS7@@)!0;eYiPniU?bo%*pJV8$f0ev|%@>f0PM-?z|$W_(JOQe~f@MNn4`Vn;f zq)0G9Tha7Jjp?ZWEf_EWb{E_@ivYp`z%cjQ1eE|P0{}iV|Ihp(Ll(JAH0AWP`^z|C z_RO9vXR#_*RfDsg9qs$Wl(C&2oU(~i!{%_a%z`!*o0174VUX_X#c9iO>Cvf*%JeX3 zxvt7euMwg!fY3nOtJX!=Mu0K17+7os0nt#R>O@s_RGVN6Y^<>&kbyW2q@W4tWQ=K+ zVL({MYdZ_4+$1YP(0a54*(%sX5LiqBL$T0qLr7W>PZIzl#7s)}w6aa`%_mfoO4nnq z?L${li0Fpshu5eQ+ptpok%;rM>(AjX@ASU3VQ1M$c5)i70(`YZOC?Okx0=WO1NpXy zO^i6TJNcOOVxt%&Z@~d!#D^L;ptgXm-KY!!>_k#dTgr{3g`~~{Km=KVUmOB%{+XiE z4G@b%5Md$7tLr?a7H6YtLPQCsR(cr15d_C>HF(-$*-8T@*FI@M#3}$)?-{30EZzsJ zEJzI&ih~j9b*~zWf8@+nsWF{HKLGqn0Odw!aD=5Vv$?eq5dcG|0%JCg(?u6tZzk^k zGyF}`OAW@}OuxFd$0rXl3`tT#GoN2cN?9nq_t-_qfWxc6mZz)6rL3l($eID6r4jRV zg>U2vdgq^`H5}+{W3rzB3`w=o7}p7kYO`Wo_c-g75t-S9=rEWUX}qH;r6wr3O*P|m zDC#I#YmYi(pfi$PDS<=TS`DwZB?zS>M8K=mdZ+^SGz1qtoB%aI!D|Tl>plk08DGb zO%o76&jElx0Dx#mdD<#_lqs>3nHo%IFu`&a%dx7?#0e50<)+SMZudyIt4nLbDH&>Q zkLo&Ch$Rc-=Jc3oB1%_uMOb%Uv3yW&!MTyJI-pnksW# zO9_+2q!81+Ud<)DdUUG2bgEGgs#nlZbtOA}5HFV9CFC}iq9F(yoY|sm*%;&ij^U}^ z!vRTS!T^Lpp{%rwOe0esv&ga=yCMi}mr&-U(tGx(L>ai{20*dUS{h40z;s$>MKHpE z2|`k$Hb1JwFDoeS4GX_~yB_X8Kdmd59b7BhM(d%8c3;YnL*$rS$b+V;Lqr(qOcfu1fQakZn;3QL43lXANBE|8LWu$X zSKO$IAa4e2U=1{Gz#$l#00Y?X+5mw_VMje{(kaG-in*$q{S1ixzD$aWR560;wV0sW z5-|xXR*H?utE#s5AWRkoNw1@uYDBdf5D-wZLlfHdBsWB2PyKFkVYh+-B8h-T0t=fK z2m-=}oYA0`d$`(%^=ix}>R_FG$jBiWl>toIcyKs_y!bu8Q4WOw`nv(q$N3e zLbQ}PTkT)gdrYosNy6zl+ZSF>)lbJ@@2?7`f4SR|AWlIL9NG@LSM^7`0)8kQ#*vUT zXV8EtaX17BKy%OrSnmYs1ZPPqHL93Z&SFxo>Z`-4zK^u>X^tG~4Yi%sELG)HSSeCD zl0KxaNH8oI)|3^OQx%hGKE?8qQ^5*UlJ2Rj3bp|SW19ie`*#3_09J|++APgx24XT^@QV#`?agvH` zQ_vR>Lxqwe^qwV9w6qg=`G^P*@l$lqF>U1vVT~X8jk*PbCUm&yX1qgYXuI%a=DA-p489d@?`#2J2a3`J)GE#{k_=a8`X077 z+#~>jX+gun+$P*KHUwq{3KrI10DxZhcEs#nGBdL&SCv&&Vr7tsqzpr!+iYceVLD;f z;LbhO>+9a*$Y$LFNCNuwYM)2fY%8dCSRbr(C6XSJ!GYp2q! zWi?H;wSX|T7|F;8G?pC^d6p6<3YTun$S8~jjWBJfmJtffGHyTyJPi$kqWyx_njMxkt(4q_2nSgr_!MBz3F2OuC_%T}~a+SOuoc3&Y=(}Mjb zRZrrNl@iCf5Fy#|If*X|PWCa&0Pj}?b1gYnT<$#HCAM4C>5@f$zJjU0>bo6rBvF^@=ST?Ze_m#1V`CV@IO&)EQn)z6*3bZlLcOrU%~j; zc8vm;y+kupt2c;oHRod}^P!7}$U=|=3`baU)8|Oy-7vM5ZK8l#;PDQ}k2IJGX2uJ! zA_dYoq|1Z^X&DrBI66`eHuuo}Ok`UCBuTs#CXyrGEGYL_Ta^GCQi0l>AU&IIWmZMk zmD1aoShA67-h0(aBk?5KghLntEJ+*%O_sQj%A?PijFiA)EI@U1M&Ozx zPO%cPSg$+Qu6-HI>2rYKd01ZYND#ppZai zBXSiYRdv-?l}c(gtyG(3>UPgOT>=zI*-Zk9q--Rd$`3FhvLG-u!Em2knC%gY%L+}a zX`8d?lq{MvS6t0ibO50JT0Q^hWfhgGqMGzh$6pnqUR4GB!mb<8_P}l>;9cB%6#KA3 z%;YT4C4``&m#S1-y}jp57xuY*s*Yxqr_x)NN~Nh%snt3{e!W$_qD!7~{S7Ss0^CN@ zW(M&aVaZA0{b1%HB18c!!Nhylu_08yNpI4Inh8;0mluU`DKG?qx4Qqh-qUGoS#4!t z^~giv%klyG7TiROgh3OS3C?pJaU(nl7bH*;0_pt;0I)MN>CV7nmKAeDRsG_QgA6jG zOp^*e$4e7z{N!jeDvOMRUe)I09m}gxWi_{3u!l&{OErT$=pJi3tea-`SF0(VX3i6= zC_;*YAdxT<*Z`r4z_>yj5{6*~?bwBl$T$qKVHMyRBO%7n00BrrG{Zs|8pmNsf)y!Q zf&?j7a&w%di>n#|04%N+i>5ycQmM4Yt`0gSptotsvqE037L_3aa@-HELJMIl=a_#3 z{x6je)XvD1wl$(H8)%~D+iAk>=tLF&f2gBPgy`R&BkmOGKJAF^zhyh;1)eUJb_qDN zB8MiBX~Vz2My}(k5#Vt5ZpWAppCc07_GiK59jE4@8-li2gj)VM90Vj#2>|9t-~b?j z%7Fs76Re$?nRMp?xnd<0K|0ErnM)`E-`J3pCP+Hbl&h_#houixkBuKeVYM3%t4EU6 zMhjaS7+lp!J=seU?Uv58!HUJnuS7Om&t&p5di>8hO!hBg~F24;2ski zT4q+e>_AI^lq4)F(10souuW(r6eL)KG3gbPJmEP#3V{Gz5Lqr6)9y=+D3=@?34!S7 z(;aO~_il)2wLn!>s*=@aebtVi@d8k?@7Q#=MXTtWOCLNg#-&Ns4lHz;YH=K{n~U*t zaxeqO1+%NgliCLrl57l;6kS5{$&R@69c_CuR&`gdX9Ke5P#m6ll(sI_9s^!D91cjJ z0091e8vqW78~}L#W*v2;kiliA#nLkiO{I_+vnm&>8g`=3Chn*yMo-q^bP>NAv@{PV z#-dsjNl(^C?DRcdxsoGk^SELb{pu|lnd_sZ-;Dkqb5ZF=VhAYKwh+inFai>12tpAm z0fa&V2(pNYjTdt0Dqx|hWpx~dAhm*6#233;)@80%l@e7NVvl8mkr2d6GVlnY6DKI< zl3ZbT8$tqdG`M9Fb8gvP=&!|f)}Zu5q+nL|?g~fKs8HenrOi%NvL=>r$=O?;hGCd9 zS6-&x%|G?7O|Km-{mq$0(mHGgRWCZRDqT7BHj-XX31G4dJ2Vnv#RXwBil44cwr_eREq0vRU)12P3^xj}BM zSO)AifDm4coGX+_6EfqH<;HTyqCn(|K`20gR$!?B5ruwc6PMs7i2TOsnbgc+%sI!3Lsj+Tc4If~we3k6{h_{g z(HttDG)_xTJO23oCPyP-mDN*@8IlSpq=KXd>tR??>*@n3!phyIp;GA%J1Pmu)l3Bl zG#02J5Jm%?PFQEK)j_6X8{8cM7^IoyS2!G1z-`;ChkJDpRUy6UWZKmiRAxz9En}EGweLAWVaFExyM9@ z@!2VY3oi7qt5}_=k+6hpP=o9>iiAQtwj^m@(PPT{WcyaBS6I32LOivxb#=to^4ujH zGh{0RhQIMcVyae2+}FR0J_)n{2N4!8fb~$A0R#{RRFLkcg0~HWXnQtF(lpDmT$QV; zvr}2vKkFu>t8=$a%~l=E)`S6n>`H<~thS+O_BgZip~tRVZ>KnF8g(T}chTsH+3%Z+ z@xoZt7!;A>QrZS&Kp2(Ez>5-dB@z3L=i2Y?H8w8%^0!$f%|=m0H&9 z3y9p=lxScXR;RU6xTGw4Iau|LX|Wao!!)KOJtApgDljOp5nR%}PRqA~U_C^REqviI zgnxS`2uhhYmX@yz<{06aM!gyeTTM(+uOek=zWg0K(E7{%^fO-yUwKxV%CD)#}BS2SSI`E2dCxt8J~< ztC?ZlG+0n1p+#dsI8xEzSS^9Eh~i9RVhZe(z@o6evN@w7N<$Tk(l)RNlNcoej{%gn z2{O&FlIb<>T7sZ|>6V?urCrz!8Z%5sVr+v%s!W@q6NCv9e0q3S01IX9RkZn2Tm4P$ zJoXLTDT$tZqz=;ky4S5A{kE!?M3tgqX&0^GRKQXbXDJMTkEp}{2 z=d>9m88@hj304Ooq=lCt3?;jpm?1+wA_GRIg3uZeUIvjMRyr+=Mht+)X#f&MMp~N{ zpfuG2q>p_WuQEgpe5ns1)|2hv_kTnR8o~Haz#1O4g;@tUdvmJJ6KAccKHk{2(~v=n|6B5V>450y$K@!sFnRJv%D50EVRkinA-Ts`j$2(r< z!Z_Lauvi=?mA%o8My}1WqSh^`ROi}a^mZ=SG|k*SX7BE&tzl847A&n>hXz++2tbKf z4A=%Y7>K0??2vAeGY(lK&ANt|R+L_$lqEupw|8Q%kg+WWenk!-fkRsot0R}udO2jgXzzzVSHl#MKP>`4 z;Luk0s$<0tZ!3b=En*rH8tqsf^fI-u9l;6p_{^Sf1Up9_{=Vj~Ck)K7MmLQ?9gX{O zS*uJhrDM*>n04%$JrAunmd>f}f|IWomiF7I!T}D@0CT}1NJ8cS1v9?@0D8Sm8z(b+ zW)i9@=c;!&R&e z?r0uthF;Tl$bb}O_eEi|TFzDAriTf@Ei6$vibcC!ZB1trm_daMG7A(%173_RC^KOZ zvkFNibKq2(A-fO^Q3r`IfHh%dNLaW)X+cswEsThlF$J`hR742`?lg?-fC>f;fP_Tp zUmE}bnaF}NpYzHgb$Se^ujZO^gaPDX+AqGUJWrp8!tOS=(_>325yNBAoa|dzsQ&Q7 zFX5@>Lv2&Nif9_KLP#y_pa)8j zz~pgZj3O5^nMA<*x(DZ!3D?CU4o9;h{ly}+pH|z4GvDs@cciMM&C7|Z-z#G3*^BX1 zRV1&an*XYtz5(>aZXr(k3%g*TAE3b(6}T2aBV&oWx3b8+T&~sWx1E=rOXWfoqVNPo zAG_^KO&hiPYvp@dRjXW{-SvCjtM<5j0t7`IMzH&&{)Bvhlxi3_6+o)7sj|XEtzLSb zt9JH#9}Hpp7QMPNu>gh0vTanGHsz!A9#ZPPZU1T|c}i{R)ztO?BthhY4ng4$=~g8v zL`N_ehKbjbE!CV&HKVsxu$Dt+-E}ojo1K9qWRB|}qWH5kAJSXefBvtj)Zulte|8Gw zKvj91$XH0qtWfX)n&CpgHzQ$-Gt{@R>PSszH~mq?OY3#5VTpP>+g0yXZC$TQ#j5u; zSEh8SRH}Y{yez4xix@ig+jzhM6A%LoK$~y4;9=7-P%)&$F91Nc^K4`|ozBe6&aA4c zs(+`e1qhLutz-Uul22GIVRm&NkFZwzmea zKNvh&Ayv@ekOB3LYUN`cyE&ROo68YIfGGzSP9^VymEuwufB-OPN)BLztxzjCtr@wa zSOX;sD^|j|gaug)f+&{Nr8SPMA(sRzT;4{jkYy48XbA^{HJvu37k9ugz_i*3Lk*S) zi~}pBw5zJtg;vQRBO@#wmZ%3|WQB_XYhhq9>lFO??d{Q)WYpx9DS759j1JW?)YUx?@v$lI?-4GFa?WN| za5w?p_X`OG9vNd*3WVtUSpa~#r9H49;(hn0ksARiHgjguG%bNyl`H0|xJCx<}J z=pNFmst*g3X=$uTF%L^sy%ni%c5Dv}RA@nv2h(OX{oSTrJ+;ivBz%{x8sj7j)DD>h zc}2;D@rqVS0U0Z_MH($oraTtZfCL886@W#D1|?oHA;58_2qExu)GED_Yc)~=$`Hy_ zndBy7$1H}f(%^*%67JE=(HDkgeXY_i-Q}tE?Ky%Tl&IY{(!EyOV|LTT7YC zn7vKAy0YokdK~q>UUk|+DRnIDFeH+M!`Q1!IP=1>sv9Z`fijsgS%tJWR@zkYH-r&6RP)_GRO7kaZ9gV= zbQt~dYwc~CUa>!dlzh%u#fuP$>zQA|#Ms1#Rk3ofVD7@*Bb?{24ZCMdY?CpUb{EV^ zNNk%01z78XIU(?&TLZx((9HS^0MPFnCU?)wD57%CSym-9R4q3EDTfp5hTGNCxq;Le zA2g)Cd!zBm-8{E?rwyFx|5($7e-IlkdQ@uFNidj7l9Yw&RwYZC77~(5cVEr6k<|gc z+F%!miW8XugUB!wEC8@gShbM3GCAvNG|d9jXhOiC&ZSoX$xacfw02aKOlmEJ6)O20 z*9ZxbgAo~M=IPA!ZkDFGZRk{WPY54_fY4H!|L&uZna6fzsa{OD5=1(cRFD!#g^r*V z2!3M_+>)uD7Vlk7IbNoE(|wX}p^+Cj6ozkk-4WPG2n>tq$a6j2Q?&EO{u!yU1bPjU zLGfO@A~Y-9to!{21_Z0CnQWQp=ta&B{6cRoioY;@z-4gGC|emqlnV;XW0^a-6m}1H z)oVzl)zGf%YOr8eAPI)gPQs8A2pSy+xV>utCD%q&-Aul8!jEEu9z z4O#*0447dg=a4Z`*o2~4D?6|Wb8)Xf4y%_@>yc>yMzc^NRB9w={272;T{2~|3 z1pt`Cclcymx?q6L%uzySCAh&@aj5#t){_*lEp{h|)XZ}qs7)!a)& zHowbd()*f27)~ZoS-FRk^CRgw^6#ZMUkDN@dt{T=%{< zv_iF)!w%KLt`nH{0q8?Z;F}%bNVii0wfah-;9c4}>DC;*UDXfwvpp`JRLtC|_uHx| zr2#4a>(AfLe0c8N%__;wjD^-w)v|`z2nkfEu*Isf2Hgb#!|#UwTB7Gff7BB zy#HAifu_w0bd77FOPg9RFR3!u{ryz(<`k24Y$2G(o!_Y`%)qi0Q0xuV4;Vmr04A{lUoe0l{yVXDAlBJC7{$w? zXuh7_8tG*I-+n>6tVoh8wVI}B-)Fw4N$b9``YNqjPB{bYL|h4WC*oqTAAkr`fu#h0 zpH0(I(o8ywrG94MWhSTG{)(T%6&Fjq-Z0S}F65e+0_4IL2XC7L8#Zb`z|cYhp9OIH z2Ud2JU2ZFKy}#IXX~wX~`dT~p{q(=&)GT9pm*z>^TVwt4xk*$#Kd)ZpN0)2VK-p@X z%3CNKiA~@K7_wS{F8~xD-0U?@3fFRE*2`nmdi7+tCo--)rAw_;m8&#WLO#5aNTuxv zb`X_=_xJb-stVLVDKRiV^gdw<%$DibD*kN-E+z*ZBm;s)Zv zqC{IURr*O#4csUqiN;X*?vpY%hbD;-OV z(^(qDffdSnxv55}PhL&W@-T5;_KaSAl2!`zLcjpu6LAqtJOFEkfSJLZ0yIy>`Oo_7OM*i&U!l7-L^#)fN65y0_^CQ66r6cJROOTWed@gjjh^2qltHY1kJ%wM5vBqg zx%)vw7DwaKdM=3b#6^j>n*tuGce#syXWw^$2;9b618~gbL>#8<2WT)Acsl@};X^Zq zclg;Wj8BG~_iE1NvK9L@Iag*`?XcKZ&#id9Zei)O+qs&_jwvOHxmNhI4=#s0B{kOAbr^c829IZ%pCm=CbzA`4h; z0eMYJUXCz-lo%^odYM-mE_sQ~TQmVJ=IaMl& z&Xxt-!d4OnFvx*Ydm=x;1auL&9uW9fo2Fo$&@AWGxXdg4)wciqkH0^qJ^k12a*-7P zFyS<^bk$MtI9JlWl;>2FG~Ae%#BlNy!#KZ$$-@`uo?i};P1(;={~5B zM_OZ%Z?AK5dfU~$@aJBtG&P9V}6G>DeZ02pm`b3NZrukVuvQ9Ef2)9p{P)T3LX|M zk-xcEjKVh^85R#Nq}{W-YyFQegXjOUNSR_hKf~;Rb6cWK%K3eYMtWHFBZEB z)+-OipH8?sbt>HFAktTlW2$Rs#Z>z0>ZOEpw9S$9Jr^sw9h%i^c2ldZG+_gshE28su>1H_1;@wntzM314Ixs%B9BqG zdT_>y)tI&8-5X&*oq!h9Lo^7w7=?(6u(n|kG+?US0~LE5mV{JE+A+Mo7^o!XJgL(Y zS6xY1iviohG(B{BR~DCTik-W!pFK-Couc*K4uf7f{xpXYXPWy}bGm!ds!g6rX#4&h zq3J(&eqIhWhs0zD$#CFw+U@l7tDXU6ASv6?&4@C?>-qubm`)%Hw)V?wQqX~06pSI! z6sfEUa|Q@1P$LbrEs= zy{#HYU$Zei{TA=YC%fMYp<=2({dM#h-UKT#!`<^{2us&_vA+vl^|( zKW=@Nl1f#isJDXv(v^r#<<+TJ(PO0OY`74bWUTtOk@9piNYPB_tz#>lEvC#$qK( zCsV2QJy#y*iTYx*uIIKKS(2ra%KIKQcW7R9QJ*+v^s@K;2J}R4TYw0Z3&+ZWf(Ia} z0;d4e+g9q7jO9qb4WD5-$Mr^M{lx1W3$J8KY+6s3t27hX1nfj#GicZom6@Tzo$-*7 zNrb7uF(xfyxSDT8#=}4p@@{F=+cz%*{LijVka~ z0+0Ud+Hazp*?&!^7pVJkA76GYhH=iX2czaZ@zF)=(|=rb7{oxSH!$G_LRO*t1EfNv zz&8WDvEozA*SA$U>$c}|dG7Z5SVYUGegE^m$IqRVG!NeNFwOgKRpo5;eo9iU>Zg0Z zYJULiKx`+Z2a2@}@&il&hk+$vcC*B!E+tYPwd<8f@2yU=cwhWFx8=G<(yL{ltdEXP z|5H`=FLVczR0F#BH?b!gQ%S92VQs-WDaU{A(|KGJGqp?TdnVB zp4YSObE)N`=BTs#%!a_#2P7$buU$ioi7yYm)26$O*{5|8Ep$mf^98m+HWAqF);>hP zkPacFacnIB!vc~@{GSK^;;Nec%ipm}B|oZ)UxliYx)k|UmAd$=f4@gpdG}+#@K@{C zx3slu=YNB9v4m2o2Q<0Km4JoHgLxVKa~Zx7Y7{VzBeIDUM@3vT}O1HS)hY z6{b%KLW@yVOjq@(9oZG_Rff`p4rs4LXr*GVIY(|xM#7{jT%!gA26crfz?rI;!DKm6 zY9!f3yL~&=cQ^|aE2|^>VEPR*BVzB)B$o=#y&jT1_AWAi?QA^ReI`=lq43V-exdI- zn=%Qk*;VYmR!PKJ@I8zz$hNR0=C))V6%nZCB=Rb?mY>4fa{_F1 zi(Tlm(2p+dO1>B8R+$Y*23spo=^si27Fa7_X{AcJVq3$fDZ6uh zz}EcpT3aDKFb9?US|U$pXHx(KZvz4V00000{lx+91ONa4fM(#BasMd)DgP?}FaIz! zH$zEDNHaf5L;prJGdMakI5$a0L;ptqHUBp^I5RafMn?ZT|0Dl8|2Y3G|2+RW|3Nl3 zK|=pS|1bY9|2{xQ|2O|L|1SSQ|33dO|2zLX|1|$H|1JM3|1$q4|3Wx7H#amlM@GK) zBQQyUwCe|D1@3+}!)QWcVP9(Cd*S2F3UX_J_J&Ns-DNp?(xqfWf{?4Ks` zPt#vWCv4NcjnDc;lf~0mH~qy_=~3NUTOKcEuB$2Y1Z{SkS)IjMud@J6+o?F)N%kmK zdu`+lV6>DM*_hVM&jXTN(R9yPH4Dglu@#RxjM^++qu$mVFt)SfYtNbjW;n~a_x){f9>>^EzqvvN@%p+v{^oq|for`j0EA^A(Qp7H zVTnb?6o*=OqeExbJ7Qg&e{_**>^=IUZ@y@(Htu7suWREN{|h^$vj; zt!;UFNPCc6ou;X6A%*4-ZjBvwqRkwwlbXK(^|!*R0X`^HnMRn~IB3BA`>9AE?39K@ z(VO5tGeKN3fRQCLlhkS`CsfrB``}znBvc+W|0W!t9_7la6E&3>@%V6FUWt?Y$ST(9 z_c(1jee0{( z+F6|2E;a6B&shg15j`RylUb`QX=)+wyoRUfoKq=~kKkFO0Uf$B>Z{`+dreiZYewA` zp0To=chH@3q^)JZ!0Rswo{~~RURX8!wYZe{BFk7< zMwSKOQs=Z^&sD|Om*S2wh~w&bHGL=Epk)~Zws|a}V0(GJWVn;BYxI*sTPvh@0Cyh7 z59Z)U_Gq=Y#ET4P8B_Cs0RHFWm_Se%hyZy%8!;e41AzC3#d8ES#C$kCqs&YmkQEz> zRdu@2-ZN-;M7u9xU1@dIyGnsX-=~DN(|WJD}2TPiD+DQC&+<+(9alRZ#yC z@#7KeC7euWcX#KqBIJq|*JfdQN5!an+hpH)7IDj#~xpO!_bM2(Ob!xf2M9%%ORgW)<7eY3G zFubKLScA_>8%bUFU#}~p@E(ap!g>0#`(?YXZLm5j3)zxvVIG^=wCTe|fA?BZC=4XGsL{ z)her_IEz9m$5msgTD3xkD!uv(W7jvH$HQJUBTeeon92hp=vg_*EQ#qk<&153jWNQOk^Pqd zxzvV;wUF@z&8(_wp-hi|OMddPgxl}c%N1D|Ng_fx@+&^5%OdR~d6axPR|NK+^*r*j zI8RT$vW+V~D|W>mdL0)d^*5;c9teD~dQ1E;8CGH@-f|K>c zCrb5N1$d|`dQF>i*S@%nbW@cz)5YM)dv*y;uSt?559*XqxnSLj)Wd26B+;JYd2l$X z?54A0&m}bm*-a{Go@oJ6Ql2E<5d~Dc$_ao?UbzmDjwJ)2BzJk8{@S`Hk#}aLlvuye zGYG!WseWzcGv)fEIg*OFkZ#@D|8chDJG6{#qk7l9`yXGuN2jcgOqgKVlW`|g>Jbh3 zXSCSU@*zgdO=7LIInuV7i*MaN_c;WO5Y4ikXeP&>39c^WLMb%tVkW|}LY(3OhzcsO z3J4zT7V|OS<_(Zph~+fyI<@m*%2LJD-W(v*mlqG@c+3FQNJud>$c2zv&hr6qqze3% zfbE-I)=l)TsBbxwvfs?lovbRjq_(P_tJ?biwKBX<3)0M;Ljn9kM1#125IbQ$K#T86 z;8Xx|e$CoPpDVmx)gl)6{a7E%Z$EYu{%UcaYetYt)4pFVPY5jQVZ4dvONi@so^d_( zCHz7v8dGF%AM^twxevgSau#@NNrLx&)4a&85Vy{-Z+JCZr5Wr%dMi1J3hId9HW$c%mH?{CLn z-CKTJkIRndr#YJc+)q`$)pV0zsjBC{J0Fv3^He?WTupP-3f?vTosTxuKxHI|8wg_r z`vFphl))?oct-B`c26wXzPgP5`u;SeT<*Z{qhG%6&krtD|9h&uv!1m2PG9GH{$G>S zB%N;ZxeW3Kv@k~Va&M#rSOeyez|#yjQULq{0OaA5j{Vu4&Yq=fuwkfVRn_Wa1}Tv{ z$Bjz^KNs7R|6%JB&b=h=EV+Io^`m)u2TnA8)>@%v9aB3>tI*<;VG0%IeyOLdKK1*1 zVKj2zz2czCF<1g#)W%6ELT`2h#QbkHcrIv*X-{VOlCM1=$`IF9PI&;1dN4Y+0 z-2~6I&g*svxc~Up4%h?5G*bZNMj;IidZ7@2);sfTDVqV8RbcAZ&(Ea$S+ADYX|!Hd zeqvu|mRe0{u+eCGO|I7|YJ&mXMyUWa&5cqBVCn-9VJfhc!2A9Y!^=j(3Bxj71nC+v zB=PC0T@VoM@dn=3WpKB$q|C%bya{K|nh4np=wR^yqJS0ntpvPl)x+LoCxh2T8QXIy ziK?=TdY9{X;*&*~sDF`fc6J_^c^zj}5qACSeGr-@OO|@yNzE(n2@oi|U^6?V- z{T>12LQI3^KE8{Ze1O4VpMh(D;g90uG=s&S^?LPQs{i@nq4%$cWz%0K^T+&&mJ;aB=M#38Ej38pz zh-RZCuzvvn+WkD7?Qp-#?xlBXW(}1a5~`|GJ$G`1vlxB!GX8X9@a^x<;dSCwbGzrg zWAO<`Nxv-|*<}C6`d172y**xG51-uc-W`>;*7>q+R>w)rPrF^tJk;Y}?0UZ69`c}) zxv2U)J5e@rg5{NoK9p;Di^G`PcIMg7W9F}ObG20_(^*$`lV{vB6|X+8m$f}!&#vZi zHs7K!%2?Gd3Rzd>yhS>+7J4(2`$>|iraNLMLyGyDb|mkv$5qv0P^?pQXGe)-X~EWp zkD{bRwL7!|i5r7t+xlGYhu7EU@+ZxW=)*sGUlto*uzht-m zB?J~m*p3z_)7;64;6>>NV184gXa31HZU*8pB9 zBqjr#vIPUD1ARooNuWCb?DyR(a~??2vP))`jCe4{At4S`RrP)$|>iT2h z{wh{~*d+L$3h}4Y53W?GKv;3SfAb!yy>+cF+HENtQP3jGR!^B+D>0es?q^uo=+Z(DxA4nge3pbk%qe)qMkd0+5S9jg_M@FaKM8Y^ zU@$C7pV-D??jFk*car{3S%_oa?8;~kCVw&5m+aQ3+bNJbFImW%~j3^!()qAMSa1bu7>QzQ6Q%|GsD+nxEav^=2J!_B!+N=&O=bAD5G6 zb^W^6tJ#(FFs+SIkOe8qYF3CkR(6I&W}V&xJ*fkZ`i%8t)7eZ+>wl_5ibQ&-dE6KF z5ci+P7!}<$+wn|ub*dlM%RN9b9`>y9MBR^K^81eGH8@y6XMxKaZ7P!C%t0=vt)YZa8(Wg@p;3t_qdn5ktQL>_&(Y%5x(m z3`=|fA}$54k+5&t@Lml{a@G6ly&WgBA#-hiLiZ&4$o2fJsc*yd?wO1RGD-mCL@teS zgH@)<|`^*{nW*B7(&KT${wa9=5GfmC8`Xf9U9z1 zWd_ijsAvXw08*d=s|c7k$dz8JhWUwzhi;;Gp>luWHtqY80_@BGu}7DK-H4W=S~>vi zLjDajw-BZfnD7B`s=&1X%HI2ISSrOW7mJ!7^mTntJ5-2E!{NiTbF5W6Bt?ce69DW$ zum?mkFHwa75P{zdFu7P@NkX6hKJE}U6mC`WxU{p{Q{Fz67stGhhqvChMP9#D8+j&I zefgQOTbS#~-8SD| zt)FdmviS0|;?vWiW$iJ{%R`z}%HM7Jy?@mrz9gTOS_66qgpI&6;YRlx0B=CWK}6=R z`2gS-0HCwIJ3Ej&Gcz+)LJbL3^^H#Cju1Tr@%rG}LWtj=f6Pq{xqrT*yA#|xWA+1e z+u!?t$*L>&SX{R}dM9CDYRAs;$n;QFx1?2#Zwz7c|0D!5$=YodJ0f?PimEs5WDxBC4KmH)3i3?|J2U) zI(fMLTWe$30*t@OpvU$2bN94=EOg5WN^$M7sp&45E3ChaE+ix-M_0erB=un#$rci< zy~9qCi6O5|duO`#Vlrj%UAz0iaQnrb?MCF3^Fz+V&_A;nB4#5!Mc&t=hCmunTp$Vl ziY#G}GHff@a^Ew8R*)ULkDZyBQDkzis;WAy7i2uMxi;C|+v<6B_0e2-=czTxChG#P+1>Za!Id81hK;KH zvTTveM6Ave7f)4`u;ceg^T1(&7fqmV0R^5v&*~kj;0`W z_j`>&ybhhCgCDxdKKN5@8i?~Ed9o`#+r6z?_ho~GRuD)?7GS}mxFS5xT}WQQ+4)5` zUrwH`{*``mAm@UN*%Dc?cE29J_0Qw;9x!Fr5MQR7-U-9#^sk4UzUYgoEpoJRv_^{* z*xPw&kvC;saCD)M;4sOk10n!E_(NTSHpgNHND>(2ngQ(%s|oO)4jCyEs}W15vu8$x zyo8~Is%lc^AL@$Qk8ja>lM{@4IdZD zQSh#~yM-PDk0pVHm0T32J86;035-iUrbVmB28FV1#d?Y22yj& zuP*H;7w5U<0Dq>I>fyR~dHwCW)ZTmM?Ao+b|MBjXHC?UKbt;R$|2un*a^}PC_s^GG z_5yFs7df2)PmaON;;0U|pws?TpT^GnD&@=!bVH5m*Ad=@=dH%tZfjGQN6^Dq%_%Qs z@8*#1VFh#QkZ`>e>0>=5Zp2{ zpRPM%ifK|i#vHW^tux>rT@}^sS@8SHI!wP!T1K%j0ANSWw{#(wT3njb=mW}1fR%+$0PfTRyO*9BMane^RaHmd zT}a-1RkQghp^$yJllmmwJ(=zbgReKb*ma-u+yArv>XGDmg=suLShiS-_CFr(9%~^Z z{bq}c*?XC1^b@;)=AJ%1UJGX@=_3~xMCJQFpGQ@BoTL4;n(^+k=UI$7&(7>P9pzQ8 zZsIw*WxCQQY76wXV>$ck%CE|qDCUW?Mwu;_!`g~CU9%^%;LwCgN^p`=B0B!T*3uG` zYj$_tUqP0+rnvoycQ$csen#oa>6qEvk=5}M(bV*6y58_T_DnBtxa9z0frVvZ#gYMZ zud?H9kP!HTWoHVbbEP-s8>@NoF%r9R7`poR-W}N2#(bf!cVSLMd03O`=R=q!tDd{4 zcW+Ql1r1f62ZRm7&;mp(Pzcl`hS3!Oc;8wLdx_jdj=7Vuj7ny(63SIoJx<$gWM-N)3P5eVh9{p2z(>-X2Hg)J5m!Mn2PcVK1{wGdO>fzcrfDbe$?_ zhR0yp<}padUQB>6BCF?-JPZu_1Gik&q`$oSRkKG1uisXIz+ikCc~$c+y}zBR_dm0a z?oC)^>MgBJ$K}H+uk^fCr*&tokE3PH!@E8g4y)9x8hPzi_I{SDMvR}fT=DF%X@6G* zCyE=$IG_O&iyrBLO~&c^(MUW3MXTy7c+mP`(|@7uJP@6R8r&+Trer}{Ya(&cEcw}*?g z70J@u%+s{0yCn0(6O{t*rBW+6akjH2r`ng2uCBFRnyME$&uJ8u6KQ={-S*>9@i;zT zzHIZvt*b6A&}?%*)*0vV?ToLo3vKghal9S1pW2U8bwuBjaFL0-XyT{HnO^(xG=c*f z7c-rEDbJrT(hW+SEciJ*TBuTwU)% zYOs;>`gD5LmL^4ZUA<7L{zhT?`{;})eVtm^c3a!Ad!Oo3jpvpsuQQ({Ulv7qYQDVDxs=A z>(LF;I46#!V~58N)i{1ISFfIIH_yN885iUM(YyNeHOo&AobM`=U|(piU(7ifnAP

#>NY1HLW<#Gyme!>1U;_4wtHiDqr`i&rPOt5}N(cWd4YFsQK~!Zc?dI;q3i*KhbDJ=y=P)ji2SsXmjOSq$QfW*$);XJ+M`U3Xsg)l98h zsF~E=D5)Pq<{Z)>$%G)=7J&7$^=ME=JL?sh!J$V&Wg4*4(9su;rNt|pgl-kj=2LPf{0eH3~DEj<*DKA&8(`nm_iDpMN z%8Te@YukFRcF~I;FC>R{SN#zq^hRP#idCqJ72pF91uF2_ShUFb?M(WmPRo6N{rgtu zCX!%0&H20;kCEYf4%Z#a?>cjqYy|v3j6=IMka%H1x9(5v%rPthWr1Jbf8yKUuYY>@ z(Ts5K=+^lC^0K;DZOy7G99sMrI#u_(l(*i;_*bdc{yz@XLSVt^feaR$pMZV{G6Vk( zz@i6}AJoKyEZ+bBqWSwA=TPg9*E_}Nhp=g;ZH%n2I^Gi|tkz$QXm864k=4)J0-6Uz zBgU^H5J`YIAWWvzq&(`RZzDGs(VuY0Fd>g>DlcZ<;b!o%Oz7 zlB#umByFx+Zb=#0vJGDBnz7}whk7SV98T3T%X9ikD8|is zuixvx#7k?@67BbY6>5iRT+{I(li}wjnj;eHS0$gpbgIAlMV|F`ALQ}3#98Gtm|-NF z`=p-`tw$Ul2xOJQ=+5XokTV2-MAoUG1k_;i0`7adHSdSL(FsmwW-^KrhN>!8m$Pj$ zv84ad-E5NUGd+#ur?)>_?W@az`N#jmkhRwpM_HFLfL&|R!I3db_dPjPQYHf!VpN50 zFG)=k55yByI4ydJ1^{~)M!fr}X!JhR>%(jN z#Jak=iqMUhcmF!1d!|3j%3qEQr%djFmg@J11Buqs4%g8_?M(GxB-4zj-@vVW03HYw z5kjUxx&YV%LeCHzim`%fc;Efh$gu}V>txBK=}4?vR3+4NzM1229ot2v&e74GJmo*w zR6B4vjPBJ@$npDn2*JSo?7gfy+#d2#V zTl7q8*8H^UocWZ?sWFd}(__D$$Y-d1bq<>Df%R#czc|y?RL2i0=#$eXpOBaKFLff7 zI3^}xayC71tI$)Fx;h(Z3Rs2}Pr^(=|E~uYljdL;5nGUJ_VIfIA_W zAbOp^17QCG0DP^^o!YzlerNWK=p>j4Rl-nJpPi8;ArI*~@yY%oV`pC;PkyF<)~?=B z{vs_8_`CVGPCNDYPapRCWWPJ8UF`R%Rv{+l)Y@Es@ojNA`)QhWXroHmL3^yAP}0jG z>0@dwGcy^hYEPy**D*P$Q8i~B`}y`X-^@AIi&02!MNHGS*`TGohegdjJJeFOWBN;7 zxCY_u+A;QKuV22}9lCA#X?EW{pwIZ7_uD0jVx4ZuoFoU)o<=s(BdLEf4-o=iSQyKh zC0e&Ecm;rv?#fz0mId(2@b;?W?d8=kZzbd5B{sw1-ZeJZ02sq!KP*=y z87nRtTR%%O*i4_R&7t^tlaJ^4;O{aVc~Gh6eo_yob5IM4p-%DR$KsIB>_o69+5_1K z;GcYeC6EO^AHc)8R$Y-HDR@Tnu}}YD`L$X`g55vYF1&RdZBmz^&n|I?kBA{ zSWSNf+(5AgHZ%jJRIp_}Kpz|;2EGO8-ubVqZ{6ts*^BjkzHt7r#cW-vbmv!Mmd@8b z`-mhMX)Qh#rF-zQn(|x4_8!;YN)h@Nv^|M#Y^TtkfH|O50AjGsw3tuQbL9^J;NoFq zAMMuoHLv3#wVBzYj7(Jttg1fWM`Q~kLR`IzG^fYi{u|`)yS1eOQ~mq@|LuiGdedgs zv%6mU_OV%BfBm}m!)R|U96i_()LOE7YFOV28&=amGRr!6sP+Z`Lb(jRMr(u@w|k;V z;2BX9p@TwTO;4#Xm2nm~U13Ib_4L|WKUROeIQ>0O8}+J!2HF=x)(T8}K7F(v;lQPP2!8o(2g39#|9-L(uR+0&nn#oq#AOKR_%6KCk+UHRv&)k5~yc zy-NZzOV5l9HB?nqogDsbUcTMiRi}+%Rije9TW5nia((Rc^ZDCn=lW!Ku7v(%_pB}! zXMcNp@#wU}y3oT!9V1VBD5&We)yUVAv!KEXXDW|%nx->qQiI=FU#QFm?!-98e6Z~? zf3o+UmvOm&jCpe#+vz-~PKvvSQG8;E$gBq{0+LDuC~ICMq78>a|VoMgCjuo=x}_P zE5==pnMaYHyF3p~*2qPi`MEA$TP)_Wn$KSkFtGS`vUc5&&AecAbge^Sv~v6lM|X}O zb)tCvyw}VW@^tsh+5p}+gigQ(!D#?{5GV?TD=kKnK!W%5QySeMatU_{$fSFxX$>)# zkWf`edmXjB{d)-^)NdW#SCMC&J1;rJ=CW*F46LjF;s5Cu;r_?#sxKREbZF~=+|`T} z(~~@%cb|$|BsEj()EmzpU?%%n)K#ezct%3ZVPI?A6O|JlBwt1`$zbPg4^@wk63 z#;)8Sz*tn5s)~8PS048qqj#9eU9>g@)1!&$f4jLxKZovV=Mr+mi^G7$*2T~=V1!Nv zDvRk8+>tiN{vgV1ASS=YshQ_lU<=^hEUUh;dU$ITiYR{n-Or;2V@F@CWH0%R-g zF1XJ7^-qnOf-yqCi-h>98jI26AIgH;$3i{7sQ

4x!LtSl9C2UtLYFeH`(WPWIVDG4S57Yz&6Zay)e^!NL0wHG!sJ)Z$u)6-d5d#}6RRP?iYllyT$ZrgmWq0eYTJ;~HF`^@J# z80e&HmY|%+^BlX$tLw?CM9VJb(+!@}yZV^LlU05gbV})|sY++%CTpVKtC+d2%=RJO z0SF-^qxFzpJ(r_BYwcLI1|eHuEpqDf^QBUiBxG{pDqV{HD|fLjF0sgImR27 zc{I(9x#Gkphp`ql z1mr(xk~OehbQ>)G7ZeVFksU7z;BN?v1lx-A0@dvI?`j*nYY@lA?!9DYW=*mUYt<_}`t;=0sr}a+yq^@^JM7|Huk03E;gO^CqpkhwshjWhwx70IEZTOA zth4u`_B^ZibAP-XrYRUW+dOsdXZ9DJ=f?H`r=D0{U9(pT9rd37dXav5dXMwv?k)G5 zjN=uu^OfBv3ucPTVmdwSc)sQ-G?{{?t}n6gD9p-O37JhbAJ3e-?#x)O?%ulMoZ7tC zm2ZvhzP2i&`|Fdok&$dk5?HknSKKb3Pc66n)Nu{i5G%H?Mv24OV zadNe6&0{X?GmY(0mut|%P(^3VazaiWvU)zed1TJ|^e~6NE@#~TnkSR{cE%|^XC|LR zcUE>+Id8rv-~88wF4~HF zOTK|LSLR3$$yX!a6g_UNvhqCry(jqDO_CAS`V#RfGbC17W9_QTeJr~Ail0``3?{0G8D*ZxREn_f%e*){R6EV+IO<(s1qBcV?X@FJ2 z3Fk_cv;g3| z@i3dV+pew>_#eDF>~8FJ|5tin|M1*E=hkV{r)6$04S95M4?|+3IX&4-uwHpvE*_rW z)_c#oolscYLy7$R5&v@+n?Hr1-?;p#5KgN8^ z?alV~@$g!Rs+`wuF+lCfYLqY+Pxr;lSJuEJO7kfE^0Tkcsic%i_U>Bwf*-xq?yKJE znuMIBfR5E--ALE~W99pKN1S){_(-p-+}^|y&n>@|3Ek6$g~9X-!G&aF+xC8YTQrY; zuy%-5`x96#pOxag@YK28MVV?uXBN`X}tFpFoeX9 zK{a>T$D?v`p8?)yq{YA$3jl5%5J(Ew=>Wj{Yj<{Q=^c61Tx>5OdlouMC2&Y^RaNul z`#h;^w=vJF`$u`4bGoS`oobjFwRH63t&08Qj#{gY@^!eq%3}0)?(!lUs=8hX>+x1))}MiK7HBe=0(sx`^yF84 zxy{V8{xtV=e;lLyx9ud9lbJ5i3+^8GDYBbtPLh0~+PhJA(4-2z`OAN1H{wnZSQ4B} zx)E0+{qnNLKV$vhHTRV*0U%!j&WG6R28r4OWcY!M5Xa%btN5P!r6fz1Vla?7d#q(y zSf19-$C!?tPyMLt4fjBcRaeB!^^Toin=xt2>pXVjMT#4dchAoU^7S#|FjJz=t80za ziv^LOXfS3=m;mscYM>~%U}qyUOQZzG5~`|N7khq|_Lz(>qWH$u z&-{PQVAa3RCDiz|%9&I>*Y3hIIY$6+Naa1RhCZRvqg|qK zIRpAJ>|r{GTDQ1s)@#&geO(oyjz$_Z1=q?3K9R zN%Aw^uOE(oezcw(i-7IFZ6R6C=i($v{*f(^FWbAv)|jGdvY=N{wSxEpK#~D#{GqZV z#+;U|G?{bm7hFEQ{ux<#x8+uQm4v*WtvoG97j|JdkoHwvv}^eW*H1I9(9e;!@c|wP zlo4aBm#NnP3V~^280ZE7yzl(g2IDc7%YAxgW=0Z3h*ee9YwdV!H0PZ=g{nu&t*5D1 z+umb$-cP+&G=BQK9<%G;Kd!oBUmV_|J~}<0x3+YcA_(2L=%b##o~N4nkLMzlxD1 zENmRSkxJ(vWQ9K?3t0}V3nYjIo>-<`tV5?$RZkVh+&u3|n%&U@%3bK-=6?TKA zom`~1)53*W++HilF0i);ly-D_8>2gH$DJ&|Xfzrf#wVow<^UcTG@W9$t)qYk1myCT(AYIh#nH@C~>%cp0V5BERSt^O^2Dz~RgK|$b4FeL9Heov5#3N+7aoc{Y?xa*!GW5YJ(GogS?V~S=J~0g;Hw)dO^e36$jbNi zygT8mb9U0yjGulRy5n#0=`3Q({l=GxXC@_KBiPLt(PdA$eWcyx| z@d;!v5*UfGzx3)t%}Vd+$Y_@RAN`QXT(kPJy>-?TFpj9K>oWM(AY=2bn?;nozR5y6 z=OcwFL1P=7L~-oVm|2f*APW7>xxE1m{`b>GLJl+%z~GOq5-t@0;PchLU5$Q;X4zt? z9NJNRGBZ0JsXSCARCUg){jt1%%geXUBz`E}Y~e7`hkgI>u{kYDyZ5l9FJIEb^l@K* zWLzVCkuQ4N9|&8|_e*%1du>>2hKQmdyR)N4J?@A>#9{YWJqUfeNtoI+P|Un{`Tvoc zE?m{;%>4KMs87YUC!^jcuIXudJgu3$pUY+K^JR|Lx{2ydsg8Qa1(DB=8R&nFX_#(( zIL(I4xlckltIe?oJ|+M9EuQ82U&jgU1IONPOO6@5m~~*rufil zIfwLWOfG*7$3md{TzJ*nGt8G{Wnp~P;DGr(xax-ye-L03`+b-UGZR<4-&NQBimgE# zN|l`7e%Na)C3mae*JUCm13pO9g#i)+DIgFN7}OmA006vC#@;RDu!K07V`MT^2~|~v zQqvhqj~~OUJk#5i(RJ$R&%uIL9|@4elh!4;9;K?fR^{lEb)<*SXI)W7c@M&wtE%IQ6Cf zIQox^2Nh<%o;eB^^wX%S3ZlGd*ecoyf4ev^bS%7?^{+>#??$#9-FN)@wN->L7|b8i|Bl31 zv4i~Fhnja2&UdfRwjBZOCF5mh3cD;=ZoV+wgL*) zRz!tTTc82~;LXStO`(7W@CyKNW~b`AQ*%4nGaC_AIT41cs#^BML5d8=9yKP}?xQle z-u1(0ODmgx92nmcdw4>B)4!Bw1U~lMNxQj!@!9e6t*~o+kkfE!db^T3pX+(YR+&WY zpYh^4^=CS#PdZ~aSz^DPROa4SnLG7BJvYO<`*#mX9o+Ry7Q4{1+xttm<~-cabiX1M z*QnS>^~}y@-22Y8%Q$16QSTS$JXD^eo9vBz&ojdVvS5rJ?;({zfoE8Wy=DABg>YBEQgAJc5Gd?EhJ&# z`>en2$n-q9>&+FzOJc{KZQvM)6f7D6vlaGZ7iqH#TSlF!1{PrFLMZpu$3y!IdGgrm zsmtQ!?C!(>)KETz3Tr94K)wJ?DL`O7Sg>mQwKJcFV&U7EnThHC=HJDW_Djy^S?91% zo#yxVN3?tD%HTTvp60^%x*c9~AIwyy0AXsVm;@O90V0eQfEP%xF5R)}o_*89zi#o` zs8iFdUWeTm=c~rjzZ(5|V!(^InAzER+)B8JiJ4prQ1k(oAuNG!0a)j-zowHVm;1l| zntT2I>D+t@Ywf!o_u=nxwNI7&s?>i;s=CnOCmY$9B$cE^epS-zQ?3EbNHzw~AXg#) zM{zHl%@}=Xx}p&H%s(bIdHa4_EZaRk|9G8m@4a8n8u@(qeY~&(OO?sz<|EQJ3)i8~ f94%YFPQA)o1ONa40{{R30ssI20RR91Qd3exsC}oV diff --git a/godot_ship/.import/SunkSFX.ogg-52b6d419298328defecfc61b6c15659d.md5 b/godot_ship/.import/SunkSFX.ogg-52b6d419298328defecfc61b6c15659d.md5 deleted file mode 100644 index 6f77432..0000000 --- a/godot_ship/.import/SunkSFX.ogg-52b6d419298328defecfc61b6c15659d.md5 +++ /dev/null @@ -1,3 +0,0 @@ -source_md5="d71fa2832e0ad78e94bbd353bc53c2bf" -dest_md5="87d33fdc866cbaaee42f97113a36ceac" - diff --git a/godot_ship/.import/SunkSFX.ogg-52b6d419298328defecfc61b6c15659d.oggstr b/godot_ship/.import/SunkSFX.ogg-52b6d419298328defecfc61b6c15659d.oggstr deleted file mode 100644 index f3bc4717d00476505db16e268565f1ae73d3ae44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29439 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 Dy?`ru diff --git a/godot_ship/assets/audio/HitSFX.ogg.import b/godot_ship/assets/audio/HitSFX.ogg.import deleted file mode 100644 index f39b0c1..0000000 --- a/godot_ship/assets/audio/HitSFX.ogg.import +++ /dev/null @@ -1,15 +0,0 @@ -[remap] - -importer="ogg_vorbis" -type="AudioStreamOGGVorbis" -path="res://.import/HitSFX.ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.oggstr" - -[deps] - -source_file="res://assets/audio/HitSFX.ogg" -dest_files=[ "res://.import/HitSFX.ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.oggstr" ] - -[params] - -loop=true -loop_offset=0 diff --git a/godot_ship/assets/audio/MissSFX.ogg.import b/godot_ship/assets/audio/MissSFX.ogg.import deleted file mode 100644 index 5689c33..0000000 --- a/godot_ship/assets/audio/MissSFX.ogg.import +++ /dev/null @@ -1,15 +0,0 @@ -[remap] - -importer="ogg_vorbis" -type="AudioStreamOGGVorbis" -path="res://.import/MissSFX.ogg-d7b93821aa1c2b607fa4dc4bb3561322.oggstr" - -[deps] - -source_file="res://assets/audio/MissSFX.ogg" -dest_files=[ "res://.import/MissSFX.ogg-d7b93821aa1c2b607fa4dc4bb3561322.oggstr" ] - -[params] - -loop=true -loop_offset=0 diff --git a/godot_ship/assets/audio/SunkSFX.ogg.import b/godot_ship/assets/audio/SunkSFX.ogg.import deleted file mode 100644 index df8f7c6..0000000 --- a/godot_ship/assets/audio/SunkSFX.ogg.import +++ /dev/null @@ -1,15 +0,0 @@ -[remap] - -importer="ogg_vorbis" -type="AudioStreamOGGVorbis" -path="res://.import/SunkSFX.ogg-52b6d419298328defecfc61b6c15659d.oggstr" - -[deps] - -source_file="res://assets/audio/SunkSFX.ogg" -dest_files=[ "res://.import/SunkSFX.ogg-52b6d419298328defecfc61b6c15659d.oggstr" ] - -[params] - -loop=true -loop_offset=0 diff --git a/godot_ship/scenes/Main.tscn b/godot_ship/scenes/Main.tscn index 056eeb3..2376afa 100644 --- a/godot_ship/scenes/Main.tscn +++ b/godot_ship/scenes/Main.tscn @@ -1,6 +1,5 @@ -[gd_scene load_steps=3 format=2] +[gd_scene load_steps=2 format=2] -[ext_resource path="res://assets/backgrounds/Background_Dark.png" type="Texture" id=1] [ext_resource path="res://script/Main.gd" type="Script" id=5] [node name="Main" type="Control"] @@ -11,12 +10,3 @@ script = ExtResource( 5 ) __meta__ = { "_edit_use_anchors_": false } - -[node name="Background" type="TextureRect" parent="."] -margin_right = 40.0 -margin_bottom = 40.0 -texture = ExtResource( 1 ) -__meta__ = { -"_edit_lock_": true, -"_edit_use_anchors_": false -} From 641b891326f0c044a2e88f547639cddf3677c074 Mon Sep 17 00:00:00 2001 From: tommy-l-ngo Date: Sat, 13 Nov 2021 23:13:10 -0600 Subject: [PATCH 038/107] Stuff --- ...SFX.ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.md5 | 3 +++ ....ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.oggstr | Bin 0 -> 8911 bytes ...SFX.ogg-d7b93821aa1c2b607fa4dc4bb3561322.md5 | 3 +++ ....ogg-d7b93821aa1c2b607fa4dc4bb3561322.oggstr | Bin 0 -> 43971 bytes ...SFX.ogg-52b6d419298328defecfc61b6c15659d.md5 | 3 +++ ....ogg-52b6d419298328defecfc61b6c15659d.oggstr | Bin 0 -> 29439 bytes godot_ship/assets/audio/HitSFX.ogg.import | 15 +++++++++++++++ godot_ship/assets/audio/MissSFX.ogg.import | 15 +++++++++++++++ godot_ship/assets/audio/SunkSFX.ogg.import | 15 +++++++++++++++ 9 files changed, 54 insertions(+) create mode 100644 godot_ship/.import/HitSFX.ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.md5 create mode 100644 godot_ship/.import/HitSFX.ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.oggstr create mode 100644 godot_ship/.import/MissSFX.ogg-d7b93821aa1c2b607fa4dc4bb3561322.md5 create mode 100644 godot_ship/.import/MissSFX.ogg-d7b93821aa1c2b607fa4dc4bb3561322.oggstr create mode 100644 godot_ship/.import/SunkSFX.ogg-52b6d419298328defecfc61b6c15659d.md5 create mode 100644 godot_ship/.import/SunkSFX.ogg-52b6d419298328defecfc61b6c15659d.oggstr create mode 100644 godot_ship/assets/audio/HitSFX.ogg.import create mode 100644 godot_ship/assets/audio/MissSFX.ogg.import create mode 100644 godot_ship/assets/audio/SunkSFX.ogg.import diff --git a/godot_ship/.import/HitSFX.ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.md5 b/godot_ship/.import/HitSFX.ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.md5 new file mode 100644 index 0000000..dd2febb --- /dev/null +++ b/godot_ship/.import/HitSFX.ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.md5 @@ -0,0 +1,3 @@ +source_md5="aa361943427692c39cd21430895a1f89" +dest_md5="a384b01bb3a48f53f019cb11e44e2019" + diff --git a/godot_ship/.import/HitSFX.ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.oggstr b/godot_ship/.import/HitSFX.ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.oggstr new file mode 100644 index 0000000000000000000000000000000000000000..0d5b2793ff2d555d48127164f53c4a472842c9d5 GIT binary patch literal 8911 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 literal 0 HcmV?d00001 diff --git a/godot_ship/.import/MissSFX.ogg-d7b93821aa1c2b607fa4dc4bb3561322.md5 b/godot_ship/.import/MissSFX.ogg-d7b93821aa1c2b607fa4dc4bb3561322.md5 new file mode 100644 index 0000000..93ca95d --- /dev/null +++ b/godot_ship/.import/MissSFX.ogg-d7b93821aa1c2b607fa4dc4bb3561322.md5 @@ -0,0 +1,3 @@ +source_md5="4121e74ab010d628490c26ed5391a8f1" +dest_md5="e6145a1ff71559de29a79fa4b0b0fee2" + diff --git a/godot_ship/.import/MissSFX.ogg-d7b93821aa1c2b607fa4dc4bb3561322.oggstr b/godot_ship/.import/MissSFX.ogg-d7b93821aa1c2b607fa4dc4bb3561322.oggstr new file mode 100644 index 0000000000000000000000000000000000000000..e3ddb9aab69cca80856bc07e6424314458518377 GIT binary patch literal 43971 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 literal 0 HcmV?d00001 diff --git a/godot_ship/.import/SunkSFX.ogg-52b6d419298328defecfc61b6c15659d.md5 b/godot_ship/.import/SunkSFX.ogg-52b6d419298328defecfc61b6c15659d.md5 new file mode 100644 index 0000000..6f77432 --- /dev/null +++ b/godot_ship/.import/SunkSFX.ogg-52b6d419298328defecfc61b6c15659d.md5 @@ -0,0 +1,3 @@ +source_md5="d71fa2832e0ad78e94bbd353bc53c2bf" +dest_md5="87d33fdc866cbaaee42f97113a36ceac" + diff --git a/godot_ship/.import/SunkSFX.ogg-52b6d419298328defecfc61b6c15659d.oggstr b/godot_ship/.import/SunkSFX.ogg-52b6d419298328defecfc61b6c15659d.oggstr new file mode 100644 index 0000000000000000000000000000000000000000..f3bc4717d00476505db16e268565f1ae73d3ae44 GIT binary patch literal 29439 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 Dy?`ru literal 0 HcmV?d00001 diff --git a/godot_ship/assets/audio/HitSFX.ogg.import b/godot_ship/assets/audio/HitSFX.ogg.import new file mode 100644 index 0000000..f39b0c1 --- /dev/null +++ b/godot_ship/assets/audio/HitSFX.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/HitSFX.ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.oggstr" + +[deps] + +source_file="res://assets/audio/HitSFX.ogg" +dest_files=[ "res://.import/HitSFX.ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.oggstr" ] + +[params] + +loop=true +loop_offset=0 diff --git a/godot_ship/assets/audio/MissSFX.ogg.import b/godot_ship/assets/audio/MissSFX.ogg.import new file mode 100644 index 0000000..5689c33 --- /dev/null +++ b/godot_ship/assets/audio/MissSFX.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/MissSFX.ogg-d7b93821aa1c2b607fa4dc4bb3561322.oggstr" + +[deps] + +source_file="res://assets/audio/MissSFX.ogg" +dest_files=[ "res://.import/MissSFX.ogg-d7b93821aa1c2b607fa4dc4bb3561322.oggstr" ] + +[params] + +loop=true +loop_offset=0 diff --git a/godot_ship/assets/audio/SunkSFX.ogg.import b/godot_ship/assets/audio/SunkSFX.ogg.import new file mode 100644 index 0000000..df8f7c6 --- /dev/null +++ b/godot_ship/assets/audio/SunkSFX.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/SunkSFX.ogg-52b6d419298328defecfc61b6c15659d.oggstr" + +[deps] + +source_file="res://assets/audio/SunkSFX.ogg" +dest_files=[ "res://.import/SunkSFX.ogg-52b6d419298328defecfc61b6c15659d.oggstr" ] + +[params] + +loop=true +loop_offset=0 From ed76dda0c01921873914704e6d5ccd63a8b94476 Mon Sep 17 00:00:00 2001 From: John Breaux Date: Sat, 13 Nov 2021 23:14:22 -0600 Subject: [PATCH 039/107] Make git happy by pushing gdengine imports --- ...SFX.ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.md5 | 3 +++ ....ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.oggstr | Bin 0 -> 8911 bytes ...SFX.ogg-d7b93821aa1c2b607fa4dc4bb3561322.md5 | 3 +++ ....ogg-d7b93821aa1c2b607fa4dc4bb3561322.oggstr | Bin 0 -> 43971 bytes ...SFX.ogg-52b6d419298328defecfc61b6c15659d.md5 | 3 +++ ....ogg-52b6d419298328defecfc61b6c15659d.oggstr | Bin 0 -> 29439 bytes godot_ship/assets/audio/HitSFX.ogg.import | 15 +++++++++++++++ godot_ship/assets/audio/MissSFX.ogg.import | 15 +++++++++++++++ godot_ship/assets/audio/SunkSFX.ogg.import | 15 +++++++++++++++ 9 files changed, 54 insertions(+) create mode 100644 godot_ship/.import/HitSFX.ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.md5 create mode 100644 godot_ship/.import/HitSFX.ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.oggstr create mode 100644 godot_ship/.import/MissSFX.ogg-d7b93821aa1c2b607fa4dc4bb3561322.md5 create mode 100644 godot_ship/.import/MissSFX.ogg-d7b93821aa1c2b607fa4dc4bb3561322.oggstr create mode 100644 godot_ship/.import/SunkSFX.ogg-52b6d419298328defecfc61b6c15659d.md5 create mode 100644 godot_ship/.import/SunkSFX.ogg-52b6d419298328defecfc61b6c15659d.oggstr create mode 100644 godot_ship/assets/audio/HitSFX.ogg.import create mode 100644 godot_ship/assets/audio/MissSFX.ogg.import create mode 100644 godot_ship/assets/audio/SunkSFX.ogg.import diff --git a/godot_ship/.import/HitSFX.ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.md5 b/godot_ship/.import/HitSFX.ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.md5 new file mode 100644 index 0000000..dd2febb --- /dev/null +++ b/godot_ship/.import/HitSFX.ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.md5 @@ -0,0 +1,3 @@ +source_md5="aa361943427692c39cd21430895a1f89" +dest_md5="a384b01bb3a48f53f019cb11e44e2019" + diff --git a/godot_ship/.import/HitSFX.ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.oggstr b/godot_ship/.import/HitSFX.ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.oggstr new file mode 100644 index 0000000000000000000000000000000000000000..0d5b2793ff2d555d48127164f53c4a472842c9d5 GIT binary patch literal 8911 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 literal 0 HcmV?d00001 diff --git a/godot_ship/.import/MissSFX.ogg-d7b93821aa1c2b607fa4dc4bb3561322.md5 b/godot_ship/.import/MissSFX.ogg-d7b93821aa1c2b607fa4dc4bb3561322.md5 new file mode 100644 index 0000000..93ca95d --- /dev/null +++ b/godot_ship/.import/MissSFX.ogg-d7b93821aa1c2b607fa4dc4bb3561322.md5 @@ -0,0 +1,3 @@ +source_md5="4121e74ab010d628490c26ed5391a8f1" +dest_md5="e6145a1ff71559de29a79fa4b0b0fee2" + diff --git a/godot_ship/.import/MissSFX.ogg-d7b93821aa1c2b607fa4dc4bb3561322.oggstr b/godot_ship/.import/MissSFX.ogg-d7b93821aa1c2b607fa4dc4bb3561322.oggstr new file mode 100644 index 0000000000000000000000000000000000000000..e3ddb9aab69cca80856bc07e6424314458518377 GIT binary patch literal 43971 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 literal 0 HcmV?d00001 diff --git a/godot_ship/.import/SunkSFX.ogg-52b6d419298328defecfc61b6c15659d.md5 b/godot_ship/.import/SunkSFX.ogg-52b6d419298328defecfc61b6c15659d.md5 new file mode 100644 index 0000000..6f77432 --- /dev/null +++ b/godot_ship/.import/SunkSFX.ogg-52b6d419298328defecfc61b6c15659d.md5 @@ -0,0 +1,3 @@ +source_md5="d71fa2832e0ad78e94bbd353bc53c2bf" +dest_md5="87d33fdc866cbaaee42f97113a36ceac" + diff --git a/godot_ship/.import/SunkSFX.ogg-52b6d419298328defecfc61b6c15659d.oggstr b/godot_ship/.import/SunkSFX.ogg-52b6d419298328defecfc61b6c15659d.oggstr new file mode 100644 index 0000000000000000000000000000000000000000..f3bc4717d00476505db16e268565f1ae73d3ae44 GIT binary patch literal 29439 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 Dy?`ru literal 0 HcmV?d00001 diff --git a/godot_ship/assets/audio/HitSFX.ogg.import b/godot_ship/assets/audio/HitSFX.ogg.import new file mode 100644 index 0000000..f39b0c1 --- /dev/null +++ b/godot_ship/assets/audio/HitSFX.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/HitSFX.ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.oggstr" + +[deps] + +source_file="res://assets/audio/HitSFX.ogg" +dest_files=[ "res://.import/HitSFX.ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.oggstr" ] + +[params] + +loop=true +loop_offset=0 diff --git a/godot_ship/assets/audio/MissSFX.ogg.import b/godot_ship/assets/audio/MissSFX.ogg.import new file mode 100644 index 0000000..5689c33 --- /dev/null +++ b/godot_ship/assets/audio/MissSFX.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/MissSFX.ogg-d7b93821aa1c2b607fa4dc4bb3561322.oggstr" + +[deps] + +source_file="res://assets/audio/MissSFX.ogg" +dest_files=[ "res://.import/MissSFX.ogg-d7b93821aa1c2b607fa4dc4bb3561322.oggstr" ] + +[params] + +loop=true +loop_offset=0 diff --git a/godot_ship/assets/audio/SunkSFX.ogg.import b/godot_ship/assets/audio/SunkSFX.ogg.import new file mode 100644 index 0000000..df8f7c6 --- /dev/null +++ b/godot_ship/assets/audio/SunkSFX.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/SunkSFX.ogg-52b6d419298328defecfc61b6c15659d.oggstr" + +[deps] + +source_file="res://assets/audio/SunkSFX.ogg" +dest_files=[ "res://.import/SunkSFX.ogg-52b6d419298328defecfc61b6c15659d.oggstr" ] + +[params] + +loop=true +loop_offset=0 From bf58a2b29ec0d035574c8d5858f6ee77e07d33f5 Mon Sep 17 00:00:00 2001 From: tommy-l-ngo Date: Sat, 13 Nov 2021 23:17:33 -0600 Subject: [PATCH 040/107] Put Background in main --- godot_ship/scenes/Main.tscn | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/godot_ship/scenes/Main.tscn b/godot_ship/scenes/Main.tscn index 2376afa..056eeb3 100644 --- a/godot_ship/scenes/Main.tscn +++ b/godot_ship/scenes/Main.tscn @@ -1,5 +1,6 @@ -[gd_scene load_steps=2 format=2] +[gd_scene load_steps=3 format=2] +[ext_resource path="res://assets/backgrounds/Background_Dark.png" type="Texture" id=1] [ext_resource path="res://script/Main.gd" type="Script" id=5] [node name="Main" type="Control"] @@ -10,3 +11,12 @@ script = ExtResource( 5 ) __meta__ = { "_edit_use_anchors_": false } + +[node name="Background" type="TextureRect" parent="."] +margin_right = 40.0 +margin_bottom = 40.0 +texture = ExtResource( 1 ) +__meta__ = { +"_edit_lock_": true, +"_edit_use_anchors_": false +} From 9d47a111b05fb491b120e28a5380f934d716ce07 Mon Sep 17 00:00:00 2001 From: hpham474 Date: Sat, 13 Nov 2021 23:19:02 -0600 Subject: [PATCH 041/107] Removed option background --- godot_ship/scenes/Options.tscn | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/godot_ship/scenes/Options.tscn b/godot_ship/scenes/Options.tscn index 8ce2cdd..2b22f13 100644 --- a/godot_ship/scenes/Options.tscn +++ b/godot_ship/scenes/Options.tscn @@ -1,6 +1,5 @@ -[gd_scene load_steps=3 format=2] +[gd_scene load_steps=2 format=2] -[ext_resource path="res://assets/backgrounds/Background_Dark.png" type="Texture" id=1] [ext_resource path="res://script/options/Options.gd" type="Script" id=2] [node name="Options" type="Control"] @@ -11,15 +10,6 @@ __meta__ = { "_edit_use_anchors_": false } -[node name="Background" type="TextureRect" parent="."] -margin_right = 40.0 -margin_bottom = 40.0 -texture = ExtResource( 1 ) -__meta__ = { -"_edit_lock_": true, -"_edit_use_anchors_": false -} - [node name="MenuLabel" type="RichTextLabel" parent="."] margin_left = 294.0 margin_top = 68.0 From 63dec75688ca8a81becafa8b9805a2bc030e1414 Mon Sep 17 00:00:00 2001 From: tommy-l-ngo Date: Sat, 13 Nov 2021 23:32:19 -0600 Subject: [PATCH 042/107] Added Confirmation Dialog for Forfeit --- godot_ship/scenes/Game/Game.tscn | 20 ++++++++++++++++++-- godot_ship/scenes/Main.tscn | 1 + godot_ship/script/game/Gameplay/Game.gd | 3 +++ 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/godot_ship/scenes/Game/Game.tscn b/godot_ship/scenes/Game/Game.tscn index 52cf89f..31dbf81 100644 --- a/godot_ship/scenes/Game/Game.tscn +++ b/godot_ship/scenes/Game/Game.tscn @@ -1,9 +1,7 @@ [gd_scene load_steps=2 format=2] -[ext_resource path="res://assets/backgrounds/Background_Dark.png" type="Texture" id=1] [ext_resource path="res://script/game/Gameplay/Game.gd" type="Script" id=3] - [node name="Game" type="Control"] anchor_right = 1.0 anchor_bottom = 1.0 @@ -31,4 +29,22 @@ margin_right = 53.0 margin_bottom = 20.0 text = "Forfeit" +[node name="ConfirmationDialog" type="ConfirmationDialog" parent="."] +visible = true +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +margin_left = -111.5 +margin_top = -29.0 +margin_right = 111.5 +margin_bottom = 29.0 +rect_min_size = Vector2( 150, 52.5 ) +window_title = "Forfeit Confirmation..." +dialog_text = "Are you sure you want to forfeit?" +__meta__ = { +"_edit_use_anchors_": false, +"_editor_description_": "" +} + [connection signal="pressed" from="Buttons/Forfeit" to="." method="_on_Forfeit_pressed"] diff --git a/godot_ship/scenes/Main.tscn b/godot_ship/scenes/Main.tscn index 056eeb3..c36dcb7 100644 --- a/godot_ship/scenes/Main.tscn +++ b/godot_ship/scenes/Main.tscn @@ -13,6 +13,7 @@ __meta__ = { } [node name="Background" type="TextureRect" parent="."] +visible = false margin_right = 40.0 margin_bottom = 40.0 texture = ExtResource( 1 ) diff --git a/godot_ship/script/game/Gameplay/Game.gd b/godot_ship/script/game/Gameplay/Game.gd index 2830d80..12a8814 100644 --- a/godot_ship/script/game/Gameplay/Game.gd +++ b/godot_ship/script/game/Gameplay/Game.gd @@ -31,6 +31,9 @@ func _ready(): var setup = Setup.instance() setup.connect("game_ready", self, "game_setup") add_child(setup) + + get_node("ConfirmationDialog").get_ok().text = "Yes" + get_node("ConfirmationDialog").get_cancel().text = "No" # TODO: Move Setup into the Player. func game_setup(_ships): From adb3fc659ea6672724d733cb80c1ad4dd11a1082 Mon Sep 17 00:00:00 2001 From: tommy-l-ngo Date: Sat, 13 Nov 2021 23:35:11 -0600 Subject: [PATCH 043/107] Revert "Merge branch 'game-logic' of https://github.com/StatewideInk/Group12 into game-logic" This reverts commit 104ffaab0a49438cf29722578d47e7637dce58fb, reversing changes made to 63dec75688ca8a81becafa8b9805a2bc030e1414. --- godot_ship/scenes/Options.tscn | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/godot_ship/scenes/Options.tscn b/godot_ship/scenes/Options.tscn index 2b22f13..8ce2cdd 100644 --- a/godot_ship/scenes/Options.tscn +++ b/godot_ship/scenes/Options.tscn @@ -1,5 +1,6 @@ -[gd_scene load_steps=2 format=2] +[gd_scene load_steps=3 format=2] +[ext_resource path="res://assets/backgrounds/Background_Dark.png" type="Texture" id=1] [ext_resource path="res://script/options/Options.gd" type="Script" id=2] [node name="Options" type="Control"] @@ -10,6 +11,15 @@ __meta__ = { "_edit_use_anchors_": false } +[node name="Background" type="TextureRect" parent="."] +margin_right = 40.0 +margin_bottom = 40.0 +texture = ExtResource( 1 ) +__meta__ = { +"_edit_lock_": true, +"_edit_use_anchors_": false +} + [node name="MenuLabel" type="RichTextLabel" parent="."] margin_left = 294.0 margin_top = 68.0 From 34d0b1bf0dd88652659a2cedd4ccfc64f8258fc0 Mon Sep 17 00:00:00 2001 From: John Breaux Date: Sat, 13 Nov 2021 23:36:39 -0600 Subject: [PATCH 044/107] Fix title screen never going (whoops --- godot_ship/script/Main.gd | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/godot_ship/script/Main.gd b/godot_ship/script/Main.gd index e47590d..cf1cadb 100644 --- a/godot_ship/script/Main.gd +++ b/godot_ship/script/Main.gd @@ -38,29 +38,33 @@ func _input(event): # Ensure the scene doesn't become empty func _process(_delta): # Make sure there's something running + # Background counts as one child # Debug counts as one child - if get_child_count() < 1 + int(debug_enabled): + if get_child_count() < 2 + int(debug_enabled): MessageBus.emit_signal("change_scene", "Title") pass # Creates a new instance of each menu scene func _on_scene_start(scene): + var instance #print ("_on_scene_start(",scene,")") match scene: "Singleplayer": - add_child (Game.instance()) + instance = Game.instance() + add_child (instance) return true "Multiplayer": - var game = Game.instance() - game.is_multiplayer = true - add_child (game) - # add_child (multiplayercontroller.instance()) + instance = Game.instance() + instance.is_multiplayer = true + add_child (instance) return true "Options": - add_child (Options.instance()) + instance = Options.instance() + add_child (instance) return true "Title": - add_child (Title_Screen.instance()) + instance = Title_Screen.instance() + add_child (instance) return true func _on_scene_start_by_name(scene): From 5c49991eed27f54893e23655d1c471ae2ffc407d Mon Sep 17 00:00:00 2001 From: John Breaux Date: Sat, 13 Nov 2021 23:41:12 -0600 Subject: [PATCH 045/107] Oops I made the background invisible --- godot_ship/scenes/Main.tscn | 1 - 1 file changed, 1 deletion(-) diff --git a/godot_ship/scenes/Main.tscn b/godot_ship/scenes/Main.tscn index c36dcb7..056eeb3 100644 --- a/godot_ship/scenes/Main.tscn +++ b/godot_ship/scenes/Main.tscn @@ -13,7 +13,6 @@ __meta__ = { } [node name="Background" type="TextureRect" parent="."] -visible = false margin_right = 40.0 margin_bottom = 40.0 texture = ExtResource( 1 ) From 3b7a8afdf8cb9bf2a18c44ff02ee6a10e057fb80 Mon Sep 17 00:00:00 2001 From: hpham474 Date: Sat, 13 Nov 2021 23:43:05 -0600 Subject: [PATCH 046/107] removed option background again --- godot_ship/scenes/Options.tscn | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/godot_ship/scenes/Options.tscn b/godot_ship/scenes/Options.tscn index 8ce2cdd..2b22f13 100644 --- a/godot_ship/scenes/Options.tscn +++ b/godot_ship/scenes/Options.tscn @@ -1,6 +1,5 @@ -[gd_scene load_steps=3 format=2] +[gd_scene load_steps=2 format=2] -[ext_resource path="res://assets/backgrounds/Background_Dark.png" type="Texture" id=1] [ext_resource path="res://script/options/Options.gd" type="Script" id=2] [node name="Options" type="Control"] @@ -11,15 +10,6 @@ __meta__ = { "_edit_use_anchors_": false } -[node name="Background" type="TextureRect" parent="."] -margin_right = 40.0 -margin_bottom = 40.0 -texture = ExtResource( 1 ) -__meta__ = { -"_edit_lock_": true, -"_edit_use_anchors_": false -} - [node name="MenuLabel" type="RichTextLabel" parent="."] margin_left = 294.0 margin_top = 68.0 From bd5d350e96a364aaf7582d9adab80f97e4b4617b Mon Sep 17 00:00:00 2001 From: tommy-l-ngo Date: Sat, 13 Nov 2021 23:51:36 -0600 Subject: [PATCH 047/107] Added dark/light mode functionality --- godot_ship/script/Main.gd | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/godot_ship/script/Main.gd b/godot_ship/script/Main.gd index cf1cadb..0325d81 100644 --- a/godot_ship/script/Main.gd +++ b/godot_ship/script/Main.gd @@ -6,6 +6,10 @@ onready var Game = preload("res://scenes/Game/Game.tscn" ) onready var Options = preload("res://scenes/Options.tscn" ) onready var Debug_Menu = preload("res://scenes/Debug Menu.tscn" ) +# Themes +var lightmode = preload("res://assets/backgrounds/Background_Light.png"); +var darkmode = preload("res://assets/backgrounds/Background_Dark.png"); + #flags var power_saving = true var debug_enabled = true @@ -21,6 +25,7 @@ func _ready(): _errno += MessageBus.connect("list_scenes" , self, "_on_scene_list" ) _errno += MessageBus.connect("quit" , self, "_on_quit_request" ) _errno += MessageBus.connect("return_to_title", self, "_on_title_request" ) + _errno += OptionsController.connect("change_theme", self, "_on_change_theme" ) # go fullscreen OS.low_processor_usage_mode = power_saving OS.low_processor_usage_mode_sleep_usec = 6800 @@ -93,3 +98,9 @@ func _on_quit_request(): # Kills the current tree and replaces it with a new one func _on_title_request(): return get_tree().change_scene("res://scenes/Main.tscn") + +func _on_change_theme(theme): + if theme == "light": + get_node("Background").set_texture(lightmode) + elif theme == "dark": + get_node("Background").set_texture(darkmode) From 51e230117a207a21b90552031daf83a23e196cd1 Mon Sep 17 00:00:00 2001 From: hpham474 Date: Sat, 13 Nov 2021 23:55:46 -0600 Subject: [PATCH 048/107] Added signal for audio SFX --- ...X.ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.md5 | 2 +- ...gg-93a1e93085ac0a2fc2e723f5d44a2ca9.oggstr | Bin 8911 -> 8899 bytes ...X.ogg-d7b93821aa1c2b607fa4dc4bb3561322.md5 | 2 +- ...gg-d7b93821aa1c2b607fa4dc4bb3561322.oggstr | Bin 43971 -> 43959 bytes ...X.ogg-52b6d419298328defecfc61b6c15659d.md5 | 2 +- ...gg-52b6d419298328defecfc61b6c15659d.oggstr | Bin 29439 -> 29427 bytes godot_ship/assets/audio/HitSFX.ogg.import | 2 +- godot_ship/assets/audio/MissSFX.ogg.import | 2 +- godot_ship/assets/audio/SunkSFX.ogg.import | 2 +- godot_ship/scenes/AudioController.tscn | 17 ++++++++++++++++- .../script/audio controller/Audio Bus.gd | 3 +++ .../audio controller/AudioController.gd | 13 +++++++++++++ 12 files changed, 38 insertions(+), 7 deletions(-) diff --git a/godot_ship/.import/HitSFX.ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.md5 b/godot_ship/.import/HitSFX.ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.md5 index dd2febb..dc35f36 100644 --- a/godot_ship/.import/HitSFX.ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.md5 +++ b/godot_ship/.import/HitSFX.ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.md5 @@ -1,3 +1,3 @@ source_md5="aa361943427692c39cd21430895a1f89" -dest_md5="a384b01bb3a48f53f019cb11e44e2019" +dest_md5="71290af628a880e44134b3636fc49535" diff --git a/godot_ship/.import/HitSFX.ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.oggstr b/godot_ship/.import/HitSFX.ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.oggstr index 0d5b2793ff2d555d48127164f53c4a472842c9d5..5261971fd44889c585ac872f896086e56273e44c 100644 GIT binary patch delta 19 acmX@_df0UXJ0m0GW)8;fiY!6FLCyd`v<0aE delta 31 jcmX@?dfs&dJ0m00W)8;fiUQ0G3=B*_%m~Cm!9mUdcLN2y diff --git a/godot_ship/.import/MissSFX.ogg-d7b93821aa1c2b607fa4dc4bb3561322.md5 b/godot_ship/.import/MissSFX.ogg-d7b93821aa1c2b607fa4dc4bb3561322.md5 index 93ca95d..90af281 100644 --- a/godot_ship/.import/MissSFX.ogg-d7b93821aa1c2b607fa4dc4bb3561322.md5 +++ b/godot_ship/.import/MissSFX.ogg-d7b93821aa1c2b607fa4dc4bb3561322.md5 @@ -1,3 +1,3 @@ source_md5="4121e74ab010d628490c26ed5391a8f1" -dest_md5="e6145a1ff71559de29a79fa4b0b0fee2" +dest_md5="8556f1ced20c3b073ae4fcb8a300e349" diff --git a/godot_ship/.import/MissSFX.ogg-d7b93821aa1c2b607fa4dc4bb3561322.oggstr b/godot_ship/.import/MissSFX.ogg-d7b93821aa1c2b607fa4dc4bb3561322.oggstr index e3ddb9aab69cca80856bc07e6424314458518377..dbb57d5b7629b133a59a92398ae61e56df83a9c8 100644 GIT binary patch delta 21 dcmX?nooV}ZrVZ?jjEtK(7+0@i2?`E!1^`-A2Q~lz delta 33 mcmdmfo$2s(rVZ?jj7*z37+0?nU}j)oU;<)BAPx!+as~jSGY3fk diff --git a/godot_ship/.import/SunkSFX.ogg-52b6d419298328defecfc61b6c15659d.md5 b/godot_ship/.import/SunkSFX.ogg-52b6d419298328defecfc61b6c15659d.md5 index 6f77432..aa69243 100644 --- a/godot_ship/.import/SunkSFX.ogg-52b6d419298328defecfc61b6c15659d.md5 +++ b/godot_ship/.import/SunkSFX.ogg-52b6d419298328defecfc61b6c15659d.md5 @@ -1,3 +1,3 @@ source_md5="d71fa2832e0ad78e94bbd353bc53c2bf" -dest_md5="87d33fdc866cbaaee42f97113a36ceac" +dest_md5="e694209bc2af13019893f9a931b65aae" diff --git a/godot_ship/.import/SunkSFX.ogg-52b6d419298328defecfc61b6c15659d.oggstr b/godot_ship/.import/SunkSFX.ogg-52b6d419298328defecfc61b6c15659d.oggstr index f3bc4717d00476505db16e268565f1ae73d3ae44..c10859e82266ba6bdfd4e4b3edda9a723bf49e1f 100644 GIT binary patch delta 21 dcmezWl=1UZ#trO@jEtK(7@rri1O*2<0{~^I2g?8e delta 33 mcmezTl=1&l#trO@j7*z37@rpkFf%YPFaa?m5C;VZIRgN-ga_UL diff --git a/godot_ship/assets/audio/HitSFX.ogg.import b/godot_ship/assets/audio/HitSFX.ogg.import index f39b0c1..7f85105 100644 --- a/godot_ship/assets/audio/HitSFX.ogg.import +++ b/godot_ship/assets/audio/HitSFX.ogg.import @@ -11,5 +11,5 @@ dest_files=[ "res://.import/HitSFX.ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.oggstr" [params] -loop=true +loop=false loop_offset=0 diff --git a/godot_ship/assets/audio/MissSFX.ogg.import b/godot_ship/assets/audio/MissSFX.ogg.import index 5689c33..8767d4e 100644 --- a/godot_ship/assets/audio/MissSFX.ogg.import +++ b/godot_ship/assets/audio/MissSFX.ogg.import @@ -11,5 +11,5 @@ dest_files=[ "res://.import/MissSFX.ogg-d7b93821aa1c2b607fa4dc4bb3561322.oggstr" [params] -loop=true +loop=false loop_offset=0 diff --git a/godot_ship/assets/audio/SunkSFX.ogg.import b/godot_ship/assets/audio/SunkSFX.ogg.import index df8f7c6..17cd2ab 100644 --- a/godot_ship/assets/audio/SunkSFX.ogg.import +++ b/godot_ship/assets/audio/SunkSFX.ogg.import @@ -11,5 +11,5 @@ dest_files=[ "res://.import/SunkSFX.ogg-52b6d419298328defecfc61b6c15659d.oggstr" [params] -loop=true +loop=false loop_offset=0 diff --git a/godot_ship/scenes/AudioController.tscn b/godot_ship/scenes/AudioController.tscn index 5de3d12..c4112e2 100644 --- a/godot_ship/scenes/AudioController.tscn +++ b/godot_ship/scenes/AudioController.tscn @@ -1,8 +1,11 @@ -[gd_scene load_steps=4 format=2] +[gd_scene load_steps=7 format=2] [ext_resource path="res://assets/audio/BGM - Captain Scurvy.ogg" type="AudioStream" id=1] [ext_resource path="res://script/audio controller/AudioController.gd" type="Script" id=2] [ext_resource path="res://assets/audio/ButtonSFX.ogg" type="AudioStream" id=3] +[ext_resource path="res://assets/audio/HitSFX.ogg" type="AudioStream" id=4] +[ext_resource path="res://assets/audio/MissSFX.ogg" type="AudioStream" id=5] +[ext_resource path="res://assets/audio/SunkSFX.ogg" type="AudioStream" id=6] [node name="Control" type="Control"] anchor_right = 1.0 @@ -20,3 +23,15 @@ bus = "BGM" [node name="buttonSFX" type="AudioStreamPlayer" parent="."] stream = ExtResource( 3 ) bus = "SFX" + +[node name="shipHitSFX" type="AudioStreamPlayer" parent="."] +stream = ExtResource( 4 ) +bus = "SFX" + +[node name="shipMissedSFX" type="AudioStreamPlayer" parent="."] +stream = ExtResource( 5 ) +bus = "SFX" + +[node name="shipSunkSFX" type="AudioStreamPlayer" parent="."] +stream = ExtResource( 6 ) +bus = "SFX" diff --git a/godot_ship/script/audio controller/Audio Bus.gd b/godot_ship/script/audio controller/Audio Bus.gd index 4fbe1d1..dac0314 100644 --- a/godot_ship/script/audio controller/Audio Bus.gd +++ b/godot_ship/script/audio controller/Audio Bus.gd @@ -6,3 +6,6 @@ extends Node # Ask for a scene change signal button_clicked +signal ship_hit +signal ship_missed +signal ship_sunk diff --git a/godot_ship/script/audio controller/AudioController.gd b/godot_ship/script/audio controller/AudioController.gd index a128649..193e0a6 100644 --- a/godot_ship/script/audio controller/AudioController.gd +++ b/godot_ship/script/audio controller/AudioController.gd @@ -9,9 +9,22 @@ extends Control func _ready(): var _errno = 0 _errno += AudioBus.connect("button_clicked", self, "_button_clicked") + _errno += AudioBus.connect("ship_hit", self, "_ship_hit") + _errno += AudioBus.connect("ship_missed", self, "_ship_missed") + _errno += AudioBus.connect("ship_sunk", self, "_ship_sunk") func _button_clicked(): $buttonSFX.play() + +func _ship_hit(): + $shipHitSFX.play() + +func _ship_missed(): + $shipMissedSFX.play() + +func _ship_sunk(): + $shipSunkSFX.play() + # Called every frame. 'delta' is the elapsed time since the previous frame. #func _process(delta): # pass From 31e00eb7f453c071225a856e824d30f157117f9c Mon Sep 17 00:00:00 2001 From: John Breaux Date: Sat, 13 Nov 2021 23:58:41 -0600 Subject: [PATCH 049/107] Load the theme on startup --- godot_ship/script/Main.gd | 2 ++ 1 file changed, 2 insertions(+) diff --git a/godot_ship/script/Main.gd b/godot_ship/script/Main.gd index 0325d81..a3d53f9 100644 --- a/godot_ship/script/Main.gd +++ b/godot_ship/script/Main.gd @@ -26,6 +26,8 @@ func _ready(): _errno += MessageBus.connect("quit" , self, "_on_quit_request" ) _errno += MessageBus.connect("return_to_title", self, "_on_title_request" ) _errno += OptionsController.connect("change_theme", self, "_on_change_theme" ) + # Set the theme based on the config file + _on_change_theme(OptionsController.get_theme()) # go fullscreen OS.low_processor_usage_mode = power_saving OS.low_processor_usage_mode_sleep_usec = 6800 From c53ce61b535f74f7d1a6aaa21efb4b2c83460aa5 Mon Sep 17 00:00:00 2001 From: tommy-l-ngo Date: Sun, 14 Nov 2021 00:08:16 -0600 Subject: [PATCH 050/107] Added Confirmation dialog for Forfeit --- godot_ship/scenes/Game/Game.tscn | 2 +- godot_ship/script/game/Gameplay/Game.gd | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/godot_ship/scenes/Game/Game.tscn b/godot_ship/scenes/Game/Game.tscn index 31dbf81..681939f 100644 --- a/godot_ship/scenes/Game/Game.tscn +++ b/godot_ship/scenes/Game/Game.tscn @@ -30,7 +30,6 @@ margin_bottom = 20.0 text = "Forfeit" [node name="ConfirmationDialog" type="ConfirmationDialog" parent="."] -visible = true anchor_left = 0.5 anchor_top = 0.5 anchor_right = 0.5 @@ -48,3 +47,4 @@ __meta__ = { } [connection signal="pressed" from="Buttons/Forfeit" to="." method="_on_Forfeit_pressed"] +[connection signal="confirmed" from="ConfirmationDialog" to="." method="_on_ConfirmationDialog_confirmed"] diff --git a/godot_ship/script/game/Gameplay/Game.gd b/godot_ship/script/game/Gameplay/Game.gd index 12a8814..27ac0a4 100644 --- a/godot_ship/script/game/Gameplay/Game.gd +++ b/godot_ship/script/game/Gameplay/Game.gd @@ -58,7 +58,10 @@ func display_turn(): func _on_Forfeit_pressed(): AudioBus.emit_signal("button_clicked") - end() + get_node("ConfirmationDialog").popup() func end(): queue_free() + +func _on_ConfirmationDialog_confirmed(): + end() From dd5b6f7b717f82682e3efc6d149cb179db6b6b88 Mon Sep 17 00:00:00 2001 From: tommy-l-ngo Date: Sun, 14 Nov 2021 00:11:25 -0600 Subject: [PATCH 051/107] Fixed Texture Rendering for Light Mode Background --- ...t.png-3684b7dcc3b1fd645e9fff4401113c01.md5 | 2 +- ....png-3684b7dcc3b1fd645e9fff4401113c01.stex | Bin 9376 -> 9376 bytes .../backgrounds/Background_Light.png.import | 4 ++-- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/godot_ship/.import/Background_Light.png-3684b7dcc3b1fd645e9fff4401113c01.md5 b/godot_ship/.import/Background_Light.png-3684b7dcc3b1fd645e9fff4401113c01.md5 index ee05183..ad95732 100644 --- a/godot_ship/.import/Background_Light.png-3684b7dcc3b1fd645e9fff4401113c01.md5 +++ b/godot_ship/.import/Background_Light.png-3684b7dcc3b1fd645e9fff4401113c01.md5 @@ -1,3 +1,3 @@ source_md5="def9518adb67248106449930ecafbf56" -dest_md5="f9d758e8df7027a5ee66a8f1cb4910e6" +dest_md5="b1f6910cd5bbb4c510a140a0147c5476" diff --git a/godot_ship/.import/Background_Light.png-3684b7dcc3b1fd645e9fff4401113c01.stex b/godot_ship/.import/Background_Light.png-3684b7dcc3b1fd645e9fff4401113c01.stex index 4d5e2974b252a6d248075c87d9ad652d94221e88..fa6121dff219864397da334824e8b486b94abea8 100644 GIT binary patch delta 29 fcmZ4BxxiDz-6c4rfr)`3gOLFW1lTr;^r!#;WUvK~ delta 29 icmZ4BxxiDz-6c4rfr)`3gOP!Og#iQv*f)ywr~m+D Date: Sun, 14 Nov 2021 00:30:18 -0600 Subject: [PATCH 052/107] Sounds no longer scale linearly --- godot_ship/scenes/AudioController.tscn | 3 +++ godot_ship/scenes/Options.tscn | 15 ++++++--------- godot_ship/script/options/Options.gd | 9 ++++++--- godot_ship/script/options/OptionsController.gd | 8 ++++---- 4 files changed, 19 insertions(+), 16 deletions(-) diff --git a/godot_ship/scenes/AudioController.tscn b/godot_ship/scenes/AudioController.tscn index c4112e2..d130143 100644 --- a/godot_ship/scenes/AudioController.tscn +++ b/godot_ship/scenes/AudioController.tscn @@ -26,12 +26,15 @@ bus = "SFX" [node name="shipHitSFX" type="AudioStreamPlayer" parent="."] stream = ExtResource( 4 ) +volume_db = -10.0 bus = "SFX" [node name="shipMissedSFX" type="AudioStreamPlayer" parent="."] stream = ExtResource( 5 ) +volume_db = -5.0 bus = "SFX" [node name="shipSunkSFX" type="AudioStreamPlayer" parent="."] stream = ExtResource( 6 ) +volume_db = -10.0 bus = "SFX" diff --git a/godot_ship/scenes/Options.tscn b/godot_ship/scenes/Options.tscn index 2b22f13..2ed6077 100644 --- a/godot_ship/scenes/Options.tscn +++ b/godot_ship/scenes/Options.tscn @@ -58,10 +58,9 @@ focus_neighbour_top = NodePath("../../../Back") focus_neighbour_bottom = NodePath("../../Volume Setting/Volume Slider") focus_next = NodePath("../../Volume Setting/Volume Slider") focus_previous = NodePath("../../../Back") -min_value = -25.0 -max_value = 0.0 +max_value = 1.0 +step = 0.05 tick_count = 10 -ticks_on_borders = true __meta__ = { "_edit_use_anchors_": false } @@ -90,10 +89,9 @@ focus_neighbour_top = NodePath("../../SFX Setting/SFX Slider") focus_neighbour_bottom = NodePath("../../../Buttons/Dark") focus_next = NodePath("../../../Buttons/Dark") focus_previous = NodePath("../../SFX Setting/SFX Slider") -min_value = -50.0 -max_value = 0.0 +max_value = 1.0 +step = 0.05 tick_count = 10 -ticks_on_borders = true __meta__ = { "_edit_use_anchors_": false } @@ -117,10 +115,9 @@ margin_left = 64.0 margin_top = 48.0 margin_right = 208.0 margin_bottom = 64.0 -min_value = -50.0 -max_value = 0.0 +max_value = 1.0 +step = 0.05 tick_count = 10 -ticks_on_borders = true __meta__ = { "_edit_use_anchors_": false } diff --git a/godot_ship/script/options/Options.gd b/godot_ship/script/options/Options.gd index 09e1bf9..d4e927b 100644 --- a/godot_ship/script/options/Options.gd +++ b/godot_ship/script/options/Options.gd @@ -10,9 +10,9 @@ onready var theme_buttons = find_node("Buttons", true, true).get_children() func _ready(): OptionsController.load_options() find_next_valid_focus().grab_focus() - master_slider.value = OptionsController.get_mas_volume() - music_slider.value = OptionsController.get_mus_volume() - sound_slider.value = OptionsController.get_sfx_volume() + master_slider.value = db2linear(OptionsController.get_mas_volume()) + music_slider.value = db2linear(OptionsController.get_mus_volume()) + sound_slider.value = db2linear(OptionsController.get_sfx_volume()) func _on_Button_pressed(): AudioBus.emit_signal("button_clicked") @@ -20,14 +20,17 @@ func _on_Button_pressed(): #MessageBus.emit_signal("change_scene", "Title") func _on_Master_Slider_value_changed(value): + value = linear2db(value) AudioBus.emit_signal("button_clicked") OptionsController.set_vol(value, "mas_vol") func _on_Music_Slider_value_changed(value): + value = linear2db(value) AudioBus.emit_signal("button_clicked") OptionsController.set_vol(value, "mus_vol") func _on_SFX_Slider_value_changed(value): + value = linear2db(value) AudioBus.emit_signal("button_clicked") OptionsController.set_vol(value, "sfx_vol") diff --git a/godot_ship/script/options/OptionsController.gd b/godot_ship/script/options/OptionsController.gd index a9fd620..eaefae4 100644 --- a/godot_ship/script/options/OptionsController.gd +++ b/godot_ship/script/options/OptionsController.gd @@ -8,9 +8,9 @@ signal change_theme (theme) var f = File.new() var options_file = "user://options.save" var theme = "dark" -var mas_vol = 0 -var mus_vol = 0 -var sfx_vol = 0 +var mas_vol = linear2db(1) +var mus_vol = linear2db(1) +var sfx_vol = linear2db(1) func _ready(): load_options() @@ -62,7 +62,7 @@ func load_options(): mus_vol = f.get_var() sfx_vol = f.get_var() f.close() - AudioServer.set_bus_volume_db(AudioServer.get_bus_index("Master"), mus_vol) + AudioServer.set_bus_volume_db(AudioServer.get_bus_index("Master"), mas_vol) AudioServer.set_bus_volume_db(AudioServer.get_bus_index("BGM"), mus_vol) AudioServer.set_bus_volume_db(AudioServer.get_bus_index("SFX"), sfx_vol) From 4065253bf1fdfe736275a6aaaf4f9c9ff2e01661 Mon Sep 17 00:00:00 2001 From: John Breaux Date: Sun, 14 Nov 2021 00:30:53 -0600 Subject: [PATCH 053/107] Remove unused resourse main.tres --- godot_ship/main.tres | 1252 ----------------------------- godot_ship/scenes/Debug Menu.tscn | 6 +- 2 files changed, 3 insertions(+), 1255 deletions(-) delete mode 100644 godot_ship/main.tres diff --git a/godot_ship/main.tres b/godot_ship/main.tres deleted file mode 100644 index 74cd80c..0000000 --- a/godot_ship/main.tres +++ /dev/null @@ -1,1252 +0,0 @@ -[gd_resource type="Theme" format=2] - -[resource] -resource_name = "Main Theme" -BoxContainer/constants/separation = 4 -Button/colors/font_color = Color( 0, 0, 0, 1 ) -Button/colors/font_color_disabled = Color( 0, 0, 0, 1 ) -Button/colors/font_color_hover = Color( 0, 0, 0, 1 ) -Button/colors/font_color_pressed = Color( 0, 0, 0, 1 ) -Button/colors/icon_color_hover = Color( 0, 0, 0, 1 ) -Button/colors/icon_color_pressed = Color( 0, 0, 0, 1 ) -Button/constants/hseparation = 2 -Button/fonts/font = null -Button/styles/disabled = null -Button/styles/focus = null -Button/styles/hover = null -Button/styles/normal = null -Button/styles/pressed = null -CheckBox/colors/font_color = Color( 0, 0, 0, 1 ) -CheckBox/colors/font_color_disabled = Color( 0, 0, 0, 1 ) -CheckBox/colors/font_color_hover = Color( 0, 0, 0, 1 ) -CheckBox/colors/font_color_hover_pressed = Color( 0, 0, 0, 1 ) -CheckBox/colors/font_color_pressed = Color( 0, 0, 0, 1 ) -CheckBox/colors/icon_color_hover = Color( 0, 0, 0, 1 ) -CheckBox/constants/check_vadjust = 0 -CheckBox/constants/hseparation = 4 -CheckBox/fonts/font = null -CheckBox/icons/checked = null -CheckBox/icons/radio_checked = null -CheckBox/icons/radio_unchecked = null -CheckBox/icons/unchecked = null -CheckBox/styles/disabled = null -CheckBox/styles/focus = null -CheckBox/styles/hover = null -CheckBox/styles/hover_pressed = null -CheckBox/styles/normal = null -CheckBox/styles/pressed = null -CheckButton/colors/font_color = Color( 0, 0, 0, 1 ) -CheckButton/colors/font_color_disabled = Color( 0, 0, 0, 1 ) -CheckButton/colors/font_color_hover = Color( 0, 0, 0, 1 ) -CheckButton/colors/font_color_hover_pressed = Color( 0, 0, 0, 1 ) -CheckButton/colors/font_color_pressed = Color( 0, 0, 0, 1 ) -CheckButton/colors/icon_color_hover = Color( 0, 0, 0, 1 ) -CheckButton/constants/check_vadjust = 0 -CheckButton/constants/hseparation = 4 -CheckButton/fonts/font = null -CheckButton/icons/off = null -CheckButton/icons/off_disabled = null -CheckButton/icons/on = null -CheckButton/icons/on_disabled = null -CheckButton/styles/disabled = null -CheckButton/styles/focus = null -CheckButton/styles/hover = null -CheckButton/styles/hover_pressed = null -CheckButton/styles/normal = null -CheckButton/styles/pressed = null -ColorPicker/constants/h_width = 30 -ColorPicker/constants/label_width = 10 -ColorPicker/constants/margin = 4 -ColorPicker/constants/sv_height = 256 -ColorPicker/constants/sv_width = 256 -ColorPicker/icons/add_preset = null -ColorPicker/icons/color_hue = null -ColorPicker/icons/color_sample = null -ColorPicker/icons/overbright_indicator = null -ColorPicker/icons/preset_bg = null -ColorPicker/icons/screen_picker = null -ColorPickerButton/colors/font_color = Color( 0, 0, 0, 1 ) -ColorPickerButton/colors/font_color_disabled = Color( 0, 0, 0, 1 ) -ColorPickerButton/colors/font_color_hover = Color( 0, 0, 0, 1 ) -ColorPickerButton/colors/font_color_pressed = Color( 0, 0, 0, 1 ) -ColorPickerButton/constants/hseparation = 2 -ColorPickerButton/fonts/font = null -ColorPickerButton/icons/bg = null -ColorPickerButton/styles/disabled = null -ColorPickerButton/styles/focus = null -ColorPickerButton/styles/hover = null -ColorPickerButton/styles/normal = null -ColorPickerButton/styles/pressed = null -Dialogs/constants/button_margin = 32 -Dialogs/constants/margin = 8 -Editor/colors/accent_color = Color( 0, 0, 0, 1 ) -Editor/colors/axis_x_color = Color( 0, 0, 0, 1 ) -Editor/colors/axis_y_color = Color( 0, 0, 0, 1 ) -Editor/colors/axis_z_color = Color( 0, 0, 0, 1 ) -Editor/colors/base_color = Color( 0, 0, 0, 1 ) -Editor/colors/box_selection_fill_color = Color( 0, 0, 0, 1 ) -Editor/colors/box_selection_stroke_color = Color( 0, 0, 0, 1 ) -Editor/colors/contrast_color_1 = Color( 0, 0, 0, 1 ) -Editor/colors/contrast_color_2 = Color( 0, 0, 0, 1 ) -Editor/colors/dark_color_1 = Color( 0, 0, 0, 1 ) -Editor/colors/dark_color_2 = Color( 0, 0, 0, 1 ) -Editor/colors/dark_color_3 = Color( 0, 0, 0, 1 ) -Editor/colors/disabled_font_color = Color( 0, 0, 0, 1 ) -Editor/colors/error_color = Color( 0, 0, 0, 1 ) -Editor/colors/font_color = Color( 0, 0, 0, 1 ) -Editor/colors/highlight_color = Color( 0, 0, 0, 1 ) -Editor/colors/highlighted_font_color = Color( 0, 0, 0, 1 ) -Editor/colors/mono_color = Color( 0, 0, 0, 1 ) -Editor/colors/prop_category = Color( 0, 0, 0, 1 ) -Editor/colors/prop_section = Color( 0, 0, 0, 1 ) -Editor/colors/prop_subsection = Color( 0, 0, 0, 1 ) -Editor/colors/property_color = Color( 0, 0, 0, 1 ) -Editor/colors/sub_inspector_property_color = Color( 0, 0, 0, 1 ) -Editor/colors/success_color = Color( 0, 0, 0, 1 ) -Editor/colors/warning_color = Color( 0, 0, 0, 1 ) -Editor/constants/dark_theme = 1 -Editor/constants/inspector_margin = 8 -Editor/constants/scale = 1 -Editor/constants/sub_inspector_font_offset = 4 -Editor/constants/thumb_size = 64 -Editor/styles/sub_inspector_bg0 = null -Editor/styles/sub_inspector_bg1 = null -Editor/styles/sub_inspector_bg10 = null -Editor/styles/sub_inspector_bg11 = null -Editor/styles/sub_inspector_bg12 = null -Editor/styles/sub_inspector_bg13 = null -Editor/styles/sub_inspector_bg14 = null -Editor/styles/sub_inspector_bg15 = null -Editor/styles/sub_inspector_bg2 = null -Editor/styles/sub_inspector_bg3 = null -Editor/styles/sub_inspector_bg4 = null -Editor/styles/sub_inspector_bg5 = null -Editor/styles/sub_inspector_bg6 = null -Editor/styles/sub_inspector_bg7 = null -Editor/styles/sub_inspector_bg8 = null -Editor/styles/sub_inspector_bg9 = null -Editor/styles/sub_inspector_property_bg0 = null -Editor/styles/sub_inspector_property_bg1 = null -Editor/styles/sub_inspector_property_bg10 = null -Editor/styles/sub_inspector_property_bg11 = null -Editor/styles/sub_inspector_property_bg12 = null -Editor/styles/sub_inspector_property_bg13 = null -Editor/styles/sub_inspector_property_bg14 = null -Editor/styles/sub_inspector_property_bg15 = null -Editor/styles/sub_inspector_property_bg2 = null -Editor/styles/sub_inspector_property_bg3 = null -Editor/styles/sub_inspector_property_bg4 = null -Editor/styles/sub_inspector_property_bg5 = null -Editor/styles/sub_inspector_property_bg6 = null -Editor/styles/sub_inspector_property_bg7 = null -Editor/styles/sub_inspector_property_bg8 = null -Editor/styles/sub_inspector_property_bg9 = null -Editor/styles/sub_inspector_property_bg_selected0 = null -Editor/styles/sub_inspector_property_bg_selected1 = null -Editor/styles/sub_inspector_property_bg_selected10 = null -Editor/styles/sub_inspector_property_bg_selected11 = null -Editor/styles/sub_inspector_property_bg_selected12 = null -Editor/styles/sub_inspector_property_bg_selected13 = null -Editor/styles/sub_inspector_property_bg_selected14 = null -Editor/styles/sub_inspector_property_bg_selected15 = null -Editor/styles/sub_inspector_property_bg_selected2 = null -Editor/styles/sub_inspector_property_bg_selected3 = null -Editor/styles/sub_inspector_property_bg_selected4 = null -Editor/styles/sub_inspector_property_bg_selected5 = null -Editor/styles/sub_inspector_property_bg_selected6 = null -Editor/styles/sub_inspector_property_bg_selected7 = null -Editor/styles/sub_inspector_property_bg_selected8 = null -Editor/styles/sub_inspector_property_bg_selected9 = null -EditorAbout/styles/panel = null -EditorFonts/fonts/bold = null -EditorFonts/fonts/doc = null -EditorFonts/fonts/doc_bold = null -EditorFonts/fonts/doc_source = null -EditorFonts/fonts/doc_title = null -EditorFonts/fonts/expression = null -EditorFonts/fonts/main = null -EditorFonts/fonts/output_source = null -EditorFonts/fonts/rotation_control = null -EditorFonts/fonts/rulers = null -EditorFonts/fonts/source = null -EditorFonts/fonts/status_source = null -EditorFonts/fonts/title = null -EditorHelp/colors/headline_color = Color( 0, 0, 0, 1 ) -EditorIcons/icons/2D = null -EditorIcons/icons/3D = null -EditorIcons/icons/AABB = null -EditorIcons/icons/ARVRAnchor = null -EditorIcons/icons/ARVRCamera = null -EditorIcons/icons/ARVRController = null -EditorIcons/icons/ARVROrigin = null -EditorIcons/icons/AcceptDialog = null -EditorIcons/icons/ActionCopy = null -EditorIcons/icons/ActionCut = null -EditorIcons/icons/ActionPaste = null -EditorIcons/icons/Add = null -EditorIcons/icons/AddAtlasTile = null -EditorIcons/icons/AddAutotile = null -EditorIcons/icons/AddSingleTile = null -EditorIcons/icons/AddSplit = null -EditorIcons/icons/Anchor = null -EditorIcons/icons/AnimatedSprite = null -EditorIcons/icons/AnimatedSprite3D = null -EditorIcons/icons/AnimatedTexture = null -EditorIcons/icons/Animation = null -EditorIcons/icons/AnimationFilter = null -EditorIcons/icons/AnimationPlayer = null -EditorIcons/icons/AnimationTrackGroup = null -EditorIcons/icons/AnimationTrackList = null -EditorIcons/icons/AnimationTree = null -EditorIcons/icons/AnimationTreePlayer = null -EditorIcons/icons/Area = null -EditorIcons/icons/Area2D = null -EditorIcons/icons/Array = null -EditorIcons/icons/ArrayMesh = null -EditorIcons/icons/ArrowDown = null -EditorIcons/icons/ArrowLeft = null -EditorIcons/icons/ArrowRight = null -EditorIcons/icons/ArrowUp = null -EditorIcons/icons/AspectRatioContainer = null -EditorIcons/icons/AssetLib = null -EditorIcons/icons/AtlasTexture = null -EditorIcons/icons/AudioBusBypass = null -EditorIcons/icons/AudioBusLayout = null -EditorIcons/icons/AudioBusMute = null -EditorIcons/icons/AudioBusSolo = null -EditorIcons/icons/AudioStreamMP3 = null -EditorIcons/icons/AudioStreamOGGVorbis = null -EditorIcons/icons/AudioStreamPlayer = null -EditorIcons/icons/AudioStreamPlayer2D = null -EditorIcons/icons/AudioStreamPlayer3D = null -EditorIcons/icons/AudioStreamSample = null -EditorIcons/icons/AutoEnd = null -EditorIcons/icons/AutoKey = null -EditorIcons/icons/AutoPlay = null -EditorIcons/icons/AutoTriangle = null -EditorIcons/icons/Back = null -EditorIcons/icons/BackBufferCopy = null -EditorIcons/icons/Bake = null -EditorIcons/icons/BakedLightmap = null -EditorIcons/icons/BakedLightmapData = null -EditorIcons/icons/Basis = null -EditorIcons/icons/BezierHandlesBalanced = null -EditorIcons/icons/BezierHandlesFree = null -EditorIcons/icons/BezierHandlesMirror = null -EditorIcons/icons/BitMap = null -EditorIcons/icons/BitmapFont = null -EditorIcons/icons/Blend = null -EditorIcons/icons/Bone = null -EditorIcons/icons/Bone2D = null -EditorIcons/icons/BoneAttachment = null -EditorIcons/icons/BoneTrack = null -EditorIcons/icons/BoxShape = null -EditorIcons/icons/Bucket = null -EditorIcons/icons/BusVuEmpty = null -EditorIcons/icons/BusVuFrozen = null -EditorIcons/icons/BusVuFull = null -EditorIcons/icons/Button = null -EditorIcons/icons/ButtonGroup = null -EditorIcons/icons/CPUParticles = null -EditorIcons/icons/CPUParticles2D = null -EditorIcons/icons/CSGBox = null -EditorIcons/icons/CSGCapsule = null -EditorIcons/icons/CSGCombiner = null -EditorIcons/icons/CSGCylinder = null -EditorIcons/icons/CSGMesh = null -EditorIcons/icons/CSGPolygon = null -EditorIcons/icons/CSGSphere = null -EditorIcons/icons/CSGTorus = null -EditorIcons/icons/Camera = null -EditorIcons/icons/Camera2D = null -EditorIcons/icons/CameraTexture = null -EditorIcons/icons/CanvasItem = null -EditorIcons/icons/CanvasItemMaterial = null -EditorIcons/icons/CanvasItemShader = null -EditorIcons/icons/CanvasItemShaderGraph = null -EditorIcons/icons/CanvasLayer = null -EditorIcons/icons/CanvasModulate = null -EditorIcons/icons/CapsuleMesh = null -EditorIcons/icons/CapsuleShape = null -EditorIcons/icons/CapsuleShape2D = null -EditorIcons/icons/CenterContainer = null -EditorIcons/icons/CheckBox = null -EditorIcons/icons/CheckButton = null -EditorIcons/icons/Checkerboard = null -EditorIcons/icons/CircleShape2D = null -EditorIcons/icons/ClassList = null -EditorIcons/icons/Clear = null -EditorIcons/icons/ClippedCamera = null -EditorIcons/icons/Close = null -EditorIcons/icons/Collapse = null -EditorIcons/icons/CollisionPolygon = null -EditorIcons/icons/CollisionPolygon2D = null -EditorIcons/icons/CollisionShape = null -EditorIcons/icons/CollisionShape2D = null -EditorIcons/icons/Color = null -EditorIcons/icons/ColorPick = null -EditorIcons/icons/ColorPicker = null -EditorIcons/icons/ColorPickerButton = null -EditorIcons/icons/ColorRamp = null -EditorIcons/icons/ColorRect = null -EditorIcons/icons/ColorTrackVu = null -EditorIcons/icons/ConcavePolygonShape = null -EditorIcons/icons/ConcavePolygonShape2D = null -EditorIcons/icons/ConeTwistJoint = null -EditorIcons/icons/ConfirmationDialog = null -EditorIcons/icons/Container = null -EditorIcons/icons/Control = null -EditorIcons/icons/ControlAlignBottomCenter = null -EditorIcons/icons/ControlAlignBottomLeft = null -EditorIcons/icons/ControlAlignBottomRight = null -EditorIcons/icons/ControlAlignBottomWide = null -EditorIcons/icons/ControlAlignCenter = null -EditorIcons/icons/ControlAlignCenterLeft = null -EditorIcons/icons/ControlAlignCenterRight = null -EditorIcons/icons/ControlAlignLeftCenter = null -EditorIcons/icons/ControlAlignLeftWide = null -EditorIcons/icons/ControlAlignRightCenter = null -EditorIcons/icons/ControlAlignRightWide = null -EditorIcons/icons/ControlAlignTopCenter = null -EditorIcons/icons/ControlAlignTopLeft = null -EditorIcons/icons/ControlAlignTopRight = null -EditorIcons/icons/ControlAlignTopWide = null -EditorIcons/icons/ControlAlignWide = null -EditorIcons/icons/ControlHcenterWide = null -EditorIcons/icons/ControlLayout = null -EditorIcons/icons/ControlVcenterWide = null -EditorIcons/icons/ConvexPolygonShape = null -EditorIcons/icons/ConvexPolygonShape2D = null -EditorIcons/icons/CopyNodePath = null -EditorIcons/icons/CreateNewSceneFrom = null -EditorIcons/icons/CryptoKey = null -EditorIcons/icons/CubeMap = null -EditorIcons/icons/CubeMesh = null -EditorIcons/icons/Curve = null -EditorIcons/icons/Curve2D = null -EditorIcons/icons/Curve3D = null -EditorIcons/icons/CurveClose = null -EditorIcons/icons/CurveConstant = null -EditorIcons/icons/CurveCreate = null -EditorIcons/icons/CurveCurve = null -EditorIcons/icons/CurveDelete = null -EditorIcons/icons/CurveEdit = null -EditorIcons/icons/CurveIn = null -EditorIcons/icons/CurveInOut = null -EditorIcons/icons/CurveLinear = null -EditorIcons/icons/CurveOut = null -EditorIcons/icons/CurveOutIn = null -EditorIcons/icons/CurveTexture = null -EditorIcons/icons/CylinderMesh = null -EditorIcons/icons/CylinderShape = null -EditorIcons/icons/DampedSpringJoint2D = null -EditorIcons/icons/Debug = null -EditorIcons/icons/DebugContinue = null -EditorIcons/icons/DebugNext = null -EditorIcons/icons/DebugSkipBreakpointsOff = null -EditorIcons/icons/DebugSkipBreakpointsOn = null -EditorIcons/icons/DebugStep = null -EditorIcons/icons/DefaultProjectIcon = null -EditorIcons/icons/DeleteSplit = null -EditorIcons/icons/Dictionary = null -EditorIcons/icons/DirectionalLight = null -EditorIcons/icons/DistractionFree = null -EditorIcons/icons/Duplicate = null -EditorIcons/icons/DynamicFont = null -EditorIcons/icons/DynamicFontData = null -EditorIcons/icons/Edit = null -EditorIcons/icons/EditBezier = null -EditorIcons/icons/EditInternal = null -EditorIcons/icons/EditKey = null -EditorIcons/icons/EditPivot = null -EditorIcons/icons/EditResource = null -EditorIcons/icons/Editor3DHandle = null -EditorIcons/icons/EditorControlAnchor = null -EditorIcons/icons/EditorCurveHandle = null -EditorIcons/icons/EditorHandle = null -EditorIcons/icons/EditorHandleAdd = null -EditorIcons/icons/EditorInternalHandle = null -EditorIcons/icons/EditorPathSharpHandle = null -EditorIcons/icons/EditorPathSmoothHandle = null -EditorIcons/icons/EditorPivot = null -EditorIcons/icons/EditorPlugin = null -EditorIcons/icons/EditorPosition = null -EditorIcons/icons/EditorPositionPrevious = null -EditorIcons/icons/EditorPositionUnselected = null -EditorIcons/icons/Enum = null -EditorIcons/icons/Environment = null -EditorIcons/icons/Error = null -EditorIcons/icons/ErrorSign = null -EditorIcons/icons/ErrorWarning = null -EditorIcons/icons/ExpandBottomDock = null -EditorIcons/icons/Favorites = null -EditorIcons/icons/File = null -EditorIcons/icons/FileBigThumb = null -EditorIcons/icons/FileBroken = null -EditorIcons/icons/FileBrokenBigThumb = null -EditorIcons/icons/FileDead = null -EditorIcons/icons/FileDeadBigThumb = null -EditorIcons/icons/FileDeadMediumThumb = null -EditorIcons/icons/FileDialog = null -EditorIcons/icons/FileList = null -EditorIcons/icons/FileMediumThumb = null -EditorIcons/icons/FileThumbnail = null -EditorIcons/icons/Filesystem = null -EditorIcons/icons/FixedMaterial = null -EditorIcons/icons/FixedSpatialMaterial = null -EditorIcons/icons/Folder = null -EditorIcons/icons/FolderBigThumb = null -EditorIcons/icons/FolderMediumThumb = null -EditorIcons/icons/Font = null -EditorIcons/icons/Forward = null -EditorIcons/icons/GDNativeLibrary = null -EditorIcons/icons/GDScript = null -EditorIcons/icons/GIProbe = null -EditorIcons/icons/GIProbeData = null -EditorIcons/icons/Generic6DOFJoint = null -EditorIcons/icons/GizmoBakedLightmap = null -EditorIcons/icons/GizmoCPUParticles = null -EditorIcons/icons/GizmoCamera = null -EditorIcons/icons/GizmoDirectionalLight = null -EditorIcons/icons/GizmoGIProbe = null -EditorIcons/icons/GizmoLight = null -EditorIcons/icons/GizmoListener = null -EditorIcons/icons/GizmoParticles = null -EditorIcons/icons/GizmoReflectionProbe = null -EditorIcons/icons/GizmoSpatialSamplePlayer = null -EditorIcons/icons/GizmoSpatialStreamPlayer = null -EditorIcons/icons/GizmoSpotLight = null -EditorIcons/icons/Godot = null -EditorIcons/icons/GodotDocs = null -EditorIcons/icons/Gradient = null -EditorIcons/icons/GradientTexture = null -EditorIcons/icons/GraphEdit = null -EditorIcons/icons/GraphNode = null -EditorIcons/icons/Grid = null -EditorIcons/icons/GridContainer = null -EditorIcons/icons/GridMap = null -EditorIcons/icons/GridMinimap = null -EditorIcons/icons/GrooveJoint2D = null -EditorIcons/icons/Group = null -EditorIcons/icons/GroupViewport = null -EditorIcons/icons/Groups = null -EditorIcons/icons/GuiChecked = null -EditorIcons/icons/GuiClose = null -EditorIcons/icons/GuiCloseCustomizable = null -EditorIcons/icons/GuiDropdown = null -EditorIcons/icons/GuiEllipsis = null -EditorIcons/icons/GuiGraphNodePort = null -EditorIcons/icons/GuiHTick = null -EditorIcons/icons/GuiHsplitter = null -EditorIcons/icons/GuiMiniCheckerboard = null -EditorIcons/icons/GuiOptionArrow = null -EditorIcons/icons/GuiProgressBar = null -EditorIcons/icons/GuiProgressFill = null -EditorIcons/icons/GuiRadioChecked = null -EditorIcons/icons/GuiRadioUnchecked = null -EditorIcons/icons/GuiResizer = null -EditorIcons/icons/GuiScrollArrowLeft = null -EditorIcons/icons/GuiScrollArrowLeftHl = null -EditorIcons/icons/GuiScrollArrowRight = null -EditorIcons/icons/GuiScrollArrowRightHl = null -EditorIcons/icons/GuiScrollBg = null -EditorIcons/icons/GuiScrollGrabber = null -EditorIcons/icons/GuiScrollGrabberHl = null -EditorIcons/icons/GuiScrollGrabberPressed = null -EditorIcons/icons/GuiSliderGrabber = null -EditorIcons/icons/GuiSliderGrabberHl = null -EditorIcons/icons/GuiSpace = null -EditorIcons/icons/GuiSpinboxUpdown = null -EditorIcons/icons/GuiTab = null -EditorIcons/icons/GuiTabMenu = null -EditorIcons/icons/GuiTabMenuHl = null -EditorIcons/icons/GuiToggleOff = null -EditorIcons/icons/GuiToggleOn = null -EditorIcons/icons/GuiTreeArrowDown = null -EditorIcons/icons/GuiTreeArrowRight = null -EditorIcons/icons/GuiTreeArrowUp = null -EditorIcons/icons/GuiTreeUpdown = null -EditorIcons/icons/GuiUnchecked = null -EditorIcons/icons/GuiVTick = null -EditorIcons/icons/GuiViewportHdiagsplitter = null -EditorIcons/icons/GuiViewportVdiagsplitter = null -EditorIcons/icons/GuiViewportVhsplitter = null -EditorIcons/icons/GuiVisibilityHidden = null -EditorIcons/icons/GuiVisibilityVisible = null -EditorIcons/icons/GuiVisibilityXray = null -EditorIcons/icons/GuiVsplitBg = null -EditorIcons/icons/GuiVsplitter = null -EditorIcons/icons/HBoxContainer = null -EditorIcons/icons/HScrollBar = null -EditorIcons/icons/HSeparator = null -EditorIcons/icons/HSlider = null -EditorIcons/icons/HSplitContainer = null -EditorIcons/icons/HTTPRequest = null -EditorIcons/icons/Headphones = null -EditorIcons/icons/Heart = null -EditorIcons/icons/HeightMapShape = null -EditorIcons/icons/Help = null -EditorIcons/icons/HelpSearch = null -EditorIcons/icons/HingeJoint = null -EditorIcons/icons/History = null -EditorIcons/icons/Hsize = null -EditorIcons/icons/Image = null -EditorIcons/icons/ImageTexture = null -EditorIcons/icons/ImmediateGeometry = null -EditorIcons/icons/ImportCheck = null -EditorIcons/icons/ImportFail = null -EditorIcons/icons/InformationSign = null -EditorIcons/icons/InsertAfter = null -EditorIcons/icons/InsertBefore = null -EditorIcons/icons/Instance = null -EditorIcons/icons/InstanceOptions = null -EditorIcons/icons/InterpCubic = null -EditorIcons/icons/InterpLinear = null -EditorIcons/icons/InterpRaw = null -EditorIcons/icons/InterpWrapClamp = null -EditorIcons/icons/InterpWrapLoop = null -EditorIcons/icons/InterpolatedCamera = null -EditorIcons/icons/InverseKinematics = null -EditorIcons/icons/Issue = null -EditorIcons/icons/ItemList = null -EditorIcons/icons/JoyAxis = null -EditorIcons/icons/JoyButton = null -EditorIcons/icons/Joypad = null -EditorIcons/icons/Key = null -EditorIcons/icons/KeyAnimation = null -EditorIcons/icons/KeyAudio = null -EditorIcons/icons/KeyBezier = null -EditorIcons/icons/KeyBezierHandle = null -EditorIcons/icons/KeyBezierPoint = null -EditorIcons/icons/KeyBezierSelected = null -EditorIcons/icons/KeyCall = null -EditorIcons/icons/KeyHover = null -EditorIcons/icons/KeyInvalid = null -EditorIcons/icons/KeyNext = null -EditorIcons/icons/KeyPosition = null -EditorIcons/icons/KeyRotation = null -EditorIcons/icons/KeyScale = null -EditorIcons/icons/KeySelected = null -EditorIcons/icons/KeyValue = null -EditorIcons/icons/KeyXform = null -EditorIcons/icons/Keyboard = null -EditorIcons/icons/KinematicBody = null -EditorIcons/icons/KinematicBody2D = null -EditorIcons/icons/Label = null -EditorIcons/icons/LargeTexture = null -EditorIcons/icons/Light2D = null -EditorIcons/icons/LightOccluder2D = null -EditorIcons/icons/Line2D = null -EditorIcons/icons/LineEdit = null -EditorIcons/icons/LineShape2D = null -EditorIcons/icons/LinkButton = null -EditorIcons/icons/ListSelect = null -EditorIcons/icons/Listener = null -EditorIcons/icons/Load = null -EditorIcons/icons/Lock = null -EditorIcons/icons/LockViewport = null -EditorIcons/icons/Logo = null -EditorIcons/icons/Loop = null -EditorIcons/icons/LoopInterpolation = null -EditorIcons/icons/MainPlay = null -EditorIcons/icons/MarginContainer = null -EditorIcons/icons/MatchCase = null -EditorIcons/icons/MaterialPreviewCube = null -EditorIcons/icons/MaterialPreviewCubeOff = null -EditorIcons/icons/MaterialPreviewLight1 = null -EditorIcons/icons/MaterialPreviewLight1Off = null -EditorIcons/icons/MaterialPreviewLight2 = null -EditorIcons/icons/MaterialPreviewLight2Off = null -EditorIcons/icons/MaterialPreviewSphere = null -EditorIcons/icons/MaterialPreviewSphereOff = null -EditorIcons/icons/MemberConstant = null -EditorIcons/icons/MemberMethod = null -EditorIcons/icons/MemberProperty = null -EditorIcons/icons/MemberSignal = null -EditorIcons/icons/MemberTheme = null -EditorIcons/icons/MenuButton = null -EditorIcons/icons/Mesh = null -EditorIcons/icons/MeshInstance = null -EditorIcons/icons/MeshInstance2D = null -EditorIcons/icons/MeshLibrary = null -EditorIcons/icons/MeshTexture = null -EditorIcons/icons/MiniObject = null -EditorIcons/icons/MirrorX = null -EditorIcons/icons/MirrorY = null -EditorIcons/icons/Mouse = null -EditorIcons/icons/MoveDown = null -EditorIcons/icons/MoveLeft = null -EditorIcons/icons/MovePoint = null -EditorIcons/icons/MoveRight = null -EditorIcons/icons/MoveUp = null -EditorIcons/icons/MultiEdit = null -EditorIcons/icons/MultiLine = null -EditorIcons/icons/MultiMesh = null -EditorIcons/icons/MultiMeshInstance = null -EditorIcons/icons/MultiMeshInstance2D = null -EditorIcons/icons/NativeScript = null -EditorIcons/icons/Navigation = null -EditorIcons/icons/Navigation2D = null -EditorIcons/icons/NavigationMesh = null -EditorIcons/icons/NavigationMeshInstance = null -EditorIcons/icons/NavigationPolygon = null -EditorIcons/icons/NavigationPolygonInstance = null -EditorIcons/icons/New = null -EditorIcons/icons/NewRoot = null -EditorIcons/icons/Nil = null -EditorIcons/icons/NinePatchRect = null -EditorIcons/icons/Node = null -EditorIcons/icons/Node2D = null -EditorIcons/icons/NodePath = null -EditorIcons/icons/NodeWarning = null -EditorIcons/icons/NoiseTexture = null -EditorIcons/icons/NonFavorite = null -EditorIcons/icons/Object = null -EditorIcons/icons/OccluderPolygon2D = null -EditorIcons/icons/OmniLight = null -EditorIcons/icons/Onion = null -EditorIcons/icons/OptionButton = null -EditorIcons/icons/OverbrightIndicator = null -EditorIcons/icons/Override = null -EditorIcons/icons/PackedDataContainer = null -EditorIcons/icons/PackedScene = null -EditorIcons/icons/Panel = null -EditorIcons/icons/PanelContainer = null -EditorIcons/icons/Panels1 = null -EditorIcons/icons/Panels2 = null -EditorIcons/icons/Panels2Alt = null -EditorIcons/icons/Panels3 = null -EditorIcons/icons/Panels3Alt = null -EditorIcons/icons/Panels4 = null -EditorIcons/icons/PanoramaSky = null -EditorIcons/icons/ParallaxBackground = null -EditorIcons/icons/ParallaxLayer = null -EditorIcons/icons/ParticleAttractor2D = null -EditorIcons/icons/Particles = null -EditorIcons/icons/Particles2D = null -EditorIcons/icons/ParticlesMaterial = null -EditorIcons/icons/Path = null -EditorIcons/icons/Path2D = null -EditorIcons/icons/PathFollow = null -EditorIcons/icons/PathFollow2D = null -EditorIcons/icons/Pause = null -EditorIcons/icons/PhysicalBone = null -EditorIcons/icons/Pin = null -EditorIcons/icons/PinJoint = null -EditorIcons/icons/PinJoint2D = null -EditorIcons/icons/PinPressed = null -EditorIcons/icons/Plane = null -EditorIcons/icons/PlaneMesh = null -EditorIcons/icons/PlaneShape = null -EditorIcons/icons/Play = null -EditorIcons/icons/PlayBackwards = null -EditorIcons/icons/PlayCustom = null -EditorIcons/icons/PlayOverlay = null -EditorIcons/icons/PlayScene = null -EditorIcons/icons/PlayStart = null -EditorIcons/icons/PlayStartBackwards = null -EditorIcons/icons/PlayTravel = null -EditorIcons/icons/PluginScript = null -EditorIcons/icons/PointMesh = null -EditorIcons/icons/Polygon2D = null -EditorIcons/icons/PolygonPathFinder = null -EditorIcons/icons/PoolByteArray = null -EditorIcons/icons/PoolColorArray = null -EditorIcons/icons/PoolIntArray = null -EditorIcons/icons/PoolRealArray = null -EditorIcons/icons/PoolStringArray = null -EditorIcons/icons/PoolVector2Array = null -EditorIcons/icons/PoolVector3Array = null -EditorIcons/icons/Popup = null -EditorIcons/icons/PopupDialog = null -EditorIcons/icons/PopupMenu = null -EditorIcons/icons/PopupPanel = null -EditorIcons/icons/Portal = null -EditorIcons/icons/Position2D = null -EditorIcons/icons/Position3D = null -EditorIcons/icons/PrismMesh = null -EditorIcons/icons/ProceduralSky = null -EditorIcons/icons/Progress1 = null -EditorIcons/icons/Progress2 = null -EditorIcons/icons/Progress3 = null -EditorIcons/icons/Progress4 = null -EditorIcons/icons/Progress5 = null -EditorIcons/icons/Progress6 = null -EditorIcons/icons/Progress7 = null -EditorIcons/icons/Progress8 = null -EditorIcons/icons/ProgressBar = null -EditorIcons/icons/ProjectIconLoading = null -EditorIcons/icons/ProximityGroup = null -EditorIcons/icons/ProxyTexture = null -EditorIcons/icons/Quad = null -EditorIcons/icons/QuadMesh = null -EditorIcons/icons/Quat = null -EditorIcons/icons/RID = null -EditorIcons/icons/RayCast = null -EditorIcons/icons/RayCast2D = null -EditorIcons/icons/RayShape = null -EditorIcons/icons/RayShape2D = null -EditorIcons/icons/Rayito = null -EditorIcons/icons/Rect2 = null -EditorIcons/icons/RectangleShape2D = null -EditorIcons/icons/ReferenceRect = null -EditorIcons/icons/ReflectionProbe = null -EditorIcons/icons/RegionEdit = null -EditorIcons/icons/Reload = null -EditorIcons/icons/ReloadSmall = null -EditorIcons/icons/RemoteTransform = null -EditorIcons/icons/RemoteTransform2D = null -EditorIcons/icons/Remove = null -EditorIcons/icons/RemoveInternal = null -EditorIcons/icons/Rename = null -EditorIcons/icons/Reparent = null -EditorIcons/icons/ReparentToNewNode = null -EditorIcons/icons/ResourcePreloader = null -EditorIcons/icons/RichTextEffect = null -EditorIcons/icons/RichTextLabel = null -EditorIcons/icons/RigidBody = null -EditorIcons/icons/RigidBody2D = null -EditorIcons/icons/Room = null -EditorIcons/icons/RoomBounds = null -EditorIcons/icons/RootMotionView = null -EditorIcons/icons/Rotate0 = null -EditorIcons/icons/Rotate180 = null -EditorIcons/icons/Rotate270 = null -EditorIcons/icons/Rotate90 = null -EditorIcons/icons/RotateLeft = null -EditorIcons/icons/RotateRight = null -EditorIcons/icons/Ruler = null -EditorIcons/icons/SampleLibrary = null -EditorIcons/icons/Save = null -EditorIcons/icons/Script = null -EditorIcons/icons/ScriptCreate = null -EditorIcons/icons/ScriptCreateDialog = null -EditorIcons/icons/ScriptExtend = null -EditorIcons/icons/ScriptRemove = null -EditorIcons/icons/ScrollContainer = null -EditorIcons/icons/Search = null -EditorIcons/icons/SegmentShape2D = null -EditorIcons/icons/Shader = null -EditorIcons/icons/ShaderMaterial = null -EditorIcons/icons/ShortCut = null -EditorIcons/icons/Signal = null -EditorIcons/icons/Signals = null -EditorIcons/icons/SignalsAndGroups = null -EditorIcons/icons/Skeleton = null -EditorIcons/icons/Skeleton2D = null -EditorIcons/icons/SkeletonIK = null -EditorIcons/icons/SliderJoint = null -EditorIcons/icons/Slot = null -EditorIcons/icons/Snap = null -EditorIcons/icons/SnapGrid = null -EditorIcons/icons/SoftBody = null -EditorIcons/icons/Sort = null -EditorIcons/icons/Spatial = null -EditorIcons/icons/SpatialMaterial = null -EditorIcons/icons/SphereMesh = null -EditorIcons/icons/SphereShape = null -EditorIcons/icons/SpinBox = null -EditorIcons/icons/SpotLight = null -EditorIcons/icons/SpringArm = null -EditorIcons/icons/Sprite = null -EditorIcons/icons/Sprite3D = null -EditorIcons/icons/SpriteFrames = null -EditorIcons/icons/SpriteSheet = null -EditorIcons/icons/StaticBody = null -EditorIcons/icons/StaticBody2D = null -EditorIcons/icons/StatusError = null -EditorIcons/icons/StatusSuccess = null -EditorIcons/icons/StatusWarning = null -EditorIcons/icons/Stop = null -EditorIcons/icons/StreamTexture = null -EditorIcons/icons/String = null -EditorIcons/icons/StyleBoxEmpty = null -EditorIcons/icons/StyleBoxFlat = null -EditorIcons/icons/StyleBoxLine = null -EditorIcons/icons/StyleBoxTexture = null -EditorIcons/icons/TabContainer = null -EditorIcons/icons/Tabs = null -EditorIcons/icons/TestCube = null -EditorIcons/icons/TextEdit = null -EditorIcons/icons/TextFile = null -EditorIcons/icons/Texture3D = null -EditorIcons/icons/TextureArray = null -EditorIcons/icons/TextureButton = null -EditorIcons/icons/TextureProgress = null -EditorIcons/icons/TextureRect = null -EditorIcons/icons/Theme = null -EditorIcons/icons/ThumbnailWait = null -EditorIcons/icons/TileMap = null -EditorIcons/icons/TileSet = null -EditorIcons/icons/Time = null -EditorIcons/icons/TimelineIndicator = null -EditorIcons/icons/Timer = null -EditorIcons/icons/ToolAddNode = null -EditorIcons/icons/ToolButton = null -EditorIcons/icons/ToolConnect = null -EditorIcons/icons/ToolMove = null -EditorIcons/icons/ToolPan = null -EditorIcons/icons/ToolRotate = null -EditorIcons/icons/ToolScale = null -EditorIcons/icons/ToolSelect = null -EditorIcons/icons/ToolTriangle = null -EditorIcons/icons/Tools = null -EditorIcons/icons/TouchScreenButton = null -EditorIcons/icons/TrackAddKey = null -EditorIcons/icons/TrackAddKeyHl = null -EditorIcons/icons/TrackCapture = null -EditorIcons/icons/TrackContinuous = null -EditorIcons/icons/TrackDiscrete = null -EditorIcons/icons/TrackTrigger = null -EditorIcons/icons/Transform = null -EditorIcons/icons/Transform2D = null -EditorIcons/icons/TransitionEnd = null -EditorIcons/icons/TransitionEndAuto = null -EditorIcons/icons/TransitionEndAutoBig = null -EditorIcons/icons/TransitionEndBig = null -EditorIcons/icons/TransitionImmediate = null -EditorIcons/icons/TransitionImmediateAuto = null -EditorIcons/icons/TransitionImmediateAutoBig = null -EditorIcons/icons/TransitionImmediateBig = null -EditorIcons/icons/TransitionSync = null -EditorIcons/icons/TransitionSyncAuto = null -EditorIcons/icons/TransitionSyncAutoBig = null -EditorIcons/icons/TransitionSyncBig = null -EditorIcons/icons/Translation = null -EditorIcons/icons/Transpose = null -EditorIcons/icons/Tree = null -EditorIcons/icons/Tween = null -EditorIcons/icons/Unbone = null -EditorIcons/icons/Ungroup = null -EditorIcons/icons/Unlock = null -EditorIcons/icons/Uv = null -EditorIcons/icons/VBoxContainer = null -EditorIcons/icons/VScrollBar = null -EditorIcons/icons/VSeparator = null -EditorIcons/icons/VSlider = null -EditorIcons/icons/VSplitContainer = null -EditorIcons/icons/Variant = null -EditorIcons/icons/Vector2 = null -EditorIcons/icons/Vector3 = null -EditorIcons/icons/VehicleBody = null -EditorIcons/icons/VehicleWheel = null -EditorIcons/icons/VideoPlayer = null -EditorIcons/icons/Viewport = null -EditorIcons/icons/ViewportContainer = null -EditorIcons/icons/ViewportSpeed = null -EditorIcons/icons/ViewportTexture = null -EditorIcons/icons/ViewportZoom = null -EditorIcons/icons/VisibilityEnabler = null -EditorIcons/icons/VisibilityEnabler2D = null -EditorIcons/icons/VisibilityNotifier = null -EditorIcons/icons/VisibilityNotifier2D = null -EditorIcons/icons/VisualScript = null -EditorIcons/icons/VisualShader = null -EditorIcons/icons/VisualShaderPort = null -EditorIcons/icons/Warning = null -EditorIcons/icons/WindowDialog = null -EditorIcons/icons/World = null -EditorIcons/icons/World2D = null -EditorIcons/icons/WorldEnvironment = null -EditorIcons/icons/X509Certificate = null -EditorIcons/icons/YSort = null -EditorIcons/icons/Zoom = null -EditorIcons/icons/ZoomLess = null -EditorIcons/icons/ZoomMore = null -EditorIcons/icons/ZoomReset = null -EditorIcons/icons/bool = null -EditorIcons/icons/float = null -EditorIcons/icons/int = null -EditorProperty/colors/error_color = Color( 0, 0, 0, 1 ) -EditorProperty/colors/property_color = Color( 0, 0, 0, 1 ) -EditorProperty/constants/font_offset = 1 -EditorProperty/constants/vseparation = 4 -EditorProperty/styles/bg = null -EditorProperty/styles/bg_selected = null -EditorSettingsDialog/styles/panel = null -EditorStyles/styles/Background = null -EditorStyles/styles/BottomPanelDebuggerOverride = null -EditorStyles/styles/Content = null -EditorStyles/styles/DebuggerPanel = null -EditorStyles/styles/DebuggerTabBG = null -EditorStyles/styles/DebuggerTabFG = null -EditorStyles/styles/Focus = null -EditorStyles/styles/Information3dViewport = null -EditorStyles/styles/MenuHover = null -EditorStyles/styles/MenuPanel = null -EditorStyles/styles/PlayButtonPanel = null -EditorStyles/styles/SceneTabBG = null -EditorStyles/styles/SceneTabFG = null -EditorStyles/styles/ScriptEditor = null -EditorStyles/styles/ScriptEditorPanel = null -FileDialog/colors/file_icon_modulate = Color( 0, 0, 0, 1 ) -FileDialog/colors/files_disabled = Color( 0, 0, 0, 1 ) -FileDialog/colors/folder_icon_modulate = Color( 0, 0, 0, 1 ) -FileDialog/icons/file = null -FileDialog/icons/folder = null -FileDialog/icons/parent_folder = null -FileDialog/icons/reload = null -FileDialog/icons/toggle_hidden = null -Fonts/fonts/large = null -Fonts/fonts/normal = null -GraphEdit/colors/activity = Color( 0, 0, 0, 1 ) -GraphEdit/colors/grid_major = Color( 0, 0, 0, 1 ) -GraphEdit/colors/grid_minor = Color( 0, 0, 0, 1 ) -GraphEdit/colors/selection_fill = Color( 0, 0, 0, 1 ) -GraphEdit/colors/selection_stroke = Color( 0, 0, 0, 1 ) -GraphEdit/constants/bezier_len_neg = 160 -GraphEdit/constants/bezier_len_pos = 80 -GraphEdit/constants/port_grab_distance_horizontal = 48 -GraphEdit/constants/port_grab_distance_vertical = 6 -GraphEdit/icons/minimap = null -GraphEdit/icons/minus = null -GraphEdit/icons/more = null -GraphEdit/icons/reset = null -GraphEdit/icons/snap = null -GraphEdit/styles/bg = null -GraphEditMinimap/colors/resizer_color = Color( 0, 0, 0, 1 ) -GraphEditMinimap/icons/resizer = null -GraphEditMinimap/styles/bg = null -GraphEditMinimap/styles/camera = null -GraphEditMinimap/styles/node = null -GraphNode/colors/close_color = Color( 0, 0, 0, 1 ) -GraphNode/colors/resizer_color = Color( 0, 0, 0, 1 ) -GraphNode/colors/title_color = Color( 0, 0, 0, 1 ) -GraphNode/constants/close_h_offset = 20 -GraphNode/constants/close_offset = 18 -GraphNode/constants/port_offset = 3 -GraphNode/constants/separation = 1 -GraphNode/constants/title_h_offset = -16 -GraphNode/constants/title_offset = 20 -GraphNode/fonts/title_font = null -GraphNode/icons/close = null -GraphNode/icons/port = null -GraphNode/icons/resizer = null -GraphNode/styles/breakpoint = null -GraphNode/styles/comment = null -GraphNode/styles/commentfocus = null -GraphNode/styles/defaultfocus = null -GraphNode/styles/defaultframe = null -GraphNode/styles/frame = null -GraphNode/styles/position = null -GraphNode/styles/selectedframe = null -GraphNode/styles/state_machine_frame = null -GraphNode/styles/state_machine_selectedframe = null -GridContainer/constants/hseparation = 4 -GridContainer/constants/vseparation = 4 -HBoxContainer/constants/separation = 4 -HScrollBar/icons/decrement = null -HScrollBar/icons/decrement_highlight = null -HScrollBar/icons/increment = null -HScrollBar/icons/increment_highlight = null -HScrollBar/styles/grabber = null -HScrollBar/styles/grabber_highlight = null -HScrollBar/styles/grabber_pressed = null -HScrollBar/styles/scroll = null -HScrollBar/styles/scroll_focus = null -HSeparator/constants/separation = 4 -HSeparator/styles/separator = null -HSlider/icons/grabber = null -HSlider/icons/grabber_disabled = null -HSlider/icons/grabber_highlight = null -HSlider/icons/tick = null -HSlider/styles/grabber_area = null -HSlider/styles/grabber_area_highlight = null -HSlider/styles/slider = null -HSplitContainer/constants/autohide = 1 -HSplitContainer/constants/separation = 12 -HSplitContainer/icons/grabber = null -HSplitContainer/styles/bg = null -Icons/icons/close = null -ItemList/colors/font_color = Color( 0, 0, 0, 1 ) -ItemList/colors/font_color_selected = Color( 0, 0, 0, 1 ) -ItemList/colors/guide_color = Color( 0, 0, 0, 1 ) -ItemList/constants/hseparation = 4 -ItemList/constants/icon_margin = 4 -ItemList/constants/line_separation = 2 -ItemList/constants/vseparation = 2 -ItemList/fonts/font = null -ItemList/styles/bg = null -ItemList/styles/bg_focus = null -ItemList/styles/cursor = null -ItemList/styles/cursor_unfocused = null -ItemList/styles/selected = null -ItemList/styles/selected_focus = null -Label/colors/font_color = Color( 0, 0, 0, 1 ) -Label/colors/font_color_shadow = Color( 0, 0, 0, 1 ) -Label/colors/font_outline_modulate = Color( 0, 0, 0, 1 ) -Label/constants/line_spacing = 3 -Label/constants/shadow_as_outline = 0 -Label/constants/shadow_offset_x = 1 -Label/constants/shadow_offset_y = 1 -Label/fonts/font = null -Label/styles/normal = null -LineEdit/colors/clear_button_color = Color( 0, 0, 0, 1 ) -LineEdit/colors/clear_button_color_pressed = Color( 0, 0, 0, 1 ) -LineEdit/colors/cursor_color = Color( 0, 0, 0, 1 ) -LineEdit/colors/font_color = Color( 0, 0, 0, 1 ) -LineEdit/colors/font_color_selected = Color( 0, 0, 0, 1 ) -LineEdit/colors/font_color_uneditable = Color( 0, 0, 0, 1 ) -LineEdit/colors/read_only = Color( 0, 0, 0, 1 ) -LineEdit/colors/selection_color = Color( 0, 0, 0, 1 ) -LineEdit/constants/minimum_spaces = 12 -LineEdit/fonts/font = null -LineEdit/icons/clear = null -LineEdit/styles/focus = null -LineEdit/styles/normal = null -LineEdit/styles/read_only = null -LinkButton/colors/font_color = Color( 0, 0, 0, 1 ) -LinkButton/colors/font_color_disabled = Color( 0, 0, 0, 1 ) -LinkButton/colors/font_color_hover = Color( 0, 0, 0, 1 ) -LinkButton/colors/font_color_pressed = Color( 0, 0, 0, 1 ) -LinkButton/constants/underline_spacing = 2 -LinkButton/fonts/font = null -LinkButton/styles/focus = null -MarginContainer/constants/margin_bottom = 0 -MarginContainer/constants/margin_left = 0 -MarginContainer/constants/margin_right = 0 -MarginContainer/constants/margin_top = 0 -MenuButton/colors/font_color = Color( 0, 0, 0, 1 ) -MenuButton/colors/font_color_disabled = Color( 0, 0, 0, 1 ) -MenuButton/colors/font_color_hover = Color( 0, 0, 0, 1 ) -MenuButton/colors/font_color_pressed = Color( 0, 0, 0, 1 ) -MenuButton/constants/hseparation = 3 -MenuButton/fonts/font = null -MenuButton/styles/disabled = null -MenuButton/styles/focus = null -MenuButton/styles/hover = null -MenuButton/styles/normal = null -MenuButton/styles/pressed = null -OptionButton/colors/font_color = Color( 0, 0, 0, 1 ) -OptionButton/colors/font_color_disabled = Color( 0, 0, 0, 1 ) -OptionButton/colors/font_color_hover = Color( 0, 0, 0, 1 ) -OptionButton/colors/font_color_pressed = Color( 0, 0, 0, 1 ) -OptionButton/colors/icon_color_hover = Color( 0, 0, 0, 1 ) -OptionButton/constants/arrow_margin = 2 -OptionButton/constants/hseparation = 2 -OptionButton/constants/modulate_arrow = 1 -OptionButton/fonts/font = null -OptionButton/icons/arrow = null -OptionButton/styles/disabled = null -OptionButton/styles/focus = null -OptionButton/styles/hover = null -OptionButton/styles/normal = null -OptionButton/styles/pressed = null -Panel/styles/panel = null -PanelContainer/styles/panel = null -PopupDialog/styles/panel = null -PopupMenu/colors/font_color = Color( 0, 0, 0, 1 ) -PopupMenu/colors/font_color_accel = Color( 0, 0, 0, 1 ) -PopupMenu/colors/font_color_disabled = Color( 0, 0, 0, 1 ) -PopupMenu/colors/font_color_hover = Color( 0, 0, 0, 1 ) -PopupMenu/colors/font_color_separator = Color( 0, 0, 0, 1 ) -PopupMenu/constants/hseparation = 4 -PopupMenu/constants/vseparation = 4 -PopupMenu/fonts/font = null -PopupMenu/icons/checked = null -PopupMenu/icons/radio_checked = null -PopupMenu/icons/radio_unchecked = null -PopupMenu/icons/submenu = null -PopupMenu/icons/unchecked = null -PopupMenu/icons/visibility_hidden = null -PopupMenu/icons/visibility_visible = null -PopupMenu/icons/visibility_xray = null -PopupMenu/styles/disabled = null -PopupMenu/styles/focus = null -PopupMenu/styles/hover = null -PopupMenu/styles/labeled_separator_left = null -PopupMenu/styles/labeled_separator_right = null -PopupMenu/styles/normal = null -PopupMenu/styles/panel = null -PopupMenu/styles/panel_disabled = null -PopupMenu/styles/pressed = null -PopupMenu/styles/separator = null -PopupPanel/styles/panel = null -ProgressBar/colors/font_color = Color( 0, 0, 0, 1 ) -ProgressBar/colors/font_color_shadow = Color( 0, 0, 0, 1 ) -ProgressBar/fonts/font = null -ProgressBar/styles/bg = null -ProgressBar/styles/fg = null -ProjectSettingsEditor/styles/panel = null -RichTextLabel/colors/default_color = Color( 0, 0, 0, 1 ) -RichTextLabel/colors/font_color_selected = Color( 0, 0, 0, 1 ) -RichTextLabel/colors/font_color_shadow = Color( 0, 0, 0, 1 ) -RichTextLabel/colors/selection_color = Color( 0, 0, 0, 1 ) -RichTextLabel/constants/line_separation = 1 -RichTextLabel/constants/shadow_as_outline = 0 -RichTextLabel/constants/shadow_offset_x = 1 -RichTextLabel/constants/shadow_offset_y = 1 -RichTextLabel/constants/table_hseparation = 3 -RichTextLabel/constants/table_vseparation = 3 -RichTextLabel/fonts/bold_font = null -RichTextLabel/fonts/bold_italics_font = null -RichTextLabel/fonts/italics_font = null -RichTextLabel/fonts/mono_font = null -RichTextLabel/fonts/normal_font = null -RichTextLabel/styles/focus = null -RichTextLabel/styles/normal = null -ScrollContainer/styles/bg = null -SpinBox/icons/updown = null -TabContainer/colors/font_color_bg = Color( 0, 0, 0, 1 ) -TabContainer/colors/font_color_disabled = Color( 0, 0, 0, 1 ) -TabContainer/colors/font_color_fg = Color( 0, 0, 0, 1 ) -TabContainer/constants/hseparation = 4 -TabContainer/constants/label_valign_bg = 2 -TabContainer/constants/label_valign_fg = 0 -TabContainer/constants/side_margin = 8 -TabContainer/constants/top_margin = 24 -TabContainer/fonts/font = null -TabContainer/icons/decrement = null -TabContainer/icons/decrement_highlight = null -TabContainer/icons/increment = null -TabContainer/icons/increment_highlight = null -TabContainer/icons/menu = null -TabContainer/icons/menu_highlight = null -TabContainer/styles/panel = null -TabContainer/styles/tab_bg = null -TabContainer/styles/tab_disabled = null -TabContainer/styles/tab_fg = null -Tabs/colors/font_color_bg = Color( 0, 0, 0, 1 ) -Tabs/colors/font_color_disabled = Color( 0, 0, 0, 1 ) -Tabs/colors/font_color_fg = Color( 0, 0, 0, 1 ) -Tabs/constants/hseparation = 4 -Tabs/constants/label_valign_bg = 2 -Tabs/constants/label_valign_fg = 0 -Tabs/constants/top_margin = 24 -Tabs/fonts/font = null -Tabs/icons/close = null -Tabs/icons/decrement = null -Tabs/icons/decrement_highlight = null -Tabs/icons/increment = null -Tabs/icons/increment_highlight = null -Tabs/styles/button = null -Tabs/styles/button_pressed = null -Tabs/styles/panel = null -Tabs/styles/tab_bg = null -Tabs/styles/tab_disabled = null -Tabs/styles/tab_fg = null -TextEdit/colors/background_color = Color( 0, 0, 0, 1 ) -TextEdit/colors/bookmark_color = Color( 0, 0, 0, 1 ) -TextEdit/colors/brace_mismatch_color = Color( 0, 0, 0, 1 ) -TextEdit/colors/breakpoint_color = Color( 0, 0, 0, 1 ) -TextEdit/colors/caret_background_color = Color( 0, 0, 0, 1 ) -TextEdit/colors/caret_color = Color( 0, 0, 0, 1 ) -TextEdit/colors/code_folding_color = Color( 0, 0, 0, 1 ) -TextEdit/colors/completion_background_color = Color( 0, 0, 0, 1 ) -TextEdit/colors/completion_existing_color = Color( 0, 0, 0, 1 ) -TextEdit/colors/completion_font_color = Color( 0, 0, 0, 1 ) -TextEdit/colors/completion_scroll_color = Color( 0, 0, 0, 1 ) -TextEdit/colors/completion_selected_color = Color( 0, 0, 0, 1 ) -TextEdit/colors/current_line_color = Color( 0, 0, 0, 1 ) -TextEdit/colors/executing_line_color = Color( 0, 0, 0, 1 ) -TextEdit/colors/font_color = Color( 0, 0, 0, 1 ) -TextEdit/colors/font_color_readonly = Color( 0, 0, 0, 1 ) -TextEdit/colors/font_color_selected = Color( 0, 0, 0, 1 ) -TextEdit/colors/function_color = Color( 0, 0, 0, 1 ) -TextEdit/colors/line_number_color = Color( 0, 0, 0, 1 ) -TextEdit/colors/mark_color = Color( 0, 0, 0, 1 ) -TextEdit/colors/member_variable_color = Color( 0, 0, 0, 1 ) -TextEdit/colors/number_color = Color( 0, 0, 0, 1 ) -TextEdit/colors/safe_line_number_color = Color( 0, 0, 0, 1 ) -TextEdit/colors/selection_color = Color( 0, 0, 0, 1 ) -TextEdit/colors/symbol_color = Color( 0, 0, 0, 1 ) -TextEdit/colors/word_highlighted_color = Color( 0, 0, 0, 1 ) -TextEdit/constants/completion_lines = 7 -TextEdit/constants/completion_max_width = 50 -TextEdit/constants/completion_scroll_width = 3 -TextEdit/constants/line_spacing = 4 -TextEdit/fonts/font = null -TextEdit/icons/fold = null -TextEdit/icons/folded = null -TextEdit/icons/space = null -TextEdit/icons/tab = null -TextEdit/styles/completion = null -TextEdit/styles/focus = null -TextEdit/styles/normal = null -TextEdit/styles/read_only = null -ToolButton/colors/font_color = Color( 0, 0, 0, 1 ) -ToolButton/colors/font_color_disabled = Color( 0, 0, 0, 1 ) -ToolButton/colors/font_color_hover = Color( 0, 0, 0, 1 ) -ToolButton/colors/font_color_pressed = Color( 0, 0, 0, 1 ) -ToolButton/constants/hseparation = 3 -ToolButton/fonts/font = null -ToolButton/styles/disabled = null -ToolButton/styles/focus = null -ToolButton/styles/hover = null -ToolButton/styles/normal = null -ToolButton/styles/pressed = null -TooltipLabel/colors/font_color = Color( 0, 0, 0, 1 ) -TooltipLabel/colors/font_color_shadow = Color( 0, 0, 0, 1 ) -TooltipLabel/constants/shadow_offset_x = 1 -TooltipLabel/constants/shadow_offset_y = 1 -TooltipLabel/fonts/font = null -TooltipPanel/styles/panel = null -Tree/colors/custom_button_font_highlight = Color( 0, 0, 0, 1 ) -Tree/colors/drop_position_color = Color( 0, 0, 0, 1 ) -Tree/colors/font_color = Color( 0, 0, 0, 1 ) -Tree/colors/font_color_selected = Color( 0, 0, 0, 1 ) -Tree/colors/guide_color = Color( 0, 0, 0, 1 ) -Tree/colors/relationship_line_color = Color( 0, 0, 0, 1 ) -Tree/colors/title_button_color = Color( 0, 0, 0, 1 ) -Tree/constants/button_margin = 4 -Tree/constants/draw_guides = 1 -Tree/constants/draw_relationship_lines = 0 -Tree/constants/hseparation = 4 -Tree/constants/item_margin = 12 -Tree/constants/scroll_border = 4 -Tree/constants/scroll_speed = 12 -Tree/constants/vseparation = 4 -Tree/fonts/font = null -Tree/fonts/title_button_font = null -Tree/icons/arrow = null -Tree/icons/arrow_collapsed = null -Tree/icons/checked = null -Tree/icons/select_arrow = null -Tree/icons/unchecked = null -Tree/icons/updown = null -Tree/styles/bg = null -Tree/styles/bg_focus = null -Tree/styles/button_pressed = null -Tree/styles/cursor = null -Tree/styles/cursor_unfocused = null -Tree/styles/custom_button = null -Tree/styles/custom_button_hover = null -Tree/styles/custom_button_pressed = null -Tree/styles/hover = null -Tree/styles/selected = null -Tree/styles/selected_focus = null -Tree/styles/title_button_hover = null -Tree/styles/title_button_normal = null -Tree/styles/title_button_pressed = null -VBoxContainer/constants/separation = 4 -VScrollBar/icons/decrement = null -VScrollBar/icons/decrement_highlight = null -VScrollBar/icons/increment = null -VScrollBar/icons/increment_highlight = null -VScrollBar/styles/grabber = null -VScrollBar/styles/grabber_highlight = null -VScrollBar/styles/grabber_pressed = null -VScrollBar/styles/scroll = null -VScrollBar/styles/scroll_focus = null -VSeparator/constants/separation = 4 -VSeparator/styles/separator = null -VSlider/icons/grabber = null -VSlider/icons/grabber_disabled = null -VSlider/icons/grabber_highlight = null -VSlider/icons/tick = null -VSlider/styles/grabber_area = null -VSlider/styles/grabber_area_highlight = null -VSlider/styles/slider = null -VSplitContainer/constants/autohide = 1 -VSplitContainer/constants/separation = 12 -VSplitContainer/icons/grabber = null -VSplitContainer/styles/bg = null -WindowDialog/colors/title_color = Color( 0, 0, 0, 1 ) -WindowDialog/constants/close_h_ofs = 18 -WindowDialog/constants/close_v_ofs = 18 -WindowDialog/constants/scaleborder_size = 4 -WindowDialog/constants/title_height = 20 -WindowDialog/fonts/title_font = null -WindowDialog/icons/close = null -WindowDialog/icons/close_highlight = null -WindowDialog/styles/panel = null diff --git a/godot_ship/scenes/Debug Menu.tscn b/godot_ship/scenes/Debug Menu.tscn index f4b6c46..a6239ee 100644 --- a/godot_ship/scenes/Debug Menu.tscn +++ b/godot_ship/scenes/Debug Menu.tscn @@ -1,6 +1,5 @@ -[gd_scene load_steps=6 format=2] +[gd_scene load_steps=5 format=2] -[ext_resource path="res://main.tres" type="Theme" id=1] [ext_resource path="res://script/debug/debug_menu.gd" type="Script" id=2] [ext_resource path="res://script/debug/In.gd" type="Script" id=3] [ext_resource path="res://script/debug/Out.gd" type="Script" id=4] @@ -9,7 +8,7 @@ [node name="Debug" type="Control"] anchor_right = 1.0 anchor_bottom = 1.0 -theme = ExtResource( 1 ) +theme = ExtResource( 5 ) script = ExtResource( 2 ) __meta__ = { "_edit_use_anchors_": false @@ -51,6 +50,7 @@ focus_neighbour_right = NodePath(".") focus_neighbour_bottom = NodePath(".") focus_next = NodePath(".") focus_previous = NodePath(".") +theme = ExtResource( 5 ) max_length = 256 placeholder_text = "By your command." caret_blink = true From b69cc01be2bd2e9c35810e66249fb3c133abb45d Mon Sep 17 00:00:00 2001 From: Chance Atkinson Date: Sun, 14 Nov 2021 00:34:51 -0600 Subject: [PATCH 054/107] Added victory screen Added a victory screen. Since there is no current way to win, there is a 'win' button added to the top left of the game screen. Once clicked, victory text will appear and the player will be given the option to return to the main menu. --- ...X.ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.md5 | 3 ++ ...gg-93a1e93085ac0a2fc2e723f5d44a2ca9.oggstr | Bin 0 -> 8911 bytes ...X.ogg-d7b93821aa1c2b607fa4dc4bb3561322.md5 | 3 ++ ...gg-d7b93821aa1c2b607fa4dc4bb3561322.oggstr | Bin 0 -> 43971 bytes ...X.ogg-52b6d419298328defecfc61b6c15659d.md5 | 3 ++ ...gg-52b6d419298328defecfc61b6c15659d.oggstr | Bin 0 -> 29439 bytes godot_ship/assets/audio/HitSFX.ogg.import | 15 ++++++ godot_ship/assets/audio/MissSFX.ogg.import | 15 ++++++ godot_ship/assets/audio/SunkSFX.ogg.import | 15 ++++++ godot_ship/scenes/Game/Game.tscn | 8 +++ godot_ship/scenes/Game/Victory.tscn | 50 ++++++++++++++++++ godot_ship/script/game/Gameplay/Game.gd | 9 ++++ godot_ship/script/game/Setup.gd | 2 + godot_ship/script/game/Victory.gd | 30 +++++++++++ 14 files changed, 153 insertions(+) create mode 100644 godot_ship/.import/HitSFX.ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.md5 create mode 100644 godot_ship/.import/HitSFX.ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.oggstr create mode 100644 godot_ship/.import/MissSFX.ogg-d7b93821aa1c2b607fa4dc4bb3561322.md5 create mode 100644 godot_ship/.import/MissSFX.ogg-d7b93821aa1c2b607fa4dc4bb3561322.oggstr create mode 100644 godot_ship/.import/SunkSFX.ogg-52b6d419298328defecfc61b6c15659d.md5 create mode 100644 godot_ship/.import/SunkSFX.ogg-52b6d419298328defecfc61b6c15659d.oggstr create mode 100644 godot_ship/assets/audio/HitSFX.ogg.import create mode 100644 godot_ship/assets/audio/MissSFX.ogg.import create mode 100644 godot_ship/assets/audio/SunkSFX.ogg.import create mode 100644 godot_ship/scenes/Game/Victory.tscn create mode 100644 godot_ship/script/game/Victory.gd diff --git a/godot_ship/.import/HitSFX.ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.md5 b/godot_ship/.import/HitSFX.ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.md5 new file mode 100644 index 0000000..dd2febb --- /dev/null +++ b/godot_ship/.import/HitSFX.ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.md5 @@ -0,0 +1,3 @@ +source_md5="aa361943427692c39cd21430895a1f89" +dest_md5="a384b01bb3a48f53f019cb11e44e2019" + diff --git a/godot_ship/.import/HitSFX.ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.oggstr b/godot_ship/.import/HitSFX.ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.oggstr new file mode 100644 index 0000000000000000000000000000000000000000..0d5b2793ff2d555d48127164f53c4a472842c9d5 GIT binary patch literal 8911 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 literal 0 HcmV?d00001 diff --git a/godot_ship/.import/MissSFX.ogg-d7b93821aa1c2b607fa4dc4bb3561322.md5 b/godot_ship/.import/MissSFX.ogg-d7b93821aa1c2b607fa4dc4bb3561322.md5 new file mode 100644 index 0000000..93ca95d --- /dev/null +++ b/godot_ship/.import/MissSFX.ogg-d7b93821aa1c2b607fa4dc4bb3561322.md5 @@ -0,0 +1,3 @@ +source_md5="4121e74ab010d628490c26ed5391a8f1" +dest_md5="e6145a1ff71559de29a79fa4b0b0fee2" + diff --git a/godot_ship/.import/MissSFX.ogg-d7b93821aa1c2b607fa4dc4bb3561322.oggstr b/godot_ship/.import/MissSFX.ogg-d7b93821aa1c2b607fa4dc4bb3561322.oggstr new file mode 100644 index 0000000000000000000000000000000000000000..e3ddb9aab69cca80856bc07e6424314458518377 GIT binary patch literal 43971 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 literal 0 HcmV?d00001 diff --git a/godot_ship/.import/SunkSFX.ogg-52b6d419298328defecfc61b6c15659d.md5 b/godot_ship/.import/SunkSFX.ogg-52b6d419298328defecfc61b6c15659d.md5 new file mode 100644 index 0000000..6f77432 --- /dev/null +++ b/godot_ship/.import/SunkSFX.ogg-52b6d419298328defecfc61b6c15659d.md5 @@ -0,0 +1,3 @@ +source_md5="d71fa2832e0ad78e94bbd353bc53c2bf" +dest_md5="87d33fdc866cbaaee42f97113a36ceac" + diff --git a/godot_ship/.import/SunkSFX.ogg-52b6d419298328defecfc61b6c15659d.oggstr b/godot_ship/.import/SunkSFX.ogg-52b6d419298328defecfc61b6c15659d.oggstr new file mode 100644 index 0000000000000000000000000000000000000000..f3bc4717d00476505db16e268565f1ae73d3ae44 GIT binary patch literal 29439 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 Dy?`ru literal 0 HcmV?d00001 diff --git a/godot_ship/assets/audio/HitSFX.ogg.import b/godot_ship/assets/audio/HitSFX.ogg.import new file mode 100644 index 0000000..f39b0c1 --- /dev/null +++ b/godot_ship/assets/audio/HitSFX.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/HitSFX.ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.oggstr" + +[deps] + +source_file="res://assets/audio/HitSFX.ogg" +dest_files=[ "res://.import/HitSFX.ogg-93a1e93085ac0a2fc2e723f5d44a2ca9.oggstr" ] + +[params] + +loop=true +loop_offset=0 diff --git a/godot_ship/assets/audio/MissSFX.ogg.import b/godot_ship/assets/audio/MissSFX.ogg.import new file mode 100644 index 0000000..5689c33 --- /dev/null +++ b/godot_ship/assets/audio/MissSFX.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/MissSFX.ogg-d7b93821aa1c2b607fa4dc4bb3561322.oggstr" + +[deps] + +source_file="res://assets/audio/MissSFX.ogg" +dest_files=[ "res://.import/MissSFX.ogg-d7b93821aa1c2b607fa4dc4bb3561322.oggstr" ] + +[params] + +loop=true +loop_offset=0 diff --git a/godot_ship/assets/audio/SunkSFX.ogg.import b/godot_ship/assets/audio/SunkSFX.ogg.import new file mode 100644 index 0000000..df8f7c6 --- /dev/null +++ b/godot_ship/assets/audio/SunkSFX.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/SunkSFX.ogg-52b6d419298328defecfc61b6c15659d.oggstr" + +[deps] + +source_file="res://assets/audio/SunkSFX.ogg" +dest_files=[ "res://.import/SunkSFX.ogg-52b6d419298328defecfc61b6c15659d.oggstr" ] + +[params] + +loop=true +loop_offset=0 diff --git a/godot_ship/scenes/Game/Game.tscn b/godot_ship/scenes/Game/Game.tscn index 8adf30b..dc384c4 100644 --- a/godot_ship/scenes/Game/Game.tscn +++ b/godot_ship/scenes/Game/Game.tscn @@ -39,4 +39,12 @@ margin_right = 53.0 margin_bottom = 20.0 text = "Forfeit" +[node name="Button" type="Button" parent="."] +margin_left = 593.0 +margin_top = 3.0 +margin_right = 636.0 +margin_bottom = 23.0 +text = "Win" + [connection signal="pressed" from="Buttons/Forfeit" to="." method="_on_Forfeit_pressed"] +[connection signal="button_down" from="Button" to="." method="_on_Button_button_down"] diff --git a/godot_ship/scenes/Game/Victory.tscn b/godot_ship/scenes/Game/Victory.tscn new file mode 100644 index 0000000..1ae4560 --- /dev/null +++ b/godot_ship/scenes/Game/Victory.tscn @@ -0,0 +1,50 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://script/game/Victory.gd" type="Script" id=1] +[ext_resource path="res://assets/font/Minecraft.ttf" type="DynamicFontData" id=2] + +[sub_resource type="DynamicFont" id=1] +size = 40 +font_data = ExtResource( 2 ) + +[node name="Victory" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Label" type="Label" parent="."] +margin_left = 118.32 +margin_top = 44.5109 +margin_right = 260.32 +margin_bottom = 84.5109 +size_flags_vertical = 0 +custom_fonts/font = SubResource( 1 ) +text = "Victory" +align = 1 +valign = 1 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Button" type="Button" parent="."] +margin_left = 541.0 +margin_top = 327.85 +margin_right = 636.0 +margin_bottom = 353.85 +text = "Exit to Main" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Button2" type="Button" parent="."] +margin_left = 2.22023 +margin_top = 337.41 +margin_right = 63.2202 +margin_bottom = 357.41 +text = "Restart" + +[connection signal="pressed" from="Button" to="." method="_on_Button_pressed"] +[connection signal="button_down" from="Button2" to="." method="_on_restart_button_down"] diff --git a/godot_ship/script/game/Gameplay/Game.gd b/godot_ship/script/game/Gameplay/Game.gd index 2830d80..3204536 100644 --- a/godot_ship/script/game/Gameplay/Game.gd +++ b/godot_ship/script/game/Gameplay/Game.gd @@ -14,6 +14,8 @@ onready var Fire = preload("res://scenes/Game/Fire.tscn") # Path to Player class, for instantiating new Players in code onready var Player = preload("res://scenes/Game/Player.tscn") +onready var Victory = preload("res://scenes/Game/Victory.tscn") + # Array of instances of the Player class; stores the Players var players # = player1, player2, ... @@ -59,3 +61,10 @@ func _on_Forfeit_pressed(): func end(): queue_free() + + +func _on_Button_button_down(): + AudioBus.emit_signal("button_clicked") + var victory = Victory.instance() + add_child(victory) + victory.connect("exit_main", self, "end") diff --git a/godot_ship/script/game/Setup.gd b/godot_ship/script/game/Setup.gd index f9900b1..4493c9f 100644 --- a/godot_ship/script/game/Setup.gd +++ b/godot_ship/script/game/Setup.gd @@ -4,6 +4,8 @@ signal game_ready onready var Ships = ["2Ship", "3ShipA", "3ShipB", "4Ship", "5Ship"] +onready var Victory = preload("res://scenes/Game/Player.tscn") + class ShipData: var Position: Vector2 var Length: int diff --git a/godot_ship/script/game/Victory.gd b/godot_ship/script/game/Victory.gd new file mode 100644 index 0000000..1e715f5 --- /dev/null +++ b/godot_ship/script/game/Victory.gd @@ -0,0 +1,30 @@ +extends Control + +signal exit_main +# Declare member variables here. Examples: +# var a = 2 +# var b = "text" + + +# Called when the node enters the scene tree for the first time. +func _ready(): + pass # Replace with function body. + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +#func _process(delta): +# pass + + +# returns player(s) back to main menu +func _on_Button_pressed(): + AudioBus.emit_signal("button_clicked") + #MessageBus.emit_signal("change_scene", "Title") + emit_signal("exit_main") + + +func _on_restart_button_down(): + AudioBus.emit_signal("button_clicked") + #MessageBus.emit_signal("change_scene", "Multiplayer") + pass # Replace with function body. + From 9bffd36a0715e780084674d86dadd11712190dc5 Mon Sep 17 00:00:00 2001 From: Chance Atkinson Date: Sun, 14 Nov 2021 00:39:26 -0600 Subject: [PATCH 055/107] restart button is invisible --- godot_ship/scenes/Game/Victory.tscn | 1 + 1 file changed, 1 insertion(+) diff --git a/godot_ship/scenes/Game/Victory.tscn b/godot_ship/scenes/Game/Victory.tscn index 1ae4560..3d1091c 100644 --- a/godot_ship/scenes/Game/Victory.tscn +++ b/godot_ship/scenes/Game/Victory.tscn @@ -40,6 +40,7 @@ __meta__ = { } [node name="Button2" type="Button" parent="."] +visible = false margin_left = 2.22023 margin_top = 337.41 margin_right = 63.2202 From 6577c2551b73aa294087c68db6c4591943bcaa23 Mon Sep 17 00:00:00 2001 From: tommy-l-ngo Date: Sun, 14 Nov 2021 00:43:14 -0600 Subject: [PATCH 056/107] made dark theme --- godot_ship/dark_theme.tres | 24 ++++++++++++++++++++++++ godot_ship/scenes/Title Screen.tscn | 18 ++++++++++-------- 2 files changed, 34 insertions(+), 8 deletions(-) create mode 100644 godot_ship/dark_theme.tres diff --git a/godot_ship/dark_theme.tres b/godot_ship/dark_theme.tres new file mode 100644 index 0000000..0071838 --- /dev/null +++ b/godot_ship/dark_theme.tres @@ -0,0 +1,24 @@ +[gd_resource type="Theme" load_steps=3 format=2] + +[sub_resource type="StyleBoxFlat" id=1] +bg_color = Color( 0.239216, 0.227451, 0.270588, 1 ) +corner_radius_top_left = 2 +corner_radius_top_right = 2 +corner_radius_bottom_right = 2 +corner_radius_bottom_left = 2 + +[sub_resource type="DynamicFont" id=2] + +[resource] +default_font = SubResource( 2 ) +Button/colors/font_color = Color( 1, 1, 1, 1 ) +Button/colors/font_color_disabled = Color( 0.9, 0.9, 0.9, 0.2 ) +Button/colors/font_color_hover = Color( 1, 1, 1, 1 ) +Button/colors/font_color_pressed = Color( 1, 1, 1, 1 ) +Button/constants/hseparation = 2 +Button/fonts/font = null +Button/styles/disabled = null +Button/styles/focus = null +Button/styles/hover = null +Button/styles/normal = SubResource( 1 ) +Button/styles/pressed = null diff --git a/godot_ship/scenes/Title Screen.tscn b/godot_ship/scenes/Title Screen.tscn index 9cc581c..906c914 100644 --- a/godot_ship/scenes/Title Screen.tscn +++ b/godot_ship/scenes/Title Screen.tscn @@ -1,5 +1,6 @@ -[gd_scene load_steps=4 format=2] +[gd_scene load_steps=5 format=2] +[ext_resource path="res://dark_theme.tres" type="Theme" id=1] [ext_resource path="res://script/title screen/Title Screen.gd" type="Script" id=2] [ext_resource path="res://assets/font/Minecraft.ttf" type="DynamicFontData" id=3] @@ -12,6 +13,7 @@ font_data = ExtResource( 3 ) [node name="Title Node" type="Control"] anchor_right = 1.0 anchor_bottom = 1.0 +theme = ExtResource( 1 ) script = ExtResource( 2 ) __meta__ = { "_edit_use_anchors_": false @@ -32,26 +34,26 @@ __meta__ = { [node name="Singleplayer" type="Button" parent="VBoxContainer"] margin_right = 136.0 -margin_bottom = 20.0 +margin_bottom = 1.0 focus_neighbour_top = NodePath("../Quit") text = "Single Player" [node name="Multiplayer" type="Button" parent="VBoxContainer"] -margin_top = 24.0 +margin_top = 5.0 margin_right = 136.0 -margin_bottom = 44.0 +margin_bottom = 6.0 text = "Multiplayer" [node name="Options" type="Button" parent="VBoxContainer"] -margin_top = 48.0 +margin_top = 10.0 margin_right = 136.0 -margin_bottom = 68.0 +margin_bottom = 11.0 text = "Options" [node name="Quit" type="Button" parent="VBoxContainer"] -margin_top = 72.0 +margin_top = 15.0 margin_right = 136.0 -margin_bottom = 92.0 +margin_bottom = 16.0 focus_neighbour_bottom = NodePath("../Singleplayer") text = "Quit" From d52234d63c32ae40c9befbe3a0d7e843c7a6964e Mon Sep 17 00:00:00 2001 From: Chance Atkinson Date: Sun, 14 Nov 2021 00:43:32 -0600 Subject: [PATCH 057/107] Added my win button back :) wooooooo win butttoooonnnn --- godot_ship/scenes/Game/Game.tscn | 8 ++++++++ godot_ship/scenes/Game/Victory.tscn | 5 +++-- godot_ship/script/game/Victory.gd | 15 ++++++--------- 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/godot_ship/scenes/Game/Game.tscn b/godot_ship/scenes/Game/Game.tscn index 681939f..5d4c5c9 100644 --- a/godot_ship/scenes/Game/Game.tscn +++ b/godot_ship/scenes/Game/Game.tscn @@ -46,5 +46,13 @@ __meta__ = { "_editor_description_": "" } +[node name="Button" type="Button" parent="."] +margin_left = 599.361 +margin_top = 2.97302 +margin_right = 636.361 +margin_bottom = 22.973 +text = "Win" + [connection signal="pressed" from="Buttons/Forfeit" to="." method="_on_Forfeit_pressed"] [connection signal="confirmed" from="ConfirmationDialog" to="." method="_on_ConfirmationDialog_confirmed"] +[connection signal="button_down" from="Button" to="." method="_on_Button_button_down"] diff --git a/godot_ship/scenes/Game/Victory.tscn b/godot_ship/scenes/Game/Victory.tscn index 3d1091c..4397295 100644 --- a/godot_ship/scenes/Game/Victory.tscn +++ b/godot_ship/scenes/Game/Victory.tscn @@ -29,7 +29,7 @@ __meta__ = { "_edit_use_anchors_": false } -[node name="Button" type="Button" parent="."] +[node name="exit_to_main" type="Button" parent="."] margin_left = 541.0 margin_top = 327.85 margin_right = 636.0 @@ -47,5 +47,6 @@ margin_right = 63.2202 margin_bottom = 357.41 text = "Restart" -[connection signal="pressed" from="Button" to="." method="_on_Button_pressed"] +[connection signal="button_down" from="exit_to_main" to="." method="_on_exit_to_main_button_down"] +[connection signal="pressed" from="exit_to_main" to="." method="_on_Button_pressed"] [connection signal="button_down" from="Button2" to="." method="_on_restart_button_down"] diff --git a/godot_ship/script/game/Victory.gd b/godot_ship/script/game/Victory.gd index 1e715f5..5d95329 100644 --- a/godot_ship/script/game/Victory.gd +++ b/godot_ship/script/game/Victory.gd @@ -15,16 +15,13 @@ func _ready(): #func _process(delta): # pass - -# returns player(s) back to main menu -func _on_Button_pressed(): - AudioBus.emit_signal("button_clicked") - #MessageBus.emit_signal("change_scene", "Title") - emit_signal("exit_main") - - func _on_restart_button_down(): AudioBus.emit_signal("button_clicked") #MessageBus.emit_signal("change_scene", "Multiplayer") pass # Replace with function body. - + +# returns player(s) back to main menu +func _on_exit_to_main_button_down(): + AudioBus.emit_signal("button_clicked") + #MessageBus.emit_signal("change_scene", "Title") + emit_signal("exit_main") From 16b0e571708588ddc2c21ad75e222e90724da2b8 Mon Sep 17 00:00:00 2001 From: tommy-l-ngo Date: Sun, 14 Nov 2021 00:44:13 -0600 Subject: [PATCH 058/107] idk --- godot_ship/scenes/Title Screen.tscn | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/godot_ship/scenes/Title Screen.tscn b/godot_ship/scenes/Title Screen.tscn index 906c914..9cc581c 100644 --- a/godot_ship/scenes/Title Screen.tscn +++ b/godot_ship/scenes/Title Screen.tscn @@ -1,6 +1,5 @@ -[gd_scene load_steps=5 format=2] +[gd_scene load_steps=4 format=2] -[ext_resource path="res://dark_theme.tres" type="Theme" id=1] [ext_resource path="res://script/title screen/Title Screen.gd" type="Script" id=2] [ext_resource path="res://assets/font/Minecraft.ttf" type="DynamicFontData" id=3] @@ -13,7 +12,6 @@ font_data = ExtResource( 3 ) [node name="Title Node" type="Control"] anchor_right = 1.0 anchor_bottom = 1.0 -theme = ExtResource( 1 ) script = ExtResource( 2 ) __meta__ = { "_edit_use_anchors_": false @@ -34,26 +32,26 @@ __meta__ = { [node name="Singleplayer" type="Button" parent="VBoxContainer"] margin_right = 136.0 -margin_bottom = 1.0 +margin_bottom = 20.0 focus_neighbour_top = NodePath("../Quit") text = "Single Player" [node name="Multiplayer" type="Button" parent="VBoxContainer"] -margin_top = 5.0 +margin_top = 24.0 margin_right = 136.0 -margin_bottom = 6.0 +margin_bottom = 44.0 text = "Multiplayer" [node name="Options" type="Button" parent="VBoxContainer"] -margin_top = 10.0 +margin_top = 48.0 margin_right = 136.0 -margin_bottom = 11.0 +margin_bottom = 68.0 text = "Options" [node name="Quit" type="Button" parent="VBoxContainer"] -margin_top = 15.0 +margin_top = 72.0 margin_right = 136.0 -margin_bottom = 16.0 +margin_bottom = 92.0 focus_neighbour_bottom = NodePath("../Singleplayer") text = "Quit" From 50f087061e29436c0ea835753062aa64c2fcaed7 Mon Sep 17 00:00:00 2001 From: hpham474 Date: Sun, 14 Nov 2021 01:21:40 -0600 Subject: [PATCH 059/107] Added getExtent() function for ships --- godot_ship/script/game/Gameplay/Ship.gd | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/godot_ship/script/game/Gameplay/Ship.gd b/godot_ship/script/game/Gameplay/Ship.gd index c6df16d..c934aa3 100644 --- a/godot_ship/script/game/Gameplay/Ship.gd +++ b/godot_ship/script/game/Gameplay/Ship.gd @@ -2,8 +2,8 @@ extends Node # This is the rendered element of a "ship", generated when the game transitions from the placing state to the gameplay state -# Enum denoting the orientation (X is 1, Y is 0) -enum Orientation {X = 1, Y = 0} +# Enum denoting the orientation (X is 0, Y is 1) +enum Orientation {X = 0, Y = 1} # Size of ship in board units var size @@ -41,6 +41,24 @@ func getOrientation(): func getSunk(): return sunk +func getExtent(): + var extent = [] + #vertical orientation + if orientation == 1: + for i in size: + var pos + pos.x = position.x + pos.y = position.y - ((size - 1) / 2) + i + extent.append(pos) + #horizontal orientation + if orientation == 0: + for i in size: + var pos + pos.x = position.x - ((size - 1) / 2) + i + pos.y = position.y + extent.append(pos) + print(extent) + return extent # setSunk: sink the ship func setSunk(): sunk = true From 6aca8c54a38b0753b7736d1659e0e10ef60eed09 Mon Sep 17 00:00:00 2001 From: hpham474 Date: Sun, 14 Nov 2021 02:09:12 -0600 Subject: [PATCH 060/107] Added texture atlas --- godot_ship/assets/game/TextureAtlas.png | Bin 0 -> 12665 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 godot_ship/assets/game/TextureAtlas.png diff --git a/godot_ship/assets/game/TextureAtlas.png b/godot_ship/assets/game/TextureAtlas.png new file mode 100644 index 0000000000000000000000000000000000000000..617de7004664675edc3ffd5110c7c6d58181b555 GIT binary patch literal 12665 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 Date: Sun, 14 Nov 2021 02:12:31 -0600 Subject: [PATCH 061/107] Make ships real --- godot_ship/scenes/Game/Ship.tscn | 11 +++++++++++ godot_ship/script/game/Gameplay/Ship.gd | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 godot_ship/scenes/Game/Ship.tscn diff --git a/godot_ship/scenes/Game/Ship.tscn b/godot_ship/scenes/Game/Ship.tscn new file mode 100644 index 0000000..6b026e1 --- /dev/null +++ b/godot_ship/scenes/Game/Ship.tscn @@ -0,0 +1,11 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://script/game/Gameplay/Ship.gd" type="Script" id=1] + +[node name="Ship" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} diff --git a/godot_ship/script/game/Gameplay/Ship.gd b/godot_ship/script/game/Gameplay/Ship.gd index c934aa3..8301541 100644 --- a/godot_ship/script/game/Gameplay/Ship.gd +++ b/godot_ship/script/game/Gameplay/Ship.gd @@ -1,4 +1,4 @@ -extends Node +extends Control # This is the rendered element of a "ship", generated when the game transitions from the placing state to the gameplay state From de9684d22f247a62271822c518af5e39047ce565 Mon Sep 17 00:00:00 2001 From: tommy-l-ngo Date: Sun, 14 Nov 2021 02:50:39 -0600 Subject: [PATCH 062/107] Added Dark and Light Themes --- godot_ship/dark_theme.tres | 54 +++++++-- godot_ship/light_theme.tres | 64 ++++++++++ godot_ship/scenes/Game/Game.tscn | 19 +-- godot_ship/scenes/Game/Setup.tscn | 20 ++-- godot_ship/scenes/Options.tscn | 109 ++++++++++++------ godot_ship/scenes/Title Screen.tscn | 38 +++--- godot_ship/script/Main.gd | 8 +- godot_ship/script/game/Gameplay/Game.gd | 16 +++ godot_ship/script/game/Setup.gd | 16 ++- godot_ship/script/options/Options.gd | 12 ++ .../script/title screen/Title Screen.gd | 12 ++ 11 files changed, 285 insertions(+), 83 deletions(-) create mode 100644 godot_ship/light_theme.tres diff --git a/godot_ship/dark_theme.tres b/godot_ship/dark_theme.tres index 0071838..48e3dd2 100644 --- a/godot_ship/dark_theme.tres +++ b/godot_ship/dark_theme.tres @@ -1,13 +1,33 @@ -[gd_resource type="Theme" load_steps=3 format=2] +[gd_resource type="Theme" load_steps=6 format=2] + +[ext_resource path="res://assets/font/Minecraft.ttf" type="DynamicFontData" id=1] + +[sub_resource type="StyleBoxFlat" id=4] +bg_color = Color( 0.239216, 0.211765, 0.317647, 1 ) +corner_radius_top_left = 3 +corner_radius_top_right = 3 +corner_radius_bottom_right = 3 +corner_radius_bottom_left = 3 +shadow_size = 4 [sub_resource type="StyleBoxFlat" id=1] -bg_color = Color( 0.239216, 0.227451, 0.270588, 1 ) -corner_radius_top_left = 2 -corner_radius_top_right = 2 -corner_radius_bottom_right = 2 -corner_radius_bottom_left = 2 +bg_color = Color( 0.109804, 0.0862745, 0.172549, 1 ) +corner_radius_top_left = 3 +corner_radius_top_right = 3 +corner_radius_bottom_right = 3 +corner_radius_bottom_left = 3 +shadow_size = 3 + +[sub_resource type="DynamicFont" id=3] +outline_color = Color( 0, 0, 0, 1 ) +font_data = ExtResource( 1 ) [sub_resource type="DynamicFont" id=2] +outline_color = Color( 0, 0, 0, 1 ) +extra_spacing_top = 5 +extra_spacing_bottom = 3 +extra_spacing_char = 1 +font_data = ExtResource( 1 ) [resource] default_font = SubResource( 2 ) @@ -19,6 +39,26 @@ Button/constants/hseparation = 2 Button/fonts/font = null Button/styles/disabled = null Button/styles/focus = null -Button/styles/hover = null +Button/styles/hover = SubResource( 4 ) Button/styles/normal = SubResource( 1 ) Button/styles/pressed = null +Dialogs/constants/button_margin = 100 +Dialogs/constants/margin = 8 +Label/colors/font_color = Color( 1, 1, 1, 1 ) +Label/colors/font_color_shadow = Color( 0, 0, 0, 0 ) +Label/colors/font_outline_modulate = Color( 0, 0, 0, 1 ) +Label/constants/line_spacing = 3 +Label/constants/shadow_as_outline = 0 +Label/constants/shadow_offset_x = 0 +Label/constants/shadow_offset_y = 0 +Label/fonts/font = SubResource( 3 ) +Label/styles/normal = null +WindowDialog/colors/title_color = Color( 0.152941, 0.152941, 0.152941, 1 ) +WindowDialog/constants/close_h_ofs = 18 +WindowDialog/constants/close_v_ofs = 18 +WindowDialog/constants/scaleborder_size = 4 +WindowDialog/constants/title_height = 20 +WindowDialog/fonts/title_font = null +WindowDialog/icons/close = null +WindowDialog/icons/close_highlight = null +WindowDialog/styles/panel = null diff --git a/godot_ship/light_theme.tres b/godot_ship/light_theme.tres new file mode 100644 index 0000000..7946aed --- /dev/null +++ b/godot_ship/light_theme.tres @@ -0,0 +1,64 @@ +[gd_resource type="Theme" load_steps=6 format=2] + +[ext_resource path="res://assets/font/Minecraft.ttf" type="DynamicFontData" id=1] + +[sub_resource type="StyleBoxFlat" id=4] +bg_color = Color( 1, 1, 1, 1 ) +corner_radius_top_left = 3 +corner_radius_top_right = 3 +corner_radius_bottom_right = 3 +corner_radius_bottom_left = 3 +shadow_size = 4 + +[sub_resource type="StyleBoxFlat" id=1] +bg_color = Color( 0.847059, 0.921569, 0.964706, 1 ) +corner_radius_top_left = 3 +corner_radius_top_right = 3 +corner_radius_bottom_right = 3 +corner_radius_bottom_left = 3 +shadow_size = 3 + +[sub_resource type="DynamicFont" id=2] +outline_color = Color( 0, 0, 0, 1 ) +font_data = ExtResource( 1 ) + +[sub_resource type="DynamicFont" id=3] +outline_color = Color( 0, 0, 0, 1 ) +extra_spacing_top = 5 +extra_spacing_bottom = 3 +extra_spacing_char = 1 +font_data = ExtResource( 1 ) + +[resource] +default_font = SubResource( 3 ) +Button/colors/font_color = Color( 0.0784314, 0.0784314, 0.0784314, 1 ) +Button/colors/font_color_disabled = Color( 0.9, 0.9, 0.9, 0.2 ) +Button/colors/font_color_hover = Color( 0, 0, 0, 1 ) +Button/colors/font_color_pressed = Color( 0, 0, 0, 1 ) +Button/constants/hseparation = 2 +Button/fonts/font = null +Button/styles/disabled = null +Button/styles/focus = null +Button/styles/hover = SubResource( 4 ) +Button/styles/normal = SubResource( 1 ) +Button/styles/pressed = null +Dialogs/constants/button_margin = 100 +Dialogs/constants/margin = 8 +Label/colors/font_color = Color( 1, 1, 1, 1 ) +Label/colors/font_color_shadow = Color( 0, 0, 0, 0 ) +Label/colors/font_outline_modulate = Color( 0, 0, 0, 1 ) +Label/constants/line_spacing = 3 +Label/constants/shadow_as_outline = 0 +Label/constants/shadow_offset_x = 0 +Label/constants/shadow_offset_y = 0 +Label/fonts/font = SubResource( 2 ) +Label/styles/normal = null +WindowDialog/colors/title_color = Color( 0.152941, 0.152941, 0.152941, 1 ) +WindowDialog/constants/close_h_ofs = 18 +WindowDialog/constants/close_v_ofs = 18 +WindowDialog/constants/scaleborder_size = 4 +WindowDialog/constants/title_height = 20 +WindowDialog/fonts/title_font = null +WindowDialog/icons/close = null +WindowDialog/icons/close_highlight = null +WindowDialog/styles/panel = null diff --git a/godot_ship/scenes/Game/Game.tscn b/godot_ship/scenes/Game/Game.tscn index 5d4c5c9..5d8d8d9 100644 --- a/godot_ship/scenes/Game/Game.tscn +++ b/godot_ship/scenes/Game/Game.tscn @@ -16,16 +16,16 @@ anchor_left = 0.912 anchor_top = 0.932 anchor_right = 0.912 anchor_bottom = 0.932 -margin_left = -3.68005 -margin_top = -4.52002 -margin_right = 49.3199 -margin_bottom = 15.48 +margin_left = -37.68 +margin_top = -329.52 +margin_right = 50.32 +margin_bottom = -305.52 __meta__ = { "_edit_use_anchors_": false } [node name="Forfeit" type="Button" parent="Buttons"] -margin_right = 53.0 +margin_right = 88.0 margin_bottom = 20.0 text = "Forfeit" @@ -47,10 +47,11 @@ __meta__ = { } [node name="Button" type="Button" parent="."] -margin_left = 599.361 -margin_top = 2.97302 -margin_right = 636.361 -margin_bottom = 22.973 +visible = false +margin_left = 6.4668 +margin_top = 6.14783 +margin_right = 43.4668 +margin_bottom = 26.1478 text = "Win" [connection signal="pressed" from="Buttons/Forfeit" to="." method="_on_Forfeit_pressed"] diff --git a/godot_ship/scenes/Game/Setup.tscn b/godot_ship/scenes/Game/Setup.tscn index 42db1cd..fdda0b1 100644 --- a/godot_ship/scenes/Game/Setup.tscn +++ b/godot_ship/scenes/Game/Setup.tscn @@ -1,6 +1,7 @@ -[gd_scene load_steps=8 format=2] +[gd_scene load_steps=9 format=2] [ext_resource path="res://assets/game/board_blue.png" type="Texture" id=1] +[ext_resource path="res://dark_theme.tres" type="Theme" id=2] [ext_resource path="res://scenes/ships/3ShipB.tscn" type="PackedScene" id=4] [ext_resource path="res://scenes/ships/3shipA.tscn" type="PackedScene" id=5] [ext_resource path="res://scenes/ships/4Ship.tscn" type="PackedScene" id=6] @@ -15,6 +16,7 @@ anchor_bottom = 0.890237 margin_top = -0.445435 margin_bottom = 39.5145 mouse_filter = 2 +theme = ExtResource( 2 ) script = ExtResource( 10 ) __meta__ = { "_edit_use_anchors_": false @@ -70,20 +72,20 @@ contacts_reported = 1 contact_monitor = true [node name="Confirm Placement" type="Button" parent="."] -margin_left = 409.0 -margin_top = 331.0 -margin_right = 543.0 -margin_bottom = 351.0 +margin_left = 417.0 +margin_top = 316.0 +margin_right = 608.0 +margin_bottom = 340.0 text = "Confirm Placement" __meta__ = { "_edit_use_anchors_": false } [node name="Clear" type="Button" parent="."] -margin_left = 353.0 -margin_top = 331.0 -margin_right = 406.0 -margin_bottom = 351.0 +margin_left = 348.0 +margin_top = 316.0 +margin_right = 408.0 +margin_bottom = 340.0 text = "Clear" __meta__ = { "_edit_use_anchors_": false diff --git a/godot_ship/scenes/Options.tscn b/godot_ship/scenes/Options.tscn index 2ed6077..cd80f96 100644 --- a/godot_ship/scenes/Options.tscn +++ b/godot_ship/scenes/Options.tscn @@ -1,24 +1,52 @@ -[gd_scene load_steps=2 format=2] +[gd_scene load_steps=8 format=2] +[ext_resource path="res://assets/font/Minecraft.ttf" type="DynamicFontData" id=1] [ext_resource path="res://script/options/Options.gd" type="Script" id=2] +[ext_resource path="res://light_theme.tres" type="Theme" id=3] + +[sub_resource type="DynamicFont" id=1] +size = 44 +outline_size = 2 +outline_color = Color( 0, 0, 0, 1 ) +font_data = ExtResource( 1 ) + +[sub_resource type="DynamicFont" id=2] +outline_size = 1 +outline_color = Color( 0, 0, 0, 1 ) +font_data = ExtResource( 1 ) + +[sub_resource type="DynamicFont" id=3] +outline_size = 1 +outline_color = Color( 0, 0, 0, 1 ) +font_data = ExtResource( 1 ) + +[sub_resource type="DynamicFont" id=4] +outline_size = 1 +font_data = ExtResource( 1 ) [node name="Options" type="Control"] anchor_right = 1.0 anchor_bottom = 1.0 +theme = ExtResource( 3 ) script = ExtResource( 2 ) __meta__ = { "_edit_use_anchors_": false } -[node name="MenuLabel" type="RichTextLabel" parent="."] -margin_left = 294.0 -margin_top = 68.0 -margin_right = 346.0 -margin_bottom = 83.0 -custom_colors/default_color = Color( 0, 0, 0, 1 ) +[node name="Options Label" type="Label" parent="."] +anchor_left = 0.5 +anchor_right = 0.5 +margin_left = -82.0 +margin_top = 49.0 +margin_right = 82.0 +margin_bottom = 93.0 +custom_fonts/font = SubResource( 1 ) +custom_colors/font_color_shadow = Color( 0, 0, 0, 1 ) +custom_constants/shadow_offset_y = 8 text = "Options" +align = 2 +valign = 1 __meta__ = { -"_edit_lock_": true, "_edit_use_anchors_": false } @@ -36,11 +64,11 @@ __meta__ = { position = Vector2( 0, 8 ) [node name="Master Label" type="Label" parent="Sliders/Master Volume Setting"] -margin_left = -0.140289 -margin_top = -8.0 -margin_right = 63.8597 -margin_bottom = 8.0 -custom_colors/font_color = Color( 0, 0, 0, 1 ) +margin_left = -8.14029 +margin_top = -14.0 +margin_right = 57.8597 +margin_bottom = 10.0 +custom_fonts/font = SubResource( 2 ) text = "Volume:" align = 2 valign = 1 @@ -50,9 +78,9 @@ __meta__ = { [node name="Master Slider" type="HSlider" parent="Sliders/Master Volume Setting"] margin_left = 64.0 -margin_top = -8.0 +margin_top = -10.0 margin_right = 208.0 -margin_bottom = 8.0 +margin_bottom = 6.0 focus_neighbour_left = NodePath("../../../Back") focus_neighbour_top = NodePath("../../../Back") focus_neighbour_bottom = NodePath("../../Volume Setting/Volume Slider") @@ -61,6 +89,7 @@ focus_previous = NodePath("../../../Back") max_value = 1.0 step = 0.05 tick_count = 10 +ticks_on_borders = true __meta__ = { "_edit_use_anchors_": false } @@ -69,10 +98,11 @@ __meta__ = { position = Vector2( 0, 33 ) [node name="Music Label" type="Label" parent="Sliders/Music Volume Setting"] -margin_top = -8.0 -margin_right = 64.0 -margin_bottom = 8.0 -custom_colors/font_color = Color( 0, 0, 0, 1 ) +margin_left = -6.0 +margin_top = -13.0 +margin_right = 58.0 +margin_bottom = 11.0 +custom_fonts/font = SubResource( 3 ) text = "Music:" align = 2 valign = 1 @@ -81,10 +111,10 @@ __meta__ = { } [node name="Music Slider" type="HSlider" parent="Sliders/Music Volume Setting"] -margin_left = 64.0 -margin_top = -8.0 -margin_right = 208.0 -margin_bottom = 8.0 +margin_left = 64.25 +margin_top = -9.0 +margin_right = 208.25 +margin_bottom = 7.0 focus_neighbour_top = NodePath("../../SFX Setting/SFX Slider") focus_neighbour_bottom = NodePath("../../../Buttons/Dark") focus_next = NodePath("../../../Buttons/Dark") @@ -92,6 +122,7 @@ focus_previous = NodePath("../../SFX Setting/SFX Slider") max_value = 1.0 step = 0.05 tick_count = 10 +ticks_on_borders = true __meta__ = { "_edit_use_anchors_": false } @@ -99,10 +130,11 @@ __meta__ = { [node name="SFX Volume Setting" type="Node2D" parent="Sliders"] [node name="SFX Label" type="Label" parent="Sliders/SFX Volume Setting"] -margin_top = 48.0 -margin_right = 64.0 -margin_bottom = 64.0 -custom_colors/font_color = Color( 0, 0, 0, 1 ) +margin_left = -6.0 +margin_top = 46.0 +margin_right = 58.0 +margin_bottom = 70.0 +custom_fonts/font = SubResource( 4 ) text = "SFX:" align = 2 valign = 1 @@ -112,23 +144,27 @@ __meta__ = { [node name="SFX Slider" type="HSlider" parent="Sliders/SFX Volume Setting"] margin_left = 64.0 -margin_top = 48.0 +margin_top = 50.0 margin_right = 208.0 -margin_bottom = 64.0 +margin_bottom = 66.0 max_value = 1.0 step = 0.05 tick_count = 10 +ticks_on_borders = true __meta__ = { "_edit_use_anchors_": false } [node name="Buttons" type="HBoxContainer" parent="."] -margin_left = 216.0 -margin_top = 200.0 -margin_right = 424.0 -margin_bottom = 224.0 +anchor_left = 0.5 +anchor_top = 0.498036 +anchor_right = 0.5 +anchor_bottom = 0.498036 +margin_left = -102.0 +margin_top = 30.7071 +margin_right = 106.0 +margin_bottom = 54.7071 __meta__ = { -"_edit_lock_": true, "_edit_use_anchors_": false } @@ -157,8 +193,8 @@ text = "Dark Mode" [node name="Back" type="Button" parent="."] margin_left = 16.0 margin_top = 16.0 -margin_right = 28.0 -margin_bottom = 36.0 +margin_right = 83.0 +margin_bottom = 40.0 focus_neighbour_left = NodePath(".") focus_neighbour_top = NodePath(".") focus_neighbour_right = NodePath("../Sliders/SFX Setting/SFX Slider") @@ -167,7 +203,6 @@ focus_next = NodePath("../Sliders/SFX Setting/SFX Slider") focus_previous = NodePath(".") text = "Back" __meta__ = { -"_edit_lock_": true, "_edit_use_anchors_": false } diff --git a/godot_ship/scenes/Title Screen.tscn b/godot_ship/scenes/Title Screen.tscn index 9cc581c..2750f97 100644 --- a/godot_ship/scenes/Title Screen.tscn +++ b/godot_ship/scenes/Title Screen.tscn @@ -1,5 +1,6 @@ -[gd_scene load_steps=4 format=2] +[gd_scene load_steps=5 format=2] +[ext_resource path="res://light_theme.tres" type="Theme" id=1] [ext_resource path="res://script/title screen/Title Screen.gd" type="Script" id=2] [ext_resource path="res://assets/font/Minecraft.ttf" type="DynamicFontData" id=3] @@ -12,6 +13,7 @@ font_data = ExtResource( 3 ) [node name="Title Node" type="Control"] anchor_right = 1.0 anchor_bottom = 1.0 +theme = ExtResource( 1 ) script = ExtResource( 2 ) __meta__ = { "_edit_use_anchors_": false @@ -22,36 +24,36 @@ anchor_left = 0.5 anchor_top = 0.5 anchor_right = 0.5 anchor_bottom = 0.5 -margin_left = -68.077 -margin_top = 10.0 -margin_right = 68.077 -margin_bottom = 102.0 +margin_left = -80.0 +margin_top = 11.0 +margin_right = 80.0 +margin_bottom = 119.0 __meta__ = { "_edit_use_anchors_": false } [node name="Singleplayer" type="Button" parent="VBoxContainer"] -margin_right = 136.0 -margin_bottom = 20.0 +margin_right = 160.0 +margin_bottom = 24.0 focus_neighbour_top = NodePath("../Quit") text = "Single Player" [node name="Multiplayer" type="Button" parent="VBoxContainer"] -margin_top = 24.0 -margin_right = 136.0 -margin_bottom = 44.0 +margin_top = 28.0 +margin_right = 160.0 +margin_bottom = 52.0 text = "Multiplayer" [node name="Options" type="Button" parent="VBoxContainer"] -margin_top = 48.0 -margin_right = 136.0 -margin_bottom = 68.0 +margin_top = 56.0 +margin_right = 160.0 +margin_bottom = 80.0 text = "Options" [node name="Quit" type="Button" parent="VBoxContainer"] -margin_top = 72.0 -margin_right = 136.0 -margin_bottom = 92.0 +margin_top = 84.0 +margin_right = 160.0 +margin_bottom = 108.0 focus_neighbour_bottom = NodePath("../Singleplayer") text = "Quit" @@ -61,9 +63,9 @@ anchor_top = 0.5 anchor_right = 0.5 anchor_bottom = 0.5 margin_left = -157.0 -margin_top = -50.0 +margin_top = -59.0 margin_right = 157.0 -margin_bottom = -6.0 +margin_bottom = -15.0 size_flags_stretch_ratio = 0.0 custom_fonts/font = SubResource( 1 ) custom_colors/font_outline_modulate = Color( 0, 0, 0, 1 ) diff --git a/godot_ship/script/Main.gd b/godot_ship/script/Main.gd index a3d53f9..0820385 100644 --- a/godot_ship/script/Main.gd +++ b/godot_ship/script/Main.gd @@ -7,8 +7,10 @@ onready var Options = preload("res://scenes/Options.tscn" ) onready var Debug_Menu = preload("res://scenes/Debug Menu.tscn" ) # Themes -var lightmode = preload("res://assets/backgrounds/Background_Light.png"); -var darkmode = preload("res://assets/backgrounds/Background_Dark.png"); +var lightmode = preload("res://assets/backgrounds/Background_Light.png") +var darkmode = preload("res://assets/backgrounds/Background_Dark.png") +var light_theme = load("res://light_theme.tres") +var dark_theme = load("res://dark_theme.tres") #flags var power_saving = true @@ -104,5 +106,7 @@ func _on_title_request(): func _on_change_theme(theme): if theme == "light": get_node("Background").set_texture(lightmode) + self.set_theme(light_theme) elif theme == "dark": get_node("Background").set_texture(darkmode) + self.set_theme(dark_theme) diff --git a/godot_ship/script/game/Gameplay/Game.gd b/godot_ship/script/game/Gameplay/Game.gd index 9507d43..fe79fb2 100644 --- a/godot_ship/script/game/Gameplay/Game.gd +++ b/godot_ship/script/game/Gameplay/Game.gd @@ -5,6 +5,9 @@ class ShipData: var Length: int var Orientation: bool #vertical is true, (Trueship = vertical) (Falseship = horizontal) +var light_theme = load("res://light_theme.tres") +var dark_theme = load("res://dark_theme.tres") + # Preloaded assets, to be used later # TODO: Move Setup into the Player. It's just here, for now, so that it can be tested and the game doesn't appear broken onready var Setup = preload("res://scenes/Game/Setup.tscn") @@ -27,6 +30,7 @@ var hit = false # TODO: Multiplayer var is_multiplayer = false + # Called when the node enters the scene tree for the first time. func _ready(): # TODO: Move Setup into the Player. @@ -36,6 +40,12 @@ func _ready(): get_node("ConfirmationDialog").get_ok().text = "Yes" get_node("ConfirmationDialog").get_cancel().text = "No" + get_node("ConfirmationDialog").get_ok().rect_min_size.x = 100 + get_node("ConfirmationDialog").get_cancel().rect_min_size.x = 100 + + var _errno = 0; + _errno += OptionsController.connect("change_theme", self, "_on_change_theme") + _on_change_theme(OptionsController.get_theme()) # TODO: Move Setup into the Player. func game_setup(_ships): @@ -73,3 +83,9 @@ func _on_Button_button_down(): func _on_ConfirmationDialog_confirmed(): end() + +func _on_change_theme(theme): + if theme == "light": + get_node("Buttons").set_theme(light_theme) + elif theme == "dark": + get_node("Buttons").set_theme(dark_theme) diff --git a/godot_ship/script/game/Setup.gd b/godot_ship/script/game/Setup.gd index 4493c9f..e958ea7 100644 --- a/godot_ship/script/game/Setup.gd +++ b/godot_ship/script/game/Setup.gd @@ -6,6 +6,9 @@ onready var Ships = ["2Ship", "3ShipA", "3ShipB", "4Ship", "5Ship"] onready var Victory = preload("res://scenes/Game/Player.tscn") +var light_theme = load("res://light_theme.tres") +var dark_theme = load("res://dark_theme.tres") + class ShipData: var Position: Vector2 var Length: int @@ -15,7 +18,12 @@ class ShipData: func _ready(): # Moves the focus to this menu if find_next_valid_focus(): find_next_valid_focus().grab_focus() - + + get_node("PlaceShipDialog").get_ok().rect_min_size.x = 50 + + var _errno = 0; + _errno += OptionsController.connect("change_theme", self, "_on_change_theme") + _on_change_theme(OptionsController.get_theme()) func _on_Confirm_Placement_pressed(): # Make the button noise @@ -53,3 +61,9 @@ func _on_Clear_pressed(): for ship in Ships: get_node(ship).clear() pass # Replace with function body. + +func _on_change_theme(theme): + if theme == "light": + self.set_theme(light_theme) + elif theme == "dark": + self.set_theme(dark_theme) diff --git a/godot_ship/script/options/Options.gd b/godot_ship/script/options/Options.gd index d4e927b..378f334 100644 --- a/godot_ship/script/options/Options.gd +++ b/godot_ship/script/options/Options.gd @@ -5,6 +5,8 @@ onready var music_slider = find_node("Music Slider", true, true) onready var sound_slider = find_node("SFX Slider", true, true) onready var theme_buttons = find_node("Buttons", true, true).get_children() +var light_theme = load("res://light_theme.tres") +var dark_theme = load("res://dark_theme.tres") # Called when the node enters the scene tree for the first time. func _ready(): @@ -13,6 +15,10 @@ func _ready(): master_slider.value = db2linear(OptionsController.get_mas_volume()) music_slider.value = db2linear(OptionsController.get_mus_volume()) sound_slider.value = db2linear(OptionsController.get_sfx_volume()) + + var _errno = 0; + _errno += OptionsController.connect("change_theme", self, "_on_change_theme") + _on_change_theme(OptionsController.get_theme()) func _on_Button_pressed(): AudioBus.emit_signal("button_clicked") @@ -41,3 +47,9 @@ func _on_Light_pressed(): func _on_Dark_pressed(): AudioBus.emit_signal("button_clicked") OptionsController.set_theme("dark") + +func _on_change_theme(theme): + if theme == "light": + self.set_theme(light_theme) + elif theme == "dark": + self.set_theme(dark_theme) diff --git a/godot_ship/script/title screen/Title Screen.gd b/godot_ship/script/title screen/Title Screen.gd index af2512d..0f8308a 100644 --- a/godot_ship/script/title screen/Title Screen.gd +++ b/godot_ship/script/title screen/Title Screen.gd @@ -1,8 +1,14 @@ extends Control +var light_theme = load("res://light_theme.tres") +var dark_theme = load("res://dark_theme.tres") + # Called when the node enters the scene tree for the first time. func _ready(): $VBoxContainer/Singleplayer.grab_focus() + var _errno = 0; + _errno += OptionsController.connect("change_theme", self, "_on_change_theme") + _on_change_theme(OptionsController.get_theme()) func _on_Singleplayer_pressed(): AudioBus.emit_signal("button_clicked") @@ -23,3 +29,9 @@ func _on_Quit_pressed(): AudioBus.emit_signal("button_clicked") MessageBus.emit_signal("quit") queue_free() + +func _on_change_theme(theme): + if theme == "light": + self.set_theme(light_theme) + elif theme == "dark": + self.set_theme(dark_theme) From 6fa1319ec4ca8cf7e4b097902917e3f5f549d99e Mon Sep 17 00:00:00 2001 From: hpham474 Date: Sun, 14 Nov 2021 03:15:27 -0600 Subject: [PATCH 063/107] Added partial texture function for ship --- ...s.png-f8378824db0f2b64b8339984d33f1a41.md5 | 3 ++ ....png-f8378824db0f2b64b8339984d33f1a41.stex | Bin 0 -> 14748 bytes .../assets/game/TextureAtlas.png.import | 34 +++++++++++++++ godot_ship/script/game/Gameplay/Ship.gd | 39 ++++++++++++++---- 4 files changed, 67 insertions(+), 9 deletions(-) create mode 100644 godot_ship/.import/TextureAtlas.png-f8378824db0f2b64b8339984d33f1a41.md5 create mode 100644 godot_ship/.import/TextureAtlas.png-f8378824db0f2b64b8339984d33f1a41.stex create mode 100644 godot_ship/assets/game/TextureAtlas.png.import diff --git a/godot_ship/.import/TextureAtlas.png-f8378824db0f2b64b8339984d33f1a41.md5 b/godot_ship/.import/TextureAtlas.png-f8378824db0f2b64b8339984d33f1a41.md5 new file mode 100644 index 0000000..d635fb0 --- /dev/null +++ b/godot_ship/.import/TextureAtlas.png-f8378824db0f2b64b8339984d33f1a41.md5 @@ -0,0 +1,3 @@ +source_md5="3b774873968ed3ad322fe34d56720cd8" +dest_md5="17d758d595e2d6d8e58671b48f45f54a" + diff --git a/godot_ship/.import/TextureAtlas.png-f8378824db0f2b64b8339984d33f1a41.stex b/godot_ship/.import/TextureAtlas.png-f8378824db0f2b64b8339984d33f1a41.stex new file mode 100644 index 0000000000000000000000000000000000000000..22a9538ebb92481b62eef9761fec6966b2fb8302 GIT binary patch literal 14748 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 1), (size/2 >> 1)] -var position +var boardposition # Variable storing whether the ship is sunk, for rendering purposes var sunk = false # Orientation of the ship (see enum Orientation) var orientation = Orientation.Y +# array of spots thats been hit +var hit = [] # Ship sprite metadata # sprite: the texture atlas containing all ship parts var atlas # = TODO: figure out how to use one sprite for multiple textures -# texture: the offset into the texture atlas of the first part of the ship. -var texture = 0 +# variant: for ship 3. A is 0, B is 1 +var variant = 0 # Called when the node enters the scene tree for the first time. func _ready(): @@ -31,7 +33,7 @@ func getSize(): # getPosition: get the position of the ship's center, in board units func getPosition(): - return position + return boardposition # getOrientation: get the orientation of the ship (see enum Orientation) func getOrientation(): @@ -41,24 +43,43 @@ func getOrientation(): func getSunk(): return sunk +# returns an array of the positions that the ship occupies func getExtent(): var extent = [] #vertical orientation if orientation == 1: for i in size: var pos - pos.x = position.x - pos.y = position.y - ((size - 1) / 2) + i + pos.x = boardposition.x + pos.y = boardposition.y - ((size - 1) / 2) + i extent.append(pos) #horizontal orientation if orientation == 0: for i in size: var pos - pos.x = position.x - ((size - 1) / 2) + i - pos.y = position.y + pos.x = boardposition.x - ((size - 1) / 2) + i + pos.y = boardposition.y extent.append(pos) print(extent) return extent + +# generates a texture at the spot (index should start at 0) +func texture(index): + var state = 0 # floating + if(hit[index]): + state = 1 # sunk + var textureSize = 32 + var t = AtlasTexture.new() + t.atlas = load("res://assets/game/TextureAtlas.png") + t.region ( + (size * textureSize) * variant + (32 * index), + (size - 2) * textureSize * 2 + (32 * state), + textureSize, + textureSize + ) + + pass + # setSunk: sink the ship func setSunk(): sunk = true @@ -68,6 +89,6 @@ func setSunk(): # in_size: size of the ship, in board-units; 2 by default # in_orientation: orientation of the ship (see enum Orientation); vertical by default func _init(in_position = Vector2(0,0), in_size = 2, in_orientation = Orientation.Y): - position = in_position + boardposition = in_position size = in_size orientation = in_orientation From afec8710f519eb31d3639964aa62a5d3242aaea4 Mon Sep 17 00:00:00 2001 From: tommy-l-ngo Date: Sun, 14 Nov 2021 03:18:27 -0600 Subject: [PATCH 064/107] idk --- ...s.png-f8378824db0f2b64b8339984d33f1a41.md5 | 3 ++ ....png-f8378824db0f2b64b8339984d33f1a41.stex | Bin 0 -> 14748 bytes .../assets/game/TextureAtlas.png.import | 34 ++++++++++++++++++ godot_ship/dark_theme.tres | 12 +++---- godot_ship/light_theme.tres | 16 ++++----- 5 files changed, 51 insertions(+), 14 deletions(-) create mode 100644 godot_ship/.import/TextureAtlas.png-f8378824db0f2b64b8339984d33f1a41.md5 create mode 100644 godot_ship/.import/TextureAtlas.png-f8378824db0f2b64b8339984d33f1a41.stex create mode 100644 godot_ship/assets/game/TextureAtlas.png.import diff --git a/godot_ship/.import/TextureAtlas.png-f8378824db0f2b64b8339984d33f1a41.md5 b/godot_ship/.import/TextureAtlas.png-f8378824db0f2b64b8339984d33f1a41.md5 new file mode 100644 index 0000000..d635fb0 --- /dev/null +++ b/godot_ship/.import/TextureAtlas.png-f8378824db0f2b64b8339984d33f1a41.md5 @@ -0,0 +1,3 @@ +source_md5="3b774873968ed3ad322fe34d56720cd8" +dest_md5="17d758d595e2d6d8e58671b48f45f54a" + diff --git a/godot_ship/.import/TextureAtlas.png-f8378824db0f2b64b8339984d33f1a41.stex b/godot_ship/.import/TextureAtlas.png-f8378824db0f2b64b8339984d33f1a41.stex new file mode 100644 index 0000000000000000000000000000000000000000..22a9538ebb92481b62eef9761fec6966b2fb8302 GIT binary patch literal 14748 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 Date: Sun, 14 Nov 2021 03:56:14 -0600 Subject: [PATCH 065/107] Texture rendering changes --- ...k.png-f04f9416ce96aca35dfd0f16063b0d5b.md5 | 2 +- ....png-f04f9416ce96aca35dfd0f16063b0d5b.stex | Bin 8689 -> 8689 bytes .../backgrounds/Background_Dark.png.import | 4 ++-- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/godot_ship/.import/Background_Dark.png-f04f9416ce96aca35dfd0f16063b0d5b.md5 b/godot_ship/.import/Background_Dark.png-f04f9416ce96aca35dfd0f16063b0d5b.md5 index 65f245f..f5e763d 100644 --- a/godot_ship/.import/Background_Dark.png-f04f9416ce96aca35dfd0f16063b0d5b.md5 +++ b/godot_ship/.import/Background_Dark.png-f04f9416ce96aca35dfd0f16063b0d5b.md5 @@ -1,3 +1,3 @@ source_md5="a88d669f1f058a347cc4de2244bac64b" -dest_md5="1073062c6e594eff250036d7489d44a7" +dest_md5="1ed8fab74f35d40e257776b2eab84c5f" diff --git a/godot_ship/.import/Background_Dark.png-f04f9416ce96aca35dfd0f16063b0d5b.stex b/godot_ship/.import/Background_Dark.png-f04f9416ce96aca35dfd0f16063b0d5b.stex index 1ea8a2a7bec397add7b1da989202550a02af9110..502efb50c84cb40c4866cdd0a7481bc3968db5c8 100644 GIT binary patch delta 29 fcmez9{Lxv&-6c4rfr)`3gOLFW1lTr;+*Jesb;Aa8 delta 29 icmez9{Lxv&-6c4rfr)`3gOP!Og#iQv*f)yYRRjQa_y%|Y diff --git a/godot_ship/assets/backgrounds/Background_Dark.png.import b/godot_ship/assets/backgrounds/Background_Dark.png.import index d8ce35a..3cdedd7 100644 --- a/godot_ship/assets/backgrounds/Background_Dark.png.import +++ b/godot_ship/assets/backgrounds/Background_Dark.png.import @@ -20,7 +20,7 @@ compress/hdr_mode=0 compress/bptc_ldr=0 compress/normal_map=0 flags/repeat=0 -flags/filter=true +flags/filter=false flags/mipmaps=false flags/anisotropic=false flags/srgb=2 @@ -30,5 +30,5 @@ process/HDR_as_SRGB=false process/invert_color=false stream=false size_limit=0 -detect_3d=true +detect_3d=false svg/scale=1.0 From 5a72c4fded288f47719a6ed7301124e79af7e8b7 Mon Sep 17 00:00:00 2001 From: John Breaux Date: Sun, 14 Nov 2021 06:32:46 -0600 Subject: [PATCH 066/107] Debug: add loading and running scripts\ Ship: Validate alternate implementation of getExtents() --- godot_ship/script/debug/debug_menu.gd | 20 ++++++++++++++++++++ godot_ship/script/game/Gameplay/Ship.gd | 14 ++++++++++---- 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/godot_ship/script/debug/debug_menu.gd b/godot_ship/script/debug/debug_menu.gd index 7e36f8e..4ef7654 100644 --- a/godot_ship/script/debug/debug_menu.gd +++ b/godot_ship/script/debug/debug_menu.gd @@ -38,6 +38,7 @@ var helptext = { "command_getprop": [" prop", "Get the value of property prop\n" ], "command_setprop": [" prop value", "Set the property prop to value.\n" ], + "command_script": [" path", "Load and execute a script at a given path.\n" ], "command_restart": ["", "Kill the current scene tree and plant a new Root.\n" ], "command_exit": ["", "Quits the program.\n" ], @@ -70,6 +71,7 @@ var commands = { ["getprop","get", "g"]: "command_getprop", ["setprop","set", "s"]: "command_setprop", + ["script", "sh"]: "command_script", ["restart", "killall"]: "command_restart", ["exit", "quit"]: "command_exit", @@ -519,6 +521,24 @@ func command_perf(command): else: debug_print_line(get_usage(command[0])) +# script: run a script from user:// +func command_script(command): + var script = [] + if (command.size() > 1): + var path = "user://" + command[1] + var f = File.new() + var err = f.open(path, File.READ) + if err == OK: + while not f.eof_reached(): + script.push_back(f.get_line()) + f.close() + for cmd in script: + _on_LineEdit_text_entered(cmd) + else: + debug_print_line("File not found: " + command[1] + "\n") + else: + debug_print_line(get_usage(command[0])) + func perf(attribute): if attribute.is_valid_integer(): return Performance.get_monitor(int(attribute)) diff --git a/godot_ship/script/game/Gameplay/Ship.gd b/godot_ship/script/game/Gameplay/Ship.gd index e39d8d1..6191e67 100644 --- a/godot_ship/script/game/Gameplay/Ship.gd +++ b/godot_ship/script/game/Gameplay/Ship.gd @@ -6,9 +6,9 @@ extends Control enum Orientation {X = 0, Y = 1} # Size of ship in board units -var size +var size = 2 # Coordinates of ship's center. Ship extends [-(size-1 >> 1), (size/2 >> 1)] -var boardposition +var boardposition = Vector2(-1,-1) # Variable storing whether the ship is sunk, for rendering purposes var sunk = false # Orientation of the ship (see enum Orientation) @@ -46,17 +46,23 @@ func getSunk(): # returns an array of the positions that the ship occupies func getExtent(): var extent = [] + + for i in size: + var x = boardposition.x - int(!orientation) * ((size - 1) / 2) + int(!orientation) * i + var y = boardposition.y - orientation * ((size - 1) / 2) + orientation * i + print(Vector2(x,y)) + #vertical orientation if orientation == 1: for i in size: - var pos + var pos = Vector2(0,0) pos.x = boardposition.x pos.y = boardposition.y - ((size - 1) / 2) + i extent.append(pos) #horizontal orientation if orientation == 0: for i in size: - var pos + var pos = Vector2(0,0) pos.x = boardposition.x - ((size - 1) / 2) + i pos.y = boardposition.y extent.append(pos) From ecbf14c9981beb7364a73898db6b52b5cc28396f Mon Sep 17 00:00:00 2001 From: John Breaux Date: Sun, 14 Nov 2021 07:13:53 -0600 Subject: [PATCH 067/107] Finish scripting implementation --- godot_ship/script/debug/debug_menu.gd | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/godot_ship/script/debug/debug_menu.gd b/godot_ship/script/debug/debug_menu.gd index 4ef7654..dc8d14a 100644 --- a/godot_ship/script/debug/debug_menu.gd +++ b/godot_ship/script/debug/debug_menu.gd @@ -11,6 +11,9 @@ var menu_velocity = 4 var history : Array = [] var history_pos = 0 +# Controls whether to print to the screen +var echo = true + onready var expression = Expression.new() # helptext: args list and help blurb accessed by function name @@ -38,7 +41,8 @@ var helptext = { "command_getprop": [" prop", "Get the value of property prop\n" ], "command_setprop": [" prop value", "Set the property prop to value.\n" ], - "command_script": [" path", "Load and execute a script at a given path.\n" ], + "command_script": [" path", "Load and execute a script at a given path.\n" ], + "command_echo": [" on/off", "Controls whether lines should be printed to the screen\n" ], "command_restart": ["", "Kill the current scene tree and plant a new Root.\n" ], "command_exit": ["", "Quits the program.\n" ], @@ -72,6 +76,7 @@ var commands = { ["setprop","set", "s"]: "command_setprop", ["script", "sh"]: "command_script", + ["@echo"]: "command_echo", ["restart", "killall"]: "command_restart", ["exit", "quit"]: "command_exit", @@ -158,14 +163,13 @@ func _input(event): # params: line: Line of text entered by user # returns: void func _on_LineEdit_text_entered(line): - if line != "": - history_append(line) emit_signal("clear_in") debug_print_line(line + "\n") var command = line.split(' ', true, 1) var command_func = parse(command[0]) if command_func: call(command_func, command) + history_append(line) else: debug_print_line("dbg: command not found: " + command[0] + "\n") debug_print_line("> ") @@ -197,7 +201,8 @@ func history_move(rel_pos): # params: string: Text string to print # returns: void func debug_print_line(string): - emit_signal("print_text", string.c_unescape()) + if echo: + emit_signal("print_text", string.c_unescape()) # get_pwn: get the present working node if valid, otherwise cd to root func get_pwn(): @@ -282,7 +287,7 @@ func string_to_variant(string, type): res = null TYPE_BOOL: match string.to_lower(): - "true", "1", "ok": + "true", "1", "ok", "on": res = true _: res = false @@ -532,13 +537,23 @@ func command_script(command): while not f.eof_reached(): script.push_back(f.get_line()) f.close() + echo = false + var h = history_pos for cmd in script: _on_LineEdit_text_entered(cmd) + history_pos = h + echo = true else: debug_print_line("File not found: " + command[1] + "\n") else: debug_print_line(get_usage(command[0])) +func command_echo(command): + if command.size() > 1: + echo = string_to_variant(command[1], TYPE_BOOL) + else: + debug_print_line(get_usage(command[0])) + func perf(attribute): if attribute.is_valid_integer(): return Performance.get_monitor(int(attribute)) From dae4c56a2b3110190d2ea2eac466dd79073d95a8 Mon Sep 17 00:00:00 2001 From: John Breaux Date: Sun, 14 Nov 2021 07:14:35 -0600 Subject: [PATCH 068/107] Refactor ship extents logic --- godot_ship/script/game/Gameplay/Ship.gd | 29 +++++++------------------ 1 file changed, 8 insertions(+), 21 deletions(-) diff --git a/godot_ship/script/game/Gameplay/Ship.gd b/godot_ship/script/game/Gameplay/Ship.gd index 6191e67..5952eab 100644 --- a/godot_ship/script/game/Gameplay/Ship.gd +++ b/godot_ship/script/game/Gameplay/Ship.gd @@ -46,29 +46,16 @@ func getSunk(): # returns an array of the positions that the ship occupies func getExtent(): var extent = [] - + # Find each tile of the ship for i in size: - var x = boardposition.x - int(!orientation) * ((size - 1) / 2) + int(!orientation) * i - var y = boardposition.y - orientation * ((size - 1) / 2) + orientation * i - print(Vector2(x,y)) - - #vertical orientation - if orientation == 1: - for i in size: - var pos = Vector2(0,0) - pos.x = boardposition.x - pos.y = boardposition.y - ((size - 1) / 2) + i - extent.append(pos) - #horizontal orientation - if orientation == 0: - for i in size: - var pos = Vector2(0,0) - pos.x = boardposition.x - ((size - 1) / 2) + i - pos.y = boardposition.y - extent.append(pos) - print(extent) + # Calculate the x axis position + var x = boardposition.x - (1 - orientation) * ( (size - 1) / 2 - i ) + # Calculate the y axis position + var y = boardposition.y - orientation * ( (size - 1) / 2 - i ) + # Append the point onto the array + extent.push_back(Vector2(x,y)) return extent - + # generates a texture at the spot (index should start at 0) func texture(index): var state = 0 # floating From b8d0e008d1697d2957a94946b48d6cc03f2c6184 Mon Sep 17 00:00:00 2001 From: John Breaux Date: Sun, 14 Nov 2021 07:36:30 -0600 Subject: [PATCH 069/107] Debug: Change script location, and make helptext for sh/script more clear. Last addition, I swear. --- godot_ship/script/debug/debug_menu.gd | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/godot_ship/script/debug/debug_menu.gd b/godot_ship/script/debug/debug_menu.gd index dc8d14a..91da5b4 100644 --- a/godot_ship/script/debug/debug_menu.gd +++ b/godot_ship/script/debug/debug_menu.gd @@ -41,7 +41,7 @@ var helptext = { "command_getprop": [" prop", "Get the value of property prop\n" ], "command_setprop": [" prop value", "Set the property prop to value.\n" ], - "command_script": [" path", "Load and execute a script at a given path.\n" ], + "command_script": [" path", "Load and execute a script at user://scripts/\n" ], "command_echo": [" on/off", "Controls whether lines should be printed to the screen\n" ], "command_restart": ["", "Kill the current scene tree and plant a new Root.\n" ], "command_exit": ["", "Quits the program.\n" ], @@ -80,7 +80,7 @@ var commands = { ["restart", "killall"]: "command_restart", ["exit", "quit"]: "command_exit", - [""]: "command_empty" + ["", "#"]: "command_empty" } #List of all of Godot's builtin types @@ -526,21 +526,27 @@ func command_perf(command): else: debug_print_line(get_usage(command[0])) -# script: run a script from user:// +# script: run a script from user://scripts/ func command_script(command): var script = [] if (command.size() > 1): - var path = "user://" + command[1] + var path = "user://scripts/" + command[1] var f = File.new() var err = f.open(path, File.READ) if err == OK: + # Read the file while not f.eof_reached(): script.push_back(f.get_line()) f.close() + # Save state and turn off echo echo = false + var pwn = present_working_node var h = history_pos + # Execute the script for cmd in script: _on_LineEdit_text_entered(cmd) + # Restore state and turn on echo + present_working_node = pwn history_pos = h echo = true else: From 6758dc048e512becfc18875d533ec347e2ff1461 Mon Sep 17 00:00:00 2001 From: John Breaux Date: Sun, 14 Nov 2021 08:00:56 -0600 Subject: [PATCH 070/107] Debug: I lied. Ran into a bug regarding state save/restore when nesting scripts. --- godot_ship/script/debug/debug_menu.gd | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/godot_ship/script/debug/debug_menu.gd b/godot_ship/script/debug/debug_menu.gd index 91da5b4..1b9eb9a 100644 --- a/godot_ship/script/debug/debug_menu.gd +++ b/godot_ship/script/debug/debug_menu.gd @@ -539,16 +539,21 @@ func command_script(command): script.push_back(f.get_line()) f.close() # Save state and turn off echo + var state = {"echo": echo, + "pwn": present_working_node, + "history_pos": history_pos, + "history": history, + "expression": expression} echo = false - var pwn = present_working_node - var h = history_pos # Execute the script for cmd in script: _on_LineEdit_text_entered(cmd) - # Restore state and turn on echo - present_working_node = pwn - history_pos = h - echo = true + # Restore state + echo = state["echo"] + present_working_node = state["pwn"] + history_pos = state["history_pos"] + history = state["history"] + expression = state["expression"] else: debug_print_line("File not found: " + command[1] + "\n") else: From fd51682eb062ce52b13c9d13b9955dc83f2daf38 Mon Sep 17 00:00:00 2001 From: John Breaux Date: Sun, 14 Nov 2021 14:04:32 -0600 Subject: [PATCH 071/107] Ship: Complete initial implementation. Impl's #16 --- godot_ship/scenes/Game/Ship.tscn | 7 +- godot_ship/script/game/Gameplay/Ship.gd | 117 ++++++++++++++++++------ 2 files changed, 89 insertions(+), 35 deletions(-) diff --git a/godot_ship/scenes/Game/Ship.tscn b/godot_ship/scenes/Game/Ship.tscn index 6b026e1..a41a401 100644 --- a/godot_ship/scenes/Game/Ship.tscn +++ b/godot_ship/scenes/Game/Ship.tscn @@ -2,10 +2,5 @@ [ext_resource path="res://script/game/Gameplay/Ship.gd" type="Script" id=1] -[node name="Ship" type="Control"] -anchor_right = 1.0 -anchor_bottom = 1.0 +[node name="Ship" type="Node2D"] script = ExtResource( 1 ) -__meta__ = { -"_edit_use_anchors_": false -} diff --git a/godot_ship/script/game/Gameplay/Ship.gd b/godot_ship/script/game/Gameplay/Ship.gd index 5952eab..2432fb6 100644 --- a/godot_ship/script/game/Gameplay/Ship.gd +++ b/godot_ship/script/game/Gameplay/Ship.gd @@ -1,12 +1,14 @@ -extends Control +extends Node2D # This is the rendered element of a "ship", generated when the game transitions from the placing state to the gameplay state # Enum denoting the orientation (X is 0, Y is 1) enum Orientation {X = 0, Y = 1} +enum {MISS = -1, READY = 0, HIT = 1, SUNK = 2} # Size of ship in board units -var size = 2 +var size +var health # Coordinates of ship's center. Ship extends [-(size-1 >> 1), (size/2 >> 1)] var boardposition = Vector2(-1,-1) # Variable storing whether the ship is sunk, for rendering purposes @@ -15,11 +17,16 @@ var sunk = false var orientation = Orientation.Y # array of spots thats been hit var hit = [] +# Variable storing the positions of each piece of the ship +var extents = [] # Ship sprite metadata -# sprite: the texture atlas containing all ship parts -var atlas # = TODO: figure out how to use one sprite for multiple textures -# variant: for ship 3. A is 0, B is 1 +# atlas: the texture atlas containing all ship parts +var atlas = preload("res://assets/game/TextureAtlas.png") +# sprites: the individual sprite nodes which make up the ship +var sprites = [] +# variant: Ships of the same length can have different textures +# variant A is 0, variant B is 1, ... var variant = 0 # Called when the node enters the scene tree for the first time. @@ -27,24 +34,43 @@ func _ready(): pass # Replace with function body. # member functions: -# getSize: get the size of the ship, in board-units (2 for 2-ship, 3 for 3-ship, ...) -func getSize(): - return size - -# getPosition: get the position of the ship's center, in board units -func getPosition(): - return boardposition - -# getOrientation: get the orientation of the ship (see enum Orientation) -func getOrientation(): - return orientation +# getShip(): +func get_ship(): + return [boardposition, size, orientation, variant] # getSunk: get whether the ship is sunk -func getSunk(): +func get_sunk(): return sunk +func hit(pos): + # Assume the opponent missed + var res = MISS + # Find the position in the extents + var index = extents.find(pos) + # If that position exists: + if (index > -1): + # Hit the ship piece at that location + hit[index] = true + res = HIT + # Decrement its health + health -= 1 + # If there's no more health, + if health == 0: + # Sink the ship. + set_sunk() + res = SUNK + return res + +# update: (re)calculates extents and textures +func update(): + # Calculate the extents (shouldn't change) + extents = get_extent() + # Update the textures + for i in size: + texture(i) + # returns an array of the positions that the ship occupies -func getExtent(): +func get_extent(): var extent = [] # Find each tile of the ship for i in size: @@ -56,32 +82,65 @@ func getExtent(): extent.push_back(Vector2(x,y)) return extent -# generates a texture at the spot (index should start at 0) +# Update textures func texture(index): - var state = 0 # floating + var state = 0 # ready if(hit[index]): - state = 1 # sunk + state = 1 # hit var textureSize = 32 + # It's okay to create a new texture every time, as resources are refcounted var t = AtlasTexture.new() - t.atlas = load("res://assets/game/TextureAtlas.png") - t.region ( - (size * textureSize) * variant + (32 * index), + t.set_atlas(atlas) + t.margin = Rect2(0, 0, 32, 32) + t.region = Rect2( + (size * variant + index) * textureSize, + #(size * textureSize) * variant + (32 * index), (size - 2) * textureSize * 2 + (32 * state), textureSize, textureSize ) - - pass - + # Create a new Sprite to house the texture, or use the existing sprite + var sprite = sprites[index] + if sprite == null: + sprite = Sprite.new() + sprite.texture = t + # This is relative to the ship + # (index + 1) => Index, but 1-based + # (floor((size-1)/2) => Offset from edge to 'center' of ship + # Vector2(0.5,0.5) => Center the texture on the axis of rotation + # 32 => Converts from board-units to pixels + sprite.position = Vector2((index + 1) - (floor((size-1)/2) + 0.5), 0.5) * textureSize + sprite.rotation = 0 + # Add the sprite to the "sprites" group, persistently + sprite.add_to_group("Ship Sprites", true) + # Add the sprite node to an array so it can be modified later, unless it's already there + if not sprites[index]: + sprites[index] = sprite + add_child(sprite) + # setSunk: sink the ship -func setSunk(): +func set_sunk(): sunk = true # _init: called on object initialization. Accepts args if called via .new(...) # in_position: position of the ship, in board-coordinates; (0,0) by default # in_size: size of the ship, in board-units; 2 by default # in_orientation: orientation of the ship (see enum Orientation); vertical by default -func _init(in_position = Vector2(0,0), in_size = 2, in_orientation = Orientation.Y): +# in_variant: Which ship is this? +func _init(in_position = Vector2(0,0), in_size = 0, in_orientation = Orientation.Y, in_variant = 0): + # Set the ship's positions boardposition = in_position + position = boardposition * 32 + # Set the ship's size and health size = in_size + health = size + # Set the ship's orientation/rotation orientation = in_orientation + rotation = orientation * PI/2 + # Set the ship's variant(A, B, ... ) + variant = in_variant + # Resize the size-based arrays + hit.resize(in_size) + sprites.resize(in_size) + # Update the extents and draw the textures + update() From 4730bf773387fd94e6dca5173c246130ea3ff504 Mon Sep 17 00:00:00 2001 From: John Breaux Date: Sun, 14 Nov 2021 14:06:09 -0600 Subject: [PATCH 072/107] Board: Start initial implementation. --- godot_ship/scenes/Game/Board.tscn | 13 ++++ godot_ship/script/game/Gameplay/Board.gd | 86 ++++++++++++++++++------ 2 files changed, 77 insertions(+), 22 deletions(-) create mode 100644 godot_ship/scenes/Game/Board.tscn diff --git a/godot_ship/scenes/Game/Board.tscn b/godot_ship/scenes/Game/Board.tscn new file mode 100644 index 0000000..3410f58 --- /dev/null +++ b/godot_ship/scenes/Game/Board.tscn @@ -0,0 +1,13 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://script/game/Gameplay/Board.gd" type="Script" id=1] +[ext_resource path="res://assets/game/board_dark.png" type="Texture" id=2] + +[node name="Board" type="Node2D"] +position = Vector2( 36, 36 ) +script = ExtResource( 1 ) + +[node name="TempBoardSprite" type="Sprite" parent="."] +texture = ExtResource( 2 ) +centered = false +offset = Vector2( -18, -18 ) diff --git a/godot_ship/script/game/Gameplay/Board.gd b/godot_ship/script/game/Gameplay/Board.gd index de71f89..9096a6f 100644 --- a/godot_ship/script/game/Gameplay/Board.gd +++ b/godot_ship/script/game/Gameplay/Board.gd @@ -1,36 +1,83 @@ -extends Node +extends Node2D # Path to Ship class, for instantiating new Ships in code onready var Ship = load("res://script/game/Gameplay/Ship.gd") -var bottom_board # Player board -var top_board # Opponent board -var ships # list of Ships -var ship_count # number of 'active' (un-sunk) ships +# Consts and enums +const NO_SHIP = -1 +enum {MISS = -1, READY = 0, HIT = 1, SUNK = 2} -# a board is square. This is its side lengths +var bottom_board:Array # Player board +var top_board:Array # Opponent board +var ships = [] # list of Ships +var ship_count = 0 # number of 'active' (un-sunk) ships + +# a board is square. This is its side length var board_len = 10 -# Called when the node enters the scene tree for the first time. -func _ready(): - ships = [] - ship_count = 0 +# The top board must be marked by textures. This is where they are stored: +var sprites = [] + +# Here are where the hit/miss textures are loaded, so that they may be used: +var hit_texture = preload("res://assets/game/Hit.png") +var miss_texture = preload("res://assets/game/Miss.png") + # TODO: What state? -func getState(): +func get_state(): pass +# Evaluate being hit by an opponent +# pos: board position opponent fired at +func hit(pos): + var res = MISS + # Get the ship-metadata for that location + var ship = bottom_board[pos.x][pos.y] + # If there's a ship there, which exists, and hasn't been hit, + if ship and ship[0] > NO_SHIP and ship[1] == READY: + # Hit the ship, and store whether HIT or SUNK + res = ships[ship[0]].hit(pos) + # TODO: display KABOOM + # Update the ship + ships[ship[0]].update() + # Mark the ship as hit + ship[1] = HIT + else: + # Mark that position as a miss, with no ship + bottom_board[pos.x][pos.y] = [NO_SHIP, MISS] + # If ship sunk, + if res == SUNK: + # remove it from the count + ship_count -= 1 + return res + +# fire: Store the results of firing on an opponent +# pos: board position fired on +# res: result of firing on the opponent +func fire(pos, res): + if top_board[pos.x][pos.y] == null: + top_board[pos.x][pos.y] = res + return true + return false + # Place a ship on the board at board-space coordinates -func placeShip(in_position, in_size, in_orientation): - ships.append(Ship.new(in_position, in_size, in_orientation)) - pass +func place_ship(in_position, in_size, in_orientation, in_variant = 0): + var ship = Ship.new(in_position, in_size, in_orientation, in_variant) + for pos in ship.get_extent(): + bottom_board[pos.x][pos.y] = [ships.size(), READY] + ships.append(ship) + ship_count += 1 + add_child(ship) -func getBottomBoard(): - pass +# Not sure why this is necessary yet +func get_bottom_board(): + return bottom_board -func getShipCount(): +# Get the number of live ships +func get_ship_count(): return ship_count +# _init: Constructor func _init(): # Initialize the bottom_board to a 10x10 array for _row in range(board_len): @@ -47,8 +94,3 @@ func _init(): func worldspace_to_boardspace(coordinate:Vector2): # subtract 36 to get the position relative to (0,0) on the board, and integer divide by 32 return Vector2(int(coordinate.x - 36) >> 5, int(coordinate.y-36) >> 5) - -# Coordinates of ship's center. Ship extends [-(size-1 >> 1), (size/2 >> 1)] -func shiptoboard(ship:Ship): - for i in range (ship.) - pass From 64c5c076245c33537d9b3f62b84d359fda74bf36 Mon Sep 17 00:00:00 2001 From: John Breaux Date: Sun, 14 Nov 2021 14:06:56 -0600 Subject: [PATCH 073/107] Debug: Refine command processing to more granularly control printing during script execution. --- godot_ship/script/debug/debug_menu.gd | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/godot_ship/script/debug/debug_menu.gd b/godot_ship/script/debug/debug_menu.gd index 1b9eb9a..ef2950c 100644 --- a/godot_ship/script/debug/debug_menu.gd +++ b/godot_ship/script/debug/debug_menu.gd @@ -158,7 +158,7 @@ func _input(event): #traverse history down history_move(+1) -# Signal-processing functions: +# Command-processing functions: # _on_LineEdit_text_entered: process incoming text line # params: line: Line of text entered by user # returns: void @@ -166,14 +166,21 @@ func _on_LineEdit_text_entered(line): emit_signal("clear_in") debug_print_line(line + "\n") var command = line.split(' ', true, 1) - var command_func = parse(command[0]) - if command_func: - call(command_func, command) + if execute_command(command): history_append(line) else: debug_print_line("dbg: command not found: " + command[0] + "\n") debug_print_line("> ") +# execute_command: execute a line of text as a command +# params: command: partially tokenized PoolStringArray ["command_alias", "parameters ..."] +# returns: name of executed function, or null if nothing executed +func execute_command(command): + var command_func = parse(command[0]) + if command_func: + call(command_func, command) + return command_func + # History_related helper functions: # history_append: add a line of text to the history # params: text: line of text (unparsed command) to add to history @@ -376,7 +383,7 @@ func command_restart (_command): # print: prints a message to the in-game debug console func command_print(command): if command.size() > 1: - debug_print_line(command[1] + "\n") + debug_print_line(command[1]) else: debug_print_line("\n") @@ -547,7 +554,8 @@ func command_script(command): echo = false # Execute the script for cmd in script: - _on_LineEdit_text_entered(cmd) + cmd = cmd.split(' ', true, 1) + execute_command(cmd) # Restore state echo = state["echo"] present_working_node = state["pwn"] From 83f319b76cf9fba4d6759a7135df510c86f7b958 Mon Sep 17 00:00:00 2001 From: hpham474 Date: Sun, 14 Nov 2021 20:12:01 -0600 Subject: [PATCH 074/107] Partial implementation of the player class --- godot_ship/script/game/Gameplay/Player.gd | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/godot_ship/script/game/Gameplay/Player.gd b/godot_ship/script/game/Gameplay/Player.gd index ca89ece..713ba83 100644 --- a/godot_ship/script/game/Gameplay/Player.gd +++ b/godot_ship/script/game/Gameplay/Player.gd @@ -14,19 +14,28 @@ func _ready(): # Member functions: # hit: Called when opponent fires on us. -# Update internal state, and return bool hit/miss -func hit(): +# Update internal state, and return bool hit/miss, hit = true, miss = false +func hit(pos): + var res = board.hit(pos) + if res == -1: + return true + else: + return false pass # place_ship: called when ships are placed. # forwards Ship locations to the Board, so that it may construct a ship # ship: a list of ship properties {position, orientation, size} +# NOTE: Variant? Assuming _ship is an array of lists of ship properties func place_ship(_ship): + for i in _ship: + board.place_ship(i) pass # setUp: set up the board given the placed ship locations # translates the ship positions in the Setup UI to board-space, then places each ship # ships: a list of lists of ship properties {{position, orientation, size}, ...} +# NOTE: What is the difference place_ship() and set_up() func set_up(_ships): pass @@ -46,10 +55,18 @@ func getBoard(): # forfeit: ends game for player # Sinks all ships +# hits every single board tile func forfeit(): - pass + for i in 10: + for j in 10: + var pos + pos.x = i + pos.y = j + hit(pos) # getShipCount: get the number of ships the player has left alive func getShipCount(): + var count = board.get_ship_count() + return count pass From aed672fdd4b9c1001cecb259ad38b2f1309b13c2 Mon Sep 17 00:00:00 2001 From: John Breaux Date: Sun, 14 Nov 2021 22:46:21 -0600 Subject: [PATCH 075/107] Setup: Add variant to ShipData. --- godot_ship/script/game/Setup.gd | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/godot_ship/script/game/Setup.gd b/godot_ship/script/game/Setup.gd index e958ea7..ce7074b 100644 --- a/godot_ship/script/game/Setup.gd +++ b/godot_ship/script/game/Setup.gd @@ -13,6 +13,7 @@ class ShipData: var Position: Vector2 var Length: int var Orientation: bool # (True = vertical) (False = horizontal) + var Variant: int = 0 # Called when the node enters the scene tree for the first time. func _ready(): @@ -41,11 +42,16 @@ func _on_Confirm_Placement_pressed(): #Saves the location of ships and length of ship into an array var shipLocation = [] for ship in Ships: - var location = ShipData.new() - location.Position = get_node(ship).position - location.Length = get_node(ship).get("ship_length") - location.Orientation = get_node(ship).get("vertical") - shipLocation.append(location) + var shipdata = ShipData.new() + shipdata.Position = get_node(ship).position + shipdata.Length = get_node(ship).get("ship_length") + shipdata.Orientation = get_node(ship).get("vertical") + match ship: + "3ShipB": + shipdata.Variant = 1 + _: + shipdata.Variant = 0 + shipLocation.append(shipdata) #print out the array for testing for x in shipLocation: From 8e4600eedeb3086a3ed73648a0a4fb06727d2f57 Mon Sep 17 00:00:00 2001 From: hpham474 Date: Sun, 14 Nov 2021 22:47:01 -0600 Subject: [PATCH 076/107] Added player class functionality --- godot_ship/script/game/Gameplay/Player.gd | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/godot_ship/script/game/Gameplay/Player.gd b/godot_ship/script/game/Gameplay/Player.gd index 713ba83..c490642 100644 --- a/godot_ship/script/game/Gameplay/Player.gd +++ b/godot_ship/script/game/Gameplay/Player.gd @@ -25,19 +25,16 @@ func hit(pos): # place_ship: called when ships are placed. # forwards Ship locations to the Board, so that it may construct a ship -# ship: a list of ship properties {position, orientation, size} -# NOTE: Variant? Assuming _ship is an array of lists of ship properties -func place_ship(_ship): - for i in _ship: - board.place_ship(i) - pass +# ship: a list of ship properties {position, orientation, size, variant} +func place_ship(pos, size, orientation, variant): + board.place_ship(pos, size, orientation, variant) # setUp: set up the board given the placed ship locations # translates the ship positions in the Setup UI to board-space, then places each ship -# ships: a list of lists of ship properties {{position, orientation, size}, ...} -# NOTE: What is the difference place_ship() and set_up() -func set_up(_ships): - pass +# ships: a list of lists of ship properties {{position, orientation, size, variant}, ...} +func set_up(ships): + for i in ships: + place_ship(ships[i].Position, ships[i].Size, ships.Orientation, ships[i].Variant) # turnStart: start player's turn # Initiates the player's turn, and blocks until the player selects a location to fire upon From 36cc6896b1dc4523aca6f3d07a4976a1eda03f76 Mon Sep 17 00:00:00 2001 From: John Breaux Date: Sun, 14 Nov 2021 23:50:23 -0600 Subject: [PATCH 077/107] Game: Move debug logic out of Game --- godot_ship/script/game/Gameplay/Game.gd | 18 +----------------- godot_ship/script/game/Gameplay/Player.gd | 12 +++++++++++- 2 files changed, 12 insertions(+), 18 deletions(-) diff --git a/godot_ship/script/game/Gameplay/Game.gd b/godot_ship/script/game/Gameplay/Game.gd index fe79fb2..6245fad 100644 --- a/godot_ship/script/game/Gameplay/Game.gd +++ b/godot_ship/script/game/Gameplay/Game.gd @@ -1,18 +1,8 @@ extends Node -class ShipData: - var Coor: Vector2 - var Length: int - var Orientation: bool #vertical is true, (Trueship = vertical) (Falseship = horizontal) - var light_theme = load("res://light_theme.tres") var dark_theme = load("res://dark_theme.tres") -# Preloaded assets, to be used later -# TODO: Move Setup into the Player. It's just here, for now, so that it can be tested and the game doesn't appear broken -onready var Setup = preload("res://scenes/Game/Setup.tscn") -# TODO: Move Fire into the Player. See above. -onready var Fire = preload("res://scenes/Game/Fire.tscn") # Path to Player class, for instantiating new Players in code onready var Player = preload("res://scenes/Game/Player.tscn") @@ -33,11 +23,7 @@ var is_multiplayer = false # Called when the node enters the scene tree for the first time. func _ready(): - # TODO: Move Setup into the Player. - var setup = Setup.instance() - setup.connect("game_ready", self, "game_setup") - add_child(setup) - + get_node("ConfirmationDialog").get_ok().text = "Yes" get_node("ConfirmationDialog").get_cancel().text = "No" get_node("ConfirmationDialog").get_ok().rect_min_size.x = 100 @@ -50,8 +36,6 @@ func _ready(): # TODO: Move Setup into the Player. func game_setup(_ships): print_debug("Congrats! Setup complete.") - # TODO: Move Fire into the Player. - add_child(Fire.instance()) # Member functions: # game_start: starts the game diff --git a/godot_ship/script/game/Gameplay/Player.gd b/godot_ship/script/game/Gameplay/Player.gd index c490642..81e8856 100644 --- a/godot_ship/script/game/Gameplay/Player.gd +++ b/godot_ship/script/game/Gameplay/Player.gd @@ -3,6 +3,12 @@ extends Node # Path to Board class, for instantiating new Boards in code var Board = "res://script/game/Gameplay/Board.gd" +# Preloaded assets, to be used later +# TODO: Move Setup into the Player. It's just here, for now, so that it can be tested and the game doesn't appear broken +onready var Setup = preload("res://scenes/Game/Setup.tscn") +# TODO: Move Fire into the Player. See above. +onready var Fire = preload("res://scenes/Game/Fire.tscn") + # Player ID of this player var pid # board (an instance of the Board class) @@ -10,7 +16,9 @@ onready var board = Board.new() # Called when the node enters the scene tree for the first time. func _ready(): - pass # Replace with function body. + var setup = Setup.instance() + setup.connect("game_ready", self, "game_setup") + add_child(setup) # Member functions: # hit: Called when opponent fires on us. @@ -40,6 +48,8 @@ func set_up(ships): # Initiates the player's turn, and blocks until the player selects a location to fire upon # returns: fire = [player id, target coordinates] func turnStart(): + # TODO: Yielf until Fire return + add_child(Fire.instance()) var player_id = 0 var target = Vector2(0,0) return [player_id, target] From 72ac64f6d040024a4c78660ec01230a58cf34f09 Mon Sep 17 00:00:00 2001 From: John Breaux Date: Mon, 15 Nov 2021 01:17:32 -0600 Subject: [PATCH 078/107] Game: Implement player setup --- godot_ship/scenes/Game/Player.tscn | 6 ++++- godot_ship/script/game/Gameplay/Board.gd | 5 +++-- godot_ship/script/game/Gameplay/Game.gd | 15 ++++++++++--- godot_ship/script/game/Gameplay/Player.gd | 21 ++++++++++++------ godot_ship/script/game/Gameplay/Ship.gd | 8 +++---- godot_ship/script/game/Setup.gd | 27 +++++++---------------- godot_ship/script/game/SetupShip.gd | 6 +++++ 7 files changed, 52 insertions(+), 36 deletions(-) diff --git a/godot_ship/scenes/Game/Player.tscn b/godot_ship/scenes/Game/Player.tscn index a0e1be0..f48de99 100644 --- a/godot_ship/scenes/Game/Player.tscn +++ b/godot_ship/scenes/Game/Player.tscn @@ -1,8 +1,12 @@ -[gd_scene format=2] +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://script/game/Gameplay/Player.gd" type="Script" id=1] [node name="Player" type="Control"] anchor_right = 1.0 anchor_bottom = 1.0 +mouse_filter = 2 +script = ExtResource( 1 ) __meta__ = { "_edit_use_anchors_": false } diff --git a/godot_ship/script/game/Gameplay/Board.gd b/godot_ship/script/game/Gameplay/Board.gd index 9096a6f..894ad19 100644 --- a/godot_ship/script/game/Gameplay/Board.gd +++ b/godot_ship/script/game/Gameplay/Board.gd @@ -1,7 +1,7 @@ extends Node2D # Path to Ship class, for instantiating new Ships in code -onready var Ship = load("res://script/game/Gameplay/Ship.gd") +var Ship = preload("res://scenes/Game/Ship.tscn") # Consts and enums const NO_SHIP = -1 @@ -62,7 +62,8 @@ func fire(pos, res): # Place a ship on the board at board-space coordinates func place_ship(in_position, in_size, in_orientation, in_variant = 0): - var ship = Ship.new(in_position, in_size, in_orientation, in_variant) + var ship = Ship.instance() + ship._init(in_position, in_size, in_orientation, in_variant) for pos in ship.get_extent(): bottom_board[pos.x][pos.y] = [ships.size(), READY] ships.append(ship) diff --git a/godot_ship/script/game/Gameplay/Game.gd b/godot_ship/script/game/Gameplay/Game.gd index 6245fad..4a4fd84 100644 --- a/godot_ship/script/game/Gameplay/Game.gd +++ b/godot_ship/script/game/Gameplay/Game.gd @@ -11,7 +11,7 @@ onready var Victory = preload("res://scenes/Game/Victory.tscn") # Array of instances of the Player class; stores the Players -var players # = player1, player2, ... +var players = [] # = player1, player2, ... # turn counter var turn = 0 # Variable transporting hit state between players @@ -32,14 +32,23 @@ func _ready(): var _errno = 0; _errno += OptionsController.connect("change_theme", self, "_on_change_theme") _on_change_theme(OptionsController.get_theme()) + game_start() -# TODO: Move Setup into the Player. -func game_setup(_ships): +func game_setup(): print_debug("Congrats! Setup complete.") # Member functions: # game_start: starts the game func game_start(): + # Create a player 1 + var player = Player.instance() + # TODO: Create valid callback for player_ready + # It shouldn't connect to game_setup + player.connect("player_ready", self, "game_setup") + # Add player to scene tree + add_child(player) + # Add player to players + players.append(player) pass # victory_screen: display the victory screen diff --git a/godot_ship/script/game/Gameplay/Player.gd b/godot_ship/script/game/Gameplay/Player.gd index 81e8856..0855916 100644 --- a/godot_ship/script/game/Gameplay/Player.gd +++ b/godot_ship/script/game/Gameplay/Player.gd @@ -1,23 +1,26 @@ extends Node # Path to Board class, for instantiating new Boards in code -var Board = "res://script/game/Gameplay/Board.gd" +var Board = preload("res://scenes/Game/Board.tscn") # Preloaded assets, to be used later # TODO: Move Setup into the Player. It's just here, for now, so that it can be tested and the game doesn't appear broken -onready var Setup = preload("res://scenes/Game/Setup.tscn") +var Setup = preload("res://scenes/Game/Setup.tscn") # TODO: Move Fire into the Player. See above. -onready var Fire = preload("res://scenes/Game/Fire.tscn") +var Fire = preload("res://scenes/Game/Fire.tscn") + +signal player_ready + # Player ID of this player var pid # board (an instance of the Board class) -onready var board = Board.new() +onready var board = Board.instance() # Called when the node enters the scene tree for the first time. func _ready(): var setup = Setup.instance() - setup.connect("game_ready", self, "game_setup") + setup.connect("board_ready", self, "set_up") add_child(setup) # Member functions: @@ -39,10 +42,14 @@ func place_ship(pos, size, orientation, variant): # setUp: set up the board given the placed ship locations # translates the ship positions in the Setup UI to board-space, then places each ship -# ships: a list of lists of ship properties {{position, orientation, size, variant}, ...} +# ships: a list of lists of ship properties [[position, orientation, size, variant], ...] func set_up(ships): + # Place all the ships for i in ships: - place_ship(ships[i].Position, ships[i].Size, ships.Orientation, ships[i].Variant) + place_ship(i[0], i[1], i[2], i[3]) + emit_signal("player_ready") + # Add the board to the tree + add_child(board) # turnStart: start player's turn # Initiates the player's turn, and blocks until the player selects a location to fire upon diff --git a/godot_ship/script/game/Gameplay/Ship.gd b/godot_ship/script/game/Gameplay/Ship.gd index 2432fb6..bddc046 100644 --- a/godot_ship/script/game/Gameplay/Ship.gd +++ b/godot_ship/script/game/Gameplay/Ship.gd @@ -16,7 +16,7 @@ var sunk = false # Orientation of the ship (see enum Orientation) var orientation = Orientation.Y # array of spots thats been hit -var hit = [] +var hits = [] # Variable storing the positions of each piece of the ship var extents = [] @@ -50,7 +50,7 @@ func hit(pos): # If that position exists: if (index > -1): # Hit the ship piece at that location - hit[index] = true + hits[index] = true res = HIT # Decrement its health health -= 1 @@ -85,7 +85,7 @@ func get_extent(): # Update textures func texture(index): var state = 0 # ready - if(hit[index]): + if(hits[index]): state = 1 # hit var textureSize = 32 # It's okay to create a new texture every time, as resources are refcounted @@ -140,7 +140,7 @@ func _init(in_position = Vector2(0,0), in_size = 0, in_orientation = Orientation # Set the ship's variant(A, B, ... ) variant = in_variant # Resize the size-based arrays - hit.resize(in_size) + hits.resize(in_size) sprites.resize(in_size) # Update the extents and draw the textures update() diff --git a/godot_ship/script/game/Setup.gd b/godot_ship/script/game/Setup.gd index ce7074b..1c5cc7b 100644 --- a/godot_ship/script/game/Setup.gd +++ b/godot_ship/script/game/Setup.gd @@ -1,11 +1,9 @@ extends Control -signal game_ready +signal board_ready onready var Ships = ["2Ship", "3ShipA", "3ShipB", "4Ship", "5Ship"] -onready var Victory = preload("res://scenes/Game/Player.tscn") - var light_theme = load("res://light_theme.tres") var dark_theme = load("res://dark_theme.tres") @@ -40,25 +38,16 @@ func _on_Confirm_Placement_pressed(): get_node("PlaceShipDialog").popup() else: #Saves the location of ships and length of ship into an array - var shipLocation = [] + var ship_data = [] for ship in Ships: - var shipdata = ShipData.new() - shipdata.Position = get_node(ship).position - shipdata.Length = get_node(ship).get("ship_length") - shipdata.Orientation = get_node(ship).get("vertical") - match ship: - "3ShipB": - shipdata.Variant = 1 - _: - shipdata.Variant = 0 - shipLocation.append(shipdata) - + ship = get_node(ship) + var data = ship.get_shipdata() + ship_data.append(data) #print out the array for testing - for x in shipLocation: - print("Ship Length: ", x.Length, ", Ship Orientation: ", x.Orientation, ", Ship Position: ", x.Position) - + for x in ship_data: + print_debug("Ship Position: ", x[0], ", Ship Length: ", x[1], ", Ship Orientation: ", x[2], ", Variant: ", x[3]) # Return the shipLocation array to those listening on game_ready - emit_signal("game_ready", shipLocation) + emit_signal("board_ready", ship_data) queue_free() return valid # Replace with function body. diff --git a/godot_ship/script/game/SetupShip.gd b/godot_ship/script/game/SetupShip.gd index 6d923a2..10373fb 100644 --- a/godot_ship/script/game/SetupShip.gd +++ b/godot_ship/script/game/SetupShip.gd @@ -146,6 +146,12 @@ func ship_stacked(_body): func ship_unstacked(_body): collision = false +func get_shipdata(): + var shipdata = [world_to_board_space(position), ship_length, int(vertical)] + var variant = int(name.match("*B")) + shipdata.push_back(variant) + return shipdata + # Calculate the extents (front to back) of the ship and check whether they're on the board # Returns how many squares to move the ship along its orientation axis (positive or negative) func check_extents(center, orientation, length): From a0f4e42914df12ba6cdaf04d16c0945746239ee3 Mon Sep 17 00:00:00 2001 From: hpham474 Date: Mon, 15 Nov 2021 03:39:31 -0600 Subject: [PATCH 079/107] Added missing ship textures into texture atlas --- ...s.png-f8378824db0f2b64b8339984d33f1a41.md5 | 4 ++-- ....png-f8378824db0f2b64b8339984d33f1a41.stex | Bin 14748 -> 23346 bytes godot_ship/assets/game/TextureAtlas.png | Bin 12665 -> 19140 bytes 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/godot_ship/.import/TextureAtlas.png-f8378824db0f2b64b8339984d33f1a41.md5 b/godot_ship/.import/TextureAtlas.png-f8378824db0f2b64b8339984d33f1a41.md5 index d635fb0..7d23ae6 100644 --- a/godot_ship/.import/TextureAtlas.png-f8378824db0f2b64b8339984d33f1a41.md5 +++ b/godot_ship/.import/TextureAtlas.png-f8378824db0f2b64b8339984d33f1a41.md5 @@ -1,3 +1,3 @@ -source_md5="3b774873968ed3ad322fe34d56720cd8" -dest_md5="17d758d595e2d6d8e58671b48f45f54a" +source_md5="4608512057ad7b079766b3ddf107024a" +dest_md5="8f5996bd2322644767582317aefaf44d" diff --git a/godot_ship/.import/TextureAtlas.png-f8378824db0f2b64b8339984d33f1a41.stex b/godot_ship/.import/TextureAtlas.png-f8378824db0f2b64b8339984d33f1a41.stex index 22a9538ebb92481b62eef9761fec6966b2fb8302..3b242eb47b70225e773c167f8a32091b36fb466d 100644 GIT binary patch literal 23346 zcmX_o1z1#Fxb+MN_QjO9TI|cgET5FNJ@8ygmnFf@4xr@Jc7b7 z`<%1)UhjI>S{qp@O)W7n2m}KD!U3N^AWX#9|Kb~hKx!(o6w$y3G-M)V;7e%oa#9+= z3&mbv3_$?C(mz!D6Ziyn*N~L})%+qk0D&k#@>1ejUb!b-&W<|sX{?Wecm$kOG}=%T z3Uv*`A|bS&7C{(d#fK8ZJJunOMTrVZO11}?#d_I%AO3poE0-8vn5*@DG$H0pzAT$e zX5+)D=zB8^mG(}_{!-kFD3OGAAQ|l<9xc8sl_KZPUi&ZqX25+eU~a+YumAPk&EvUy zK(h72q^z+w#Yz1M?at| ziVIlOsx(d^kR;KHammHMJ`Zm%pnA}ZHDH{>ky`3rxbFm*JfGHU2x49T;(=C1sU)1} zN~FVLYIBJjdNkNZ3h>?T-0zNzpF!ZC)S?7xDS2pp)vImX|1#&aN8=t6PS@U^&T7zy zB~v6;8nY>Li!f_#)0o{O}kx&Z(dF+kak>A zvX@-$`e~?;ri9~9b=TgaVyzrC^Q}iGjuwng{HDK{07H`sG^V${ms1JGpZ`wkZGj(m zQh;${z;*Gp@0ShXa3zZRZHw~>%xj$^J@+u(g0yonpYGTGh_q8+DIXxRsfm?_b`GYg zRuw6bLqAiEoahOJnU9qwM;h6-`%Ky|7RH5^eu9^hxshl1*R*pILmYU@fm9>TI0##n zQGZ7T=b^2e7vYM0FV9FI>td?pt)(bbVZ(e1ae)j9he&}x0Cq31-mOu2Rc`J%^Q)iLA}2{W=2}CrU8u?| zYlG@rJPDIe9hR@tv+x{|6c}G+-Z%YNEWo3sH@Qsf=)U!tO5}p7Az5Cv1ssu7cv2rE zAheqojRCqP3t1?+KwKAImI&|>d;NK0^=D_0i1J$sp`?PiYuQ3e<#?oq6EF?*b3xU{ za3#sM{MguGpUu#YE=5Mq`8I*(db)%-!{hBfWX}0us00s>T8NlyWc?^{bnTC=+}&On zKlF#A0vn&KFg_!eo1lB^L z$b@{_JmT`cfl{Lr*hB{agz$kV971#QPhc^rC1!E;=ZFk-nF$O`CPrDo^vZ!qj27GASztYj`-vq! zYOU8tHGGgOsXUN6{Ic-K4Oi$N<#wkyv{Ue-P9Np?6NxB8lX$Ocn0kGHVkCulH(F2v z;Xz=bl80;AhExX`jA>801lX)|sE4A_MFG=(YZ$mqI>(9M z7#$0|**_+C3%Exj64l5bfk%@X^q6;ch|jHb0pWrDY@nTWoWmyv+h&jmfOG|uulpFJ zh>c4Cg;Ecpm#J<8bYPJWtS}!D}PMKJh=_dZD+76rSt8*B90~g zFnJwVW)guPCY#bONWg6?+k#NsZPN3AS5$ZJWOf6%O1wX17g73!_~nqKV_`qT*G)g> zJDc~YKqn{VH0d>c{u|4(yd-HLp|@;BW<&e?pg4xipU^_DAg!C~pOWUOqK+dez`n)c zig=V^b%B94y&pTNh>pRNL8lUV(}E!}boY}-S>X*|LzA~u-PLXU>xxMT^+{Z#MU}y% z1pbVCx!d7YC(n)AE1?ZsM&w3qe{6qzldq|Lx6|CK{mHlVAJYQ~6?W4m2=CZLzXm*FUZ<^aIbeavy@N3a!0StS1`Kyvxjnlnh|j=8pP0GVWV{p*~+ z%zuE3I#cyn1eZD2q~61If{^`e4^r-7db*iaUG(=I{m|d8=gzY{+;{i}v9j0w54Jfr zx3TAY_<0$G?E|NNm==S(oQoH%1iusQRI@ zuJK7G=EwOr1jWR2gMxo2f&jVmoJaFzNFM4j zS4T-QlN?#w-!jFxK!mV?&nw_ON_vd5zO$INg@r&z|G{1oYynk*kP;^6l(W32*x^#^ z4lhjOnGZvJ3gY*s!%h_eBL|fZ9qAYC9kKtTgK_x1BHC^bk>2T_9-EL z{dz`f{g1_ik)QV-(L8?mQ-V$ChN$^TBi8qsjfmQkgZuYG?IV_S>{NkSmaGK-9HGIN z+6`q4FVzPVcH}%v_Vu<0$H@gJ4nyZQ5B3Jn{9;y{m&TtKmSGTm3`hzh1VGE91T66J zrgz)ZXJy0j9%!Z!SpXIVAF~5B*b$l6E{}=}EuKRS4kaf{^*OOQ0eshWsXUMIt!Mc? zT@m7h$+Ml=KymudG;%bN=P&+udr}ml1P}pEzN89A594w{aH>$(c!IJ;p>yQqv5xaH za-r7Dqfh-15{?){>N{X1Z28nj0d&LwIb1Bf4X7QMpXG6yJmWzI-=aom?uPUtXt5}2 z+|cWMza9Ub86fOD(p3sj#R)rUZ&VHdxR29+HJM5zt&Ctd*Otg&6UHUxWP7qLnBde` z{g@8gDa;)Vz}HeYNJm6p#FWL70f#P$B2mSMnTVV`lC z6o4ktPatEwb7@pJnQ2or5a`_`I!I-D68lE&MjX_Oa?`c1Sip)?#n5-23U3R>VF@1mJ-Ynz{l0gq+N2Ug(Snkc&I}JD6S++X0~L7=u(UEmJ`2RQa0Edv0-%j+VbU+T zG}_LWhY*wu58!<$IHZ1FgO_0B8zLED_azYQ`$dugv@1AgwpV%Pcg!ZXCH#*h5biGp zr>TlmqskXq9PX`&Zum^wm6Pl*|ILxWv8rWNs}%WoKBBx;53Df1>5mKi5)XeE6BPo& zn<)9UrC0)Y{-%wZT91K){)b7(l_aOB*BvZ~urput@B<`hnfGTvIdv;jpJg1QW6IgE zDRYk8D^#b?^B&iBJi05HQ@ILPRyw#tXRk9+mk(6LrE;G8V_F)Jl0!k z$V!7DE>Z9qa=UYYYk!B|ITNIE0 z<{oLY~%|rE6guU_o@wLQl^+s4NBn;sj86=vh`MmsG94#5%AdxX_rvAg-s` zpa%d_**i}m;rmfrxU-v62EK%zJpAhs9Go_@g@tdpTsEjGnztR69g7$kQ@R z@eua`>Tm!<14GOofSti=1T7EWJmZjia4>Er@y$1k%6fUi$UNwd>Hi~K<#%C6g@pd^ z#6{hJ1_q?(+Fl}#ekuq8NCsn^8m%ZO_tCcCZAt;cY&JTzG0V0Z6G5O{XJqhb>L|Gz z>GlQhr^k*o3UtuxfYS&JpQLFeykk1|+QWm1{rz@@Gg2tjXnD~Mcy7Ks{CZ-9w1g^6?|lR=0$~5+K?w;RiK33ob*jX0 zk5XSG<_}cX+u89J_;TTptWX|r$9#ivv?%#n%W0)tJdY}O`2Jmq7oC7XKNb3BvG0CJ zFV_}nJZH|wgrUV6)L|Za{DT|K0DY0X^Hgl(d)N3FC-SVm(>jbm1&}P~`O6lRoHbx) z{+<(kPtu?_6ypR%%k*P`7# zf6CD7{*u|8hLhvMtPn^x8$WX-BcBd!BAk?M zh-w}1WLOHXLG#EOCi$8v(}*~)ZIPzb_%Qh)JS~*^4>r`=3thgzbbNo!z(s!tzGaEP`u z#u$o+?6fsN-ZHv*eQ6fq#5S8LK42(5Yzb!SGu2v(EJ}~AnoGpTsx;A2c5!-slm$)9 zC8we~aqF!3H^JH7^|ynnV$m1GbPG!2F^8)#uaoEa&r7-E>mig#SW~e$5+VA+<&C>{ zs&>jB-l<_1GT&9il+j5WSdDNh;5Z&4l)J2HB@52IIcG5agFC1p3(<1JXFr+b6a->65h}WJ-HbI9N!i+e?y5*W0KihZAMV1W+}j`TRn?|?QYnB+)hu5%he3InsU5_CMK-%k?`&ws7o+T8#m2Kp*JXbmQ>`JS&tT7QTi#` zG=2F$^rYxh3ae=7<=Ec;0HEK=c#ClCpfz?7Qa@rBvP!gpWmJ8>} z(}Voyfe0yhui$>k%3a%tiknZ&;{t{1EuNCWB)~bEY54f%vFsLfzG~V9h($x3Rh8jt z#)pk*#l3ToavyQ0&)TMgfT?%56kB9dio5Ii`J9fFNYNEGTbUzxbWIfoLff;paL>a@ zdn~s1=OJ2s6%0*K~McU z6P|Y3>9>(gK{>^zt!ZXVY~_^XtQkDYVwb7TCC2;dcGK30)`C3_Co;DeYJb>J0^u|r zV!IMy56VT7d-TvnlXpl7=eW^r*n1@(Bgm5*1eURhUh&+=VK!N~A7+ zCz1L|^7v!xWLo*JReAJyYOZ6@Oa#QB@EcIh%|#Li`>A8ml;C6&NtNaAO}kl|=S#X4 zy`H?^xrQ7MXOs;D75~MfWN#m5U3!Y|>@nb(=SNPyNFrY&|8dt_TS0}_5umkXLL@i3 z?tGYX`L_TPwxrh!|JWkgPOcqhBWd3PnI20v()_@60Ey)aw2!PTu+Ea_+%7|WCOK*n z8@|kR2+$U5cC4{LuF8J@8&(0sd`7Q_Z`Fd-u^B^Pt|Z*Wkm5xYUCAH1gu}dk!84pq zOION;ln}b4fW#awQHbA!RQarX)voZBChLHTkqI2p{j2L0pj-KEpPL~-9W7X z&p1IXu#{G|UK^tPe^XBhFWopj{GQ@V>44g3*{VF7a1q;WaX=O9`@wPTQ_@!b`!^_^ z&QnB)A_y}t9X1r>^{v4Sc6M=p#x9=ToMdo|MUEIruVaA{LA#n*rj6A}Y37`zS+hYl2hoXA$TD+t}X5yFerVryEB}E9J z;WV~LhKE~BD$25&V@F0+s9NxeE?SR;U%w(Q$Cx|oS9WXrES$?XJDE06wDrHBAkJ|Y3J%zqk@(t{#FB|>5_mE}^H zK1;Ox9xmjQCLUK!&-$f~MQ)}X(2lQ1hMd%u|KRcuJNlELCj3O@(wdz=y?7$@|y}hR?gZXXJREM7RF=qr`|& zN5csNGO(!$xdmacC`5ITNzkb!qB?L@x-qa|R$@=jCu*NmH{d8)i*sd0e-4b}P@ZKD z0@A4%EPH3w`^;TpIuljdOsPbkL{TYVB4U^0sVT~%8LP99%RnCO_M{0&RXpNj{ZB=^ zkqXy=gkTtKq(%FX?eQ7qrEQ1(;(Ke@4_cqwkOd5}uqZ%}1D7w%F04=~iZ9+SE++}K zu-8^DAUK#1G#BtUzc3yM)!5OGVn`4BQ##fMzw91{@i%=lfmH>~U!5f?ukXq%xy2|v zyU17h_J#hYodzP-F@DIG!-4z9njaT26isa}z_h|&az5!Qcyo;Ag$d|=gBU#3{h~rI zYu|Z@6R!t_4~`eR3D_m-oGYcigs{9-t%g>6=wz!nl~ertlmfxVdTTpZX5B& zUXO!=co74LWJ3CBhvX9-LWA_Fw&A1}DTCAyA$g;D5T0o+&AMuIE<9>xOnQfqpuA2a zO*;nMs?(PxoSuGwi$2s1kbv5Rxs%>tY4o}@i~Yh_aSq5u=2^@~X8fkr?5NS`--C?* zgyChG-6FH^tLDfp4vKCPf5S7)F|}=l4HF_Ig$}a+tl+!7NT&R-eImwHyg`Ip`j?2D z6iF$NKfrfWcheaKdpl}};VW(5LWn4ao3HkSg3;#mEPO?ovVHpBRwDAz#1bv8ez8zT zIZOz`Ze>(7RZJHfv&-iI8peJwWLoPJ97Kw?kM9i2hDdXjDMNU1J4xyj(-Qko!u1|c z-|d6sAcMWoyHD45KUEhfP_W^!Z9~f<1r%(<>=?(~mt3*OeBv6Y4flga;pD!6uwdjO zK}r7lN-H%pQ3;>3c`Ec<*6OohzM3h9sV|mylwE@xXvD>8pML1WWJoiXAyZ8$R#1sa z%t>X|Pk*iq|Bd8o4<1$P5*nRMRgGrOC6ULJ32Ql-HI~i6TI^?s@#>$t-@sKzxsv3R zCA>SgWGuxh`&1ckN%S4jb{Km zPO**|a+UPdfeU^eZExV(?D0e3_=4<@HGO`3bbo&}-w7Xa9agJSiUh&LRlZz9-+?yK zVSmPjzm#v^_`T4@<$R?!|Ir@M)yD_lBCUhOG{63PGJ{$c9ZycN8V)PFseeI*;wt_R zoY(u4I0XkQ{gR>IcD?ea+ML&gTxFFGzakv$DIrISOYBjzwQ1D-pOQphu*@xs704#?KJCC8Z7TE?%P7 zt3kTaK4-a($Du)HGtIXe$&g}RD%9)eOLW6^?LX$LmHVi)i`e~3FOnLLo`awqKA{fA z^ciSRahLWk2$sG7@_sb}Wwt-C09vKJsaJkV!cZ-sT(bB)=vH+f2|jP$d9Ru(y7)I6 ze_C#D=2Zjbvi>z10Hi*{Jj+lbPo5I&e@2c4UsvY2no1rg+;@*SEt&%EG^UUn4Twp+ zp0(>gG`H}0XF{urf^>3iL2_7v5JlrKP+`55d1h_Sf3EKj5q!e^$d?YkGb zL8&|kn`t>v#WR5R1=nH}+pXR#c)vhEA#K1#HhdL1bjYwLJt=zqjxADIgu)B2D9-_v zcp8rQPhJewyXRWxr-94dk*8H!QY#h@%t(*F&y1DY7 zQ&Y_O3JU3*={lL|Xj5)iN@Y$_u%>j`COWgQOI&{+PN#NW?8j~$VWUI;M?3TTkpFG}cp=q|mP>&?H z@S#JearInZ#9pFgL|3m@CNs3fLrzb1$K)~l&9=mMi87%y-L+e>C+;g7p0eLxgy_g4 zGt?KsK?f5iN##@B2f|5(ooMt9K_1n+gR~W-MQ-4FCr<@LFtMnv=L+?1O!7E-JX1zI zh&;3Bk6epY3}}7w?vV;ku|Y+Ut`I4Ppz2U@Lrn!o`oaGRKRq|7cE&95TlyX%#ATou zAJhwIw9QU+;lZGt>tT7F>ZQM+XNHVuxC2TX*5Cxk;*h59IzEZ~UkVYjQRvR|fQSPK zYa5kQ+wQ)F<<@+;AaEP&@=fvIZn3O0ttG3t?VFFnT(W3$nF*Yem8l6H)|ny#Ke*qn;N?7l=*y&$K-QM zZtXM~ZZrBRC}<#>i=)u7r^I#ZVrlW9c+pKhR1>psnyZ#nG2;b6Y?y~w=6gO-{FIOf6rI`3oi#-6) z>7;9UuC{J9!xjaA5_(5AyTID&scb*}p zjaAe7LKp%5Cv+K$ZI@F1ao>2I)SpEx=jtcN#&BVP*G4yi>tS`k&N}|j({{is`h@Sx znfvuy!Lc;6Z=qtgDb8iF3G1^AL+l~%>^4oq{1a_lT;0WRxvQ@|%+eX|S*W7dLm$Sr zh)ajcM`Wkmav{znjui|@`e8|DQZB^$jrWK5hIJWJBcqVh5;Yq-N3$T;}!nrjTm3=)ayy9$LT zm@b`i4!V)6P{>A|f*)V_5+5w58~sZeHUqm5%{X1i>wG?62^%q1!ofY*0bafrxVLBp z_SMShzbsyT@nL;;8eat2Nb;2DY^34K6H>n~kW0*>@oGzQ@6z+o-j-_k{Xs@2iHomt z0IHhc?X8W6R4G)*-++jvHTF!P`Tl@tZa#~u%S_~A%XE{zl>UH3ta`bH+O75vuBG}8_Ih% zPWz!>3Eh01TD3X%V32x=`W=kSrGV@*jgz)`?(@7-d$n~w>=!3$Da?Ppe{B6p?8=53 zev3f*VGZWOCco8Cs}5d|LzQ2n9&0aR`j@xlFaC4^?uQ|NJ07LeMm=QuLUwubc8{h% zS?ys2x*ouj%N*Q@t)YL+Hl|0qs}QP;`J>3(h7U=VI|Edq?#L#TVivp_L^h+8r(~1)@GAz>4L#bvVNecL7cB#0P{DS&5yx%H+L!3`O$3m{Qhg#vm>y zcm+Hdpyy*YpYaayOhj3ReP*abZfB>z!1XZx^sW@iT6>;6Lf=uO=lE_`OI zafOJ}ueFQhh})ET0Z$K5OnvnF!i;#6erj~A>CrbW-xGQgwaBzi3xEzb=baP)GRJqy zwFHCn(ZQTIX9#aK3J|~_@=j5!D2V)OjGj|jKbO=~{9hA@Be4EA@cmSLW zxL)U9T>V<~Rxz%~;y=fNW>SUku&Ynu&JTcUU@?M{8l9EWi7ucVMklSd@jBTaMwBkE zmQ3)(jA-aX=kvcsVW6{~QY40dO~=gEjQ=2j7+p*FR@E>^%8h%N!bkk{TWX8rP$0GK z4#;rEs^G_cr6~2(Z58uXg%~`g}@*Z3POaf*CYgT{$=f#YJ^+BAbv$OSa~II zA)w+>QoQMJCsl!;f-4TGHo_uPhl&?U(Qkd;Y1wb$ynwnTZ!Eqso9ESVX=OMl9d)v> zhBCG0NJ>Z1P9_T*R9|Q_PBI?CDQBNs+h2IK;s^nwg>;G651BC@>^S!XdC*3nH~w zSyG~wdEtm8owG^y4N0{I6VVdoTG&3Qj?p^?YBnIv3Lmr!v|dNFnAQ@+@@&h>SuXC2 zDHvXD{PV0A4nLabPA?j^${Fhj^xN7b95H_F;88mewUhRgzgH%e4K()xGOR?r?6yIs zJp&1%a$0A`z%0C0E#My&)cXOx7#IU8IGDj*#`a+%6A}VRT+&=xR zuFm`f&KFan+AU9@fNksD3W5@kG|=5;4_+SF95~T`-r=#t6L80P*oD!Ow6_4 z;m_Xb`{pr-@iC)KX1LjJ6h|%_P8XD?cgX}R-6JZ+%a0LqO2i(pB~d8Hft%ewA7nMO zswN460g@g8a7C<_jAIYcOK(eXU?RsnOz@P)tPJsnTj$d{;wca7LBmahpcunaQ&srX zzsmyChk{#C6O-sNn{=~6RpBdvE1e#;}N_QZ?20xSaMR`fv%o_#Vo6(mY zWq02w9DHe@+kCgZ&~C$OpnGSXelyxLf6VF+iajY#OuyX8a~Q#ZWC?{GY#oJ)(2dNL zm#&rW9U)}zUd8xx5=NzAYKQ9aFr;U&*3~MI>8Fv*@U~ps-6wPOyl#S6yDKCH3e6mf zxDJJXu?NfIwIC4{^o_Ig4K@X9zX18@UQKG_HT)zqw zl9$>9_3C~@1l_s|aiEQVT;u9(RKVHp-dbN|j(hV|d*4=^3&*4JVi4A+w^U-al%AU} zZ(T4txl7v`?w}Q46@6I4Y8r{1j}2HQWW(?1Oj%J^FIr|c2@jq_Kwt`VBsV8aP{7Qy zu&Z!>e6&!n(Pd8iLrvT1?M@&%S{kMDNIEEU>$~{}d63KBz%C3>Zq~QI*cA++C5m=S z4`E8jUUD2AYk{YR-R|Ckc+)e~+44|msxs~cm)h8cl6DT}nIz960AhdIwH& zXOf8qH~E7}?+8~m13TXTREZQTvx17X2;+k}5AjWS_CAL%y0i`Y$ zjwlWm$zzdc*QL-&C(08*RDKM~%1&NhC;}UODx+k^H+Z@4V?ac{O#qmU88e%}*m}B& z0fi#TWIyNy$nu=E8or1ev#kk#CQ$-{ePvaVFhh6nio>{5)S@A|eE6X3i1aXg{fpy_ zpdwKxB(`^Fjd9AAa}dnLCgB>&%BEg67_A{3nV<>*ZjF&&TbM}?L^hHkVr*=!mJja= z5Wa*c1^r7_N7c>L!D6@Gw2;oivC98`~h%_zhQr9y(5joG;WB$`e6kkPt*r3p(amCyMkk-H|uWz{GN& z=QpghD#8jb{QEnD*P5E#^n~{BZaM#8JI=)?GGgR{5-f`&iW73YAa^VThoa*&bMhm=Rf6Ro7t+u7NeE zL@1k>7r?&>rZ4?`?LrpEG?goaW;N`7$jvJfS3-Bg=%dAz$(A8JX$E>r*?)O$LhB`{ z;$Ctyw{2$5Jhl_R>&Ql{BMEGN`uqmSAmhmEGGr9y3I#WDGU7@R8w-aNT z`TmfH<%z$8b+n7JwqIwIO@P<HEzCJ_e|^uv#|bl50UjgQlSX5+$1$5al~sYA&pU zMDGqbeyPQj)5{B47lTF`Dw-J3r?rek^5;2|tmBhm#_){{cc@7uiF4C1{9&oc1Ciq2 zAu}O+;5c%1ep%NvNI{DqQC!5AO~@Y3%&6`(VM1tPSmjwbrM(Gd!kMtGUMwh$Q=2D~ zW9<{fA&0}3og#03*EoDr-e6jzyIi+bI|VY%D-x~t5;SqilM}NJ{p|a0=ZdCkwM~0D zLDgS*yW{~h`5_H9{5YmWcnTvgr8Eyv(2a2XY>HFu^Sj_0pT8D-u0l$mj^y6G9fjM! z@aYVCkyai3PzvPhDI5CG082Pl_dW83rZxNA#*E?9oIzoXt@eU#RMqx#{SP293bGr~ z++o^!!#{k)R`Eq6{j=+2)Yb&jq-=nGO--V3C2bV4GZthLe|g%WQfRQbiK}te%KU|s zvg8EqYG(pVOfvq3q$bV7ag8Ykry7VA&BFI97##LClR~9L&~^X=h@^Zq=7ax=hsIpP z5IbeTM}Q?(e@&0&sX!L5u;R6I^+31FsBF<9YJQh8e6#oPw!Oe1=ob)Xeh(y!%>f5Y zJWQYPKsh@~=&7WC(=OOIQ`dQ!u}Ll4Eg>Nuj;j$!+zAVQjP6m^G|N&`PL%Ym>@1nk z+k*~P$x6oeIKtvmLsAvA-8hO*1Tve%Yt*N>qve29Hyq%=nE~YX^#Xy*u>=PC*ZGLe zV$vRcWhhV=poj=G?0QJEOMy)P2%(Hna%dZ1t)+q{A~P?4w3O<~NiYsFzAMUEk5yg&sJUbC7H`DAXnXaCDS`Wd_sZXPm zCF7`00;WG5$phDLGj;tGya4{BZ!f#gGlBqmI0_q5RO zcyg&LywwevuH0})4NTgBl!qW4&(P2Ie(LOoKSe(nucLBF^|G}A4|3#}eC3n2#ht!X zx$@${D7eHFD zijkF=jmD@B5kA6IxO%6n@mlaG`xMHWEBDS-!$I0|vAB{=<&{{9%%8DK2oPPl!V}#u z&TFY=Hg9cYf*6NNGRxBSMj>BWiv{QKn-#n`7%S3dup64XTxDgeKjSayrGxAx-BA!1MUN23Rqbj80K8K9tgU#ow!k;S!t2SriN#+j>Yc%D)9NC&w`} z@;~Fvg7}N)sOIcsa&r@_m50CzQgkU4bfS{PjQ8~$PlmBpwmz<<$J9UFOA&=G&s)W` z2YXDSYIT10SiliBf_%03_U2YyP%LjisrK-6Kb9~8g35|$x}E-RvS!}QzhHpYPXiwb zK+jKm9kmE@$+Nr7;+3o@SN_ac=6@u~KGf`X8mR1~9^THQ{60{7yH$V$)`>a>dG^_y z-vIBmPMa6clV=Jw6-E6o*L!c@^ONY^!&cpY)PMo1)bLM1gl8KbYilBY)Z%wQ$+_xA zcSU^QjGe#6%=9fCZ7*_Co<`z-xnlbD6GTxLbtoCvxWgb6KZ?449P<(qyZ+DK9;|w1J2Fc&FL;ZBGBQ)K&rQq5q>LmYGaRxwQi+C1yoc-)FwoYXs4?BD=Gh z@=H+ffxyZ^x64{=5)qgCJtLbHt#GfZpT*K7woyPSt`%u%)FU9m5Dsh15+G}!`oEc) zLP$}vrY@=A=8qwutmpZH!dR1Z@Wt)1aqbxysv3z6cIuLQNa9F6#O)RhwpXy!2@njz z?3W+^P{*9OgM0ab#+CRTL5a1)D^?S}${H0y?}6U=toQMUZGalqeG)=&pf>I&@8r>P zq@CL%F0CBb-0CfIyTw$AP&li8lpLtc?_x;#>LH@g8)0m&MYsxOzmuAbpx&g;aS&*V zga6iF3*bF=J8++p@ng;Et76rf|H+vxsDt2;0}V~q)SXNtXkXi2=WnthH68)S*X2#3 zlL2?jd>bN-=8yhAT&;lVQ+@2RxLWBAK$93oSHsCyX1@lcd1(W~2iJT~ma(4McD3`iE1kBjYXN-h|UntXD(_gOqqwd}F<&c$x@eB3MHYQ~dTN+!jeIqb*A zSeL7siaGX}kL^Js0lMke7}J-6-#}Z<@tSb&&+-jEas|ZMY^9LRj$AnY2D$#; zhmz8t!U@F+=2VB~3Tr=%IEw8ZBDRmz_dO(&QF>!DplzeYCd8 zKk!s$I-hzhGhx2vqp6|t*aeO8?EmsG{gK_6ATxJn#T?~pYA3o*Cz^F@g$c$2eD6dZ z*V_=Pk3GdTzenX0TNPW-y3bYDdIA4&%p-$K?5_LKCl}Oite*c1XXBk69W`;05ycZ= z7HDM${k5Ja96Ks~&y;}Wj`#3&rQ7}lqh!JcsNK4DKwQd4{#}QngOMG>pZ~xVdhKM3 z`qgxSL_apExo}CdG!ZN7_REkL;T@P}JTc`raMmD7as}}>SJU?|=R-HeEkl}zz+nj> z$L)2G2yeu?`r|N;)ndBwnqw_L8)7?nq1BGPScrT~1M!>v?1kchYiHZpNE9dV%mMCL zMsGn#*aT*p1r*to2d#NEi~(z*9dH6)qu&O)3$0!#MqzayK9Y~|Q zVtA6{QZf(ZTZV{DPXfu?Zj1d_!E^go-qi?@I!7e-Xqn@GQEFr)j0u%CFycf3Xf0lmoGV86KluUUGmH%?^mY^# z{SFQSgbyh;5(tfK%x>WKh!+5dDRa%Ly0xXcAU|0g%#JOazh{vQeM z2&r}MkV-F&0T}DIzaubbzC|wJ&yv3!T;TqBJ?QwFwn9A>q%e7I%5XU^wR4+fb7Bq8 zPCbOJU7Jc$7#@99s69J0v&27lW`F+o0w7sCK<1I05-Dz^6^khD|?c?*Tl{_$|SL2kLzT|BPjDoqiZzUP|nYl)?%mp1ezG%7oFdaKiDWp{0 z(~t-DZt#eShltf-wpZBlo6R8rF*-O=`xml8%z&~7`$Bc#-}w(e|NMQ;;sM7cf`L)O zb_o&k%D6gzDLS%oMZD@_fC~BAJ@wB{Ko)?r68VDDT}Z-?D|ICKu&MW9foyz3!2^=E z0xcQ+&N@uYH>H)P_`;p0&70rE6%=%6%;ZX^NusE99`7l;=9Z^yXVXN}o5;aSL(FZKqjD%v+@SKS3aW zn3Ojt&|49~2TNA_gx=p+-pYqN%2fKf`JFgR<6j<0C@Bqo-+%FYe52(Wgbu>Qf)VG? z3NQV_^&RLTi;q0$0E8ys{5U8zsOsOrbk^Vw4ce>l|MmduxTL#y20TMK!zl^t@|j@O zYF^=`NFcD`0_KY)TTM8axaL!qRCK{ADf-1+x&-5AVlL+7uyq4){I8RbkQr9D#Fk1^ zYQEP!tWm7}Mm~jdQn+(1OSzqiBUVciWh-BWzrZN{>`HM6CAY-%;#{}430H+nPc{NB zC4wGNMN`MxXTf@WBE!hT78S*W0iGHIIP#H=KRUg!`fN!EH#eXB zyKup+*?S6B?>|o-+2rDBPT4moh<`uVoT`|TP{}TP=pkE?U5jOl#lg>4V#mI_mKc#5 zeW3aQ+V*?ot~36xlaZIqJ-D{f-sR~5>fF}aNA8EFd<$Ri7xH}3@c0wZc9=835r~>z ze=k7Yf^36S7>O%v%&G?sP7`4_U`i07r(~3zJ3<^0Mb^3RxH>+zE3vl3v61bMTYrs|E zTj9!cwm)(tdEs|Pf5ZhPCPLzfpum08nJkqUC-7b!a3tyVhR!YNSEOMBj4kD+y$N?R zr#SiJ2R;cwk0K$!xnF(C=!ptIs(*>zi7c&}JD10Z%70P4DV8fD3Nn$5Y9MQUXR+3q zA;_6SVZ3&&H}I6!B9%AKU0KF$IB2RA91RKnHo_a1lw3Kq1#EO4He3{|898Jvv{f7My!ga>)&gl!Tltk zr8$^9=Utcsezil=Pg6Tsr6g1&brZcCjEMpXjHSX$A=or|+R2VX!gqSE)Cvvv*Qem4 zQu~f;=K)P9>fk0v7B)F$JSpvVX*Ab!lC#OnkjLZn)HQI(;vB;>#D#;pL_9|056U{y zGf?YblIOK#-2l|DsKTx9EVUfz!0bRTBZ!_KKU2fu=}CNY z`|`0GLgEywYZT7^r3LW*%$Lf~ex98dc>eRMBCsA8So>a1O9=S}zJ2r!-?r%gRW zn3%h#AODmn#44j6ett!j?8ayR%BfrdE3HnEAe+LL&@!c7Ku)|wXo=cvN;H?mPhU{7 zC@>v<;y3`-tPqR&JDz8G`w+b?pziu@%dShOYgrLuUuZNgW+0dS)35AS@6(!Yo5NJ- z#YZ^9JyFn>h1X4=q4tp8Qhw5iKCgv<7Yn5#68>Ki*BuXqAHUD+%xvQ9z4t6z_TFS< z?{y*ycXW2-WMpTrLPE&ONGRFkkgO;X%9VM)kMHmGd;R{td)@lH@BMk+&--~E{HC$C z7ecajf>bWq7}!fguXLJXpNIOjyxL8*9`o%~Jaz>IniQ(BNoWT*q81<}!-;Zsz*dEV3~9cD7tQ zwF4@$u)JdONh*+chup(C?J4YH7ybWAO)g~EIxg}zv3LLX*$#Zmzj&>qF8F!I7p{~YhxOdIJ{XWW^GyEYOWciaKE zey_h+;|)ORo0%K3`>2P^onxrVKB?Rh@eaIF27pFI9flH2Q*9K6F$ihR9yDw4!nAMx z%^EhRdp(LS*H+j1&aGwv|11EQBQhX=Iwlet!%TtwwZ_?7;6Qk0TxHhrJOYemue1^L{XNS8Fw07dU!b4oZWlz)^ zjXf!mI#es_$iQG}9xQNK4Jrg_zkqEFjaQsr0hK|rJ^$cp-729K#hQSeY9RMaG>`w? zDdMoRvcPLIT6?nyhSp7mvjkuJlS*W>W~&MTTjgo`TV>hOu$~X| z|w>>GOwc#KIKKkr9{pgu0S` zw?u}pIB-d-fuq0LtXpb4tquZF3Z=*2yYeh;c+zaUCHDA9B{6hf>^n=;0+=kGO+Mes zn?LT{=_rd~>Mt~t`$iThR4ZFx+SB_Adkt!uzL%R({S3%wAM;UE+9v? zqXzyXy*lRUUWOW5Mp3yO`iFkTmEDPJgYc<^<`*4t%5GgV67c|yP0UQ~8yZI;WD8W1 z(k>BQ;#*hW`6N((*<9dXj(R@E+E1=D3gNbA62=Q1ik)n2m)5%0aDnH^{h*aZ(tw9z z)Oe}Qlk}E6Yc98rGUstN$CXu-FefFKLLM}rs#{4%!`yw(#n>E?_g=B&@>|XAe^678-DJ|di5-NM z#*FVHrx>n}0)yzm@!TPdN4h?L!YrrH+9^!2nV7%Na?TUHiG23DT-|x3U3vZ>+LO!n z#%zXxm#~as(X>5FA*0QxOBzte*53L6uy@BJo$HA`Nce(rzOLISj9#hVfSXf<(@(>a zNP}SUn&v}nk!5kO-p5V35#oiCNV5vUV1GT+c#))67-m-n3};4q%ucz0xQA z%`XP)9P@l$%D#D!SSp&CN=K;x8)~;@uH9@tE!s6Jea*+2f_KshW{ePig0ejooSQrf zW0KoowaDKIAuAstO_ou=Q&B28my+3}1X4uIShZMLd*ahj^z^HUwkw5% zU@VPBQVSPPjRuYD<8r;@pUd>SPO!-JSSf!JnZfYQO}TfA9jkfdjl4sZ`z5uJ{f@o%GGjuJ*LHg=7T>FBm1NO*4_n#UI~RbIVory7-ki!;ub`lq z96#L-qLI$ar}w2e)KZ&mXWty5FP|AVa~9 zyZt52Y|#RjdGi7!lL?0T%=(xk{I zwn;;n5+hkA0r<=vArbiY)CIZ~S&)-(n;JjPtNb}zRs%;KnT-r|QC3Ewn5qZ4w zn^pCNLV`XQco0}lsO>kMDoOIHqQ)jRYkme3D>Q4Hrb&>q**B9LHFT*CoLS%<ukSGK!*c<-S~#GoQLKkV22vL-r9D+e|q1NWGc=zp=F| z^Qhyix(^U8%MIh~8&BMN2_aF}bhYB(Wv2a@%G3k!S`5+J7x0ENA*c3VLw$!;Ql*5( z0!na2;Fhc;uHu>lIJf68pIPX_>D6iA*9AacyY?#dzLl2#oj|$VW99e$0RhYc=E7^L z6J2@R`hpK?YDML9+6lc!& zsEhn>VG}k?(h;+r3mK$!TY(||38L}%`3c`nRLo_ZHjhP@BXxgn43m(jL4MW98pNg4 zfYn~g|4xk|^N{+UAFZdEuiLCVl=gjM!WetoL7)tvYZW2g0|IzjC4@3+cC-#}w-WpO zh6zx_&;qKcMhxy6HF{^sSvbEx`Lkf+vg4269 zAnkyTGH8C>BbX$f*4puZkST!2weY)2Qq{b{QV-@r2vjxQSG4NvLI&ry`X*uZl)_1L z?e&4GVl^M~+5nlhqxPwmzx6APDc3nz-=1ZE@^++uz*1iuZ24hq-Z%T)bneo3gu(8& zEr^F%#r>fk;nFS0>5rcy01P@wlQ>B?k2_--E>?;p2B=*j?SN{WcFJwx8|C!cWuiuH z8%^S>F8Ea_GN8eyuMvch`?$j(q6V~#U2GsJc~;ds#OZI@^V4}88Ke-n2IBu_mFUPy z3&hWSog9eu`!4ijq#Z1zt0wLRaC!Lt1=Te1aJN0!c4YHvLOV1om&EE$T!3@GQenqq zh53~^Za$|h*8GU4CDFo>)Fj){xnX%Q{<7keXoit?pk}szV1I~dKtV}qG-PyB2UD`X z+~VIk=^FNwJ^_d){Q1n*+XW8@+LcDy>QzT1G{c!v)B%#7e2&Z{ z5DW-Vozl+$G?T={n*pM)!JmSdD{~Y4Vy{|a1K@x6S_MP^zf>^6bxbo#i4T}76%{HM#lqx&hJ5gkrMhngGQAY)YC z#1Fo=nfT{ynds|3Xhz+e!zQ{D9LO_C15Ok*Z*naZAWcjMtsb~6Q|w+!UrrBrXp}Fg zPMzL!GOS}489tbloG!WGW>7v)A%K7coGWXIzD0-4I03|H35AuXm1es6_@L{6ITpm2 zFe>zFjrLXq(9BwcO~5MK!_))J3ux`_2k8`ERcCe6fc-q~dikv5CKpE2;xkCl zq1NTR)2#IYkBT$Xx^8j-28md2HQGM~o4D_<(gE3@@;!8`aGz4ue=(y^bz?bOr=;*>vZwX#o zlsR3RgR!OO86}&(Bg=_Iu6awDp7x3{khG5tNkM`?dkh$GjHlfgTo4IF)0GR z%iq2V1Ji^Bpau{}1>%eP^&}3*Y=Auq>oH$76qpTgHCU->HLs|$T ziQ3U%i$49P?5vSRm@wR(!al60PRfCm>*Iz4HHC~(lVBD1q7h3bd77~LKb#97HI1&M}0!Pjr|AVQ!T&ryP5PmrNX(p9(vB6#szRKLBDERlOa-;Q9ZhuVW z-qfSRlczt6?OGeT&NOY}4sZjPPJq&c`f$<^{)z2cerq_r0U9GyMvpcqyWsFYMx~`M zSB^B#YjNBE0Ge4dx%fh(+}8hyN;|2AEl0*MWu^SAr9sFf(WKj>%hLU7eG9wRY3zI( zRO01O7`Tyq)pnnLh46CCC^}Awu~i;n@_$BlPCfH^dQUs}ncO@Slkw~1wXT4YpMR1H z0LI>WEd1&a6|St-9$@i7GpAY?H2sr4jI(f9=^B>*3Jia)M9`PJ7vRI-6({IQpg|_h z_|fUN(oEWQ@IOx3wZ7t-A-}Sgc+jP!U5G;Pb@ll>D{>(8T#^+qmDIG z0_>44{{fpx5C)OZ5Wn>`(AZPvLi9m2QD5X$6@gN1(mu7#fMAh1YwFtqvFK+*@Da$(!*y%@SX>^a6Ch=*O@blyBZ*1a8F=cSp^DiSzee5%W*o6_lWF& z*7SmYk&?Iu0ikLkTZRHYUsNkEZne~V{-#LSV;rH%z+ZQd*jHLf?qBFu12%lfj~Xn` zzQds_8D7#Xw^SAntcoZ<>85@k+_v9ZF8;o472DouZVU7fpi4RnheirYezgNDZsG`O z$gn}8RY1AY{Rnr~Bo^J&tGGG3;2MJ_2>?jwVzrQGW zr+`gXjS_b^_18*l{1V^;u92I)|Rk+=3Lw%lt6BaY5yoM8gwJG&8$e@Q?Zl=zoWvGWKpO(kHQqNAQ~3*dD;7JOP-KgFia^ z31PS!$dzkDIaCjWScjXk7&B!e1k-Y^hN=5Yj6~EHcJ=8Q`Y+P5t9=Uz88v_fx%Llc z;XxCL&^m)vuqAW19Ay*p-D53$d@$s0QL-t+^hMwYZKRj$s+a$i9_(z2wA_+7NuHmv zzsrEC;qGc87Xjr6ycf<6knu9}K<({;Y4#3?t73>HO7}}>-E|Fis*bxf;w1v7ksuZpIw>Q+%Y zaX?}|y8Cc&C-pCZ#E|(}qiwVe)$>Bata2~|92hHwx3o)$8gc(ry%YsDK(hNlr$Jds zbawS?Bvz|x*myPLn}U4SLD~ZZQS5YBAr19i4w8JovZhyvP>FqwY9m6nPWD89-eV+bkAgSV=Nj zftQ)E;}IGHOnR(rnBR>!EIJh-&F@7qV0J4d)Jcwwe)H!%vU*E;T06ff#FpotZ^bFT zm*GMy;Ub^zk}svz8$5dsG@k-!IGvqiA)!d8vkJy%k+R&pmM`fk&|dqVtufN|NuRKkWsA&RWZY1DcJ5yDqD^h zBX#&tm?lg92UPP*3|;?{|7~LDy_i{1bmj3qWzkJ{Dw6l(+@kX@@)a@Tq=rn`H-geWh~!)>F^-^dRIK OqIcU^t3l&#-2VWnrZr9g literal 14748 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 literal 12665 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 Date: Thu, 18 Nov 2021 09:00:15 -0600 Subject: [PATCH 080/107] Multiplayer sucks --- godot_ship/project.godot | 1 + godot_ship/script/game/Gameplay/Fire.gd | 4 +- godot_ship/script/game/Gameplay/Game.gd | 94 ++++++++++++++++------- godot_ship/script/game/Gameplay/Player.gd | 90 ++++++++++++---------- godot_ship/script/game/Setup.gd | 4 - godot_ship/script/network/Network.gd | 85 ++++++++++++++++++++ godot_ship/script/options/Network.gd | 5 ++ 7 files changed, 209 insertions(+), 74 deletions(-) create mode 100644 godot_ship/script/network/Network.gd create mode 100644 godot_ship/script/options/Network.gd diff --git a/godot_ship/project.godot b/godot_ship/project.godot index fbccc41..658c27a 100644 --- a/godot_ship/project.godot +++ b/godot_ship/project.godot @@ -20,6 +20,7 @@ MessageBus="*res://script/Message Bus.gd" AudioBus="*res://script/audio controller/Audio Bus.gd" OptionsController="*res://script/options/OptionsController.gd" AudioController="*res://scenes/AudioController.tscn" +Network="*res://script/network/Network.gd" [display] diff --git a/godot_ship/script/game/Gameplay/Fire.gd b/godot_ship/script/game/Gameplay/Fire.gd index 8ad90f4..6095e69 100644 --- a/godot_ship/script/game/Gameplay/Fire.gd +++ b/godot_ship/script/game/Gameplay/Fire.gd @@ -7,11 +7,9 @@ func _ready(): # Signal to pass the fire location back to yet-unknown nodes signal fire_at - func _on_Fire_pressed(): var crosshair = get_node("Crosshair") - # hides crosshair - crosshair.visible = false + # Check if the crosshair is in a valid position if crosshair.validate_position(crosshair.position) == true: var crosshair_pos = crosshair.world_to_board_space(crosshair.position) # fires at position diff --git a/godot_ship/script/game/Gameplay/Game.gd b/godot_ship/script/game/Gameplay/Game.gd index 4a4fd84..ada459a 100644 --- a/godot_ship/script/game/Gameplay/Game.gd +++ b/godot_ship/script/game/Gameplay/Game.gd @@ -1,4 +1,4 @@ -extends Node +extends Control var light_theme = load("res://light_theme.tres") var dark_theme = load("res://dark_theme.tres") @@ -11,15 +11,16 @@ onready var Victory = preload("res://scenes/Game/Victory.tscn") # Array of instances of the Player class; stores the Players -var players = [] # = player1, player2, ... +var players = {} # = player1, player2, ... +var players_ready = [] # turn counter var turn = 0 -# Variable transporting hit state between players -var hit = false -# Variable tracking whether a game is multiplayer (so that the correct Player type can be spawned) -# TODO: Multiplayer -var is_multiplayer = false +# winner +var winner = 0 +# Every game is a multiplayer game, even the ones that aren't. +# We're taking the Minecraft approach, baby +var network_id # Called when the node enters the scene tree for the first time. func _ready(): @@ -29,27 +30,69 @@ func _ready(): get_node("ConfirmationDialog").get_ok().rect_min_size.x = 100 get_node("ConfirmationDialog").get_cancel().rect_min_size.x = 100 - var _errno = 0; - _errno += OptionsController.connect("change_theme", self, "_on_change_theme") - _on_change_theme(OptionsController.get_theme()) - game_start() + if multiplayer: + # TODO: Spawn a lobby where people can either connect to a peer or create a server + pass + + game_setup() -func game_setup(): - print_debug("Congrats! Setup complete.") +# Function used to keep track of which players are ready +remote func player_ready(pid): + print (get_tree().is_network_server()) + var who = pid + # Here are some checks you can do, for example + assert(get_tree().is_network_server()) + assert(who in Network.peer_info) # Exists + assert(not who in players_ready) # Was not added yet + + players_ready.append(who) + + if players_ready.size() == Network.peer_info.size(): + rpc("game_start") # Member functions: # game_start: starts the game -func game_start(): - # Create a player 1 - var player = Player.instance() - # TODO: Create valid callback for player_ready - # It shouldn't connect to game_setup - player.connect("player_ready", self, "game_setup") - # Add player to scene tree - add_child(player) - # Add player to players - players.append(player) +func game_setup(): + # If there's no server connected, create one + if not Network.connected: + # TODO: Create a fake peer who we can automate, for single-player mode + Network.start_server() + network_id = Network.get_network_id() + # Create players for every player in Network.peer_info + for k in Network.peer_info.keys(): + # Create a new player + var player = Player.instance() + # Set the player's opponent, for now + # Give the player a recognizable name, like "1", instead of "@@97" + player.name = str(k) + # The player controls themselves + player.set_network_master(k) + # Add the player to the list of players + players[k] = player + # Add the player to the scene tree + add_child(player) pass + + # Connect to your own player_ready signal + players[network_id].connect("player_ready", self, "_on_player_ready") + # Have your player set up the board: + players[network_id].set_up_begin() + +func game_start(): + # Make sure we're the server + assert(get_tree().is_network_server()) + while not winner: + for id in players.keys(): + var hit = players[id].rpc_id(id, "turn_start") + var result = players[hit["id"]].rpc_id(hit["id"], "hit", hit["target"]) + players[id].rpc_id(id, "mark", hit["target"], result) + pass + +func _on_player_ready(pid): + print ("_on_player_ready") + match pid: + 1: player_ready(pid) + _: rpc("player_ready", pid) # victory_screen: display the victory screen func victory_screen(): @@ -77,8 +120,3 @@ func _on_Button_button_down(): func _on_ConfirmationDialog_confirmed(): end() -func _on_change_theme(theme): - if theme == "light": - get_node("Buttons").set_theme(light_theme) - elif theme == "dark": - get_node("Buttons").set_theme(dark_theme) diff --git a/godot_ship/script/game/Gameplay/Player.gd b/godot_ship/script/game/Gameplay/Player.gd index 0855916..d8c681f 100644 --- a/godot_ship/script/game/Gameplay/Player.gd +++ b/godot_ship/script/game/Gameplay/Player.gd @@ -1,38 +1,46 @@ extends Node -# Path to Board class, for instantiating new Boards in code -var Board = preload("res://scenes/Game/Board.tscn") - -# Preloaded assets, to be used later -# TODO: Move Setup into the Player. It's just here, for now, so that it can be tested and the game doesn't appear broken -var Setup = preload("res://scenes/Game/Setup.tscn") -# TODO: Move Fire into the Player. See above. -var Fire = preload("res://scenes/Game/Fire.tscn") - +# Emitted when the player is ready signal player_ready -# Player ID of this player -var pid -# board (an instance of the Board class) -onready var board = Board.instance() +# Preloaded assets, to be used later +# Path to Board class, for instantiating new Boards in code +var Board = preload("res://scenes/Game/Board.tscn") +# Path to Setup menu, so the player may set up their Board +var Setup = preload("res://scenes/Game/Setup.tscn") +# Path to Fire menu, so the player may fire on the opponent +var Fire = preload("res://scenes/Game/Fire.tscn") + +var pid # Player ID +var board # Board + +var fire_at_position # Position to fire at +var opponent_pid # PID of opponent # Called when the node enters the scene tree for the first time. func _ready(): + # Set the player ID according to which network peer ID we are + pid = int(name) + board = Board.instance() + +remote func set_up_begin(): var setup = Setup.instance() setup.connect("board_ready", self, "set_up") add_child(setup) # Member functions: # hit: Called when opponent fires on us. -# Update internal state, and return bool hit/miss, hit = true, miss = false -func hit(pos): +# Update internal state, and return hit/miss/sunk +remote func hit(pos): var res = board.hit(pos) - if res == -1: - return true - else: - return false - pass + return res + +# mark: Called when the opponent returns hit/miss/sunk +# Update internal state, return ack/nak +remote func mark(pos, value): + # Mark the position on the top board + board.fire(pos, value) # place_ship: called when ships are placed. # forwards Ship locations to the Board, so that it may construct a ship @@ -40,27 +48,32 @@ func hit(pos): func place_ship(pos, size, orientation, variant): board.place_ship(pos, size, orientation, variant) -# setUp: set up the board given the placed ship locations -# translates the ship positions in the Setup UI to board-space, then places each ship +# setup: set up the board given the placed ship locations +# Places each ship onto the board # ships: a list of lists of ship properties [[position, orientation, size, variant], ...] func set_up(ships): # Place all the ships for i in ships: place_ship(i[0], i[1], i[2], i[3]) - emit_signal("player_ready") # Add the board to the tree add_child(board) + emit_signal("player_ready", pid) -# turnStart: start player's turn +# turn_start: start player's turn # Initiates the player's turn, and blocks until the player selects a location to fire upon # returns: fire = [player id, target coordinates] -func turnStart(): - # TODO: Yielf until Fire return - add_child(Fire.instance()) - var player_id = 0 - var target = Vector2(0,0) - return [player_id, target] - pass +remote func turn_start(): + print("turn_start") + var fire = Fire.instance() + + add_child(fire) + yield(fire, "fire_at") + while not fire_at_position: + pass + var player_id = opponent_pid + var target = fire_at_position + fire_at_position = null + return {"id": player_id, "target": target} # getBoard: returns the player's board # returns: board @@ -69,18 +82,17 @@ func getBoard(): # forfeit: ends game for player # Sinks all ships -# hits every single board tile +# Ensures there are no ships left behind func forfeit(): for i in 10: for j in 10: - var pos - pos.x = i - pos.y = j - hit(pos) + # Hit the board + hit(Vector2(i, j)) # getShipCount: get the number of ships the player has left alive func getShipCount(): - var count = board.get_ship_count() - return count - pass + return board.get_ship_count() + +func _on_fire_at(pos): + fire_at_position = pos diff --git a/godot_ship/script/game/Setup.gd b/godot_ship/script/game/Setup.gd index 1c5cc7b..94da823 100644 --- a/godot_ship/script/game/Setup.gd +++ b/godot_ship/script/game/Setup.gd @@ -33,7 +33,6 @@ func _on_Confirm_Placement_pressed(): # if this is more than zero, the ship is invalid if get_node(ship).validate_placement(): valid = false - print ("Placement: ", valid) if valid == false: get_node("PlaceShipDialog").popup() else: @@ -43,9 +42,6 @@ func _on_Confirm_Placement_pressed(): ship = get_node(ship) var data = ship.get_shipdata() ship_data.append(data) - #print out the array for testing - for x in ship_data: - print_debug("Ship Position: ", x[0], ", Ship Length: ", x[1], ", Ship Orientation: ", x[2], ", Variant: ", x[3]) # Return the shipLocation array to those listening on game_ready emit_signal("board_ready", ship_data) queue_free() diff --git a/godot_ship/script/network/Network.gd b/godot_ship/script/network/Network.gd new file mode 100644 index 0000000..770e49a --- /dev/null +++ b/godot_ship/script/network/Network.gd @@ -0,0 +1,85 @@ +extends Node + +const DEFAULT_PORT = 35879 +const LOCALHOST = "127.0.0.1" + +# Store peer info in a dictionary, by player ID +var peer_info = {} +# Store this player's hostname +var local_info = {"hostname": ""} + +var connected = false + +# Network -- handles server and client setup, and facilitates communication between the two +# start_server: Host the game +# port: TCP port +# max_players: Largest number of players allowed to connect at a time +func start_server(port = DEFAULT_PORT, max_players = 2): + get_hostname() + peer_info[1] = local_info + var peer = NetworkedMultiplayerENet.new() + peer.create_server(port, max_players) + get_tree().network_peer = peer + connected = true + return + +func connect_server(ip = LOCALHOST, port = DEFAULT_PORT): + get_hostname() + var peer = NetworkedMultiplayerENet.new() + peer.create_client(ip, port) + get_tree().network_peer = peer + return + +func disconnect_server(): + get_tree().network_peer = null + connected = false + +func get_hostname(): + if local_info["hostname"] == "": + var hostname = [] + var _ret = OS.execute("hostname", [], true, hostname) + local_info["hostname"] = hostname[0].split("\n")[0] + return local_info["hostname"] + +func get_network_id(): + return get_tree().get_network_unique_id() + +func get_ip(): + print(IP.resolve_hostname(get_hostname(), IP.TYPE_IPV4)) + pass + +func _ready(): + var _trash + _trash = get_tree().connect("network_peer_connected", self, "_peer_connected") + _trash = get_tree().connect("network_peer_disconnected", self, "_peer_disconnected") + _trash = get_tree().connect("connected_to_server", self, "_server_connected") + _trash = get_tree().connect("connection_failed", self, "_connection_fail") + _trash = get_tree().connect("server_disconnected", self, "_server_disconnected") + +func _peer_connected(id): + rpc_id(id, "register_peer", local_info) + pass + +func _peer_disconnected(id): + peer_info.erase(id) + pass + +func _server_connected(): + # On connection to the server, you get a global network id + # Save your info at this id + peer_info[get_network_id()] = local_info + connected = true + pass + +func _server_disconnected(): + connected = false + pass + +func _connection_fail(): + connected = false + pass + +remote func register_peer(info): + # Save player information under the sender id's peer info + peer_info[get_tree().get_rpc_sender_id()] = info + pass diff --git a/godot_ship/script/options/Network.gd b/godot_ship/script/options/Network.gd new file mode 100644 index 0000000..0362366 --- /dev/null +++ b/godot_ship/script/options/Network.gd @@ -0,0 +1,5 @@ +extends Node + + +func _ready(): + pass From bc1e31ac8c8c505cb4b203723bf9a613066e2ba5 Mon Sep 17 00:00:00 2001 From: John Breaux Date: Thu, 18 Nov 2021 09:50:17 -0600 Subject: [PATCH 081/107] At least it doesn't crash now, as long as 2 peers are connected. --- godot_ship/script/game/Gameplay/Game.gd | 28 +++++++++++------------ godot_ship/script/game/Gameplay/Player.gd | 10 ++++---- 2 files changed, 18 insertions(+), 20 deletions(-) diff --git a/godot_ship/script/game/Gameplay/Game.gd b/godot_ship/script/game/Gameplay/Game.gd index ada459a..705f4a1 100644 --- a/godot_ship/script/game/Gameplay/Game.gd +++ b/godot_ship/script/game/Gameplay/Game.gd @@ -37,15 +37,11 @@ func _ready(): game_setup() # Function used to keep track of which players are ready -remote func player_ready(pid): - print (get_tree().is_network_server()) - var who = pid - # Here are some checks you can do, for example - assert(get_tree().is_network_server()) - assert(who in Network.peer_info) # Exists - assert(not who in players_ready) # Was not added yet - - players_ready.append(who) +mastersync func player_ready(): + var who = get_tree().get_rpc_sender_id() + if get_tree().is_network_server() and who in Network.peer_info and not who in players_ready: + print ("ASSERT SUCCESS") + players_ready.append(who) if players_ready.size() == Network.peer_info.size(): rpc("game_start") @@ -58,11 +54,13 @@ func game_setup(): # TODO: Create a fake peer who we can automate, for single-player mode Network.start_server() network_id = Network.get_network_id() + var count = 0 # Create players for every player in Network.peer_info for k in Network.peer_info.keys(): # Create a new player var player = Player.instance() # Set the player's opponent, for now + player.opponent_pid = Network.peer_info.keys()[1 - count] # Give the player a recognizable name, like "1", instead of "@@97" player.name = str(k) # The player controls themselves @@ -71,28 +69,28 @@ func game_setup(): players[k] = player # Add the player to the scene tree add_child(player) + count += 1 pass - # Connect to your own player_ready signal players[network_id].connect("player_ready", self, "_on_player_ready") # Have your player set up the board: players[network_id].set_up_begin() -func game_start(): +mastersync func game_start(): # Make sure we're the server assert(get_tree().is_network_server()) while not winner: for id in players.keys(): + # TODO: RPC always returns nothing. + # Figure out how to work around this. var hit = players[id].rpc_id(id, "turn_start") var result = players[hit["id"]].rpc_id(hit["id"], "hit", hit["target"]) players[id].rpc_id(id, "mark", hit["target"], result) pass -func _on_player_ready(pid): +func _on_player_ready(): print ("_on_player_ready") - match pid: - 1: player_ready(pid) - _: rpc("player_ready", pid) + rpc_id(1, "player_ready") # victory_screen: display the victory screen func victory_screen(): diff --git a/godot_ship/script/game/Gameplay/Player.gd b/godot_ship/script/game/Gameplay/Player.gd index d8c681f..382bfd0 100644 --- a/godot_ship/script/game/Gameplay/Player.gd +++ b/godot_ship/script/game/Gameplay/Player.gd @@ -24,7 +24,7 @@ func _ready(): pid = int(name) board = Board.instance() -remote func set_up_begin(): +mastersync func set_up_begin(): var setup = Setup.instance() setup.connect("board_ready", self, "set_up") add_child(setup) @@ -32,13 +32,13 @@ remote func set_up_begin(): # Member functions: # hit: Called when opponent fires on us. # Update internal state, and return hit/miss/sunk -remote func hit(pos): +mastersync func hit(pos): var res = board.hit(pos) return res # mark: Called when the opponent returns hit/miss/sunk # Update internal state, return ack/nak -remote func mark(pos, value): +mastersync func mark(pos, value): # Mark the position on the top board board.fire(pos, value) @@ -57,12 +57,12 @@ func set_up(ships): place_ship(i[0], i[1], i[2], i[3]) # Add the board to the tree add_child(board) - emit_signal("player_ready", pid) + emit_signal("player_ready") # turn_start: start player's turn # Initiates the player's turn, and blocks until the player selects a location to fire upon # returns: fire = [player id, target coordinates] -remote func turn_start(): +mastersync func turn_start(): print("turn_start") var fire = Fire.instance() From 5ed44e6deb1bf048613600027a440155ec608885 Mon Sep 17 00:00:00 2001 From: John Breaux Date: Mon, 22 Nov 2021 22:04:21 -0600 Subject: [PATCH 082/107] Multiplayer: Implement message passing system --- godot_ship/project.godot | 6 +- godot_ship/script/game/Gameplay/Game.gd | 46 ++++-------- godot_ship/script/game/Gameplay/Player.gd | 18 +++-- .../script/network/{Network.gd => Net.gd} | 70 ++++++++++++++----- 4 files changed, 82 insertions(+), 58 deletions(-) rename godot_ship/script/network/{Network.gd => Net.gd} (52%) diff --git a/godot_ship/project.godot b/godot_ship/project.godot index 658c27a..1e4cd1c 100644 --- a/godot_ship/project.godot +++ b/godot_ship/project.godot @@ -20,7 +20,7 @@ MessageBus="*res://script/Message Bus.gd" AudioBus="*res://script/audio controller/Audio Bus.gd" OptionsController="*res://script/options/OptionsController.gd" AudioController="*res://scenes/AudioController.tscn" -Network="*res://script/network/Network.gd" +Net="*res://script/network/Net.gd" [display] @@ -31,6 +31,10 @@ window/per_pixel_transparency/allowed=true window/stretch/mode="viewport" window/stretch/aspect="keep" +[global] + +verbose=false + [input] ui_left={ diff --git a/godot_ship/script/game/Gameplay/Game.gd b/godot_ship/script/game/Gameplay/Game.gd index 705f4a1..41ff096 100644 --- a/godot_ship/script/game/Gameplay/Game.gd +++ b/godot_ship/script/game/Gameplay/Game.gd @@ -5,13 +5,13 @@ var dark_theme = load("res://dark_theme.tres") # Path to Player class, for instantiating new Players in code -onready var Player = preload("res://scenes/Game/Player.tscn") +var Player = preload("res://scenes/Game/Player.tscn") -onready var Victory = preload("res://scenes/Game/Victory.tscn") +var Victory = preload("res://scenes/Game/Victory.tscn") # Array of instances of the Player class; stores the Players -var players = {} # = player1, player2, ... +var players = [] # = player1, player2, ... var players_ready = [] # turn counter var turn = 0 @@ -37,56 +37,40 @@ func _ready(): game_setup() # Function used to keep track of which players are ready -mastersync func player_ready(): +func player_ready(): var who = get_tree().get_rpc_sender_id() - if get_tree().is_network_server() and who in Network.peer_info and not who in players_ready: + if get_tree().is_network_server() and who in Net.peer_info and not who in players_ready: print ("ASSERT SUCCESS") players_ready.append(who) - if players_ready.size() == Network.peer_info.size(): + if players_ready.size() == Net.peer_info.size(): rpc("game_start") # Member functions: # game_start: starts the game -func game_setup(): +sync func game_setup(): # If there's no server connected, create one - if not Network.connected: + if not Net.connected: # TODO: Create a fake peer who we can automate, for single-player mode - Network.start_server() - network_id = Network.get_network_id() - var count = 0 - # Create players for every player in Network.peer_info - for k in Network.peer_info.keys(): + Net.start_host() + network_id = Net.get_network_id() + # Create players for every player in Net.peer_info + for k in Net.peer_info.keys(): # Create a new player var player = Player.instance() - # Set the player's opponent, for now - player.opponent_pid = Network.peer_info.keys()[1 - count] # Give the player a recognizable name, like "1", instead of "@@97" player.name = str(k) # The player controls themselves player.set_network_master(k) # Add the player to the list of players - players[k] = player + players.append(player) # Add the player to the scene tree add_child(player) - count += 1 pass - # Connect to your own player_ready signal - players[network_id].connect("player_ready", self, "_on_player_ready") - # Have your player set up the board: - players[network_id].set_up_begin() -mastersync func game_start(): +func game_start(): # Make sure we're the server - assert(get_tree().is_network_server()) - while not winner: - for id in players.keys(): - # TODO: RPC always returns nothing. - # Figure out how to work around this. - var hit = players[id].rpc_id(id, "turn_start") - var result = players[hit["id"]].rpc_id(hit["id"], "hit", hit["target"]) - players[id].rpc_id(id, "mark", hit["target"], result) - pass + pass func _on_player_ready(): print ("_on_player_ready") diff --git a/godot_ship/script/game/Gameplay/Player.gd b/godot_ship/script/game/Gameplay/Player.gd index 382bfd0..8b87022 100644 --- a/godot_ship/script/game/Gameplay/Player.gd +++ b/godot_ship/script/game/Gameplay/Player.gd @@ -3,7 +3,6 @@ extends Node # Emitted when the player is ready signal player_ready - # Preloaded assets, to be used later # Path to Board class, for instantiating new Boards in code var Board = preload("res://scenes/Game/Board.tscn") @@ -12,33 +11,33 @@ var Setup = preload("res://scenes/Game/Setup.tscn") # Path to Fire menu, so the player may fire on the opponent var Fire = preload("res://scenes/Game/Fire.tscn") -var pid # Player ID +# Members +var pid # Player ID var board # Board var fire_at_position # Position to fire at -var opponent_pid # PID of opponent # Called when the node enters the scene tree for the first time. func _ready(): # Set the player ID according to which network peer ID we are pid = int(name) - board = Board.instance() -mastersync func set_up_begin(): +func set_up_begin(): var setup = Setup.instance() setup.connect("board_ready", self, "set_up") add_child(setup) + board = Board.instance() # Member functions: # hit: Called when opponent fires on us. # Update internal state, and return hit/miss/sunk -mastersync func hit(pos): +func hit(pos): var res = board.hit(pos) return res # mark: Called when the opponent returns hit/miss/sunk # Update internal state, return ack/nak -mastersync func mark(pos, value): +func mark(pos, value): # Mark the position on the top board board.fire(pos, value) @@ -62,7 +61,7 @@ func set_up(ships): # turn_start: start player's turn # Initiates the player's turn, and blocks until the player selects a location to fire upon # returns: fire = [player id, target coordinates] -mastersync func turn_start(): +func turn_start(): print("turn_start") var fire = Fire.instance() @@ -70,10 +69,9 @@ mastersync func turn_start(): yield(fire, "fire_at") while not fire_at_position: pass - var player_id = opponent_pid var target = fire_at_position fire_at_position = null - return {"id": player_id, "target": target} + return target # getBoard: returns the player's board # returns: board diff --git a/godot_ship/script/network/Network.gd b/godot_ship/script/network/Net.gd similarity index 52% rename from godot_ship/script/network/Network.gd rename to godot_ship/script/network/Net.gd index 770e49a..188b552 100644 --- a/godot_ship/script/network/Network.gd +++ b/godot_ship/script/network/Net.gd @@ -3,36 +3,72 @@ extends Node const DEFAULT_PORT = 35879 const LOCALHOST = "127.0.0.1" +signal incoming + +class Mail: + var from + var message + var type + func _init(f, m, t): + from = f; message = m; type = t + enum {REPLY, REQUEST} + # Store peer info in a dictionary, by player ID var peer_info = {} # Store this player's hostname var local_info = {"hostname": ""} var connected = false +var hosting = false + +# FIFO queue of Mails +var inbox = [] # Network -- handles server and client setup, and facilitates communication between the two +# receive: Called when an incoming message is received +# item: The message received from the sender +remote func receive(mail:Mail): + # Get the sender's ID and force letter to be properly addressed + mail.from = get_tree().get_rpc_sender_id() + print_debug(mail.from, mail.message, mail.type) + # Sent it off to anything that expects mail + emit_signal("incoming", mail) + +func send(id, mail:Mail): + # Make the recipient receive the mail + rpc_id(id, "receive", mail) + # start_server: Host the game # port: TCP port # max_players: Largest number of players allowed to connect at a time -func start_server(port = DEFAULT_PORT, max_players = 2): +func start_host(port = DEFAULT_PORT, max_players = 2): get_hostname() peer_info[1] = local_info var peer = NetworkedMultiplayerENet.new() peer.create_server(port, max_players) get_tree().network_peer = peer connected = true + hosting = true return -func connect_server(ip = LOCALHOST, port = DEFAULT_PORT): +# connect_server: Connect to a host +func connect_host(ip = LOCALHOST, port = DEFAULT_PORT): get_hostname() var peer = NetworkedMultiplayerENet.new() peer.create_client(ip, port) get_tree().network_peer = peer - return -func disconnect_server(): - get_tree().network_peer = null +func disconnect_host(): + # Set state to disconnected connected = false + hosting = false + # Attempt disconnection + if get_tree().network_peer: + get_tree().network_peer.close_connection() + # Disconnect + get_tree().network_peer = null + # Clear peer info + peer_info = {} func get_hostname(): if local_info["hostname"] == "": @@ -50,11 +86,12 @@ func get_ip(): func _ready(): var _trash - _trash = get_tree().connect("network_peer_connected", self, "_peer_connected") + _trash = get_tree().connect("network_peer_connected", self, "_peer_connected" ) _trash = get_tree().connect("network_peer_disconnected", self, "_peer_disconnected") - _trash = get_tree().connect("connected_to_server", self, "_server_connected") - _trash = get_tree().connect("connection_failed", self, "_connection_fail") - _trash = get_tree().connect("server_disconnected", self, "_server_disconnected") + _trash = get_tree().connect("connected_to_server", self, "_host_connected" ) + _trash = get_tree().connect("server_disconnected", self, "_host_disconnected") + _trash = get_tree().connect("connection_failed", self, "_connection_fail" ) + func _peer_connected(id): rpc_id(id, "register_peer", local_info) @@ -64,20 +101,21 @@ func _peer_disconnected(id): peer_info.erase(id) pass -func _server_connected(): + +func _host_connected(): # On connection to the server, you get a global network id # Save your info at this id peer_info[get_network_id()] = local_info + # Set state to connected connected = true - pass -func _server_disconnected(): - connected = false - pass +func _host_disconnected(): + # Ensure host is disconnected + disconnect_host() func _connection_fail(): - connected = false - pass + # Ensure Net state is clear + disconnect_host() remote func register_peer(info): # Save player information under the sender id's peer info From 47c2acdada9435202809219ebfc344fcdb3b2bf1 Mon Sep 17 00:00:00 2001 From: hpham474 Date: Mon, 22 Nov 2021 22:06:11 -0600 Subject: [PATCH 083/107] Added Credits Scene --- godot_ship/scenes/Credits.tscn | 179 +++++++++++++++++++++++++++++++++ 1 file changed, 179 insertions(+) create mode 100644 godot_ship/scenes/Credits.tscn diff --git a/godot_ship/scenes/Credits.tscn b/godot_ship/scenes/Credits.tscn new file mode 100644 index 0000000..161d504 --- /dev/null +++ b/godot_ship/scenes/Credits.tscn @@ -0,0 +1,179 @@ +[gd_scene load_steps=6 format=2] + +[ext_resource path="res://assets/font/Minecraft.ttf" type="DynamicFontData" id=1] +[ext_resource path="res://script/options/Options.gd" type="Script" id=2] +[ext_resource path="res://light_theme.tres" type="Theme" id=3] + +[sub_resource type="DynamicFont" id=1] +size = 44 +outline_size = 2 +outline_color = Color( 0, 0, 0, 1 ) +font_data = ExtResource( 1 ) + +[sub_resource type="DynamicFont" id=2] +outline_size = 1 +outline_color = Color( 0, 0, 0, 1 ) +font_data = ExtResource( 1 ) + +[node name="Credits" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +theme = ExtResource( 3 ) +script = ExtResource( 2 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Credits Label" type="Label" parent="."] +anchor_left = 0.5 +anchor_right = 0.5 +margin_left = -82.0 +margin_top = 49.0 +margin_right = 82.0 +margin_bottom = 93.0 +custom_fonts/font = SubResource( 1 ) +custom_colors/font_color_shadow = Color( 0, 0, 0, 1 ) +custom_constants/shadow_offset_y = 8 +text = "Credits" +align = 1 +valign = 1 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Programmer" type="Label" parent="."] +margin_right = 248.0 +margin_bottom = 16.0 +custom_fonts/font = SubResource( 2 ) +text = "Lead Programmer:" +align = 2 +valign = 1 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Programmer Titles" type="VBoxContainer" parent="."] +margin_left = 64.0 +margin_top = 104.0 +margin_right = 312.0 +margin_bottom = 180.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Programmer" type="Label" parent="Programmer Titles"] +margin_right = 248.0 +margin_bottom = 16.0 +custom_fonts/font = SubResource( 2 ) +text = "Lead Programmer:" +align = 2 +valign = 1 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Design" type="Label" parent="Programmer Titles"] +margin_top = 20.0 +margin_right = 248.0 +margin_bottom = 36.0 +custom_fonts/font = SubResource( 2 ) +text = "Project Design:" +align = 2 +valign = 1 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Art" type="Label" parent="Programmer Titles"] +margin_top = 40.0 +margin_right = 248.0 +margin_bottom = 56.0 +custom_fonts/font = SubResource( 2 ) +text = "Artist:" +align = 2 +valign = 1 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Sound" type="Label" parent="Programmer Titles"] +margin_top = 60.0 +margin_right = 248.0 +margin_bottom = 76.0 +custom_fonts/font = SubResource( 2 ) +text = "Sound Engineer:" +align = 2 +valign = 1 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Programmer Name" type="VBoxContainer" parent="."] +margin_left = 328.0 +margin_top = 104.0 +margin_right = 576.0 +margin_bottom = 180.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Programmer" type="Label" parent="Programmer Name"] +margin_right = 248.0 +margin_bottom = 16.0 +custom_fonts/font = SubResource( 2 ) +text = "John Breaux" +valign = 1 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Design" type="Label" parent="Programmer Name"] +margin_top = 20.0 +margin_right = 248.0 +margin_bottom = 36.0 +custom_fonts/font = SubResource( 2 ) +text = "Chance Atkinson" +valign = 1 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Art" type="Label" parent="Programmer Name"] +margin_top = 40.0 +margin_right = 248.0 +margin_bottom = 56.0 +custom_fonts/font = SubResource( 2 ) +text = "Tommy Ngo" +valign = 1 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Sound" type="Label" parent="Programmer Name"] +margin_top = 60.0 +margin_right = 248.0 +margin_bottom = 76.0 +custom_fonts/font = SubResource( 2 ) +text = "Hien Pham" +valign = 1 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Back" type="Button" parent="."] +margin_left = 16.0 +margin_top = 16.0 +margin_right = 83.0 +margin_bottom = 40.0 +focus_neighbour_left = NodePath(".") +focus_neighbour_top = NodePath(".") +focus_neighbour_right = NodePath("../Sliders/SFX Setting/SFX Slider") +focus_neighbour_bottom = NodePath("../Buttons/Light") +focus_next = NodePath("../Sliders/SFX Setting/SFX Slider") +focus_previous = NodePath(".") +text = "Back" +__meta__ = { +"_edit_use_anchors_": false +} + +[connection signal="pressed" from="Back" to="." method="_on_Button_pressed"] From f57f6acb9a03321a3cecdd9d962d7227244af050 Mon Sep 17 00:00:00 2001 From: hpham474 Date: Mon, 22 Nov 2021 22:23:57 -0600 Subject: [PATCH 084/107] Completed Credits Scene --- godot_ship/scenes/Credits.tscn | 135 ++++++++++++++++++++++++++++----- 1 file changed, 114 insertions(+), 21 deletions(-) diff --git a/godot_ship/scenes/Credits.tscn b/godot_ship/scenes/Credits.tscn index 161d504..1a68115 100644 --- a/godot_ship/scenes/Credits.tscn +++ b/godot_ship/scenes/Credits.tscn @@ -24,6 +24,22 @@ __meta__ = { "_edit_use_anchors_": false } +[node name="Back" type="Button" parent="."] +margin_left = 16.0 +margin_top = 16.0 +margin_right = 83.0 +margin_bottom = 40.0 +focus_neighbour_left = NodePath(".") +focus_neighbour_top = NodePath(".") +focus_neighbour_right = NodePath("../Sliders/SFX Setting/SFX Slider") +focus_neighbour_bottom = NodePath("../Buttons/Light") +focus_next = NodePath("../Sliders/SFX Setting/SFX Slider") +focus_previous = NodePath(".") +text = "Back" +__meta__ = { +"_edit_use_anchors_": false +} + [node name="Credits Label" type="Label" parent="."] anchor_left = 0.5 anchor_right = 0.5 @@ -41,12 +57,14 @@ __meta__ = { "_edit_use_anchors_": false } -[node name="Programmer" type="Label" parent="."] -margin_right = 248.0 -margin_bottom = 16.0 +[node name="Developmental Team" type="Label" parent="."] +margin_left = 64.0 +margin_top = 104.0 +margin_right = 576.0 +margin_bottom = 120.0 custom_fonts/font = SubResource( 2 ) -text = "Lead Programmer:" -align = 2 +text = "Developmental Team" +align = 1 valign = 1 __meta__ = { "_edit_use_anchors_": false @@ -54,9 +72,9 @@ __meta__ = { [node name="Programmer Titles" type="VBoxContainer" parent="."] margin_left = 64.0 -margin_top = 104.0 +margin_top = 120.0 margin_right = 312.0 -margin_bottom = 180.0 +margin_bottom = 196.0 __meta__ = { "_edit_use_anchors_": false } @@ -110,9 +128,9 @@ __meta__ = { [node name="Programmer Name" type="VBoxContainer" parent="."] margin_left = 328.0 -margin_top = 104.0 +margin_top = 120.0 margin_right = 576.0 -margin_bottom = 180.0 +margin_bottom = 196.0 __meta__ = { "_edit_use_anchors_": false } @@ -160,18 +178,93 @@ __meta__ = { "_edit_use_anchors_": false } -[node name="Back" type="Button" parent="."] -margin_left = 16.0 -margin_top = 16.0 -margin_right = 83.0 -margin_bottom = 40.0 -focus_neighbour_left = NodePath(".") -focus_neighbour_top = NodePath(".") -focus_neighbour_right = NodePath("../Sliders/SFX Setting/SFX Slider") -focus_neighbour_bottom = NodePath("../Buttons/Light") -focus_next = NodePath("../Sliders/SFX Setting/SFX Slider") -focus_previous = NodePath(".") -text = "Back" +[node name="Assets" type="Label" parent="."] +margin_left = 64.0 +margin_top = 208.0 +margin_right = 576.0 +margin_bottom = 224.0 +custom_fonts/font = SubResource( 2 ) +text = "Assets" +align = 1 +valign = 1 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Assets Titles" type="VBoxContainer" parent="."] +margin_left = 64.0 +margin_top = 224.0 +margin_right = 312.0 +margin_bottom = 288.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="BGM" type="Label" parent="Assets Titles"] +margin_right = 248.0 +margin_bottom = 35.0 +custom_fonts/font = SubResource( 2 ) +text = "Background Music: +" +align = 2 +valign = 1 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="SFX" type="Label" parent="Assets Titles"] +margin_top = 39.0 +margin_right = 248.0 +margin_bottom = 55.0 +custom_fonts/font = SubResource( 2 ) +text = "SFX Sounds:" +align = 2 +valign = 1 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Assets Credits" type="VBoxContainer" parent="."] +margin_left = 328.0 +margin_top = 225.0 +margin_right = 576.0 +margin_bottom = 299.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Composer" type="Label" parent="Assets Credits"] +margin_right = 248.0 +margin_bottom = 35.0 +custom_fonts/font = SubResource( 2 ) +text = "\"Captain Scurvy\" Kevin + MacLeod (incompetech.com)" +valign = 1 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="SFX creators" type="Label" parent="Assets Credits"] +margin_top = 39.0 +margin_right = 248.0 +margin_bottom = 74.0 +custom_fonts/font = SubResource( 2 ) +text = "Creator Assets +Free Sounds Library" +valign = 1 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Engine" type="Label" parent="."] +margin_left = 64.0 +margin_top = 312.0 +margin_right = 576.0 +margin_bottom = 328.0 +custom_fonts/font = SubResource( 2 ) +text = "Created Using Godot Engine" +align = 1 +valign = 1 __meta__ = { "_edit_use_anchors_": false } From 50ad9a25391707ceaef217ced42f420e5ea7febc Mon Sep 17 00:00:00 2001 From: hpham474 Date: Mon, 22 Nov 2021 22:35:28 -0600 Subject: [PATCH 085/107] Added button to go in and out of credits --- godot_ship/scenes/Credits.tscn | 4 ++-- godot_ship/scenes/Title Screen.tscn | 9 +++++++- godot_ship/script/Main.gd | 5 +++++ godot_ship/script/credits/Credits.gd | 22 +++++++++++++++++++ .../script/title screen/Title Screen.gd | 5 +++++ 5 files changed, 42 insertions(+), 3 deletions(-) create mode 100644 godot_ship/script/credits/Credits.gd diff --git a/godot_ship/scenes/Credits.tscn b/godot_ship/scenes/Credits.tscn index 1a68115..cc16b06 100644 --- a/godot_ship/scenes/Credits.tscn +++ b/godot_ship/scenes/Credits.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=6 format=2] [ext_resource path="res://assets/font/Minecraft.ttf" type="DynamicFontData" id=1] -[ext_resource path="res://script/options/Options.gd" type="Script" id=2] +[ext_resource path="res://script/credits/Credits.gd" type="Script" id=2] [ext_resource path="res://light_theme.tres" type="Theme" id=3] [sub_resource type="DynamicFont" id=1] @@ -269,4 +269,4 @@ __meta__ = { "_edit_use_anchors_": false } -[connection signal="pressed" from="Back" to="." method="_on_Button_pressed"] +[connection signal="pressed" from="Back" to="." method="_on_Back_pressed"] diff --git a/godot_ship/scenes/Title Screen.tscn b/godot_ship/scenes/Title Screen.tscn index 2750f97..8f04e9f 100644 --- a/godot_ship/scenes/Title Screen.tscn +++ b/godot_ship/scenes/Title Screen.tscn @@ -50,10 +50,16 @@ margin_right = 160.0 margin_bottom = 80.0 text = "Options" -[node name="Quit" type="Button" parent="VBoxContainer"] +[node name="Credits" type="Button" parent="VBoxContainer"] margin_top = 84.0 margin_right = 160.0 margin_bottom = 108.0 +text = "Credits" + +[node name="Quit" type="Button" parent="VBoxContainer"] +margin_top = 112.0 +margin_right = 160.0 +margin_bottom = 136.0 focus_neighbour_bottom = NodePath("../Singleplayer") text = "Quit" @@ -82,4 +88,5 @@ __meta__ = { [connection signal="pressed" from="VBoxContainer/Singleplayer" to="." method="_on_Singleplayer_pressed"] [connection signal="pressed" from="VBoxContainer/Multiplayer" to="." method="_on_Multiplayer_pressed"] [connection signal="pressed" from="VBoxContainer/Options" to="." method="_on_Options_pressed"] +[connection signal="pressed" from="VBoxContainer/Credits" to="." method="_on_Credits_pressed"] [connection signal="pressed" from="VBoxContainer/Quit" to="." method="_on_Quit_pressed"] diff --git a/godot_ship/script/Main.gd b/godot_ship/script/Main.gd index 0820385..20c47ef 100644 --- a/godot_ship/script/Main.gd +++ b/godot_ship/script/Main.gd @@ -4,6 +4,7 @@ extends Control onready var Title_Screen = preload("res://scenes/Title Screen.tscn") onready var Game = preload("res://scenes/Game/Game.tscn" ) onready var Options = preload("res://scenes/Options.tscn" ) +onready var Credits = preload("res://scenes/Credits.tscn" ) onready var Debug_Menu = preload("res://scenes/Debug Menu.tscn" ) # Themes @@ -71,6 +72,10 @@ func _on_scene_start(scene): instance = Options.instance() add_child (instance) return true + "Credits": + instance = Credits.instance() + add_child (instance) + return true "Title": instance = Title_Screen.instance() add_child (instance) diff --git a/godot_ship/script/credits/Credits.gd b/godot_ship/script/credits/Credits.gd new file mode 100644 index 0000000..fdd48eb --- /dev/null +++ b/godot_ship/script/credits/Credits.gd @@ -0,0 +1,22 @@ +extends Control + + +# Declare member variables here. Examples: +# var a = 2 +# var b = "text" + + +# Called when the node enters the scene tree for the first time. +func _ready(): + pass # Replace with function body. + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +#func _process(delta): +# pass + + +func _on_Back_pressed(): + AudioBus.emit_signal("button_clicked") + queue_free() + pass # Replace with function body. diff --git a/godot_ship/script/title screen/Title Screen.gd b/godot_ship/script/title screen/Title Screen.gd index 0f8308a..4111b75 100644 --- a/godot_ship/script/title screen/Title Screen.gd +++ b/godot_ship/script/title screen/Title Screen.gd @@ -25,6 +25,11 @@ func _on_Options_pressed(): MessageBus.emit_signal("change_scene", "Options") queue_free() +func _on_Credits_pressed(): + AudioBus.emit_signal("button_clicked") + MessageBus.emit_signal("change_scene", "Credits") + queue_free() + func _on_Quit_pressed(): AudioBus.emit_signal("button_clicked") MessageBus.emit_signal("quit") From 6ea3da7205b407f469c785d22d2d99430baceaeb Mon Sep 17 00:00:00 2001 From: hpham474 Date: Mon, 22 Nov 2021 22:39:42 -0600 Subject: [PATCH 086/107] Themes now work on credits page --- godot_ship/script/credits/Credits.gd | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/godot_ship/script/credits/Credits.gd b/godot_ship/script/credits/Credits.gd index fdd48eb..5fcd343 100644 --- a/godot_ship/script/credits/Credits.gd +++ b/godot_ship/script/credits/Credits.gd @@ -1,22 +1,21 @@ extends Control - -# Declare member variables here. Examples: -# var a = 2 -# var b = "text" - +var light_theme = load("res://light_theme.tres") +var dark_theme = load("res://dark_theme.tres") # Called when the node enters the scene tree for the first time. func _ready(): - pass # Replace with function body. - - -# Called every frame. 'delta' is the elapsed time since the previous frame. -#func _process(delta): -# pass - + var _errno = 0; + _errno += OptionsController.connect("change_theme", self, "_on_change_theme") + _on_change_theme(OptionsController.get_theme()) func _on_Back_pressed(): AudioBus.emit_signal("button_clicked") queue_free() pass # Replace with function body. + +func _on_change_theme(theme): + if theme == "light": + self.set_theme(light_theme) + elif theme == "dark": + self.set_theme(dark_theme) From 0ef058339ca12b22e7a9b77d8317ac743887134b Mon Sep 17 00:00:00 2001 From: John Breaux Date: Mon, 22 Nov 2021 23:17:27 -0600 Subject: [PATCH 087/107] Multiplayer: Fix mail system --- godot_ship/script/network/Net.gd | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/godot_ship/script/network/Net.gd b/godot_ship/script/network/Net.gd index 188b552..7bd1de7 100644 --- a/godot_ship/script/network/Net.gd +++ b/godot_ship/script/network/Net.gd @@ -5,12 +5,13 @@ const LOCALHOST = "127.0.0.1" signal incoming +# Let's pretend this is actually passed from send to receive class Mail: - var from + # Sender address + var from:int var message - var type - func _init(f, m, t): - from = f; message = m; type = t + var type:int + enum {FROM, MESSAGE, TYPE} enum {REPLY, REQUEST} # Store peer info in a dictionary, by player ID @@ -27,16 +28,17 @@ var inbox = [] # Network -- handles server and client setup, and facilitates communication between the two # receive: Called when an incoming message is received # item: The message received from the sender -remote func receive(mail:Mail): +sync func receive(mail): # Get the sender's ID and force letter to be properly addressed - mail.from = get_tree().get_rpc_sender_id() - print_debug(mail.from, mail.message, mail.type) + mail[0] = get_tree().get_rpc_sender_id() + # Add the mail to the inbox (so it can be read back later if necessary + inbox.append(mail) # Sent it off to anything that expects mail emit_signal("incoming", mail) -func send(id, mail:Mail): +func send(id, mail): # Make the recipient receive the mail - rpc_id(id, "receive", mail) + rpc_id(id, "receive", to_json(mail)) # start_server: Host the game # port: TCP port From 55d14c4e1cf541f8303143442f92123b9bb02d45 Mon Sep 17 00:00:00 2001 From: tommy-l-ngo Date: Mon, 22 Nov 2021 23:22:08 -0600 Subject: [PATCH 088/107] Created and Added icon --- ...8.png-8fa6a445b29adcafaf69c45a7d758b76.md5 | 3 ++ ....png-8fa6a445b29adcafaf69c45a7d758b76.stex | Bin 0 -> 890 bytes ...6.png-e916d7bb27530c71f994d2d2cacbe08b.md5 | 3 ++ ....png-e916d7bb27530c71f994d2d2cacbe08b.stex | Bin 0 -> 346 bytes ...6.png-5fcf1bd6fb6791cb3c432c7c88dff8da.md5 | 3 ++ ....png-5fcf1bd6fb6791cb3c432c7c88dff8da.stex | Bin 0 -> 1371 bytes ...2.png-ba330b5438b784e541f4d4c7ff1165f1.md5 | 3 ++ ....png-ba330b5438b784e541f4d4c7ff1165f1.stex | Bin 0 -> 537 bytes ...4.png-688550eb2085ba14f76a5ffeb3504d87.md5 | 3 ++ ....png-688550eb2085ba14f76a5ffeb3504d87.stex | Bin 0 -> 634 bytes ...n.png-487276ed1e3a0c39cad0279d744ee560.md5 | 4 +-- ....png-487276ed1e3a0c39cad0279d744ee560.stex | Bin 3413 -> 1371 bytes godot_ship/assets/icons/Icon128.png | Bin 0 -> 653 bytes godot_ship/assets/icons/Icon128.png.import | 34 ++++++++++++++++++ godot_ship/assets/icons/Icon16.png | Bin 0 -> 256 bytes godot_ship/assets/icons/Icon16.png.import | 34 ++++++++++++++++++ godot_ship/assets/icons/Icon256.png | Bin 0 -> 1074 bytes godot_ship/assets/icons/Icon256.png.import | 34 ++++++++++++++++++ godot_ship/assets/icons/Icon32.png | Bin 0 -> 402 bytes godot_ship/assets/icons/Icon32.png.import | 34 ++++++++++++++++++ godot_ship/assets/icons/Icon64.png | Bin 0 -> 474 bytes godot_ship/assets/icons/Icon64.png.import | 34 ++++++++++++++++++ godot_ship/icon.icns | Bin 0 -> 14315 bytes godot_ship/icon.ico | Bin 0 -> 204862 bytes godot_ship/icon.png | Bin 3305 -> 1074 bytes godot_ship/project.godot | 2 ++ 26 files changed, 189 insertions(+), 2 deletions(-) create mode 100644 godot_ship/.import/Icon128.png-8fa6a445b29adcafaf69c45a7d758b76.md5 create mode 100644 godot_ship/.import/Icon128.png-8fa6a445b29adcafaf69c45a7d758b76.stex create mode 100644 godot_ship/.import/Icon16.png-e916d7bb27530c71f994d2d2cacbe08b.md5 create mode 100644 godot_ship/.import/Icon16.png-e916d7bb27530c71f994d2d2cacbe08b.stex create mode 100644 godot_ship/.import/Icon256.png-5fcf1bd6fb6791cb3c432c7c88dff8da.md5 create mode 100644 godot_ship/.import/Icon256.png-5fcf1bd6fb6791cb3c432c7c88dff8da.stex create mode 100644 godot_ship/.import/Icon32.png-ba330b5438b784e541f4d4c7ff1165f1.md5 create mode 100644 godot_ship/.import/Icon32.png-ba330b5438b784e541f4d4c7ff1165f1.stex create mode 100644 godot_ship/.import/Icon64.png-688550eb2085ba14f76a5ffeb3504d87.md5 create mode 100644 godot_ship/.import/Icon64.png-688550eb2085ba14f76a5ffeb3504d87.stex create mode 100644 godot_ship/assets/icons/Icon128.png create mode 100644 godot_ship/assets/icons/Icon128.png.import create mode 100644 godot_ship/assets/icons/Icon16.png create mode 100644 godot_ship/assets/icons/Icon16.png.import create mode 100644 godot_ship/assets/icons/Icon256.png create mode 100644 godot_ship/assets/icons/Icon256.png.import create mode 100644 godot_ship/assets/icons/Icon32.png create mode 100644 godot_ship/assets/icons/Icon32.png.import create mode 100644 godot_ship/assets/icons/Icon64.png create mode 100644 godot_ship/assets/icons/Icon64.png.import create mode 100644 godot_ship/icon.icns create mode 100644 godot_ship/icon.ico diff --git a/godot_ship/.import/Icon128.png-8fa6a445b29adcafaf69c45a7d758b76.md5 b/godot_ship/.import/Icon128.png-8fa6a445b29adcafaf69c45a7d758b76.md5 new file mode 100644 index 0000000..af8612f --- /dev/null +++ b/godot_ship/.import/Icon128.png-8fa6a445b29adcafaf69c45a7d758b76.md5 @@ -0,0 +1,3 @@ +source_md5="f1043053126af1a739ae9a6d20541705" +dest_md5="33d90f901d38e94006bc94b2bafbcc7f" + diff --git a/godot_ship/.import/Icon128.png-8fa6a445b29adcafaf69c45a7d758b76.stex b/godot_ship/.import/Icon128.png-8fa6a445b29adcafaf69c45a7d758b76.stex new file mode 100644 index 0000000000000000000000000000000000000000..5ff27bde8bc5aa5009adf7d29caee6af3f5eb3b3 GIT binary patch literal 890 zcmZ>F2@YvsU|;}Y79eI|5MXBnl5xxo3;}-b3Y|cLmrIHZD8%dO;SvO-8$g(Y4M-lg zOFRvv7>k44ofy`glX=O&z%1hF;uumf=j~nFJYh$PV;>DaNnUEx@_MKo5TxMcCBRY0 zw7|ikQGium&?_h)z)it|NmSL;NrNe6DM!aC*L4i8Dobi_o@r0NW_<7Y|JPx=x4F+c z{=P3geeXGtv!I}1{%xb&Rxx8c%{Vfh@)Xg=3BNk3+>Z( z8~5!hOuzp7k$H8w_jYw|(FF_g=kLFk=VZhbaKfr=Uone=TyjH$>b{%z44tx9fV5gL zDXe?>Ihglb`JYG67uu?n^nHJK|Hhowd;1?(*nNMuy-udi%W58%K!Wv}so%9)8C*0j z7V3gbQkb=#+1xDs;NP`Latd$mTmJ3o>$zt?VNIcosDlinfIGvHlf8_6V(Rz)`p=VH zvrMsf0h2_(+?_RdTc#>8*iLbBU^urxh-qgwqir(7`}bcK$9FIJ{{Pe8^7Py5)H%-n zjTXGlWL0}&D}#z6*qJ*k8z$T-uFJi>nS1Wr3o{zH6#5uClo=jLFiY%w{-s&G|Fnrp z+_hSc5Qah)kp1R6OP)^q-Y`wvL{B+sZoT`fU4PgN*gi-`FQ`42pUc`mk-MQ-O0nZ* z&2ty#2X}Tj3*7#BZtgi|p1pZ{BMlWZY&BLUOL=c&dLRP!iXhZfps#$}=e@4``YRRa z&Yji&-!*^#8ooaET~7P8yV2j+`mfp5|9{!{{p)u5d!Os-Ue&UR!9s&~pPE7G+`UtG zyZQh9>)HH`@MgQVT%7BV_5iqYVy25c z-XotNasI=&x#}6`jxYnAd6F$p!T!6WHBWqk^*M>(5{q7KmR<=<9Xr$6xz8!5{OvpM x$_k2BpxW0T?i_e_Of%UDDgaBR5V}F|2eF2@VlpU|;}Y79a+)*cpMO9gqm{b64mD61-eeTtFdSPY;(MkOC0qU;~o!pZ_NU zDaPU;cPEB*=VV?2IbS?o978O6mrgRwJ7gfyYOj3mfR}oR;+2KP`~ikWL7WTkHB4+( z^fo&;VP*FE1Dpa*Vjg17Ju_^+aHSobIQfrf)K|~2Ki2=N>;6v`WfEJxwuGl)^Q=2F z7QG9V)_b>nqRv7!h7FPW^|}l0rO)SS6Ao1H+$^=QxMhZf<;O!z3+|^DZjSqP`f8!Y z{TsFQSO1xFsbn7e@pb76X3I_Q8L#%g4Jo`O-(7n`vqnDhM_eAyxvV)?&)6?xIC?hd z?HWDH;PaEs8UC9{P0d?zC^B}{VGTv*snVA%x?FhnSh%qM@N$+8d9$Fz!+S#@|D=W+ jSJ*zP{$u?wwu3p=GIGL3Uf=gX|1)^H`njxgN@xNA=bnT# literal 0 HcmV?d00001 diff --git a/godot_ship/.import/Icon256.png-5fcf1bd6fb6791cb3c432c7c88dff8da.md5 b/godot_ship/.import/Icon256.png-5fcf1bd6fb6791cb3c432c7c88dff8da.md5 new file mode 100644 index 0000000..87e41aa --- /dev/null +++ b/godot_ship/.import/Icon256.png-5fcf1bd6fb6791cb3c432c7c88dff8da.md5 @@ -0,0 +1,3 @@ +source_md5="236f053c1af2cb6dc8fb21dd8c49fee6" +dest_md5="e8811c15e8ebcd4a71c62994dc9c6d5a" + diff --git a/godot_ship/.import/Icon256.png-5fcf1bd6fb6791cb3c432c7c88dff8da.stex b/godot_ship/.import/Icon256.png-5fcf1bd6fb6791cb3c432c7c88dff8da.stex new file mode 100644 index 0000000000000000000000000000000000000000..ce2db60d03f6a9b1bbb64868208b02adc120e1a6 GIT binary patch literal 1371 zcmZ>F2@YXkWMBYc79hpIAixgd+Osk+1o*itbOH%pE-5ac5U;0)OAuHgP%#G^P$Z^k zMH-M|EDmyaVpw-h<|WXKubwWBAr*7p-rbug6DrgG(D0M#5??LtR((ZP)dH?LQv(%z(_z9~i}P)qy{lZeU9t46Os{_i>e?%%xSbLZT> zdE)b{H*e-`J`A*sAmBM{@aC%>W7%o*{eMHH{@=7-Z*C>5_jv0)b%rm>3<5q33ODNB z3nx7PyZPCU-vP2S866B58xoip4&Gr-SiI-=MgFB9_y7A*xY+n)0vp3Y7KSEH29{#} zhGl;JebM$y-V2^N!2=c(X5df*8#jXiY{EWvhhXvZ{#EmtglE9btm&WSd2Q|W_(J{# zzheJ+KF+^m6Z84JceHR7!$;T^-hHT-)1%M^haBURsX)*{!-OHbMsh!=eq9?&oC%JEeARu;!<>1U1Mso z-2Y>@$-mR<<+oW1nl(u>Ot#rkzy7=Cg$WD>GdbSyF+T8eNie@5Y;dNlnqleJFVFS$ zv<_dd`t#)Ji;tHVKfd_5_`jcHvn`|eI>%}zrt5B)c5W7H2;6J`JUuQA9vp93_Y*@TK+wpzyHOrKi3oP*70n9cQX+l%qWh(&&=`p;P3e+wR_lp zKe{|ol7R&xo%6nT`#o*j1HH4`d;MBpZ+Nu*lh=OU7jg&Qh+Sj4V`ULx5%KrGIWvdy zjoaBjALTnTFm)dIHuLc#c{aulRi@j?>$>YD{{5D7cxkI}d$lV|%aXLCwlh;V$IVB$ z9+Dog2PizGZ{PoBd$;c2)87{#1B1-1|NqC|^Orua|NU;$!Lh|3beR&z!=Zlz#8^Uyyb8`JUqF@0RcH?D_ZR zdVDI@K-#ePc6<4%{=i>9vK%|b}{{C{lQWqY~W89#K z5QX~$CD?&}*R2yzSa0;>=FP}Vd&U(n_R8&Vy!164?ts}f{0XoAF`j;-&hU9=RqZTz zV#gU^QE%7-LZi;x@Hl7MH_ArvpDSDa@9%U(F4?v3|Bf!v-<&ssC**D`;0^nJdj^h> zL3Z;t&fkn7U*pav=pHJ2{rCIjsqiGC^Xu>V&>Q^;&r4$a@6Uz{1G7H%?2;q?jrqmd mDz0tQU}_1LGDr&E^wcx5Jlz|VB5Rxh683cUb6Mw<&;$S(1o6B8 literal 0 HcmV?d00001 diff --git a/godot_ship/.import/Icon32.png-ba330b5438b784e541f4d4c7ff1165f1.md5 b/godot_ship/.import/Icon32.png-ba330b5438b784e541f4d4c7ff1165f1.md5 new file mode 100644 index 0000000..1e48c63 --- /dev/null +++ b/godot_ship/.import/Icon32.png-ba330b5438b784e541f4d4c7ff1165f1.md5 @@ -0,0 +1,3 @@ +source_md5="dc5c89239ead115c7989cdbee213c307" +dest_md5="d26cc3c5d8c5165d3f5afb242806bdb4" + diff --git a/godot_ship/.import/Icon32.png-ba330b5438b784e541f4d4c7ff1165f1.stex b/godot_ship/.import/Icon32.png-ba330b5438b784e541f4d4c7ff1165f1.stex new file mode 100644 index 0000000000000000000000000000000000000000..c38240f60a4dd6851be7e6e169cde0a6fa137fe7 GIT binary patch literal 537 zcmV+!0_OckL{n5C0000W000040000001yWO0002}0RR9{PDdb#P)Px$vq?ljR9J=WmN8GlKp2Lf zN*RbdgAO1!Xo!iElMY4}LRgSR{{qn;;Nqy8GciDrAOjc^V@(YVjHC{F zO?yD0*OEH;CLMbBeZBYIzTbBT5km`-d~tI>Gv<7MGa3TTYR&b2eRVo9ZYcJLxHluig&-V}Dr~Kxbf4IA4I50Rm z&N7N8=(g$r^i31+P{8SI7<bc>&FFN?8DF>9i}rZ-1Co`?6Uh_kgnuHGporty~q8 z;8C6${4oUtM3=Hay}@`O+|w{9yjrn*S5Wna=ba;R1#EWHZmo;P-%&uuq7-R09$oK| bEAWqR$f~rGFyZp#00000NkvXXu0mjf&${7R literal 0 HcmV?d00001 diff --git a/godot_ship/.import/Icon64.png-688550eb2085ba14f76a5ffeb3504d87.md5 b/godot_ship/.import/Icon64.png-688550eb2085ba14f76a5ffeb3504d87.md5 new file mode 100644 index 0000000..804c2ab --- /dev/null +++ b/godot_ship/.import/Icon64.png-688550eb2085ba14f76a5ffeb3504d87.md5 @@ -0,0 +1,3 @@ +source_md5="d743da5448801d5a71eb2caff679e6ff" +dest_md5="5d974b679ce52f358bf54f29b7a68669" + diff --git a/godot_ship/.import/Icon64.png-688550eb2085ba14f76a5ffeb3504d87.stex b/godot_ship/.import/Icon64.png-688550eb2085ba14f76a5ffeb3504d87.stex new file mode 100644 index 0000000000000000000000000000000000000000..9906f38400e9713538b0a71150c7553bfd187499 GIT binary patch literal 634 zcmV-=0)_oYL{n5i0000$000040000001yWO000190ssI|PDdb#P)Px%6iGxuRCt{2nz2s9Fc60S zqCNvFOcg^Pfsp|*GJ-&eCjbTn3QE3oU_Hh5GU0+#U0uZj<6>8Dr zs{PgRnRb2aU{`A&x5Fd~NZTN)W>>^jbnNyfg;zjH)x-m6^QEnL7$ob0Ch0D56mdDO z@CuLsunk~in+3FWb2|uVYlS3?uzJ+|E4%_E0Bi%;g!arWb%BZ3Il+S8?*`dO0N4hw ziG4SiASakiI!B~>zbW4c8At%w2Cy0X`+yO0M5dU}cpQaSfCPYTfFKBhAP54BU){W= U;L^`{CIA2c07*qoM6N<$f(bF2@YXkWMBYc79hpIAixgd+Osk+1o*itbOH%pE-5ac5U;0)OAuHgP%#G^P$Z^k zMH-M|EDmyaVpw-h<|WXKubwWBAr*7p-rbug6DrgG(D0M#5??LtR((ZP)dH?LQv(%z(_z9~i}P)qy{lZeU9t46Os{_i>e?%%xSbLZT> zdE)b{H*e-`J`A*sAmBM{@aC%>W7%o*{eMHH{@=7-Z*C>5_jv0)b%rm>3<5q33ODNB z3nx7PyZPCU-vP2S866B58xoip4&Gr-SiI-=MgFB9_y7A*xY+n)0vp3Y7KSEH29{#} zhGl;JebM$y-V2^N!2=c(X5df*8#jXiY{EWvhhXvZ{#EmtglE9btm&WSd2Q|W_(J{# zzheJ+KF+^m6Z84JceHR7!$;T^-hHT-)1%M^haBURsX)*{!-OHbMsh!=eq9?&oC%JEeARu;!<>1U1Mso z-2Y>@$-mR<<+oW1nl(u>Ot#rkzy7=Cg$WD>GdbSyF+T8eNie@5Y;dNlnqleJFVFS$ zv<_dd`t#)Ji;tHVKfd_5_`jcHvn`|eI>%}zrt5B)c5W7H2;6J`JUuQA9vp93_Y*@TK+wpzyHOrKi3oP*70n9cQX+l%qWh(&&=`p;P3e+wR_lp zKe{|ol7R&xo%6nT`#o*j1HH4`d;MBpZ+Nu*lh=OU7jg&Qh+Sj4V`ULx5%KrGIWvdy zjoaBjALTnTFm)dIHuLc#c{aulRi@j?>$>YD{{5D7cxkI}d$lV|%aXLCwlh;V$IVB$ z9+Dog2PizGZ{PoBd$;c2)87{#1B1-1|NqC|^Orua|NU;$!Lh|3beR&z!=Zlz#8^Uyyb8`JUqF@0RcH?D_ZR zdVDI@K-#ePc6<4%{=i>9vK%|b}{{C{lQWqY~W89#K z5QX~$CD?&}*R2yzSa0;>=FP}Vd&U(n_R8&Vy!164?ts}f{0XoAF`j;-&hU9=RqZTz zV#gU^QE%7-LZi;x@Hl7MH_ArvpDSDa@9%U(F4?v3|Bf!v-<&ssC**D`;0^nJdj^h> zL3Z;t&fkn7U*pav=pHJ2{rCIjsqiGC^Xu>V&>Q^;&r4$a@6Uz{1G7H%?2;q?jrqmd mDz0tQU}_1LGDr&E^wcx5Jlz|VB5Rxh683cUb6Mw<&;$S(1o6B8 literal 3413 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 literal 0 HcmV?d00001 diff --git a/godot_ship/assets/icons/Icon128.png.import b/godot_ship/assets/icons/Icon128.png.import new file mode 100644 index 0000000..78f2454 --- /dev/null +++ b/godot_ship/assets/icons/Icon128.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Icon128.png-8fa6a445b29adcafaf69c45a7d758b76.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/Icon128.png" +dest_files=[ "res://.import/Icon128.png-8fa6a445b29adcafaf69c45a7d758b76.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 diff --git a/godot_ship/assets/icons/Icon16.png b/godot_ship/assets/icons/Icon16.png new file mode 100644 index 0000000000000000000000000000000000000000..6d72965ad425a1be43477b231f91135918cbec2c GIT binary patch literal 256 zcmV+b0ssDqP)Px#x=BPqR5*?8kueIwFcgNrNYCJ^Qz=p$oO=LqbX0Kg2HwKSO9-xBz`>yha0pmJ zheVt*c!fA6w6tnn#ed4r%m3c{68KAWxwP8soIhJ5(MnOsTmVF$!liw<@@BbQ@0^c^ z?>E@)PYwuStyHKLG8bYxU%UPw?Eq4jN9k#$uts8yWU-t9Fq(`3TD>(g_<)e4nH$D2 z0I#;OM%KJXi98G78mSgF-k@4c(yUXH%Fy;-c-P1We@IVkY)z{fBAeO(0000S5d$u4G_Pi=xiRn0 z$Me6Jetd7Y|7m@}qW(00h8gY*3O=YPr~Vtuj}3F>=JUwbe}A3ceO}P!|Ifzf9BdJc z4l@`q&~t_xtIodudgXCs8Y@F069&4sH0?y{``7>P_u8d@c=e~|#gENjFJ8I7K$M|{ zlW6o)&*9F|XLm3B{v)1m7H&HA|CdKkZy)`5`SIkVh4)1xu-iP3IpN})-+ywZW3{T1 zufcWm`^*3TeYtq$bN=mvuL=t7+kj5HXLddxt4HQBcl`eJ&)oU=ek=R^i)I=$V>R|| z?WddK&iC8**Cm&R7B|iT2F-%Sh}-u-xb?Ee>a42##G zMk*wZK~d`#TQnKgX(`(^%rJUe@Futd?{V_C0$zE0cE zZ-4vEUkj|JqopG_H|NK0hV<8qFWR!UeG_gF+sso0%F67>Pw2E|&jXZXF?e z%fDf6DeLb{o{c2wo_n7^!R)u-n{7AWKR%B=v0x@#um~}k3rWoZzn|jHHWOwx-dZ;g OB<$(x=d#Wzp$PyKE_!wV literal 0 HcmV?d00001 diff --git a/godot_ship/assets/icons/Icon256.png.import b/godot_ship/assets/icons/Icon256.png.import new file mode 100644 index 0000000..a17fbe3 --- /dev/null +++ b/godot_ship/assets/icons/Icon256.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Icon256.png-5fcf1bd6fb6791cb3c432c7c88dff8da.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/Icon256.png" +dest_files=[ "res://.import/Icon256.png-5fcf1bd6fb6791cb3c432c7c88dff8da.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 diff --git a/godot_ship/assets/icons/Icon32.png b/godot_ship/assets/icons/Icon32.png new file mode 100644 index 0000000000000000000000000000000000000000..28dee84a57af5993ec571907d0a7369235db5b87 GIT binary patch literal 402 zcmV;D0d4+?P)Px$Oi4sRR9J=WmN84iKp2Lf+GHs14m#ASbjVNW4-iL31u23c=pu;VA|1`*ZxH+e zE{?i67imf@wL=v_j6~X@V>qY83p`@#L(yoJMMuPzW{q9|?rd9>!!N|J6(EShq!)G^qcK`4~ zuia7l6j~IJi>D#80zVbKuv>|9>sCWVeUQ0BY2gfWa{Gxd==i==o4^>SAr w@iYuPp_@N<8Y=$}%&UmJW0~9)C@3iS1da-los#Pqi2wiq07*qoM6N<$f{@^=_W%F@ literal 0 HcmV?d00001 diff --git a/godot_ship/assets/icons/Icon32.png.import b/godot_ship/assets/icons/Icon32.png.import new file mode 100644 index 0000000..cfbcce5 --- /dev/null +++ b/godot_ship/assets/icons/Icon32.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Icon32.png-ba330b5438b784e541f4d4c7ff1165f1.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/Icon32.png" +dest_files=[ "res://.import/Icon32.png-ba330b5438b784e541f4d4c7ff1165f1.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 diff --git a/godot_ship/assets/icons/Icon64.png b/godot_ship/assets/icons/Icon64.png new file mode 100644 index 0000000000000000000000000000000000000000..ab9b1f09daf9c21c0c4915a6a7969dbc2d095c25 GIT binary patch literal 474 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D%zr+B(JhE&XX zJIm0E*-@hPzsI?R)u9_s2--A6L}{^X+_WJ;(2;xNBn=^59i5{K+&6e->MA*^E(zFp z>yUQND#bH7W%bw3{1AIqdw0XkyW9Won^}3-rA5GrL$PIo*Tr|=E|qPc-d1SpBkSHEIhj-7n_@7=*&`*v;9QM&mi&%!F=`>p?gm)( literal 0 HcmV?d00001 diff --git a/godot_ship/assets/icons/Icon64.png.import b/godot_ship/assets/icons/Icon64.png.import new file mode 100644 index 0000000..71d7482 --- /dev/null +++ b/godot_ship/assets/icons/Icon64.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Icon64.png-688550eb2085ba14f76a5ffeb3504d87.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/icons/Icon64.png" +dest_files=[ "res://.import/Icon64.png-688550eb2085ba14f76a5ffeb3504d87.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 diff --git a/godot_ship/icon.icns b/godot_ship/icon.icns new file mode 100644 index 0000000000000000000000000000000000000000..3fcc0556f7f6221fc7e8de073c5f30e427a9430d GIT binary patch literal 14315 zcmZvh18^rnx9I<|&5do_wr$(y#||p*+1R#iCvQL9ckg|#Q3us^&Z(Z7U-k4@ z8rwMo0PN?M#ta;PbbPw1EI1|5*(H{@Ve6?Z54BIOA{m zZ$$vpKdgU;`-l3^_P=aU2q2*U8s8=WVgQh^lc}MLy%QIKl%cbNsS|;ksgtv%y&VA~ z9VY_=9pkqW0QPSrAOILBC;;eN2Y@0VAR(df-^aHu02S!}>jnP*dO`kQZ#>{1+XY}N z{F@?aI}j1^&m2a>SGfx|SvqpeEG1CD-dC(0b73j*Ph2Z)Kc8m+L}orH83~oz^KS>j zu#+0+rM}Y-R%-03CU(JC8EZn~)9pZp{}u#=GX7I3ShKFa+<#Q{s(ssvVqrQXB@0?1 z!SAis+**-_JbJE5c#_3H@DRv5<8z?1$9u{>o}$wI8(}*T^S=c`!tJzLXy9OP1II96 zLNoWIM$-lTT1lA(0@+xm73yn$c;cR7tBMhzZZ z>+qSoTngzCzXyaii@`Yu@ChbxQ3Hz>E!uPfjukI})+l=m{64Gl=)-@E#DK81+BS*7 z9KHs4fLo-pkE|);Tgu=o5|FG7z;mXu@#uVF9$M-a2ctrlp4nRtG=VB4R^abs>ct`# zAi4h%n4w%1DW-BR&_ctD~FS3o`gssMDv%pocx_z8ueMzvSzeNYUH zA40`E$_~YfbF6H{*$*o~ILx;SjpwYEV7M7AEV|0gX`t|zmk?HH%W zC7ei`VSd+LUPfYDK5rOKaP41&my78HRl0%49N#6Wo9mC{OkC=nZVAE)5Cu^*#qDOL z)Th6$aP{Es;C~3qTDVFO-S2-8x2F{9J9#3}=AZ8E=9{PRDaq$l>(94iU-2Cm;XpN% zGD`fw(?_USc{OJ4va%M5j*T!`dOJ;iOlH4H`V(EN&ri=lrc|kOC|mqt7!$$fNE!0t zNy@GYq50wz50gDU8s1L(?1Q|JTz4$vL|SojY#w*CHZlB z@aS2SW2#;W_RqIN$Pswl67<)C$V*(CLl$o;my2ydPp}mhS?MN`Lea8{hu+%o7c-n_ zs$g#+)B@v>a=Pe-9%_Sj^_CT7F*tB!JKPxW-M6~wyVk?&y4<(LLouVuy~(iE#SnA; z_Cnqed9UXXc)$3~57kJGX|b6XzWC`S<$SFsTrM0|U+E-cFu z?Y9O_y{!hgxy4$%&u2=!+Bo+6jjZkC+rs^4o1K8_yBScxd2Bxx)HI(Ve9o*D=H4<@ zZ|RM`RwdUH5Q>El_nlAGEOAyRo+}tG8onjTOiXYj*s{dUW(5+5Hb^RdqiWyojbhs_ zn$)B?06E}978*zPY_q#A3LT!uuaDnY{9(u0jAFt)()i~-AC5OZu={Y@eQ+c`i_)~N zuI!{I-^ynm5_(HXHAu%s(LMBH({Npt7S6RPa!xr6+bmk~T&dVTa#P|>9|je|yYfS_ z25|4tY6eRg_olv=I&m$kvVc-^pc8fy4SMsP(>TeCY^QUa<-yfou=Rs4g+^drR_f!K zfU-3;m{e8w^#}?34yhFUmXU-lEvySgktO&zOwdI&eAGc4)uynoo&;SfTI$CICmN&4;~O?VzECKdV%W- zRx|2zZ)bp|ZGJEtneN--TO-4_4i~zTZO%&AVQ+~P2?cF$E*5=zUR!1LW4+vxi0E}y ztqh*9->?xQ^`qO7>KG*u)+da;*BHX<$X>|3KcG+6**U=rkYh3C+^K7OzzLWU;*w*` zg;6EMUW-O1Eyc9!Xu5gNKZHty#Kx77i}cp{T6$JYf>pdPwVye9g*+iB_xuWhz{--gOf`&&8Djfk zWJEnxtVwI@k-3zr`gPys32P9^u?G={As(x%%&61thbtBS9#S1eK+aI)SyFipc1;KkzdD`ELf4f1jPl2Qc4^KO38$e!?%?K%M zucJXO6c!3a1!6ZF{~(l9+?X{s%$?~kRrkAYB67=AALthl_?!W_nh^P}I+Nx?Az#m# zYaZp1v)h&8QUjF#=+Xf@sks4w{Y;R42LgM#FVYvm;aycgXeYIR5#KUgeXz2As*?jW zFr=-FQf;Em?FQJ*&dj);O%b?4)u5~df=ml!iXElJX2lUKx~67g-TkaQ zGUi<?drjmBlkY4q^arPs&E%qdy15T5{Z_P<3fvu9$vq(hM0HxtKjD zE^V)RG0gl>ZcEEX2lx1E9t>(@kEj*!05SfoU>=G|Jx!wz21!!KlsQQ5NocQue%(zy zx;PyEgenM7D-n&Y9!{*UTj=##p%bN~E(8tvncv8ILH*MiD!%GM0ZfvhvgddcMwwc~ z(XQjTYO@W^OI!vH%DSWnu1HFTTn@^!=$&)FvS;>bT$n76B|?Jvwm2)FNn0s<>J9Nz z0i|**%3ustr38E3+8y+n^Q6UWqU&Szk#FHUI!2RaYys8E!HM5$c=w!S0Is*f0vJ5N zE1={P0-A@g#ckmDw=kST6*6ScZHjffoNhOEJb_{t7PBq|EO8d!%v0~7@C24vH!JC> zz`oxbH(5cxTlTms-D)rL&%56b4Sejv#RN;AJc7Nd{2|uLT>_8qgVZ%IEY@ZvE~N_m zMjcGb@_t&K)E-HgRhecIb7Puu$?90xPNeV+eH@}PD=Iydy*pyo3?!He_MKzWl|2Yj zBe0(?*5l-CY<&^+*1AOS&y`FoRn;CHrJ|MtT<|zRO6mBcWk2+wW_}5#kY=;D$l= zhk@9`jU6buO&z_9VK#NZNa3is7J+X6>9sWQ6QfP+w1UvkVQ{h`zTMf)FrT`e>izI1 zEf+~{u2p|!UT!P)c0QzjrVPy9GZ~qB;h6Cl=!Y(7b)(PQ=!p!oMyWn9X;1yEE}W16F(+)t z!mr5$C(&;96mlAvc*n@fvwl&*>Ffz(r`1Ydv(4um3lUcs-2T9*7{S$^`FCMoHQaC4 z+K{fSK0Bh|%BFG$?+b3PFT`vMA-BjgY%zts(-(d%R{rS$QS#mL8z1%fQNsM`a!TrH z;;%Gz7@igvij^d0%{=?^GRF0>Y8NsWEHBZQ7_=jFa+}4Bt6PzkdD1# z4gzZOM^oW;c3LJ$<*?tjzslGS1}Ztg&R5}szq&FScf?44(ba$zbI$1U9)IyB^iD8M zZg`c(a)9$SP6VuO?*a^wI)qV2XPHWKM_tN)RwYa=)v$D%Ji%YYTRef@&4Z&W zt{z0Y^x25!fcb**nNTK z+|d1IkbO93*t+EXo;TzYWzYRrGX`)5D>fov#+0Jtc{vogc>}{Z4~M6sTuvErCHUW< z!e$TirHeqF`75FCZQWc7u|`pW*VVW36qC6+`@!yo0!gvv0^g{6o9p*1;SEPKNhy*j z9=1To+$NVByPG$pBvW!MiLXGn0Exn%`*Jh9FHV^t%@v{0-9Fz&-AZQfY}Adp9{Mth zFYh{@r@&wk2-1G`YvsQxp>n~Kw1#h%QKQoaW6*_l0k>g(^iI(GCk8cbBfs3Snm^)b zLio(FOMqYdjdA7pdf`Tw6LL^#Nz_bF(R>zC;BUHZf2mOplRwubxahlX*4CSX8=Xpd zv|Q~3q(K-?RaQ4M_+m^Ch?(zJF}&O7j}jJu5(3QaqUZ=vDA2Vv( zYa2?j?;tuU;Ce}|fDRgi<3Wj3MjmHWe2LbHIWvP}zV&_z(eBo^B#^w_Mnl!29$TUt zkQQO~30?~eKA7!dwG{ts+0B-PRJgsnw{jm#NU;=v>YGFuy73PgDbpMZOGZpoQ)(Ax zVFP#DJJFGkpcR zt`1po(IdIj}n5O%Tr_Rh@2sb5EzwkxC$&7)vD_)dmIkb2O-n zDBC1&?@f6^vXc+CUW_X7-ac|1&tnY%=>ewGc^8G;U-$FV+2csUY3P@0ch^7OvFKHm zypk}Y%8VnGQC*xR8OS~%!0S@JM4PZ=G3=N}I9zJ&0boj;4l7}Lh2)N#vTYs(Ph>?1Mr572m zAxq@}gg)2Aey1A<6BJ|5&mQavc=vBc?Uey-*_eH6c(0Se{ra~Y#6}_pm2xq|z(bCs zv{J*4oJ^s?O#PbY$DM(91QAW9a*AqBDUW-|4n5EWnWW=GsFW;L>`H3P=!bM1vv2>g zmUO+bGQHJLL(lfPkeaU^&Xa}^Spm_!9{BR@kK9&TL0w*Y;YcllNJkNhF<%v|Is>dO zQd+u~BLZVe)=`o$&gH5!wV`k}KvEc}6BT{r(#4|#(S0|)PA0|G2g7_5^hp2eI%n=9 zoRMS@*STFxK)TcPJyy35XGT|V)JjGzTGD5bEhFMq-$$bQgdT+6yNVbYrHGtTWk&zU ztD*}E#?eiD>3khVb13ezvFtY>O-M{Wo|+5};3(2q5KU^NmiBm2v^jYWNtO%9_B){H z+^z$LEI5A}xjOFub||tx&QlDM)=CbIV7_xE0;JS1DXgdoqEViqGHwF-UXXl-i`#LOx#r3 z$%nC5y!D$vQqCT_>c( ztLt=XDa3suYD7jYc|@z~8@0x5`=Ver_qkKLovhK^+4n;2m_ErjKd^3lrAa1_433B0 zyXdrJuLO^sS>fEfZNbM-C@g}npS`^;fqHq6KxpJ3BG#q2@ikgT?A#kkVs&W@GGnC{ zGKrp{D{Z!lEcYCyz;6B++ggR0Lj9Nnb?mPU2U1JRwq%|M80fYoGhavqVFaWZ`2B+0S zbwLhow$^>U;TfEiXnEb3-1FV0ndZ@Y@@8=w0DXqMcSR}&q{CD7qC7anB_Hjh@B+Pu zQ7-)3&`B$r>~1f{BWFkcee|XOHOg$Adsu@<$J%9?%5`16zs0reu(_{Ww1~kXbYVt! zdvB^uN7zS}=?MX_BB6c;YV`WKp92M>#G76RqNB6M5Xr__o{`L3d?1XyYC82qfM_#n zCx54`b2O9PK5v~G(erJvoC9eZ>0Zf=ZC-{WtRFNvggNSzB2i+vwS_G?-o0_e8+_fr zc{t7XHj7x#K|&Scp2Nl86liX^t{Hmbm6BL-1SO}9L;eP96$ht+C0qRoN$KLY_9m#j zA(nxKmAB!p8>QWlVzrjRB3k8mo@H|+W%8NQhz*jUBGW4x^ zO0D%CI_A9I!>Z*9z3WM?+ywQiP&pBfjkB$r^Me``7*3eTJ6nO8*U1M9=kSQ;DPw%< z?PCnB$<>_mjaH`oQ}juR8XM-`ZqKDh9b^|M1AoLD>fAd3js9N5BTV{Ng;8diOqaWc zCB6Ir$q>Q4;^qvqjC4@fUOeq&Z$}^Eg>wajEz-y<=@w{mo<$i@F|@;Yk=7J7Ijfva zvk!3I2__QfN9%+yP9Lp7VwO~`HsGa`F@oQmqF-{IVXx>dL1r#9n{wJXV!I-`cxu|7 z9(Zaw&X<%EgOtNA`7oAD&-xB*MTI10or$au;|rXoEmCpR-~;cG2AQ!DhF0|`8cqb z5|h8HGhNjUB%+D?Zk3NQD{pwFrqu~Jr*=I(s3OA@ihSC7jrWzCD6~^@R{PCoAxgR% zegy@>g(^8EbCr>{@iWfoW!~N;?QOH&hlo!19F}0TzHBo|oA9eL`B{BlwOrnN6 zw1%a)(FGW8>(ZQJ?X?&s?;YJLAvQy&imhRwGgp4hXJdMAo@@9z;1p$?BP#ZM zy$D{l&C{2^NtIH^jqYj2aXNF%uAXwju8*P9ipbvIAFt8L-1&P#MOQ<`&Fgllxq~!( z%79tKXb6zAQXcU&A zhQNjrmxckxBlK%#k&V;?BcI$x-Q1##s9ByKuqEG}5#ih9Jnc&nmt*&toEGzAZ|%6m zr;djR+`F>ROyKrP)315@d6MaNdDHsIp#|{7)Zw)1-*ki%c_tkVgXinL?I_UBnpo4r zo880mJ2Yr6ZB72o1=&KGA)A`~*#>|`b-g(Hm7zFDI9m6$igHH(x`8yLo-XKpagOJd z;J8F#mxx{us-{Mil>bMC*BH>&31X((cy4jx=1PmZU$m*Ikb#K(SYrN-KvK&5gV+8N*4i`o$qCaY1>WUCM%d(f zB-vlG%RkAx<_$S?(Y{bkQ3-i zdlI<&Vbm8k#q>2;azCcmmRY(q&!4HDEGlN-=KIzo_4gC4e_9bt)vY}}vIO=V9xYg1 zpT2F+e{gaxx{GiVA>4VuOsNU`?y^PLL^MBZeQRQ!_2&R6Z+0X;I$FfCdwpc{c~+Zu znqF&1>JJACl42-UUqIhNAEF~q1Hs|{FkYa-*}cPa@&o1XLAA(A)%-byZbi5a#7JiC z9?x(Kw=v!%@Z5^?HSb)y!8&H78ohdVDE?jH#DOf{bFoMuvU^6VszlnQB6;VB2!et3 zD1#K&mHslV$Fpsc7xBZ*QT7OpqAf7g4jVCxI$dmP99lmO-f_2aI^w`k&O(fcYyy2z@Q2WYYBZirDz0Mxv^XEGFdJJ4+O(57J`U49i zLj~|lgcPP7tkasMu(bXg_b)B>Cwa)KH?2;JT<$8W85!e+Ike#Cye$Js@dwzRoe^3H z3>z%rSQWsuxMdW{rZ}~&bpp&mAZ|0Yr=bIEhaCAuIZ)wE=he@x=u(#|{KK$s(z~ww zb-3MZH_}v(YkNT!5-2ye1c;Zf&DGIrJp-)iAYZ4-^Q)JlrU@s}D6j}W>oWWI`vlqt znfay31Ee1}VV9QNjOnI*Byy^dYCKw1+O2^hF@q{X;wW@?mWTnz{$KbUlQgHN`6brq zruUNg;@fcn$!M=b)X}VhgKWe&<3_DZbQFbLCYxhybwM--zc|*9oy2vPttojy=Wm(>fnqKbzcDiPS-dfCh4%uPiZMe zXVo$K>B~UX{mq|#2DWsyz^or(6`3GrC+KHFfUHIsc6U|Z)3`|&r9z3s+kyysg5R=0 zv6!pwUae!nBs>9WHTwM1(jpbbQMhd6`dnU13(hCHRKZoUJG<(6&1o@iy) z8P}e@a)|IQ>Q3ssvsiq(`+AL?8!QTQHe!vNHI4h>^a>}W4R_hV*(aGwN1sQ0iVsYHpb45d%jp;}DlhPmQ zBx~e74oSye$NUUNpQu8J3%ueTVpF0x4~Wk0F#qoClb5>T0t%TgbgT;SAk%m%Hl zt9NuXx@Hl}VN$D})l6+=mM(v|DspmiRwQHeqQC{+bsLRrQDBKLa!}-`OVZIl zpg76@>-QXb*b#aAEGFjiSlJhX7+n>_(yyU+=`25#VIM(L@#M8@45zmT<`BGL zQ9~lSFPnIzs`I4&Uj05%80aOH@_V5N5pZ3KB*|DMUdasXCzR9QuIsHa73_9kr3N|H zI{RnK$D;-=^w)h|+D>F~N$20*t$weFz<44+B|nyFbSSdtNCRP1TnM{p4~YIUF_HD= zPk*Nhe-cm0hkXB#zbj1*miK-pSPtVN&sXW-BhV z`aJT`-PL)Q~aEl;Q%>{r0uWxThjQ9qg{KhrTxJYAOQ6?Vr zTO!o+*Sdm=ubX|H34a)eC)gAjK;=#@CcB{3@YtRu4)VIWd3PUQf#+d>R)WGJSF0rO@i8csbMR48|;M#~9kQ37+!p_6{CVxcaJKU^iw;0(DK&#s{! zqvPE8nm7J%Ssg;|Cnb8c8}3TZs)9}RK`eOTE(kN*3)t9LJeDcG>bLZ~+HsNhH+maI z>YC7gLoN)*=yX5lj%c6{3Q_)6E`aq$*`(e6c9P;S$`_QU=IYM9!9~ye(}_Lj0EA6+ z#nLa@)o(rWTRT(PiULQ+(@1WUC#t4EUqe3QAz3?amG*i5+$hN<ZOccx$}GrtUUz zk)k_hPM(Lee%6v#LP>j2SvK-dmAVDCouvF#boZg8jG~b5jV$#RiDmFIdN3o2=j`2_ z_b>T?J|NN%q;F91>R@%{+!wYIenDvg*co5t24_VJ9CZw4m^?@^rN(DyZW*$hF1th^EIiq_##ph!T@S=t7*aa4+nxG@ zCD4LI$Ho{?WXUK7{7*rBqsXqEj1+6stk=C^?9%ciZ%y z`Zjyw&T}a8F*5y?BkcJkVk=xTT)5>G!e{zz?nBP?E98rJba(wEY!Ea=+GeP zsqRyOoK97r56yHXtwX9O7RBAG5)6?X<|usJ3$X~>sn{^wX8tp&?il;yPWUwEC#Y{# zB74_R%LGRm;I$v+?zvc|n|WExBMbxi;E+-nP8j}T~|eg}mc zS=0!f-xO6DTF=AelBU@U2VQrS69A1+-f|Tno@>fDvg$z;TqVu+UmiIj9p4sov zDb^Qy3cxh+kK8Xvc+~JV+49Ph3+Xo4ta&>T2N75tAW-n0*N6TlZtyX?y|beOa@}?@Y7yK;}&f>q3nrNVp>8?T75$x_*>q z0;vfBrucGaXeZzFx8L8cyFlIcFo12%42eSEc;2$w!@vKO_O&+g)c&>f;k)o{+hSin z{+7ewTgboA<$ZpgWATvjN`nl=Jn#{x1Du3FFJ#^vtFj;oyvExxn^LBZ%58TBIojoF z5NdJ9IZ=Z`f8q+UyaKmh`tC$moMcA^ZbnZhQ%ASOVH1#2IqYue70UZZ(N#G0(Cae? z8n^qn*G==Z$=?Pd4oU<=1+>0BnRH@l=U~3gW|P z&h&v>WR|`b3{SpN*sn^uy07{lz(>Lx`bGnVvl=+TJ3=cq2C;wcc{be&)tapc@m*x2T5tesZ~C< zwoED!APA~PbMV_=H2g4{H11@lA3bTXXD5NYXGXbx!V>bzT|>i}*DvglHGq^7@>A5c1)h zp(%W&095J2V+3m)*KRfygC;}kovHbLk1vHo7pi8mewgcl50Y{d&00~G;V&FdJOK9y zK!8!Qe|kGNJTj%JXnO;gErqQP0Aoz6L_k9biPnW=|7-l|Mn3r2Wm9 z8&uwrCz`I9cUJaH1dj-Z@b>(tZl=-)I0eAcc@kELj(NmWEpp(GfFhA)j|oxCSvM?G z!~TxGL8@?iY=(@OjLqo~$faR}PrQ81B79rvF$uhaty|^~4!;8QZb80Mj;xcG#|nSR zoV(>ORdY@0ckdp@hUZ7K3vE9V41Njv_s7*ea1M{0fr4kV_YWjq3+r#c0}T;JCpSmn zI+3wOV`QT~j#X9!%+NMg1m-|+e#Mv47)$$K_xjMH6XH+-Y#-I!3kd_N8NbXacr0UE`Ahqbs@N-~fYeXa6VD)}K1RmSOdk>@QpWtgkOU``*HPls@lkx?S`C z#WV^FZ{ON)yLrk7GB1ro*@RhKh)$wzZRd~aa{A1)7QeF4vYjsFUl-FSKXnHl#!SL4 zu{x>PvevGV5Xg-2yN?DZ)qau(0na{R4(~+;DT!H0v#TvA9WKf{W8U!YZyA~@ed%Jz zY+fRNc+afiW@=Wuu?lP@R6&HD>Yik{?(creg7t#4oG*)C(t% zGTvM?aiX6moy)=*PVzI!nifAH5aDwBgP-y4<9k{kYqt*5Ng(=54yUa@i(bc0;%agW(yAe| zbY`4+Z?Sb1ptRscTI#mUTtV}cgfWjXV1NHAps<$wN!7gq+*;97HPG=MCMlwA6!+!s z`Qta*?=e%8?HD}{%j#$3G!dJ2HND($61){N8&_aV6&>b*d)ldf70^HW-zKr@EckXT z_KS4{u_N1DYC{4RE0R2r@8(Ecy(6Uma~ZCsfpt41Yh^2BMS|Wc$!-Nl;F8&hUV*Iq=F)-?4?L6!pLIu63GUKSX17RQr-YZm0Q1m zP!RLv7eAWdRDdM%2L%m~0Pnr@eBjD6)4}ts@0~doWy;C0ZAds-F58Rhwlo4mhI2PJB6jb`;4Vx97L^+5QfvTSl%86KvPcE!Z3^ODkDZg)iX&nMz7jN8=tmYkQA+4KU{Khr+n%eMl` zHS;E~s9k{gk8c>e*Y4i+?3=ggo9SQlFxG|jZ9#$_5x+{_kF~we1)lc#S5AsC*V42u zUDGNin8j=KlT$H6gm(46NoU;st%=1{1k2Y=BbeJZLBw-VQ+fXaZxD`c^hmvLUbS4K z40f;@AD+b`WLVh7`6sNV^^bQi8aIyq=3*#_C4IwEt?P#Hh+yJa1dA!gEfFXQK&L9C z^^bDtjs6$x;Ct5-^AWS;ceHW;WTg#v22|W|ZFVihwP&Ig2ajV09AnCF7-Eg&&#eQA zO6VIpH<;H)`^#Oap`k&n{_GooLJZWVEy6S7aHS;-+PA(*2i%|j_sEGjKeBC_jB?Rf zT0$w~?X!-9NFM5qeZc}^&C5WYkrR8XbO{o7wi2&bGGdD|pP1kSHnmS$?{X!vdY-8v z@DY8iD_KJp5@4X(586$dVjadIw47o`Cj-_`a6!wG7PY6hjmIC#j#(Ga0-;QK(Be?$ zxjfRC{(*dgLe;4S6NEqfx?M1e(``*D{KE$KKh4Q0`Oka)C-yKGp+yTVN<2&pQLd&9 zRBJIKNPN2*LwAp4g4w4)G%mI*IiZJ6t)i;%<9X0*#=+B8q|0PtprqO*hh=owQMf+P zk(f^sL35A=x7>>`<5cy3F^^44*X?gL27?H=Q(nJYyn$XU&4|c9!%~&gpXVJG?%d%7 zC&GN%()9vDm_a;HSRWvWJvg8rh36($%>Q0_o%{C-VGBY-O)7j7T39|6j}XEnl9mhC zAb}m|`1guJ;mX{(*W&V3FW284zr7x=Hi95DA=RhgpXoz%$lAhg8vWq5&4qj>&@>~M z?&kxlHL%?*l(_E~`_^23-7T^=ED-l)jiM1Wtj7=PxzftOCkQLqU)B@}NzJ=&ziiH} z;E;OpZ{fIy`Jd^mDNBiUs zHN9`Yj>P52>B(n;|Di-}US+N6rBrX{O2n4Wky%$;#Zh&*(3U94%tJEmOB zs!%IGMc3(p%DaKXxVcCPj60q#r}h`AGo^a&Tj*Mg#tLVz>B@F%B@zNJ`|(uCTvV63 zN2aDF6Zk#y=Qb}ZmwASXjYhG96HvTdIYb`*Jb4!Pj)f}yAtC)=Z1jki<9$KNi*1xP zLs%7s8ZbKl2O0(Fh0X&%DG<~ufI6#lb6K{Nk&Pg}@T+s-jgbj63UA7MMMYgxDLTps zF{pfGcs8XxCSjdw#auyb<5_?H`aMDAgHuZJK~ zpii#fu)Bp>Zi`^R+pJ36JVUdf^Lzi)(Fz}*UdW=FL|}N%_+0`jFz3z$b9Jcw|rCXPN?MH40&unLDGU_ z(N&(!4>AhlBhKA}9~n{6xt0wuh)sR(`(69W5Kd_-xkLx-d}Nkd_4hdp2XF{8I-TuE zhQ03}>s=8eDFU!xBfyX-uhsBY+Hs{B01rn4vvrLC1Uc)PCVV7oIA5Kia<=8`j+`l&q`?SCrn+?hF#TUEAlXeXdS<~{c{1%c--IXWC6$tn4 zIXNGJ^H$d!MERUnu$#{n0PYc c4!JXy_#dYG&<)yd`y=`9MBwVPmfx%Y2X3i=bN~PV literal 0 HcmV?d00001 diff --git a/godot_ship/icon.ico b/godot_ship/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..4fe2c76d36d363bdb4c4e918375fc5d4737a025d GIT binary patch literal 204862 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 RhtD5ek2C}z0D(0K{0H4QSQ!8S literal 0 HcmV?d00001 diff --git a/godot_ship/icon.png b/godot_ship/icon.png index c98fbb601c83c81ec8c22b1dba7d1d57c62b323c..1694226b0a770eb208dc7f5426cb05edd7c32e64 100644 GIT binary patch literal 1074 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|G!U;i$lZxy-8q?;3=GU~JY5_^ zD(1YsyRl0)l%e6_nm5KvdP8qKvO6?Q^T;Kmg92-UA~FO5yC-O=C|x{sC`joSN7%Gz z{luL)(^9)tmh5tkQ{2~ZMl4S5d$u4G_Pi=xiRn0 z$Me6Jetd7Y|7m@}qW(00h8gY*3O=YPr~Vtuj}3F>=JUwbe}A3ceO}P!|Ifzf9BdJc z4l@`q&~t_xtIodudgXCs8Y@F069&4sH0?y{``7>P_u8d@c=e~|#gENjFJ8I7K$M|{ zlW6o)&*9F|XLm3B{v)1m7H&HA|CdKkZy)`5`SIkVh4)1xu-iP3IpN})-+ywZW3{T1 zufcWm`^*3TeYtq$bN=mvuL=t7+kj5HXLddxt4HQBcl`eJ&)oU=ek=R^i)I=$V>R|| z?WddK&iC8**Cm&R7B|iT2F-%Sh}-u-xb?Ee>a42##G zMk*wZK~d`#TQnKgX(`(^%rJUe@Futd?{V_C0$zE0cE zZ-4vEUkj|JqopG_H|NK0hV<8qFWR!UeG_gF+sso0%F67>Pw2E|&jXZXF?e z%fDf6DeLb{o{c2wo_n7^!R)u-n{7AWKR%B=v0x@#um~}k3rWoZzn|jHHWOwx-dZ;g OB<$(x=d#Wzp$PyKE_!wV literal 3305 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 diff --git a/godot_ship/project.godot b/godot_ship/project.godot index 1e4cd1c..56aaa8f 100644 --- a/godot_ship/project.godot +++ b/godot_ship/project.godot @@ -13,6 +13,8 @@ config_version=4 config/name="godot_ship" run/main_scene="res://scenes/Main.tscn" config/icon="res://icon.png" +config/macos_native_icon="res://icon.icns" +config/windows_native_icon="res://icon.ico" [autoload] From 3b392a3a2e58604efdd2ff103e0c346ee78c9086 Mon Sep 17 00:00:00 2001 From: tommy-l-ngo Date: Mon, 22 Nov 2021 23:57:59 -0600 Subject: [PATCH 089/107] Updated .ico file --- godot_ship/export_presets.cfg | 2 +- godot_ship/icon.ico | Bin 204862 -> 91099 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/godot_ship/export_presets.cfg b/godot_ship/export_presets.cfg index 5a38ab4..fafb8c4 100644 --- a/godot_ship/export_presets.cfg +++ b/godot_ship/export_presets.cfg @@ -31,7 +31,7 @@ codesign/timestamp_server_url="" codesign/digest_algorithm=1 codesign/description="" codesign/custom_options=PoolStringArray( ) -application/icon="" +application/icon="res://icon.ico" application/file_version="" application/product_version="" application/company_name="" diff --git a/godot_ship/icon.ico b/godot_ship/icon.ico index 4fe2c76d36d363bdb4c4e918375fc5d4737a025d..4eff49aed008e392f73576410bba3b881f56a81e 100644 GIT binary patch literal 91099 zcmeHQeQZ_b89xP4X3&-_%CgAT8JDodf!QK18>5}Tlw`pThhy1L*kW-T3!-suQKZbp zxe?K18EWKXTFuNth=lADw<3j(Ne`k(9To!NT&Z1Ex-mg8^ z@~_)_yWOrwrY}Brbm0ECPj5Ndxwq@LmpMQGP}%P@lba9icYGmLK0gVMf<4+8_AdJ@f8fxz>Yb zcVAn_qSD}vgmZ9a-?>e_-RHWOHhpIGZ7=S>dbNAes{&mm;bct@Z$^Iw;yoYHWrgQ#Id3FD+_+S;ogIjw{~p( z(Wdt0XMGkfJyCzf#!I^%y~6E#<*BxtKXTXEfBxX;neLYM`lf?DXFp#uI_#tK>XOr2 zoyFa4onIRB(0duH?^+2XH5V1$8E02 zdtF!k!m0h^d;Yk;_i#t)%`$T14$hQwa22fCHs{QQ8Pgtna^-&^7+S#xG?x_;r$ zCV8J*&4hPuFeeYbhyW2F0z`la5CI}U1c(3;AOb{y2oM1xKm>>Y5g-CYfCvx)B0vO) z01+SpM1Tko0U|&IhyW2F0z`la5CI}U1c(3;AOb{y2oM1x5ETN`uAb!9@`wtzT8UfB z+?(ENg{P?cApcPzn~k{SKN~znRVDe43fXMLCI8vrDXJ>Te^kh3BQE*R22Xxf);fPl z_veRuTIQ3+r`GeQg=fDyY90Ti`}4y+E%Qm^Q|tND!n0o;wT^$%{rTaZmieUdsrCG6 z;n}Z_TE{=>{`_!H%Y4%K)O!A;dA7y(yK`@J^E_PW+(r4=O0`CZ2dKUH9Pqy|3P~| z+dsDZm*;=G`%{e{%^t+Pv1$I~-;O_9{4{hOd@i^C$o5-hUc@qnC508Hy z|2BI-+h3afe@73wg#)jLm0mybSkU|nbDPg;%dg>w^D6x zf31HFKP|uJPyW+={?Yg&|HapDJpb7qf11CBzviFz<6qlHSUqYnxwff02LkAG8N}{;%!*5yZW*k$>_Zvpm z`Oi9ocJ-5gJN&ZlP5!gapk4jQKkC}`AMJQQ!0W#qKT&%l->4(Mnoj4l@M*gye%{RtFzEMZMQO_SE z@pg=Sg{>pss3YH~$BRb(vW3kz#zVeQN4`AonM*gye%{RtF zzEMZMQO_SE@pg=Sg{>pss3YH~$BRb(vW3kz#zVeQN4`>Y5g-CYfC%IP0hh1j5g6WR z=L?BfFWBaT6~wF;q;njvfSC27bY1~5>yR#Ys_glp#_L5LrXg zsInCpKka&D-RY~--Y?dtcNDw=4Em#v z^~9}XJ(?ce?MSN@FYbOZpH?5*M|M~|gX=LL>iE5hVe6Q$QXTt2y|{bFLA#bO?0zwx zmS3}DKd7_+VgwK$4PWFdY+cK**|8r@*W%&-lZyS~_o$&gY=5j5^P`>pPjZ7WK)g_w z|3_DN^y61}KzrE!SfA7-`OzNKyRqSV)WfbH@xl7hj`^`Z^hZ1Pk9N$LbshU-|Ha2Y z;*)j0v3~52{1@|IeD@Q-rtyP(RjbF}S$P@r-oISWRj#OoR{76s|9G?rzvW6f?nTORFB0RYT`#w9 zStosql)go#y{fHfPnXgre{i0s0 zeM?`mzx{NXuT`1%{^h>6R{7QX%6tDBKC}}7B0vO)01+SpM1TlXhd_DXCSbGbm{*wb z_mO7WEbx~ zy~LI0cA}SSm$>3Dx|U!5cA_w!i6MHqcFAYzHU6SYe$gdv)Kc=LCBN*yY9;m~eFe#C zbCvQl`#|=V$e`TDRw_=lbFvTRc#s;*J`!wtLdg;HvZOBxPLE|GENl{{we%V$a=kOc&MpE+#vo^5zzz;Wu$@SbsuHe;LDlo|N) zo|0TNJiIS~^`7gv+lEKCm%@zRlBvvdiUw~qdLwVoDdd_^N_uekzDlk4o5LWoPOeLS zQq~zMG0bOKuU+qCU11!VGxrL{-<&UvETx;Z#%`qK^~)JFFaFYlpOpI+sj;wbKcB*R zxd)M&%gtLDqp*)^{0n2%+Gq0=R>tXi$NBGQ?>tmD^gX!JtLy2mH}5|9!CLY8KcxVH AWB>pF literal 204862 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 RhtD5ek2C}z0D(0K{0H4QSQ!8S From 40165394a950c2ce485e2508f15e52f678996ac8 Mon Sep 17 00:00:00 2001 From: John Breaux Date: Tue, 23 Nov 2021 00:05:55 -0600 Subject: [PATCH 090/107] Export: Use icon for export; Net: add comments --- godot_ship/export_presets.cfg | 2 +- godot_ship/script/network/Net.gd | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/godot_ship/export_presets.cfg b/godot_ship/export_presets.cfg index 5a38ab4..fafb8c4 100644 --- a/godot_ship/export_presets.cfg +++ b/godot_ship/export_presets.cfg @@ -31,7 +31,7 @@ codesign/timestamp_server_url="" codesign/digest_algorithm=1 codesign/description="" codesign/custom_options=PoolStringArray( ) -application/icon="" +application/icon="res://icon.ico" application/file_version="" application/product_version="" application/company_name="" diff --git a/godot_ship/script/network/Net.gd b/godot_ship/script/network/Net.gd index 7bd1de7..65b9be9 100644 --- a/godot_ship/script/network/Net.gd +++ b/godot_ship/script/network/Net.gd @@ -36,11 +36,14 @@ sync func receive(mail): # Sent it off to anything that expects mail emit_signal("incoming", mail) +# send: Called when sending a message +# id: Peer ID of the recipient +# mail: Variant of a json-encodable type (non-Object) to send func send(id, mail): # Make the recipient receive the mail rpc_id(id, "receive", to_json(mail)) -# start_server: Host the game +# start_host: Host the game # port: TCP port # max_players: Largest number of players allowed to connect at a time func start_host(port = DEFAULT_PORT, max_players = 2): @@ -53,13 +56,14 @@ func start_host(port = DEFAULT_PORT, max_players = 2): hosting = true return -# connect_server: Connect to a host +# connect_host: Connect to a host func connect_host(ip = LOCALHOST, port = DEFAULT_PORT): get_hostname() var peer = NetworkedMultiplayerENet.new() peer.create_client(ip, port) get_tree().network_peer = peer +# disconnect_host func disconnect_host(): # Set state to disconnected connected = false From 401f324264406e40c3f6b2b94d199613396c86ae Mon Sep 17 00:00:00 2001 From: tommy-l-ngo Date: Tue, 23 Nov 2021 00:09:30 -0600 Subject: [PATCH 091/107] Added Splash Screen --- ...e.png-6121c2cee560834f4965fe53dd93125b.md5 | 3 ++ ....png-6121c2cee560834f4965fe53dd93125b.stex | Bin 0 -> 20409 bytes .../assets/backgrounds/splash_image.png | Bin 0 -> 20376 bytes .../backgrounds/splash_image.png.import | 34 ++++++++++++++++++ godot_ship/project.godot | 1 + 5 files changed, 38 insertions(+) create mode 100644 godot_ship/.import/splash_image.png-6121c2cee560834f4965fe53dd93125b.md5 create mode 100644 godot_ship/.import/splash_image.png-6121c2cee560834f4965fe53dd93125b.stex create mode 100644 godot_ship/assets/backgrounds/splash_image.png create mode 100644 godot_ship/assets/backgrounds/splash_image.png.import diff --git a/godot_ship/.import/splash_image.png-6121c2cee560834f4965fe53dd93125b.md5 b/godot_ship/.import/splash_image.png-6121c2cee560834f4965fe53dd93125b.md5 new file mode 100644 index 0000000..f1d58b5 --- /dev/null +++ b/godot_ship/.import/splash_image.png-6121c2cee560834f4965fe53dd93125b.md5 @@ -0,0 +1,3 @@ +source_md5="715f44b661f067e777490e89deb8ffb5" +dest_md5="5d4b80b70985c5ebe2fbf625d95f6a1f" + diff --git a/godot_ship/.import/splash_image.png-6121c2cee560834f4965fe53dd93125b.stex b/godot_ship/.import/splash_image.png-6121c2cee560834f4965fe53dd93125b.stex new file mode 100644 index 0000000000000000000000000000000000000000..66678f0269918d552b98ae4e1a840b1e9ff98e1e GIT binary patch literal 20409 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 literal 0 HcmV?d00001 diff --git a/godot_ship/assets/backgrounds/splash_image.png b/godot_ship/assets/backgrounds/splash_image.png new file mode 100644 index 0000000000000000000000000000000000000000..7e65492801ef148a861aefbf836f611b64231469 GIT binary patch literal 20376 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 Date: Tue, 23 Nov 2021 00:11:49 -0600 Subject: [PATCH 092/107] Main: is_multiplayer no longer exists --- godot_ship/script/Main.gd | 1 - 1 file changed, 1 deletion(-) diff --git a/godot_ship/script/Main.gd b/godot_ship/script/Main.gd index 20c47ef..e906b58 100644 --- a/godot_ship/script/Main.gd +++ b/godot_ship/script/Main.gd @@ -65,7 +65,6 @@ func _on_scene_start(scene): return true "Multiplayer": instance = Game.instance() - instance.is_multiplayer = true add_child (instance) return true "Options": From 42c9e0c42b027a2a2bef279ef75706082603777a Mon Sep 17 00:00:00 2001 From: tommy-l-ngo Date: Tue, 23 Nov 2021 01:05:24 -0600 Subject: [PATCH 093/107] Updated Splash Screen --- ...e.png-6121c2cee560834f4965fe53dd93125b.md5 | 4 ++-- ....png-6121c2cee560834f4965fe53dd93125b.stex | Bin 20409 -> 4193 bytes .../assets/backgrounds/splash_image.png | Bin 20376 -> 4161 bytes 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/godot_ship/.import/splash_image.png-6121c2cee560834f4965fe53dd93125b.md5 b/godot_ship/.import/splash_image.png-6121c2cee560834f4965fe53dd93125b.md5 index f1d58b5..77a8264 100644 --- a/godot_ship/.import/splash_image.png-6121c2cee560834f4965fe53dd93125b.md5 +++ b/godot_ship/.import/splash_image.png-6121c2cee560834f4965fe53dd93125b.md5 @@ -1,3 +1,3 @@ -source_md5="715f44b661f067e777490e89deb8ffb5" -dest_md5="5d4b80b70985c5ebe2fbf625d95f6a1f" +source_md5="0c3b093adc89f8510e8a21974e8bd791" +dest_md5="7a852f2b077030872d047aaa67ad1ee9" diff --git a/godot_ship/.import/splash_image.png-6121c2cee560834f4965fe53dd93125b.stex b/godot_ship/.import/splash_image.png-6121c2cee560834f4965fe53dd93125b.stex index 66678f0269918d552b98ae4e1a840b1e9ff98e1e..9992875f8cb1dbffa6c597fcf885fbaa41be5d87 100644 GIT binary patch literal 4193 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 A)Bpeg literal 20409 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 diff --git a/godot_ship/assets/backgrounds/splash_image.png b/godot_ship/assets/backgrounds/splash_image.png index 7e65492801ef148a861aefbf836f611b64231469..0071f471ccf0519f05ce9a09c6f1b32eb6bf1b75 100644 GIT binary patch literal 4161 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 literal 20376 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 Date: Tue, 23 Nov 2021 13:49:21 -0600 Subject: [PATCH 094/107] Credit changes --- godot_ship/scenes/Credits.tscn | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/godot_ship/scenes/Credits.tscn b/godot_ship/scenes/Credits.tscn index cc16b06..f153cd1 100644 --- a/godot_ship/scenes/Credits.tscn +++ b/godot_ship/scenes/Credits.tscn @@ -59,10 +59,12 @@ __meta__ = { [node name="Developmental Team" type="Label" parent="."] margin_left = 64.0 -margin_top = 104.0 +margin_top = 99.0 margin_right = 576.0 -margin_bottom = 120.0 +margin_bottom = 115.0 custom_fonts/font = SubResource( 2 ) +custom_colors/font_color_shadow = Color( 0, 0, 0, 1 ) +custom_constants/shadow_offset_y = 4 text = "Developmental Team" align = 1 valign = 1 @@ -180,10 +182,12 @@ __meta__ = { [node name="Assets" type="Label" parent="."] margin_left = 64.0 -margin_top = 208.0 +margin_top = 203.0 margin_right = 576.0 -margin_bottom = 224.0 +margin_bottom = 219.0 custom_fonts/font = SubResource( 2 ) +custom_colors/font_color_shadow = Color( 0, 0, 0, 1 ) +custom_constants/shadow_offset_y = 4 text = "Assets" align = 1 valign = 1 From bc60249b69e925207352b7a04e27b1317ea2fb4a Mon Sep 17 00:00:00 2001 From: tommy-l-ngo Date: Tue, 23 Nov 2021 14:39:49 -0600 Subject: [PATCH 095/107] Updated Splash Screen --- ...e.png-6121c2cee560834f4965fe53dd93125b.md5 | 4 ++-- ....png-6121c2cee560834f4965fe53dd93125b.stex | Bin 4193 -> 41629 bytes ...e.png-f3ec9b087a00e67c0fd1d6f7f949a801.md5 | 3 +++ ....png-f3ec9b087a00e67c0fd1d6f7f949a801.stex | Bin 0 -> 4194 bytes .../assets/backgrounds/splash_image.png | Bin 4161 -> 41600 bytes 5 files changed, 5 insertions(+), 2 deletions(-) create mode 100644 godot_ship/.import/splash_image.png-f3ec9b087a00e67c0fd1d6f7f949a801.md5 create mode 100644 godot_ship/.import/splash_image.png-f3ec9b087a00e67c0fd1d6f7f949a801.stex diff --git a/godot_ship/.import/splash_image.png-6121c2cee560834f4965fe53dd93125b.md5 b/godot_ship/.import/splash_image.png-6121c2cee560834f4965fe53dd93125b.md5 index 77a8264..759d8fa 100644 --- a/godot_ship/.import/splash_image.png-6121c2cee560834f4965fe53dd93125b.md5 +++ b/godot_ship/.import/splash_image.png-6121c2cee560834f4965fe53dd93125b.md5 @@ -1,3 +1,3 @@ -source_md5="0c3b093adc89f8510e8a21974e8bd791" -dest_md5="7a852f2b077030872d047aaa67ad1ee9" +source_md5="be7b72e3a4eed8b123f8134577462840" +dest_md5="29c525694b5e1d0a1ec1bb2f691802b4" diff --git a/godot_ship/.import/splash_image.png-6121c2cee560834f4965fe53dd93125b.stex b/godot_ship/.import/splash_image.png-6121c2cee560834f4965fe53dd93125b.stex index 9992875f8cb1dbffa6c597fcf885fbaa41be5d87..ea1e1a1ad0f5239f01af84afb036129a0db2dc7c 100644 GIT binary patch literal 41629 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 literal 4193 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 A)Bpeg diff --git a/godot_ship/.import/splash_image.png-f3ec9b087a00e67c0fd1d6f7f949a801.md5 b/godot_ship/.import/splash_image.png-f3ec9b087a00e67c0fd1d6f7f949a801.md5 new file mode 100644 index 0000000..636eb23 --- /dev/null +++ b/godot_ship/.import/splash_image.png-f3ec9b087a00e67c0fd1d6f7f949a801.md5 @@ -0,0 +1,3 @@ +source_md5="a177b00b79bd7412a6b0c6aa07f5020b" +dest_md5="2bf8d94b2316e0d5b19647de6827b854" + diff --git a/godot_ship/.import/splash_image.png-f3ec9b087a00e67c0fd1d6f7f949a801.stex b/godot_ship/.import/splash_image.png-f3ec9b087a00e67c0fd1d6f7f949a801.stex new file mode 100644 index 0000000000000000000000000000000000000000..194760af7d0ce8d1a42e191ae470abbc0f3d82b0 GIT binary patch literal 4194 zcmeHKYg7~08a;ss0Z|aG4JahY!i$1RMUXeqT0v3>3Mzz$pu8h5BM1o)tXOLernLx2 z5$L6(u60*? zO{CTF8}F{6(tBZg=bayg*?4};-qy(-7?yEo{{g`1rGZvW0Gcd-2FTd}VBjYNv|>0M z1F~&2&;Wyk82~gDAb`PPXvYZizhC>S0hu^CyZ*jw>8V*xYtm}e2L=Y-sjcGkBq8Js zqUu!KQvOWhtR!f-LYnxbLZYLA{#doVC~93xNl$lEFRXaXo{HtrF39G*7ux6F?GlZO zxolQn&uCsB_nWi%*?*KUBV>yaeP*cd(_9&+C4%gTBG72*q})WAtZr~QxQ^-tzOUw| zaPS1t3Pa+kTtspx%!S&w&&ewc1)JUSO?{3<*!y5mq1pM`>jN+K5@|Fz`fRMImY?zz z&-*}j{9fvw%TQIi+@Wb=_TD+k+xUY5ftV@-D)%o%2vHE8v)aQUjuY z`Pwd}gETl*-exXHFBT?Fq3xq77O$2T$r1kV`+bK(**T*pzV|7WvmQ>cuaFEG^{Hrf zH5cE?HnS?Wcm!!=I=))^y4%p^50GxD`QSBACX9kImEYi?Ty#**#K#ng#P@T6xU{&usFqUNT}n-tRmTL=A?y?a zg*`G{d!CGCe_K6&PfTd^A6Cdex+5a1i&}b2GnYx<@}(xveE__wrFiP2R!ti%n1R+w zl1{^UGR^vSWL#y3LldHvpcK6+9u-Q<>8H!|VFsyXJj0ir7i)5EU};!x^yB9VMk>1C zAT5$lK6CVylNM_u2*1M5xJr9HPIg@zaU`v^lJMQ5^ix~jTz`i$tN%~~?dyG2dkwI} znP5QGxfK)@3SN>W{gw9a5T}s6<>}Sa1=4}4Hd=iXrP9CBtZX;5X53>n5gQeT@8R>Z z3=5R3&Ae2U<-8ftpzsR4oeDs68>+seZGsiMS=aL)Kx4#4y3Uy9#{Oa2?r@rJ+T-Qx zpeLYocj!I&7=%0ZreVfv!lJ z5oYr2w6!;5==QP8c~TbTp~aXZcb_ns#z(FGh!bA*`qG^piCe;hC-NKvhkNnZ@6D-O zp5+6?x~Ds?Cd;sG{yWww0@Q?QhfhTt@7+N&n?|wRUr05EQCZ=*k^f=+j1JN%uvKs9 zjooQ1n~?dbIrUMoJxNaNk+S89Id8SC&A~x)?3ZSO8d++Bv)Z)A@KL1#|AG|Xev^1n zQV-YrkLVFeWc72L2-0nP+y71ee&ntaKZu0zI=ZBWc)x1;@Lf4F4yB4z(N#&}gd?ar z#qny~{VbjAB+RHgrG0E}e6cCERW`au-EF844wLjCOv+BEm`b-hG=+SS_>Yu%f6-N)VQ`=3>@0!!cnuD-G=No@|_)X z^DWbZ85GXH$=I1nJGDa)ZV{wB-gl`H4w7Z;XGjjH-+iSx^_bU3E$%e=idjKM5jWakSrgX~;!sQdELFOQqs z3vdCYniJydYXUm-(C`Yi+eiuj$31MOInBKur-81wDzNo4tpNcZP$3Sf_P(r8w+r@M zL>6KJ9AO{Vx#pE2Fnh@RP+c@sUKt

luO?=(G*9>p+F=f*GVuhT1r~*C)-wt}ylY zQSn)8UU)(>vpwDEgBJn6S{()W3C7^iX2hvPp;hK==+v1CX2`Ugbv&WV(Yo2h=Knai z5K{9i%Jl#o=>7|?=-({n0!h#(!(_7Bl0VbT@R$zCn#i|MBfn#W4&Q89KT+JsoQ6pt zj__!sJo&L1!i9g0NXANFUXaDNU7Na%a#HAH*k|!|+N&^5hPTz!iS`6C- z(ZoK1a`}O2JdE0{hu->}WATW8AbO@-z>gfUi1)sEVn{_DDVL0@8eqdZ+4UP~Gy2s> zx28QYjqYM?@=KVDko9K`BHnqlYh_acHMC+Tx7I^2qhytoEZ=T$UID!AtFdi>>+MV4 zeK$k4+(=(j$Y!N*x|`)3j=7au>9Cr??4BIEGCP<-Swq*YPxOxg*L&Kl7Q+ZrcI$?M zH@&$0qi{kjLHxYRXz$a&06RyQ26rOK8yEp<~1&4 zh@5b>u+DKaga3LU?ENHzp!_kfJ!6dc#JF2`qfl|yXZWvFo|$XpM?emSzIKDv+2GN1 zDw{gX>35{p!NM|rwJ1K2X6d@a0Q^si@xM*?Du-aO^iUF|?lxOMJFaq1WPeX7P*n|< z(lcA6eTDI{#M*udzW;{AVYt6eEO=N%$gF}8b<-i#VH@l#hf#OgXx6(o87;#-3Orq>#9v3VirMofQJlHO;1kIwp+N*W~

0~lW)?-V&E8u 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 Wl>Si$<{ni50000s=RD7Ip3CR^dS9OB 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 From 81fd52c76ddf89784dce871a5bf3dd295241365a Mon Sep 17 00:00:00 2001 From: tommy-l-ngo Date: Tue, 23 Nov 2021 16:04:07 -0600 Subject: [PATCH 096/107] Another Splash Screen Update :) --- ...e.png-6121c2cee560834f4965fe53dd93125b.md5 | 4 ++-- ....png-6121c2cee560834f4965fe53dd93125b.stex | Bin 41629 -> 7648 bytes .../assets/backgrounds/splash_image.png | Bin 41600 -> 7616 bytes 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/godot_ship/.import/splash_image.png-6121c2cee560834f4965fe53dd93125b.md5 b/godot_ship/.import/splash_image.png-6121c2cee560834f4965fe53dd93125b.md5 index 759d8fa..b6747b4 100644 --- a/godot_ship/.import/splash_image.png-6121c2cee560834f4965fe53dd93125b.md5 +++ b/godot_ship/.import/splash_image.png-6121c2cee560834f4965fe53dd93125b.md5 @@ -1,3 +1,3 @@ -source_md5="be7b72e3a4eed8b123f8134577462840" -dest_md5="29c525694b5e1d0a1ec1bb2f691802b4" +source_md5="005f64fb1ff8de71218d3545cc20441c" +dest_md5="dcee8e0391b5bffbc76299f1b93a1100" diff --git a/godot_ship/.import/splash_image.png-6121c2cee560834f4965fe53dd93125b.stex b/godot_ship/.import/splash_image.png-6121c2cee560834f4965fe53dd93125b.stex index ea1e1a1ad0f5239f01af84afb036129a0db2dc7c..a57c1c53cbc2e633148006b549f20ed6f7873638 100644 GIT binary patch literal 7648 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 diff --git a/godot_ship/assets/backgrounds/splash_image.png b/godot_ship/assets/backgrounds/splash_image.png index 4e2709037c542974b044cdb21b346bde80607ef6..613424d38647097c5a5dad34ea1883f8f1586063 100644 GIT binary patch literal 7616 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 literal 41600 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 Wl>Si$<{ni50000 Date: Tue, 23 Nov 2021 22:44:53 -0600 Subject: [PATCH 097/107] Multiplayer: Add Lobby --- ...k.png-664d38fd54271fbacb81205517c40701.md5 | 3 + ....png-664d38fd54271fbacb81205517c40701.stex | Bin 0 -> 184 bytes ...t.png-25b7c30a8a8b20ed722b3b35c8a79d7b.md5 | 3 + ....png-25b7c30a8a8b20ed722b3b35c8a79d7b.stex | Bin 0 -> 184 bytes .../assets/backgrounds/PanelBG_Dark.png | Bin 0 -> 152 bytes .../backgrounds/PanelBG_Dark.png.import | 34 ++++ .../assets/backgrounds/PanelBG_Dark.tres | 12 ++ .../assets/backgrounds/PanelBG_Light.png | Bin 0 -> 152 bytes .../backgrounds/PanelBG_Light.png.import | 34 ++++ .../assets/backgrounds/PanelBG_Light.tres | 11 ++ godot_ship/dark_theme.tres | 18 +- godot_ship/light_theme.tres | 15 +- godot_ship/scenes/Lobby.tscn | 171 ++++++++++++++++++ godot_ship/scenes/Title Screen.tscn | 1 + godot_ship/script/Main.gd | 3 +- godot_ship/script/game/Gameplay/Game.gd | 33 +--- godot_ship/script/network/Lobby.gd | 92 ++++++++++ godot_ship/script/network/Net.gd | 95 ++++++---- 18 files changed, 453 insertions(+), 72 deletions(-) create mode 100644 godot_ship/.import/PanelBG_Dark.png-664d38fd54271fbacb81205517c40701.md5 create mode 100644 godot_ship/.import/PanelBG_Dark.png-664d38fd54271fbacb81205517c40701.stex create mode 100644 godot_ship/.import/PanelBG_Light.png-25b7c30a8a8b20ed722b3b35c8a79d7b.md5 create mode 100644 godot_ship/.import/PanelBG_Light.png-25b7c30a8a8b20ed722b3b35c8a79d7b.stex create mode 100644 godot_ship/assets/backgrounds/PanelBG_Dark.png create mode 100644 godot_ship/assets/backgrounds/PanelBG_Dark.png.import create mode 100644 godot_ship/assets/backgrounds/PanelBG_Dark.tres create mode 100644 godot_ship/assets/backgrounds/PanelBG_Light.png create mode 100644 godot_ship/assets/backgrounds/PanelBG_Light.png.import create mode 100644 godot_ship/assets/backgrounds/PanelBG_Light.tres create mode 100644 godot_ship/scenes/Lobby.tscn create mode 100644 godot_ship/script/network/Lobby.gd diff --git a/godot_ship/.import/PanelBG_Dark.png-664d38fd54271fbacb81205517c40701.md5 b/godot_ship/.import/PanelBG_Dark.png-664d38fd54271fbacb81205517c40701.md5 new file mode 100644 index 0000000..18e3cff --- /dev/null +++ b/godot_ship/.import/PanelBG_Dark.png-664d38fd54271fbacb81205517c40701.md5 @@ -0,0 +1,3 @@ +source_md5="136899ff4c68986c4cc62e296277b8ab" +dest_md5="3d16ccd1874686296ee01de7097a3a6f" + diff --git a/godot_ship/.import/PanelBG_Dark.png-664d38fd54271fbacb81205517c40701.stex b/godot_ship/.import/PanelBG_Dark.png-664d38fd54271fbacb81205517c40701.stex new file mode 100644 index 0000000000000000000000000000000000000000..4362eb9fe48093f5f8035e589af19fc09aea0350 GIT binary patch literal 184 zcmZ>F2@X+UU|;}Y2oPXr1Ty9Tae$w@LMM>m<&xq8a(O*HT!MhK0tj=k0mF2@X+UU|;}Y2oPXr1Ty9Tae$w@LMM>m<&xq8a(O*HT!MhK0tj=k0m=_&$08klfJ5Sz*%^7;rqJFJy-OO&o;wEeGsv(fQ$133p<6=IE(gQ1) q;X({c(_8K&FBF&fARtk|&cMK~z^?ebVzw>NbOujXKbLh*2~7aKC@zcu literal 0 HcmV?d00001 diff --git a/godot_ship/assets/backgrounds/PanelBG_Dark.png.import b/godot_ship/assets/backgrounds/PanelBG_Dark.png.import new file mode 100644 index 0000000..0921b1b --- /dev/null +++ b/godot_ship/assets/backgrounds/PanelBG_Dark.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/PanelBG_Dark.png-664d38fd54271fbacb81205517c40701.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/backgrounds/PanelBG_Dark.png" +dest_files=[ "res://.import/PanelBG_Dark.png-664d38fd54271fbacb81205517c40701.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=false +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 diff --git a/godot_ship/assets/backgrounds/PanelBG_Dark.tres b/godot_ship/assets/backgrounds/PanelBG_Dark.tres new file mode 100644 index 0000000..1e6ac82 --- /dev/null +++ b/godot_ship/assets/backgrounds/PanelBG_Dark.tres @@ -0,0 +1,12 @@ +[gd_resource type="StyleBoxTexture" load_steps=2 format=2] + +[ext_resource path="res://assets/backgrounds/PanelBG_Dark.png" type="Texture" id=1] + +[resource] +texture = ExtResource( 1 ) +region_rect = Rect2( 0, 0, 32, 32 ) +margin_left = 6.0 +margin_right = 6.0 +margin_top = 6.0 +margin_bottom = 6.0 +axis_stretch_horizontal = 1 diff --git a/godot_ship/assets/backgrounds/PanelBG_Light.png b/godot_ship/assets/backgrounds/PanelBG_Light.png new file mode 100644 index 0000000000000000000000000000000000000000..318b484bb398c50bade6fc27a37cb74cfe0976a1 GIT binary patch literal 152 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}L7py-ArY;~ zJ@&t!*dJzKTGqIwCcvVBb>`&5>W<>x%WJ9_)A=hndaM$zFfQhkC_S)(*-h5qRYM>< qT!_KzJjc%CPWlE96b&BmF)-|%z;SR(=^h@S=?tE(elF{r5}E*m$}aW* literal 0 HcmV?d00001 diff --git a/godot_ship/assets/backgrounds/PanelBG_Light.png.import b/godot_ship/assets/backgrounds/PanelBG_Light.png.import new file mode 100644 index 0000000..35d34d1 --- /dev/null +++ b/godot_ship/assets/backgrounds/PanelBG_Light.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/PanelBG_Light.png-25b7c30a8a8b20ed722b3b35c8a79d7b.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/backgrounds/PanelBG_Light.png" +dest_files=[ "res://.import/PanelBG_Light.png-25b7c30a8a8b20ed722b3b35c8a79d7b.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=false +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 diff --git a/godot_ship/assets/backgrounds/PanelBG_Light.tres b/godot_ship/assets/backgrounds/PanelBG_Light.tres new file mode 100644 index 0000000..89f2eb8 --- /dev/null +++ b/godot_ship/assets/backgrounds/PanelBG_Light.tres @@ -0,0 +1,11 @@ +[gd_resource type="StyleBoxTexture" load_steps=2 format=2] + +[ext_resource path="res://assets/backgrounds/PanelBG_Light.png" type="Texture" id=1] + +[resource] +texture = ExtResource( 1 ) +region_rect = Rect2( 0, 0, 32, 32 ) +margin_left = 6.0 +margin_right = 6.0 +margin_top = 6.0 +margin_bottom = 7.0 diff --git a/godot_ship/dark_theme.tres b/godot_ship/dark_theme.tres index 24098cd..3ed6bd8 100644 --- a/godot_ship/dark_theme.tres +++ b/godot_ship/dark_theme.tres @@ -1,6 +1,7 @@ [gd_resource type="Theme" load_steps=6 format=2] [ext_resource path="res://assets/font/Minecraft.ttf" type="DynamicFontData" id=1] +[ext_resource path="res://assets/backgrounds/PanelBG_Dark.tres" type="StyleBox" id=2] [sub_resource type="StyleBoxFlat" id=1] bg_color = Color( 0.239216, 0.211765, 0.317647, 1 ) @@ -19,10 +20,7 @@ corner_radius_bottom_left = 3 shadow_size = 3 [sub_resource type="DynamicFont" id=3] -outline_color = Color( 0, 0, 0, 1 ) -font_data = ExtResource( 1 ) - -[sub_resource type="DynamicFont" id=4] +outline_size = 1 outline_color = Color( 0, 0, 0, 1 ) extra_spacing_top = 5 extra_spacing_bottom = 3 @@ -30,9 +28,9 @@ extra_spacing_char = 1 font_data = ExtResource( 1 ) [resource] -default_font = SubResource( 4 ) +default_font = SubResource( 3 ) Button/colors/font_color = Color( 1, 1, 1, 1 ) -Button/colors/font_color_disabled = Color( 0.9, 0.9, 0.9, 0.2 ) +Button/colors/font_color_disabled = Color( 0.901961, 0.901961, 0.901961, 0.2 ) Button/colors/font_color_hover = Color( 1, 1, 1, 1 ) Button/colors/font_color_pressed = Color( 1, 1, 1, 1 ) Button/constants/hseparation = 2 @@ -45,14 +43,16 @@ Button/styles/pressed = null Dialogs/constants/button_margin = 100 Dialogs/constants/margin = 8 Label/colors/font_color = Color( 1, 1, 1, 1 ) -Label/colors/font_color_shadow = Color( 0, 0, 0, 0 ) +Label/colors/font_color_shadow = Color( 0, 0, 0, 0.25098 ) Label/colors/font_outline_modulate = Color( 0, 0, 0, 1 ) Label/constants/line_spacing = 3 Label/constants/shadow_as_outline = 0 Label/constants/shadow_offset_x = 0 -Label/constants/shadow_offset_y = 0 -Label/fonts/font = SubResource( 3 ) +Label/constants/shadow_offset_y = 2 +Label/fonts/font = null Label/styles/normal = null +Panel/styles/panel = ExtResource( 2 ) +PanelContainer/styles/panel = ExtResource( 2 ) WindowDialog/colors/title_color = Color( 0.152941, 0.152941, 0.152941, 1 ) WindowDialog/constants/close_h_ofs = 18 WindowDialog/constants/close_v_ofs = 18 diff --git a/godot_ship/light_theme.tres b/godot_ship/light_theme.tres index dfa1f4b..f7605a8 100644 --- a/godot_ship/light_theme.tres +++ b/godot_ship/light_theme.tres @@ -1,6 +1,7 @@ [gd_resource type="Theme" load_steps=6 format=2] [ext_resource path="res://assets/font/Minecraft.ttf" type="DynamicFontData" id=1] +[ext_resource path="res://assets/backgrounds/PanelBG_Light.tres" type="StyleBox" id=2] [sub_resource type="StyleBoxFlat" id=1] bg_color = Color( 1, 1, 1, 1 ) @@ -18,12 +19,8 @@ corner_radius_bottom_right = 3 corner_radius_bottom_left = 3 shadow_size = 3 -[sub_resource type="DynamicFont" id=3] -outline_color = Color( 0, 0, 0, 1 ) -font_data = ExtResource( 1 ) - [sub_resource type="DynamicFont" id=4] -outline_color = Color( 0, 0, 0, 1 ) +outline_size = 1 extra_spacing_top = 5 extra_spacing_bottom = 3 extra_spacing_char = 1 @@ -45,14 +42,16 @@ Button/styles/pressed = null Dialogs/constants/button_margin = 100 Dialogs/constants/margin = 8 Label/colors/font_color = Color( 1, 1, 1, 1 ) -Label/colors/font_color_shadow = Color( 0, 0, 0, 0 ) +Label/colors/font_color_shadow = Color( 0, 0, 0, 1 ) Label/colors/font_outline_modulate = Color( 0, 0, 0, 1 ) Label/constants/line_spacing = 3 Label/constants/shadow_as_outline = 0 Label/constants/shadow_offset_x = 0 -Label/constants/shadow_offset_y = 0 -Label/fonts/font = SubResource( 3 ) +Label/constants/shadow_offset_y = 2 +Label/fonts/font = null Label/styles/normal = null +Panel/styles/panel = ExtResource( 2 ) +PanelContainer/styles/panel = ExtResource( 2 ) WindowDialog/colors/title_color = Color( 0.152941, 0.152941, 0.152941, 1 ) WindowDialog/constants/close_h_ofs = 18 WindowDialog/constants/close_v_ofs = 18 diff --git a/godot_ship/scenes/Lobby.tscn b/godot_ship/scenes/Lobby.tscn new file mode 100644 index 0000000..22e3714 --- /dev/null +++ b/godot_ship/scenes/Lobby.tscn @@ -0,0 +1,171 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://script/network/Lobby.gd" type="Script" id=1] + +[node name="Lobby" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +mouse_filter = 2 +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Player List Container" type="PanelContainer" parent="."] +anchor_left = 0.6 +anchor_top = 0.2 +anchor_right = 0.9 +anchor_bottom = 0.8 +size_flags_vertical = 4 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Align Vertically" type="VBoxContainer" parent="Player List Container"] +margin_left = 7.0 +margin_top = 7.0 +margin_right = 185.0 +margin_bottom = 209.0 +grow_horizontal = 2 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Players" type="Label" parent="Player List Container/Align Vertically"] +margin_right = 178.0 +margin_bottom = 14.0 +text = "Players" +align = 1 + +[node name="Player List" type="Label" parent="Player List Container/Align Vertically"] +margin_top = 18.0 +margin_right = 178.0 +margin_bottom = 32.0 +align = 1 + +[node name="Lobby Options" type="VBoxContainer" parent="."] +anchor_left = 0.2 +anchor_top = 0.2 +anchor_right = 0.2 +anchor_bottom = 0.2 +margin_right = 123.0 +margin_bottom = 84.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Lobby Text" type="Label" parent="Lobby Options"] +margin_right = 123.0 +margin_bottom = 14.0 +text = "Multiplayer Lobby" +align = 1 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="IP Address" type="Label" parent="Lobby Options"] +margin_top = 18.0 +margin_right = 123.0 +margin_bottom = 32.0 +align = 1 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Host or Connect" type="VBoxContainer" parent="Lobby Options"] +margin_top = 36.0 +margin_right = 123.0 +margin_bottom = 80.0 + +[node name="Host Button" type="Button" parent="Lobby Options/Host or Connect"] +margin_right = 123.0 +margin_bottom = 20.0 +text = "Host Game" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Connect Button" type="Button" parent="Lobby Options/Host or Connect"] +margin_top = 24.0 +margin_right = 123.0 +margin_bottom = 44.0 +text = "Connect to Game" + +[node name="Connected Options" type="VBoxContainer" parent="Lobby Options"] +visible = false +margin_top = 84.0 +margin_right = 123.0 +margin_bottom = 104.0 + +[node name="Disconnect Button" type="Button" parent="Lobby Options/Connected Options"] +margin_right = 123.0 +margin_bottom = 20.0 +text = "Disconnect" + +[node name="Change Name Button" type="Button" parent="Lobby Options"] +margin_top = 84.0 +margin_right = 123.0 +margin_bottom = 104.0 +text = "Change Name" + +[node name="Exit Lobby" type="Button" parent="Lobby Options"] +margin_top = 108.0 +margin_right = 123.0 +margin_bottom = 128.0 +text = "Exit Lobby" + +[node name="Change Name" type="AcceptDialog" parent="."] +margin_left = 402.272 +margin_top = 809.953 +margin_right = 642.272 +margin_bottom = 883.953 +rect_min_size = Vector2( 240, 74 ) +window_title = "Change Name" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Name Entry" type="TextEdit" parent="Change Name"] +anchor_left = 0.5 +anchor_right = 0.5 +margin_left = -112.0 +margin_top = 8.0 +margin_right = 112.0 +margin_bottom = 38.0 +grow_horizontal = 2 +text = "127.0.0.1" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Connect to Game" type="AcceptDialog" parent="."] +margin_left = 201.136 +margin_top = 404.977 +margin_right = 441.136 +margin_bottom = 478.977 +rect_min_size = Vector2( 240, 74 ) +window_title = "Connect to Game" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="IP and Port Entry" type="TextEdit" parent="Connect to Game"] +anchor_left = 0.5 +anchor_right = 0.5 +margin_left = -112.0 +margin_top = 8.0 +margin_right = 112.0 +margin_bottom = 38.0 +grow_horizontal = 2 +text = "127.0.0.1" +__meta__ = { +"_edit_use_anchors_": false +} + +[connection signal="pressed" from="Lobby Options/Host or Connect/Host Button" to="." method="_on_Host_Button_pressed"] +[connection signal="pressed" from="Lobby Options/Host or Connect/Connect Button" to="." method="_on_Connect_Button_pressed"] +[connection signal="pressed" from="Lobby Options/Connected Options/Disconnect Button" to="." method="_on_Disconnect_Button_pressed"] +[connection signal="pressed" from="Lobby Options/Change Name Button" to="." method="_on_Change_Name_Button_pressed"] +[connection signal="pressed" from="Lobby Options/Exit Lobby" to="." method="_on_Exit_Lobby_pressed"] +[connection signal="confirmed" from="Change Name" to="." method="_on_Change_Name_confirmed"] +[connection signal="confirmed" from="Connect to Game" to="." method="_on_Connect_to_Game_confirmed"] diff --git a/godot_ship/scenes/Title Screen.tscn b/godot_ship/scenes/Title Screen.tscn index 8f04e9f..0b4f4dc 100644 --- a/godot_ship/scenes/Title Screen.tscn +++ b/godot_ship/scenes/Title Screen.tscn @@ -74,6 +74,7 @@ margin_right = 157.0 margin_bottom = -15.0 size_flags_stretch_ratio = 0.0 custom_fonts/font = SubResource( 1 ) +custom_colors/font_color = Color( 1, 1, 1, 1 ) custom_colors/font_outline_modulate = Color( 0, 0, 0, 1 ) custom_colors/font_color_shadow = Color( 0, 0, 0, 1 ) custom_constants/shadow_offset_x = 0 diff --git a/godot_ship/script/Main.gd b/godot_ship/script/Main.gd index e906b58..34f2dd8 100644 --- a/godot_ship/script/Main.gd +++ b/godot_ship/script/Main.gd @@ -3,6 +3,7 @@ extends Control # Scenes onready var Title_Screen = preload("res://scenes/Title Screen.tscn") onready var Game = preload("res://scenes/Game/Game.tscn" ) +onready var Lobby = preload("res://scenes/Lobby.tscn" ) onready var Options = preload("res://scenes/Options.tscn" ) onready var Credits = preload("res://scenes/Credits.tscn" ) onready var Debug_Menu = preload("res://scenes/Debug Menu.tscn" ) @@ -64,7 +65,7 @@ func _on_scene_start(scene): add_child (instance) return true "Multiplayer": - instance = Game.instance() + instance = Lobby.instance() add_child (instance) return true "Options": diff --git a/godot_ship/script/game/Gameplay/Game.gd b/godot_ship/script/game/Gameplay/Game.gd index 41ff096..5fb28f3 100644 --- a/godot_ship/script/game/Gameplay/Game.gd +++ b/godot_ship/script/game/Gameplay/Game.gd @@ -29,22 +29,15 @@ func _ready(): get_node("ConfirmationDialog").get_cancel().text = "No" get_node("ConfirmationDialog").get_ok().rect_min_size.x = 100 get_node("ConfirmationDialog").get_cancel().rect_min_size.x = 100 - if multiplayer: # TODO: Spawn a lobby where people can either connect to a peer or create a server pass - game_setup() # Function used to keep track of which players are ready +# TODO: Change this to keep track of ready states only func player_ready(): - var who = get_tree().get_rpc_sender_id() - if get_tree().is_network_server() and who in Net.peer_info and not who in players_ready: - print ("ASSERT SUCCESS") - players_ready.append(who) - - if players_ready.size() == Net.peer_info.size(): - rpc("game_start") + pass # Member functions: # game_start: starts the game @@ -54,45 +47,39 @@ sync func game_setup(): # TODO: Create a fake peer who we can automate, for single-player mode Net.start_host() network_id = Net.get_network_id() - # Create players for every player in Net.peer_info - for k in Net.peer_info.keys(): - # Create a new player - var player = Player.instance() - # Give the player a recognizable name, like "1", instead of "@@97" - player.name = str(k) - # The player controls themselves - player.set_network_master(k) - # Add the player to the list of players - players.append(player) - # Add the player to the scene tree - add_child(player) pass +# game_start: func game_start(): # Make sure we're the server pass +# _on_player_ready: Player Ready signal handler func _on_player_ready(): print ("_on_player_ready") - rpc_id(1, "player_ready") + Net.send(1, ["player_ready", Net.Mail.REPLY]) # victory_screen: display the victory screen func victory_screen(): # TODO: Create the victory screen, fill it with knowledge pass -# display_turn(): display which turn it is on the screen +# display_turn: display which turn it is on the screen func display_turn(): # TODO: Update the turn display, if there is one? pass +# _on_Forfeit_pressed: Handle forfeit button press func _on_Forfeit_pressed(): AudioBus.emit_signal("button_clicked") get_node("ConfirmationDialog").popup() +# end: end the Game func end(): queue_free() +# _on_Button_button_down: Handle win button press +# TODO: This isn't a thing any more func _on_Button_button_down(): AudioBus.emit_signal("button_clicked") var victory = Victory.instance() diff --git a/godot_ship/script/network/Lobby.gd b/godot_ship/script/network/Lobby.gd new file mode 100644 index 0000000..d73d8ca --- /dev/null +++ b/godot_ship/script/network/Lobby.gd @@ -0,0 +1,92 @@ +extends Control +# Ignore discarded return values +# warning-ignore:return_value_discarded +onready var text = find_node("Player List") +onready var ip = find_node("IP Address") + +# TODO: Write a function to update Player List with the list of attached players + +func _on_peers_updated(): + var connected_peers = "" + for peer in Net.peer_info: + connected_peers += ("%s\n" % Net.peer_info[peer]["name"]) + pass + text.text = connected_peers.rsplit("\n", true, 1)[0].c_unescape() + pass + +func set_IP_Address_text(show): + # Print the IP address and port + if show: + ip.text = "IP: %s\nPort: %s" % [Net.get_ip(), Net.DEFAULT_PORT] + else: + ip.text = "" + +func _ready(): + Net.connect("peers_updated", self, "_on_peers_updated") + _on_peers_updated() + pass + +func show_Connected_Options(show): + # Hide the host and connect buttons + get_node("Lobby Options/Host or Connect").visible = !show + # Show the host options + get_node("Lobby Options/Connected Options").visible = show + +# Buttons +# Host Button: Host a game +# Hides the connect button +func _on_Host_Button_pressed(): + # Show "Connected Options" + show_Connected_Options(true) + # Show the host IP address + set_IP_Address_text(true) + # Begin hosting + Net.start_host() + +# Disconnect +# Disconnect from (or stop hosting) a game +# Shows the host/connect buttons +func _on_Disconnect_Button_pressed(): + # Hide "Connected Options" + show_Connected_Options(false) + # Show the host IP address + set_IP_Address_text(false) + # Disconnect + Net.disconnect_host() + +func _on_Change_Name_Button_pressed(): + # Show the Change Name dialogue + get_node("Change Name").popup_centered() + pass + +func _on_Connect_Button_pressed(): + # Show the Connect to Game dialogue + get_node("Connect to Game").popup_centered() + pass + +func _on_Connect_to_Game_confirmed(): + # Get the IP and port specified by the player + var ipbox = find_node("IP and Port Entry") + # Split it into IP and Port segments + var ip_port = ipbox.text.split(":") + # If text exists and contains valid IP address + if ip_port.size() > 0 and ip_port[0].is_valid_ip_address(): + # Connect to host + Net.callv("connect_host", ip_port) + # Show "Connected Options" + show_Connected_Options(true) + +func _on_Change_Name_confirmed(): + # Get the new name + var name = find_node("Name Entry").text.split("\n")[0] + # Set it as the name + Net.change_name(name) + + + +func _on_Exit_Lobby_pressed(): + # Disconnect + if Net.connected: + Net.disconnect_host() + # Close Lobby menu + queue_free() diff --git a/godot_ship/script/network/Net.gd b/godot_ship/script/network/Net.gd index 65b9be9..22409e8 100644 --- a/godot_ship/script/network/Net.gd +++ b/godot_ship/script/network/Net.gd @@ -1,33 +1,39 @@ extends Node +# Constants +# DEFAULT_PORT: The port GodotShip will listen on/connect to by default const DEFAULT_PORT = 35879 +# LOCALHOST: loopback address const LOCALHOST = "127.0.0.1" +# Enums, used for mail types +# Mail types: +# 1: REQUEST: Message is a request for information +# 0: REPLY: Message is a reply +enum {REPLY, REQUEST} + +# Signals +# incoming(mail): Sent when there's an incoming message signal incoming +# peers_updated(): Sent when the peer list is updated +signal peers_updated +# -# Let's pretend this is actually passed from send to receive -class Mail: - # Sender address - var from:int - var message - var type:int - enum {FROM, MESSAGE, TYPE} - enum {REPLY, REQUEST} - -# Store peer info in a dictionary, by player ID -var peer_info = {} -# Store this player's hostname -var local_info = {"hostname": ""} - -var connected = false -var hosting = false - -# FIFO queue of Mails +# Variables +# inbox: Array: Message history var inbox = [] +# connected: Boolean: True when in the Connected state +var connected = false +# hosting: Boolean: True when in the Hosting state +var hosting = false +# peer_info: Dictionary: Store peer info in a dictionary, by player ID +var peer_info = {} +# local_info: Dictionary: Store this player's info +var local_info = {"name": ""} # Network -- handles server and client setup, and facilitates communication between the two -# receive: Called when an incoming message is received -# item: The message received from the sender +# receive: Receive a message (called by sender's `send` function) +# item: The message received from the sender (implicitly JSON-decoded by JSONRPC) sync func receive(mail): # Get the sender's ID and force letter to be properly addressed mail[0] = get_tree().get_rpc_sender_id() @@ -36,7 +42,7 @@ sync func receive(mail): # Sent it off to anything that expects mail emit_signal("incoming", mail) -# send: Called when sending a message +# send: Send a message # id: Peer ID of the recipient # mail: Variant of a json-encodable type (non-Object) to send func send(id, mail): @@ -49,12 +55,17 @@ func send(id, mail): func start_host(port = DEFAULT_PORT, max_players = 2): get_hostname() peer_info[1] = local_info + # Notify that peer list has updated + emit_signal("peers_updated") + # Create a new NetworkedMultiplayerENet (handles multiplayer communication through ENet) var peer = NetworkedMultiplayerENet.new() + # Create a server peer.create_server(port, max_players) + # Add the server to the scene tree get_tree().network_peer = peer + # Update state connected = true hosting = true - return # connect_host: Connect to a host func connect_host(ip = LOCALHOST, port = DEFAULT_PORT): @@ -65,6 +76,8 @@ func connect_host(ip = LOCALHOST, port = DEFAULT_PORT): # disconnect_host func disconnect_host(): + # Send intent to disconnect + rpc("unregister_peer", get_network_id()) # Set state to disconnected connected = false hosting = false @@ -75,19 +88,33 @@ func disconnect_host(): get_tree().network_peer = null # Clear peer info peer_info = {} + # Notify that peer list has updated + emit_signal("peers_updated") +# change_name: Change the local name, and re-register with all peers (including self) +func change_name(name): + # Change name locally + local_info["name"] = name + # Send updated info info to all peers + rpc("register_peer", local_info) + pass + +# get_hostname: Asks the host machine to provide its hostname, +# and if the peer name isn't set, set it to the hostname func get_hostname(): - if local_info["hostname"] == "": - var hostname = [] - var _ret = OS.execute("hostname", [], true, hostname) - local_info["hostname"] = hostname[0].split("\n")[0] - return local_info["hostname"] + var hostname = [] + # Execute the `hostname` command + var _ret = OS.execute("hostname", [], true, hostname) + # If there's no name set, set it to the hostname + if local_info["name"] == "": + local_info["name"] = hostname[0].split("\n")[0] + return hostname[0].split("\n")[0] func get_network_id(): return get_tree().get_network_unique_id() func get_ip(): - print(IP.resolve_hostname(get_hostname(), IP.TYPE_IPV4)) + return IP.resolve_hostname(get_hostname(), IP.TYPE_IPV4) pass func _ready(): @@ -100,11 +127,13 @@ func _ready(): func _peer_connected(id): + # Send peer info to remote peer rpc_id(id, "register_peer", local_info) pass func _peer_disconnected(id): - peer_info.erase(id) + # Unregister the peer locally + unregister_peer(id) pass @@ -123,7 +152,11 @@ func _connection_fail(): # Ensure Net state is clear disconnect_host() -remote func register_peer(info): +sync func register_peer(info): # Save player information under the sender id's peer info peer_info[get_tree().get_rpc_sender_id()] = info - pass + emit_signal("peers_updated") + +sync func unregister_peer(id): + peer_info.erase(id) + emit_signal("peers_updated") From ceb8df329a186ce9c77bb80306e329b89be13929 Mon Sep 17 00:00:00 2001 From: hpham474 Date: Tue, 23 Nov 2021 22:56:12 -0600 Subject: [PATCH 098/107] Added hitmissatlas --- godot_ship/assets/game/HitMissAtlas.png | Bin 0 -> 1349 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 godot_ship/assets/game/HitMissAtlas.png diff --git a/godot_ship/assets/game/HitMissAtlas.png b/godot_ship/assets/game/HitMissAtlas.png new file mode 100644 index 0000000000000000000000000000000000000000..c81acadb7b025f066ba12d74f552543de9f4b635 GIT binary patch literal 1349 zcmV-L1-kl)P)EX>4Tx04R}tkv&MmKpe$i(@I4v4t6NwkfAzR5G&#+RV;#q(pG5I!Q|2}XktiG zTpR`0f`cE6RRe3JS*_Js`=0!Tp`x~&$kv=JD>{?%w`A)9&vF$D4A=XjYZI00006VoOIv0RI600RN!9r;`8x010qNS#tmY zE+YT{E+YYWr9XB6000McNlirueSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00SLKL_t(&-tAdUYTG~*{>Id%ks%NWB-wxvNx)zT*Z~{zy0Axj8qJJmEIHK04??7oo|x~O_w&sd zIN5RA1fVMZjsF?kQ4>JT47|Kn3DMnC1meE$LE^y(pa>*EnIc5~rG8|7UuPd|54-)C z{yaS3_phH~9}wMsOaSoXd*bacHV_0*D4_^@dQ1T7073`|TRL@=FNren(tJta{-5se z_aeckHiXSQdAfHy8oa^%in5gro7v>~gmd7B%xM5%yt`(^q+>fWOvD-|v=0eY!1E}OD=LXdS2zbg z0T5>-Ku?U0Os6*Z{PZXm^O^S9m#^QbZt%HD_5iGbkZj=je*nWox!?Loe^WcO>Ht>~ z>HyD4n2y-0t`p@A<$fT+Yo0R_!lu4$I!(@&4vYB=XF(fp6d-7yR{~#1g=hz&#Umhb z{7S4%1vMR}+kR#+`xuv)%U0?#Lyi-a+|9>iYX<8{DU2kaXOud8Jx z@V26u)q+H`+KG1crz3k2^qy!L33Y+j37IhB)n2Uyv9Uec+MxGl=qzZ%mJWxq9QXlS zWhmnVi#DiA!0qR)GPjYSYmv34fUf1KM1XaWVb%dE5zy_&6tvIrF}TKikdOo4%PYIW z>dP7+iP^P3wBphzXt;vseg2JtT;A7BLIJ$m_X{Lwv_eWkrY3b!(C`H>O;&qf#pqM? zrkhwvmP zNQ~gsGlJ3-*jL-z(&6g*#yK4*0ugDd_PVI>GPM|cgEtaTWn*I_!P&U%)sfK4Yx|Uh zff>B%oX`k}7qER49#01!e~Lh2l%E&h97$=b%3Gag;44oALdzZvS`a>=Tem+4Cr^lN z$K0mp6Ks#l`EmI_X+Fo_J_n{pW2WB#d_a{&2u^mglX3eCS>+eeVdgUQ00000NkvXX Hu0mjf<8)+> literal 0 HcmV?d00001 From 1c06faf017b1317d9bb05147d1307d7585736e9c Mon Sep 17 00:00:00 2001 From: Chance Atkinson Date: Wed, 24 Nov 2021 00:10:58 -0600 Subject: [PATCH 099/107] Hit/Miss sprites rendered Added texture function to Fire.gd to load the correct sprites for a hit/miss and make it so that the player cannot fire on positions that they have already fired at. --- ...s.png-47e352b9aa0deb2bd08f554355b13c14.md5 | 3 + ....png-47e352b9aa0deb2bd08f554355b13c14.stex | Bin 0 -> 1214 bytes .../assets/game/HitMissAtlas.png.import | 34 +++++++++++ godot_ship/light_theme.tres | 4 +- godot_ship/scenes/Game/Fire.tscn | 2 +- godot_ship/script/game/Gameplay/Fire.gd | 54 ++++++++++++++---- 6 files changed, 82 insertions(+), 15 deletions(-) create mode 100644 godot_ship/.import/HitMissAtlas.png-47e352b9aa0deb2bd08f554355b13c14.md5 create mode 100644 godot_ship/.import/HitMissAtlas.png-47e352b9aa0deb2bd08f554355b13c14.stex create mode 100644 godot_ship/assets/game/HitMissAtlas.png.import diff --git a/godot_ship/.import/HitMissAtlas.png-47e352b9aa0deb2bd08f554355b13c14.md5 b/godot_ship/.import/HitMissAtlas.png-47e352b9aa0deb2bd08f554355b13c14.md5 new file mode 100644 index 0000000..1dfc95e --- /dev/null +++ b/godot_ship/.import/HitMissAtlas.png-47e352b9aa0deb2bd08f554355b13c14.md5 @@ -0,0 +1,3 @@ +source_md5="e860aab5fa3b6ce9c5831b3624861eb0" +dest_md5="a265f8881bf649748bb86076a1059462" + diff --git a/godot_ship/.import/HitMissAtlas.png-47e352b9aa0deb2bd08f554355b13c14.stex b/godot_ship/.import/HitMissAtlas.png-47e352b9aa0deb2bd08f554355b13c14.stex new file mode 100644 index 0000000000000000000000000000000000000000..55bfb08e5607fca9fab78d7bed21051e7c543c13 GIT binary patch literal 1214 zcmV;v1VQ^pL{n5i0000W000040000001yWO0001@1ONa~PDdb#P)Px(SV=@dRA_;NHv%(l?wcE3UQg39@4Gp0obT(Ic)lYAFJ3OA zk3XHBMr|h_->MyJ`WoK6I!ekkL+fd_I|EcjKeqTFo+s@?>EHpLJbfOu4bkuWRv2uG zI~|D$3>$n4Nx~TY7cZB50C$C`r=Ia9xQFfX-30Af5+^xfAD%pYKFW9v+Ip?$02pS# z3`o0rYh=aBemirr?DDvi6M7ww!yx_5jpzOqU}`ykelObWSDAmQW62RE3MCYL+Mto)y4%-~SMG@ZjO&tWJwZhli1_mO3vl&LZ7k&;N>agEUxym|bX$UkQx` zF7HcXTpO-GmHbo?tn7d_uw0rp|l7`!jA#w&6`g6dI})d5)& z-u?dCoV@>y-S)~8j5OY%BcZ3xSZQT-+!ibaH?9f5-*GSsktE^4!^d3jwoIxWyX_Ub z?NyQSJ^$=7LF);};(0Nw_zHrmH!kl*$p#^k+2QiyjC%+7x!!G~enUv(wK7=#4}vr| zLz(p@{;XSq7F{|`jVWrpEeWX~wa{k1gamNKkqw4nELbMfV=fIwjaqI0=es`um{dCe zbG_SAS|@}Ex6(bvL+b_7_yr0H%WjE)R~uL_=&u7(8=D`0`Wb-F=D+~lJGjrtIzin^ zXAmy|h*O>?6VLl2SOtYt0LMzfuFj>pe|P5qd<{>?ctB_TjAlmFS^(4-&@O>JG8RN* zDm@SI^89CW;GV~NLQkymjhAq4F2}6Y3T-uL_Yo;CD5(R~B1c5~!DVyidrxO`V`r{i z&+T23P?8d@_h=;a5uh6X-}OJ>yHhaw#5R?)2IV@D1*20J$S1CKecW9#E3!tILZswNALaIE&5$%sl$ciNv5g?2%^! zO@3cPy#Q8%1jTrlM*a4N0L|DC18Vyu2}Ow3c>q7E1NKlvs{!nItoOJHkY^4RBy+QK zz>ympM?y;f{1z&o`QFO!MmpIu!OFU=I`{&N)ensaBIDH< z1Q;9WoP2WwRQ4!MK{5!6SsT5j9igAB9r`vkQl^{&MZvFy>H#Iu8oG^5!3Ii2;LZTl z^W@>{pos`c5U0srKNIjbC_{}8pG%R@NqNk$B{V?hmcYr!x1)^DwGGk#zu+x_+Yano cGOQF|0J_)>Uf^tlqyPW_07*qoM6N<$f)F?=MF0Q* literal 0 HcmV?d00001 diff --git a/godot_ship/assets/game/HitMissAtlas.png.import b/godot_ship/assets/game/HitMissAtlas.png.import new file mode 100644 index 0000000..4ce2f51 --- /dev/null +++ b/godot_ship/assets/game/HitMissAtlas.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/HitMissAtlas.png-47e352b9aa0deb2bd08f554355b13c14.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/game/HitMissAtlas.png" +dest_files=[ "res://.import/HitMissAtlas.png-47e352b9aa0deb2bd08f554355b13c14.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 diff --git a/godot_ship/light_theme.tres b/godot_ship/light_theme.tres index f7605a8..da4e5b0 100644 --- a/godot_ship/light_theme.tres +++ b/godot_ship/light_theme.tres @@ -19,7 +19,7 @@ corner_radius_bottom_right = 3 corner_radius_bottom_left = 3 shadow_size = 3 -[sub_resource type="DynamicFont" id=4] +[sub_resource type="DynamicFont" id=3] outline_size = 1 extra_spacing_top = 5 extra_spacing_bottom = 3 @@ -27,7 +27,7 @@ extra_spacing_char = 1 font_data = ExtResource( 1 ) [resource] -default_font = SubResource( 4 ) +default_font = SubResource( 3 ) Button/colors/font_color = Color( 0.0784314, 0.0784314, 0.0784314, 1 ) Button/colors/font_color_disabled = Color( 0.9, 0.9, 0.9, 0.2 ) Button/colors/font_color_hover = Color( 0, 0, 0, 1 ) diff --git a/godot_ship/scenes/Game/Fire.tscn b/godot_ship/scenes/Game/Fire.tscn index 7f42da6..fb9cde5 100644 --- a/godot_ship/scenes/Game/Fire.tscn +++ b/godot_ship/scenes/Game/Fire.tscn @@ -40,7 +40,7 @@ __meta__ = { pause_mode = 2 margin_right = 83.0 margin_bottom = 58.0 -dialog_text = "You can't fire outside the board" +dialog_text = "You must select a valid position" [connection signal="pressed" from="Fire" to="." method="_on_Fire_pressed"] [connection signal="confirmed" from="FireDialog" to="." method="_on_FireDialog_confirmed"] diff --git a/godot_ship/script/game/Gameplay/Fire.gd b/godot_ship/script/game/Gameplay/Fire.gd index 6095e69..a172f14 100644 --- a/godot_ship/script/game/Gameplay/Fire.gd +++ b/godot_ship/script/game/Gameplay/Fire.gd @@ -1,5 +1,9 @@ extends Control +var atlas = preload("res://assets/game/HitMissAtlas.png") +var sprites = [] +var hits = [] + # Called when the node enters the scene tree for the first time. func _ready(): pass # Replace with function body. @@ -7,22 +11,48 @@ func _ready(): # Signal to pass the fire location back to yet-unknown nodes signal fire_at +func _init(topBoard): + hits = topBoard + func _on_Fire_pressed(): var crosshair = get_node("Crosshair") # Check if the crosshair is in a valid position - if crosshair.validate_position(crosshair.position) == true: + if crosshair.validate_position(crosshair.position): var crosshair_pos = crosshair.world_to_board_space(crosshair.position) - # fires at position - print("Fire at position: ", crosshair_pos) - emit_signal("fire_at", crosshair_pos) - # Close the Firing menu - queue_free() - else: - #if invalid position popup appears - var dialog = get_node("FireDialog") - dialog.popup_centered() - pass # Replace with function body. + if(hits[crosshair_pos.x][crosshair_pos.y] == 0): + # fires at position + print("Fire at position: ", crosshair_pos) + emit_signal("fire_at", crosshair_pos) + # Close the Firing menu + queue_free() + return + #if invalid position popup appears + var dialog = get_node("FireDialog") + dialog.popup_centered() func _on_FireDialog_confirmed(): get_node("Crosshair").visible = true - pass # Replace with function body. + +const OFFSET = Vector2(18, 18) + +func texture(index): + if(hits[index.x][index.y] != 0): + var textureSize = 32 + # It's okay to create a new texture every time, as resources are refcounted + var t = AtlasTexture.new() + t.set_atlas(atlas) + t.margin = Rect2(0, 0, 0, 0) + t.region = Rect2( + 0 if(hits[index.x][index.y] < 0) else textureSize, + 0, + textureSize, + textureSize + ) + # Create a new Sprite to house the texture, or use the existing sprite + var sprite = Sprite.new() + sprite.texture = t + sprite.position = Vector2(index.x, index.y) * textureSize + OFFSET + + printt(t.get_height(), t.get_width()) + + $board_blue.add_child(sprite) From bfd005d01c1b1a190d81026cacec823844bec4c9 Mon Sep 17 00:00:00 2001 From: John Breaux Date: Wed, 24 Nov 2021 02:48:02 -0600 Subject: [PATCH 100/107] Lobby: Return to Host/Connect menu when connection to server unexpectedly closes --- godot_ship/script/network/Lobby.gd | 48 +++++++++++++++++++++--------- godot_ship/script/network/Net.gd | 36 ++++++++++++++++------ 2 files changed, 61 insertions(+), 23 deletions(-) diff --git a/godot_ship/script/network/Lobby.gd b/godot_ship/script/network/Lobby.gd index d73d8ca..ba9c7c3 100644 --- a/godot_ship/script/network/Lobby.gd +++ b/godot_ship/script/network/Lobby.gd @@ -1,7 +1,7 @@ extends Control # Ignore discarded return values # warning-ignore:return_value_discarded -onready var text = find_node("Player List") +onready var player_list = find_node("Player List") onready var ip = find_node("IP Address") # TODO: Write a function to update Player List with the list of attached players @@ -11,7 +11,7 @@ func _on_peers_updated(): for peer in Net.peer_info: connected_peers += ("%s\n" % Net.peer_info[peer]["name"]) pass - text.text = connected_peers.rsplit("\n", true, 1)[0].c_unescape() + player_list.text = connected_peers.rsplit("\n", true, 1)[0].c_unescape() pass func set_IP_Address_text(show): @@ -23,6 +23,7 @@ func set_IP_Address_text(show): func _ready(): Net.connect("peers_updated", self, "_on_peers_updated") + Net.connect("disconnected", self, "_on_Net_disconnected") _on_peers_updated() pass @@ -47,12 +48,18 @@ func _on_Host_Button_pressed(): # Disconnect from (or stop hosting) a game # Shows the host/connect buttons func _on_Disconnect_Button_pressed(): - # Hide "Connected Options" - show_Connected_Options(false) - # Show the host IP address - set_IP_Address_text(false) # Disconnect Net.disconnect_host() + # Hide "Connected Options" + show_Connected_Options(false) + # Hide the host IP address + set_IP_Address_text(false) + +func _on_Net_disconnected(): + # Hide "Connected Options" + show_Connected_Options(false) + # Hide the host IP address + set_IP_Address_text(false) func _on_Change_Name_Button_pressed(): # Show the Change Name dialogue @@ -76,17 +83,30 @@ func _on_Connect_to_Game_confirmed(): # Show "Connected Options" show_Connected_Options(true) -func _on_Change_Name_confirmed(): - # Get the new name - var name = find_node("Name Entry").text.split("\n")[0] - # Set it as the name - Net.change_name(name) - - - func _on_Exit_Lobby_pressed(): # Disconnect if Net.connected: Net.disconnect_host() # Close Lobby menu queue_free() + + +func _on_IP_and_Port_Entry_text_entered(text): + # Split it into IP and Port segments + var ip_port = text.split(":") + # If text exists and contains valid IP address + if ip_port.size() > 0 and ip_port[0].is_valid_ip_address(): + # Connect to host + var connected = Net.callv("connect_host", ip_port) + if connected == OK: + # Show "Connected Options" + show_Connected_Options(true) + # Hide the popup + find_node("Connect to Game").hide() + + +func _on_Name_Entry_text_entered(text): + # Change the name + Net.change_name(text) + # Hide the popup + find_node("Change Name").hide() diff --git a/godot_ship/script/network/Net.gd b/godot_ship/script/network/Net.gd index 22409e8..6b75b99 100644 --- a/godot_ship/script/network/Net.gd +++ b/godot_ship/script/network/Net.gd @@ -10,15 +10,15 @@ const LOCALHOST = "127.0.0.1" # Mail types: # 1: REQUEST: Message is a request for information # 0: REPLY: Message is a reply -enum {REPLY, REQUEST} +enum {REPLY, REQUEST, READY, ACK} # Signals # incoming(mail): Sent when there's an incoming message signal incoming # peers_updated(): Sent when the peer list is updated signal peers_updated -# - +# disconnected(): Sent when unexpectedly disconnected +signal disconnected # Variables # inbox: Array: Message history var inbox = [] @@ -33,8 +33,9 @@ var local_info = {"name": ""} # Network -- handles server and client setup, and facilitates communication between the two # receive: Receive a message (called by sender's `send` function) -# item: The message received from the sender (implicitly JSON-decoded by JSONRPC) -sync func receive(mail): +# mail: The message received from the sender (implicitly JSON-decoded by JSONRPC) +# mail_type: Type of mail (see "Mail Types" enum above) +remote func receive(mail): # Get the sender's ID and force letter to be properly addressed mail[0] = get_tree().get_rpc_sender_id() # Add the mail to the inbox (so it can be read back later if necessary @@ -45,10 +46,12 @@ sync func receive(mail): # send: Send a message # id: Peer ID of the recipient # mail: Variant of a json-encodable type (non-Object) to send -func send(id, mail): +# mail_type: Type of mail (see "Mail Types" enum above) +func send(id, mail, mail_type = REPLY): # Make the recipient receive the mail - rpc_id(id, "receive", to_json(mail)) + rpc_id(id, "receive", to_json([-1, mail, mail_type])) +# Host # start_host: Host the game # port: TCP port # max_players: Largest number of players allowed to connect at a time @@ -67,12 +70,20 @@ func start_host(port = DEFAULT_PORT, max_players = 2): connected = true hosting = true +# accept_guests: +# Select whether to accept new guests +func accept_guests(accept:bool): + if hosting: + multiplayer.refuse_new_network_connections = not accept + +# Guest # connect_host: Connect to a host func connect_host(ip = LOCALHOST, port = DEFAULT_PORT): get_hostname() var peer = NetworkedMultiplayerENet.new() - peer.create_client(ip, port) + var ret = peer.create_client(ip, port) get_tree().network_peer = peer + return ret # disconnect_host func disconnect_host(): @@ -99,6 +110,7 @@ func change_name(name): rpc("register_peer", local_info) pass +# Helper Functions # get_hostname: Asks the host machine to provide its hostname, # and if the peer name isn't set, set it to the hostname func get_hostname(): @@ -125,15 +137,19 @@ func _ready(): _trash = get_tree().connect("server_disconnected", self, "_host_disconnected") _trash = get_tree().connect("connection_failed", self, "_connection_fail" ) - +# Signal Handlers func _peer_connected(id): # Send peer info to remote peer rpc_id(id, "register_peer", local_info) + if hosting and peer_info.size() >= 2: + pass pass func _peer_disconnected(id): # Unregister the peer locally unregister_peer(id) + if hosting and peer_info.size() < 2: + pass pass @@ -147,6 +163,8 @@ func _host_connected(): func _host_disconnected(): # Ensure host is disconnected disconnect_host() + # Send disconnection message to listeners + emit_signal("disconnected") func _connection_fail(): # Ensure Net state is clear From 10d7fda9574adc7f35b4f54daa61a1b32d682b10 Mon Sep 17 00:00:00 2001 From: John Breaux Date: Wed, 24 Nov 2021 02:49:13 -0600 Subject: [PATCH 101/107] Lobby: Change boxes to close on LineEdit text entered; remove OK buttons. --- godot_ship/scenes/Lobby.tscn | 40 +++++++++++++++++------------------- 1 file changed, 19 insertions(+), 21 deletions(-) diff --git a/godot_ship/scenes/Lobby.tscn b/godot_ship/scenes/Lobby.tscn index 22e3714..59f98d2 100644 --- a/godot_ship/scenes/Lobby.tscn +++ b/godot_ship/scenes/Lobby.tscn @@ -108,24 +108,22 @@ margin_right = 123.0 margin_bottom = 104.0 text = "Change Name" -[node name="Exit Lobby" type="Button" parent="Lobby Options"] +[node name="Exit Lobby Button" type="Button" parent="Lobby Options"] margin_top = 108.0 margin_right = 123.0 margin_bottom = 128.0 text = "Exit Lobby" -[node name="Change Name" type="AcceptDialog" parent="."] -margin_left = 402.272 -margin_top = 809.953 -margin_right = 642.272 -margin_bottom = 883.953 -rect_min_size = Vector2( 240, 74 ) +[node name="Change Name" type="WindowDialog" parent="."] +visible = true +margin_left = 201.002 +margin_top = 516.255 +margin_right = 441.002 +margin_bottom = 562.255 +rect_min_size = Vector2( 240, 46 ) window_title = "Change Name" -__meta__ = { -"_edit_use_anchors_": false -} -[node name="Name Entry" type="TextEdit" parent="Change Name"] +[node name="Name Entry" type="LineEdit" parent="Change Name"] anchor_left = 0.5 anchor_right = 0.5 margin_left = -112.0 @@ -133,23 +131,25 @@ margin_top = 8.0 margin_right = 112.0 margin_bottom = 38.0 grow_horizontal = 2 +rect_min_size = Vector2( 224, 30 ) text = "127.0.0.1" __meta__ = { "_edit_use_anchors_": false } -[node name="Connect to Game" type="AcceptDialog" parent="."] +[node name="Connect to Game" type="WindowDialog" parent="."] +visible = true margin_left = 201.136 margin_top = 404.977 margin_right = 441.136 -margin_bottom = 478.977 -rect_min_size = Vector2( 240, 74 ) +margin_bottom = 450.977 +rect_min_size = Vector2( 240, 46 ) window_title = "Connect to Game" __meta__ = { "_edit_use_anchors_": false } -[node name="IP and Port Entry" type="TextEdit" parent="Connect to Game"] +[node name="IP and Port Entry" type="LineEdit" parent="Connect to Game"] anchor_left = 0.5 anchor_right = 0.5 margin_left = -112.0 @@ -157,15 +157,13 @@ margin_top = 8.0 margin_right = 112.0 margin_bottom = 38.0 grow_horizontal = 2 +rect_min_size = Vector2( 224, 30 ) text = "127.0.0.1" -__meta__ = { -"_edit_use_anchors_": false -} [connection signal="pressed" from="Lobby Options/Host or Connect/Host Button" to="." method="_on_Host_Button_pressed"] [connection signal="pressed" from="Lobby Options/Host or Connect/Connect Button" to="." method="_on_Connect_Button_pressed"] [connection signal="pressed" from="Lobby Options/Connected Options/Disconnect Button" to="." method="_on_Disconnect_Button_pressed"] [connection signal="pressed" from="Lobby Options/Change Name Button" to="." method="_on_Change_Name_Button_pressed"] -[connection signal="pressed" from="Lobby Options/Exit Lobby" to="." method="_on_Exit_Lobby_pressed"] -[connection signal="confirmed" from="Change Name" to="." method="_on_Change_Name_confirmed"] -[connection signal="confirmed" from="Connect to Game" to="." method="_on_Connect_to_Game_confirmed"] +[connection signal="pressed" from="Lobby Options/Exit Lobby Button" to="." method="_on_Exit_Lobby_pressed"] +[connection signal="text_entered" from="Change Name/Name Entry" to="." method="_on_Name_Entry_text_entered"] +[connection signal="text_entered" from="Connect to Game/IP and Port Entry" to="." method="_on_IP_and_Port_Entry_text_entered"] From 1a3d770690ffc6f717278e06ef46a61c4acc918d Mon Sep 17 00:00:00 2001 From: John Breaux Date: Wed, 24 Nov 2021 02:50:05 -0600 Subject: [PATCH 102/107] Title Screen: Disable singleplayer (for now) --- godot_ship/scenes/Title Screen.tscn | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/godot_ship/scenes/Title Screen.tscn b/godot_ship/scenes/Title Screen.tscn index 0b4f4dc..2fd5dfa 100644 --- a/godot_ship/scenes/Title Screen.tscn +++ b/godot_ship/scenes/Title Screen.tscn @@ -33,33 +33,33 @@ __meta__ = { } [node name="Singleplayer" type="Button" parent="VBoxContainer"] +visible = false margin_right = 160.0 margin_bottom = 24.0 focus_neighbour_top = NodePath("../Quit") text = "Single Player" [node name="Multiplayer" type="Button" parent="VBoxContainer"] -margin_top = 28.0 margin_right = 160.0 -margin_bottom = 52.0 +margin_bottom = 24.0 text = "Multiplayer" [node name="Options" type="Button" parent="VBoxContainer"] -margin_top = 56.0 +margin_top = 28.0 margin_right = 160.0 -margin_bottom = 80.0 +margin_bottom = 52.0 text = "Options" [node name="Credits" type="Button" parent="VBoxContainer"] -margin_top = 84.0 +margin_top = 56.0 margin_right = 160.0 -margin_bottom = 108.0 +margin_bottom = 80.0 text = "Credits" [node name="Quit" type="Button" parent="VBoxContainer"] -margin_top = 112.0 +margin_top = 84.0 margin_right = 160.0 -margin_bottom = 136.0 +margin_bottom = 108.0 focus_neighbour_bottom = NodePath("../Singleplayer") text = "Quit" From 66cac5247f8c8a5b18ffd4bdecea0a22c269c9af Mon Sep 17 00:00:00 2001 From: John Breaux Date: Wed, 24 Nov 2021 02:53:05 -0600 Subject: [PATCH 103/107] Board: Return LOST state when hit and no ships remain. --- godot_ship/script/game/Gameplay/Board.gd | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/godot_ship/script/game/Gameplay/Board.gd b/godot_ship/script/game/Gameplay/Board.gd index 894ad19..fd72f58 100644 --- a/godot_ship/script/game/Gameplay/Board.gd +++ b/godot_ship/script/game/Gameplay/Board.gd @@ -5,7 +5,7 @@ var Ship = preload("res://scenes/Game/Ship.tscn") # Consts and enums const NO_SHIP = -1 -enum {MISS = -1, READY = 0, HIT = 1, SUNK = 2} +enum {MISS = -1, READY = 0, HIT = 1, SUNK = 2, LOST = 3} var bottom_board:Array # Player board var top_board:Array # Opponent board @@ -49,6 +49,10 @@ func hit(pos): if res == SUNK: # remove it from the count ship_count -= 1 + # If no ships left, + if ship_count == 0: + # Game has been lost + res = LOST; return res # fire: Store the results of firing on an opponent From 11163161762f6488cce50ded09042c1d69cc21a5 Mon Sep 17 00:00:00 2001 From: John Breaux Date: Wed, 24 Nov 2021 03:00:27 -0600 Subject: [PATCH 104/107] Player: Yield on signal returns the parameters of that signal. Refactor around this fact. --- godot_ship/script/game/Gameplay/Player.gd | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/godot_ship/script/game/Gameplay/Player.gd b/godot_ship/script/game/Gameplay/Player.gd index 8b87022..4fc6074 100644 --- a/godot_ship/script/game/Gameplay/Player.gd +++ b/godot_ship/script/game/Gameplay/Player.gd @@ -66,12 +66,8 @@ func turn_start(): var fire = Fire.instance() add_child(fire) - yield(fire, "fire_at") - while not fire_at_position: - pass - var target = fire_at_position - fire_at_position = null - return target + var pos = yield(fire, "fire_at") + return pos # getBoard: returns the player's board # returns: board From 6ff4df4a1d3f5d56ba7607620cfd49474a4e141c Mon Sep 17 00:00:00 2001 From: John Breaux Date: Wed, 24 Nov 2021 03:05:45 -0600 Subject: [PATCH 105/107] Game: Begin state machine implementation; use Net-mail for host<->guest communication. --- godot_ship/script/game/Gameplay/Game.gd | 83 +++++++++++++++++++++++-- 1 file changed, 78 insertions(+), 5 deletions(-) diff --git a/godot_ship/script/game/Gameplay/Game.gd b/godot_ship/script/game/Gameplay/Game.gd index 5fb28f3..e16cd43 100644 --- a/godot_ship/script/game/Gameplay/Game.gd +++ b/godot_ship/script/game/Gameplay/Game.gd @@ -1,8 +1,11 @@ extends Control -var light_theme = load("res://light_theme.tres") -var dark_theme = load("res://dark_theme.tres") +# warning-ignore-all:unused_signal +# Signals +signal fire # fire(position) +signal hit # hit (state: see Miss/Ready/Hit/Sunk enum in Board.gd) +signal win # win (): sent when opponent player lost # Path to Player class, for instantiating new Players in code var Player = preload("res://scenes/Game/Player.tscn") @@ -11,7 +14,7 @@ var Victory = preload("res://scenes/Game/Victory.tscn") # Array of instances of the Player class; stores the Players -var players = [] # = player1, player2, ... +var player var players_ready = [] # turn counter var turn = 0 @@ -37,6 +40,7 @@ func _ready(): # Function used to keep track of which players are ready # TODO: Change this to keep track of ready states only func player_ready(): + players_ready.append(Net.get_network_id()) pass # Member functions: @@ -49,15 +53,84 @@ sync func game_setup(): network_id = Net.get_network_id() pass -# game_start: +# game_start: Runs on host. Controls the game. func game_start(): + var state = "P1_fire" # Make sure we're the server + while true: + match state: + "P1_fire": + # Tell local player to fire + + # Wait for result + + # Send fire REQUEST to P2 + pass + "P2_check": + # Wait for hit + var ret = yield(self, "hit") + # Record the hit + + # + pass + "P2_fire": + pass + "P1_check": + # Check if + pass + "P1_win": + pass + "P2_win": + pass pass +func fire_on(id, pos:Vector2): + # REQUEST fire on opponent + Net.send(id, ["fire", pos], Net.REQUEST) + # Wait for REPLY + +func return_hit(id, ship_status): + + Net.send(id, ["hit", ship_status], Net.REPLY) + +func _on_win(): + pass + +func _on_Net_incoming(mail): + if mail.size() == 3: + var sender = mail[0] + var message = mail[1] + var mailtype = mail[2] + match mailtype: + # if message is a REQUEST (to perform an action) + Net.REQUEST: + match message[0]: + # Opponent asks for player.fire() + "fire": + emit_signal("fire", message[1]) + # Opponent asks for hit(pos) + "hit": + pass + _: + pass + Net.REPLY: + # message is a REPLY (return value) + match message[0]: + "fire": + emit_signal("hit", message[1]) + # Return value of + "hit": + pass + pass + Net.READY: + # Add player to the ready array + players_ready.append(sender) + pass + # _on_player_ready: Player Ready signal handler func _on_player_ready(): print ("_on_player_ready") - Net.send(1, ["player_ready", Net.Mail.REPLY]) + Net.send(1, [], Net.READY) # victory_screen: display the victory screen func victory_screen(): From 20cd32bd899151f2925547122a1ebb4d94ec76fb Mon Sep 17 00:00:00 2001 From: John Breaux Date: Wed, 24 Nov 2021 03:07:27 -0600 Subject: [PATCH 106/107] Lobby: ??? --- godot_ship/script/network/Lobby.gd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/godot_ship/script/network/Lobby.gd b/godot_ship/script/network/Lobby.gd index ba9c7c3..28f915b 100644 --- a/godot_ship/script/network/Lobby.gd +++ b/godot_ship/script/network/Lobby.gd @@ -44,7 +44,7 @@ func _on_Host_Button_pressed(): # Begin hosting Net.start_host() -# Disconnect +# Disconnect # Disconnect from (or stop hosting) a game # Shows the host/connect buttons func _on_Disconnect_Button_pressed(): From af9b18243eefbadecbaf0f8a71de5ce579ee66c3 Mon Sep 17 00:00:00 2001 From: John Breaux Date: Wed, 24 Nov 2021 12:17:07 -0600 Subject: [PATCH 107/107] Ship Battle: Draw the rest of the freaking owl --- godot_ship/scenes/Game/Board.tscn | 2 +- godot_ship/scenes/Game/Game.tscn | 11 +- godot_ship/scenes/Game/Victory.tscn | 29 +-- godot_ship/scenes/Lobby.tscn | 15 +- godot_ship/script/Main.gd | 2 +- godot_ship/script/game/Gameplay/Board.gd | 62 +++--- godot_ship/script/game/Gameplay/Fire.gd | 23 +- godot_ship/script/game/Gameplay/Game.gd | 210 +++++++++++------- godot_ship/script/game/Gameplay/Player.gd | 38 ++-- godot_ship/script/game/Gameplay/Ship.gd | 2 + godot_ship/script/game/Victory.gd | 21 +- godot_ship/script/network/Lobby.gd | 74 +++--- godot_ship/script/network/Net.gd | 24 +- .../script/title screen/Title Screen.gd | 2 +- 14 files changed, 304 insertions(+), 211 deletions(-) diff --git a/godot_ship/scenes/Game/Board.tscn b/godot_ship/scenes/Game/Board.tscn index 3410f58..75ca79a 100644 --- a/godot_ship/scenes/Game/Board.tscn +++ b/godot_ship/scenes/Game/Board.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=3 format=2] [ext_resource path="res://script/game/Gameplay/Board.gd" type="Script" id=1] -[ext_resource path="res://assets/game/board_dark.png" type="Texture" id=2] +[ext_resource path="res://assets/game/board_blue.png" type="Texture" id=2] [node name="Board" type="Node2D"] position = Vector2( 36, 36 ) diff --git a/godot_ship/scenes/Game/Game.tscn b/godot_ship/scenes/Game/Game.tscn index 5d8d8d9..e585187 100644 --- a/godot_ship/scenes/Game/Game.tscn +++ b/godot_ship/scenes/Game/Game.tscn @@ -29,7 +29,7 @@ margin_right = 88.0 margin_bottom = 20.0 text = "Forfeit" -[node name="ConfirmationDialog" type="ConfirmationDialog" parent="."] +[node name="Forfeit Confirmation" type="ConfirmationDialog" parent="."] anchor_left = 0.5 anchor_top = 0.5 anchor_right = 0.5 @@ -54,6 +54,13 @@ margin_right = 43.4668 margin_bottom = 26.1478 text = "Win" +[node name="Connection Error" type="AcceptDialog" parent="."] +margin_right = 230.0 +margin_bottom = 58.0 +window_title = "Connection Error" +dialog_text = "Host disconnected unexpectedly." + [connection signal="pressed" from="Buttons/Forfeit" to="." method="_on_Forfeit_pressed"] -[connection signal="confirmed" from="ConfirmationDialog" to="." method="_on_ConfirmationDialog_confirmed"] +[connection signal="confirmed" from="Forfeit Confirmation" to="." method="_on_Forfeit_Confirmation_confirmed"] [connection signal="button_down" from="Button" to="." method="_on_Button_button_down"] +[connection signal="confirmed" from="Connection Error" to="." method="_on_Connection_Error_confirmed"] diff --git a/godot_ship/scenes/Game/Victory.tscn b/godot_ship/scenes/Game/Victory.tscn index 4397295..c6052df 100644 --- a/godot_ship/scenes/Game/Victory.tscn +++ b/godot_ship/scenes/Game/Victory.tscn @@ -10,25 +10,12 @@ font_data = ExtResource( 2 ) [node name="Victory" type="Control"] anchor_right = 1.0 anchor_bottom = 1.0 +mouse_filter = 2 script = ExtResource( 1 ) __meta__ = { "_edit_use_anchors_": false } -[node name="Label" type="Label" parent="."] -margin_left = 118.32 -margin_top = 44.5109 -margin_right = 260.32 -margin_bottom = 84.5109 -size_flags_vertical = 0 -custom_fonts/font = SubResource( 1 ) -text = "Victory" -align = 1 -valign = 1 -__meta__ = { -"_edit_use_anchors_": false -} - [node name="exit_to_main" type="Button" parent="."] margin_left = 541.0 margin_top = 327.85 @@ -47,6 +34,20 @@ margin_right = 63.2202 margin_bottom = 357.41 text = "Restart" +[node name="Victory" type="Label" parent="."] +margin_left = 380.0 +margin_top = 44.5109 +margin_right = 260.32 +margin_bottom = 84.5109 +size_flags_vertical = 0 +custom_fonts/font = SubResource( 1 ) +text = "Victory" +align = 1 +valign = 1 +__meta__ = { +"_edit_use_anchors_": false +} + [connection signal="button_down" from="exit_to_main" to="." method="_on_exit_to_main_button_down"] [connection signal="pressed" from="exit_to_main" to="." method="_on_Button_pressed"] [connection signal="button_down" from="Button2" to="." method="_on_restart_button_down"] diff --git a/godot_ship/scenes/Lobby.tscn b/godot_ship/scenes/Lobby.tscn index 59f98d2..e8ab806 100644 --- a/godot_ship/scenes/Lobby.tscn +++ b/godot_ship/scenes/Lobby.tscn @@ -93,9 +93,19 @@ text = "Connect to Game" [node name="Connected Options" type="VBoxContainer" parent="Lobby Options"] visible = false -margin_top = 84.0 +margin_top = 36.0 margin_right = 123.0 -margin_bottom = 104.0 +margin_bottom = 56.0 + +[node name="Host Options" type="VBoxContainer" parent="Lobby Options/Connected Options"] +visible = false +margin_right = 123.0 +margin_bottom = 20.0 + +[node name="Start Game" type="Button" parent="Lobby Options/Connected Options/Host Options"] +margin_right = 123.0 +margin_bottom = 20.0 +text = "Start Game" [node name="Disconnect Button" type="Button" parent="Lobby Options/Connected Options"] margin_right = 123.0 @@ -162,6 +172,7 @@ text = "127.0.0.1" [connection signal="pressed" from="Lobby Options/Host or Connect/Host Button" to="." method="_on_Host_Button_pressed"] [connection signal="pressed" from="Lobby Options/Host or Connect/Connect Button" to="." method="_on_Connect_Button_pressed"] +[connection signal="pressed" from="Lobby Options/Connected Options/Host Options/Start Game" to="." method="_on_Start_Game_pressed"] [connection signal="pressed" from="Lobby Options/Connected Options/Disconnect Button" to="." method="_on_Disconnect_Button_pressed"] [connection signal="pressed" from="Lobby Options/Change Name Button" to="." method="_on_Change_Name_Button_pressed"] [connection signal="pressed" from="Lobby Options/Exit Lobby Button" to="." method="_on_Exit_Lobby_pressed"] diff --git a/godot_ship/script/Main.gd b/godot_ship/script/Main.gd index 34f2dd8..c7caaf9 100644 --- a/godot_ship/script/Main.gd +++ b/godot_ship/script/Main.gd @@ -60,7 +60,7 @@ func _on_scene_start(scene): var instance #print ("_on_scene_start(",scene,")") match scene: - "Singleplayer": + "Gameplay": instance = Game.instance() add_child (instance) return true diff --git a/godot_ship/script/game/Gameplay/Board.gd b/godot_ship/script/game/Gameplay/Board.gd index fd72f58..e482ec8 100644 --- a/godot_ship/script/game/Gameplay/Board.gd +++ b/godot_ship/script/game/Gameplay/Board.gd @@ -10,6 +10,7 @@ enum {MISS = -1, READY = 0, HIT = 1, SUNK = 2, LOST = 3} var bottom_board:Array # Player board var top_board:Array # Opponent board var ships = [] # list of Ships +var ship_data = [] # Data used to generate ships var ship_count = 0 # number of 'active' (un-sunk) ships # a board is square. This is its side length @@ -33,50 +34,55 @@ func hit(pos): var res = MISS # Get the ship-metadata for that location var ship = bottom_board[pos.x][pos.y] - # If there's a ship there, which exists, and hasn't been hit, - if ship and ship[0] > NO_SHIP and ship[1] == READY: - # Hit the ship, and store whether HIT or SUNK + # If the ship's already been hit here, don't bother beating it again + if ship[1] != READY: + return ship[1] + if ship[0] > NO_SHIP: + # Decide whether HIT or SUNK res = ships[ship[0]].hit(pos) - # TODO: display KABOOM - # Update the ship - ships[ship[0]].update() - # Mark the ship as hit - ship[1] = HIT - else: - # Mark that position as a miss, with no ship - bottom_board[pos.x][pos.y] = [NO_SHIP, MISS] # If ship sunk, if res == SUNK: # remove it from the count ship_count -= 1 - # If no ships left, + # If we have no more ships left, we LOST if ship_count == 0: - # Game has been lost - res = LOST; + res = LOST + # Record the result on the board, and return it + ship[1] = res return res # fire: Store the results of firing on an opponent # pos: board position fired on # res: result of firing on the opponent func fire(pos, res): - if top_board[pos.x][pos.y] == null: + if top_board[pos.x][pos.y] == READY: top_board[pos.x][pos.y] = res - return true - return false + return res + else: + return top_board[pos.x][pos.y] # Place a ship on the board at board-space coordinates func place_ship(in_position, in_size, in_orientation, in_variant = 0): + # Save the ship data + ship_data.append([in_position, in_size, in_orientation]) + # Create a new Ship, and give it some data var ship = Ship.instance() ship._init(in_position, in_size, in_orientation, in_variant) + # Mark the ship on the board for pos in ship.get_extent(): bottom_board[pos.x][pos.y] = [ships.size(), READY] + # Add the ship to the ships array, and keep count ships.append(ship) ship_count += 1 + # Add the ship to the scene tree add_child(ship) -# Not sure why this is necessary yet -func get_bottom_board(): - return bottom_board + +func query_bottom(pos): + return bottom_board[pos.x][pos.y] + +func query_top(pos): + return top_board[pos.x][pos.y] # Get the number of live ships func get_ship_count(): @@ -84,16 +90,16 @@ func get_ship_count(): # _init: Constructor func _init(): - # Initialize the bottom_board to a 10x10 array - for _row in range(board_len): + # Initialize the bottom_board to a len*len array + for x in board_len: bottom_board.append([]) - for column in bottom_board: - column.resize(10) - # Initialize the top_board to a 10x10 array - for _row in range(board_len): + for y in board_len: + bottom_board[x].append([NO_SHIP, READY]) + # Initialize the top_board to a len*len array + for x in board_len: top_board.append([]) - for column in top_board: - column.resize(board_len) + for y in board_len: + top_board[x].append(READY) # worldspace_to_boardspace: convert a Vector2 in world-space to board-space func worldspace_to_boardspace(coordinate:Vector2): diff --git a/godot_ship/script/game/Gameplay/Fire.gd b/godot_ship/script/game/Gameplay/Fire.gd index a172f14..3e1eccc 100644 --- a/godot_ship/script/game/Gameplay/Fire.gd +++ b/godot_ship/script/game/Gameplay/Fire.gd @@ -1,19 +1,20 @@ extends Control +# Signal to pass the fire location back to parent +signal fire_at + var atlas = preload("res://assets/game/HitMissAtlas.png") var sprites = [] -var hits = [] +var hits # Called when the node enters the scene tree for the first time. func _ready(): + print("Fire: _ready()") + for x in 10: + for y in 10: + texture(Vector2(x,y)) pass # Replace with function body. -# Signal to pass the fire location back to yet-unknown nodes -signal fire_at - -func _init(topBoard): - hits = topBoard - func _on_Fire_pressed(): var crosshair = get_node("Crosshair") # Check if the crosshair is in a valid position @@ -21,10 +22,7 @@ func _on_Fire_pressed(): var crosshair_pos = crosshair.world_to_board_space(crosshair.position) if(hits[crosshair_pos.x][crosshair_pos.y] == 0): # fires at position - print("Fire at position: ", crosshair_pos) emit_signal("fire_at", crosshair_pos) - # Close the Firing menu - queue_free() return #if invalid position popup appears var dialog = get_node("FireDialog") @@ -32,7 +30,7 @@ func _on_Fire_pressed(): func _on_FireDialog_confirmed(): get_node("Crosshair").visible = true - + const OFFSET = Vector2(18, 18) func texture(index): @@ -52,7 +50,4 @@ func texture(index): var sprite = Sprite.new() sprite.texture = t sprite.position = Vector2(index.x, index.y) * textureSize + OFFSET - - printt(t.get_height(), t.get_width()) - $board_blue.add_child(sprite) diff --git a/godot_ship/script/game/Gameplay/Game.gd b/godot_ship/script/game/Gameplay/Game.gd index e16cd43..4da38cf 100644 --- a/godot_ship/script/game/Gameplay/Game.gd +++ b/godot_ship/script/game/Gameplay/Game.gd @@ -1,11 +1,18 @@ extends Control # warning-ignore-all:unused_signal +# warning-ignore-all:return_value_discarded + +enum {MISS = -1, READY = 0, HIT = 1, SUNK = 2, LOST = 3} # Signals signal fire # fire(position) -signal hit # hit (state: see Miss/Ready/Hit/Sunk enum in Board.gd) -signal win # win (): sent when opponent player lost +signal hit # hit (state): see Miss/Ready/Hit/Sunk enum in Board.gd) +signal miss +signal loss +signal forfeit + +signal game_ready # Path to Player class, for instantiating new Players in code var Player = preload("res://scenes/Game/Player.tscn") @@ -16,10 +23,6 @@ var Victory = preload("res://scenes/Game/Victory.tscn") # Array of instances of the Player class; stores the Players var player var players_ready = [] -# turn counter -var turn = 0 -# winner -var winner = 0 # Every game is a multiplayer game, even the ones that aren't. # We're taking the Minecraft approach, baby @@ -28,129 +31,159 @@ var network_id # Called when the node enters the scene tree for the first time. func _ready(): - get_node("ConfirmationDialog").get_ok().text = "Yes" - get_node("ConfirmationDialog").get_cancel().text = "No" - get_node("ConfirmationDialog").get_ok().rect_min_size.x = 100 - get_node("ConfirmationDialog").get_cancel().rect_min_size.x = 100 - if multiplayer: - # TODO: Spawn a lobby where people can either connect to a peer or create a server + get_node("Forfeit Confirmation").get_ok().text = "Yes" + get_node("Forfeit Confirmation").get_cancel().text = "No" + get_node("Forfeit Confirmation").get_ok().rect_min_size.x = 100 + get_node("Forfeit Confirmation").get_cancel().rect_min_size.x = 100 + + if Net.connected: + Net.connect("disconnected", self, "connection_error") + Net.connect("incoming", self, "_on_Net_incoming") pass game_setup() # Function used to keep track of which players are ready -# TODO: Change this to keep track of ready states only -func player_ready(): - players_ready.append(Net.get_network_id()) - pass +func player_ready(sender): + print("player_ready(%s), %d" % [sender, players_ready.size()]) + players_ready.append(sender) + if (players_ready.size() >= Net.peer_info.size()): + emit_signal("game_ready") # Member functions: -# game_start: starts the game +# game_setup: starts the game sync func game_setup(): # If there's no server connected, create one if not Net.connected: # TODO: Create a fake peer who we can automate, for single-player mode Net.start_host() network_id = Net.get_network_id() + player = Player.instance() + player.connect("player_ready", self, "_on_player_ready") + add_child(player) + player.set_up_begin() + yield(self, "game_ready") + if Net.hosting: + state_fire() + +# state_fire: The firing state. Displays fire menu, then notifies opponent. +remote func state_fire(): + var pos = player.turn_start() + if pos is GDScriptFunctionState: + pos = yield(pos, "completed") + rpc("state_check", pos) + +# state_check: The checking state. Branches out to the other states. +# pos: Position which the opponent is trying to fire upon +remote func state_check(pos): + var res = player.hit(pos) + # Tell the opponent + Net.send(0, ["hit", res], Net.REPLY) + rpc("play_hit_sound", res) + match res: + LOST: + # the other player wins + rpc("state_win", player.board.ship_data) + victory_screen(null, false) + SUNK, HIT: + # Hit + rpc("state_fire") + MISS: + # Our turn to fire + state_fire() pass -# game_start: Runs on host. Controls the game. -func game_start(): - var state = "P1_fire" - # Make sure we're the server - while true: - match state: - "P1_fire": - # Tell local player to fire - - # Wait for result - - # Send fire REQUEST to P2 - pass - "P2_check": - # Wait for hit - var ret = yield(self, "hit") - # Record the hit - - # - pass - "P2_fire": - pass - "P1_check": - # Check if - pass - "P1_win": - pass - "P2_win": - pass +# state_win: The winning state. If you reach here, someone's won. +# ships: The opponent's ship data, so that their board can be shown +remote func state_win(ships): + victory_screen(ships) pass -func fire_on(id, pos:Vector2): - # REQUEST fire on opponent - Net.send(id, ["fire", pos], Net.REQUEST) - # Wait for REPLY +# play_hit_sound: Play a hit sound depending on the severity of the hit +# value: Lost/Sunk/Hit/Miss +sync func play_hit_sound(value): + match value: + LOST, SUNK: + AudioBus.emit_signal("ship_sunk") + HIT: + AudioBus.emit_signal("ship_hit") + MISS: + AudioBus.emit_signal("ship_missed") -func return_hit(id, ship_status): +# hit: Update the local player's board when the opponent fires +# pos: Opponent's target +func hit(pos): + pos = Vector2(pos[0], pos[1]) + var res = player.hit(pos) + return res - Net.send(id, ["hit", ship_status], Net.REPLY) - -func _on_win(): - pass +# mark: Update the local player's hit/miss board when opponent replies +func mark(res): + return player.mark(res) +# _on_Net_incoming: Handle mail. func _on_Net_incoming(mail): + print ("mail: ", mail, mail.size()) if mail.size() == 3: - var sender = mail[0] + print ("mail: ", mail, mail.size()) + var sender = int(mail[0]) var message = mail[1] - var mailtype = mail[2] + var mailtype = int(mail[2]) + printt(sender, message, mailtype) match mailtype: - # if message is a REQUEST (to perform an action) - Net.REQUEST: - match message[0]: - # Opponent asks for player.fire() - "fire": - emit_signal("fire", message[1]) - # Opponent asks for hit(pos) - "hit": - pass - _: - pass Net.REPLY: + print ("got REPLY") # message is a REPLY (return value) match message[0]: + # on "fire": fire(result) "fire": - emit_signal("hit", message[1]) - # Return value of + hit(message[1]) + # on "hit": mark(state) "hit": + mark(message[1]) + "forfeit": pass - pass Net.READY: + print ("got READY") # Add player to the ready array - players_ready.append(sender) - pass + player_ready(sender) + _: + print ("got ", mailtype) # _on_player_ready: Player Ready signal handler func _on_player_ready(): print ("_on_player_ready") - Net.send(1, [], Net.READY) + Net.send(0, [], Net.READY) + player_ready(Net.get_network_id()) # victory_screen: display the victory screen -func victory_screen(): - # TODO: Create the victory screen, fill it with knowledge - pass - -# display_turn: display which turn it is on the screen -func display_turn(): - # TODO: Update the turn display, if there is one? - pass +func victory_screen(ships, winner = true): + if winner: + # Hide the buttons + get_node("Bittons").hide() + # Create a new Victory screen + var victory = Victory.instance() + # Give it the ships received from the opponent + victory.reveal_ships(ships) + # Print a nice message to stdout + print("You won!") + # Add victory to the scene tree + add_child(victory) + else: + end() # _on_Forfeit_pressed: Handle forfeit button press func _on_Forfeit_pressed(): AudioBus.emit_signal("button_clicked") - get_node("ConfirmationDialog").popup() + get_node("Forfeit Confirmation").popup_centered() # end: end the Game -func end(): +sync func end(): queue_free() + +func connection_error(): + get_node("Connection Error").popup_centered() + # _on_Button_button_down: Handle win button press # TODO: This isn't a thing any more func _on_Button_button_down(): @@ -159,6 +192,13 @@ func _on_Button_button_down(): add_child(victory) victory.connect("exit_main", self, "end") -func _on_ConfirmationDialog_confirmed(): +func _on_Forfeit_Confirmation_confirmed(): + if Net.connected: + # Send forfeit request to all users + rpc("end") end() +func _on_Connection_Error_confirmed(): + # End the game + queue_free() + diff --git a/godot_ship/script/game/Gameplay/Player.gd b/godot_ship/script/game/Gameplay/Player.gd index 4fc6074..e3cb28e 100644 --- a/godot_ship/script/game/Gameplay/Player.gd +++ b/godot_ship/script/game/Gameplay/Player.gd @@ -12,15 +12,13 @@ var Setup = preload("res://scenes/Game/Setup.tscn") var Fire = preload("res://scenes/Game/Fire.tscn") # Members -var pid # Player ID var board # Board - -var fire_at_position # Position to fire at +var fire_pos = Vector2(-1,-1) +var target = Vector2(-1,-1) # Called when the node enters the scene tree for the first time. func _ready(): - # Set the player ID according to which network peer ID we are - pid = int(name) + pass func set_up_begin(): var setup = Setup.instance() @@ -32,22 +30,23 @@ func set_up_begin(): # hit: Called when opponent fires on us. # Update internal state, and return hit/miss/sunk func hit(pos): + target = pos var res = board.hit(pos) return res # mark: Called when the opponent returns hit/miss/sunk # Update internal state, return ack/nak -func mark(pos, value): +func mark(value): # Mark the position on the top board - board.fire(pos, value) + return board.fire(fire_pos, value) # place_ship: called when ships are placed. # forwards Ship locations to the Board, so that it may construct a ship # ship: a list of ship properties {position, orientation, size, variant} func place_ship(pos, size, orientation, variant): - board.place_ship(pos, size, orientation, variant) + return board.place_ship(pos, size, orientation, variant) -# setup: set up the board given the placed ship locations +# set_up: set up the board given the placed ship locations # Places each ship onto the board # ships: a list of lists of ship properties [[position, orientation, size, variant], ...] func set_up(ships): @@ -62,17 +61,22 @@ func set_up(ships): # Initiates the player's turn, and blocks until the player selects a location to fire upon # returns: fire = [player id, target coordinates] func turn_start(): - print("turn_start") var fire = Fire.instance() - + fire.hits = board.top_board add_child(fire) - var pos = yield(fire, "fire_at") - return pos + fire_pos = yield(fire, "fire_at") + fire.queue_free() + return fire_pos + # getBoard: returns the player's board # returns: board -func getBoard(): - return board +func board_query(boardname): + match boardname: + "top": + return board.query_top (fire_pos) + "bottom": + return board.quert_bottom (target) # forfeit: ends game for player # Sinks all ships @@ -86,7 +90,3 @@ func forfeit(): # getShipCount: get the number of ships the player has left alive func getShipCount(): return board.get_ship_count() - - -func _on_fire_at(pos): - fire_at_position = pos diff --git a/godot_ship/script/game/Gameplay/Ship.gd b/godot_ship/script/game/Gameplay/Ship.gd index bddc046..c154608 100644 --- a/godot_ship/script/game/Gameplay/Ship.gd +++ b/godot_ship/script/game/Gameplay/Ship.gd @@ -59,6 +59,8 @@ func hit(pos): # Sink the ship. set_sunk() res = SUNK + # Update graphics + update() return res # update: (re)calculates extents and textures diff --git a/godot_ship/script/game/Victory.gd b/godot_ship/script/game/Victory.gd index 5d95329..dcf0b43 100644 --- a/godot_ship/script/game/Victory.gd +++ b/godot_ship/script/game/Victory.gd @@ -1,15 +1,18 @@ extends Control -signal exit_main -# Declare member variables here. Examples: -# var a = 2 -# var b = "text" - +# Path to Board class, for instantiating new Boards in code +var Board = preload("res://scenes/Game/Board.tscn") # Called when the node enters the scene tree for the first time. func _ready(): pass # Replace with function body. +# Reveal a list of ships +func reveal_ships(ships:Array): + var board = Board.instance() + add_child(board); + for ship in ships: + board.callv("place_ship", ship) # Called every frame. 'delta' is the elapsed time since the previous frame. #func _process(delta): @@ -17,11 +20,11 @@ func _ready(): func _on_restart_button_down(): AudioBus.emit_signal("button_clicked") - #MessageBus.emit_signal("change_scene", "Multiplayer") - pass # Replace with function body. + MessageBus.emit_signal("change_scene", "Multiplayer") + MessageBus.emit_signal("kill_scene", "Game") + # returns player(s) back to main menu func _on_exit_to_main_button_down(): AudioBus.emit_signal("button_clicked") - #MessageBus.emit_signal("change_scene", "Title") - emit_signal("exit_main") + MessageBus.emit_signal("return_to_title") diff --git a/godot_ship/script/network/Lobby.gd b/godot_ship/script/network/Lobby.gd index 28f915b..6464d0e 100644 --- a/godot_ship/script/network/Lobby.gd +++ b/godot_ship/script/network/Lobby.gd @@ -1,8 +1,10 @@ extends Control # Ignore discarded return values -# warning-ignore:return_value_discarded +# warning-ignore-all:return_value_discarded onready var player_list = find_node("Player List") -onready var ip = find_node("IP Address") +onready var ip_address = find_node("IP Address") +onready var name_popup = find_node("Change Name") +onready var game_popup = find_node("Connect to Game") # TODO: Write a function to update Player List with the list of attached players @@ -17,28 +19,33 @@ func _on_peers_updated(): func set_IP_Address_text(show): # Print the IP address and port if show: - ip.text = "IP: %s\nPort: %s" % [Net.get_ip(), Net.DEFAULT_PORT] + ip_address.text = "IP: %s\nPort: %s" % [Net.get_ip(), Net.DEFAULT_PORT] else: - ip.text = "" + ip_address.text = "" func _ready(): Net.connect("peers_updated", self, "_on_peers_updated") Net.connect("disconnected", self, "_on_Net_disconnected") + name_popup.get_node("Name Entry").text = Net.get_hostname() _on_peers_updated() pass -func show_Connected_Options(show): - # Hide the host and connect buttons +func show_Connected_Options(show, host = false): + # [Hide]/Show the host options + get_node("Lobby Options/Connected Options/Host Options").visible = host + # [Hide]/Show the host and connect buttons get_node("Lobby Options/Host or Connect").visible = !show - # Show the host options + # [Show]/Hide the host options get_node("Lobby Options/Connected Options").visible = show # Buttons # Host Button: Host a game # Hides the connect button func _on_Host_Button_pressed(): + # Make noise + AudioBus.emit_signal("button_clicked") # Show "Connected Options" - show_Connected_Options(true) + show_Connected_Options(true, true) # Show the host IP address set_IP_Address_text(true) # Begin hosting @@ -48,6 +55,8 @@ func _on_Host_Button_pressed(): # Disconnect from (or stop hosting) a game # Shows the host/connect buttons func _on_Disconnect_Button_pressed(): + # Make noise + AudioBus.emit_signal("button_clicked") # Disconnect Net.disconnect_host() # Hide "Connected Options" @@ -55,6 +64,13 @@ func _on_Disconnect_Button_pressed(): # Hide the host IP address set_IP_Address_text(false) +func _on_Start_Game_pressed(): + # If there are enough players for a game + if Net.peer_info.size() >= 2: + # Start the game for all players + rpc("start_game") + pass # Replace with function body. + func _on_Net_disconnected(): # Hide "Connected Options" show_Connected_Options(false) @@ -62,28 +78,20 @@ func _on_Net_disconnected(): set_IP_Address_text(false) func _on_Change_Name_Button_pressed(): + # Make noise + AudioBus.emit_signal("button_clicked") # Show the Change Name dialogue get_node("Change Name").popup_centered() - pass func _on_Connect_Button_pressed(): + # Make noise + AudioBus.emit_signal("button_clicked") # Show the Connect to Game dialogue get_node("Connect to Game").popup_centered() - pass - -func _on_Connect_to_Game_confirmed(): - # Get the IP and port specified by the player - var ipbox = find_node("IP and Port Entry") - # Split it into IP and Port segments - var ip_port = ipbox.text.split(":") - # If text exists and contains valid IP address - if ip_port.size() > 0 and ip_port[0].is_valid_ip_address(): - # Connect to host - Net.callv("connect_host", ip_port) - # Show "Connected Options" - show_Connected_Options(true) func _on_Exit_Lobby_pressed(): + # Make noise + AudioBus.emit_signal("button_clicked") # Disconnect if Net.connected: Net.disconnect_host() @@ -92,6 +100,8 @@ func _on_Exit_Lobby_pressed(): func _on_IP_and_Port_Entry_text_entered(text): + # Make noise + AudioBus.emit_signal("button_clicked") # Split it into IP and Port segments var ip_port = text.split(":") # If text exists and contains valid IP address @@ -102,11 +112,21 @@ func _on_IP_and_Port_Entry_text_entered(text): # Show "Connected Options" show_Connected_Options(true) # Hide the popup - find_node("Connect to Game").hide() + game_popup.hide() func _on_Name_Entry_text_entered(text): - # Change the name - Net.change_name(text) - # Hide the popup - find_node("Change Name").hide() + # Make noise + AudioBus.emit_signal("button_clicked") + # Check the length of the name + if text.length() < 18: + # Change the name + Net.change_name(text) + # Hide the popup + name_popup.hide() + +sync func start_game(): + MessageBus.emit_signal("change_scene", "Gameplay") + queue_free() + + diff --git a/godot_ship/script/network/Net.gd b/godot_ship/script/network/Net.gd index 6b75b99..3eb3a7a 100644 --- a/godot_ship/script/network/Net.gd +++ b/godot_ship/script/network/Net.gd @@ -8,9 +8,11 @@ const LOCALHOST = "127.0.0.1" # Enums, used for mail types # Mail types: -# 1: REQUEST: Message is a request for information -# 0: REPLY: Message is a reply -enum {REPLY, REQUEST, READY, ACK} +# 0: REQUEST: Message is a request for information +# 1: REPLY: Message is a reply +# 2: READY: Message is "ready" +# 3: ACK: Message is an acknowledgement +enum {REQUEST, REPLY, READY, ACK} # Signals # incoming(mail): Sent when there's an incoming message @@ -36,6 +38,10 @@ var local_info = {"name": ""} # mail: The message received from the sender (implicitly JSON-decoded by JSONRPC) # mail_type: Type of mail (see "Mail Types" enum above) remote func receive(mail): + print_debug("recv: %s" % mail) + # Unpack the mail + # Uses json parser of unknown stability, how fun + mail = parse_json(mail) # Get the sender's ID and force letter to be properly addressed mail[0] = get_tree().get_rpc_sender_id() # Add the mail to the inbox (so it can be read back later if necessary @@ -48,6 +54,7 @@ remote func receive(mail): # mail: Variant of a json-encodable type (non-Object) to send # mail_type: Type of mail (see "Mail Types" enum above) func send(id, mail, mail_type = REPLY): + print_debug("send: %d, %s, %d" % [id, mail, mail_type]) # Make the recipient receive the mail rpc_id(id, "receive", to_json([-1, mail, mail_type])) @@ -81,7 +88,7 @@ func accept_guests(accept:bool): func connect_host(ip = LOCALHOST, port = DEFAULT_PORT): get_hostname() var peer = NetworkedMultiplayerENet.new() - var ret = peer.create_client(ip, port) + var ret = peer.create_client(ip, int(port)) get_tree().network_peer = peer return ret @@ -106,9 +113,10 @@ func disconnect_host(): func change_name(name): # Change name locally local_info["name"] = name - # Send updated info info to all peers - rpc("register_peer", local_info) - pass + # If connected, update peers + if connected: + # Send updated info info to all peers + rpc("register_peer", local_info) # Helper Functions # get_hostname: Asks the host machine to provide its hostname, @@ -130,7 +138,7 @@ func get_ip(): pass func _ready(): - var _trash + var _trash _trash = get_tree().connect("network_peer_connected", self, "_peer_connected" ) _trash = get_tree().connect("network_peer_disconnected", self, "_peer_disconnected") _trash = get_tree().connect("connected_to_server", self, "_host_connected" ) diff --git a/godot_ship/script/title screen/Title Screen.gd b/godot_ship/script/title screen/Title Screen.gd index 4111b75..0f0fbb8 100644 --- a/godot_ship/script/title screen/Title Screen.gd +++ b/godot_ship/script/title screen/Title Screen.gd @@ -12,7 +12,7 @@ func _ready(): func _on_Singleplayer_pressed(): AudioBus.emit_signal("button_clicked") - MessageBus.emit_signal("change_scene", "Singleplayer") + MessageBus.emit_signal("change_scene", "Gameplay") queue_free() func _on_Multiplayer_pressed():