Skip to content

Commit

Permalink
add machine_vars section
Browse files Browse the repository at this point in the history
  • Loading branch information
jabdoa2 committed Mar 16, 2017
1 parent 0ccc2b1 commit df56dcc
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 1 deletion.
5 changes: 5 additions & 0 deletions mpf/core/config_spec.py
Expand Up @@ -598,6 +598,11 @@
__valid_in__: machine
balls_installed: single|int|1
min_balls: single|int|1
machine_vars:
__valid_in__: machine
initial_value: single|str|
value_type: single|enum(str,float,int)|int
persist: single|bool|True
matrix_light_settings:
__valid_in__: machine
default_light_fade_ms: single|int|0
Expand Down
16 changes: 16 additions & 0 deletions mpf/core/machine.py
Expand Up @@ -11,6 +11,7 @@
import sys
import threading

import copy
from pkg_resources import iter_entry_points

from mpf._version import __version__
Expand Down Expand Up @@ -276,6 +277,21 @@ def _load_machine_vars(self):

self.create_machine_var(name=name, value=settings['value'])

self._load_initial_machine_vars()

def _load_initial_machine_vars(self):
"""Load initial machine var values from config if they did not get loaded from data."""
if 'machine_vars' not in self.config:
return

config = self.config['machine_vars']
for name, element in config.items():
if name not in self.machine_vars:
element = self.config_validator.validate_config("machine_vars", copy.deepcopy(element))
self.create_machine_var(name=name,
value=Util.convert_to_type(element['initial_value'], element['value_type']),
persist=element['persist'])

def _check_crash_queue(self, time):
del time
try:
Expand Down
8 changes: 8 additions & 0 deletions mpf/tests/machine_files/player_vars/config/player_vars.yaml
Expand Up @@ -13,6 +13,14 @@ player_vars:
initial_value: hello
value_type: str # required for non-ints

machine_vars:
test1:
initial_value: 4
value_type: int
test2:
initial_value: '5'
value_type: str

# below is the min config we need to be able to start a game

game:
Expand Down
5 changes: 4 additions & 1 deletion mpf/tests/test_PlayerVars.py
Expand Up @@ -30,4 +30,7 @@ def test_initial_values(self):
self.machine.game.player.test = 7
self.assertEqual(7, self.machine.game.player.Test)
self.assertEqual(7, self.machine.game.player.test)
self.assertEqual(7, self.machine.game.player.vars["TesT"])
self.assertEqual(7, self.machine.game.player.vars["TesT"])

self.assertEqual(4, self.machine.get_machine_var("test1"))
self.assertEqual('5', self.machine.get_machine_var("test2"))

0 comments on commit df56dcc

Please sign in to comment.