]> git.localhorst.tv Git - alttp.git/blobdiff - app/DiscordAppCommands/AosrPresetCommand.php
wait for seed generation before posting message
[alttp.git] / app / DiscordAppCommands / AosrPresetCommand.php
index 6c694caf26677a4c980ef06d046f6f7387788003..9a537db8006452ed349a99cc7a1fec099746d856 100644 (file)
@@ -5,9 +5,6 @@ namespace App\DiscordAppCommands;
 use App\Models\AosSeed;
 use Discord\Builders\MessageBuilder;
 use Discord\Discord;
-use Discord\Parts\Embed\Embed;
-use Discord\Parts\Embed\Field;
-use Discord\Parts\Embed\Footer;
 use Discord\Parts\Interactions\Interaction;
 
 class AosrPresetCommand {
@@ -65,41 +62,33 @@ class AosrPresetCommand {
                                $presetName = $interaction->data->options['preset']->options['preset']->value;
                                $race =  isset($interaction->data->options['preset']->options['race'])
                                        ? $interaction->data->options['preset']->options['race']->value : false;
-                               $message = MessageBuilder::new();
                                if (isset(static::$presets[$presetName])) {
                                        $preset = static::$presets[$presetName];
                                        $seed = AosSeed::generateSurge($presetName, $preset['settings'], $race);
 
-                                       $embed = new Embed($discord, [
-                                               'fields' => [
-                                                       new Field($discord, [ 'name' => 'Generator', 'value' => 'This seed has been generated with fusecv\'s randomizer on aosrando.surge.sh.' ]),
-                                                       new Field($discord, [ 'name' => 'Preset', 'value' => $preset['name'], 'inline' => true ]),
-                                                       new Field($discord, [ 'name' => 'Seed', 'value' => $race ? 'secret' : $seed->seed, 'inline' => true ]),
-                                                       new Field($discord, [ 'name' => 'Logic', 'value' => $preset['settings']['logic'], 'inline' => true ]),
-                                                       new Field($discord, [ 'name' => 'Area', 'value' => $preset['settings']['area'], 'inline' => true ]),
-                                                       new Field($discord, [ 'name' => 'Boss', 'value' => $preset['settings']['boss'], 'inline' => true ]),
-                                                       new Field($discord, [ 'name' => 'Enemy', 'value' => $preset['settings']['enemy'], 'inline' => true ]),
-                                                       new Field($discord, [ 'name' => 'Permalink', 'value' => $seed->permalink ]),
-                                               ],
-                                               'footer' => new Footer($discord, [
-                                                       'text' => 'GrĂ¼n',
-                                               ]),
-                                               'timestamp' => now(),
-                                               'title' => 'AoSRando Seed',
-                                               'type' => 'rich',
-                                               'url' => $seed->permalink,
-                                       ]);
-                                       $message->addEmbed($embed);
+                                       $process = $seed->createProcess();
+                                       $process->on('exit', function() use ($discord, $interaction, $seed) {
+                                               $seed = $seed->fresh();
+
+                                               $embed = $seed->createEmbed($discord);
+                                               $message = MessageBuilder::new();
+                                               $message->addEmbed($embed);
+
+                                               $interaction->updateOriginalResponse($message);
+                                       });
+
+                                       $process->start($discord->getLoop());
                                } else {
+                                       $message = MessageBuilder::new();
                                        $message->setContent('unknown preset '.$presetName);
+                                       $interaction->updateOriginalResponse($message);
                                }
-                               $interaction->updateOriginalResponse($message);
                        });
                        return true;
                });
        }
 
-       private static $presets = [
+       public static $presets = [
                'Normal' => [
                        'name' => 'Normal',
                        'value' => 'Normal',