Persisting the State of a Logic Block in a Player Variable
Related Config File Sections:
Prior to MPF 0.50 the state of logic blocks has been persisted to player
variables. This only longer holds true for player specific blocks (e.g.
if you set persist_state
to True
). In that case the variable will be
called (logic_block)_state
. For example, a logic block called
"logic_block_1" would store its state in a player variable called
logic_block_1_state. When you do not want to persist the value you can
reference it using device.counters.logic_block_1.value
(also if you
set it).
You can easily use this numerical value in a text widget to show the number of combos complete, or the number of pop bumper hits required for super jets, etc. This player variable "state" is different than the state of the logic block itself, which is an object with enabled, completed, and value attributes. Note the difference in accessing the logic block state as a dynamic value vs. placeholder text:
##! mode: my_mode
counters:
logic_block_1:
count_events: count_up_event
variable_player:
counter_logic_block_1_hit: # this is triggered when the counter changes
my_widget_placeholder: 100 * device.counters.logic_block_1.value
# The logic block stores the count as the 'value' attribute
widgets:
counter_widget:
- type: text
text: (my_widget_placeholder) Hits!
# This placeholder is set by variable_player when the counter changes
#! widget_player:
#! show_widget_event: counter_widget
##! test
#! start_game
#! start_mode my_mode
#! post show_widget_event
#! post count_up_event
#! advance_time_and_run .1
#! assert_text_on_top_slide "100 Hits!"
In this example we persist the value of the counter in the player
variable counter_hit
to use it in a slide.
Note
The player variable is only saved if the logic block is configured with
persist_state: True
. If persist_state
is False
, the logic block
value will _not be saved under any variable name (not even the
default).
Something missing or wrong? You can fix it!
This website is edited by people like you! Is something wrong or missing? Is something out of date, or can you explain it better?
Please help us! You can fix it yourself and be an official "open source" contributor!
It's easy! See our Beginner's guide to editing the docs.
Page navigation via the keyboard: < >
You can navigate this site via the keyboard. There are two modes:
General navigation, when search is not focused:
- F , S , / : open search dialog
- P , , : go to previous page
- N , . : go to next page
While using the search function:
- Down , Up : select next / previous result
- Esc , Tab : close search
- Enter : go to highlighted page in the results