Implemented timer functionality
This commit is contained in:
parent
f535da1594
commit
fcac23a878
@ -1,4 +1,66 @@
|
|||||||
|
import pygame
|
||||||
|
|
||||||
|
# Timer class for the game
|
||||||
|
# We count time every second, an the time elapsed in game is 60 times the actual time
|
||||||
|
# So, if we spend 60 seconds, we count that we spent 60 minutes.
|
||||||
|
|
||||||
|
# Day/night cycle parameters
|
||||||
|
DAY_START = "7:00"
|
||||||
|
NIGHT_START = "22:00"
|
||||||
|
|
||||||
|
|
||||||
class Timer:
|
class Timer:
|
||||||
def __init__(self):
|
def __init__(self, startTime="12:00"):
|
||||||
self.time
|
self.clock = pygame.time.Clock()
|
||||||
self.cycle
|
|
||||||
|
# Time in milliseconds updated every frame, starts counting from what we specify as a parameter
|
||||||
|
self.timePassed = self.timeToMs(startTime)
|
||||||
|
# You have to start the clock manually by calling startClock() method
|
||||||
|
self.isStarted = False
|
||||||
|
|
||||||
|
def startClock(self):
|
||||||
|
self.isStarted = True
|
||||||
|
|
||||||
|
def stopClock(self):
|
||||||
|
self.isStarted = False
|
||||||
|
|
||||||
|
# Returns a string with formatted time
|
||||||
|
def getPrettyTime(self):
|
||||||
|
# 60 times faster than real time
|
||||||
|
minutes = int(self.timePassed / 1000) % 60
|
||||||
|
hours = int(self.timePassed / 60000) % 24
|
||||||
|
|
||||||
|
# Add 0's at the beginning if necessary
|
||||||
|
prefixHr = ""
|
||||||
|
prefixMin = ""
|
||||||
|
if len(str(hours)) < 2:
|
||||||
|
prefixHr = "0"
|
||||||
|
if len(str(minutes)) < 2:
|
||||||
|
prefixMin = "0"
|
||||||
|
|
||||||
|
# Return a formatted time
|
||||||
|
return prefixHr + str(hours) + ":" + prefixMin + str(minutes)
|
||||||
|
|
||||||
|
# Returns true, if it's daytime
|
||||||
|
def isItDay(self):
|
||||||
|
if self.timeToMs(DAY_START) < self.timePassed < self.timeToMs(NIGHT_START):
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
return False
|
||||||
|
|
||||||
|
# Called every frame to update the timer
|
||||||
|
def updateTime(self, elapsed):
|
||||||
|
# Only happens if the time is set to be running
|
||||||
|
if self.isStarted:
|
||||||
|
# Modulo, since we use the 24-hour cycle
|
||||||
|
# In our case, the time loops every 24 minutes
|
||||||
|
self.timePassed =(self.timePassed + elapsed) % 1440000
|
||||||
|
|
||||||
|
# Converts time as string to integer milliseconds
|
||||||
|
def timeToMs(self, timeString):
|
||||||
|
timeList = timeString.split(':')
|
||||||
|
hours = timeList[0]
|
||||||
|
minutes = timeList[1]
|
||||||
|
return int(hours) * 60000 + int(minutes) * 1000
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user