Fix: complete TimeUtil, RealtimeStageTimer

This commit is contained in:
2019-08-27 11:44:12 +09:00
parent 5e076c5d40
commit 7b8b53e7ca
5 changed files with 143 additions and 20 deletions
+31 -2
View File
@@ -1,11 +1,13 @@
function RealtimeStageTimer(timeLimitMS) {
this.timeLimit = timeLimitMS;
function RealtimeStageTimer(timeLimitSec) {
this.timeLimit = timeLimitSec;
this.startTime = 0;
this.elapsedTime = 0;
this.isStarted = false;
this.isPaused = true;
this.onTimeUpdate = null;
this.onTimeOver = null;
this.timerEvent = null;
}
@@ -14,7 +16,14 @@ RealtimeStageTimer.prototype.setTimeUpdateEvent = function(eventMethod) {
this.onTimeUpdate = eventMethod;
}
RealtimeStageTimer.prototype.setTimeOverEvent = function(eventMethod) {
this.onTimeOver = eventMethod;
}
RealtimeStageTimer.prototype.start = function() {
if(this.isStarted === true)
return;
this.isPaused = false;
this.startTime = game.time.totalElapsedSeconds();
@@ -27,13 +36,22 @@ RealtimeStageTimer.prototype.start = function() {
RealtimeStageTimer.prototype.pause = function() {
this.isPaused = true;
this.sendElapsedTime();
}
RealtimeStageTimer.prototype.resume = function() {
this.isPaused = false;
this.sendElapsedTime();
}
RealtimeStageTimer.prototype.stop = function() {
this.isStarted = false;
this.isPaused = true;
this.sendElapsedTime();
var recordTime = game.time.totalElapsedSeconds() - this.startTime;
this.removeTimer();
@@ -45,6 +63,17 @@ RealtimeStageTimer.prototype.updateTimer = function() {
return;
this.elapsedTime = game.time.totalElapsedSeconds() - this.startTime;
var timeLeft = this.timeLimit - this.elapsedTime;
if(timeLeft < 0) {
this.stop();
if(this.onTimeOver !== null)
this.onTimeOver();
return;
}
this.sendElapsedTime();
}
+88 -1
View File
@@ -46,6 +46,87 @@ TimeUtil.getTwoDigitSecondFromMS = function(timeMS) {
TimeUtil.getFullHourFromSec = function(timeSec) {
return Math.floor(timeSec / TimeUtil.HOUR_SEC);
}
TimeUtil.getHourFromSec = function(timeSec) {
return TimeUtil.getFullHourFromSec(timeSec) % 24;
}
TimeUtil.getTwoDigitHourFromSec = function(timeSec) {
var twoDigitHour = TimeUtil.getHourFromSec(timeSec);
return StringUtil.getNumberStartWithZero(twoDigitHour, 2);
}
TimeUtil.getFullMinuteFromSec = function(timeSec) {
return Math.floor(timeSec / TimeUtil.MINUTE_SEC);
}
TimeUtil.getMinuteFromSec = function(timeSec) {
return TimeUtil.getFullMinuteFromSec(timeSec) % 60;
}
TimeUtil.getTwoDigitMinuteFromSec = function(timeSec) {
var twoDigitMinute = TimeUtil.getMinuteFromSec(timeSec);
return StringUtil.getNumberStartWithZero(twoDigitMinute, 2);
}
TimeUtil.getFullSecondFromSec = function(timeSec) {
return Math.floor(timeSec / TimeUtil.SECOND_SEC);
}
TimeUtil.getSecondFromSec = function(timeSec) {
return TimeUtil.getFullSecondFromSec(timeSec) % 60;
}
TimeUtil.getTwoDigitSecondFromSec = function(timeSec) {
var twoDigitSecond = TimeUtil.getSecondFromSec(timeSec);
return StringUtil.getNumberStartWithZero(twoDigitSecond, 2);
}
TimeUtil.printTimeFromSec = function(timeSec) {
var fullTime = "";
var twoDigitHour = TimeUtil.getTwoDigitHourFromSec(timeSec);
if(twoDigitHour !== "00")
fullTime = twoDigitHour + "시간 ";
var twoDigitMinute = TimeUtil.getTwoDigitMinuteFromSec(timeSec);
if(twoDigitMinute !== "00")
fullTime = fullTime + twoDigitMinute + "분 ";
var twoDigitSecond = TimeUtil.getTwoDigitSecondFromSec(timeSec);
fullTime = fullTime + twoDigitSecond + "초";
return fullTime;
}
TimeUtil.printHHMMSSFromSec = function(timeSec) {
var fullTime = "";
var twoDigitHour = TimeUtil.getTwoDigitHourFromSec(timeSec);
if(twoDigitHour !== "00")
fullTime = twoDigitHour + ":";
var twoDigitMinute = TimeUtil.getTwoDigitMinuteFromSec(timeSec);
if(twoDigitMinute !== "00")
fullTime = fullTime + twoDigitMinute + ":";
var twoDigitSecond = TimeUtil.getTwoDigitSecondFromSec(timeSec);
fullTime = fullTime + twoDigitSecond;
return fullTime;
}
TimeUtil.getYYYYMMDD = function(date) {
// return date.toISOString().slice(0,10);
@@ -75,4 +156,10 @@ TimeUtil.printMonthDay = function(date) {
TimeUtil.SECOND_MS = 1000;
TimeUtil.MINUTE_MS = TimeUtil.SECOND_MS * 60;
TimeUtil.HOUR_MS = TimeUtil.MINUTE_MS * 60;
TimeUtil.DAY_MS = TimeUtil.HOUR_MS * 24;
TimeUtil.DAY_MS = TimeUtil.HOUR_MS * 24;
TimeUtil.SECOND_SEC = 1;
TimeUtil.MINUTE_SEC = TimeUtil.SECOND_SEC * 60;
TimeUtil.HOUR_SEC = TimeUtil.MINUTE_SEC * 60;
TimeUtil.DAY_SEC = TimeUtil.HOUR_SEC * 24;