From 8e3551cb118a1d845977f7ee3b3d05c44a406d0a Mon Sep 17 00:00:00 2001 From: Hide_D Date: Mon, 25 Dec 2023 07:51:54 +0000 Subject: [PATCH] =?UTF-8?q?feat:=20=ED=84=B4=20=EC=8B=9C=EA=B0=84=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD=EC=9D=84=20=EC=A7=81=EA=B4=80=EC=A0=81?= =?UTF-8?q?=EC=9D=B8=20=EB=8F=99=EC=9E=91=EC=9C=BC=EB=A1=9C=20=EC=9E=AC=20?= =?UTF-8?q?=EC=84=A4=EA=B3=84=20-=20'=EB=8B=A4=EB=8B=A4=EC=9D=8C=ED=84=B4'?= =?UTF-8?q?=20=EB=B6=80=ED=84=B0=20=EC=8B=9C=EA=B0=84=EC=9D=84=2000:00=20~?= =?UTF-8?q?=2059:59=EA=B9=8C=EC=A7=80=20=EB=9E=9C=EB=8D=A4=ED=95=98?= =?UTF-8?q?=EA=B2=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../InheritAction/CalcResetTurnTimeRange.php | 68 ------------------- hwe/sammo/API/InheritAction/ResetTurnTime.php | 21 ++---- hwe/sammo/TurnExecutionHelper.php | 10 +++ hwe/ts/PageInheritPoint.vue | 11 +-- hwe/ts/SammoAPI.ts | 5 -- 5 files changed, 17 insertions(+), 98 deletions(-) delete mode 100644 hwe/sammo/API/InheritAction/CalcResetTurnTimeRange.php diff --git a/hwe/sammo/API/InheritAction/CalcResetTurnTimeRange.php b/hwe/sammo/API/InheritAction/CalcResetTurnTimeRange.php deleted file mode 100644 index 7a11804c..00000000 --- a/hwe/sammo/API/InheritAction/CalcResetTurnTimeRange.php +++ /dev/null @@ -1,68 +0,0 @@ -userID; - $generalID = $session->generalID; - - $general = General::createObjFromDB($generalID); - if ($userID != $general->getVar('owner')) { - return '로그인 상태가 이상합니다. 다시 로그인해 주세요.'; - } - - $db = DB::db(); - - $gameStor = KVStorage::getStorage($db, 'game_env'); - [$turnTerm, $serverTurnTime] = $gameStor->getValuesAsArray(['turnterm', 'turntime']); - - $currTurnTime = new DateTimeImmutable($general->getTurnTime()); - $serverTurnTimeObj = new DateTimeImmutable($serverTurnTime); - - $minTurnTime = $currTurnTime->add(TimeUtil::secondsToDateInterval($turnTerm * -30)); - $maxTurnTime = $currTurnTime->add(TimeUtil::secondsToDateInterval($turnTerm * 30)); - - $timeDiff = $serverTurnTimeObj->diff($minTurnTime); - $timeDiffSec = TimeUtil::DateIntervalToSeconds($timeDiff); - if($timeDiffSec > 0){ - $minTurnTime = $minTurnTime->add(TimeUtil::secondsToDateInterval($timeDiffSec)); - $maxTurnTime = $maxTurnTime->add(TimeUtil::secondsToDateInterval($timeDiffSec)); - } - - return [ - 'result' => true, - 'timeDiffSec' => $timeDiffSec, - 'minTurnTime' => TimeUtil::format($minTurnTime, false), - 'maxTurnTime' => TimeUtil::format($maxTurnTime, false), - ]; - } -} diff --git a/hwe/sammo/API/InheritAction/ResetTurnTime.php b/hwe/sammo/API/InheritAction/ResetTurnTime.php index 3ecb5c5f..e4c8742f 100644 --- a/hwe/sammo/API/InheritAction/ResetTurnTime.php +++ b/hwe/sammo/API/InheritAction/ResetTurnTime.php @@ -52,7 +52,7 @@ class ResetTurnTime extends \sammo\BaseAPI $db = DB::db(); $gameStor = KVStorage::getStorage($db, 'game_env'); - if($gameStor->isunited){ + if ($gameStor->isunited) { return '이미 천하가 통일되었습니다.'; } $inheritStor = KVStorage::getStorage($db, "inheritance_{$userID}"); @@ -62,10 +62,9 @@ class ResetTurnTime extends \sammo\BaseAPI } $gameStor = KVStorage::getStorage($db, 'game_env'); - [$turnTerm, $serverTurnTime] = $gameStor->getValuesAsArray(['turnterm', 'turntime']); + $turnTerm = $gameStor->getValue('turnterm'); $currTurnTime = new DateTimeImmutable($general->getTurnTime()); - $serverTurnTimeObj = new DateTimeImmutable($serverTurnTime); $rng = new RandUtil(new LiteHashDRBG(Util::simpleSerialize( UniqueConst::$hiddenSeed, @@ -74,24 +73,14 @@ class ResetTurnTime extends \sammo\BaseAPI $general->getTurnTime() ))); - $afterTurn = $rng->nextRange($turnTerm * -60 / 2, $turnTerm * 60 / 2); + $afterTurn = $rng->nextFloat1() * $turnTerm * 60; $userLogger = new UserLogger($userID); - if($afterTurn >= 0){ - $userLogger->push(sprintf("{$reqPoint} 포인트로 턴 시간을 바꾼 결과 %02d:%02d 뒤로 밀림", intdiv(Util::toInt($afterTurn), 60), $afterTurn%60), "inheritPoint"); - } - else{ - $userLogger->push(sprintf("{$reqPoint} 포인트로 턴 시간을 바꾼 결과 %02d:%02d 앞으로 당김", intdiv(Util::toInt(-$afterTurn), 60), (-$afterTurn)%60), "inheritPoint"); - } + $userLogger->push(sprintf("{$reqPoint} 포인트로 턴 시간을 바꾸어 다음 턴부터 %02d:%02d 적용", intdiv(Util::toInt($afterTurn), 60), $afterTurn % 60), "inheritPoint"); $userLogger->flush(); - $turnTime = $currTurnTime->add(TimeUtil::secondsToDateInterval($afterTurn)); - if ($turnTime <= $serverTurnTimeObj && $serverTurnTimeObj <= $currTurnTime) { - $turnTime = $turnTime->add(TimeUtil::secondsToDateInterval($turnTerm * 60)); - } - - $general->setVar('turntime', TimeUtil::format($turnTime, true)); $general->setAuxVar('inheritResetTurnTime', $nextLevel); + $general->setAuxVar('nextTurnTimeBase', $afterTurn); $inheritStor->setValue('previous', [$previousPoint - $reqPoint, null]); $general->increaseRankVar(RankColumn::inherit_point_spent_dynamic, $reqPoint); $general->applyDB($db); diff --git a/hwe/sammo/TurnExecutionHelper.php b/hwe/sammo/TurnExecutionHelper.php index 482839b3..7a5c347b 100644 --- a/hwe/sammo/TurnExecutionHelper.php +++ b/hwe/sammo/TurnExecutionHelper.php @@ -216,6 +216,16 @@ class TurnExecutionHelper } $turntime = addTurn($general->getTurnTime(), $gameStor->turnterm); + + $nextTurnTimeBase = $general->getAuxVar('nextTurnTimeBase'); + if($nextTurnTimeBase !== null){ + $turntime = cutTurn($turntime, $gameStor->turnterm); + $turntimeObj = new \DateTimeImmutable($turntime); + $turntimeObj = $turntimeObj->add(TimeUtil::secondsToDateInterval($nextTurnTimeBase)); + $turntime = TimeUtil::format($turntimeObj, true); + $general->setAuxVar('nextTurnTimeBase', null); + } + $general->setVar('turntime', $turntime); } diff --git a/hwe/ts/PageInheritPoint.vue b/hwe/ts/PageInheritPoint.vue index ec51f208..839326ad 100644 --- a/hwe/ts/PageInheritPoint.vue +++ b/hwe/ts/PageInheritPoint.vue @@ -111,7 +111,7 @@
다음 턴 시간이 앞, 뒤 랜덤하게 바뀝니다. (필요 포인트가 피보나치식으로 증가합니다)
다다음턴부터 시간이 랜덤하게 바뀝니다. (필요 포인트가 피보나치식으로 증가합니다)
필요 포인트: {{ inheritActionCost.resetTurnTime }}
@@ -458,14 +458,7 @@ async function tryResestTurnTime(){ return; } - - const { minTurnTime, maxTurnTime } = await SammoAPI.InheritAction.CalcResetTurnTimeRange(); - - //YYYY-MM-DD hh:mm:ss 에서 hh:mm:ss 까지만 보여줄 예정 - const textMinTurnTime = minTurnTime.substring(11, 19); - const textMaxTurnTime = maxTurnTime.substring(11, 19); - - const msg = `${cost} 포인트로 턴을 초기화 하시겠습니까?\n${textMinTurnTime} ~ ${textMaxTurnTime} 사이의 시간으로 초기화 됩니다.`; + const msg = `${cost} 포인트로 턴을 초기화 하시겠습니까?\n다다음턴부터 무작위 시간으로 초기화 됩니다.`; if (!confirm(msg)) { return; } diff --git a/hwe/ts/SammoAPI.ts b/hwe/ts/SammoAPI.ts index 834eee35..626f36d9 100644 --- a/hwe/ts/SammoAPI.ts +++ b/hwe/ts/SammoAPI.ts @@ -174,11 +174,6 @@ const apiRealPath = { BuyRandomUnique: PUT as APICallT, ResetSpecialWar: PUT as APICallT, ResetTurnTime: PUT as APICallT, - CalcResetTurnTimeRange: GET as APICallT, SetNextSpecialWar: PUT as APICallT<{ type: string; }>,