<causalConnector id="onKeySelectionAttNodeTestStopSetStart">
<connectorParam name="keyCode"/>
<connectorParam name="value"/>
<connectorParam name="setValue"/>
<compoundCondition operator="and">
<simpleCondition role="onSelection" key="$keyCode"/>
<assessmentStatement comparator="eq">
<attributeAssessment role="attNodeTest" eventType="attribution" attributeType="nodeProperty"/>
<valueAssessment value="$value"/>
</assessmentStatement>
</compoundCondition>
<compoundAction operator="seq">
<simpleAction role="stop"/>
<simpleAction role="set" value="$setValue"/>
<simpleAction role="start"/>
</compoundAction>
</causalConnector>
Até aqui tudo bem, mas quando uso o conector em um link, como este:
<link id="page1-2" xconnector="onKeySelectionAttNodeTestStopSetStart">
<bind component="leftButton" role="onSelection">
<bindParam name="keyCode" value="CURSOR_RIGHT"/>
</bind>
<bind role="attNodeTest" component="program" interface="page">
<bindParam name="value" value="1"/>
</bind>
<bind component="foodName" role="stop"/>
<bind component="program" interface="page" role="set">
<bindParam name="setValue" value="2"/>
</bind>
<bind component="foodName" role="start"/>
</link>
O NCL Eclipse informa o seguinte erro:
Papel <attNodeTest> não definido no elemento xconnector ('onKeySelectionAttNodeTestStopSetStart').
e marca (sublinha) de vermelho a primeira linha do link.
No entanto, o código roda normalmente no Ginga-NCL Virtual Set-top Box.
Há algo de errado na sintaxe do código ou o problema está no NCL Eclipse?
Atenciosamente,
José Ricardo
Autor: José Ricardo Júnior
55 comentários
<area id="ancora" .../>
</media>
<media id="referenciando" refer="teste"/> Note que, por referenciar a mídia "teste", a mídia "referenciando" herda a âncora "ancora". MAS, ao criar um elo com o seguinte bind: <bind component="referenciando" interface="ancora" ... /> O NCL Eclipse vai erroneamente indicar um erro informando que o elemento "referenciando" não possui a interface "ancora" quando na verdade possui. O mesmo erro se repete caso se trate de uma propriedade. Em encontrando outros problemas de validação, favor informar nesta trilha para pronta correção. Carlos
<!-- $Id: main.ncl,v 1.3 2009/01/16 15:49:25 root Exp $ -->
<!--
main.ncl
14jan2009, gflima@telemidia.puc-rio.br Jogo da velha (tic-tac-toe) em NCL
-->
<ncl id="velha" xmlns="http://www.ncl.org.br/NCL3.0/EDTVProfile">
<head>
<regionBase>
<region id="rgScreen" width="62.5%" height="92.7%"
top="2.5%" left="18.75%" zIndex="0"> <!-- messages and options -->
<region id="rgTitle" width="100%" height="18.24%"
top="0" left="0" zIndex="2"/>
<region id="rgPlayAgain" width="50%" height="15.82%"
top="84.17%" left="0" zIndex="2"/>
<region id="rgExit" width="50%" height="15.82%"
top="84.17%" left="50%" zIndex="2"/>
<region id="rgMessages" width="75%" height="65.93%"
top="18.24%" left="12.5%" zIndex="4"/> <!-- board -->
<region id="rgGrid" width="75%" height="65.93%"
top="18.24%" left="12.5%" zIndex="2">
<!-- 1st line -->
<region id="rgPos0" width="31.66%" height="31.66%"
top="0" left="0" zIndex="4"/>
<region id="rgPos1" width="31.66%" height="31.66%"
top="0" left="34%" zIndex="4"/>
<region id="rgPos2" width="31.66%" height="31.66%"
top="0" left="68%" zIndex="4"/>
<!-- 2nd line -->
<region id="rgPos3" width="31.66%" height="31.66%"
top="34%" left="0" zIndex="4"/>
<region id="rgPos4" width="31.66%" height="31.66%"
top="34%" left="34%" zIndex="4"/>
<region id="rgPos5" width="31.66%" height="31.66%"
top="34%" left="68%" zIndex="4"/>
<!-- 3rd line -->
<region id="rgPos6" width="31.66%" height="31.66%"
top="68%" left="0" zIndex="4"/>
<region id="rgPos7" width="31.66%" height="31.66%"
top="68%" left="34%" zIndex="4"/>
<region id="rgPos8" width="31.66%" height="31.66%"
top="68%" left="68%" zIndex="4"/>
</region>
</region>
</regionBase> <descriptorBase>
<descriptor id="dTitle" region="rgTitle"/>
<descriptor id="dMessages" region="rgMessages"/> <descriptor id="dPlayAgain" region="rgPlayAgain"
focusIndex="ixPlayAgain"
moveUp="ixExit" moveDown="ixExit"
moveRight="ixExit" moveLeft="ixExit"
focusSrc="media/play_again_on.png"
focusBorderWidth="0"/> <descriptor id="dExit" region="rgExit"
focusIndex="ixExit"
moveUp="ixPlayAgain" moveDown="ixPlayAgain"
moveRight="ixPlayAgain" moveLeft="ixPlayAgain"
focusSrc="media/exit_on.png"
focusBorderWidth="0"/> <descriptor id="dGrid" region="rgGrid"/>
<!-- 1st line -->
<descriptor id="dPos0" region="rgPos0" focusIndex="0"
moveUp="6" moveDown="3" moveRight="1" moveLeft="2"
focusBorderWidth="3" focusBorderColor="yellow"
selBorderColor="red" />
<descriptor id="dPos1" region="rgPos1" focusIndex="1"
moveUp="7" moveDown="4" moveRight="2" moveLeft="0"
focusBorderWidth="3" focusBorderColor="yellow"
selBorderColor="red" />
<descriptor id="dPos2" region="rgPos2" focusIndex="2"
moveUp="8" moveDown="5" moveRight="0" moveLeft="1"
focusBorderWidth="3" focusBorderColor="yellow"
selBorderColor="red" />
<!-- 2nd line -->
<descriptor id="dPos3" region="rgPos3" focusIndex="3"
moveUp="0" moveDown="6" moveRight="4" moveLeft="5"
focusBorderWidth="3" focusBorderColor="yellow"
selBorderColor="red"/>
<descriptor id="dPos4" region="rgPos4" focusIndex="4"
moveUp="1" moveDown="7" moveRight="5" moveLeft="3"
focusBorderWidth="3" focusBorderColor="yellow"
selBorderColor="red"/>
<descriptor id="dPos5" region="rgPos5" focusIndex="5"
moveUp="2" moveDown="8" moveRight="3" moveLeft="4"
focusBorderWidth="3" focusBorderColor="yellow"
selBorderColor="red"/>
<!-- 3rd line -->
<descriptor id="dPos6" region="rgPos6" focusIndex="6"
moveUp="3" moveDown="0" moveRight="7" moveLeft="8"
focusBorderWidth="3" focusBorderColor="yellow"
selBorderColor="red"/>
<descriptor id="dPos7" region="rgPos7" focusIndex="7"
moveUp="4" moveDown="1" moveRight="8" moveLeft="6"
focusBorderWidth="3" focusBorderColor="yellow"
selBorderColor="red"/>
<descriptor id="dPos8" region="rgPos8" focusIndex="8"
moveUp="5" moveDown="2" moveRight="6" moveLeft="7"
focusBorderWidth="3" focusBorderColor="yellow"
selBorderColor="red"/>
</descriptorBase> <ruleBase> <!-- x wins -->
<compositeRule id="rXWin" operator="or">
<!-- x wins line -->
<compositeRule id="rXWinLine" operator="or">
<compositeRule id="rXWinLine0" operator="and">
<rule id="rXWinLine0_pos0" var="_pos0" comparator="eq"
value="x"/>
<rule id="rXWinLine0_pos1" var="_pos1" comparator="eq"
value="x"/>
<rule id="rXWinLine0_pos2" var="_pos2" comparator="eq"
value="x"/>
</compositeRule>
<compositeRule id="rXWinLine1" operator="and">
<rule id="rXWinLine1_pos3" var="_pos3" comparator="eq"
value="x"/>
<rule id="rXWinLine1_pos4" var="_pos4" comparator="eq"
value="x"/>
<rule id="rXWinLine1_pos5" var="_pos5" comparator="eq"
value="x"/>
</compositeRule>
<compositeRule id="rXWinLine2" operator="and">
<rule id="rXWinLine2_pos6" var="_pos6" comparator="eq"
value="x"/>
<rule id="rXWinLine2_pos7" var="_pos7" comparator="eq"
value="x"/>
<rule id="rXWinLine2_pos8" var="_pos8" comparator="eq"
value="x"/>
</compositeRule>
</compositeRule>
<!-- x wins column -->
<compositeRule id="rXWinCol" operator="or">
<compositeRule id="rXWinCol0" operator="and">
<rule id="rXWinCol0_pos0" var="_pos0" comparator="eq"
value="x"/>
<rule id="rXWinCol0_pos3" var="_pos3" comparator="eq"
value="x"/>
<rule id="rXWinCol0_pos6" var="_pos6" comparator="eq"
value="x"/>
</compositeRule>
<compositeRule id="rXWinCol1" operator="and">
<rule id="rXWinCol1_pos1" var="_pos1" comparator="eq"
value="x"/>
<rule id="rXWinCol1_pos4" var="_pos4" comparator="eq"
value="x"/>
<rule id="rXWinCol1_pos7" var="_pos7" comparator="eq"
value="x"/>
</compositeRule>
<compositeRule id="rXWinCol2" operator="and">
<rule id="rXWinCol2_pos2" var="_pos2" comparator="eq"
value="x"/>
<rule id="rXWinCol2_pos5" var="_pos5" comparator="eq"
value="x"/>
<rule id="rXWinCol2_pos8" var="_pos8" comparator="eq"
value="x"/>
</compositeRule>
</compositeRule>
<!-- x wins diagonal -->
<compositeRule id="rXWinDia" operator="or">
<compositeRule id="rXWinDia0" operator="and">
<rule id="rXWinDia0_pos0" var="_pos0" comparator="eq"
value="x"/>
<rule id="rXWinDia0_pos4" var="_pos4" comparator="eq"
value="x"/>
<rule id="rXWinDia0_pos8" var="_pos8" comparator="eq"
value="x"/>
</compositeRule>
<compositeRule id="rXWinDia1" operator="and">
<rule id="rXWinDia1_pos2" var="_pos2" comparator="eq"
value="x"/>
<rule id="rXWinDia1_pos4" var="_pos4" comparator="eq"
value="x"/>
<rule id="rXWinDia1_pos6" var="_pos6" comparator="eq"
value="x"/>
</compositeRule>
</compositeRule>
</compositeRule> <!-- o wins -->
<compositeRule id="rOWin" operator="or">
<!-- o wins line -->
<compositeRule id="rOWinLine" operator="or">
<compositeRule id="rOWinLine0" operator="and">
<rule id="rOWinLine0_pos0" var="_pos0" comparator="eq"
value="o"/>
<rule id="rOWinLine0_pos1" var="_pos1" comparator="eq"
value="o"/>
<rule id="rOWinLine0_pos2" var="_pos2" comparator="eq"
value="o"/>
</compositeRule>
<compositeRule id="rOWinLine1" operator="and">
<rule id="rOWinLine1_pos3" var="_pos3" comparator="eq"
value="o"/>
<rule id="rOWinLine1_pos4" var="_pos4" comparator="eq"
value="o"/>
<rule id="rOWinLine1_pos5" var="_pos5" comparator="eq"
value="o"/>
</compositeRule>
<compositeRule id="rOWinLine2" operator="and">
<rule id="rOWinLine2_pos6" var="_pos6" comparator="eq"
value="o"/>
<rule id="rOWinLine2_pos7" var="_pos7" comparator="eq"
value="o"/>
<rule id="rOWinLine2_pos8" var="_pos8" comparator="eq"
value="o"/>
</compositeRule>
</compositeRule>
<!-- o wins column -->
<compositeRule id="rOWinCol" operator="or">
<compositeRule id="rOWinCol0" operator="and">
<rule id="rOWinCol0_pos0" var="_pos0" comparator="eq"
value="o"/>
<rule id="rOWinCol0_pos3" var="_pos3" comparator="eq"
value="o"/>
<rule id="rOWinCol0_pos6" var="_pos6" comparator="eq"
value="o"/>
</compositeRule>
<compositeRule id="rOWinCol1" operator="and">
<rule id="rOWinCol1_pos1" var="_pos1" comparator="eq"
value="o"/>
<rule id="rOWinCol1_pos4" var="_pos4" comparator="eq"
value="o"/>
<rule id="rOWinCol1_pos7" var="_pos7" comparator="eq"
value="o"/>
</compositeRule>
<compositeRule id="rOWinCol2" operator="and">
<rule id="rOWinCol2_pos2" var="_pos2" comparator="eq"
value="o"/>
<rule id="rOWinCol2_pos5" var="_pos5" comparator="eq"
value="o"/>
<rule id="rOWinCol2_pos8" var="_pos8" comparator="eq"
value="o"/>
</compositeRule>
</compositeRule>
<!-- o wins diagonal -->
<compositeRule id="rOWinDia" operator="or">
<compositeRule id="rOWinDia0" operator="and">
<rule id="rOWinDia0_pos0" var="_pos0" comparator="eq"
value="o"/>
<rule id="rOWinDia0_pos4" var="_pos4" comparator="eq"
value="o"/>
<rule id="rOWinDia0_pos8" var="_pos8" comparator="eq"
value="o"/>
</compositeRule>
<compositeRule id="rOWinDia1" operator="and">
<rule id="rOWinDia1_pos2" var="_pos2" comparator="eq"
value="o"/>
<rule id="rOWinDia1_pos4" var="_pos4" comparator="eq"
value="o"/>
<rule id="rOWinDia1_pos6" var="_pos6" comparator="eq"
value="o"/>
</compositeRule>
</compositeRule>
</compositeRule> <!-- tie, no more moves and
x (always makes the last move) loses -->
<compositeRule id="rTie" operator="and">
<compositeRule id="rTieNoMoves" operator="and">
<rule id="rTie0" var="_pos0" comparator="ne" value="empty"/>
<rule id="rTie1" var="_pos1" comparator="ne" value="empty"/>
<rule id="rTie2" var="_pos2" comparator="ne" value="empty"/>
<rule id="rTie3" var="_pos3" comparator="ne" value="empty"/>
<rule id="rTie4" var="_pos4" comparator="ne" value="empty"/>
<rule id="rTie5" var="_pos5" comparator="ne" value="empty"/>
<rule id="rTie6" var="_pos6" comparator="ne" value="empty"/>
<rule id="rTie7" var="_pos7" comparator="ne" value="empty"/>
<rule id="rTie8" var="_pos8" comparator="ne" value="empty"/>
</compositeRule> <!-- TODO: there must be a better way to do this... -->
<!-- x lose -->
<compositeRule id="rXLose" operator="and">
<!-- x lose line -->
<compositeRule id="rXLoseLine" operator="and">
<compositeRule id="rXLoseLine0" operator="or">
<rule id="rXLoseLine0_pos0" var="_pos0" comparator="ne"
value="x"/>
<rule id="rXLoseLine0_pos1" var="_pos1" comparator="ne"
value="x"/>
<rule id="rXLoseLine0_pos2" var="_pos2" comparator="ne"
value="x"/>
</compositeRule>
<compositeRule id="rXLoseLine1" operator="or">
<rule id="rXLoseLine1_pos3" var="_pos3" comparator="ne"
value="x"/>
<rule id="rXLoseLine1_pos4" var="_pos4" comparator="ne"
value="x"/>
<rule id="rXLoseLine1_pos5" var="_pos5" comparator="ne"
value="x"/>
</compositeRule>
<compositeRule id="rXLoseLine2" operator="or">
<rule id="rXLoseLine2_pos6" var="_pos6" comparator="ne"
value="x"/>
<rule id="rXLoseLine2_pos7" var="_pos7" comparator="ne"
value="x"/>
<rule id="rXLoseLine2_pos8" var="_pos8" comparator="ne"
value="x"/>
</compositeRule>
</compositeRule>
<!-- x lose col -->
<compositeRule id="rXLoseCol" operator="and">
<compositeRule id="rXLoseCol0" operator="or">
<rule id="rXLoseCol0_pos0" var="_pos0" comparator="ne"
value="x"/>
<rule id="rXLoseCol0_pos3" var="_pos3" comparator="ne"
value="x"/>
<rule id="rXLoseCol0_pos6" var="_pos6" comparator="ne"
value="x"/>
</compositeRule>
<compositeRule id="rXLoseCol1" operator="or">
<rule id="rXLoseCol1_pos1" var="_pos1" comparator="ne"
value="x"/>
<rule id="rXLoseCol1_pos4" var="_pos4" comparator="ne"
value="x"/>
<rule id="rXLoseCol1_pos7" var="_pos7" comparator="ne"
value="x"/>
</compositeRule>
<compositeRule id="rXLoseCol2" operator="or">
<rule id="rXLoseCol2_pos2" var="_pos2" comparator="ne"
value="x"/>
<rule id="rXLoseCol2_pos5" var="_pos5" comparator="ne"
value="x"/>
<rule id="rXLoseCol2_pos8" var="_pos8" comparator="ne"
value="x"/>
</compositeRule>
</compositeRule>
<!-- x lose diagonal -->
<compositeRule id="RXLoseDia" operator="and">
<compositeRule id="RXLoseDia1" operator="or">
<rule id="rXLoseDia1_pos0" var="_pos0" comparator="ne"
value="x" />
<rule id="rXLoseDia1_pos4" var="_pos4" comparator="ne"
value="x" />
<rule id="rXLoseDia1_pos8" var="_pos8" comparator="ne"
value="x" />
</compositeRule>
<compositeRule id="RXLoseDia2" operator="or">
<rule id="rXLoseDia1_pos2" var="_pos2" comparator="ne"
value="x" />
<rule id="rXLoseDia1_pos41" var="_pos4" comparator="ne"
value="x" />
<rule id="rXLoseDia1_pos6" var="_pos6" comparator="ne"
value="x" />
</compositeRule>
</compositeRule>
</compositeRule>
</compositeRule>
</ruleBase> <connectorBase>
<importBase alias="conn" documentURI="base.conn"/>
</connectorBase>
</head> <body>
<port id="pStart" component="board"/> <!-- red: quit -->
<link xconnector="conn#onKeySelectionAbort">
<bind component="board" interface="pExit" role="onSelection"/>
<bind component="board" interface="pExit" role="onKeySelection">
<bindParam name="key" value="RED"/>
</bind>
<bind component="board" role="abort"/>
</link> <!-- green: restart game -->
<link xconnector="conn#onKeySelectionStopStart">
<bind component="board" interface="pPlayAgain"
role="onSelection"/>
<bind component="board" interface="pPlayAgain"
role="onKeySelection">
<bindParam name="key" value="GREEN"/>
</bind>
<bind component="board" role="stop"/>
<bind component="board" role="start"/>
</link> <!-- board -->
<context id="board">
<port id="pTitle" component="title"/>
<port id="pExit" component="exit"/>
<port id="pPlayAgain" component="play_again"/>
<port id="pGrid" component="grid"/>
<port id="pPos0" component="empty0"/>
<port id="pPos1" component="empty1"/>
<port id="pPos2" component="empty2"/>
<port id="pPos3" component="empty3"/>
<port id="pPos4" component="empty4"/>
<port id="pPos5" component="empty5"/>
<port id="pPos6" component="empty6"/>
<port id="pPos7" component="empty7"/>
<port id="pPos8" component="empty8"/> <media id="exit" src="media/exit.png" descriptor="dExit"/>
<media id="play_again" src="media/play_again.png"
descriptor="dPlayAgain"/>
<media id="title" src="media/title.png" descriptor="dTitle"/> <!-- empty board -->
<media id="grid" src="media/grid.png" descriptor="dGrid"/>
<media id="empty0" src="media/empty.png" descriptor="dPos0"/>
<media id="empty1" src="media/empty.png" descriptor="dPos1"/>
<media id="empty2" src="media/empty.png" descriptor="dPos2"/>
<media id="empty3" src="media/empty.png" descriptor="dPos3"/>
<media id="empty4" src="media/empty.png" descriptor="dPos4"/>
<media id="empty5" src="media/empty.png" descriptor="dPos5"/>
<media id="empty6" src="media/empty.png" descriptor="dPos6"/>
<media id="empty7" src="media/empty.png" descriptor="dPos7"/>
<media id="empty8" src="media/empty.png" descriptor="dPos8"/> <!-- symbols -->
<media id="x" src="media/x.png"/>
<media id="o" src="media/o.png"/> <!-- settings -->
<media id="noSettings" type="application/x-ginga-settings">
<property name="service.currentFocus" value="0"/>
<property name="_pos0" value="empty"/>
<property name="_pos1" value="empty"/>
<property name="_pos2" value="empty"/>
<property name="_pos3" value="empty"/>
<property name="_pos4" value="empty"/>
<property name="_pos5" value="empty"/>
<property name="_pos6" value="empty"/>
<property name="_pos7" value="empty"/>
<property name="_pos8" value="empty"/> <!-- x plays first -->
<property name="turn" value="x"/>
</media> <!-- search for a winner after each move -->
<switch id="search_winner"> <!-- x wins -->
<bindRule rule="rXWin" constituent="xwin"/>
<media id="xwin" src="media/xwin.png" descriptor="dMessages"/> <!-- o wins -->
<bindRule rule="rOWin" constituent="owin"/>
<media id="owin" src="media/owin.png" descriptor="dMessages"/> <!-- tie -->
<bindRule rule="rTie" constituent="tie"/>
<media id="tie" src="media/tie.png" descriptor="dMessages"/>
</switch> <!-- LINKS -->
<!-- context initialization -->
<link xconnector="conn#onBeginSet">
<bind component="empty0" role="onBegin"/>
<bind component="noSettings" interface="service.currentFocus"
role="set">
<bindParam name="val" value="0"/>
</bind>
<bind component="noSettings" interface="_pos0" role="set">
<bindParam name="val" value="empty"/>
</bind>
<bind component="noSettings" interface="_pos1" role="set">
<bindParam name="val" value="empty"/>
</bind>
<bind component="noSettings" interface="_pos2" role="set">
<bindParam name="val" value="empty"/>
</bind>
<bind component="noSettings" interface="_pos3" role="set">
<bindParam name="val" value="empty"/>
</bind>
<bind component="noSettings" interface="_pos4" role="set">
<bindParam name="val" value="empty"/>
</bind>
<bind component="noSettings" interface="_pos5" role="set">
<bindParam name="val" value="empty"/>
</bind>
<bind component="noSettings" interface="_pos6" role="set">
<bindParam name="val" value="empty"/>
</bind>
<bind component="noSettings" interface="_pos7" role="set">
<bindParam name="val" value="empty"/>
</bind>
<bind component="noSettings" interface="_pos8" role="set">
<bindParam name="val" value="empty"/>
</bind>
<bind component="noSettings" interface="turn" role="set">
<bindParam name="val" value="x"/>
</bind>
</link> <!-- game over, change focus to play_again -->
<link xconnector="conn#onBeginSet">
<bind component="search_winner" role="onBegin"/>
<bind component="noSettings" interface="service.currentFocus"
role="set">
<bindParam name="val" value="ixPlayAgain"/>
</bind>
</link> <!-- pos0 > x -->
<link xconnector="conn#onKeySelectionPropertyTestStopSetStart">
<bind component="empty0" role="onSelection"/>
<bind component="noSettings" interface="turn" role="propertyTest">
<bindParam name="val" value="x"/>
</bind> <bind component="noSettings" interface="_pos0" role="set">
<bindParam name="val" value="x"/>
</bind>
<bind component="noSettings" interface="turn" role="set">
<bindParam name="val" value="o"/>
</bind>
<bind component="x" descriptor="dPos0" role="start"/>
<bind component="search_winner" role="start"/>
<bind component="empty0" descriptor="dPos0" role="stop"/>
</link> <!-- pos0 > o -->
<link xconnector="conn#onKeySelectionPropertyTestStopSetStart">
<bind component="empty0" role="onSelection"/>
<bind component="noSettings" interface="turn" role="propertyTest">
<bindParam name="val" value="o"/>
</bind> <bind component="noSettings" interface="_pos0" role="set">
<bindParam name="val" value="o"/>
</bind>
<bind component="noSettings" interface="turn" role="set">
<bindParam name="val" value="x"/>
</bind>
<bind component="o" descriptor="dPos0" role="start"/>
<bind component="search_winner" role="start"/>
<bind component="empty0" descriptor="dPos0" role="stop"/>
</link> <!-- pos1 > x -->
<link xconnector="conn#onKeySelectionPropertyTestStopSetStart">
<bind component="empty1" role="onSelection"/>
<bind component="noSettings" interface="turn" role="propertyTest">
<bindParam name="val" value="x"/>
</bind> <bind component="noSettings" interface="_pos1" role="set">
<bindParam name="val" value="x"/>
</bind>
<bind component="noSettings" interface="turn" role="set">
<bindParam name="val" value="o"/>
</bind>
<bind component="x" descriptor="dPos1" role="start"/>
<bind component="search_winner" role="start"/>
<bind component="empty1" descriptor="dPos1" role="stop"/>
</link> <!-- pos1 > o -->
<link xconnector="conn#onKeySelectionPropertyTestStopSetStart">
<bind component="empty1" role="onSelection"/>
<bind component="noSettings" interface="turn" role="propertyTest">
<bindParam name="val" value="o"/>
</bind> <bind component="noSettings" interface="_pos1" role="set">
<bindParam name="val" value="o"/>
</bind>
<bind component="noSettings" interface="turn" role="set">
<bindParam name="val" value="x"/>
</bind>
<bind component="o" descriptor="dPos1" role="start"/>
<bind component="search_winner" role="start"/>
<bind component="empty1" descriptor="dPos1" role="stop"/>
</link> <!-- pos2 > x -->
<link xconnector="conn#onKeySelectionPropertyTestStopSetStart">
<bind component="empty2" role="onSelection"/>
<bind component="noSettings" interface="turn" role="propertyTest">
<bindParam name="val" value="x"/>
</bind> <bind component="noSettings" interface="_pos2" role="set">
<bindParam name="val" value="x"/>
</bind>
<bind component="noSettings" interface="turn" role="set">
<bindParam name="val" value="o"/>
</bind>
<bind component="x" descriptor="dPos2" role="start"/>
<bind component="search_winner" role="start"/>
<bind component="empty2" descriptor="dPos2" role="stop"/>
</link> <!-- pos2 > o -->
<link xconnector="conn#onKeySelectionPropertyTestStopSetStart">
<bind component="empty2" role="onSelection"/>
<bind component="noSettings" interface="turn" role="propertyTest">
<bindParam name="val" value="o"/>
</bind> <bind component="noSettings" interface="_pos2" role="set">
<bindParam name="val" value="o"/>
</bind>
<bind component="noSettings" interface="turn" role="set">
<bindParam name="val" value="x"/>
</bind>
<bind component="o" descriptor="dPos2" role="start"/>
<bind component="search_winner" role="start"/>
<bind component="empty2" descriptor="dPos2" role="stop"/>
</link> <!-- pos3 > x -->
<link xconnector="conn#onKeySelectionPropertyTestStopSetStart">
<bind component="empty3" role="onSelection"/>
<bind component="noSettings" interface="turn" role="propertyTest">
<bindParam name="val" value="x"/>
</bind> <bind component="noSettings" interface="_pos3" role="set">
<bindParam name="val" value="x"/>
</bind>
<bind component="noSettings" interface="turn" role="set">
<bindParam name="val" value="o"/>
</bind>
<bind component="x" descriptor="dPos3" role="start"/>
<bind component="search_winner" role="start"/>
<bind component="empty3" descriptor="dPos3" role="stop"/>
</link> <!-- pos3 > o -->
<link xconnector="conn#onKeySelectionPropertyTestStopSetStart">
<bind component="empty3" role="onSelection"/>
<bind component="noSettings" interface="turn" role="propertyTest">
<bindParam name="val" value="o"/>
</bind> <bind component="noSettings" interface="_pos3" role="set">
<bindParam name="val" value="o"/>
</bind>
<bind component="noSettings" interface="turn" role="set">
<bindParam name="val" value="x"/>
</bind>
<bind component="o" descriptor="dPos3" role="start"/>
<bind component="search_winner" role="start"/>
<bind component="empty3" descriptor="dPos3" role="stop"/>
</link> <!-- pos4 > x -->
<link xconnector="conn#onKeySelectionPropertyTestStopSetStart">
<bind component="empty4" role="onSelection"/>
<bind component="noSettings" interface="turn" role="propertyTest">
<bindParam name="val" value="x"/>
</bind> <bind component="noSettings" interface="_pos4" role="set">
<bindParam name="val" value="x"/>
</bind>
<bind component="noSettings" interface="turn" role="set">
<bindParam name="val" value="o"/>
</bind>
<bind component="x" descriptor="dPos4" role="start"/>
<bind component="search_winner" role="start"/>
<bind component="empty4" descriptor="dPos4" role="stop"/>
</link> <!-- pos4 > o -->
<link xconnector="conn#onKeySelectionPropertyTestStopSetStart">
<bind component="empty4" role="onSelection"/>
<bind component="noSettings" interface="turn" role="propertyTest">
<bindParam name="val" value="o"/>
</bind> <bind component="noSettings" interface="_pos4" role="set">
<bindParam name="val" value="o"/>
</bind>
<bind component="noSettings" interface="turn" role="set">
<bindParam name="val" value="x"/>
</bind>
<bind component="o" descriptor="dPos4" role="start"/>
<bind component="search_winner" role="start"/>
<bind component="empty4" descriptor="dPos4" role="stop"/>
</link> <!-- pos5 > x -->
<link xconnector="conn#onKeySelectionPropertyTestStopSetStart">
<bind component="empty5" role="onSelection"/>
<bind component="noSettings" interface="turn" role="propertyTest">
<bindParam name="val" value="x"/>
</bind> <bind component="noSettings" interface="_pos5" role="set">
<bindParam name="val" value="x"/>
</bind>
<bind component="noSettings" interface="turn" role="set">
<bindParam name="val" value="o"/>
</bind>
<bind component="x" descriptor="dPos5" role="start"/>
<bind component="search_winner" role="start"/>
<bind component="empty5" descriptor="dPos5" role="stop"/>
</link> <!-- pos5 > o -->
<link xconnector="conn#onKeySelectionPropertyTestStopSetStart">
<bind component="empty5" role="onSelection"/>
<bind component="noSettings" interface="turn" role="propertyTest">
<bindParam name="val" value="o"/>
</bind> <bind component="noSettings" interface="_pos5" role="set">
<bindParam name="val" value="o"/>
</bind>
<bind component="noSettings" interface="turn" role="set">
<bindParam name="val" value="x"/>
</bind>
<bind component="o" descriptor="dPos5" role="start"/>
<bind component="search_winner" role="start"/>
<bind component="empty5" descriptor="dPos5" role="stop"/>
</link> <!-- pos6 > x -->
<link xconnector="conn#onKeySelectionPropertyTestStopSetStart">
<bind component="empty6" role="onSelection"/>
<bind component="noSettings" interface="turn" role="propertyTest">
<bindParam name="val" value="x"/>
</bind> <bind component="noSettings" interface="_pos6" role="set">
<bindParam name="val" value="x"/>
</bind>
<bind component="noSettings" interface="turn" role="set">
<bindParam name="val" value="o"/>
</bind>
<bind component="x" descriptor="dPos6" role="start"/>
<bind component="search_winner" role="start"/>
<bind component="empty6" descriptor="dPos6" role="stop"/>
</link> <!-- pos6 > o -->
<link xconnector="conn#onKeySelectionPropertyTestStopSetStart">
<bind component="empty6" role="onSelection"/>
<bind component="noSettings" interface="turn" role="propertyTest">
<bindParam name="val" value="o"/>
</bind> <bind component="noSettings" interface="_pos6" role="set">
<bindParam name="val" value="o"/>
</bind>
<bind component="noSettings" interface="turn" role="set">
<bindParam name="val" value="x"/>
</bind>
<bind component="o" descriptor="dPos6" role="start"/>
<bind component="search_winner" role="start"/>
<bind component="empty6" descriptor="dPos6" role="stop"/>
</link> <!-- pos7 > x -->
<link xconnector="conn#onKeySelectionPropertyTestStopSetStart">
<bind component="empty7" role="onSelection"/>
<bind component="noSettings" interface="turn" role="propertyTest">
<bindParam name="val" value="x"/>
</bind> <bind component="noSettings" interface="_pos7" role="set">
<bindParam name="val" value="x"/>
</bind>
<bind component="noSettings" interface="turn" role="set">
<bindParam name="val" value="o"/>
</bind>
<bind component="x" descriptor="dPos7" role="start"/>
<bind component="search_winner" role="start"/>
<bind component="empty7" descriptor="dPos7" role="stop"/>
</link> <!-- pos7 > o -->
<link xconnector="conn#onKeySelectionPropertyTestStopSetStart">
<bind component="empty7" role="onSelection"/>
<bind component="noSettings" interface="turn" role="propertyTest">
<bindParam name="val" value="o"/>
</bind> <bind component="noSettings" interface="_pos7" role="set">
<bindParam name="val" value="o"/>
</bind>
<bind component="noSettings" interface="turn" role="set">
<bindParam name="val" value="x"/>
</bind>
<bind component="o" descriptor="dPos7" role="start"/>
<bind component="search_winner" role="start"/>
<bind component="empty7" descriptor="dPos7" role="stop"/>
</link> <!-- pos8 > x -->
<link xconnector="conn#onKeySelectionPropertyTestStopSetStart">
<bind component="empty8" role="onSelection"/>
<bind component="noSettings" interface="turn" role="propertyTest">
<bindParam name="val" value="x"/>
</bind> <bind component="noSettings" interface="_pos8" role="set">
<bindParam name="val" value="x"/>
</bind>
<bind component="noSettings" interface="turn" role="set">
<bindParam name="val" value="o"/>
</bind>
<bind component="x" descriptor="dPos8" role="start"/>
<bind component="search_winner" role="start"/>
<bind component="empty8" descriptor="dPos8" role="stop"/>
</link> <!-- pos8 > o -->
<link xconnector="conn#onKeySelectionPropertyTestStopSetStart">
<bind component="empty8" role="onSelection"/>
<bind component="noSettings" interface="turn" role="propertyTest">
<bindParam name="val" value="o"/>
</bind> <bind component="noSettings" interface="_pos8" role="set">
<bindParam name="val" value="o"/>
</bind>
<bind component="noSettings" interface="turn" role="set">
<bindParam name="val" value="x"/>
</bind>
<bind component="o" descriptor="dPos8" role="start"/>
<bind component="search_winner" role="start"/>
<bind component="empty8" descriptor="dPos8" role="stop"/>
</link> </context>
</body>
</ncl>
<!-- $Id: main.ncl,v 1.3 2009/02/14 23:32:46 root Exp $ -->
<!--
main.ncl
06feb2009, gflima@telemidia.puc-rio.br Corrida de cavalos.
--> <ncl id="hrace" xmlns="http://www.ncl.org.br/NCL3.0/EDTVProfile">
<head>
<regionBase>
<region id="rgScreen" width="640" height="480" zIndex="0" top="0" left="0">
<region id="rgHeader" width="640" height="100"
top="0" left="0" zIndex="1" /> <!-- Race -->
<region id="rgTrack" width="640" height="250"
top="100" left="0" zIndex="1"> <!-- Stripes (on track winner notification) -->
<region id="rgStripeRed" width="496" height="23"
top="56" left="72" zIndex="2" /> <region id="rgStripeGreen" width="529" height="32"
top="76" left="55" zIndex="2" /> <region id="rgStripeYellow" width="570" height="40"
top="104" left="35" zIndex="2" /> <region id="rgStripeBlue" width="631" height="58"
top="139" left="4" zIndex="2" /> <!-- Horses initial image -->
<region id="rgStanding" width="97" height="139"
top="32" left="59" zIndex="3" /> <!-- Lua -->
<region id="rgLuaHorses" width="640" height="250"
top="0" left="0" zIndex="5" />
</region> <!-- Menus and notifications -->
<region id="rgFooter" width="640" height="130"
top="350" left="0" zIndex="1"> <!-- Bet menu -->
<region id="rgBetMenuTitle" width="215" height="130"
top="0" left="0" zIndex="2" /> <region id="rgBetMenuRed" width="101" height="130"
top="0" left="215" zIndex="2" /> <region id="rgBetMenuGreen" width="96" height="130"
top="0" left="316" zIndex="2" /> <region id="rgBetMenuYellow" width="99" height="130"
top="0" left="412" zIndex="2" /> <region id="rgBetMenuBlue" width="129" height="130"
top="0" left="511" zIndex="2" /> <!-- Result -->
<region id="rgResult" width="490" height="130"
top="0" left="0" zIndex="2" /> <region id="rgPlayAgain" width="150" height="65"
top="0" left="490" zIndex="2" /> <region id="rgExit" width="150" height="65"
top="65" left="490" zIndex="2" />
</region>
</region>
</regionBase> <descriptorBase>
<descriptor id="dHeader" region="rgHeader" />
<descriptor id="dTrack" region="rgTrack" /> <!-- Race -->
<descriptor id="dStripeRed" region="rgStripeRed" />
<descriptor id="dStripeGreen" region="rgStripeGreen" />
<descriptor id="dStripeYellow" region="rgStripeYellow" />
<descriptor id="dStripeBlue" region="rgStripeBlue" />
<descriptor id="dStanding" region="rgStanding" />
<descriptor id="dLuaHorses" region="rgLuaHorses" /> <!-- Bet menu -->
<descriptor id="dBetMenuTitle" region="rgBetMenuTitle" />
<descriptor id="dBetMenuRed" region="rgBetMenuRed" focusIndex="ixBetRed"
moveUp="ixBetBlue" moveDown="ixBetGreen"
moveLeft="ixBetBlue" moveRight="ixBetGreen"
focusSrc="media/bet_red_on.png"
focusSelSrc="media/bet_red_on.png"
focusBorderWidth="0" /> <descriptor id="dBetMenuGreen" region="rgBetMenuGreen" focusIndex="ixBetGreen"
moveUp="ixBetRed" moveDown="ixBetYellow"
moveLeft="ixBetRed" moveRight="ixBetYellow"
focusSrc="media/bet_green_on.png"
focusSelSrc="media/bet_green_on.png"
focusBorderWidth="0" /> <descriptor id="dBetMenuYellow" region="rgBetMenuYellow" focusIndex="ixBetYellow"
moveUp="ixBetGreen" moveDown="ixBetBlue"
moveLeft="ixBetGreen" moveRight="ixBetBlue"
focusSrc="media/bet_yellow_on.png"
focusSelSrc="media/bet_yellow_on.png"
focusBorderWidth="0" /> <descriptor id="dBetMenuBlue" region="rgBetMenuBlue" focusIndex="ixBetBlue"
moveUp="ixBetYellow" moveDown="ixBetRed"
moveLeft="ixBetYellow" moveRight="ixBetRed"
focusSrc="media/bet_blue_on.png"
focusSelSrc="media/bet_blue_on.png"
focusBorderWidth="0" /> <!-- Result -->
<descriptor id="dResult" region="rgResult" />
<descriptor id="dPlayAgain" region="rgPlayAgain"
focusIndex="ixPlayAgain"
moveUp="ixExit" moveDown="ixExit"
moveLeft="ixExit" moveRight="ixExit"
focusSrc="media/play_again_on.png"
focusSelSrc="media/play_again_on.png"
focusBorderWidth="0" />
<descriptor id="dExit" region="rgExit"
focusIndex="ixExit"
moveUp="ixPlayAgain" moveDown="ixPlayAgain"
moveLeft="ixPlayAgain" moveRight="ixPlayAgain"
focusSrc="media/exit_on.png"
focusSelSrc="media/exit_on.png"
focusBorderWidth="0" />
</descriptorBase> <connectorBase>
<causalConnector id="onBeginSet">
<connectorParam name="val"/>
<simpleCondition role="onBegin" />
<simpleAction role="set" />
</causalConnector> <causalConnector id="onBeginSetStart">
<connectorParam name="val"/>
<simpleCondition role="onBegin" />
<compoundAction operator="seq">
<simpleAction role="set" />
<simpleAction role="start" />
</compoundAction>
</causalConnector> <causalConnector id="onBeginStopStart">
<simpleCondition role="onBegin" />
<compoundAction operator="seq">
<simpleAction role="stop" />
<simpleAction role="start" />
</compoundAction>
</causalConnector> <causalConnector id="onKeySelectionStop">
<connectorParam name="key" />
<compoundCondition operator="or">
<simpleCondition role="onKeySelection" eventType="selection"
transition="starts" key="$key" />
<simpleCondition role="onSelection" key="$key" />
</compoundCondition>
<simpleAction role="stop" />
</causalConnector> <causalConnector id="onKeySelectionStopStart">
<connectorParam name="key" />
<compoundCondition operator="or">
<simpleCondition role="onKeySelection" eventType="selection"
transition="starts" key="$key" />
<simpleCondition role="onSelection" key="$key" />
</compoundCondition>
<compoundAction operator="seq">
<simpleAction role="stop" />
<simpleAction role="start" />
</compoundAction>
</causalConnector> <causalConnector id="onKeySelectionSetStopStart">
<connectorParam name="key" />
<connectorParam name="val" />
<compoundCondition operator="or">
<simpleCondition role="onKeySelection" eventType="selection"
transition="starts" key="$key" />
<simpleCondition role="onSelection" key="$key" />
</compoundCondition>
<compoundAction operator="seq">
<simpleAction role="set" />
<simpleAction role="stop" />
<simpleAction role="start" />
</compoundAction>
</causalConnector>
</connectorBase> <ruleBase>
<!-- Red results -->
<compositeRule id="rBetRedWin" operator="and">
<rule id="rBetRed" var="player_bet" comparator="eq" value="red" />
<rule id="rRedWin" var="winner" comparator="eq" value="red" />
</compositeRule> <compositeRule id="rBetRedLose" operator="and">
<rule id="rBetRed1" var="player_bet" value="red" comparator="eq"/>
<rule id="rRedLose" var="winner" comparator="ne" value="red" />
</compositeRule> <!-- Green results -->
<compositeRule id="rBetGreenWin" operator="and">
<rule id="rBetGreen" var="player_bet" comparator="eq" value="green" />
<rule id="rGreenWin" var="winner" comparator="eq" value="green" />
</compositeRule> <compositeRule id="rBetGreenLose" operator="and">
<rule id="rBetGreen1" var="player_bet" comparator="eq" value="green" />
<rule id="rGreenLose" var="winner" comparator="ne" value="green" />
</compositeRule> <!-- Yellow results -->
<compositeRule id="rBetYellowWin" operator="and">
<rule id="rBetYellow" var="player_bet" comparator="eq" value="yellow" />
<rule id="rYellowWin" var="winner" comparator="eq" value="yellow" />
</compositeRule> <compositeRule id="rBetYellowLose" operator="and">
<rule id="rBetYellow1" var="player_bet" comparator="eq" value="yellow" />
<rule id="rYellowLose" var="winner" comparator="ne" value="yellow" />
</compositeRule> <!-- Blue results -->
<compositeRule id="rBetBlueWin" operator="and">
<rule id="rBetBlue" var="player_bet" comparator="eq" value="blue" />
<rule id="rBlueWin" var="winner" comparator="eq" value="blue" />
</compositeRule> <compositeRule id="rBetBlueLose" operator="and">
<rule id="rBetBlue1" var="player_bet" comparator="eq" value="blue" />
<rule id="rBlueLose" var="winner" comparator="ne" value="blue" />
</compositeRule>
</ruleBase>
</head> <body>
<port id="pHeader" component="header" />
<port id="pTrack" component="track" />
<port id="pBetMenu" component="bet_menu" /> <media id="header" src="media/header.png" descriptor="dHeader" />
<media id="track" src="media/bg.png" descriptor="dTrack" />
<media id="standing" src="media/standing.png" descriptor="dStanding" /> <media id="settings" type="application/x-ginga-settings">
<property name="service.currentFocus" value="ixBetRed" />
<property name="player_bet" value="empty" />
<property name="winner" value="empty" />
</media> <context id="bet_menu">
<port id="pTitle" component="bm_title" />
<port id="pRed" component="bm_red" />
<port id="pGreen" component="bm_green" />
<port id="pYellow" component="bm_yellow" />
<port id="pBlue" component="bm_blue" /> <media id="bm_title" src="media/bet_title.png"
descriptor="dBetMenuTitle" />
<media id="bm_red" src="media/bet_red_off.png"
descriptor="dBetMenuRed" />
<media id="bm_green" src="media/bet_green_off.png"
descriptor="dBetMenuGreen" />
<media id="bm_yellow" src="media/bet_yellow_off.png"
descriptor="dBetMenuYellow" />
<media id="bm_blue" src="media/bet_blue_off.png"
descriptor="dBetMenuBlue" />
</context> <context id="stripes">
<port id="pRed1" component="stripe_red" />
<port id="pGreen1" component="stripe_green" />
<port id="pYellow1" component="stripe_yellow" />
<port id="pBlue1" component="stripe_blue" /> <media id="stripe_red" src="media/stripe_red.png"
descriptor="dStripeRed" />
<media id="stripe_green" src="media/stripe_green.png"
descriptor="dStripeGreen" />
<media id="stripe_yellow" src="media/stripe_yellow.png"
descriptor="dStripeYellow" />
<media id="stripe_blue" src="media/stripe_blue.png"
descriptor="dStripeBlue" />
</context> <!-- Sounds -->
<media id="start_sound" src="media/start.mp3">
<area id="go" begin="5.8s" />
</media>
<media id="galloping_sound" src="media/galloping.mp3" /> <!-- Result evaluation -->
<switch id="result">
<!-- Player wins -->
<bindRule rule="rBetRedWin" constituent="win_red" />
<context id="win_red">
<port id="pWinRedImg" component="win_red_img" />
<port id="pApplause" component="applause_sound" />
<media id="win_red_img" src="media/win_red.png" descriptor="dResult" />
<media id="applause_sound" src="media/applause.mp3" />
</context> <bindRule rule="rBetGreenWin" constituent="win_green" />
<context id="win_green">
<port id="pWinGreenImg" component="win_green_img" />
<port id="pApplauseSound" component="applause_sound" />
<media id="win_green_img" src="media/win_green.png"
descriptor="dResult" />
<media id="applause_sound2" src="media/applause.mp3" />
</context> <bindRule rule="rBetYellowWin" constituent="win_yellow" />
<context id="win_yellow">
<port id="pWinYellowImg" component="win_yellow_img" />
<port id="pApplauseSound2" component="applause_sound" />
<media id="win_yellow_img" src="media/win_yellow.png"
descriptor="dResult" />
<media id="applause_sound1" src="media/applause.mp3" />
</context> <bindRule rule="rBetBlueWin" constituent="win_blue" />
<context id="win_blue">
<port id="pWinBlueImg" component="win_blue_img" />
<port id="pApplauseSound1" component="applause_sound" />
<media id="win_blue_img" src="media/win_blue.png"
descriptor="dResult" />
<media id="applause_sound3" src="media/applause.mp3" />
</context> <!-- Player loses -->
<bindRule rule="rBetRedLose" constituent="lose_red" />
<context id="lose_red">
<port id="pLoseRedImg" component="lose_red_img" />
<port id="pLoseSound" component="lose_sound" />
<media id="lose_red_img" src="media/lose_red.png"
descriptor="dResult" />
<media id="lose_sound" src="media/lose.mp3" />
</context> <bindRule rule="rBetGreenLose" constituent="lose_green" />
<context id="lose_green">
<port id="pLoseGreenImg" component="lose_green_img" />
<port id="pLoseSound3" component="lose_sound" />
<media id="lose_green_img" src="media/lose_green.png"
descriptor="dResult" />
<media id="lose_sound1" src="media/lose.mp3" />
</context> <bindRule rule="rBetYellowLose" constituent="lose_yellow" />
<context id="lose_yellow">
<port id="pLoseYellowImg" component="lose_yellow_img" />
<port id="pLoseSound1" component="lose_sound" />
<media id="lose_yellow_img" src="media/lose_yellow.png"
descriptor="dResult" />
<media id="lose_sound2" src="media/lose.mp3" />
</context> <bindRule rule="rBetBlueLose" constituent="lose_blue" />
<context id="lose_blue">
<port id="pLoseBlueImg" component="lose_blue_img" />
<port id="pLoseSound2" component="lose_sound" />
<media id="lose_blue_img" src="media/lose_blue.png"
descriptor="dResult" />
<media id="lose_sound3" src="media/lose.mp3" />
</context>
</switch> <!-- Play again or exit -->
<context id="end_menu">
<port id="pExit" component="em_exit" />
<port id="pPlayAgain" component="em_play_again" />
<media id="em_exit" src="media/exit_off.png" descriptor="dExit" />
<media id="em_play_again" src="media/play_again_off.png"
descriptor="dPlayAgain" />
</context> <media id="lua_horses" src="hrace.lua" descriptor="dLuaHorses">
<area id="red" />
<area id="green" />
<area id="yellow" />
<area id="blue" />
</media> <!-- Links --> <!-- Initialize settings -->
<link xconnector="onBeginSet">
<bind component="bet_menu" interface="pRed" role="onBegin" />
<bind component="settings" interface="player_bet" role="set">
<bindParam name="val" value="empty"/>
</bind>
<bind component="settings" interface="winner" role="set">
<bindParam name="val" value="empty"/>
</bind>
<bind component="settings" interface="service.currentFocus" role="set">
<bindParam name="val" value="ixBetRed"/>
</bind>
</link> <!-- Bet red -->
<link xconnector="onKeySelectionSetStopStart">
<bind component="bet_menu" interface="pRed" role="onSelection" />
<bind component="bet_menu" interface="pRed" role="onKeySelection">
<bindParam name="key" value="RED" />
</bind>
<bind component="settings" interface="player_bet" role="set">
<bindParam name="val" value="red"/>
</bind>
<bind component="bet_menu" role="stop" />
<bind component="standing" role="start" />
<bind component="start_sound" role="start" />
</link> <!-- Bet green -->
<link xconnector="onKeySelectionSetStopStart">
<bind component="bet_menu" interface="pGreen" role="onSelection" />
<bind component="bet_menu" interface="pGreen" role="onKeySelection">
<bindParam name="key" value="GREEN" />
</bind>
<bind component="settings" interface="player_bet" role="set">
<bindParam name="val" value="green"/>
</bind>
<bind component="bet_menu" role="stop" />
<bind component="standing" role="start" />
<bind component="start_sound" role="start" />
</link> <!-- Bet yellow -->
<link xconnector="onKeySelectionSetStopStart">
<bind component="bet_menu" interface="pYellow" role="onSelection" />
<bind component="bet_menu" interface="pYellow" role="onKeySelection">
<bindParam name="key" value="YELLOW" />
</bind>
<bind component="settings" interface="player_bet" role="set">
<bindParam name="val" value="yellow"/>
</bind>
<bind component="bet_menu" role="stop" />
<bind component="standing" role="start" />
<bind component="start_sound" role="start" />
</link> <!-- Bet blue -->
<link xconnector="onKeySelectionSetStopStart">
<bind component="bet_menu" interface="pBlue" role="onSelection" />
<bind component="bet_menu" interface="pBlue" role="onKeySelection">
<bindParam name="key" value="BLUE" />
</bind>
<bind component="settings" interface="player_bet" role="set">
<bindParam name="val" value="blue"/>
</bind>
<bind component="bet_menu" role="stop" />
<bind component="standing" role="start" />
<bind component="start_sound" role="start" />
</link> <!-- Start race -->
<link xconnector="onBeginStopStart">
<bind component="start_sound" interface="go" role="onBegin"/>
<bind component="standing" role="stop" />
<bind component="galloping_sound" role="start" />
<bind component="lua_horses" role="start" />
</link> <!-- Red won -->
<link xconnector="onBeginSetStart">
<bind component="lua_horses" interface="red" role="onBegin"/>
<bind component="settings" interface="winner" role="set">
<bindParam name="val" value="red" />
</bind>
<bind component="stripes" interface="pRed1" role="start" />
<bind component="result" role="start" />
</link> <!-- Green won -->
<link xconnector="onBeginSetStart">
<bind component="lua_horses" interface="green" role="onBegin"/>
<bind component="settings" interface="winner" role="set">
<bindParam name="val" value="green" />
</bind>
<bind component="stripes" interface="pGreen1" role="start" />
<bind component="result" role="start" />
</link> <!-- Yellow won -->
<link xconnector="onBeginSetStart">
<bind component="lua_horses" interface="yellow" role="onBegin"/>
<bind component="settings" interface="winner" role="set">
<bindParam name="val" value="yellow" />
</bind>
<bind component="stripes" interface="pYellow1" role="start" />
<bind component="result" role="start" />
</link> <!-- Blue won -->
<link xconnector="onBeginSetStart">
<bind component="lua_horses" interface="blue" role="onBegin"/>
<bind component="settings" interface="winner" role="set">
<bindParam name="val" value="blue" />
</bind>
<bind component="stripes" interface="pBlue1" role="start" />
<bind component="result" role="start" />
</link> <!-- Show end menu -->
<link xconnector="onBeginStopStart">
<bind component="result" role="onBegin" />
<bind component="galloping_sound" role="stop" />
<bind component="end_menu" role="start" />
</link>
<link xconnector="onBeginSet">
<bind component="end_menu" interface="pPlayAgain" role="onBegin" />
<bind component="settings" interface="service.currentFocus" role="set">
<bindParam name="val" value="ixPlayAgain"/>
</bind>
</link> <!-- Play again -->
<link xconnector="onKeySelectionStopStart">
<bind component="end_menu" interface="pPlayAgain" role="onSelection" />
<bind component="end_menu" interface="pPlayAgain" role="onKeySelection">
<bindParam name="key" value="GREEN" />
</bind>
<bind component="result" role="stop" />
<bind component="end_menu" role="stop" />
<bind component="lua_horses" role="stop" />
<bind component="stripes" role="stop" />
<!-- <bind component="start_sound" role="stop" /> -->
<bind component="bet_menu" role="start" />
</link> <!-- Exit -->
<link xconnector="onKeySelectionStop">
<bind component="end_menu" interface="pExit" role="onSelection" />
<bind component="end_menu" interface="pExit" role="onKeySelection">
<bindParam name="key" value="RED" />
</bind>
<bind component="result" role="stop" />
<bind component="end_menu" role="stop" />
<bind component="lua_horses" role="stop" />
<bind component="stripes" role="stop" />
<bind component="track" role="stop" />
<bind component="header" role="stop" />
<!-- <bind component="start_sound" role="stop" /> -->
</link>
</body>
</ncl>
Carlos
att, Cleide