fix: 턴 시간 변경 코드

This commit is contained in:
2021-09-15 19:06:15 +00:00
committed by Gitea
parent 3433810ed0
commit 88237d369d
4 changed files with 21 additions and 7 deletions
+3 -2
View File
@@ -277,10 +277,11 @@ class Join extends \sammo\BaseAPI
if ($inheritTurntime !== null) { if ($inheritTurntime !== null) {
//FIXME: 오동작함 //FIXME: 오동작함
$inheritTurntime = $inheritTurntime % ($gameStor->turnterm * 60); $inheritTurntime = $inheritTurntime % ($admin['turnterm'] * 60);
$inheritTurntime += Util::randRangeInt(0, 999999) / 1000000; $inheritTurntime += Util::randRangeInt(0, 999999) / 1000000;
$turntime = new \DateTimeImmutable(cutTurn($admin['turntime'], $admin['turnterm'])); $turntime = new \DateTimeImmutable(cutTurn($admin['turntime'], $admin['turnterm']));
$turntime = TimeUtil::format($turntime->add(TimeUtil::secondsToDateInterval($inheritTurntime)), true); $turntime = $turntime->add(TimeUtil::secondsToDateInterval($inheritTurntime));
$turntime = TimeUtil::format($turntime, true);
} else { } else {
$turntime = getRandTurn($admin['turnterm'], new \DateTimeImmutable($admin['turntime'])); $turntime = getRandTurn($admin['turnterm'], new \DateTimeImmutable($admin['turntime']));
} }
@@ -54,13 +54,13 @@ class ResetTurnTime extends \sammo\BaseAPI
$gameStor = new KVStorage($db, 'game_env'); $gameStor = new KVStorage($db, 'game_env');
[$turnTerm, $serverTurnTime] = $gameStor->getValuesAsArray(['turnterm', 'turntime']); [$turnTerm, $serverTurnTime] = $gameStor->getValuesAsArray(['turnterm', 'turntime']);
$currTurnTime = new DateTimeImmutable($general->getTurnTime());
$serverTurnTimeObj = new DateTimeImmutable($serverTurnTime); $serverTurnTimeObj = new DateTimeImmutable($serverTurnTime);
$turnTime = new DateTimeImmutable($general->getTurnTime());
$afterTurn = Util::randRange($turnTerm * -60 / 2, $turnTerm * 60 / 2); $afterTurn = Util::randRange($turnTerm * -60 / 2, $turnTerm * 60 / 2);
$turnTime = $turnTime->add(TimeUtil::secondsToDateInterval($afterTurn)); $turnTime = $currTurnTime->add(TimeUtil::secondsToDateInterval($afterTurn));
if ($turnTime <= $serverTurnTimeObj) { if ($turnTime <= $serverTurnTimeObj && $serverTurnTimeObj <= $currTurnTime) {
$turnTime = $turnTime->add(TimeUtil::secondsToDateInterval($turnTerm * 60)); $turnTime = $turnTime->add(TimeUtil::secondsToDateInterval($turnTerm * 60));
} }
+5
View File
@@ -244,6 +244,7 @@
:readonly="!inheritTurnTimeSet" :readonly="!inheritTurnTimeSet"
:min="0" :min="0"
:max="1 - turnterm" :max="1 - turnterm"
v-model="inheritTurnTimeMinute"
title="분" title="분"
/> />
</div> </div>
@@ -252,6 +253,7 @@
:readonly="!inheritTurnTimeSet" :readonly="!inheritTurnTimeSet"
:min="0" :min="0"
:max="60" :max="60"
v-model="inheritTurnTimeSecond"
title="초" title="초"
/> />
</div> </div>
@@ -432,18 +434,21 @@ export default defineComponent({
inheritTurnTimeMinute(newValue: number) { inheritTurnTimeMinute(newValue: number) {
if (!this.inheritTurnTimeSet) { if (!this.inheritTurnTimeSet) {
this.args.inheritTurntime = 0; this.args.inheritTurntime = 0;
return;
} }
this.args.inheritTurntime = newValue * 60 + this.inheritTurnTimeSecond; this.args.inheritTurntime = newValue * 60 + this.inheritTurnTimeSecond;
}, },
inheritTurnTimeSecond(newValue: number) { inheritTurnTimeSecond(newValue: number) {
if (!this.inheritTurnTimeSet) { if (!this.inheritTurnTimeSet) {
this.args.inheritTurntime = 0; this.args.inheritTurntime = 0;
return;
} }
this.args.inheritTurntime = this.inheritTurnTimeMinute * 60 + newValue; this.args.inheritTurntime = this.inheritTurnTimeMinute * 60 + newValue;
}, },
inheritTurnTimeSet(newValue: boolean) { inheritTurnTimeSet(newValue: boolean) {
if (!newValue) { if (!newValue) {
this.args.inheritTurntime = 0; this.args.inheritTurntime = 0;
return;
} }
this.args.inheritTurntime = this.args.inheritTurntime =
this.inheritTurnTimeMinute * 60 + this.inheritTurnTimeSecond; this.inheritTurnTimeMinute * 60 + this.inheritTurnTimeSecond;
+10 -2
View File
@@ -140,9 +140,17 @@ class TimeUtil
public static function secondsToDateInterval(float $fullSeconds): \DateInterval public static function secondsToDateInterval(float $fullSeconds): \DateInterval
{ {
$d0 = new \DateTime("@0"); $inverted = $fullSeconds < 0?1:0;
return $d0->diff(static::secondsToDateTime($fullSeconds, true)); $fullSeconds = abs($fullSeconds);
$seconds = floor($fullSeconds);
$fraction = $fullSeconds - $seconds;
$interval = new \DateInterval("PT{$seconds}S");
$interval->f = $fraction;
$interval->invert = $inverted;
return $interval;
} }
public static function DateTimeToSeconds(\DateTimeInterface $dateTime, bool $isUTC = false): float public static function DateTimeToSeconds(\DateTimeInterface $dateTime, bool $isUTC = false): float