mirror of
https://github.com/JohnBreaux/Boat-Battle.git
synced 2025-02-04 12:28:35 +00:00
Game logic (#14)
* Create game classes * Pushing what I've done of the game logic. * Commented my code Deals with ship placement on board and ship rotation on board * Comment game logic code, and edit for style. * Added Clear board button and Confirm Placement button * Fix up some stuff * Pass * I accidentally the buttons + Fix some hitbox mistakes. * Improve hitbox leniency, and don't allow ships to rotate into each other. * Fixed Dialog Box that pops up for Confirm Placement * Update Gameplay.tscn * 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. * Crosshair now snaps into place * Created Sprites for 2Ship and 3ShipA * Created Sprite for Ship3B * Created Sprite for Ship4 * Created Sprite for Ship5 * Created Sprite for "Hit" * Created Sprites for Ship2 Destroyed and Ship3A Destroyed * Created Sprite for Ship3B Destroyed * Created Sprite for Ship4 Destroyed * Created Sprite for Ship5 Destroyed * Created Sprite for "Miss" * Fixed blurry pixel art Changed texture rendering * Added temporary title screen text * Major restructuring to better support object-oriented design of the main game logic and UI. This was necessary, I swear. * Accidentally offset the Setup menu by a handful of pixels. Whoops. * Setup: remove unused signal * Comment on which parts of Game are only there for testing purposes. * Fixed up the Title Screen text imported font * Fixed Crosshair pixel rendering * Consolidate backgrounds * Added more SFX sounds * Created Sprite for Light Mode * Fix null deref when entering singleplayer after exiting multiplayer * Hien's work * Revert "Hien's work" This reverts commitf099ed6c80. * Stuff * Make git happy by pushing gdengine imports * Put Background in main * Removed option background * Added Confirmation Dialog for Forfeit * Revert "Merge branch 'game-logic' of https://github.com/StatewideInk/Group12 into game-logic" This reverts commit104ffaab0a, reversing changes made to63dec75688. * Fix title screen never going (whoops * Oops I made the background invisible * removed option background again * Added dark/light mode functionality * Added signal for audio SFX * Load the theme on startup * Added Confirmation dialog for Forfeit * Fixed Texture Rendering for Light Mode Background * Sounds no longer scale linearly * Remove unused resourse main.tres * 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. * restart button is invisible Co-authored-by: John Breaux <JohnBreaux@my.unt.edu> Co-authored-by: JohnBreaux <89870642+JohnBreaux@users.noreply.github.com> Co-authored-by: hpham474 <HienPham@my.unt.edu> Co-authored-by: Chance Atkinson <chancewatkinson@gmail.com>
This commit is contained in:
46
godot_ship/scenes/Game/Fire.tscn
Normal file
46
godot_ship/scenes/Game/Fire.tscn
Normal file
@@ -0,0 +1,46 @@
|
||||
[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
|
||||
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"]
|
||||
50
godot_ship/scenes/Game/Game.tscn
Normal file
50
godot_ship/scenes/Game/Game.tscn
Normal file
@@ -0,0 +1,50 @@
|
||||
[gd_scene load_steps=2 format=2]
|
||||
|
||||
[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="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"
|
||||
|
||||
[node name="ConfirmationDialog" type="ConfirmationDialog" parent="."]
|
||||
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"]
|
||||
[connection signal="confirmed" from="ConfirmationDialog" to="." method="_on_ConfirmationDialog_confirmed"]
|
||||
8
godot_ship/scenes/Game/Player.tscn
Normal file
8
godot_ship/scenes/Game/Player.tscn
Normal file
@@ -0,0 +1,8 @@
|
||||
[gd_scene format=2]
|
||||
|
||||
[node name="Player" type="Control"]
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
108
godot_ship/scenes/Game/Setup.tscn
Normal file
108
godot_ship/scenes/Game/Setup.tscn
Normal file
@@ -0,0 +1,108 @@
|
||||
[gd_scene load_steps=8 format=2]
|
||||
|
||||
[ext_resource path="res://assets/game/board_blue.png" type="Texture" id=1]
|
||||
[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="Setup" type="Control"]
|
||||
anchor_top = 0.00123732
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 0.890237
|
||||
margin_top = -0.445435
|
||||
margin_bottom = 39.5145
|
||||
mouse_filter = 2
|
||||
script = ExtResource( 10 )
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="board_blue" type="Sprite" parent="."]
|
||||
position = Vector2( 18, 18 )
|
||||
texture = ExtResource( 1 )
|
||||
centered = false
|
||||
__meta__ = {
|
||||
"_edit_lock_": true
|
||||
}
|
||||
|
||||
[node name="ConfirmationDialog" type="ConfirmationDialog" parent="."]
|
||||
margin_left = 199.156
|
||||
margin_top = 155.6
|
||||
margin_right = 458.156
|
||||
margin_bottom = 225.6
|
||||
rect_min_size = Vector2( 150, 52.5 )
|
||||
window_title = "Are you sure you'd like to forfeit?"
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[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( 5 )]
|
||||
position = Vector2( 429.236, 124.21 )
|
||||
collision_layer = 3
|
||||
contacts_reported = 1
|
||||
contact_monitor = true
|
||||
|
||||
[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( 6 )]
|
||||
position = Vector2( 491.911, 217.599 )
|
||||
collision_layer = 3
|
||||
contacts_reported = 1
|
||||
contact_monitor = true
|
||||
|
||||
[node name="5Ship" parent="." instance=ExtResource( 7 )]
|
||||
position = Vector2( 557.096, 213.864 )
|
||||
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="PlaceShipDialog" 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="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"]
|
||||
51
godot_ship/scenes/Game/Victory.tscn
Normal file
51
godot_ship/scenes/Game/Victory.tscn
Normal file
@@ -0,0 +1,51 @@
|
||||
[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="."]
|
||||
visible = false
|
||||
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"]
|
||||
Reference in New Issue
Block a user