X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=app%2FModels%2FAosSeed.php;h=f1a3d4a38e36ed223dfe1dde3f62868d42bee79a;hb=47033726a69270d991a496b433163b176ba58e71;hp=b0b1ee743669f76ca722091ab56eeeca99b47921;hpb=0a4af7267374d1a750ed07e9c4b491fea42490af;p=alttp.git diff --git a/app/Models/AosSeed.php b/app/Models/AosSeed.php index b0b1ee7..f1a3d4a 100644 --- a/app/Models/AosSeed.php +++ b/app/Models/AosSeed.php @@ -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); }