mirror of
				https://github.com/JohnBreaux/Boat-Battle.git
				synced 2025-02-04 12:28:35 +00:00 
			
		
		
		
	* 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>
		
			
				
	
	
		
			109 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			GDScript
		
	
	
	
	
	
			
		
		
	
	
			109 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			GDScript
		
	
	
	
	
	
| extends Control
 | |
| 
 | |
| # Scenes
 | |
| onready var Title_Screen = preload("res://scenes/Title Screen.tscn")
 | |
| onready var Game         = preload("res://scenes/Game/Game.tscn"   )
 | |
| onready var Options      = preload("res://scenes/Options.tscn"     )
 | |
| onready var Debug_Menu   = preload("res://scenes/Debug Menu.tscn"  )
 | |
| 
 | |
| # Themes
 | |
| var lightmode = preload("res://assets/backgrounds/Background_Light.png");
 | |
| var darkmode = preload("res://assets/backgrounds/Background_Dark.png");
 | |
| 
 | |
| #flags
 | |
| var power_saving = true
 | |
| var debug_enabled = true
 | |
| var start_fullscreen = false
 | |
| 
 | |
| # Called when the node enters the scene tree for the first time.
 | |
| func _ready():
 | |
| 	# Connect to signals
 | |
| 	var _errno = 0;
 | |
| 	_errno += MessageBus.connect("start_tcsn"     , self, "_on_scene_start_by_name")
 | |
| 	_errno += MessageBus.connect("change_scene"   , self, "_on_scene_start"        )
 | |
| 	_errno += MessageBus.connect("kill_scene"     , self, "_on_scene_kill"         )
 | |
| 	_errno += MessageBus.connect("list_scenes"    , self, "_on_scene_list"         )
 | |
| 	_errno += MessageBus.connect("quit"           , self, "_on_quit_request"       )
 | |
| 	_errno += MessageBus.connect("return_to_title", self, "_on_title_request"      )
 | |
| 	_errno += OptionsController.connect("change_theme", self, "_on_change_theme"   )
 | |
| 	# Set the theme based on the config file
 | |
| 	_on_change_theme(OptionsController.get_theme())
 | |
| 	# go fullscreen
 | |
| 	OS.low_processor_usage_mode = power_saving
 | |
| 	OS.low_processor_usage_mode_sleep_usec = 6800
 | |
| 	OS.window_fullscreen = start_fullscreen
 | |
| 	if debug_enabled:
 | |
| 		add_child(Debug_Menu.instance())
 | |
| 
 | |
| # Process global keybinds
 | |
| func _input(event):
 | |
| 	if event.is_action_pressed("ui_fullscreen"):
 | |
| 		# toggle_fullscreen
 | |
| 		OS.window_fullscreen = !OS.window_fullscreen
 | |
| 
 | |
| 
 | |
| # Ensure the scene doesn't become empty
 | |
| func _process(_delta):
 | |
| 	# Make sure there's something running
 | |
| 	# Background counts as one child
 | |
| 	# Debug counts as one child
 | |
| 	if get_child_count() < 2 + int(debug_enabled):
 | |
| 		MessageBus.emit_signal("change_scene", "Title")
 | |
| 		pass
 | |
| 
 | |
| # Creates a new instance of each menu scene
 | |
| func _on_scene_start(scene):
 | |
| 	var instance
 | |
| 	#print ("_on_scene_start(",scene,")")
 | |
| 	match scene:
 | |
| 		"Singleplayer": 
 | |
| 			instance = Game.instance()
 | |
| 			add_child (instance)
 | |
| 			return true
 | |
| 		"Multiplayer": 
 | |
| 			instance = Game.instance()
 | |
| 			instance.is_multiplayer = true
 | |
| 			add_child (instance)
 | |
| 			return true
 | |
| 		"Options": 
 | |
| 			instance = Options.instance()
 | |
| 			add_child (instance)
 | |
| 			return true
 | |
| 		"Title": 
 | |
| 			instance = Title_Screen.instance()
 | |
| 			add_child (instance)
 | |
| 			return true
 | |
| 
 | |
| func _on_scene_start_by_name(scene):
 | |
| 	var pack = load("res://scenes/" + scene + ".tscn");
 | |
| 	add_child(pack.instance());
 | |
| 
 | |
| # Kills all child nodes with name matching `scene`
 | |
| func _on_scene_kill(scene):
 | |
| 	var node = find_node(scene, false, false)
 | |
| 	if node :
 | |
| 		node.queue_free()
 | |
| 		MessageBus.emit_signal("print_console", String(node.name) + " killed.\n".c_unescape())
 | |
| 
 | |
| func _on_scene_list():
 | |
| 	var children = get_children()
 | |
| 	var names = []
 | |
| 	for i in range (children.size()):
 | |
| 		names.append(children[i].name)
 | |
| 	MessageBus.emit_signal("print_console", String(names) + "\n".c_unescape())
 | |
| 
 | |
| 
 | |
| # Quits
 | |
| func _on_quit_request():
 | |
| 	get_tree().quit()
 | |
| 
 | |
| # Kills the current tree and replaces it with a new one
 | |
| func _on_title_request():
 | |
| 	return get_tree().change_scene("res://scenes/Main.tscn")
 | |
| 	
 | |
| func _on_change_theme(theme):
 | |
| 	if theme == "light":
 | |
| 		get_node("Background").set_texture(lightmode)
 | |
| 	elif theme == "dark":
 | |
| 		get_node("Background").set_texture(darkmode)
 |