def convert(array: {str: str}): path: {str: str} = {} def loop_inner(a: {str: str}, p: str): # array, path for i in a: if isinstance(a[i], dict): loop_inner(a[i], p + str(i) + ".") else: path[p + str(i)] = a[i] loop_inner(array, "") BetterLogger(name="lang_converter").log_deep_debug("Converted", array) BetterLogger(name="lang_converter").log_deep_debug("to", path) return path
class _SaveManager(EventDispatcher, BetterLogger): tick_logger = BetterLogger(name="SaveManager_tick() | ") save_clock: ClockEvent = None _game_data_updaters: list[callable] = list() def __init__(self): EventDispatcher.__init__(self) BetterLogger.__init__(self, name="SaveManager") def setup(self): pass def start_clock(self): self.save_clock = Clock.schedule_interval(lambda _elapsed_time: self.tick(), userSettings.getint("time_between_save")) self.log_info("Clock started") def end_clock(self): self.save_clock.cancel() self.tick() self.log_info("Clock stopped") def tick(self): t = Thread(target=self._tick) self.log_deep_debug("Created thread -", t, " Starting now") self.tick_logger.__log_name_suffix__ = str(t.getName()) t.start() def _tick(self): logger = self.tick_logger logger.log_debug("Getting info to save for gameData") for updater in self._game_data_updaters: updater() logger.log_debug("Getting info to save for userSettings") logger.log_info("Saving...") gameData.save() userSettings.save() logger.log_info("Saved") def register_update_game_data_function(self, function: callable): self._game_data_updaters.append(function) self.log_deep_debug("Registered save function -", function) def un_register_update_game_data_function(self, function: callable): self._game_data_updaters.remove(function) self.log_deep_debug("Unregistered save function -", function)
os.environ["KCFG_KIVY_WINDOW_ICON"] = AppInfo.window_icon_path # noinspection PyUnresolvedReferences import kivy # noinspection PyUnresolvedReferences import kivy3 # noinspection PyUnresolvedReferences import kivy.core.window # Fixes sigsegv error when loading images because openGL was not initiated-https://github.com/kivy/kivy/issues/6173 from kivy.logger import Logger Logger.info("Base: Kivy module fully loaded") from lib.betterLogger import redo_logger_formatting, BetterLogger redo_logger_formatting() Logger.info("Base: Kivy logger overwritten") base_logger: BetterLogger = BetterLogger(name="Base") """ from resources import Resources, setup setup() Resources.load_all() Logger.info("Base: resources setup and loaded")""" from lib.saveManager import SaveManager SaveManager.setup() base_logger.log_info("SaveManager setup") import graphics graphics.setup()
def get_sm() -> APP_NAME_ScreenManager: BetterLogger().log_deep_debug("get_sm(): Returning screen manager") return App.get_running_app().root.current
def get_sm() -> SpaceBuilderMergeGameScreenManager: BetterLogger().log_deep_debug("get_sm(): Returning screen manager") return App.get_running_app().root.current
from __future__ import annotations from typing import TYPE_CHECKING if TYPE_CHECKING: pass from lib.betterLogger import BetterLogger logger = BetterLogger(name="GlobalEvents") class GlobalEvents: bindings: dict[str, list] = {} @classmethod def bind(cls, **kwargs): for event_name, function in kwargs.items(): cls.check_binding(event_name) cls.bindings[event_name].append(function) logger.log_debug(function, "was bound to event '", event_name, "'") @classmethod def register(cls, event_name: str): cls.bindings[event_name] = list() logger.log_debug("Event '", event_name, "' has been created") @classmethod def dispatch(cls, event_name: str, *args, **kwargs): cls.check_binding(event_name)