2021-11-13 10:34:39 +00:00
|
|
|
extends Control
|
|
|
|
|
|
|
|
signal game_ready
|
|
|
|
|
|
|
|
onready var Ships = ["2Ship", "3ShipA", "3ShipB", "4Ship", "5Ship"]
|
|
|
|
|
2021-11-14 06:34:51 +00:00
|
|
|
onready var Victory = preload("res://scenes/Game/Player.tscn")
|
|
|
|
|
2021-11-14 08:50:39 +00:00
|
|
|
var light_theme = load("res://light_theme.tres")
|
|
|
|
var dark_theme = load("res://dark_theme.tres")
|
|
|
|
|
2021-11-13 10:34:39 +00:00
|
|
|
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()
|
2021-11-14 08:50:39 +00:00
|
|
|
|
|
|
|
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())
|
2021-11-13 10:34:39 +00:00
|
|
|
|
|
|
|
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.
|
2021-11-14 08:50:39 +00:00
|
|
|
|
|
|
|
func _on_change_theme(theme):
|
|
|
|
if theme == "light":
|
|
|
|
self.set_theme(light_theme)
|
|
|
|
elif theme == "dark":
|
|
|
|
self.set_theme(dark_theme)
|