<?xml version="1.0"?>
<ItemRenderer>
  <Data>
    <Sprite name="s_Minigun" fileName="game/player_cosmetics3.rttex" textureSize="32" frame="17,29"/>
    <Sprite name="s_MuzzleFlash" fileName="game/particles12.rttex" textureSize="32" frame="22,2"/>
    <Sprite name="s_Projectile" fileName="game/particles12.rttex" textureSize="32" frame="23,2"/>
    <Sprite name="s_ProjectileHit" fileName="game/particles12.rttex" textureSize="32" frame="24,2"/>

    <StateMachines>
      <StateMachine name="Punch">
        <States>
          <State name="True"/>
          <State name="False"/>
        </States>
        <Transitions>
          <Transition from="False" to="True">
            <Condition type="and">
              <IsAction>PUNCH</IsAction>
              <IsZombified>false</IsZombified>
            </Condition>
          </Transition>
          <Transition from="True" to="False">
            <Condition>
              <IsAction operatorType="NotEqual">PUNCH</IsAction>
            </Condition>
          </Transition>
        </Transitions>
      </StateMachine>
    </StateMachines>

    <Animations>
      <SpriteAnimation name="a_PunchGun" sprite="s_Minigun" animTime="250" isLoop="true" playOnState="Punch.True">
        <Frame>17,29</Frame>
        <Frame>18,29</Frame>
        <Frame>19,29</Frame>
        <Frame>20,29</Frame>
      </SpriteAnimation>
      <SpriteAnimation name="a_NonPunchGun" sprite="s_Minigun" animTime="100" isLoop="true" playOnState="Punch.False">
        <Frame>16,29</Frame>
      </SpriteAnimation>
    </Animations>

    <RenderOptions>
      <Default>
        <Set name="PunchSoundOverride">HAND</Set>
        <Set name="PlayDefaultPunchAudio">false</Set>
        <Set name="DefaultRenderMannequinHandItem">false</Set>
        <Set name="RenderFrontArmInfected">true</Set>
      </Default>
    </RenderOptions>

    <ParticleSystems>
	    <ParticleSystem name="ps_muzzleFlash"  updateStage="RenderHandItem" updateState="Punch.True">
		    <Emitter attachment="handspotRoot">
			    <Set name="offset">0, 17</Set>
				<Set name="lifeTime">0.072</Set>
			    <Set name="emissionInterval">0.05</Set>
			    <Set name="infParticles">true</Set>
			    <Set name="checkParticleNumToEmit">true</Set>
			    <Set name="particlesPerEmission">1</Set>
			    <Set name="particlesToEmit">1</Set>
		    </Emitter>
		    <Particle>
			    <Set name="relativeToEmitter">true</Set>
			    <Set name="sprite">s_MuzzleFlash</Set>
			    <Set name="blendingMode">PREMULTIPLIED_ALPHA</Set>
			    <Curve name="initialAlpha">
				    <KeyFrame>0, 1</KeyFrame>
				    <KeyFrame>1, 0</KeyFrame>
			    </Curve>
			    <Set name="lifeTime">0.15</Set>
			    <Set name="initialAngle">90</Set>
		    </Particle>
	    </ParticleSystem>
      <ParticleSystem name="Punch" updateStage="RenderHandItem" updateState="Punch.True" secondary="BulletHit">
        <Emitter attachment="handspotRoot">
          <Random name="offset" min="-2, 8" max="2, 8"/>
          <Set name="lifeTime">0.072</Set>
          <Set name="infParticles">true</Set>
          <Set name="checkParticleNumToEmit">true</Set>
          <Set name="particlesPerEmission">1</Set>
          <Set name="particlesToEmit">1</Set>
        </Emitter>
        <Particle>
          <Set name="sprite">s_Projectile</Set>
          <Set name="blendingMode">PREMULTIPLIED_ALPHA</Set>
          <Set name="rotateWithVelocity">true</Set>
          <Set name="lifeTime">0.2</Set>
          <Random name="targetPosOffset" min="-15, -8" max="15, 8"/>
          <VectorTo name="initialVelocity" source="targetPos" offset="targetPosOffset" duration="lifeTime" x="1"/>
        </Particle>
      </ParticleSystem>
      <ParticleSystem name="BulletHit">
        <Emitter>
          <Set name="offset">0, 0</Set>
          <Set name="infParticles">true</Set>
          <Set name="checkParticleNumToEmit">true</Set>
          <Set name="particlesPerEmission">1</Set>
          <Set name="particlesToEmit">1</Set>
          <Set name="delayTimer">0.2</Set>
        </Emitter>
        <Particle>
          <Set name="sprite">s_ProjectileHit</Set>
          <Set name="blendingMode">PREMULTIPLIED_ALPHA</Set>
          <Curve name="initialAlpha">
            <KeyFrame>0, 1</KeyFrame>
            <KeyFrame>0.75, 1</KeyFrame>
            <KeyFrame>1, 0</KeyFrame>
          </Curve>
          <Curve name="initialScale">
            <KeyFrame>0, 1, 1</KeyFrame>
            <KeyFrame>1, 0, 0</KeyFrame>
          </Curve>
          <Set name="lifeTime">0.1</Set>
          <Random name="initialAngle" min="0" max="360"/>
          <Select name="initialRotationRate" input="randomNumber">
            <Item>-720</Item>
            <Item>720</Item>
          </Select>
        </Particle>
      </ParticleSystem>
    </ParticleSystems>
  </Data>

  <RenderRules>
    <RenderHandItem>
      <SpriteRender name="s_Minigun" offset="0,0" rotateOffset="true" alignment="UPPER_CENTER" blend="PREMULTIPLIED_ALPHA"/>
    </RenderHandItem>
    <OnPunchUpdate>
      <StopIf>
        <IsZombified>true</IsZombified>
      </StopIf>
      <AvatarTransform class="Emotion">
        <Set name="emotion">ANGRY</Set>
      </AvatarTransform>
      <AvatarTransform class="ArmAngle">
        <Set name="armName">arm2Angle</Set>
        <Set name="angleOffset">0</Set>
        <Set name="pointTowardsPunchTarget">true</Set>
      </AvatarTransform>
      <AvatarTransform class="ArmAngle">
        <Set name="armName">arm1Angle</Set>
        <Set name="armAngle">0</Set>
      </AvatarTransform>
    </OnPunchUpdate>

    <RenderFrontArm>
      <ContextUpdate type="PositionSinPulse" onState="Punch.True">
        <Set name="period">100</Set>
        <Set name="scale">-0.5</Set>
        <Set name="clamp">true</Set>
      </ContextUpdate>
    </RenderFrontArm>
  </RenderRules>
</ItemRenderer>