From 65e1495b44bfe45d2b4833884d16a1ad775c4068 Mon Sep 17 00:00:00 2001 From: Hide_D Date: Sun, 27 Mar 2022 12:24:10 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=EB=B2=A0=ED=8C=85=20=EB=8C=80=EC=83=81?= =?UTF-8?q?=EC=97=90=20=EB=93=A4=EC=96=B4=EA=B0=80=EC=A7=80=20=EC=95=8A?= =?UTF-8?q?=EC=9D=80=20=EA=B5=AD=EA=B0=80=EA=B0=80=20=EC=84=B1=EA=B3=B5=20?= =?UTF-8?q?=EB=8C=80=EC=83=81=EC=9D=B8=20=EA=B2=BD=EC=9A=B0=20=EB=B2=84?= =?UTF-8?q?=EA=B7=B8=20-=20purifyBettingKey=EC=97=90=EC=84=9C=20'=ED=95=B4?= =?UTF-8?q?=EB=8B=B9=20=EA=B5=AD=EA=B0=80=20=EC=97=86=EC=9D=8C'=20?= =?UTF-8?q?=EC=97=90=EB=9F=AC=EB=A5=BC=20=EB=82=B4=EC=A7=80=20=EC=95=8A?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hwe/sammo/Betting.php | 4 ++-- hwe/sammo/Event/Action/FinishNationBetting.php | 14 ++++++++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/hwe/sammo/Betting.php b/hwe/sammo/Betting.php index f2829ef6..83305a7e 100644 --- a/hwe/sammo/Betting.php +++ b/hwe/sammo/Betting.php @@ -26,7 +26,7 @@ class Betting return Json::encode($bettingType); } - public function purifyBettingKey(array $bettingType): array + public function purifyBettingKey(array $bettingType, bool $ignoreOver = false): array { $selectCnt = $this->info->selectCnt; sort($bettingType, SORT_NUMERIC); @@ -39,7 +39,7 @@ class Betting throw new \InvalidArgumentException('올바르지 않은 값이 있습니다.(0 미만)' . print_r($bettingType, true)); } - if (Util::array_last($bettingType) >= count($this->info->candidates)) { + if (!$ignoreOver && Util::array_last($bettingType) >= count($this->info->candidates)) { throw new \InvalidArgumentException('올바르지 않은 값이 있습니다.(초과)' . print_r($bettingType, true)); } diff --git a/hwe/sammo/Event/Action/FinishNationBetting.php b/hwe/sammo/Event/Action/FinishNationBetting.php index 6cecba38..214fee48 100644 --- a/hwe/sammo/Event/Action/FinishNationBetting.php +++ b/hwe/sammo/Event/Action/FinishNationBetting.php @@ -49,10 +49,20 @@ class FinishNationBetting extends \sammo\Event\Action } $winnerTypes = []; + + $notInBettingWinner = 0; foreach ($winnerNations as $winnerNationID) { - $winnerTypes[] = $nationIDMap[$winnerNationID]; + if(key_exists($winnerNationID, $nationIDMap)){ + $winnerTypes[] = $nationIDMap[$winnerNationID]; + } + else{ + //혹시라도 베팅 시점 이후에 생성된 국가라 없을 수 있다. + $winnerTypes[] = count($nationIDMap) + $notInBettingWinner; + $notInBettingWinner += 1; + } } - $winnerTypes = $bettingHelper->purifyBettingKey($winnerTypes); + + $winnerTypes = $bettingHelper->purifyBettingKey($winnerTypes, $notInBettingWinner > 0); $bettingHelper->giveReward($winnerTypes); $logger = new ActionLogger(0, 0, $env['year'], $env['month']);