mirror of
https://github.com/JHDev2006/Super-Mario-Bros.-Remastered-Public.git
synced 2025-10-22 15:38:14 +00:00
added the game
This commit is contained in:
82
addons/mod_loader/resources/mod_config.gd
Normal file
82
addons/mod_loader/resources/mod_config.gd
Normal file
@@ -0,0 +1,82 @@
|
||||
class_name ModConfig
|
||||
extends Resource
|
||||
##
|
||||
## This Class is used to represent a configuration for a mod.[br]
|
||||
## The Class provides functionality to initialize, validate, save, and remove a mod's configuration.
|
||||
##
|
||||
## @tutorial(Creating a Mod Config Schema with JSON-Schemas): https://wiki.godotmodding.com/guides/modding/config_json/
|
||||
|
||||
|
||||
const LOG_NAME := "ModLoader:ModConfig"
|
||||
|
||||
## Name of the config - must be unique
|
||||
var name: String
|
||||
## The mod_id this config belongs to
|
||||
var mod_id: String
|
||||
## The JSON-Schema this config uses for validation
|
||||
var schema: Dictionary
|
||||
## The data this config holds
|
||||
var data: Dictionary
|
||||
## The path where the JSON file for this config is stored
|
||||
var save_path: String
|
||||
## False if any data is invalid
|
||||
var valid := false
|
||||
|
||||
|
||||
func _init(_mod_id: String, _data: Dictionary, _save_path: String, _schema: Dictionary = {}) -> void:
|
||||
name = _ModLoaderPath.get_file_name_from_path(_save_path, true, true)
|
||||
mod_id = _mod_id
|
||||
schema = ModLoaderStore.mod_data[_mod_id].manifest.config_schema if _schema.is_empty() else _schema
|
||||
data = _data
|
||||
save_path = _save_path
|
||||
|
||||
var error_message := validate()
|
||||
|
||||
if not error_message == "":
|
||||
ModLoaderLog.error("Mod Config for mod \"%s\" failed JSON Schema Validation with error message: \"%s\"" % [mod_id, error_message], LOG_NAME)
|
||||
return
|
||||
|
||||
valid = true
|
||||
|
||||
|
||||
func get_data_as_string() -> String:
|
||||
return JSON.stringify(data)
|
||||
|
||||
|
||||
func get_schema_as_string() -> String:
|
||||
return JSON.stringify(schema)
|
||||
|
||||
|
||||
# Empty string if validation was successful
|
||||
func validate() -> String:
|
||||
var json_schema := JSONSchema.new()
|
||||
var error := json_schema.validate(get_data_as_string(), get_schema_as_string())
|
||||
|
||||
if error.is_empty():
|
||||
valid = true
|
||||
else:
|
||||
valid = false
|
||||
|
||||
return error
|
||||
|
||||
|
||||
# Runs the JSON-Schema validation and returns true if valid
|
||||
func is_valid() -> bool:
|
||||
if validate() == "":
|
||||
valid = true
|
||||
return true
|
||||
|
||||
valid = false
|
||||
return false
|
||||
|
||||
|
||||
## Saves the config data to the config file
|
||||
func save_to_file() -> bool:
|
||||
var is_success := _ModLoaderFile.save_dictionary_to_json_file(data, save_path)
|
||||
return is_success
|
||||
|
||||
|
||||
## Removes the config file
|
||||
func remove_file() -> bool:
|
||||
var is_success := _ModLoaderFile.remove_file(save_path)
|
||||
return is_success
|
Reference in New Issue
Block a user