def eventtest(self): filename = sys.path[0] + "/data/eventtest.data" # -- add data directory to python search path sys.path.insert(0, "data") fty = event.factory() svd = 0 # -- first event ev1 = event.time_event("0m30s") ev1.set_repeat("30s", 6) lst = fty.add(ev1) lst.connect_callback("time_events", "event_script", "callback_1", ("#1", 1)) # -- second event ev2 = event.time_event("1m05s") ev2.set_repeat("30s", 4) lst = fty.add(ev2) lst.connect_callback("time_events", "event_script", "callback_2") # -- run for 3:20 gametime minutes while event.date.time() < 200: # -- save factory to disk if event.date.time() == 100 and svd == 0: print " Saving state" record = base.diskio(base.diskio.GZ_FILE) fty.put_state(record) record.put_record(filename) svd = 1 base.Timer.update() event.date.update() # -- resume with saved state print " Returning to previously saved state" fty.clear() # -- need absolute filename for loading or file has to sit in # Adonthell's search path record = base.diskio(base.diskio.GZ_FILE) record.get_record(filename) success = fty.get_state(record) if success == 1: print "OK" else:
def eventtest (self): filename = sys.path[0] + "/data/eventtest.data" # -- add data directory to python search path sys.path.insert (0, "data") fty = event.factory () svd = 0 # -- first event ev1 = event.time_event ("0m30s") ev1.set_repeat ("30s", 6) lst = fty.add (ev1) lst.connect_callback ("time_events", "event_script", "callback_1", ("#1", 1)) # -- second event ev2 = event.time_event ("1m05s") ev2.set_repeat ("30s", 4) lst = fty.add (ev2) lst.connect_callback ("time_events", "event_script", "callback_2") # -- run for 3:20 gametime minutes while event.date.time () < 200: # -- save factory to disk if event.date.time () == 100 and svd == 0: print " Saving state" record = base.diskio (base.diskio.GZ_FILE) fty.put_state (record) record.put_record (filename) svd = 1 base.Timer.update () event.date.update () # -- resume with saved state print " Returning to previously saved state" fty.clear () # -- need absolute filename for loading or file has to sit in # Adonthell's search path record = base.diskio (base.diskio.GZ_FILE) record.get_record (filename) success = fty.get_state (record) if success == 1: print "OK" else:
def eventtest (self): #Add data to the path path = "data" sys.path.insert (0, path) self.init_modules (main.app.AUDIO) self.sound = audio.sound('at-demo-1.ogg') self.sound.play() fty = event.factory () svd = 0 music = bgmusic() # -- first event ev1 = event.time_event ("0m30s") ev1.set_repeat ("10m00s", -1) lst = fty.add (ev1) if not lst.connect_callback ("audio_events", "event_script", "timer", (music, )): event_script_error() # run for a while while True: base.Timer.update () event.date.update () audio.update ()
def use (self, user): # -- turn it on if self.IsBurning == 0: # -- does it have enough charge? if self.Charge == 0: return # -- resume event self.Events.resume () # -- get listener associated with the torch ConsumeLstnr = self.Events.get_listener ("consume") if ConsumeLstnr == None: # -- register time event so it is consumed while burning # a charge will last 5 minutes ConsumeEvent = event.time_event (self.Duration) # -- repeat event as often as item has charges ConsumeEvent.set_repeat (self.Duration, self.Charge) # -- register consume event with event_list ConsumeLstnr = self.Events.add (ConsumeEvent) # -- callback to execute whenever a charge has been used # up. ConsumeLstnr.connect_callback ("item_events", "item_events", "on_charge_used", self) # -- id to retrieve event later on ConsumeLstnr.set_id ("consume") self.IsBurning = 1 # -- while it's burning, make it a lightsource self.add_category ("Lightsource") # -- start any graphical effects, etc # ... # -- switch it off else: self.IsBurning = 0 # -- make sure event is not repeated self.Events.pause () # -- not burning, so no lightsource self.remove_category ("Lightsource")
def use(self, user): # -- turn it on if self.IsBurning == 0: # -- does it have enough charge? if self.Charge == 0: return # -- resume event self.Events.resume() # -- get listener associated with the torch ConsumeLstnr = self.Events.get_listener("consume") if ConsumeLstnr == None: # -- register time event so it is consumed while burning # a charge will last 5 minutes ConsumeEvent = event.time_event(self.Duration) # -- repeat event as often as item has charges ConsumeEvent.set_repeat(self.Duration, self.Charge) # -- register consume event with event_list ConsumeLstnr = self.Events.add(ConsumeEvent) # -- callback to execute whenever a charge has been used # up. ConsumeLstnr.connect_callback("item_events", "item_events", "on_charge_used", self) # -- id to retrieve event later on ConsumeLstnr.set_id("consume") self.IsBurning = 1 # -- while it's burning, make it a lightsource self.add_category("Lightsource") # -- start any graphical effects, etc # ... # -- switch it off else: self.IsBurning = 0 # -- make sure event is not repeated self.Events.pause() # -- not burning, so no lightsource self.remove_category("Lightsource")