Allowing tricks to be reverted

This commit is contained in:
Anonymus Raccoon
2020-04-25 14:37:48 +02:00
parent 178878bbce
commit bb3c646469
3 changed files with 20 additions and 1 deletions
+7
View File
@@ -10,5 +10,12 @@ class TestTrick(Trick):
def delay(self):
return 1
@property
def is_reversible(self):
return False
def revert(self):
pass
def run(self):
print("Test succeed")
+4 -1
View File
@@ -21,6 +21,8 @@ class AnonymousGoose:
def __del__(self):
if not self.stopped:
self.keyboard_listener.cancel()
for trick in self.tricks:
trick.revert()
def run(self):
next_trick_time = 5
@@ -34,7 +36,8 @@ class AnonymousGoose:
trick = Trick.get_random_trick()
next_trick_time = trick.delay
trick.run()
self.tricks.append(trick)
if trick.is_reversible:
self.tricks.append(trick)
except KeyboardInterrupt:
...
+9
View File
@@ -12,6 +12,15 @@ class Trick(ABC):
@abstractmethod
def delay(self):
return 1
@property
@abstractmethod
def is_reversible(self):
raise NotImplementedError
@abstractmethod
def revert(self):
raise NotImplementedError
@abstractmethod
def run(self):