init
This commit is contained in:
commit
b99855351d
434 changed files with 50357 additions and 0 deletions
63
addons/inkgd/runtime/extra/string_set.gd
Normal file
63
addons/inkgd/runtime/extra/string_set.gd
Normal file
|
@ -0,0 +1,63 @@
|
|||
# ############################################################################ #
|
||||
# Copyright © 2015-2021 inkle Ltd.
|
||||
# Copyright © 2019-2022 Frédéric Maquin <fred@ephread.com>
|
||||
# All Rights Reserved
|
||||
#
|
||||
# This file is part of inkgd.
|
||||
# inkgd is licensed under the terms of the MIT license.
|
||||
# ############################################################################ #
|
||||
|
||||
# Using an dictionary as the backing structure for a not-too-bad, super-simple
|
||||
# set. The Ink runtime doesn't use C#'s HashSet full potential, so this trick
|
||||
# should be good enough for the use-case.
|
||||
|
||||
# This simple set is designed to hold Strings only.
|
||||
|
||||
extends RefCounted
|
||||
|
||||
class_name InkStringSet
|
||||
|
||||
# ############################################################################ #
|
||||
# Self-reference
|
||||
# ############################################################################ #
|
||||
|
||||
static func InkStringSet() -> GDScript:
|
||||
return load("res://addons/inkgd/runtime/extra/string_set.gd") as GDScript
|
||||
|
||||
# ############################################################################ #
|
||||
|
||||
var _dictionary: Dictionary = {}
|
||||
|
||||
# ############################################################################ #
|
||||
|
||||
func clear() -> void:
|
||||
_dictionary.clear()
|
||||
|
||||
func duplicate() -> InkStringSet:
|
||||
var set = InkStringSet().new()
|
||||
set._dictionary = _dictionary.duplicate()
|
||||
return set
|
||||
|
||||
func enumerate() -> Array:
|
||||
return _dictionary.keys()
|
||||
|
||||
func is_empty() -> bool:
|
||||
return _dictionary.is_empty()
|
||||
|
||||
func contains(element: String) -> bool:
|
||||
return _dictionary.has(element)
|
||||
|
||||
func contains_all(elements: Array) -> bool:
|
||||
return _dictionary.has_all(elements)
|
||||
|
||||
func size() -> int:
|
||||
return _dictionary.size()
|
||||
|
||||
func to_array() -> Array:
|
||||
return _dictionary.keys()
|
||||
|
||||
func append(value: String) -> void:
|
||||
_dictionary[value] = null
|
||||
|
||||
func erase(value: String) -> bool:
|
||||
return _dictionary.erase(value)
|
Loading…
Add table
Add a link
Reference in a new issue