function setRules() { $rules = $this->request->getPostStrict('rules'); $scriptRules = $this->request->getPost('scriptRules', array()); list(, , $system) = $this->fetchAndAssertConfig(_('setting game options')); $gameInfos = GameInfos::fromArray($rules); $gameInfos->chatTime *= isset($rules['chatTime']) ? 1000 : 1; $gameInfos->finishTimeout = $gameInfos->finishTimeout < 0 ? 1 : (isset($rules['finishTimeout']) ? $gameInfos->finishTimeout * 1000 : $gameInfos->finishTimeout); $gameInfos->timeAttackLimit = $gameInfos->timeAttackLimit < 0 ? 1 : (isset($rules['timeAttackLimit']) ? $gameInfos->timeAttackLimit * 1000 : $gameInfos->timeAttackLimit); $gameInfos->timeAttackSynchStartPeriod *= isset($rules['timeAttackSynchStartPeriod']) ? 1000 : 1; $gameInfos->lapsTimeLimit = $gameInfos->lapsTimeLimit < 0 ? 1 : (isset($rules['lapsTimeLimit']) ? $gameInfos->lapsTimeLimit * 1000 : $gameInfos->lapsTimeLimit); $defaultRules = array(); if ($gameInfos->gameMode == GameInfos::GAMEMODE_SCRIPT && $gameInfos->scriptName) { $service = new \DedicatedManager\Services\ScriptService(); $defaultRules = $service->getFileMatchRules($system->title, $gameInfos->scriptName); if (isset($scriptRules[$gameInfos->scriptName])) { foreach ($scriptRules[$gameInfos->scriptName] as $name => $value) { $defaultRules[$name]->default = $value; } } } $this->session->set('gameInfos', $gameInfos); $this->session->set('scriptSettings', $defaultRules); $service = new \DedicatedManager\Services\MatchSettingsFileService(); if ($errors = $service->validate($gameInfos)) { $this->session->set('error', $errors); $this->request->redirectArgList('../rules'); } $this->request->redirectArgList('../maps'); }