本文整理汇总了Python中mpf.system.tasks.DelayManager.reset方法的典型用法代码示例。如果您正苦于以下问题:Python DelayManager.reset方法的具体用法?Python DelayManager.reset怎么用?Python DelayManager.reset使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类mpf.system.tasks.DelayManager
的用法示例。
在下文中一共展示了DelayManager.reset方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: Playfield
# 需要导入模块: from mpf.system.tasks import DelayManager [as 别名]
# 或者: from mpf.system.tasks.DelayManager import reset [as 别名]
#.........这里部分代码省略.........
"sense. Quitting...", self.num_balls_requested)
self.remove_player_controlled_eject()
def ok_to_confirm_ball_via_playfield_switch(self):
"""Used to check whether it's ok for a ball device which ejects to the
playfield to confirm its eject via a playfield switch being hit.
Returns: True or False
Right now this is simple. If there are no playfield balls, then any
playfield switch hit is assumed to be from the newly-ejected ball. If
there are other balls on the playfield, then we can't use this
confirmation method since we don't know whether a playfield switch hit
is from the newly-ejected ball(s) or a current previously-live
playfield ball.
"""
if not self.balls:
return True
else:
return False
# todo look for other incoming balls?
# BALL SEARCH --------------------------------------------------------------
# todo make ball search work with plunger lanes with no switches. i.e. we
# don't want ball search to start until a switch is hit?
def ball_search_schedule(self, secs=None, force=False):
"""Schedules a ball search to start. By default it will schedule it
based on the time configured in the machine configuration files.
If a ball search is already scheduled, this method will reset that
schedule to the new time passed.
Args:
secs: Schedules the ball search that many secs from now.
force : Boolean to force a ball search. Set True to force a ball
search. Otherwise it will only schedule it if
self.flag_no_ball_search is False. Default is False
"""
if self.machine.config['ballsearch']:
if not self.flag_no_ball_search or force is True:
if secs is not None:
start_ms = secs * 1000
else:
start_ms = (self.machine.config['ballsearch']
['secs until ball search start'] * 1000)
self.log.debug("Scheduling a ball search for %s secs from now",
start_ms / 1000.0)
self.delay.reset("ball_search_start",
ms=start_ms,
callback=self.ball_search_begin)
def ball_search_disable(self):
"""Disables ball search.
Note this is used to prevent a future ball search from happening (like
when all balls become contained). This method is not used to cancel an
existing ball search. (Use `ball_search_end` for that.)
"""
self.log.debug("Disabling Ball Search")
self.delay.remove('ball_search_start')
示例2: Playfield
# 需要导入模块: from mpf.system.tasks import DelayManager [as 别名]
# 或者: from mpf.system.tasks.DelayManager import reset [as 别名]
#.........这里部分代码省略.........
"sense. Quitting...", self.num_balls_requested)
def ok_to_confirm_ball_via_playfield_switch(self):
"""Used to check whether it's ok for a ball device which ejects to the
playfield to confirm its eject via a playfield switch being hit.
Returns: True or False
Right now this is simple. If there are no playfield balls, then any
playfield switch hit is assumed to be from the newly-ejected ball. If
there are other balls on the playfield, then we can't use this
confirmation method since we don't know whether a playfield switch hit
is from the newly-ejected ball(s) or a current previously-live
playfield ball.
"""
if not self.balls:
return True
else:
return False
# todo look for other incoming balls?
# BALL SEARCH --------------------------------------------------------------
# todo make ball search work with plunger lanes with no switches. i.e. we
# don't want ball search to start until a switch is hit?
def ball_search_schedule(self, secs=None, force=False):
"""Schedules a ball search to start. By default it will schedule it
based on the time configured in the machine configuration files.
If a ball search is already scheduled, this method will reset that
schedule to the new time passed.
Args:
secs: Schedules the ball search that many secs from now.
force : Boolean to force a ball search. Set True to force a ball
search. Otherwise it will only schedule it if
self.flag_no_ball_search is False. Default is False
"""
if self.machine.config['ball_search']:
if not self.flag_no_ball_search or force is True:
if secs is not None:
start_ms = secs * 1000
else:
start_ms = (self.machine.config['ball_search']
['secs until ball search start'] * 1000)
self.log.debug("Scheduling a ball search for %s secs from now",
start_ms / 1000.0)
self.delay.reset("ball_search_start",
ms=start_ms,
callback=self.ball_search_begin)
def ball_search_disable(self):
"""Disables ball search.
Note this is used to prevent a future ball search from happening (like
when all balls become contained). This method is not used to cancel an
existing ball search. (Use `ball_search_end` for that.)
"""
self.log.debug("Disabling Ball Search")
self.delay.remove('ball_search_start')
示例3: SequenceShot
# 需要导入模块: from mpf.system.tasks import DelayManager [as 别名]
# 或者: from mpf.system.tasks.DelayManager import reset [as 别名]
class SequenceShot(Shot):
def __init__(self, machine, name, config, priority):
"""SequenceShot is where you need certain switches to be hit in the
right order, possibly within a time limit.
Subclass of `Shot`
Args:
machine: The MachineController object
name: String name of this shot.
config: Dictionary that holds the configuration for this shot.
"""
super(SequenceShot, self).__init__(machine, name, config, priority)
self.delay = DelayManager()
self.progress_index = 0
"""Tracks how far along through this sequence the current shot is."""
# convert our switches config to a list
if 'switches' in self.config:
self.config['switches'] = \
Config.string_to_list(self.config['switches'])
# convert our timout to ms
if 'time' in self.config:
self.config['time'] = Timing.string_to_ms(self.config['time'])
else:
self.config['time'] = 0
self.active_delay = False
self.enable()
def enable(self):
"""Enables the shot. If it's not enabled, the switch handlers aren't
active and the shot event will not be posted."""
super(SequenceShot, self).enable()
# create the switch handlers
for switch in self.config['switches']:
self.machine.switch_controller.add_switch_handler(
switch, self._switch_handler, return_info=True)
self.progress_index = 0
def disable(self):
"""Disables the shot. If it's disabled, the switch handlers aren't
active and the shot event will not be posted."""
super(SequenceShot, self).disable()
for switch in self.config['switches']:
self.machine.switch_controller.remove_switch_handler(
switch, self.switch_handler)
self.progress_index = 0
def _switch_handler(self, switch_name, state, ms):
# does this current switch meet the next switch in the progress index?
if switch_name == self.config['switches'][self.progress_index]:
# are we at the end?
if self.progress_index == len(self.config['switches']) - 1:
self.confirm_shot()
else:
# does this shot specific a time limit?
if self.config['time']:
# do we need to set a delay?
if not self.active_delay:
self.delay.reset(name='shot_timer',
ms=self.config['time'],
callback=self.reset)
self.active_delay = True
# advance the progress index
self.progress_index += 1
def confirm_shot(self):
"""Called when the shot is complete to confirm and reset it."""
# kill the delay
self.delay.remove('shot_timer')
# reset our shot
self.reset()
self.shot_made()
def reset(self):
"""Resets the progress without disabling the shot."""
self.log.debug("Resetting this shot")
self.progress_index = 0
self.active_delay = False