Skip to content

Commit cc707b7

Browse files
authored
Merge pull request missionpinball#1938 from bosh/randomizer_cleanup
clean up duplication in random_event_player and improve randomizer tests
2 parents 79ea211 + e110207 commit cc707b7

File tree

3 files changed

+184
-119
lines changed

3 files changed

+184
-119
lines changed

mpf/config_players/random_event_player.py

Lines changed: 27 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -23,48 +23,44 @@ def is_entry_valid_outside_mode(settings) -> bool:
2323
"""Return true if scope is not player."""
2424
return settings['scope'] != "player"
2525

26-
def _get_randomizer(self, settings, context, calling_context):
27-
key = "random_{}.{}".format(context, calling_context)
28-
if settings['scope'] == "player":
29-
if not self.machine.game.player[key]:
30-
self.machine.game.player[key] = Randomizer(
31-
settings['events'], self.machine, template_type="event")
32-
r'''player_var: random_(x).(y)
26+
def _build_randomizer(self, settings):
27+
randomizer = Randomizer(settings['events'], self.machine, template_type="event")
28+
29+
if settings['force_all']:
30+
randomizer.force_all = True
3331

34-
desc: Holds references to Randomizer settings that need to be
35-
tracked on a player basis. There is nothing you need to know
36-
or do with this, rather this is just FYI on what the player
37-
variables that start with "random\_" are.
38-
'''
32+
if not settings['force_different']:
33+
randomizer.force_different = False
3934

40-
if settings['force_all']:
41-
self.machine.game.player[key].force_all = True
35+
if settings['disable_random']:
36+
randomizer.disable_random = True
4237

43-
if not settings['force_different']:
44-
self.machine.game.player[key].force_different = False
38+
randomizer.fallback_value = settings.get('fallback_event')
39+
return randomizer
4540

46-
if settings['disable_random']:
47-
self.machine.game.player[key].disable_random = True
41+
def _get_randomizer(self, settings, context, calling_context):
42+
key = "random_{}.{}".format(context, calling_context)
43+
if settings['scope'] == "player":
44+
if not self.machine.game.player[key]:
45+
self.machine.game.player[key] = self._build_randomizer(settings)
4846

49-
self.machine.game.player[key].fallback_value = settings.get('fallback_event')
47+
'''player_var: random_(x).(y)
5048
49+
desc: Holds references to Randomizer settings that need to be
50+
tracked on a player basis. There is nothing you need to know
51+
or do with this, rather this is just FYI on what the player
52+
variables that start with "random_" are.
53+
'''
5154
return self.machine.game.player[key]
5255

5356
if key not in self._machine_wide_dict:
54-
self._machine_wide_dict[key] = Randomizer(
55-
settings['events'], self.machine, template_type="event")
56-
57-
if settings['force_all']:
58-
self._machine_wide_dict[key].force_all = True
59-
60-
if not settings['force_different']:
61-
self._machine_wide_dict[key].force_different = False
62-
63-
if settings['disable_random']:
64-
self._machine_wide_dict[key].disable_random = True
57+
self._machine_wide_dict[key] = self._build_randomizer(settings)
6558

66-
self._machine_wide_dict[key].fallback_value = settings.get('fallback_event')
59+
'''machine_var: random_(x).(y)
6760
61+
desc: Holds references to Randomizer settings that need to be
62+
tracked on a machine basis.
63+
'''
6864
return self._machine_wide_dict[key]
6965

7066
def play(self, settings, context, calling_context, priority=0, **kwargs):

mpf/core/randomizer.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
"""Generic list randomizer."""
2-
from uuid import uuid4
32
import random
43

54

@@ -13,13 +12,13 @@ def __init__(self, items, machine=None, template_type=None):
1312
self.force_different = True
1413
self.force_all = False
1514
self.disable_random = False
16-
# self.loop - property which sets force_all=True if loop==False
1715
self.items = list()
1816

17+
# self.loop - property which sets force_all=True if loop==False
1918
self._loop = True
19+
2020
self._template_type = template_type
2121
self.data = None
22-
self._uuid = uuid4()
2322

2423
if isinstance(items, (list, tuple)):
2524
for i in items:

0 commit comments

Comments
 (0)