랜임 개월 수 버그 수정

This commit is contained in:
2018-10-24 01:17:03 +09:00
parent bfff1d9e2f
commit 42310fa170
3 changed files with 19 additions and 7 deletions
+1 -1
View File
@@ -134,7 +134,7 @@ function process_25(&$general) {
$allGen = array_sum($generals); $allGen = array_sum($generals);
$genLimit = GameConst::$defaultMaxGeneral; $genLimit = GameConst::$defaultMaxGeneral;
if($admin['join_mode'] == 'onlyRandom' && $admin['init_year'] == $admin['year'] && in_array($admin['month'], [$admin['init_month'], ($admin['init_month'] + 1) %12])){ if($admin['join_mode'] == 'onlyRandom' && TimeUtil::IsRangeMonth($admin['init_year'], $admin['init_month'], 1, $admin['year'], $admin['month'])){
$genLimit = GameConst::$initialNationGenLimitForRandInit; $genLimit = GameConst::$initialNationGenLimitForRandInit;
} }
else if($admin['year'] < $admin['startyear'] + 3){ else if($admin['year'] < $admin['startyear'] + 3){
+1 -1
View File
@@ -704,7 +704,7 @@ function command_25($turn, $command) {
$nationList = $db->query('SELECT nation,`name`,color,scout,scoutmsg,gennum FROM nation ORDER BY rand()'); $nationList = $db->query('SELECT nation,`name`,color,scout,scoutmsg,gennum FROM nation ORDER BY rand()');
foreach($nationList as $nation){ foreach($nationList as $nation){
if ($gameStor->year == $gameStor->init_year && $gameStor->month <= $gameStor->init_month && $nation['gennum'] >= GameConst::$initialNationGenLimitForRandInit) { if ($onlyRandom && TimeUtil::IsRangeMonth($gameStor->init_year, $gameStor->init_month, 1, $gameStor->year, $gameStor->month) && $nation['gennum'] >= GameConst::$initialNationGenLimitForRandInit) {
$nation['availableJoin'] = false; $nation['availableJoin'] = false;
} }
else if($gameStor->year < $gameStor->startyear+3 && $nation['gennum'] >= GameConst::$initialNationGenLimit){ else if($gameStor->year < $gameStor->startyear+3 && $nation['gennum'] >= GameConst::$initialNationGenLimit){
+17 -5
View File
@@ -65,16 +65,28 @@ class TimeUtil
} }
/** /**
* $year, $month 부터 $afterMonth 개월 이내인지. $afterMonth 포함. * $baseYear, $baseMonth 부터 $afterMonth 개월 이내인지. $afterMonth 포함.
* *
*/ */
public static function IsRangeMonth(int $baseYear, int $baseMonth, int $askYear, int $askMonth, int $afterMonth):bool{ public static function IsRangeMonth(int $baseYear, int $baseMonth, int $afterMonth, int $askYear, int $askMonth):bool{
if($month < 1 || $month > 12){ if($baseMonth < 1 || $baseMonth > 12){
throw new \InvalidArgumentException('개월이 올바르지 않음'); throw new \InvalidArgumentException('개월이 올바르지 않음');
} }
if($afterMonth < 0){ if($askMonth < 1 || $askMonth > 12){
throw new \InvalidArgumentException('기간이 올바르지 않음'); throw new \InvalidArgumentException('개월이 올바르지 않음');
} }
$minMonth = $baseYear * 12 + $baseMonth;
if($afterMonth < 0){
$maxMonth = $minMonth;
$minMonth = $maxMonth - $afterMonth;
}
$maxMonth = $minMonth + $afterMonth;
$askMonth = $askYear * 12 + $askMonth;
if($askMonth < $minMonth || $maxMonth < $askMonth){
return false;
}
return true;
} }
} }