[/B]
[B]
class CvEventManager:
def __init__(self):
# reminder addition 1/8 ### ###
#------------------------
self.reminders = []
self.iRemInd = 0
#------------------------
[...]
################## Events List ###############################
self.Events={
[...]
# reminder addition 2/8 ### ###
#------------------------
CvUtil.EventReminder : ('Reminder', self.__eventReminderApply, self.__eventReminderBegin),
#------------------------
}
#################### ON EVENTS ######################
def onKbdEvent(self, argsList):
[...]
if ( eventType == self.EventKeyDown ):
[...]
# reminder addition 3/8 ### ###
#------------------------
if (theKey == int(InputTypes.KB_R) and self.bShift):
if ( self.bCtrl and self.bAlt ): # Ctrl + Alt + Shift + R deletes the last shown reminder
if self.reminders[self.iRemInd]:
popup = PyPopup.PyPopup()
popup.setHeaderString("Reminder %s deleted:" % self.iRemInd)
popup.setBodyString(self.reminders[self.iRemInd][1])
popup.launch()
del self.reminders[self.iRemInd]
self.iRemInd -= 1
elif ( self.bAlt ): # Alt + Shift + R shows one reminder
iLen = len(self.reminders)
if iLen:
self.iRemInd += 1
if self.iRemInd >= iLen:
self.iRemInd = 0
iTurn = game.getGameTurn()
iPlayer = game.getActivePlayer()
message = "Reminder " + str(self.iRemInd) + ": "
message = message + "(" + str(self.reminders[self.iRemInd][0]-iTurn) + ")"
message = message + self.reminders[self.iRemInd][1]
CyInterface().addMessage(iPlayer, True, 30, message, '', 0, None, ColorTypes(11), 0, 0, False, False)
elif ( self.bCtrl ): # Ctrl + Shift + R shows all pending reminders
iLen = len(self.reminders)
iTurn = gc.getGame().getGameTurn()
popup = PyPopup.PyPopup()
popup.setHeaderString("%s Reminders:" % iLen)
sPR = "--- "
for i in range(iLen):
sPR = sPR + "(" + str(self.reminders[i][0]-iTurn) + ")" + self.reminders[i][1] + " --- "
popup.setBodyString(sPR)
popup.launch()
else: # Shift + R creates a reminder
self.beginEvent(CvUtil.EventReminder)
return 1
#------------------------
def onPreSave(self, argsList):
[...]
# reminder addition 4/8 ### ###
#-------------------------
cyPlayer = gc.getPlayer(cyGame.getActivePlayer())
reminderData = pickle.dumps(self.reminders)
cyPlayer.setScriptData(reminderData)
#-------------------------
def onLoadGame(self, argsList):
[...]
# reminder addition 5/8 ### ###
#-------------------------
cyPlayer = gc.getPlayer(cyGame.getActivePlayer())
reminderData = cyPlayer.getScriptData()
self.reminders = pickle.loads(reminderData)
self.iRemInd = -1
#-------------------------
return 0
def onGameStart(self, argsList):
[...]
# reminder addition 6/8 ### ###
#-------------------------
ireminders = len(self.reminders)
while ireminders:
ireminders -= 1
del self.reminders[ireminders]
self.iRemInd = -1
#-------------------------
def onEndPlayerTurn(self, argsList):
[...]
# reminder addition 7/8 ### ###
#-------------------------
if (gc.getPlayer(iPlayer).isHuman()):
thisTurn = gc.getGame().getGameTurn() + 1
ireminders = len(self.reminders)
while ireminders:
ireminders -= 1
if (self.reminders[ireminders][0] == thisTurn):
message = self.reminders[ireminders][1]
CyInterface().addMessage(iPlayer, True, 30, message, 'AS2D_ALARM', 0, None, ColorTypes(11), 0, 0, False, False)
if self.reminders[ireminders][2]: # cyclic?
self.reminders[ireminders][0] += self.reminders[ireminders][2] # reminderTurn
iStartPosition = message.find(" ") + 1 # find delimiter
self.reminders[ireminders][1] = "#" + str(self.reminders[ireminders][0]) + " " + message[iStartPosition:]
else:
del self.reminders[ireminders]
#-------------------------
#################### TRIGGERED EVENTS ##################
[...]
# reminder addition 8/8 ### ###
#------------------------
def __eventReminderBegin(self, argsList):
popup = PyPopup.PyPopup(CvUtil.EventReminder, EventContextTypes.EVENTCONTEXT_ALL)
popup.setHeaderString("Enter number of turns until reminder goes off and reminder text")
popup.createSpinBox(0, "", 0, 1, 100, 0)
popup.createEditBox("", 1)
popup.launch()
def __eventReminderApply(self, playerID, userData, popupReturn):
deltaTurn = popupReturn.getSpinnerWidgetValue(0)
reminderTurn = gc.getGame().getGameTurn() + deltaTurn
reminderText = popupReturn.getEditBoxString(1)
reminderCycle = 0
prefix = ""
if reminderText[0] == 'C':
reminderCycle = deltaTurn
prefix = "C" + str(deltaTurn)
newEntry = [ reminderTurn, "#" + str(reminderTurn) + " " + prefix + reminderText, reminderCycle ]
self.reminders.append(newEntry)
#------------------------