Skip to content

Commit

Permalink
add credits reset event
Browse files Browse the repository at this point in the history
  • Loading branch information
jabdoa2 committed Aug 24, 2020
1 parent cdfe1b5 commit 52453e2
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 0 deletions.
1 change: 1 addition & 0 deletions mpf/config_spec.yaml
Expand Up @@ -363,6 +363,7 @@ credits:
events: list|subconfig(credits_events)|None
pricing_tiers: list|subconfig(credits_pricing_tiers)|None
reset_earnings_events: list|event_handler|earnings_reset,factory_reset
reset_credits_events: list|event_handler|credits_reset,factory_reset
credits_switches:
switch: single|machine(switches)|None
value: single|template_float|0.25
Expand Down
9 changes: 9 additions & 0 deletions mpf/modes/credits/code/credits.py
Expand Up @@ -66,6 +66,9 @@ def mode_start(self, **kwargs):
for event in self.credits_config['reset_earnings_events']:
self.add_mode_event_handler(event, self._reset_earnings)

for event in self.credits_config['reset_credits_events']:
self.add_mode_event_handler(event, self._reset_credits)

if self.machine.settings.get_setting_value("free_play"):
self.enable_free_play(post_event=False)
else:
Expand All @@ -79,6 +82,12 @@ def _reset_earnings(self, **kwargs):
self.earnings = {}
self.data_manager.save_all(data=self.earnings)

def _reset_credits(self, **kwargs):
"""Reset credits."""
del kwargs
self.machine.variables.set_machine_var('credit_units', 0)
self._update_credit_strings()

def mode_stop(self, **kwargs):
"""Stop mode."""
self._set_free_play_string()
Expand Down
10 changes: 10 additions & 0 deletions mpf/tests/test_CreditsMode.py
Expand Up @@ -95,6 +95,7 @@ def testCredits(self):

self.assertEqual("CREDITS 1/2", self.machine.variables.get_machine_var('credits_string'))
self.assertEqual(0.25, self.machine.modes["credits"].earnings["money"]["total_value"])
self.assertMachineVarEqual(1.0, "credit_units")

self.assertMachineVarEqual(0.5, "price_per_game_raw_0")
self.assertMachineVarEqual("1 CREDITS $0.5", "price_per_game_string_0")
Expand Down Expand Up @@ -137,6 +138,15 @@ def testCredits(self):
self.assertEqual({}, self.machine.modes["credits"].earnings)
self.assertEqual({}, self.machine.modes["credits"].data_manager.written_data)

self.assertMachineVarEqual(6.0, "credit_units")
self.post_event("credits_reset")
self.advance_time_and_run(.1)
self.assertEqual("CREDITS 0", self.machine.variables.get_machine_var('credits_string'))
self.assertMachineVarEqual(0.0, "credit_units")

# should not be able to start a game without credits
self.start_game(False)

def testReplay(self):
# add coins
self.hit_and_release_switch("s_left_coin")
Expand Down

0 comments on commit 52453e2

Please sign in to comment.