pokepurple/addons/twitcher/eventsub/twitch_eventsub_config.gd

48 lines
1.5 KiB
GDScript3
Raw Normal View History

@tool
extends Resource
## Defines howto subscribe to a eventsub subscription.
class_name TwitchEventsubConfig
static var _log: TwitchLogger = TwitchLogger.new("TwitchEventsubConfig")
## What do you want to subscribe
@export var type: TwitchEventsubDefinition.Type:
set = _update_type
## How do you want to subscribe defined by `definition conditions`.
@export var condition: Dictionary = {}
var definition: TwitchEventsubDefinition:
get(): return TwitchEventsubDefinition.ALL[type]
## Send from the server to identify the subscription for unsubscribing
var id: String
## Called when type changed
signal type_changed(new_type: TwitchEventsubDefinition.Type)
static func create(definition: TwitchEventsubDefinition, conditions: Dictionary) -> TwitchEventsubConfig:
var config = TwitchEventsubConfig.new()
config.type = definition.type
config.condition = conditions
for condition_name: StringName in definition.conditions:
if not conditions.has(condition_name):
_log.w("You miss probably following condition %s" % condition_name)
return config
func _update_type(val: TwitchEventsubDefinition.Type) -> void:
if type != val:
type = val
var definition: TwitchEventsubDefinition = TwitchEventsubDefinition.ALL[type]
var new_condition: Dictionary = {}
for condition_key: StringName in definition.conditions:
new_condition[condition_key] = condition.get(condition_key, "")
condition = new_condition
type_changed.emit(val)
func _to_string() -> String:
return "%s" % definition.get_readable_name()