refactor ai
This commit is contained in:
1 parent
5a67d3cc6f
commit
a322980f79
9 files changed
+159
-184
No files matched your search
@@ -45,13 +45,13 @@ class KaTrainBase:
|
||||
|
||||
"""Settings, logging, and players functionality, so other classes like bots who need a katrain instance can be used without a GUI"""
|
||||
|
||||
def __init__(self, **kwargs):
|
||||
self.debug_level = 0
|
||||
def __init__(self, force_package_config=False,debug_level=0, **kwargs):
|
||||
self.debug_level = debug_level
|
||||
self.game = None
|
||||
|
||||
self.logger = lambda message, level=OUTPUT_INFO: self.log(message, level)
|
||||
self.config_file = self._load_config()
|
||||
self.debug_level = self.config("general/debug_level", OUTPUT_INFO)
|
||||
self.config_file = self._load_config(force_package_config=force_package_config)
|
||||
self.debug_level = debug_level or self.config("general/debug_level", OUTPUT_INFO)
|
||||
|
||||
Config.set("kivy", "log_level", "error")
|
||||
if self.debug_level >= OUTPUT_DEBUG:
|
||||
@@ -68,37 +68,40 @@ class KaTrainBase:
|
||||
elif self.debug_level >= level:
|
||||
print(message)
|
||||
|
||||
def _load_config(self):
|
||||
def _load_config(self,force_package_config):
|
||||
if len(sys.argv) > 1 and sys.argv[1].endswith(".json"):
|
||||
config_file = os.path.abspath(sys.argv[1])
|
||||
self.log(f"Using command line config file {config_file}", OUTPUT_INFO)
|
||||
else:
|
||||
user_config_file = find_package_resource(self.USER_CONFIG_FILE)
|
||||
package_config_file = find_package_resource(self.PACKAGE_CONFIG_FILE)
|
||||
try:
|
||||
if not os.path.exists(user_config_file):
|
||||
os.makedirs(os.path.split(user_config_file)[0], exist_ok=True)
|
||||
shutil.copyfile(package_config_file, user_config_file)
|
||||
config_file = user_config_file
|
||||
self.log(f"Copied package config to local file {config_file}", OUTPUT_INFO)
|
||||
else: # user file exists
|
||||
version = JsonStore(user_config_file, indent=4).get("general")["version"]
|
||||
if version < CONFIG_MIN_VERSION:
|
||||
backup = user_config_file + f".{version}.backup"
|
||||
shutil.copyfile(user_config_file, backup)
|
||||
shutil.copyfile(package_config_file, user_config_file)
|
||||
self.log(
|
||||
f"Copied package config file to {user_config_file} as user file is outdated (<{CONFIG_MIN_VERSION}). Old version stored as {backup}",
|
||||
OUTPUT_INFO,
|
||||
)
|
||||
config_file = user_config_file
|
||||
self.log(f"Using user config file {config_file}", OUTPUT_INFO)
|
||||
except Exception as e:
|
||||
if force_package_config:
|
||||
config_file = package_config_file
|
||||
self.log(
|
||||
f"Using package config file {config_file} (exception {e} occurred when finding or creating user config)",
|
||||
OUTPUT_INFO,
|
||||
)
|
||||
else:
|
||||
try:
|
||||
if not os.path.exists(user_config_file):
|
||||
os.makedirs(os.path.split(user_config_file)[0], exist_ok=True)
|
||||
shutil.copyfile(package_config_file, user_config_file)
|
||||
config_file = user_config_file
|
||||
self.log(f"Copied package config to local file {config_file}", OUTPUT_INFO)
|
||||
else: # user file exists
|
||||
version = JsonStore(user_config_file, indent=4).get("general")["version"]
|
||||
if version < CONFIG_MIN_VERSION:
|
||||
backup = user_config_file + f".{version}.backup"
|
||||
shutil.copyfile(user_config_file, backup)
|
||||
shutil.copyfile(package_config_file, user_config_file)
|
||||
self.log(
|
||||
f"Copied package config file to {user_config_file} as user file is outdated (<{CONFIG_MIN_VERSION}). Old version stored as {backup}",
|
||||
OUTPUT_INFO,
|
||||
)
|
||||
config_file = user_config_file
|
||||
self.log(f"Using user config file {config_file}", OUTPUT_INFO)
|
||||
except Exception as e:
|
||||
config_file = package_config_file
|
||||
self.log(
|
||||
f"Using package config file {config_file} (exception {e} occurred when finding or creating user config)",
|
||||
OUTPUT_INFO,
|
||||
)
|
||||
try:
|
||||
self._config_store = JsonStore(config_file, indent=4)
|
||||
except Exception as e:
|
||||
|
||||
Reference in new issue
Block a user