public async Task <SerializableValue> Execute(PluginExecuteContext context) { var description = new MessageIntegration.Content(); foreach (var(name, value) in context.StringParameters) { switch (name.ConvertToString(context.Language)) { case "Title": if (value is IStringConverter stringTitle) { description.Title = stringTitle; } else { throw new NotSupportedException($"Unable to create input: title {value} is not string value"); } break; case "Default": if (value is IStringConverter stringDefault) { description.Default = stringDefault; } else { throw new NotSupportedException($"Unable to create input: default {value} is not string value"); } break; case "ButtonText": if (value is IStringConverter stringButton) { description.ButtonText = stringButton; } else { throw new NotSupportedException($"Unable to create input: button text {value} is not string value"); } break; default: Debug.LogWarning($"Input plugin: unknown parameter {name}"); break; } } var message = await MessageService.ProcessAsync(ContextMessage <MessageIntegration.Content> .Create(MessageIntegration.Mask, MessageIntegration.CreateInput, description, context)); return(message is Message <string> stringMessage ? new StringValue { value = stringMessage.Content } : null); }
public async Task <SerializableValue> Execute(PluginExecuteContext context) { var dialogue = new MessageIntegration.Content(); foreach (var(name, value) in context.StringParameters) { switch (name.ConvertToString(context.Language)) { case "Show": await ShowWindow(value, context.Language); return(new NullValue()); case "Hide": await HideWindow(value, context.Language); return(new NullValue()); case "Character": dialogue.Character = value; break; case "Content": if (value is IStringConverter stringContent) { dialogue.Text = stringContent; } else { throw new ArgumentException($"Unable to create dialogue: unsupported content type {value}"); } break; } } await MessageService.ProcessAsync(ContextMessage <MessageIntegration.Content> .Create(MessageIntegration.Mask, MessageIntegration.NewDialogue, dialogue, context)); return(new NullValue()); }