extends Resource class_name MajorityJudgmentParticipant """ Citizens of the world, unite! """ export(String) var name:String setget set_name, get_name static func make(__name): var participant = load("res://addons/majority_judgment/MajorityJudgmentParticipant.gd").new() participant.set_name(__name) return participant func set_name(__name:String) -> void: __name = sanitize_name(__name) if "" == __name: printerr("Participant name is empty!") name = __name static func sanitize_name(__name:String) -> String: var invalid = RegEx.new() # Allow unicode letters and numbers only, with . and _ and - invalid.compile("[^\\p{L}\\p{N}._-]+") __name = invalid.sub(__name, '', true) __name = __name.substr(0, min(__name.length(), 20)) return __name func get_name() -> String: if null == name: return 'Anonymous' return name