@listen_to('build') def on_build(self, event): if len(self.village.get_build_events_for_slot(self.slot_id)) == 0: self.terminate() self.callback() if __name__ == '__main__': from village import Village from account import Account from resources import Resources from event import Event class K(): @trigger(TriggerEnoughSpaceForResources) def handler_enought_space(self): print("enough!") vill = Village(Account((0,0), None), None, None, None) vill.resources = Resources((90,0,0,0)) vill.storage_capacity = Resources((100,0,0,0)) vill.next_refresh_time = datetime(2220, 1, 1) inst = K() inst.handler_enought_space().enqueue(vill, Resources((20,0,0,0))) print("first check") vill.fire_event(Event(vill, 'spend_resources', datetime.now())) print("second check") vill.resources = Resources((0,0,0,0)) vill.fire_event(Event(vill, 'spend_resources', datetime.now())) print(vill.triggers)
def __init(self, callback, conditions): self.conditions = conditions if __name__ == '__main__': from village import Village from account import Account from resources import Resources from event import Event class K(): @condition_changes(ConditionEnoughSpaceForResources) def handler_enought_space(self): print("enough!") vill = Village(Account((0,0), None), None, None, None) vill.suppress_refresh = True vill.resources = Resources((90,0,0,0)) vill.production = Resources((1,0,0,0)) vill.storage_capacity = Resources((100,0,0,0)) vill.next_refresh_time = datetime(2220, 1, 1) inst = K() c = inst.handler_enought_space().enqueue(vill, Resources((20,0,0,0))) print("first check") vill.fire_event(Event(vill, 'resources_spent', datetime.now())) print("is true:", c.is_true()) print("second check") vill.resources = Resources((0,0,0,0)) vill.fire_event(Event(vill, 'resources_spent', datetime.now())) print("is true:", c.is_true())