mirror of
https://github.com/JohnBreaux/Boat-Battle.git
synced 2024-11-15 05:25:57 +00:00
06b8711a08
* 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>
59 lines
2.3 KiB
GDScript
59 lines
2.3 KiB
GDScript
extends Sprite
|
|
|
|
|
|
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):
|
|
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 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
|
|
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)
|
|
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 board = world_to_board_space(vector)
|
|
# Checks if the board position is within bounds of the board
|
|
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:
|
|
# 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 - 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) + world_offset #Invert the above function
|
|
return res #Truncate decimals
|