<!---  Produced by FS2LSL (Flash Scratch to LSL),  John K. Bennett,  ATLAS Institute, University of Colorado at Boulder,  http://redwood.colorado.edu/jkb/fs2lsl/  -->
<program>
  <globvars>
    <stack x="10" y="5">
      <block spec="Declare Global Variables"/>
      <block spec="global comment: %s">
        <blockarg val="SYW Listing 1.2: Texture Flipper for a Neon Sign"/>
      </block>
      <block spec="global comment: %s">
        <blockarg val="Constants"/>
      </block>
      <block spec="create global var: %g type: %m value: %t">
        <blockarg val="TIMER_INTERVAL"/>
        <blockarg val="integer"/>
        <blockarg val="2"/>
      </block>
      <block spec="create global var: %g type: %m value: %t">
        <blockarg val="NEON_OFF_TEXTURE"/>
        <blockarg val="string"/>
        <blockarg val="&quot;bcf8cd82-f8eb-00c6-9d61-e610566f81c5&quot;"/>
      </block>
      <block spec="create global var: %g type: %m value: %t">
        <blockarg val="NEON_ON_TEXTURE"/>
        <blockarg val="string"/>
        <blockarg val="&quot;6ee46522-5c60-c107-200b-ecb6e037293e&quot;"/>
      </block>
      <block spec="global comment: %s">
        <blockarg val="Global Variables"/>
      </block>
      <block spec="create global var: %g type: %m value: %t">
        <blockarg val="gOn"/>
        <blockarg val="integer"/>
        <blockarg val="TRUE"/>
      </block>
      <block spec="create global var: %g type: %m value: %t">
        <blockarg val="gSide"/>
        <blockarg val="integer"/>
        <blockarg val="0"/>
      </block>
      <block spec="create global var: %g type: %m value: %t">
        <blockarg val="gListenChannel"/>
        <blockarg val="integer"/>
        <blockarg val="989"/>
      </block>
    </stack>
  </globvars>
  <functions>
    <func>
      <stack x="22" y="275">
        <block funcSpec="void fliptexture(string texture)"/>
        <block spec="set texture on side %1 to %s">
          <block varName="gSide" varScope="global"/>
          <block varName="texture" varScope="proc"/>
        </block>
      </stack>
    </func>
    <func>
      <stack x="19" y="364">
        <block funcSpec="void usage()"/>
        <block spec="say to owner %s">
          <blockarg val="&quot;Turn on by saying: /&quot;+(string)gListenChannel+&quot; sign-on&quot;"/>
        </block>
        <block spec="say to owner %s">
          <blockarg val="&quot;Turn off by saying: /&quot;+(string)gListenChannel+&quot; sign-off&quot;"/>
        </block>
      </stack>
    </func>
  </functions>
  <states>
    <state>
      <stacks>
        <stack x="21" y="475">
          <block spec="state %s">
            <blockarg val="default"/>
          </block>
          <block spec="when I enter this state"/>
          <block spec="set a timer for %n secs">
            <block varName="TIMER_INTERVAL" varScope="global"/>
          </block>
          <block spec="listen for owner on channel %s">
            <block varName="gListenChannel" varScope="global"/>
          </block>
        </stack>
        <stack x="22" y="618">
          <block spec="when I receive a message"/>
          <block spec="ifelse %b">
            <block spec=" %n %Q %n ">
              <block spec="received %E">
                <blockarg val="message"/>
              </block>
              <blockarg val="=="/>
              <blockarg val="&quot;sign-on&quot;"/>
            </block>
            <stack>
              <block fCallSpec="fliptexture( %s )" funcName="fliptexture" numArgs="1">
                <block varName="NEON_ON_TEXTURE" varScope="global"/>
              </block>
              <block spec="set %s = %n">
                <block varName="gOn" varScope="global"/>
                <block spec="true"/>
              </block>
              <block spec="set a timer for %n secs">
                <block varName="TIMER_INTERVAL" varScope="global"/>
              </block>
            </stack>
            <stack>
              <block spec="ifelse %b">
                <block spec=" %n %Q %n ">
                  <block spec="received %E">
                    <blockarg val="message"/>
                  </block>
                  <blockarg val="=="/>
                  <blockarg val="&quot;sign-off&quot;"/>
                </block>
                <stack>
                  <block fCallSpec="fliptexture( %s )" funcName="fliptexture" numArgs="1">
                    <block varName="NEON_OFF_TEXTURE" varScope="global"/>
                  </block>
                  <block spec="set %s = %n">
                    <block varName="gOn" varScope="global"/>
                    <block spec="false"/>
                  </block>
                  <block spec="set a timer for %n secs">
                    <blockarg val="0"/>
                  </block>
                </stack>
                <stack>
                  <block fCallSpec="usage()" funcName="usage" numArgs="0"/>
                </stack>
              </block>
            </stack>
          </block>
        </stack>
        <stack x="22" y="965">
          <block spec="when timer triggers"/>
          <block spec="ifelse %b">
            <block varName="gOn" varScope="global"/>
            <stack>
              <block fCallSpec="fliptexture( %s )" funcName="fliptexture" numArgs="1">
                <block varName="NEON_OFF_TEXTURE" varScope="global"/>
              </block>
              <block spec="set %s = %n">
                <block varName="gOn" varScope="global"/>
                <block spec="false"/>
              </block>
            </stack>
            <stack>
              <block fCallSpec="fliptexture( %s )" funcName="fliptexture" numArgs="1">
                <block varName="NEON_ON_TEXTURE" varScope="global"/>
              </block>
              <block spec="set %s = %n">
                <block varName="gOn" varScope="global"/>
                <block spec="true"/>
              </block>
            </stack>
          </block>
        </stack>
      </stacks>
    </state>
  </states>
</program>