# This file is distributed under the terms of the GNU General Public license. # Copyright (C) 1999 Aloril (See the file COPYING for details). from types import * class Memory: def __init__(self, map): self.events = [] self.map = map def destroy(self): self.events = None self.map = None def recall_place(self, location, radius, filter): try: if type(filter) == list: for i in filter: result = self.map.find_by_location_query(location, radius, i) if len(result) != 0: return result else: return self.map.find_by_location_query(location, radius, filter) except RuntimeError: # Expect the location to be incomplete and handle it return None def remember_event(self, event): "add new memory with age" self.events.append([event, 1.0]) def recall_event(self, event, cmp): "return list of memories with same command" found = [] for (e, age) in self.events: if cmp(*(event, e)): found.append(e) return found def forget(self): "age memories and forgot too old ones" for m in self.events: m[1] = m[1] - 0.1 # remove forgotten things self.events = [m for m in self.events if m[1] > const.fzero]