1
0
mirror of https://github.com/JohnBreaux/Boat-Battle.git synced 2024-11-15 05:25:57 +00:00
Boat-Battle/godot_ship/script/options/OptionsController.gd
tommy-l-ngo 06b8711a08
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 commit f099ed6c80.

* 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 commit 104ffaab0a, reversing
changes made to 63dec75688.

* 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>
2021-11-14 00:43:05 -06:00

78 lines
2.0 KiB
GDScript

extends Node
# signals
# Subscribe to these if you want to be notified about changes to the volume
signal change_theme (theme)
# Option variables
var f = File.new()
var options_file = "user://options.save"
var theme = "dark"
var mas_vol = linear2db(1)
var mus_vol = linear2db(1)
var sfx_vol = linear2db(1)
func _ready():
load_options()
# Setters
func set_theme(theme_name):
match theme_name:
"dark","light":
theme = String(theme_name)
save_options()
emit_signal("change_theme", theme)
save_options()
func set_vol(volume, type):
if type == "mas_vol":
mas_vol = volume
AudioServer.set_bus_volume_db(AudioServer.get_bus_index("Master"), mas_vol)
elif type == "mus_vol":
mus_vol = volume
AudioServer.set_bus_volume_db(AudioServer.get_bus_index("BGM"), mus_vol)
elif type == "sfx_vol":
sfx_vol = volume
AudioServer.set_bus_volume_db(AudioServer.get_bus_index("SFX"), sfx_vol)
save_options()
#func set_mas_vol(volume):
# mas_vol = volume
# AudioServer.set_bus_volume_db(AudioServer.get_bus_index("Master"), mas_vol)
#func set_mus_vol(volume):
# mus_vol = volume
# AudioServer.set_bus_volume_db(AudioServer.get_bus_index("BGM"), mus_vol)
#func set_sfx_vol(volume):
# sfx_vol = volume
# AudioServer.set_bus_volume_db(AudioServer.get_bus_index("SFX"), sfx_vol)
#Option Save File
func save_options():
f.open(options_file, File.WRITE)
f.store_var(theme)
f.store_var(mas_vol)
f.store_var(mus_vol)
f.store_var(sfx_vol)
f.close()
func load_options():
if f.file_exists(options_file):
f.open(options_file, File.READ)
theme = f.get_var()
mas_vol = f.get_var()
mus_vol = f.get_var()
sfx_vol = f.get_var()
f.close()
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)
# Getters
func get_theme():
return theme
func get_mas_volume():
return mas_vol
func get_mus_volume():
return mus_vol
func get_sfx_volume():
return sfx_vol