<?xml version="1.0" encoding="utf-8"?>
<ItemRenderer>
  <Data>
    <Sprite name="s_umbrella" fileName="game/player_cosmetics4.rttex" textureSize="32" frame="3,0"/>
    <Sprite name="s_pet" fileName="game/pets/p_little_partern.rttex" textureSize="32" frame="0,0" />

    <StateMachines>
      <StateMachine name="Pet">
        <States>
          <State name="None"/>
          <State name="NoneAnimated"/>
          <State name="Up" />
          <State name="Down" />
          <State name="Horizontal" />
          <State name="Punch" />
        </States>
        <Transitions>
          <Transition to="None" from="Punch|Up|Down|Horizontal|NoneAnimated">
            <Condition type="and">
              <IsVariableFloat name="pet.velocity.length" operator="Less" abs="true">0.1</IsVariableFloat>
              <IsAction operatorType="NotEqual">PUNCH</IsAction>
              <IsAnimationFinished>a_Idle_anim</IsAnimationFinished>
			  <IsVariableBool name="onGround">true</IsVariableBool>
            </Condition>
          </Transition>
          <Transition to="NoneAnimated" from="None">
            <Condition type="and">
              <IsVariableFloat name="pet.velocity.length" operator="Less" abs="true">0.1</IsVariableFloat>
              <IsAction operatorType="NotEqual">PUNCH</IsAction>
              <CheckRandomRangeNumber EndNumber="100">0</CheckRandomRangeNumber>
            </Condition>
          </Transition>
          <Transition to="Up" from="Punch|None|Down|Horizontal|NoneAnimated">
            <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|NoneAnimated">
            <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|NoneAnimated">
            <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>
				<IsVariableBool name="onGround">true</IsVariableBool>
            </Condition>
          </Transition>
          <Transition to="Punch" from="None|Up|Down|Horizontal|NoneAnimated">
            <Condition>
              <IsAction>PUNCH</IsAction>
            </Condition>
          </Transition>
        </Transitions>
      </StateMachine>
      <StateMachine name="Player">
        <States>
          <State name="OnGround"/>
          <State name="InAir"/>
        </States>
        <Transitions>
          <Transition to="OnGround" from="InAir">
            <Condition>
              <IsVariableBool name="onGround">true</IsVariableBool>
            </Condition>
          </Transition>
          <Transition to="InAir" from="OnGround">
            <Condition>
              <IsVariableBool name="onGround">false</IsVariableBool>
            </Condition>
          </Transition>
        </Transitions>
      </StateMachine>
    </StateMachines>

    <Animations>
      <SpriteAnimation name="a_non_jump" playOnState="Player.OnGround" sprite="s_umbrella" animTime="100">
        <Frame>3, 0</Frame>
      </SpriteAnimation>
      <SpriteAnimation name="a_jump" playOnState="Player.InAir" sprite="s_umbrella" animTime="100">
        <Frame>4, 0</Frame>
      </SpriteAnimation>
      <SpriteCurveAnimation name="a_rotate_jump_right" sprite="s_umbrella" playOnState="Player.InAir" useFacing="RIGHT" isLoop="true">
        <Curve name="rotation">
          <KeyFrame>0, 140</KeyFrame>
        </Curve>
      </SpriteCurveAnimation>
      <SpriteCurveAnimation name="a_rotate_jump_left" sprite="s_umbrella" playOnState="Player.InAir" useFacing="LEFT" isLoop="true">
        <Curve name="rotation">
          <KeyFrame>0, 220</KeyFrame>
        </Curve>
      </SpriteCurveAnimation>
      <SpriteCurveAnimation name="a_rotate_on_ground" sprite="s_umbrella" playOnState="Player.OnGround" isLoop="true">
        <Curve name="rotation">
          <KeyFrame>0, 0</KeyFrame>
        </Curve>
      </SpriteCurveAnimation>
      <SpriteAnimation name="a_Attack" sprite="s_pet" animTime="100" isLoop="true" playOnState="Pet.Punch">
        <Frame>3,1</Frame>
      </SpriteAnimation>
      <SpriteAnimation name="a_Fall" sprite="s_pet" animTime="100" isLoop="true" playOnState="Pet.Down">
        <Frame>2,1</Frame>
      </SpriteAnimation>
      <SpriteAnimation name="a_Idle" sprite="s_pet" animTime="100" isLoop="true" playOnState="Pet.None">
        <Frame>0,0</Frame>
      </SpriteAnimation>
      <SpriteAnimation name="a_Idle_anim" sprite="s_pet" animTime="1000" isLoop="false" playOnState="Pet.NoneAnimated">
        <Frame>0,0</Frame>
        <Frame>1,0</Frame>
        <Frame>2,0</Frame>
        <Frame>3,0</Frame>
        <Frame>4,0</Frame>
        <Frame>5,0</Frame>
        <Frame>4,0</Frame>
        <Frame>3,0</Frame>
        <Frame>2,0</Frame>
        <Frame>1,0</Frame>
      </SpriteAnimation>
      <SpriteAnimation name="a_Jump" sprite="s_pet" animTime="100" isLoop="true" playOnState="Pet.Up">
        <Frame>1,1</Frame>
      </SpriteAnimation>
      <SpriteAnimation name="a_Move" sprite="s_pet" animTime="300" isLoop="true" playOnState="Pet.Horizontal">
        <Frame>6,0</Frame>
        <Frame>7,0</Frame>
        <Frame>0,1</Frame>
      </SpriteAnimation>
    </Animations>

    <RenderOptions>
      <Default>
        <Set name="IgnorePunchTypeCheck">true</Set>
        <Set name="DefaultRenderMannequinHandItem">false</Set>
        <Set name="RenderFrontArmInfected">true</Set>
        <Set name="RenderFrontArmInTheFront">true</Set>
        <Set name="NeedRenderPet">true</Set>
        <Set name="PetOffsetDuplication">-32,0</Set>
        <Set name="UsePetForceFaceTime">false</Set>
      </Default>
    </RenderOptions>

  </Data>

  <RenderRules>
    <Update>
      <AvatarTransform class="ArmAngle" onState="Player.InAir">
        <Set name="armName">arm2Angle</Set>
        <Set name="armAngle">-140</Set>
      </AvatarTransform>
    </Update>
    <RenderHandItem>
      <SpriteRender name="s_umbrella" offset="8,8" rotateOffset="true" blend="PREMULTIPLIED_ALPHA" onState="Player.OnGround"/>
      <SpriteRender name="s_umbrella" offset="5,16" rotateOffset="true" blend="PREMULTIPLIED_ALPHA" onState="Player.InAir"/>
    </RenderHandItem>
    <RenderPet>
      <SpriteRender name="s_pet" offset="-16,0" alignment="DOWN_CENTER" />
    </RenderPet>
    <UpdatePet>
      <ContextUpdate type="SetPetWalkRunJump">
        <Set name="PetWalkRunJump.minSpeed">500</Set>
        <Set name="PetWalkRunJump.distSpeedMult">10</Set>
      </ContextUpdate>
    </UpdatePet>
  </RenderRules>
</ItemRenderer>