summaryrefslogtreecommitdiff
path: root/addons/escoria-core/game/core-scripts/utils
diff options
context:
space:
mode:
authorRadio <radiohotline@disroot.org>2026-06-04 15:15:11 +0300
committerRadio <radiohotline@disroot.org>2026-06-04 15:15:11 +0300
commit9d74b49ab62908d4acf53dde444413886b8b28e5 (patch)
tree0cb785267ea7e239b19d88684c0d64b9bd5d52f0 /addons/escoria-core/game/core-scripts/utils
parent2c85d452ad02a5f89cd43bad7f9de31d0e4fa0c1 (diff)
escoria setup and old branch archives
Diffstat (limited to 'addons/escoria-core/game/core-scripts/utils')
-rw-r--r--addons/escoria-core/game/core-scripts/utils/esc_utils.gd95
-rw-r--r--addons/escoria-core/game/core-scripts/utils/esc_utils.gd.uid1
2 files changed, 96 insertions, 0 deletions
diff --git a/addons/escoria-core/game/core-scripts/utils/esc_utils.gd b/addons/escoria-core/game/core-scripts/utils/esc_utils.gd
new file mode 100644
index 0000000..14e4246
--- /dev/null
+++ b/addons/escoria-core/game/core-scripts/utils/esc_utils.gd
@@ -0,0 +1,95 @@
+## A set of common utilities.
+extends RefCounted
+class_name ESCUtils
+
+## Convert radians to degrees.[br]
+## [br]
+## #### Parameters[br]
+## [br]
+## | Name | Type | Description | Required? |[br]
+## |:-----|:-----|:------------|:----------|[br]
+## |rad_angle|`float`|Angle in radians.|yes|[br]
+## [br]
+## #### Returns[br]
+## [br]
+## Returns nothing.
+static func get_deg_from_rad(rad_angle: float):
+ var deg = rad_to_deg(rad_angle)
+ if deg >= 360.0:
+ deg = clamp(deg, 0.0, 360.0)
+ if deg == 360.0:
+ deg = 0.0
+ return deg
+
+## Get the content of a reg exp group by name.[br]
+## [br]
+## #### Parameters[br]
+## [br]
+## | Name | Type | Description | Required? |[br]
+## |:-----|:-----|:------------|:----------|[br]
+## |re_match|`RegExMatch`|The RegExMatch object.|yes|[br]
+## |group|`String`|The name of the group.|yes|[br]
+## [br]
+## #### Returns[br]
+## [br]
+## Returns a `String` value. (`String`)
+static func get_re_group(re_match: RegExMatch, group: String) -> String:
+ if group in re_match.names:
+ return re_match.strings[re_match.names[group]]
+ else:
+ return ""
+
+## Return a string value in the correct inferred type.[br]
+## [br]
+## #### Parameters[br]
+## [br]
+## | Name | Type | Description | Required? |[br]
+## |:-----|:-----|:------------|:----------|[br]
+## |value|`String`|The original value.|yes|[br]
+## |type_hint|`Variant`|The type it should be.|no|[br]
+## [br]
+## #### Returns[br]
+## [br]
+## Returns nothing.
+static func get_typed_value(value: String, type_hint = []):
+ var regex_bool = RegEx.new()
+ regex_bool.compile("^true|false$")
+ var regex_float = RegEx.new()
+ regex_float.compile("^-?[0-9]*\\.[0-9]+$")
+ var regex_int = RegEx.new()
+ regex_int.compile("^-?[0-9]+$")
+
+ if regex_float.search(value):
+ return float(value)
+ elif regex_int.search(value):
+ return int(value)
+ elif regex_bool.search(value.to_lower()):
+ return true if value.to_lower() == "true" else false
+ elif (typeof(type_hint) != TYPE_ARRAY and type_hint == TYPE_ARRAY) or \
+ (typeof(type_hint) == TYPE_ARRAY and TYPE_ARRAY in type_hint) \
+ and "," in value:
+ return value.split(",")
+ else:
+ return str(value)
+
+## Sanitize use of whitespaces in a string. Removes double whitespaces and converts tabs into space.[br]
+## [br]
+## #### Parameters[br]
+## [br]
+## | Name | Type | Description | Required? |[br]
+## |:-----|:-----|:------------|:----------|[br]
+## |value|`String`|String to work on.|yes|[br]
+## [br]
+## #### Returns[br]
+## [br]
+## Returns a `String` value. (`String`)
+static func sanitize_whitespace(value: String) -> String:
+ var tab_regex = RegEx.new()
+ tab_regex.compile("\\t")
+ var double_regex = RegEx.new()
+ double_regex.compile("\\s\\s+")
+ return double_regex.sub(
+ tab_regex.sub(value, " "),
+ " ",
+ true
+ )
diff --git a/addons/escoria-core/game/core-scripts/utils/esc_utils.gd.uid b/addons/escoria-core/game/core-scripts/utils/esc_utils.gd.uid
new file mode 100644
index 0000000..90b5870
--- /dev/null
+++ b/addons/escoria-core/game/core-scripts/utils/esc_utils.gd.uid
@@ -0,0 +1 @@
+uid://baatkfocvpgnr