missionpinball / mpf-mc

The Mission Pinball Framework Media Controller. Controls graphics, sounds, DMDs, and LCD displays in MPF.
http://missionpinball.org
MIT License
21 stars 42 forks source link

Improve validation/error message for sounds #263

Open jabdoa2 opened 7 years ago

jabdoa2 commented 7 years ago

Config ("Yes" is the offender here):

   pool_rightrampenter:
      type: random_force_all
      sounds:
         - Aghhhhh
         - Wheelchair_Noise2
         - whoa
         - Woah2
         - wonderful
         - Yes

Error:

2017-05-07 11:59:05,431 : ERROR : kivy : 'bool' object has no attribute 'split'
Traceback (most recent call last):
  File "c:\python34\lib\site-packages\mpfmc\commands\mc.py", line 168, in __init__
    thread_stopper=thread_stopper).run()
  File "c:\python34\lib\site-packages\kivy\app.py", line 828, in run
    runTouchApp()
  File "c:\python34\lib\site-packages\kivy\base.py", line 487, in runTouchApp
    EventLoop.window.mainloop()
  File "c:\python34\lib\site-packages\kivy\core\window\window_sdl2.py", line 619, in mainloop
    self._mainloop()
  File "c:\python34\lib\site-packages\kivy\core\window\window_sdl2.py", line 362, in _mainloop
    EventLoop.idle()
  File "c:\python34\lib\site-packages\kivy\base.py", line 327, in idle
    Clock.tick()
  File "c:\python34\lib\site-packages\kivy\clock.py", line 515, in tick
    self._process_events()
  File "c:\python34\lib\site-packages\kivy\clock.py", line 647, in _process_events
    event.tick(self._last_tick, remove)
  File "c:\python34\lib\site-packages\kivy\clock.py", line 406, in tick
    ret = callback(self._dt)
  File "c:\python34\lib\site-packages\mpfmc\uix\display.py", line 123, in _displays_initialized
    self.mc.displays_initialized()
  File "c:\python34\lib\site-packages\mpfmc\core\mc.py", line 236, in displays_initialized
    self._init()
  File "c:\python34\lib\site-packages\mpfmc\core\mc.py", line 283, in _init
    self.events.process_event_queue()
  File "c:\python34\lib\site-packages\mpf\core\events.py", line 575, in process_event_queue
    **event[3])
  File "c:\python34\lib\site-packages\mpf\core\events.py", line 543, in _process_event
    result = self._run_handlers(event, ev_type, kwargs)
  File "c:\python34\lib\site-packages\mpf\core\events.py", line 500, in _run_handlers
    result = handler.callback(**merged_kwargs)
  File "c:\python34\lib\site-packages\mpf\core\assets.py", line 183, in _create_assets
    self._create_asset_groups(config=self.machine.machine_config)
  File "c:\python34\lib\site-packages\mpf\core\assets.py", line 424, in _create_asset_groups
    ac['cls']))
  File "c:\python34\lib\site-packages\mpfmc\assets\sound.py", line 33, in __init__
    super().__init__(mc, name, config, member_cls)
  File "c:\python34\lib\site-packages\mpf\core\assets.py", line 630, in __init__
    name, number = asset.split('|')
AttributeError: 'bool' object has no attribute 'split'
qcapen commented 7 years ago

Also need to use the validator for all sound sections to ensure setting misspellings get caught (https://groups.google.com/forum/#!topic/mpf-users/eG_q4FH7bPw).