feat,refac: 게임 로직 내 '랜덤'을 RandUtil을 활용하여 재설정

- 기존의 랜덤 코드는 deprecated 처리
- 서버 시작 시 랜덤하게 정해진 hiddenSeed를 활용
- 랜덤 생성 단위
  - 월 실행
  - 사령턴 실행 결과
  - 커맨드 실행 결과
  - 작위 보상
  - 부대장 생성
  - 유니크 획득 시도
  - 설문 조사
  - 장수 생성
  - NPC국 생성, NPC 생성, NPC의 토너먼트 베팅
  - 전투
  - 도시 점령
  - 자율 행동 선택
  - 랜덤 턴 변경
- 거래장, 토너먼트 등 구 랜덤 코드를 이용하는 잔여 코드 있음
This commit is contained in:
2022-05-17 03:46:59 +09:00
parent 3c078e7f4a
commit 9fbe270bba
136 changed files with 1000 additions and 784 deletions
+12 -4
View File
@@ -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;
}