#include "Animation.h" #include "Crawler.h" #include "DEFINES.h" INCLUDE_game INCLUDE_ANIMATION_DATA void sig::Animation::InitializeAnimations(){ auto CreateStillAnimation=[&](Renderable&img,vf2d size,AnimationState state,AnimationData data={}){ Animate2D::FrameSequence anim(data.frameDuration,data.style); anim.AddFrame({&img,{{0,0},size}}); ANIMATION_DATA[state]=anim; }; auto CreateHorizontalAnimationSequence=[&](Renderable&img,int frameCount,vf2d size,AnimationState state,AnimationData data={}){ Animate2D::FrameSequence anim(data.frameDuration,data.style); for(int i=0;iGFX_Warrior_Sheet,AnimationState::WARRIOR_WALK_S); Animate2D::FrameSequence pl_warrior_swing_s(0.05),pl_warrior_swing_n(0.05),pl_warrior_swing_e(0.05),pl_warrior_swing_w(0.05); Animate2D::FrameSequence pl_warrior_sonic_swing_s(0.1,Animate2D::Style::OneShot),pl_warrior_sonic_swing_n(0.1,Animate2D::Style::OneShot),pl_warrior_sonic_swing_e(0.1,Animate2D::Style::OneShot),pl_warrior_sonic_swing_w(0.1,Animate2D::Style::OneShot); for (int i=0;i<4;i++){ pl_warrior_swing_s.AddFrame({&game->GFX_Warrior_Sheet,{vi2d{4+i,0}*24,{24,24}}}); pl_warrior_sonic_swing_s.AddFrame({&game->GFX_Warrior_Sheet,{vi2d{4+i,4}*24,{24,24}}}); } for (int i=0;i<4;i++){ pl_warrior_swing_n.AddFrame({&game->GFX_Warrior_Sheet,{vi2d{4+i,1}*24,{24,24}}}); pl_warrior_sonic_swing_n.AddFrame({&game->GFX_Warrior_Sheet,{vi2d{4+i,5}*24,{24,24}}}); } for (int i=0;i<4;i++){ pl_warrior_swing_w.AddFrame({&game->GFX_Warrior_Sheet,{vi2d{4+i,2}*24,{24,24}}}); pl_warrior_sonic_swing_w.AddFrame({&game->GFX_Warrior_Sheet,{vi2d{4+i,6}*24,{24,24}}}); } for (int i=0;i<4;i++){ pl_warrior_swing_e.AddFrame({&game->GFX_Warrior_Sheet,{vi2d{4+i,3}*24,{24,24}}}); pl_warrior_sonic_swing_e.AddFrame({&game->GFX_Warrior_Sheet,{vi2d{4+i,7}*24,{24,24}}}); } ANIMATION_DATA[AnimationState::WARRIOR_SWINGSWORD_N]=pl_warrior_swing_n; ANIMATION_DATA[AnimationState::WARRIOR_SWINGSWORD_E]=pl_warrior_swing_e; ANIMATION_DATA[AnimationState::WARRIOR_SWINGSWORD_S]=pl_warrior_swing_s; ANIMATION_DATA[AnimationState::WARRIOR_SWINGSWORD_W]=pl_warrior_swing_w; ANIMATION_DATA[AnimationState::WARRIOR_SWINGSONICSWORD_N]=pl_warrior_sonic_swing_n; ANIMATION_DATA[AnimationState::WARRIOR_SWINGSONICSWORD_E]=pl_warrior_sonic_swing_e; ANIMATION_DATA[AnimationState::WARRIOR_SWINGSONICSWORD_S]=pl_warrior_sonic_swing_s; ANIMATION_DATA[AnimationState::WARRIOR_SWINGSONICSWORD_W]=pl_warrior_sonic_swing_w; //Ranger animations SetupClassWalkIdleAnimations(game->GFX_Ranger_Sheet,AnimationState::RANGER_WALK_S); Animate2D::FrameSequence pl_ranger_shoot_s,pl_ranger_shoot_n,pl_ranger_shoot_e,pl_ranger_shoot_w; for(int i=0;i<3;i++){ pl_ranger_shoot_s.AddFrame({&game->GFX_Ranger_Sheet,{vi2d{3+i,0}*24,{24,24}}}); pl_ranger_shoot_n.AddFrame({&game->GFX_Ranger_Sheet,{vi2d{3+i,1}*24,{24,24}}}); pl_ranger_shoot_e.AddFrame({&game->GFX_Ranger_Sheet,{vi2d{3+i,3}*24,{24,24}}}); pl_ranger_shoot_w.AddFrame({&game->GFX_Ranger_Sheet,{vi2d{3+i,2}*24,{24,24}}}); } ANIMATION_DATA[AnimationState::RANGER_SHOOT_S]=pl_ranger_shoot_s; ANIMATION_DATA[AnimationState::RANGER_SHOOT_N]=pl_ranger_shoot_n; ANIMATION_DATA[AnimationState::RANGER_SHOOT_E]=pl_ranger_shoot_e; ANIMATION_DATA[AnimationState::RANGER_SHOOT_W]=pl_ranger_shoot_w; //Wizard animations SetupClassWalkIdleAnimations(game->GFX_Wizard_Sheet,AnimationState::WIZARD_WALK_S); Animate2D::FrameSequence pl_wizard_idle_attack_s; pl_wizard_idle_attack_s.AddFrame({&game->GFX_Wizard_Sheet,{vi2d{4,0}*24,{24,24}}}); ANIMATION_DATA[AnimationState::WIZARD_IDLE_ATTACK_S]=pl_wizard_idle_attack_s; Animate2D::FrameSequence pl_wizard_idle_attack_e; pl_wizard_idle_attack_e.AddFrame({&game->GFX_Wizard_Sheet,{vi2d{4,3}*24,{24,24}}}); ANIMATION_DATA[AnimationState::WIZARD_IDLE_ATTACK_E]=pl_wizard_idle_attack_e; Animate2D::FrameSequence pl_wizard_idle_attack_w; pl_wizard_idle_attack_w.AddFrame({&game->GFX_Wizard_Sheet,{vi2d{4,2}*24,{24,24}}}); ANIMATION_DATA[AnimationState::WIZARD_IDLE_ATTACK_W]=pl_wizard_idle_attack_w; Animate2D::FrameSequence pl_wizard_idle_attack_n; pl_wizard_idle_attack_n.AddFrame({&game->GFX_Wizard_Sheet,{vi2d{4,1}*24,{24,24}}}); ANIMATION_DATA[AnimationState::WIZARD_IDLE_ATTACK_N]=pl_wizard_idle_attack_n; Animate2D::FrameSequence pl_wizard_attack_s(0.2); for(int i=0;i<3;i++){ pl_wizard_attack_s.AddFrame({&game->GFX_Wizard_Sheet,{vi2d{4+i,0}*24,{24,24}}}); if(i==1){ pl_wizard_attack_s.AddFrame({&game->GFX_Wizard_Sheet,{vi2d{4,0}*24,{24,24}}}); } } ANIMATION_DATA[AnimationState::WIZARD_ATTACK_S]=pl_wizard_attack_s; Animate2D::FrameSequence pl_wizard_attack_e(0.2); for(int i=0;i<3;i++){ pl_wizard_attack_e.AddFrame({&game->GFX_Wizard_Sheet,{vi2d{4+i,3}*24,{24,24}}}); if(i==1){ pl_wizard_attack_e.AddFrame({&game->GFX_Wizard_Sheet,{vi2d{4,3}*24,{24,24}}}); } } ANIMATION_DATA[AnimationState::WIZARD_ATTACK_E]=pl_wizard_attack_e; Animate2D::FrameSequence pl_wizard_attack_w(0.2); for(int i=0;i<3;i++){ pl_wizard_attack_w.AddFrame({&game->GFX_Wizard_Sheet,{vi2d{4+i,2}*24,{24,24}}}); if(i==1){ pl_wizard_attack_w.AddFrame({&game->GFX_Wizard_Sheet,{vi2d{4,2}*24,{24,24}}}); } } ANIMATION_DATA[AnimationState::WIZARD_ATTACK_W]=pl_wizard_attack_w; Animate2D::FrameSequence pl_wizard_attack_n(0.2); for(int i=0;i<3;i++){ pl_wizard_attack_n.AddFrame({&game->GFX_Wizard_Sheet,{vi2d{4+i,1}*24,{24,24}}}); if(i==1){ pl_wizard_attack_n.AddFrame({&game->GFX_Wizard_Sheet,{vi2d{4,1}*24,{24,24}}}); } } ANIMATION_DATA[AnimationState::WIZARD_ATTACK_N]=pl_wizard_attack_n; Animate2D::FrameSequence pl_wizard_cast_s(0.1); for(int i=0;i<2;i++){ pl_wizard_cast_s.AddFrame({&game->GFX_Wizard_Sheet,{vi2d{7+i,0}*24,{24,24}}}); } ANIMATION_DATA[AnimationState::WIZARD_CAST_S]=pl_wizard_cast_s; Animate2D::FrameSequence pl_wizard_cast_e(0.1); for(int i=0;i<2;i++){ pl_wizard_cast_e.AddFrame({&game->GFX_Wizard_Sheet,{vi2d{7+i,3}*24,{24,24}}}); } ANIMATION_DATA[AnimationState::WIZARD_CAST_E]=pl_wizard_cast_e; Animate2D::FrameSequence pl_wizard_cast_n(0.1); for(int i=0;i<2;i++){ pl_wizard_cast_n.AddFrame({&game->GFX_Wizard_Sheet,{vi2d{7+i,1}*24,{24,24}}}); } ANIMATION_DATA[AnimationState::WIZARD_CAST_N]=pl_wizard_cast_n; Animate2D::FrameSequence pl_wizard_cast_w(0.1); for(int i=0;i<2;i++){ pl_wizard_cast_w.AddFrame({&game->GFX_Wizard_Sheet,{vi2d{7+i,2}*24,{24,24}}}); } ANIMATION_DATA[AnimationState::WIZARD_CAST_W]=pl_wizard_cast_w; //Load slime animations. for(int slime=0;slime<4;slime++){ for(int state=0;state<5;state++){ Animate2D::FrameSequence anim; if(state==4){//These are death animations. anim=Animate2D::FrameSequence(0.1f,Animate2D::Style::OneShot); } if(state==2){//These are death animations. anim=Animate2D::FrameSequence(0.06f); } for (int frame=0;frame<10;frame++){ anim.AddFrame({&game->GFX_Slime_Sheet,{vi2d{frame,state+5*slime}*24,{24,24}}}); } ANIMATION_DATA[AnimationState(AnimationState::GREEN_SLIME_IDLE+state+slime*5)]=anim; } } CreateHorizontalAnimationSequence(game->GFX_Effect_GroundSlam_Back,5,{64,64},AnimationState::GROUND_SLAM_ATTACK_BACK,{0.02,Animate2D::Style::OneShot}); CreateHorizontalAnimationSequence(game->GFX_Effect_GroundSlam_Front,5,{64,64},AnimationState::GROUND_SLAM_ATTACK_FRONT,{0.02,Animate2D::Style::OneShot}); CreateHorizontalAnimationSequence(game->GFX_Battlecry_Effect,5,{84,84},AnimationState::BATTLECRY_EFFECT,{0.02,Animate2D::Style::OneShot}); CreateHorizontalAnimationSequence(game->GFX_SonicSlash,4,{60,60},AnimationState::SONICSLASH,{0.04,Animate2D::Style::OneShot}); CreateStillAnimation(game->GFX_EnergyBolt,{24,24},AnimationState::ENERGY_BOLT); CreateHorizontalAnimationSequence(game->GFX_EnergyParticle,3,{3,3},AnimationState::ENERGY_PARTICLE); CreateHorizontalAnimationSequence(game->GFX_Splash_Effect,5,{24,24},AnimationState::SPLASH_EFFECT,{0.05}); CreateStillAnimation(game->GFX_BulletCircle,{3,3},AnimationState::DOT_PARTICLE); CreateHorizontalAnimationSequence(game->GFX_LightningBolt,5,{24,24},AnimationState::LIGHTNING_BOLT,{0.03,Animate2D::Style::PingPong}); CreateStillAnimation(game->GFX_LightningBoltParticle1,{5,5},AnimationState::LIGHTNING_BOLT_PARTICLE1); CreateStillAnimation(game->GFX_LightningBoltParticle2,{5,5},AnimationState::LIGHTNING_BOLT_PARTICLE2); CreateStillAnimation(game->GFX_LightningBoltParticle3,{5,5},AnimationState::LIGHTNING_BOLT_PARTICLE3); CreateStillAnimation(game->GFX_LightningBoltParticle4,{5,5},AnimationState::LIGHTNING_BOLT_PARTICLE4); CreateStillAnimation(game->GFX_ChainLightning,{1,9},AnimationState::CHAIN_LIGHTNING); CreateHorizontalAnimationSequence(game->GFX_LightningSplash,5,{24,24},AnimationState::LIGHTNING_SPLASH); CreateStillAnimation(game->GFX_Meteor,{192,192},AnimationState::METEOR); for(int i=0;i<5;i++){ Animate2D::FrameSequence firering; firering.AddFrame({&game->GFX_LightningSplash,{{i*24,0},{24,24}}}); ANIMATION_DATA[AnimationState(AnimationState::FIRE_RING1+i)]=firering; } CreateStillAnimation(game->GFX_Arrow,{24,24},AnimationState::ARROW); } void sig::Animation::SetupPlayerAnimations(){ game->GetPlayer()->AddAnimation(AnimationState::WARRIOR_WALK_N); game->GetPlayer()->AddAnimation(AnimationState::WARRIOR_WALK_E); game->GetPlayer()->AddAnimation(AnimationState::WARRIOR_WALK_S); game->GetPlayer()->AddAnimation(AnimationState::WARRIOR_WALK_W); game->GetPlayer()->AddAnimation(AnimationState::WARRIOR_IDLE_N); game->GetPlayer()->AddAnimation(AnimationState::WARRIOR_IDLE_E); game->GetPlayer()->AddAnimation(AnimationState::WARRIOR_IDLE_S); game->GetPlayer()->AddAnimation(AnimationState::WARRIOR_IDLE_W); game->GetPlayer()->AddAnimation(AnimationState::WARRIOR_SWINGSWORD_E); game->GetPlayer()->AddAnimation(AnimationState::WARRIOR_SWINGSWORD_S); game->GetPlayer()->AddAnimation(AnimationState::WARRIOR_SWINGSWORD_N); game->GetPlayer()->AddAnimation(AnimationState::WARRIOR_SWINGSWORD_W); game->GetPlayer()->AddAnimation(AnimationState::WARRIOR_SWINGSONICSWORD_E); game->GetPlayer()->AddAnimation(AnimationState::WARRIOR_SWINGSONICSWORD_S); game->GetPlayer()->AddAnimation(AnimationState::WARRIOR_SWINGSONICSWORD_N); game->GetPlayer()->AddAnimation(AnimationState::WARRIOR_SWINGSONICSWORD_W); game->GetPlayer()->AddAnimation(AnimationState::RANGER_WALK_N); game->GetPlayer()->AddAnimation(AnimationState::RANGER_WALK_E); game->GetPlayer()->AddAnimation(AnimationState::RANGER_WALK_S); game->GetPlayer()->AddAnimation(AnimationState::RANGER_WALK_W); game->GetPlayer()->AddAnimation(AnimationState::RANGER_IDLE_N); game->GetPlayer()->AddAnimation(AnimationState::RANGER_IDLE_E); game->GetPlayer()->AddAnimation(AnimationState::RANGER_IDLE_S); game->GetPlayer()->AddAnimation(AnimationState::RANGER_IDLE_W); game->GetPlayer()->AddAnimation(AnimationState::RANGER_SHOOT_S); game->GetPlayer()->AddAnimation(AnimationState::RANGER_SHOOT_N); game->GetPlayer()->AddAnimation(AnimationState::RANGER_SHOOT_W); game->GetPlayer()->AddAnimation(AnimationState::RANGER_SHOOT_E); game->GetPlayer()->AddAnimation(AnimationState::WIZARD_WALK_N); game->GetPlayer()->AddAnimation(AnimationState::WIZARD_WALK_E); game->GetPlayer()->AddAnimation(AnimationState::WIZARD_WALK_S); game->GetPlayer()->AddAnimation(AnimationState::WIZARD_WALK_W); game->GetPlayer()->AddAnimation(AnimationState::WIZARD_IDLE_N); game->GetPlayer()->AddAnimation(AnimationState::WIZARD_IDLE_E); game->GetPlayer()->AddAnimation(AnimationState::WIZARD_IDLE_S); game->GetPlayer()->AddAnimation(AnimationState::WIZARD_IDLE_W); game->GetPlayer()->AddAnimation(AnimationState::WIZARD_IDLE_ATTACK_N); game->GetPlayer()->AddAnimation(AnimationState::WIZARD_IDLE_ATTACK_E); game->GetPlayer()->AddAnimation(AnimationState::WIZARD_IDLE_ATTACK_S); game->GetPlayer()->AddAnimation(AnimationState::WIZARD_IDLE_ATTACK_W); game->GetPlayer()->AddAnimation(AnimationState::WIZARD_ATTACK_N); game->GetPlayer()->AddAnimation(AnimationState::WIZARD_ATTACK_E); game->GetPlayer()->AddAnimation(AnimationState::WIZARD_ATTACK_S); game->GetPlayer()->AddAnimation(AnimationState::WIZARD_ATTACK_W); game->GetPlayer()->AddAnimation(AnimationState::WIZARD_CAST_N); game->GetPlayer()->AddAnimation(AnimationState::WIZARD_CAST_E); game->GetPlayer()->AddAnimation(AnimationState::WIZARD_CAST_S); game->GetPlayer()->AddAnimation(AnimationState::WIZARD_CAST_W); }