init commit
This commit is contained in:
67
addons/nklbdev.importality/setting.gd
Normal file
67
addons/nklbdev.importality/setting.gd
Normal file
@@ -0,0 +1,67 @@
|
||||
@tool
|
||||
extends RefCounted
|
||||
|
||||
const _Result = preload("result.gd").Class
|
||||
|
||||
var __editor_settings: EditorSettings
|
||||
|
||||
var __name: StringName
|
||||
var __initial_value: Variant
|
||||
var __type: Variant.Type
|
||||
var __hint: PropertyHint
|
||||
var __hint_string: String
|
||||
var __is_required: bool
|
||||
var __is_value_empty_func: Callable
|
||||
|
||||
func __default_is_value_empty_func(value: Variant) -> bool:
|
||||
if value: return false
|
||||
return true
|
||||
|
||||
func _init(
|
||||
name: String,
|
||||
initial_value: Variant,
|
||||
type: int,
|
||||
hint: int,
|
||||
hint_string: String = "",
|
||||
is_required: bool = false,
|
||||
is_value_empty_func: Callable = __default_is_value_empty_func
|
||||
) -> void:
|
||||
__name = "importality/" + name
|
||||
__initial_value = initial_value
|
||||
__type = type
|
||||
__hint = hint
|
||||
__hint_string = hint_string
|
||||
__is_required = is_required
|
||||
__is_value_empty_func = is_value_empty_func
|
||||
|
||||
func register(editor_settings: EditorSettings) -> void:
|
||||
__editor_settings = editor_settings
|
||||
if not __editor_settings.has_setting(__name):
|
||||
__editor_settings.set_setting(__name, __initial_value)
|
||||
__editor_settings.set_initial_value(__name, __initial_value, false)
|
||||
var property_info: Dictionary = {
|
||||
"name": __name,
|
||||
"type": __type,
|
||||
"hint": __hint, }
|
||||
if __hint_string:
|
||||
property_info["hint_string"] = __hint_string
|
||||
__editor_settings.add_property_info(property_info)
|
||||
|
||||
class GettingValueResult:
|
||||
extends _Result
|
||||
var value: Variant
|
||||
func success(value: Variant) -> void:
|
||||
_success()
|
||||
self.value = value
|
||||
|
||||
func get_value() -> GettingValueResult:
|
||||
var result = GettingValueResult.new()
|
||||
var value = __editor_settings.get_setting(__name)
|
||||
if __is_required:
|
||||
if __is_value_empty_func.call(value):
|
||||
result.fail(ERR_UNCONFIGURED,
|
||||
"The project settging \"%s\" is not specified!" % [__name] + \
|
||||
"Specify it in Projest Settings -> General -> Importality.")
|
||||
return result
|
||||
result.success(value)
|
||||
return result
|
||||
Reference in New Issue
Block a user