aboutsummaryrefslogtreecommitdiff
path: root/game/src/Game/Autoload/Events.gd
diff options
context:
space:
mode:
author Spartan322 <Megacake1234@gmail.com>2023-07-06 22:28:55 +0200
committer Spartan322 <Megacake1234@gmail.com>2023-07-09 01:24:10 +0200
commit86bee7b44c7cc7adaef8cdf441667a99223dd98a (patch)
tree5004d04dbe607dedf273afdee7dff783f4d980ed /game/src/Game/Autoload/Events.gd
parent5838c2508682bc3f6e35e44056f9ba229bca4571 (diff)
Add GameLoader Autoload to handle global loading data
Remove GameDebug, Localization, and ShaderManager from Events.gd Renamed OptionsSingleton class_name to OptionsEventsObject Add Events.Loader to handle Loader events (which are global signals) Make GameDebug singleton with static functions and property Make Localization functions static Move ShaderManager variable to GameLoader Move Events._define_filepaths_dict to GameLoader.define_filepaths_dict Move game initialization from LoadingScreen.gd and Events.gd to GameStart.gd Attach GameStart.gd to GameStart.tscn root Make LoadingScreen generalized and so it is reusable Remove class_name from LoaderingScreen.gd
Diffstat (limited to 'game/src/Game/Autoload/Events.gd')
-rw-r--r--game/src/Game/Autoload/Events.gd61
1 files changed, 8 insertions, 53 deletions
diff --git a/game/src/Game/Autoload/Events.gd b/game/src/Game/Autoload/Events.gd
index f979301..da12bf6 100644
--- a/game/src/Game/Autoload/Events.gd
+++ b/game/src/Game/Autoload/Events.gd
@@ -1,56 +1,11 @@
+## Events are exclusively for the purpose of handling global signals
+## This is to reduce "signal bubbling" which is when a signal callback is used to "bubble" the signal callbacks up the scene tree.
+## It does such by providing a global interface of signals that are connected to and emitted by that are garunteed to exist.
extends Node
-var GameDebug: GameDebugSingleton
-var Options: OptionsSingleton
-var Localisation: LocalisationSingleton
-var ShaderManager: ShaderManagerSingleton
+var Loader: LoaderEventsObject
+var Options: OptionsEventsObject
-var _define_filepaths_dict : Dictionary = {
- GameSingleton.get_province_identifier_file_key(): "res://common/map/provinces.json",
- GameSingleton.get_water_province_file_key(): "res://common/map/water.json",
- GameSingleton.get_region_file_key(): "res://common/map/regions.json",
- GameSingleton.get_terrain_variant_file_key(): "res://common/map/terrain.json",
- GameSingleton.get_terrain_texture_dir_key(): "res://art/terrain/",
- GameSingleton.get_province_image_file_key(): "res://common/map/provinces.png",
- GameSingleton.get_terrain_image_file_key(): "res://common/map/terrain.png",
- GameSingleton.get_goods_file_key(): "res://common/goods.json",
- GameSingleton.get_good_icons_dir_key(): "res://art/economy/goods"
-}
-
-# REQUIREMENTS
-# * FS-333, FS-334, FS-335, FS-341
-func load_events(loading_screen: LoadingScreen):
- GameSingleton.setup_logger()
- loading_screen.update_loading_screen(5)
-
- # Set this to your Vic2 install dir or a mod's dir to enable compatibility mode
- # (this won't work for mods which rely on vanilla map assets, copy missing assets
- # into the mod's dir for a temporary fix)
- # Usage: OpenVic --compatibility-mode <path>
-
- var compatibility_mode_path : String = ArgumentParser.get_argument(&"compatibility-mode")
-
- var start := Time.get_ticks_usec()
-
- GameDebug = GameDebugSingleton.new()
- loading_screen.update_loading_screen(15)
- Options = OptionsSingleton.new()
- loading_screen.update_loading_screen(25)
- Localisation = LocalisationSingleton.new()
- loading_screen.update_loading_screen(45)
- ShaderManager = ShaderManagerSingleton.new()
- loading_screen.update_loading_screen(50, true)
-
- if compatibility_mode_path:
- if GameSingleton.load_defines_compatibility_mode(compatibility_mode_path) != OK:
- push_error("Errors loading game defines!")
- else:
- if GameSingleton.load_defines(_define_filepaths_dict) != OK:
- push_error("Errors loading game defines!")
-
- loading_screen.update_loading_screen(100)
- var end := Time.get_ticks_usec()
- print("Loading took ", float(end - start) / 1000000, " seconds")
-
- # change scene in a thread-safe way
- get_tree().call_deferred("change_scene_to_file", "res://src/Game/GameMenu.tscn")
+func _init():
+ Loader = LoaderEventsObject.new()
+ Options = OptionsEventsObject.new()