X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=app%2FModels%2FAosSeed.php;h=f1a3d4a38e36ed223dfe1dde3f62868d42bee79a;hb=e2af94795e9d8e8a2eb8c272201b4e54ebb130f0;hp=18633b7a471ce65a0be0d1e02f28bea0d20e4629;hpb=ca90048a9fb2d8c3c65d81096ecd36bbf7c51ff5;p=alttp.git diff --git a/app/Models/AosSeed.php b/app/Models/AosSeed.php index 18633b7..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,15 +27,52 @@ 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); } protected $casts = [ + 'error_detail' => 'array', 'mystery' => 'boolean', 'race' => 'boolean', 'settings' => 'array',