Skip to content

Commit 8ce11b6

Browse files
committed
Merge branch 'fast_er_final' into 80_fast_er
2 parents b70c119 + 38d35fd commit 8ce11b6

28 files changed

Lines changed: 940 additions & 521 deletions

.github/workflows/prospector.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,11 @@ jobs:
1414
- name: Setup python
1515
uses: actions/setup-python@v4
1616
with:
17-
# Ubuntu can't run 3.12 because Pillow dependencies.
18-
python-version: 3.11
17+
python-version: 3.12
1918

2019
- name: Install MPF
2120
run: |
21+
sudo apt-get install -y libjpeg-dev
2222
pip install --upgrade pip setuptools wheel build prospector
2323
pip install -e .
2424

.github/workflows/run_tests.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,10 @@ jobs:
4646
with:
4747
python-version: ${{ matrix.python-version }}
4848

49+
- name: Install Linux dependencies
50+
if: matrix.os == 'ubuntu-latest'
51+
run: sudo apt-get install -y libjpeg-dev
52+
4953
- name: Install MPF
5054
run: |
5155
pip install --upgrade pip setuptools wheel build coveralls

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/config_spec.yaml

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -566,6 +566,7 @@ fast_net:
566566
default_quick_debounce_close: single|ms|2
567567
default_normal_debounce_open: single|ms|4
568568
default_normal_debounce_close: single|ms|4
569+
mute_unconfigured_switches: single|bool|false
569570
gi_hz: single|int|30
570571
lamp_hz: single|int|30
571572
fast_io_loop:
@@ -589,11 +590,11 @@ fast_exp_board:
589590
fast_breakout:
590591
port: single|enum(1,2,3)|
591592
model: single|str|
592-
led_ports: list|subconfig(fast_led_port)|None
593593
fast_led_port:
594-
port: single|str|
595-
type: single|enum(ws2812,apa-102)|ws2812
596-
leds: single|int|32
594+
port: single|int|
595+
type: single|enum(ws2812,apa-102,sk6812,mixed)|ws2812
596+
count: single|int|32
597+
rgbw_numbers: list|int|None # only used with the "mixed" type
597598
fast_aud:
598599
port: list|str|auto
599600
baud: single|int|230400
@@ -913,6 +914,7 @@ counter_control_events: # subconfig for mode counters
913914
action: single|enum(add,subtract,jump)|
914915
event: single|event_handler|
915916
value: single|template_int|None
917+
priority: single|int|0
916918
sequences:
917919
__valid_in__: machine, mode
918920
__type__: device

mpf/core/mode_device.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,13 @@ def __init__(self, machine: MachineController, name: str) -> None:
2222
self.mode = None # type: Optional[Mode]
2323

2424
async def device_added_to_mode(self, mode: Mode) -> None:
25-
"""Add device to a running mode.
25+
"""Add device to a loading mode.
2626
2727
Args:
2828
----
2929
mode: Mode which loaded the device
3030
"""
31-
del mode
31+
self.mode = mode
3232
await self._initialize()
3333

3434
def device_loaded_in_mode(self, mode: Mode, player: Player) -> None:
@@ -42,7 +42,7 @@ def device_loaded_in_mode(self, mode: Mode, player: Player) -> None:
4242
player: Current active player
4343
"""
4444
del player
45-
self.mode = mode
45+
del mode
4646

4747
@property
4848
def can_exist_outside_of_game(self) -> bool:
@@ -88,4 +88,3 @@ def device_removed_from_mode(self, mode: Mode) -> None:
8888
mode: Mode which stopped
8989
"""
9090
del mode
91-
self.mode = None

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)