<?xml version="1.0"?>
<!--
    $Id: test_13_state.xml,v 1.5 2004/01/02 01:22:43 james Exp $

    $Log: test_13_state.xml,v $
    Revision 1.5  2004/01/02 01:22:43  james
    State machine renaming

    Revision 1.4  2008/07/21 11:35:36  james
    Some name changes. Added inactived for now.

    Revision 1.3  2008/07/21 10:16:17  james
    Added inactive - now just need a better name for it....

    Revision 1.2  2008/07/20 08:02:52  james
    Adding OR operator to test

    Revision 1.1  2007/05/07 11:56:56  james
    Added lock

    Revision 1.7  2007/05/04 07:55:12  james
    *** empty log message ***

    Revision 1.6  2007/05/03 12:44:53  james
    Advice from Lela on some more state machine examples

    Revision 1.5  2007/05/02 13:53:20  james
    *** empty log message ***

    Revision 1.4  2007/05/02 13:36:07  james
    Basic prototype

    Revision 1.3  2007/05/02 12:57:32  james
    Getting rid of images - they just slow logging down

    Revision 1.2  2007/05/01 12:31:54  james
    Attemping to code tic-tac-toe in an abstract state machine

    Revision 1.1  2007/05/01 12:24:11  james
    Tidied up logs

    <?xml-stylesheet type="text/xsl" href="E:\metawrap\javascript\tests\state\state.xsl"?>
    <metawrap xmlns="../metawrap/metawrap.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="../metawrap/metawrap.xsd ../metawrap/metawrap.xsd" >
    XSLT WILL NOT WORK IF xmlns is included
-->
<!--<?xml-stylesheet type="text/xsl" href="E:\metawrap\javascript\tests\state\state.xsl"?>-->
<metawrap>
    <states>
        <state name="x_turn" value="true">        
        	<negate state="o_turn" />
        </state>

        <state name="o_turn">        
           	<negate state="x_turn" />
        </state>
    
        <state name="xp11"> 
          <negate state="op11" />
          <lock state="op11" />
        </state>
        
        <state name="xp12">        
	        <negate state="op12" />
	        <lock state="op12" />
        </state>
        <state name="xp13">  
	        <negate state="op13" />
	        <lock state="op13" />
        </state>
        
        <state name="xp21">        
	        <negate state="op21" />
	        <lock state="op21" />
        </state>
        <state name="xp22">        
	        <negate state="op22" />
   	        <lock state="op22" />
        </state>
        <state name="xp23">        
	        <negate state="op23" />
   	        <lock state="op23" />
        </state>
        
        <state name="xp31">        
	        <negate state="op31" />
   	        <lock state="op31" />
        </state>
        <state name="xp32">        
	        <negate state="op32" />
   	        <lock state="op32" />
        </state>
        <state name="xp33">        
	        <negate state="op33" />
   	        <lock state="op33" />
        </state>

        <state name="op11">   
               <negate state="xp11" />
	       <lock state="xp11" />
        </state>
        <state name="op12">        
	        <negate state="xp12" />
   	        <lock state="xp12" />
        </state>
        <state name="op13">        
	        <negate state="xp13" />
   	        <lock state="xp13" />
        </state>
        
        <state name="op21">        
	        <negate state="xp21" />
   	        <lock state="xp21" />
        </state>
        <state name="op22">        
	        <negate state="xp22" />
   	        <lock state="xp22" />
        </state>
        <state name="op23">        
	        <negate state="xp23" />
   	        <lock state="xp23" />
        </state>
        
        <state name="op31">        
	        <negate state="xp31" />
   	        <lock state="xp31" />
        </state>
        <state name="op32">        
	        <negate state="xp32" />
   	        <lock state="xp32" />
        </state>
        <state name="op33">        
	        <negate state="xp33" />
   	        <lock state="xp33" />
        </state>

        <state name="winx1_">        
        	<active state="xp11" />
        	<active state="xp12" />
        	<active state="xp13" />
        	<affirm state="x_wins" />
        </state>

        <state name="winx2_">        
        	<active state="xp21" />
        	<active state="xp22" />
        	<active state="xp23" />
        	<affirm state="x_wins" />
        </state>

        <state name="winx3_">        
        	<active state="xp31" />
        	<active state="xp32" />
        	<active state="xp33" />
        	<affirm state="x_wins" />
        </state>

        <state name="winx_1">        
        	<active state="xp11" />
        	<active state="xp21" />
        	<active state="xp31" />
        	<affirm state="x_wins" />
        </state>

        <state name="winx_2">        
        	<active state="xp12" />
        	<active state="xp22" />
        	<active state="xp32" />
        	<affirm state="x_wins" />
        </state>

        <state name="winx_3">        
        	<active state="xp13" />
        	<active state="xp23" />
        	<active state="xp33" />
        	<affirm state="x_wins" />
        </state>

        <state name="winxd1">        
        	<active state="xp11" />
        	<active state="xp22" />
        	<active state="xp33" />
        	<affirm state="x_wins" />
        </state>

        <state name="winxd2">        
        	<active state="xp13" />
        	<active state="xp22" />
        	<active state="xp31" />
        	<affirm state="x_wins" />
        </state>

        <state name="wino1_">        
        	<active state="op11" />
        	<active state="op12" />
        	<active state="op13" />
        	<affirm state="o_wins" />
        </state>

        <state name="wino2_">        
        	<active state="op21" />
        	<active state="op22" />
        	<active state="op23" />
        	<affirm state="o_wins" />
        </state>

        <state name="wino3_">        
        	<active state="op31" />
        	<active state="op32" />
        	<active state="op33" />
        	<affirm state="o_wins" />
        </state>

        <state name="wino_1">        
        	<active state="op11" />
        	<active state="op21" />
        	<active state="op31" />
        	<affirm state="o_wins" />
        </state>

        <state name="wino_2">        
        	<active state="op12" />
        	<active state="op22" />
        	<active state="op32" />
        	<affirm state="o_wins" />
        </state>

        <state name="wino_3">        
        	<active state="op13" />
        	<active state="op23" />
        	<active state="op33" />
        	<affirm state="o_wins" />
        </state>

        <state name="winod1">        
        	<active state="op11" />
        	<active state="op22" />
        	<active state="op33" />
        	<affirm state="o_wins" />
        </state>

        <state name="winod2">        
        	<active state="op13" />
        	<active state="op22" />
        	<active state="op31" />
        	<affirm state="o_wins" />
        </state>


        <state name="drawn">        
        	<active state="op11|xp11" />
        	<active state="op12|xp12" />
        	<active state="op13|xp13" />
        	
        	<active state="op21|xp21" />
        	<active state="op22|xp22" />
        	<active state="op23|xp23" />

			<active state="op31|xp31" />
			<active state="op32|xp32" />
			<active state="op33|xp33" />
		
			<inactive state="winx1_" />
			<inactive state="winx2_" />
			<inactive state="winx3_" />
			<inactive state="winx_1" />
			<inactive state="winx_2" />
			<inactive state="winx_3" />
			<inactive state="winxd1" />
			<inactive state="winxd2" />
			
			<inactive state="wino1_" />
			<inactive state="wino2_" />
			<inactive state="wino3_" />
			<inactive state="wino_1" />
			<inactive state="wino_2" />
			<inactive state="wino_3" />
			<inactive state="winod1" />
			<inactive state="winod2" />
        	
        	<enter call="nobody_wins();" />
        	
        	<affirm state="game_over" />
        </state>
        
        <state name="x_wins">                
        	<enter call="x_wins();" />
        	<affirm state="game_over" />
        </state>

        <state name="o_wins">                
        	<enter call="o_wins();" />
        	<affirm state="game_over" />
        </state>
        
        
        <state name="game_over">                
        	<enter call="game_over();" />
        	<negate state="x_turn" />
        	<negate state="o_turn" />        	
        	
        	<lock state="x_turn" />
        	<lock state="o_turn" />        	
        </state>
        
        
    </states>
</metawrap>