argument('id')); $seed->status = 'generating'; $seed->error_detail = null; $seed->save(); $stage = 'initial'; try { $temp_dir = sys_get_temp_dir(); $params = array_merge(['seed' => $seed->seed], $seed->settings); $settings = http_build_query($params, '', '&'); $romFile = $temp_dir.'/'.$seed->hash.'.gba'; $spoilerFile = $temp_dir.'/'.$seed->hash.'.txt'; $stage = 'randomizing'; $proc = new Process([config('aos.cli'), config('aos.base_rom'), $romFile, $settings]); $proc->mustRun(); $stage = 'calculating patch'; $encoder = new Encoder(file_get_contents(config('aos.base_rom'))); $patch = $encoder->createPatch(file_get_contents($romFile)); Storage::disk('aos-seeds')->put($seed->hash.'.bps', $patch); unlink($romFile); $stage = 'saving spoiler'; Storage::disk('aos-spoilers')->put($seed->hash.'.txt', $proc->getOutput()); $stage = 'done'; $seed->status = 'generated'; $seed->save(); } catch (\Throwable $e) { $seed->status = 'error'; $seed->error_detail = [ 'stage' => $stage, 'type' => get_class($e), 'message' => $e->getMessage(), ]; $seed->save(); return 1; } return 0; } }