def _FindLastEventWithTimeElseMostRecentEventLessthanTime_ORI( self, timeToFind): """ if 'timeToFind' matches event then return pos of last event with time of 'timeToFind' else return pos of latest event with time before 'timeToFind' if no matches return 0 'timeToFind' is an tuple (simple mode) e.g. (1,1) (normal mode) e.g. (1,6,0) """ pos = 0 lastoccurenceoftime = -1 for event in self.mediator.story: eventtime = eventStrToList(event)[0] eventtime = eval(eventtime) if self.turnMgr.TimeToTimePosition( eventtime) <= self.turnMgr.TimeToTimePosition(timeToFind): # if eventtime <= timeToFind: lastoccurenceoftime = pos pos += 1 else: break # pos should now be positioned at the insertion point if lastoccurenceoftime != -1: return lastoccurenceoftime maxpos = len(self.mediator.story) - 1 return min(maxpos, pos)
def _FindLastEventWithTimeElseMostRecentEventLessthanTime_ORI(self, timeToFind): """ if 'timeToFind' matches event then return pos of last event with time of 'timeToFind' else return pos of latest event with time before 'timeToFind' if no matches return 0 'timeToFind' is an tuple (simple mode) e.g. (1,1) (normal mode) e.g. (1,6,0) """ pos = 0 lastoccurenceoftime = -1 for event in self.mediator.story: eventtime = eventStrToList(event)[0] eventtime = eval(eventtime) if self.turnMgr.TimeToTimePosition(eventtime) <= self.turnMgr.TimeToTimePosition(timeToFind): #if eventtime <= timeToFind: lastoccurenceoftime = pos pos+=1 else: break # pos should now be positioned at the insertion point if lastoccurenceoftime<>-1: return lastoccurenceoftime maxpos = len(self.mediator.story)-1 return min(maxpos, pos)
def _TimeOfEventAt(eventpos, story, self): if eventpos == -1: return -1 event = story[eventpos] timestr = eventStrToList(event)[0] # print event assert "(" in timestr assert ")" in timestr return eval(timestr) # convert string tuple to tuple
def _TimeOfEventAt(eventpos, story, self): if eventpos == -1: return-1 event = story[eventpos] timestr = eventStrToList(event)[0] #print event assert '('in timestr assert ')'in timestr return eval(timestr) # convert string tuple to tuple
def _FindLastEventWithTimeElseMostRecentEventLessthanTime(self, timeToFind): timepostofind = self.turnMgr.TimeToTimePosition(timeToFind) hi = len(self.mediator.story) lo = 0 if not hi: return 0 while lo < hi: mid = (lo+hi)//2 event = self.mediator.story[mid] eventtime = eval( eventStrToList(event)[0] ) timeposmid = self.turnMgr.TimeToTimePosition(eventtime) if timepostofind < timeposmid: hi = mid else: lo = mid + 1 return max(0, lo-1)