diff --git a/src/Display.py b/src/Display.py new file mode 100644 index 0000000..e842299 --- /dev/null +++ b/src/Display.py @@ -0,0 +1,9 @@ +from src.networking.Networking import Networking + + +class Display: + def __init__(self, name): + self.name = name + + def write_score(self, score): + Networking.write(self.name, score) \ No newline at end of file diff --git a/src/GameState.py b/src/GameState.py new file mode 100644 index 0000000..e69de29 diff --git a/src/PlayerDisplay.py b/src/PlayerDisplay.py new file mode 100644 index 0000000..dfe35f4 --- /dev/null +++ b/src/PlayerDisplay.py @@ -0,0 +1,5 @@ +from src.Display import Display + +class PlayerDisplay(Display): + def __init__(self, name): + super(name) \ No newline at end of file diff --git a/src/PlayerState.py b/src/PlayerState.py new file mode 100644 index 0000000..8585db7 --- /dev/null +++ b/src/PlayerState.py @@ -0,0 +1,15 @@ +from src.networking.Networking import Networking + +class PlayerState: + def __init__(self, id, ballsToPlay, upperPlayfieldTime = 5, bonusTime = 0): + self.networking = networking + self.__id = id + self.__points = 0 + self.ballsLeft = ballsToPlay + self.upperPlayfieldTime = upperPlayfieldTime + self.bonusTime = bonusTime + + def addPoints(self, points): + self.__points += points + Networking.writeDisplayScore(self.__id, self.__points) + diff --git a/src/SpecialDisplay.py b/src/SpecialDisplay.py new file mode 100644 index 0000000..e6039e1 --- /dev/null +++ b/src/SpecialDisplay.py @@ -0,0 +1,25 @@ +from src.Display import Display + +class SpecialDisplay(Display): + def __init__(self, name): + super(name) + self.credits = 0 + self.gameTimeBonus = 0 + self.ballsToPlay = 0 + + def write_score(self): + super.write_score(int(str(self.credits).zfill(2) + + str(self.gameTimeBonus).zfill(2) + + str(self.ballsToPlay).zfill(2))) + + def write_ballsToPlay(self, ballsToPlay): + self.ballsToPlay = ballsToPlay + self.write_score() + + def write_gameTimeBonus(self, gameTimeBonus): + self.gameTimeBonus = gameTimeBonus + self.write_score() + + def write_credits(self, credits): + self.credits = credits + self.write_score() diff --git a/src/networking/FlippR_Networking.py b/src/networking/Networking.py similarity index 95% rename from src/networking/FlippR_Networking.py rename to src/networking/Networking.py index e3de1f1..5323b8b 100644 --- a/src/networking/FlippR_Networking.py +++ b/src/networking/Networking.py @@ -1,7 +1,9 @@ import requests_unixsocket as req import socket +from src.utils.Singleton import Singleton -class Networking: + +class Networking(metaclass=Singleton): def __init__(self, output_server_address, input_socket_address): self.server_address = "" self.input_socket = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) diff --git a/src/targets/Bank.py b/src/targets/Bank.py index 9a92428..99455ad 100644 --- a/src/targets/Bank.py +++ b/src/targets/Bank.py @@ -1,3 +1,5 @@ +from src.targets.Target import Target + class Bank(Target): def __init__(self, targets): self.targets = targets diff --git a/src/targets/BankTarget.py b/src/targets/BankTarget.py index 238b44c..561c93f 100644 --- a/src/targets/BankTarget.py +++ b/src/targets/BankTarget.py @@ -1,5 +1,4 @@ -from Target import Target - +from src.targets.Target import Target class BankTarget(Target): def __init__(self, points): diff --git a/src/targets/FirstFixedTarget.py b/src/targets/FirstFixedTarget.py index 2fd68b4..191f223 100644 --- a/src/targets/FirstFixedTarget.py +++ b/src/targets/FirstFixedTarget.py @@ -1,4 +1,4 @@ -from Target import Target +from src.targets.Target import Target class FirstFixedTarget(Target): diff --git a/src/targets/FixedSpecialOrangeTarget.py b/src/targets/FixedSpecialOrangeTarget.py index 253d68c..c081825 100644 --- a/src/targets/FixedSpecialOrangeTarget.py +++ b/src/targets/FixedSpecialOrangeTarget.py @@ -1,4 +1,4 @@ -from Target import Target +from src.targets.Target import Target # A standup target. When lit, it scores the Orange Special (operator # adjustable) for Nothing, Extra Ball, Replay, Super Bonus, or 300,000 diff --git a/src/targets/FixedSpecialRedTarget.py b/src/targets/FixedSpecialRedTarget.py index 4cb7ced..2c6ec2d 100644 --- a/src/targets/FixedSpecialRedTarget.py +++ b/src/targets/FixedSpecialRedTarget.py @@ -1,4 +1,4 @@ -from Target import Target +from src.targets.Target import Target # A standup target. When lit, it scores the Red Special (operator # adjustable) for Nothing, Extra Ball, Replay, Super Bonus, or 1,000,000 diff --git a/src/targets/LeftDropTarget.py b/src/targets/LeftDropTarget.py index 329de6a..5aa4f88 100644 --- a/src/targets/LeftDropTarget.py +++ b/src/targets/LeftDropTarget.py @@ -1,4 +1,4 @@ -from Target import Target +from src.targets.Target import Target class LeftDropTarget(Target): diff --git a/src/targets/LeftLaneButton2Target.py b/src/targets/LeftLaneButton2Target.py index b371bdd..61d589c 100644 --- a/src/targets/LeftLaneButton2Target.py +++ b/src/targets/LeftLaneButton2Target.py @@ -1,4 +1,4 @@ -from Target import Target +from src.targets.Target import Target class LeftLaneButton2Target(Target): diff --git a/src/targets/LeftLaneButton3Target.py b/src/targets/LeftLaneButton3Target.py index d8a876e..5fe2c35 100644 --- a/src/targets/LeftLaneButton3Target.py +++ b/src/targets/LeftLaneButton3Target.py @@ -1,4 +1,4 @@ -from Target import Target +from src.targets.Target import Target class LeftLaneButton3Target(Target): diff --git a/src/targets/LeftLaneButton4Target.py b/src/targets/LeftLaneButton4Target.py index 40f3666..4d8be65 100644 --- a/src/targets/LeftLaneButton4Target.py +++ b/src/targets/LeftLaneButton4Target.py @@ -1,4 +1,4 @@ -from Target import Target +from src.targets.Target import Target class LeftLaneButton4Target(Target): diff --git a/src/targets/LeftLaneButton5Target.py b/src/targets/LeftLaneButton5Target.py index 4e2ccbe..c0650fc 100644 --- a/src/targets/LeftLaneButton5Target.py +++ b/src/targets/LeftLaneButton5Target.py @@ -1,4 +1,4 @@ -from Target import Target +from src.targets.Target import Target class LeftLaneButton5Target(Target): diff --git a/src/targets/LeftPopBumperTarget.py b/src/targets/LeftPopBumperTarget.py index 9d9e61e..562626b 100644 --- a/src/targets/LeftPopBumperTarget.py +++ b/src/targets/LeftPopBumperTarget.py @@ -1,4 +1,4 @@ -from Target import Target +from src.targets.Target import Target class LeftPopBumperTarget(Target): diff --git a/src/targets/OutholeTarget.py b/src/targets/OutholeTarget.py index 45c0fe9..8e9d40e 100644 --- a/src/targets/OutholeTarget.py +++ b/src/targets/OutholeTarget.py @@ -1,3 +1,5 @@ +from src.targets.Target import Target + class OutholeTarget(Target): def __init__(self): super(100, 'Outhole Target') diff --git a/src/targets/RightDropTarget.py b/src/targets/RightDropTarget.py index f82de13..77c343a 100644 --- a/src/targets/RightDropTarget.py +++ b/src/targets/RightDropTarget.py @@ -1,4 +1,4 @@ -from Target import Target +from src.targets.Target import Target class RightDropTarget(Target): diff --git a/src/targets/RightInlaneTarget.py b/src/targets/RightInlaneTarget.py index c12635a..7761bd3 100644 --- a/src/targets/RightInlaneTarget.py +++ b/src/targets/RightInlaneTarget.py @@ -1,4 +1,4 @@ -from Target import Target +from src.targets.Target import Target class RightInlaneTarget(Target): diff --git a/src/targets/RightOutlaneKickerTarget.py b/src/targets/RightOutlaneKickerTarget.py index 61ce859..b79d232 100644 --- a/src/targets/RightOutlaneKickerTarget.py +++ b/src/targets/RightOutlaneKickerTarget.py @@ -1,4 +1,4 @@ -from Target import Target +from src.targets.Target import Target class RightOutlaneKickerTarget(Target): diff --git a/src/targets/RightOutlaneTarget.py b/src/targets/RightOutlaneTarget.py index e948d70..67d095d 100644 --- a/src/targets/RightOutlaneTarget.py +++ b/src/targets/RightOutlaneTarget.py @@ -1,4 +1,4 @@ -from Target import Target +from src.targets.Target import Target class RightOutlaneTarget(Target): diff --git a/src/targets/RightSlingshotTarget.py b/src/targets/RightSlingshotTarget.py index e7730da..5e79d0e 100644 --- a/src/targets/RightSlingshotTarget.py +++ b/src/targets/RightSlingshotTarget.py @@ -1,4 +1,4 @@ -from Target import Target +from src.targets.Target import Target class RightSlingshotTarget(Target): diff --git a/src/targets/SecondFixedTarget.py b/src/targets/SecondFixedTarget.py index dd2348d..7120f41 100644 --- a/src/targets/SecondFixedTarget.py +++ b/src/targets/SecondFixedTarget.py @@ -1,4 +1,4 @@ -from Target import Target +from src.targets.Target import Target class SecondFixedTarget(Target): diff --git a/src/targets/Target.py b/src/targets/Target.py index 9ae693d..ce05145 100644 --- a/src/targets/Target.py +++ b/src/targets/Target.py @@ -1,3 +1,6 @@ +from observable import Observable + + class Target(Observable): def __init__(self, points, name): self.points = points diff --git a/src/targets/UPRightDropTarget.py b/src/targets/UPRightDropTarget.py index 5c4b2cd..43b8320 100644 --- a/src/targets/UPRightDropTarget.py +++ b/src/targets/UPRightDropTarget.py @@ -1,4 +1,4 @@ -from Target import Target +from src.targets.Target import Target class UPRightDropTarget(Target): diff --git a/src/targets/UpperPlayfieldRollUnderTarget.py b/src/targets/UpperPlayfieldRollUnderTarget.py index de541df..1188ed6 100644 --- a/src/targets/UpperPlayfieldRollUnderTarget.py +++ b/src/targets/UpperPlayfieldRollUnderTarget.py @@ -1,4 +1,4 @@ -from Target import Target +from src.targets.Target import Target class UpperPlayfieldRollUnderTarget(Target): diff --git a/src/utils/Singleton.py b/src/utils/Singleton.py new file mode 100644 index 0000000..d6cc857 --- /dev/null +++ b/src/utils/Singleton.py @@ -0,0 +1,6 @@ +class Singleton(type): + _instances = {} + def __call__(cls, *args, **kwargs): + if cls not in cls._instances: + cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs) + return cls._instances[cls]