# CORE FRAMEWORK SOURCE FILE # Copyright (c) 2024 The StarOpenSource Project & Contributors # Licensed under the GNU Affero General Public License v3 # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . ## Contains various useful functions that do not fit into other modules. ## ## Contains various useful functions that you can use to save yourself some time ## programming or searching. extends CoreBaseModule func quit_safely(exitcode: int = 0) -> void: logger.infof("Misc", "Shutting down (code " + str(exitcode) + ")") logger.diagf("Misc", "Waiting for log messages to be flushed") await get_tree().create_timer(0.25).timeout get_tree().quit(exitcode) @warning_ignore("integer_division") func byte2mib(bytes: int, flatten: bool = true) -> float: if flatten: return bytes/1048576 return bytes/float(1048576) func mib2byte(mib: float, flatten: bool = true) -> float: if flatten: return int(mib*1048576) return mib*1048576 func mib2gib(mib: float, flatten: bool = true) -> float: if flatten: return int(mib/1024) return mib/1024 func gib2mib(gib: float, flatten: bool = true) -> float: if flatten: return int(gib*1024) return gib*1024