Parent Rule List

From TrainzOnline
(Difference between revisions)
Jump to: navigation, search
m (added Trainz Plus where needed, replaced references to multiple Trainz versions with "Trainz")
 
(8 intermediate revisions by one user not shown)
Line 1: Line 1:
The information in this Wiki Page applies to '''TANE''', '''TRS19''' and '''Trainz Plus'''.
+
The information in this Wiki Page applies to '''TANE''', '''TRS19''', '''Trainz Plus''' and '''TRS22'''.
  
__TOC__
+
<table width=1000 bgcolor="lightcyan" cellpadding=2>
 
+
='''What Are Parent and Child Rules?'''=
+
 
+
<table cellpadding="4" bgcolor=#c1e7e7>
+
<tr valign="top>
+
<td>[[file:DotPoint.JPG|link=]]</td>
+
<td>'''Rules that act as ''Parent Rules'' can have one or more sub-rules or ''Child Rules'' under them'''</td>
+
</tr>
+
<tr valign="top>
+
<td>[[file:DotPoint.JPG|link=]]</td>
+
<td>'''Rules''' are edited and managed by the '''Session Editor''' in Surveyor</td>
+
</tr>
+
</table>
+
<br>
+
<table cellpadding="4" bgcolor="Aquamarine">
+
 
<tr valign="top">
 
<tr valign="top">
<td>[[file:LinkWiki.PNG|link=]]</td>
+
<td width=10>[[image:BlueDot10x10.png|link=]]</td>
<td>
+
<td>'''Parent Rules''' are session rules that can have one or more sub-rules or '''Child Rules''' indented under them</td>
More information on the '''Session Editor''' can be found on the '''Trainz Wiki Page''' at:-<br>
+
*'''[[How to Use Session Editor|Using the Session Editor]]'''
+
</td>
+
 
</tr>
 
</tr>
</table>
 
<br>
 
Most '''Parent Rules''' are used as "decision makers" in '''Trainz Sessions'''. They decide if or when other rules, the '''Child Rules''', will be executed. Some '''Parent Rules''' control how those '''Child Rules''' are executed.<br>
 
 
<table>
 
 
<tr valign="top">
 
<tr valign="top">
<td>[[file:Parent_Child.PNG|link=]]</td>
+
<td>[[image:BlueDot10x10.png|link=]]</td>
<td>Session rules can be arranged in a hierarchical fashion, in a series of levels as shown in the example on the left. A '''Parent Rule''' can be used to group together a set of rules at a lower level in the hierarchy. The rules that are grouped together under a '''Parent Rule''' are the '''Child Rules'''.<br><br>
+
<td>'''Parent Rules''' are the "decision makers" in interactive Sessions, they decide when and how the '''Child Rule''' will be executed</td>
 
+
'''Child Rules''' can also be '''Parent Rules''' that group together other rules at an even lower level. This creates multiple levels in the hierarchy.<br><br>
+
 
+
The '''Parent Rule''' at the head of each level in the hierarchy acts as a ''switch'' that directs the Trainz session to either ignore (skip over) or obey (execute) the '''Child Rules''' under its control.</td>
+
 
</tr>
 
</tr>
</table>
 
 
<table cellpadding="4" bgcolor=#ffffb0>
 
 
<tr valign="top">
 
<tr valign="top">
<td>[[file:NotePad.PNG|link=]]</td>
+
<td width=10>[[image:BlueDot10x10.png|link=]]</td>
<td><span style="font-size: 17px;">'''Notes:'''</span><br>
+
<td>Only certain rules can be '''Parent Rules'''</td>
*Only certain rules can be Parent Rules. See the Trainz Wiki page [[file:WikiLink.PNG|link=]] '''[[Parent Rule List|List of Parent Rules]]''' for details.
+
*Most Parent Rules will ''either'' wait for a specific event or perform a test or a comparison. They will execute the child rules when the event occurs or the test/comparison is ''true''.
+
*Any rule can be a Child Rule.</td>
+
 
</tr>
 
</tr>
 
</table>
 
</table>
 
<br>
 
<br>
<table cellpadding="4" bgcolor=#c1e7e7>
+
<table> <!-- BEGIN Nav Buttons Table -->
<tr valign="top>
+
<td>[[file:DotPoint.JPG|link=]]</td>
+
<td>'''Rules that act as ''Child Rules'' are indented under a ''Parent Rule''.'''</td>
+
</tr>
+
</table>
+
<br>
+
<table>
+
<tr>
+
<td valign="top">[[file:SessionRuleIndent.JPG|480px]]</td>
+
<td valign="top">
+
<table cellpadding="4" bgcolor=#ffffff>
+
<tr>
+
<td colspan="2">
+
----</td>
+
</tr>
+
 
<tr valign="top">
 
<tr valign="top">
<td>[[file:Steps.PNG|link=]]</td>
+
<td width=729>&nbsp;</td>
<td><span style="font-size: 17px;">'''Steps:'''</span><br>
+
<td width=46>&nbsp;</td>
To '''indent''' a rule,
+
<td width=75>&nbsp;</td>
#highlight (select) it
+
<td width=75>&nbsp;</td>
#click the '''Right Arrow ''Indent''''' tool at the bottom of the Session Editor
+
<td width=75>[[image:BackToBottom.png|link=#bottom|alt=Bottom|Bottom]]</td>
</td>
+
 
</tr>
 
</tr>
<tr>
+
</table> <!-- END Nav Buttons Table -->
<td colspan="2">
+
----</td>
+
</tr>
+
</table>
+
[[file:SessionRuleIndented.JPG|480px]]</td>
+
</tr>
+
</table>
+
==Parent/Child Rule Example==
+
<table>
+
<tr>
+
<td>[[file:Message_Popup.jpg|link=]]</td>
+
</tr>
+
</table>
+
  
In the screenshot above, the
+
='''Parent Rules that Apply a Logic Test Before Executing Child Rules'''=
*'''Trigger Check Rule''' is a Parent Rule. It has rules indented below it.
+
<table cellpadding=4 bgcolor=#ffffff>
**'''Simultaneous List Rule''' is indented under the '''Trigger Check Rule''' so it is a Child of that rule. It is also a Parent Rule as it has rules indented below it
+
***'''Message Popup Rule''' is indented under the '''Simultaneous List Rule''' so it is a Child of that rule.
+
***'''Wait Rule''' is indented under the '''Simultaneous List Rule''' so it is a Child of that rule. It is also a Parent Rule as it has rules indented below it
+
****'''Close Message Popup Rule''' is indented under the '''Wait Rule''' so it is a Child of that rule.
+
<br>
+
<span style="font-size: 17px;">'''Sequence of Events'''</span>
+
<br>
+
*When the consist identified in the '''Trigger Check Rule''', a Parent Rule, reaches the set trigger, the Trigger Event is activated and its Child Rules are executed.
+
**The '''Simultaneous List Rule''', a Parent Rule, is then executed. It executes all its Child Rules immediately and simultaneously.
+
***The '''Message Popup Rule''' is executed. At the same time ...
+
***The '''Wait Rule''' is executed. This is set to force a 20 second wait, after which its Child Rule ...
+
****The '''Close Message Popup Rule''' is executed. This closes the Message window created by the '''Message Popup Rule'''. Since it is the last rule under the '''Simultaneous List Rule''' it terminates that Parent Rule. Since it is the last rule under the '''Trigger Check Rule''', it also terminates that Parent Rule.
+
<br>
+
='''Ordered Lists vs Simultaneous Lists'''=
+
 
+
The majority of sibling Child Rules, rules that are at the same indent level under a Parent Rule, will be executed in order (an '''Ordered List''') or simultaneously (a '''Simultaneous List''').
+
 
+
==Ordered Lists==
+
'''Rule details can be found at [[file:WikiLink.PNG|link=]] [[Session_Rule_List_with_Parameters#Ordered_List_Rule|Ordered List Rule]]'''
+
<table cellpadding="4" bgcolor=#c1e7e7>
+
 
<tr valign="top">
 
<tr valign="top">
<td>[[file:DotPoint.JPG|link=]]</td>
+
<td width="58">[[image:RulesWiki.PNG|link=]]</td>
<td>'''Ordered Lists are shown with numbered icons on each Child Rule which indicates the order in which they will be executed.'''</td>
+
<td><span style="font-size: 17px;">'''Rules List:'''</span><br>
</tr>
+
</table>
+
  
<table>
+
*'''[[Session_Rule_List_with_Parameters#Achievement_Check_Rule|Achievement Check Rule]]'''. Executes Child Rules when set achievement levels have been reached.
<tr>
+
*'''[[Session_Rule_List_with_Parameters#Consist_Check_Rule|Consist Check Rule]]'''. Executes Child Rules when a consist contains specific vehicles or vehicle types has been formed.
<td>[[file:OrderedListRule.JPG|link=]]</td>
+
*'''[[Session_Rule_List_with_Parameters#Control_Check_Rule|Control Check Rule]]'''. Executes Child Rules when the driver control method has changed or a specific control method has been set.
<td>
+
*'''[[Session_Rule_List_with_Parameters#Coupler_Breakage_Check_Rule|Coupler Breakage Check Rule]]'''. Executes Child Rules when a coupler has been broken.
<table cellpadding="4" bgcolor=#eeeeee>
+
*'''[[Session_Rule_List_with_Parameters#Directional Trigger Check Rule|Directional Trigger Check Rule]]'''. Executes Child Rules when activated by a train moving in a set direction.
<tr>
+
*'''[[Session_Rule_List_with_Parameters#Driver Command Check Rule|Driver Command Check Rule]]'''. Executes Child Rules when the driver commands match a predefined list.
<td colspan="2">
+
*'''[[Session_Rule_List_with_Parameters#Multiple Junction Alignment Check Rule|Multiple Junction Alignment Check Rule]]'''. Executes Child Rules when specified junctions have been set.
----</td>
+
*'''[[Session_Rule_List_with_Parameters#Multiple Resource Check Rule|Multiple Resource Check Rule]]'''. Executes Child Rules when specified vehicles or industries have reached set commodity (product) levels.
</tr>
+
*'''[[Session_Rule_List_with_Parameters#Navigation Set Check Rule|Navigation Set Check Rule]]'''. Executes Child Rules when a navigation set is complete or incomplete.
<tr valign="top">
+
*'''[[Session_Rule_List_with_Parameters#Objective Check Rule|Objective Check Rule]]'''. Executes Child Rules when set session objectives have been achieved (or not achieved).
<td>[[file:Gears.PNG|link=]]</td>
+
*'''[[Session_Rule_List_with_Parameters#Resource Check Rule|Resource Check Rule]]'''. Executes Child Rules when a specified vehicle or industry has reached set commodity (product) levels.
<td><span style="font-size: 17px;">'''Settings:'''</span><br>
+
*'''[[Session_Rule_List_with_Parameters#Resource Verify Rule (fixed)|Resource Verify Rule]]'''. Executes Child Rules when a specified vehicle or industry has reached set commodity (product) levels.
An Ordered List can be set to run:-
+
*'''[[Session_Rule_List_with_Parameters#Safety System Engaged Check Rule|Safety System Engaged Check Rule]]'''. Executes Child Rules when the safety system has been engaged.
*a set number of times, OR
+
*'''[[Session_Rule_List_with_Parameters#Safety System Isolated Check Rule|Safety System Isolated Check Rule]]'''. Executes Child Rules when the safety system has been isolated.
*once only</td>
+
*'''[[Session_Rule_List_with_Parameters#Session Debug Rule|Session Debug Rule]]'''. Executes the first Child Rule if the user selects ''Debug Mode'' otherwise executes the second Child Rule.
</tr>
+
*'''[[Session_Rule_List_with_Parameters#Signal Passed At Danger Check Rule|Signal Passed at Danger Check Rule]]'''. Executes Child Rules when a consist passes a signal set to Stop.
<tr>
+
*'''[[Session_Rule_List_with_Parameters#Speeding Check Rule|Speeding Check Rule]]'''. Executes Child Rules when a consist exceeds a set speed.
<td colspan="2">
+
*'''[[Session_Rule_List_with_Parameters#Station Visited Check Rule|Station Visited Check Rule]]'''. Executes Child Rules when specified consists stop at specific stations or industries.
----</td>
+
*'''[[Session_Rule_List_with_Parameters#Timecheck Rule|Timecheck Rule]]'''. Executes Child Rules at a specific Trainz clock time.
</tr>
+
*'''[[Session_Rule_List_with_Parameters#Trackside Check Rule|Trackside Check Rule]]'''. Executes Child Rules when a consist enters the range of a specific trigger.
</table></td>
+
*'''[[Session_Rule_List_with_Parameters#Trigger Check Rule|Trigger Check Rule]]'''. Executes Child Rules when a consist enters the range of a specific trigger.
</tr>
+
*'''[[Session_Rule_List_with_Parameters#Variable Check Rule|Variable Check Rule]]'''. Executes Child Rules when a variable passes a specific logic test.
</table>
+
*'''[[Session_Rule_List_with_Parameters#Wait for Camera View Mode Rule|Wait for Camera View Mode Rule]]'''. Executes Child Rules when the camera is changed to a set view.
 
+
*'''[[Session_Rule_List_with_Parameters#Wait for Click on HUD Icon Rule|Wait for Click on HUD Icon Rule]]'''. Executes Child Rules when a specific HUD icon is clicked.
<table cellpadding="4" bgcolor=#c1e7e7>
+
*'''[[Session_Rule_List_with_Parameters#Wait for Derailment Rule|Wait for Derailment Rule]]'''. Executes Child Rules when a consist is derailed.
<tr valign="top">
+
*'''[[Session_Rule_List_with_Parameters#Wait for Driver On/Off Train Rule|Wait for Driver On/Off Train Rule]]'''. Executes Child Rules when a driver gets on or off a train.
<td>[[file:DotPoint.JPG|link=]]</td>
+
*'''[[Session_Rule_List_with_Parameters#Wait for Driver/Train to be Locally Owned Rule|Wait for Driver/Train to be Locally Owned Rule]]'''. Executes child rules when a specific driver or vehicle is locally owned.
<td>'''Each Child Rule in the sequence must be completed before the next Child Rule can be executed.'''</td>
+
*'''[[Session_Rule_List_with_Parameters#Wait on Navigation Point Rule|Wait on Navigation Point Rule]]'''. Executes child rules when a specific navigation point is completed.
 +
*'''[[Session_Rule_List_with_Parameters#Wait on Train Stop/Start Rule|Wait on Train Stop/Start Rule]]'''. Executes child rules when a train stops or starts moving.
 +
*'''[[Session_Rule_List_with_Parameters#Wait on Waybill Screen/Main Screen Rule|Wait on Waybill Screen/Main Screen Rule]]'''. Executes child rules when the Waybill window is opened or closed.
 +
*'''[[Session_Rule_List_with_Parameters#Wait Rule|Wait Rule]]'''. Executes child rules after waiting for set number of seconds.</td>
 
</tr>
 
</tr>
 
</table>
 
</table>
 
<br>
 
<br>
<table cellpadding="4" bgcolor=#ffffb0>
 
<tr valign="top">
 
<td>[[file:NotePad.PNG|link=]]</td>
 
<td><span style="font-size: 17px;">'''Notes:'''</span><br>
 
*Because some rules will wait for an event (such as a mouse click, timer, consist trigger, load trigger, etc) before they are completed, it is possible for the Ordered List to ''hang'' indefinitely waiting for the event.
 
*An Ordered List is completed when the last Child Rule is completed.
 
*If possible, place Child Rules that are event dependent (such as the '''Message Popup Rule''') at the end of an ordered list.</td>
 
</tr>
 
</table>
 
  
==Simultaneous Lists==
+
='''Parent Rules that Do Not Apply a Logic Test Before Executing Child Rules'''=
'''Rule details can be found at [[file:WikiLink.PNG|link=]] [[Session_Rule_List_with_Parameters#Simultaneous_List_Rule|Simultaneous List Rule]]'''
+
<table cellpadding=4 bgcolor=#ffffff>
<table cellpadding="4" bgcolor=#c1e7e7>
+
 
<tr valign="top">
 
<tr valign="top">
<td>[[file:DotPoint.JPG|link=]]</td>
+
<td width="58">[[image:RulesWiki.PNG|link=]]</td>
<td>'''Simultaneous Lists are shown with equality ("=") icons on each Child Rule which indicates that they will be executed at the same time.'''</td>
+
<td><span style="font-size: 17px;">'''Rules List:'''</span><br>
</tr>
+
</table>
+
  
<table>
+
*'''[[Session_Rule_List_with_Parameters#Ordered List Rule|Ordered List Rule]]'''. Executes all Child Rules individually in '''sequential order'''.
<tr>
+
*'''[[Session_Rule_List_with_Parameters#Progressive List Rule|Progressive List Rule]]'''. Executes Child Rules '''progressively''' each time the list is run.
<td>[[file:SimultaneousListRule.JPG|link=]]</td>
+
*'''[[Session_Rule_List_with_Parameters#Random List Rule|Random List Rule]]'''. Executes once only and '''randomly selects one Child Rule''' to execute.
<td>
+
*'''[[Session_Rule_List_with_Parameters#Reset List Rule|Reset List Rule]]'''. Executes '''all''' Child Rules in order and '''continuously'''.
<table cellpadding="4" bgcolor=#eeeeee>
+
*'''[[Session_Rule_List_with_Parameters#Simultaneous List Rule|Simultaneous List Rule]]'''. Executes '''all''' Child Rules '''simultaneously'''.</td>
<tr>
+
<td colspan="2">
+
----</td>
+
</tr>
+
<tr valign="top">
+
<td>[[file:Gears.PNG|link=]]</td>
+
<td><span style="font-size: 17px;">'''Settings:'''</span><br>
+
A Simultaneous List can be set to complete when:-
+
*all the Child Rules are completed, OR
+
*any one of the Child Rules has been completed</td>
+
</tr>
+
<tr>
+
<td colspan="2">
+
----</td>
+
</tr>
+
</table></td>
+
 
</tr>
 
</tr>
 
</table>
 
</table>
 
<br>
 
<br>
='''Other Types of Lists'''=
+
<table> <!-- BEGIN Nav Buttons Table -->
 
+
==Progressive Lists==
+
'''Rule details can be found at [[file:WikiLink.PNG|link=]] [[Session_Rule_List_with_Parameters#Progressive_List_Rule|Progressive List Rule]]'''
+
<table cellpadding="4" bgcolor=#c1e7e7>
+
 
<tr valign="top">
 
<tr valign="top">
<td>[[file:DotPoint.JPG|link=]]</td>
+
<td width=729><span id="bottom"></span>&nbsp;</td>
<td>'''On the first run of a Progressive List, only the first Child Rule is executed. On the second run, the second Child Rule is executed, on the third run the third Child Rule is executed, etc.'''</td>
+
<td width=46>[[image:BackToTop.png|link=#top|alt=Top|Top]]</td>
 +
<td width=75>&nbsp;</td>
 +
<td width=75>&nbsp;</td>
 +
<td width=75>&nbsp;</td>
 
</tr>
 
</tr>
</table>
+
</table> <!-- END Nav Buttons Table -->
 
+
<table>
+
<tr>
+
<td>[[file:ProgressiveListRules.JPG|link=]]</td>
+
<td>
+
<table cellpadding="4" bgcolor=#eeeeee>
+
<tr>
+
<td colspan="2">
+
----</td>
+
</tr>
+
<tr valign="top">
+
<td>[[file:Gears.PNG|link=]]</td>
+
<td><span style="font-size: 17px;">'''Settings:'''</span><br>
+
A '''Progressive List''' can be set to:-
+
*repeat the sequence after the last child rule has been executed, OR
+
*terminate (no further repeats) after the last child rule has been executed</td>
+
</tr>
+
<tr>
+
<td colspan="2">
+
----</td>
+
</tr>
+
</table></td>
+
</tr>
+
</table>
+
<br>
+
 
+
==Random Lists==
+
'''Rule details can be found at [[file:WikiLink.PNG|link=]] [[Session_Rule_List_with_Parameters#Random_List_Rule|Random List Rule]]'''
+
<table cellpadding="4" bgcolor=#c1e7e7>
+
<tr valign="top">
+
<td>[[file:DotPoint.JPG|link=]]</td>
+
<td>'''A Random List will run <span style="color: red;">ONLY ONCE</span> and will randomly select a single Child Rule to execute.'''</td>
+
</tr>
+
</table>
+
 
+
<table>
+
<tr>
+
<td>[[file:RandomListRules.JPG|link=]]</td>
+
</tr>
+
</table>
+
 
+
==Reset Lists==
+
'''Rule details can be found at [[file:WikiLink.PNG|link=]] [[Session_Rule_List_with_Parameters#Reset_List_Rule|Reset List Rule]]'''
+
<table cellpadding="4" bgcolor=#c1e7e7>
+
<tr valign="top">
+
<td>[[file:DotPoint.JPG|link=]]</td>
+
<td>'''A Reset List will execute continuously, it will never terminate. Each time through the list all the Child Rules will be reset and executed again.'''</td>
+
</tr>
+
</table>
+
 
+
<table>
+
<tr>
+
<td>[[file:ResetListRules.JPG|link=]]</td>
+
</tr>
+
</table>
+
<br>
+
='''Related Links'''=
+
 
+
<table cellpadding="4" bgcolor=#ffffff>
+
<tr valign="top">
+
<td>[[file:LinkWiki.PNG|link=]]</td>
+
<td>
+
*'''[[How to Use Message Popup Rule|Using Message Popups]]'''
+
*'''[[How to Use Navigation Point Rules|Using Navigation Points]]'''
+
*'''[[How to Use Session Editor|Using the Session Editor]]'''
+
</td>
+
</tr>
+
</table>
+
 
+
 
----
 
----
 
----
 
----
<br>
 
 
='''Trainz Wiki'''=
 
='''Trainz Wiki'''=
<table cellpadding="4" bgcolor=#ffffff>
+
<table width=1000>
 +
<tr valign="top">
 +
<td>
 +
<table width=500 cellpadding=2 bgcolor=#ffffff>
 
<tr valign="top">
 
<tr valign="top">
<td>[[file:TrainzWiki.png|link=]]</td>
+
<td width=80>[[image:TrainzWiki.png|link=]]</td>
 
<td>
 
<td>
 
<span style="font-size: 17px;">'''More Tutorials and Guides to Using Trainz'''</span><br>
 
<span style="font-size: 17px;">'''More Tutorials and Guides to Using Trainz'''</span><br>
Line 285: Line 108:
 
</tr>
 
</tr>
 
</table>
 
</table>
 
+
</td>
 +
<td>
 +
<table width=500 cellpadding=4 bgcolor="aquamarine">
 +
<tr valign="top">
 +
<td width=50>[[image:LinkWiki.PNG|link=]]</td>
 +
<td>
 +
<span style="font-size: 17px;">'''Related Links'''</span><br>
 +
*'''[[How to Use Parent and Child Rules|How to Use Parent and Child Rules]]'''
 +
</td>
 +
</tr>
 +
</table>
 +
</td>
 +
</tr>
 +
</table>
 +
----
 +
This page was created by Trainz user '''<span class="plainlinks">[http://online.ts2009.com/mediaWiki/index.php/User:Pware pware]</span>''' in May 2018 and was last updated as shown below.
 +
----
 
[[Category:How-to guides]][[Category:Rules]]
 
[[Category:How-to guides]][[Category:Rules]]

Latest revision as of 22:12, 23 November 2023

The information in this Wiki Page applies to TANE, TRS19, Trainz Plus and TRS22.

BlueDot10x10.png Parent Rules are session rules that can have one or more sub-rules or Child Rules indented under them
BlueDot10x10.png Parent Rules are the "decision makers" in interactive Sessions, they decide when and how the Child Rule will be executed
BlueDot10x10.png Only certain rules can be Parent Rules


        Bottom

[edit] Parent Rules that Apply a Logic Test Before Executing Child Rules

RulesWiki.PNG Rules List:


[edit] Parent Rules that Do Not Apply a Logic Test Before Executing Child Rules

RulesWiki.PNG Rules List:


  Top      


[edit] Trainz Wiki

TrainzWiki.png

More Tutorials and Guides to Using Trainz

LinkWiki.PNG

Related Links


This page was created by Trainz user pware in May 2018 and was last updated as shown below.


Personal tools