1
0
mirror of https://github.com/JohnBreaux/Boat-Battle.git synced 2024-11-15 05:25:57 +00:00

Improve menuing, and convert ships to RigidBody2D for accurate positioning.

This commit is contained in:
John 2021-10-21 01:24:27 -05:00
parent e9040293ae
commit 0fd0fa63f0
14 changed files with 153 additions and 58 deletions

View File

@ -1,14 +1,13 @@
[gd_scene load_steps=10 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://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/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://script/game/Gameplay.gd" type="Script" id=3]
[ext_resource path="res://assets/game/2longShipS.png" type="Texture" id=4] [ext_resource path="res://scenes/ships/2Ship.tscn" type="PackedScene" id=4]
[ext_resource path="res://assets/game/5longShipS.png" type="Texture" id=5] [ext_resource path="res://scenes/ships/5Ship.tscn" type="PackedScene" id=5]
[ext_resource path="res://assets/game/3longShipBS.png" type="Texture" id=6] [ext_resource path="res://scenes/ships/3ShipB.tscn" type="PackedScene" id=6]
[ext_resource path="res://assets/game/4longShipS.png" type="Texture" id=7] [ext_resource path="res://scenes/ships/3shipA.tscn" type="PackedScene" id=7]
[ext_resource path="res://assets/game/3longShipAS.png" type="Texture" id=8] [ext_resource path="res://scenes/ships/4Ship.tscn" type="PackedScene" id=8]
[ext_resource path="res://script/game/moveShip.gd" type="Script" id=9]
[node name="Game" type="Control"] [node name="Game" type="Control"]
anchor_right = 1.0 anchor_right = 1.0
@ -23,8 +22,9 @@ __meta__ = {
} }
[node name="board_blue" type="Sprite" parent="."] [node name="board_blue" type="Sprite" parent="."]
position = Vector2( 187, 178 ) position = Vector2( 18, 18 )
texture = ExtResource( 1 ) texture = ExtResource( 1 )
centered = false
[node name="Title-Screen-Background" type="Sprite" parent="."] [node name="Title-Screen-Background" type="Sprite" parent="."]
show_behind_parent = true show_behind_parent = true
@ -63,30 +63,20 @@ __meta__ = {
"_edit_use_anchors_": false "_edit_use_anchors_": false
} }
[node name="2longShipS" type="Sprite" parent="."] [node name="2Ship" parent="." instance=ExtResource( 4 )]
position = Vector2( 600.784, 51.419 ) position = Vector2( 529.802, 70.7151 )
texture = ExtResource( 4 )
script = ExtResource( 9 )
[node name="3longShipAS" type="Sprite" parent="."] [node name="3ShipA" parent="." instance=ExtResource( 7 )]
position = Vector2( 599.524, 261.826 ) position = Vector2( 434.236, 114.21 )
texture = ExtResource( 8 )
script = ExtResource( 9 )
[node name="3longShipBS" type="Sprite" parent="."] [node name="3ShipB" parent="." instance=ExtResource( 6 )]
position = Vector2( 600.784, 146.543 ) position = Vector2( 443.216, 266.865 )
texture = ExtResource( 6 )
script = ExtResource( 9 )
[node name="4longShipS" type="Sprite" parent="."] [node name="4Ship" parent="." instance=ExtResource( 8 )]
position = Vector2( 543.458, 253.006 ) position = Vector2( 522.911, 218.599 )
texture = ExtResource( 7 )
script = ExtResource( 9 )
[node name="5longShipS" type="Sprite" parent="."] [node name="5Ship" parent="." instance=ExtResource( 5 )]
position = Vector2( 541.568, 89.2166 ) position = Vector2( 607.096, 211.864 )
texture = ExtResource( 5 )
script = ExtResource( 9 )
[connection signal="pressed" from="VBoxContainer/Forfeit" to="." method="_on_Forfeit_pressed"] [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="about_to_show" from="ConfirmationDialog" to="." method="_on_ConfirmationDialog_about_to_show"]

View File

@ -0,0 +1,20 @@
[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]
[sub_resource type="RectangleShape2D" id=1]
extents = Vector2( 16, 32 )
[node name="2Ship" type="RigidBody2D"]
input_pickable = true
custom_integrator = true
script = ExtResource( 1 )
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
position = Vector2( 0, 16 )
shape = SubResource( 1 )
[node name="2longShipS" type="Sprite" parent="."]
position = Vector2( 0, 16 )
texture = ExtResource( 2 )

View File

@ -0,0 +1,18 @@
[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/3longShipBS.png" type="Texture" id=2]
[sub_resource type="RectangleShape2D" id=1]
extents = Vector2( 16, 48 )
[node name="3ShipB" type="RigidBody2D"]
input_pickable = true
custom_integrator = true
script = ExtResource( 1 )
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
shape = SubResource( 1 )
[node name="3longShipBS" type="Sprite" parent="."]
texture = ExtResource( 2 )

View File

@ -0,0 +1,18 @@
[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]
[sub_resource type="RectangleShape2D" id=1]
extents = Vector2( 16, 48 )
[node name="3ShipA" type="RigidBody2D"]
input_pickable = true
custom_integrator = true
script = ExtResource( 1 )
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
shape = SubResource( 1 )
[node name="3longShipAS" type="Sprite" parent="."]
texture = ExtResource( 2 )

View File

@ -0,0 +1,20 @@
[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/4longShipS.png" type="Texture" id=2]
[sub_resource type="RectangleShape2D" id=1]
extents = Vector2( 16, 64 )
[node name="4Ship" type="RigidBody2D"]
input_pickable = true
custom_integrator = true
script = ExtResource( 1 )
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
position = Vector2( 0, 16 )
shape = SubResource( 1 )
[node name="4longShipS" type="Sprite" parent="."]
position = Vector2( 0, 16 )
texture = ExtResource( 2 )

View File

@ -0,0 +1,18 @@
[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/5longShipS.png" type="Texture" id=2]
[sub_resource type="RectangleShape2D" id=1]
extents = Vector2( 16, 80 )
[node name="5Ship" type="RigidBody2D"]
input_pickable = true
custom_integrator = true
script = ExtResource( 1 )
[node name="5longShipS" type="Sprite" parent="."]
texture = ExtResource( 2 )
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
shape = SubResource( 1 )

View File

@ -1,9 +1,4 @@
extends LineEdit extends LineEdit
# Declare member variables here. Examples:
# var a = 2
# var b = "text"
func _on_Debug_clear_in(): func _on_Debug_clear_in():
clear() clear()

View File

@ -3,7 +3,7 @@ extends TextEdit
# Called when the node enters the scene tree for the first time. # Called when the node enters the scene tree for the first time.
func _ready(): func _ready():
var _errno = MessageBus.connect("print_console", self, "_on_Debug_print_text") var _errno = MessageBus.connect("print_console", self, "_on_Debug_print_text")
pass # Replace with function body. grab_focus()
func _on_Debug_print_text(text): func _on_Debug_print_text(text):

View File

@ -48,7 +48,7 @@ func _input(event):
# open debug menu # open debug menu
debug_active = !debug_active; debug_active = !debug_active;
# Hand the keyboard focus to the next valid focus # Hand the keyboard focus to the next valid focus
if (!debug_active): find_next_valid_focus().grab_focus() if (!debug_active) && find_next_valid_focus(): find_next_valid_focus().grab_focus()
func _on_LineEdit_text_entered(line): func _on_LineEdit_text_entered(line):
emit_signal("clear_in") emit_signal("clear_in")

View File

@ -8,6 +8,7 @@ extends Control
# Called when the node enters the scene tree for the first time. # Called when the node enters the scene tree for the first time.
func _ready(): func _ready():
grab_focus()
pass # Replace with function body. pass # Replace with function body.
# Called every frame. 'delta' is the elapsed time since the previous frame. # Called every frame. 'delta' is the elapsed time since the previous frame.
@ -17,3 +18,4 @@ func _ready():
func _on_Forfeit_pressed(): func _on_Forfeit_pressed():
queue_free(); queue_free();
MessageBus.emit_signal("change_scene", "Title")

View File

@ -25,7 +25,14 @@ func _ready():
debug_menu = preload("res://scenes/Debug Menu.tscn") debug_menu = preload("res://scenes/Debug Menu.tscn")
if debug_enabled: if debug_enabled:
add_child(debug_menu.instance()) add_child(debug_menu.instance())
_on_scene_start("Title")
# Ensure the scene doesn't become empty
func _process(_delta):
# Make sure there's something running
# Debug counts as one child
if get_child_count() < 1 + int(debug_enabled):
MessageBus.emit_signal("change_scene", "Title")
pass
# Creates a new instance of each menu scene # Creates a new instance of each menu scene
func _on_scene_start(scene): func _on_scene_start(scene):

View File

@ -1,29 +1,30 @@
extends Sprite extends RigidBody2D
# Declare member variables here. Examples: # Declare member variables here. Examples:
# var a = 2 # var a = 2
# var b = "text" # var b = "text"
var held = false
# Called when the node enters the scene tree for the first time. # Called when the node enters the scene tree for the first time.
func _ready(): func _ready():
pass # Replace with function body. pass # Replace with function body.
var dragging = false;
var click_radius = 32 var click_radius = 32
var orient = 0; var orient = 0;
func _input(event): func _input(event):
if event is InputEventMouseButton and event.button_index == BUTTON_LEFT: if event is InputEventMouseButton and event.button_index == BUTTON_LEFT:
if(event.position - position).length() < click_radius: if (event.position - position).length() < click_radius:
if not dragging and event.pressed: if not held and event.pressed:
dragging = true; held = true;
if dragging and not event.pressed: if held and not event.pressed:
dragging = false; held = false;
position = position.snapped(Vector2(32, 32)) + Vector2(2, 2)
if event is InputEventMouseMotion and dragging: if event is InputEventMouseMotion and held:
position = event.position; position = event.position;
if event.is_action_pressed("ui_rotate"): if event.is_action_pressed("ui_rotate"):
@ -32,3 +33,15 @@ func _input(event):
# Called every frame. 'delta' is the elapsed time since the previous frame. # Called every frame. 'delta' is the elapsed time since the previous frame.
#func _process(delta): #func _process(delta):
# pass # pass
func pickup():
if held:
return
mode = RigidBody2D.MODE_STATIC
held = true
func drop(impulse=Vector2.ZERO):
if held:
mode = RigidBody2D.MODE_RIGID
apply_central_impulse(impulse)
held = false

View File

@ -1,19 +1,10 @@
extends Control 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. # Called when the node enters the scene tree for the first time.
func _ready(): func _ready():
pass # Replace with function body. find_next_valid_focus().grab_focus()
# Called every frame. 'delta' is the elapsed time since the previous frame.
#func _process(delta):
# pass
func _on_Button_pressed(): func _on_Button_pressed():
queue_free() queue_free()
MessageBus.emit_signal("change_scene", "Title")

View File

@ -6,17 +6,20 @@ extends Control
# Called when the node enters the scene tree for the first time. # Called when the node enters the scene tree for the first time.
func _ready(): func _ready():
#$VBoxContainer/Singleplayer.grab_focus() $VBoxContainer/Singleplayer.grab_focus()
pass
func _on_Singleplayer_pressed(): func _on_Singleplayer_pressed():
MessageBus.emit_signal("change_scene", "Singleplayer") MessageBus.emit_signal("change_scene", "Singleplayer")
queue_free()
func _on_Multiplayer_pressed(): func _on_Multiplayer_pressed():
MessageBus.emit_signal("change_scene", "Multiplayer") MessageBus.emit_signal("change_scene", "Multiplayer")
queue_free()
func _on_Options_pressed(): func _on_Options_pressed():
MessageBus.emit_signal("change_scene", "Options") MessageBus.emit_signal("change_scene", "Options")
queue_free()
func _on_Quit_pressed(): func _on_Quit_pressed():
MessageBus.emit_signal("quit") MessageBus.emit_signal("quit")
queue_free()