<?xml version="1.0"?>
<ItemRenderer>
  <Data>
    <Sprite name="s_leash" fileName="game/player_cosmetics3.rttex" textureSize="32" frame="21,21" />
    <Sprite name="s_pet" fileName="game/pets/p_hugo.rttex" textureSize="32" frame="0,0" />
    <Sprite name="s_transform" fileName="game/pets/p_hugo.rttex" textureSize="32" frame="0,0" />
    <Sprite name="s_punch" fileName="game/particles.rttex" textureSize="32" frame="0,6" />

    <StateMachines>
      <StateMachine name="Pet">
        <States>
          <State name="None" />
          <State name="Up" />
          <State name="Down" />
          <State name="Horizontal" />
          <State name="Punch" />
        </States>
        <Transitions>
          <Transition to="None" from="Punch|Up|Down|Horizontal">
            <Condition type="and">
              <IsVariableFloat name="pet.velocity.length" operator="Less" abs="true">0.1</IsVariableFloat>
              <IsAction operatorType="NotEqual">PUNCH</IsAction>
            </Condition>
          </Transition>
          <Transition to="Up" from="Punch|None|Down|Horizontal">
            <Condition type="and">
              <IsVariableFloat name="pet.velocity.y" operator="Less">-0.1</IsVariableFloat>
              <IsAction operatorType="NotEqual">PUNCH</IsAction>
            </Condition>
          </Transition>
          <Transition to="Down" from="Punch|None|Up|Horizontal">
            <Condition type="and">
              <IsVariableFloat name="pet.velocity.y" operator="Greater">0.1</IsVariableFloat>
              <IsAction operatorType="NotEqual">PUNCH</IsAction>
            </Condition>
          </Transition>
          <Transition to="Horizontal" from="Punch|None|Down|Up">
            <Condition type="and">
              <IsVariableFloat name="pet.velocity.x" operator="Greater" abs="true">0.1</IsVariableFloat>
              <IsVariableFloat name="pet.velocity.y" operator="Less" abs="true">0.1</IsVariableFloat>
              <IsAction operatorType="NotEqual">PUNCH</IsAction>
            </Condition>
          </Transition>
          <Transition to="Punch" from="None|Up|Down|Horizontal">
            <Condition>
              <IsAction>PUNCH</IsAction>
            </Condition>
          </Transition>
        </Transitions>
      </StateMachine>
      <StateMachine name="Transform">
        <States>
          <State name="Idle" />
          <State name="Walk" />
          <State name="Jump" />
          <State name="Fall" />
          <State name="Punch" />
        </States>
        <Transitions>
          <Transition to="Idle" from="Walk|Fall|Punch|Jump">
            <Condition type="and">
              <IsVariableBool name="onGround">true</IsVariableBool>
              <IsVariableFloat name="speed.length" operator="Less" abs="true">0.1</IsVariableFloat>
              <IsAction operator="NotEqual">PUNCH</IsAction>
            </Condition>
          </Transition>
          <Transition to="Walk" from="Idle|Fall|Punch|Jump">
            <Condition type="and">
              <IsVariableBool name="onGround">true</IsVariableBool>
              <IsVariableFloat name="speed.length" operator="Greater" abs="true">0.1</IsVariableFloat>
              <IsAction operator="NotEqual">PUNCH</IsAction>
            </Condition>
          </Transition>
          <Transition to="Jump" from="Idle|Walk|Fall|Punch">
            <Condition type="and">
              <IsVariableBool name="onGround">false</IsVariableBool>
              <IsVariableFloat name="speed.y" operator="Less">-0.1</IsVariableFloat>
              <IsAction operator="NotEqual">PUNCH</IsAction>
            </Condition>
          </Transition>
          <Transition to="Fall" from="Jump|Idle|Walk|Punch">
            <Condition type="and">
              <IsVariableBool name="onGround">false</IsVariableBool>
              <IsVariableFloat name="speed.y" operator="Greater">0.1</IsVariableFloat>
              <IsAction operator="NotEqual">PUNCH</IsAction>
            </Condition>
          </Transition>
          <Transition to="Punch" from="Idle|Walk|Jump|Fall">
            <Condition type="and">
              <IsAction>PUNCH</IsAction>
            </Condition>
          </Transition>
        </Transitions>
      </StateMachine>
      <StateMachine name="IsTransformed">
        <States>
          <State name="No" />
          <State name="Yes" />
        </States>
        <Transitions>
          <Transition to="Yes" from="No">
            <Condition>
              <IsItemTransformed>true</IsItemTransformed>
            </Condition>
          </Transition>
          <Transition to="No" from="Yes">
            <Condition>
              <IsItemTransformed>false</IsItemTransformed>
            </Condition>
          </Transition>
        </Transitions>
      </StateMachine>
    </StateMachines>
    
    <Animations>
      <SpriteAnimation name="a_idle" sprite="s_transform" animTime="300" isLoop="true" playOnState="Transform.Idle">
        <Frame>0,0</Frame>
        <Frame>1,0</Frame>
        <Frame>2,0</Frame>
      </SpriteAnimation>
      <SpriteAnimation name="a_walk" sprite="s_transform" animTime="300" isLoop="true" playOnState="Transform.Walk">
        <Frame>3,0</Frame>
        <Frame>4,0</Frame>
        <Frame>5,0</Frame>
      </SpriteAnimation>
      <SpriteAnimation name="a_jump" sprite="s_transform" animTime="100" isLoop="true" playOnState="Transform.Jump">
        <Frame>6,0</Frame>
      </SpriteAnimation>
      <SpriteAnimation name="a_fall" sprite="s_transform" animTime="100" isLoop="true" playOnState="Transform.Fall">
        <Frame>7,0</Frame>
      </SpriteAnimation>
      <SpriteAnimation name="a_punch" sprite="s_transform" animTime="400" isLoop="true" playOnState="Transform.Punch">
        <Frame>0,1</Frame>
        <Frame>1,1</Frame>
      </SpriteAnimation>
      <SpriteAnimation name="a_Attack" sprite="s_pet" animTime="400" isLoop="true" playOnState="Pet.Punch">
        <Frame>0,1</Frame>
        <Frame>1,1</Frame>
      </SpriteAnimation>
      <SpriteAnimation name="a_Fall" sprite="s_pet" animTime="100" isLoop="true" playOnState="Pet.Down">
        <Frame>7,0</Frame>
      </SpriteAnimation>
      <SpriteAnimation name="a_Idle" sprite="s_pet" animTime="300" isLoop="true" playOnState="Pet.None">
        <Frame>0,0</Frame>
        <Frame>1,0</Frame>
        <Frame>2,0</Frame>
      </SpriteAnimation>
      <SpriteAnimation name="a_Jump" sprite="s_pet" animTime="100" isLoop="true" playOnState="Pet.Up">
        <Frame>6,0</Frame>
      </SpriteAnimation>
      <SpriteAnimation name="a_Move" sprite="s_pet" animTime="300" isLoop="true" playOnState="Pet.Horizontal">
        <Frame>3,0</Frame>
        <Frame>4,0</Frame>
        <Frame>5,0</Frame>
      </SpriteAnimation>
    </Animations>
    
    <ParticleSystems>
      <ParticleSystem name="PunchParticle">
        <Emitter attachment="targetPos">
          <Set name="emissionInterval">0.05</Set>
          <Set name="infParticles">true</Set>
          <Set name="infLifeTime">true</Set>
          <Set name="particlesPerEmission">2</Set>
          <Set name="particlesToEmit">1</Set>
        </Emitter>
        <Particle>
          <Set name="sprite">s_punch</Set>
          <Random name="offset" min="-16,-16" max="16,16" />
          <Set name="blendingMode">ADDITIVE</Set>
          <Curve name="initialAlpha">
            <KeyFrame>0, 1</KeyFrame>
            <KeyFrame>0.5, 1</KeyFrame>
            <KeyFrame>1, 0</KeyFrame>
          </Curve>
          <Random name="initialScale" min="0.5,0.75" max="0.5,1" />
          <Set name="lifeTime">0.2</Set>
          <Random name="initialAngle" min="0" max="360" />
        </Particle>
      </ParticleSystem>
    </ParticleSystems>

    <RenderOptions>
      <Default>
        <Set name="NeedRenderPet">true</Set>
        <Set name="PetOffsetDuplication">-32,0</Set>
        <Set name="UsePetForceFaceTime">false</Set>
        <Set name="PlayDefaultPunchAudio">true</Set>
        <Set name="DefaultPunchSound">audio/chorizobark.wav</Set>
      </Default>
    </RenderOptions>
  </Data>
  <RenderRules>
    <RenderHandItem>
      <SpriteRender name="s_leash" rotationPoint="0,1" alignment="UPPER_CENTER" />
    </RenderHandItem>
    <AddClothingParticles>
      <ParticleSystemUpdate name="PunchParticle" onState="Pet.Punch|Transform.Punch"/>
    </AddClothingParticles>
    <OnPunchUpdate>
      <StopIf>
        <IsItemTransformed>true</IsItemTransformed>
      </StopIf>
      <AvatarTransform class="Face">
        <Set name="face">MAD</Set>
      </AvatarTransform>
    </OnPunchUpdate>
    <RenderPet>
      <StopIf>
        <IsItemTransformed>true</IsItemTransformed>
      </StopIf>
      <SpriteRender name="s_pet" offset="-16,0" alignment="DOWN_CENTER" />
    </RenderPet>
    <UpdatePet>
      <StopIf>
        <IsItemTransformed>true</IsItemTransformed>
      </StopIf>
      <ContextUpdate type="SetPetWalkRunJump">
        <Set name="PetWalkRunJump.minSpeed">500</Set>
        <Set name="PetWalkRunJump.distSpeedMult">10</Set>
      </ContextUpdate>
    </UpdatePet>
    <RenderTransform>
      <SpriteRender name="s_transform" blend="PREMULTIPLIED_ALPHA" offset="0,8" />
    </RenderTransform>
  </RenderRules>
</ItemRenderer>
