<?xml version="1.0" encoding="UTF-8"?>
<otrunk id="13d3fb4f-123a-425f-9d60-d84e145c0678">
  <imports>
  	<import class="org.concord.otrunk.OTIncludeRootObject" />
  	<import class="org.concord.otrunk.OTInclude" />
    <import class="org.concord.otrunk.OTSystem" />
    <import class="org.concord.otrunk.biologica.OTOrganismPlacement" />
    <import class="org.concord.otrunk.biologica.OTEnvironment" />
    <import class="org.concord.otrunk.biologica.OTOrganism" />
    <import class="org.concord.otrunk.biologica.OTWorld" />
    <import class="org.concord.otrunk.biologica.agent.OTAgentSpecies" />
    <import class="org.concord.otrunk.biologica.agent.OTAgentTrait" />
    <import class="org.concord.otrunk.biologica.agent.OTAgentPropertyImageMap" />
    <import class="org.concord.otrunk.biologica.environment.OTEnvironmentHolder"/>
    <import class="org.concord.otrunk.biologica.rules.OTRule"/>
    <import class="org.concord.otrunk.biologica.rules.OTRuleCondition"/>
    <import class="org.concord.otrunk.biologica.rules.OTRuleConsequence"/>
    <import class="org.concord.otrunk.ui.OTSlider"/>
    <import class="org.concord.otrunk.view.OTViewEntry" />
    <import class="org.concord.otrunk.view.OTViewBundle" />
    <import class="org.concord.otrunk.view.OTViewMode" />
    <import class="org.concord.otrunk.view.document.OTCompoundDoc" />
    <import class="org.concord.otrunk.script.ui.OTScriptObject" />
    <import class="org.concord.otrunk.script.js.OTJavascript" />
    <import class="org.concord.otrunk.script.OTScriptEngineBundle" />
    <import class="org.concord.otrunk.script.OTScriptEngineEntry" />
    <import class="org.concord.otrunk.script.ui.OTScriptVariable" />
    <import class="org.concord.otrunk.script.ui.OTScriptVariableComponent" />
    <import class="org.concord.otrunk.script.ui.OTScriptVariableRealObject" />
    <import class="org.concord.otrunk.script.ui.OTScriptVariableView" />
    <import class="org.concord.otrunk.script.ui.OTScriptButton" />
    <import class="org.concord.framework.otrunk.view.OTFrame" />
  </imports>
	<idMap> 
	  <idMapping local_id="rabbit-species" id="eec525fc-4ca5-4fa9-be17-e3d9fa44ed24"/> 
	  <idMapping local_id="fox-species" id="c59a7a17-5585-4860-b6a5-803e74ea2dbd"/>
	</idMap> 
  <objects>
    <OTSystem>

      <bundles>
        <OTViewBundle showLeftPanel="false">
        	<modes>
            <OTViewMode name="authoring">
              <map>
                <entry key="${env-view}">
                  <OTViewEntry objectClass="org.concord.otrunk.biologica.OTEnvironment" viewClass="org.concord.otrunk.biologica.ui.OTEnvironmentEditView" />
                </entry>
                <entry key="${env-holder-view}">
                  <OTViewEntry objectClass="org.concord.otrunk.biologica.environment.OTEnvironmentHolder" viewClass="org.concord.otrunk.biologica.environment.OTEnvironmentHolderEditView" />
                </entry>
              </map>
            </OTViewMode>
          </modes>
          <viewEntries>
            <OTViewEntry local_id="env-holder-view" 
            	objectClass="org.concord.otrunk.biologica.environment.OTEnvironmentHolder" 
            	viewClass="org.concord.otrunk.biologica.environment.OTEnvironmentHolderView" />
           	<OTViewEntry 
           		objectClass="org.concord.otrunk.biologica.rules.OTRule" 
           		viewClass="org.concord.otrunk.biologica.ui.OTRuleEditView" />
            <OTViewEntry local_id="env-view" 
              objectClass="org.concord.otrunk.biologica.OTEnvironment"
              viewClass="org.concord.otrunk.biologica.ui.OTEnvironmentView" />
            <OTViewEntry
              objectClass="org.concord.otrunk.script.ui.OTScriptObject"
              viewClass="org.concord.otrunk.script.ui.OTScriptObjectView" />
            <OTViewEntry
              objectClass="org.concord.otrunk.view.document.OTDocument"
              viewClass="org.concord.otrunk.view.document.OTDocumentView" />
            <OTViewEntry 
          	objectClass="org.concord.otrunk.script.ui.OTScriptButton" 
          	viewClass="org.concord.otrunk.script.ui.OTScriptButtonView"/>
          	<OTViewEntry 
          		objectClass="org.concord.otrunk.biologica.environment.OTEnvironmentHolder" 
          		viewClass="org.concord.otrunk.biologica.environment.OTEnvironmentHolderView"/>
          	<OTViewEntry 
          		objectClass="org.concord.otrunk.ui.OTSlider" 
          		viewClass="org.concord.otrunk.ui.swing.OTSliderView"/>
          </viewEntries>
          <frame>
            <OTFrame useScrollPane="false" width="800" height="590" />
          </frame>
        </OTViewBundle>
        <OTScriptEngineBundle>
          <engines>
            <OTScriptEngineEntry
              objectClass="org.concord.otrunk.script.js.OTJavascript"
              engineClass="org.concord.otrunk.script.js.OTJavascriptEngine" />
          </engines>
        </OTScriptEngineBundle>
      </bundles>
	  <includes>
        <OTInclude href="species/white-brown-rabbits.otml" />
        <OTInclude href="species/foxes.otml" />
      </includes>
      <root>
        <OTCompoundDoc name="Population">
          <bodyText>
          
            <table >
              <tr height="690">
	              <td>
	              	<object refid="${env-holder}" />
	              </td>
	              <td>
	              	<object refid="${add-rabbits-button}"/><br/>
	              	<object refid="${add-foxes-button}"/><br/><br/>
	              	Green grass<br/>
	              	<object refid="${grass-slider}"/><br/>
	              	Brown grass<br/><br />
                  <object refid="${clear-button}"/><br/>
	              </td>
              </tr>
            </table>
          
          		<object refid="${setup-script}"/>
            </bodyText>
          <documentRefs>
          	<OTEnvironmentHolder local_id="env-holder" width="730" height="600" >
          		<environment>
		          	<OTEnvironment local_id="environment" world="${peasimple_world}" 
		            	width="550" height="500" environmentWidth="10" environmentHeight="10"
		            	showRunButton="false">
		            	<rules>
		            		<OTRule description="Chance of being seen depends on brownness">
		                      <conditions>
		                        <OTRuleCondition property="color" equals="brown"/>
		                      </conditions>
		                      <consequences>
		                        <OTRuleConsequence property="chance of being seen">
		                          <ruleScript>return 1.0 - (brownness*0.75)</ruleScript>
		                          <propertyVariables>
		                            <string>brownness</string>
		                          </propertyVariables>
		                        </OTRuleConsequence>
		                      </consequences>
		                    </OTRule>
		            	</rules>
		            </OTEnvironment>
		        </environment>
		    </OTEnvironmentHolder>
		    <OTScriptObject local_id="setup-script">
             		<script>
             			<OTJavascript src="scripts/rabbits/setup.js"/>
             		</script>
             		<variables>
             			<OTScriptVariableRealObject name="env" reference="${environment}"/>
             			<OTScriptVariable name="slider" reference="${grass-slider}"/>
             		</variables>
             </OTScriptObject>
             <OTScriptButton local_id="add-rabbits-button" text="Add rabbits">
             		<script>
             			<object refid="${add-orgs.js}"/>
             		</script>
             		<scriptVariables>
             			<OTScriptVariableRealObject name="environment" reference="${environment}"/>
             			<OTScriptVariableRealObject name="species" reference="${rabbit-species}"/>
             		</scriptVariables>
             </OTScriptButton>
             <OTScriptButton local_id="add-foxes-button" text="Add foxes">
             		<script>
             			<object refid="${add-orgs.js}"/>
             		</script>
             		<scriptVariables>
             			<OTScriptVariableRealObject name="environment" reference="${environment}"/>
             			<OTScriptVariableRealObject name="species" reference="${fox-species}"/>
             		</scriptVariables>
             </OTScriptButton>
             
             <OTSlider local_id="grass-slider" value="100" numTicks="10"/>
            

            <!-- World definition: is ignored -->
            <OTWorld
              speciesPath="org/concord/biologica/worlds/peasimple.xml"
              local_id="peasimple_world" />
              
              <OTJavascript local_id="add-orgs.js">
     				<script>
      				function clicked()
      				{
      					for (var i = 0; i&lt;5; i++){
      						environment.addAgent(species.createAgent());
      					}
      				}
     				</script>
     			</OTJavascript>
     			<OTScriptButton local_id="clear-button" text="Clear">
             		<script>
             			<OTJavascript>
     				<script>function clicked()
      				{
      					environment.removeAllAgents();
      				}
     				</script>
     			</OTJavascript>
             		</script>
             		<scriptVariables>
             			<OTScriptVariableRealObject name="environment" reference="${environment}"/>
             		</scriptVariables>
             </OTScriptButton>
          </documentRefs>
        </OTCompoundDoc>

      </root>

    </OTSystem>
  </objects>
</otrunk>