Skip to content

Commit ba32634

Browse files
authored
Merge pull request #1824 from missionpinball/pluginplayer-template-eval
Evaluate PluginPlayer Templates prior to BCP
2 parents 8dd8051 + 922df34 commit ba32634

File tree

3 files changed

+14
-2
lines changed

3 files changed

+14
-2
lines changed

mpf/config_players/plugin_player.py

+12-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
"""Plugin config player."""
22
from mpf.config_players.device_config_player import DeviceConfigPlayer
3+
from mpf.core.placeholder_manager import BaseTemplate, NativeTypeTemplate
34

45

56
class PluginPlayer(DeviceConfigPlayer):
@@ -85,9 +86,19 @@ def play(self, settings, context, calling_context, priority=0, **kwargs):
8586
# this play event won't be swallowed.
8687
if '_from_bcp' in kwargs:
8788
del kwargs['_from_bcp']
89+
# If any templates need evaluating, do so *before* sending via BCP
90+
eval_settings = {}
91+
for s, settings_dict in settings.items():
92+
for key, value in settings_dict.items():
93+
if isinstance(value, (BaseTemplate, NativeTypeTemplate)):
94+
if s not in eval_settings:
95+
eval_settings[s] = settings_dict.copy()
96+
eval_settings[s][key] = value.evaluate(kwargs)
97+
8898
self.machine.bcp.interface.bcp_trigger(
8999
name='{}_play'.format(self.show_section),
90-
settings=settings, context=context, calling_context=calling_context,
100+
settings={**settings, **eval_settings},
101+
context=context, calling_context=calling_context,
91102
priority=priority, **kwargs)
92103

93104
def clear_context(self, context):

mpf/config_spec.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1699,7 +1699,7 @@ sound_player:
16991699
pan: single|float_or_token|None
17001700
loops: single|int_or_token|None
17011701
priority: single|int_or_token|None
1702-
start_at: single|secs|None
1702+
start_at: single|template_secs|None
17031703
fade_in: single|secs|None
17041704
fade_out: single|secs|None
17051705
about_to_finish_time: single|secs|-1

mpf/modes/attract/code/attract.py

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
from mpf.modes.carousel.code.carousel import Carousel
44

5+
56
class Attract(Carousel):
67

78
"""Default mode running in a machine when a game is not in progress.

0 commit comments

Comments
 (0)