feat,refac: 게임 로직 내 '랜덤'을 RandUtil을 활용하여 재설정
- 기존의 랜덤 코드는 deprecated 처리 - 서버 시작 시 랜덤하게 정해진 hiddenSeed를 활용 - 랜덤 생성 단위 - 월 실행 - 사령턴 실행 결과 - 커맨드 실행 결과 - 작위 보상 - 부대장 생성 - 유니크 획득 시도 - 설문 조사 - 장수 생성 - NPC국 생성, NPC 생성, NPC의 토너먼트 베팅 - 전투 - 도시 점령 - 자율 행동 선택 - 랜덤 턴 변경 - 거래장, 토너먼트 등 구 랜덤 코드를 이용하는 잔여 코드 있음
This commit is contained in:
+12
-4
@@ -6,6 +6,8 @@ use sammo\Scenario\GeneralBuilder;
|
||||
class Scenario{
|
||||
const SCENARIO_PATH = __DIR__.'/../scenario';
|
||||
|
||||
private readonly RandUtil $rng;
|
||||
|
||||
private $scenarioIdx;
|
||||
private $scenarioPath;
|
||||
|
||||
@@ -70,6 +72,7 @@ class Scenario{
|
||||
$this->tmpGeneralQueue[$name] = $rawGeneral;
|
||||
|
||||
$obj = (new Scenario\GeneralBuilder(
|
||||
$this->rng,
|
||||
$name,
|
||||
false,
|
||||
$picturePath,
|
||||
@@ -106,7 +109,7 @@ class Scenario{
|
||||
'month'=>0 //포인트
|
||||
];
|
||||
|
||||
$neutralNation = new Scenario\Nation(0, '재야', '#000000', 0, 0);
|
||||
$neutralNation = new Scenario\Nation($this->rng, 0, '재야', '#000000', 0, 0);
|
||||
$this->nations = [];
|
||||
$this->nations[0] = $neutralNation;
|
||||
$this->nationsInv = [$neutralNation->getName() => $neutralNation];
|
||||
@@ -117,6 +120,7 @@ class Scenario{
|
||||
|
||||
|
||||
$nation = new Scenario\Nation(
|
||||
$this->rng,
|
||||
$nationID,
|
||||
$name,
|
||||
$color,
|
||||
@@ -162,7 +166,7 @@ class Scenario{
|
||||
'month'=>0 //포인트
|
||||
];
|
||||
|
||||
$neutralNation = new Scenario\Nation(0, '재야', '#000000', 0, 0);
|
||||
$neutralNation = new Scenario\Nation($this->rng, 0, '재야', '#000000', 0, 0);
|
||||
$this->nations = [];
|
||||
$this->nations[0] = $neutralNation;
|
||||
$this->nationsInv = [$neutralNation->getName() => $neutralNation];
|
||||
@@ -173,6 +177,7 @@ class Scenario{
|
||||
|
||||
|
||||
$nation = new Scenario\Nation(
|
||||
$this->rng,
|
||||
$nationID,
|
||||
$name,
|
||||
$color,
|
||||
@@ -263,7 +268,8 @@ class Scenario{
|
||||
return $this->gameConf;
|
||||
}
|
||||
|
||||
public function __construct(int $scenarioIdx, bool $lazyInit = true){
|
||||
public function __construct(RandUtil $rng, int $scenarioIdx, bool $lazyInit = true){
|
||||
$this->rng = $rng;
|
||||
$scenarioPath = self::SCENARIO_PATH."/scenario_{$scenarioIdx}.json";
|
||||
|
||||
$this->scenarioIdx = $scenarioIdx;
|
||||
@@ -577,6 +583,8 @@ class Scenario{
|
||||
public static function getAllScenarios(){
|
||||
$result = [];
|
||||
|
||||
$rng = new RandUtil(new LiteHashDRBG(random_bytes(16)));
|
||||
|
||||
foreach(glob(self::SCENARIO_PATH.'/scenario_*.json') as $scenarioPath){
|
||||
$scenarioName = pathinfo(basename($scenarioPath), PATHINFO_FILENAME);
|
||||
$scenarioIdx = Util::array_last(explode('_', $scenarioName));
|
||||
@@ -590,7 +598,7 @@ class Scenario{
|
||||
continue;
|
||||
}
|
||||
|
||||
$result[$scenarioIdx] = new Scenario($scenarioIdx);
|
||||
$result[$scenarioIdx] = new Scenario($rng, $scenarioIdx);
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user