Skip to content

Tick Repeat/Delay updates #156

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 22 commits into from
Dec 4, 2016
Merged
Changes from 1 commit
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Added getters for interval, adjusted_loops and original_loops
  • Loading branch information
Ayuto committed Dec 4, 2016
commit da6492d13bdebe9aa0939dbf63d2fa4605ec98e0
40 changes: 32 additions & 8 deletions addons/source-python/packages/source-python/listeners/tick.py
Original file line number Diff line number Diff line change
Expand Up @@ -260,14 +260,30 @@ def __init__(

# Set up private attributes
self._interval = 0
self._total_loops = math.inf
self._original_loops = math.inf
self._loops_elapsed = 0
self._adjusted_loops = 0
self._status = RepeatStatus.STOPPED
self._delay = None
self._loop_time_for_pause = None
self._original_start_time = None

@property
def interval(self):
"""Return the interval in which the callback will be called.

:rtype: int
"""
return self._interval

@property
def adjusted_loops(self):
"""Return the number of loops that have been adjusted.

:rtype: int
"""
return self._adjusted_loops

@property
def loops_remaining(self):
"""Return the remaining number of loops in the repeat.
Expand All @@ -290,7 +306,15 @@ def total_loops(self):

:rtype: int
"""
return self._total_loops + self._adjusted_loops
return self._original_loops + self._adjusted_loops

@property
def original_loops(self):
"""Return the number of loops the repeat has been started with.

:rtype: int
"""
return self._original_loops

@property
def total_time_remaining(self):
Expand All @@ -301,7 +325,7 @@ def total_time_remaining(self):
if self.delay_time_remaining is None:
return None
return (
self.loops_remaining * self._interval +
self.loops_remaining * self.interval +
self.delay_time_remaining
)

Expand All @@ -319,7 +343,7 @@ def total_time(self):

:rtype: float
"""
return self.total_loops * self._interval
return self.total_loops * self.interval

@property
def delay_time_remaining(self):
Expand Down Expand Up @@ -384,14 +408,14 @@ def start(self, interval, limit=math.inf, execute_on_start=False):

self._status = RepeatStatus.RUNNING
self._interval = interval
self._total_loops = limit
self._original_loops = limit
self._loops_elapsed = 0
self._adjusted_loops = 0
self._original_start_time = time.time()

# Start the delay
self._delay = Delay(
self._interval, self._execute,
self.interval, self._execute,
cancel_on_level_end=self.cancel_on_level_end
)

Expand Down Expand Up @@ -435,7 +459,7 @@ def restart(self):
self.stop()

# Start the repeat
self.start(self._interval, self.total_loops)
self.start(self.interval, self.total_loops)

def pause(self):
"""Pause the repeat.
Expand Down Expand Up @@ -575,7 +599,7 @@ def _execute(self):

# Call the delay again
self._delay = Delay(
self._interval, self._execute,
self.interval, self._execute,
cancel_on_level_end=self.cancel_on_level_end
)

Expand Down