feat, refac(wip): 징병 기준을 GameUnitConstraint 기반으로 변경

This commit is contained in:
2025-01-21 15:41:41 +00:00
parent 77ec4c6572
commit 01094d376f
7 changed files with 36 additions and 47 deletions
+14 -7
View File
@@ -2558,8 +2558,11 @@ class GeneralAI
$cities = [];
$regions = [];
foreach ($db->queryAllLists('SELECT city, region FROM city WHERE nation = %i', $nationID) as [$cityID, $regionID]) {
$cities[$cityID] = true;
foreach ($db->queryAllLists('SELECT city, region, secu, level FROM city WHERE nation = %i', $nationID) as [$cityID, $regionID, $secu, $level]) {
$cities[$cityID] = [
'secu' => $secu,
'level' => $level,
];
$regions[$regionID] = true;
}
$relYear = Util::valueFit($env['year'] - $env['startyear'], 0);
@@ -2582,11 +2585,15 @@ class GeneralAI
if ($this->generalPolicy->can고급병종) {
$currCrewType = $general->getCrewTypeObj();
if ($currCrewType->isValid($cities, $regions, $relYear, $tech)) {
if ($currCrewType->reqTech >= 2000) {
$type = $currCrewType->id;
} else if ($currCrewType->armType != $armType && $currCrewType->reqTech >= 1000) {
//굳이 뽑은 이유가 있겠지
$type = $currCrewType->id;
$reqTechObj = $currCrewType->reqConstraints['reqTech'] ?? null;
if($reqTechObj){
$reqTech = $reqTechObj->getValue($tech);
if ($reqTech >= 2000) {
$type = $currCrewType->id;
} else if ($currCrewType->armType != $armType && $reqTech >= 1000) {
//굳이 뽑은 이유가 있겠지
$type = $currCrewType->id;
}
}
}
}