]> git.localhorst.tv Git - alttp.git/blobdiff - app/Models/AosSeed.php
wait for seed generation before posting message
[alttp.git] / app / Models / AosSeed.php
index b0b1ee743669f76ca722091ab56eeeca99b47921..f1a3d4a38e36ed223dfe1dde3f62868d42bee79a 100644 (file)
@@ -2,10 +2,15 @@
 
 namespace App\Models;
 
-use App\Jobs\GenerateAosSeed;
+use App\DiscordAppCommands\AosrPresetCommand;
+use Discord\Discord;
+use Discord\Parts\Embed\Embed;
+use Discord\Parts\Embed\Field;
+use Discord\Parts\Embed\Footer;
 use Illuminate\Database\Eloquent\Factories\HasFactory;
 use Illuminate\Database\Eloquent\Model;
 use Illuminate\Support\Str;
+use React\ChildProcess\Process;
 
 class AosSeed extends Model
 {
@@ -22,10 +27,46 @@ class AosSeed extends Model
                $seed->settings = $settings;
                $seed->status = 'pending';
                $seed->save();
-               GenerateAosSeed::dispatch($seed)->onConnection('database');
                return $seed;
        }
 
+       public function createProcess() {
+               return new Process('php artisan aos:generate '.intval($this->id), base_path());
+       }
+
+       public function createEmbed(Discord $discord) {
+               $preset = AosrPresetCommand::$presets[$this->preset];
+
+               $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 ]),
+               ];
+
+               if (!$this->race) {
+                       $fields[] = new Field($discord, [ 'name' => 'Seed', 'value' => $this->seed, 'inline' => true ]);
+               }
+
+               if (!$this->mystery) {
+                       $fields[] = new Field($discord, [ 'name' => 'Logic', 'value' => $this->settings['logic'], 'inline' => true ]);
+                       $fields[] = new Field($discord, [ 'name' => 'Area', 'value' => $this->settings['area'], 'inline' => true ]);
+                       $fields[] = new Field($discord, [ 'name' => 'Boss', 'value' => $this->settings['boss'], 'inline' => true ]);
+                       $fields[] = new Field($discord, [ 'name' => 'Enemy', 'value' => $this->settings['enemy'], 'inline' => true ]);
+               }
+
+               $fields[] = new Field($discord, [ 'name' => 'Permalink', 'value' => $this->permalink ]);
+
+               return new Embed($discord, [
+                       'fields' => $fields,
+                       'footer' => new Footer($discord, [
+                               'text' => 'GrĂ¼n',
+                       ]),
+                       'timestamp' => now(),
+                       'title' => 'AoSRando Seed',
+                       'type' => 'rich',
+                       'url' => $this->permalink,
+               ]);
+       }
+
        public function getPermalinkAttribute() {
                return config('aos.url').'/h/'.rawurlencode($this->hash);
        }