#if defined(_DEBUG) && defined(_Z_TESTMODE)

#include "g_local.h"
#include "z_frames.h"

/**************************************************************************
   Monster frame move lists.
  **************************************************************************/


/*=========================================================================
   Hound.
  =========================================================================*/

extern mmove_t hound_stand1;
extern mmove_t hound_stand2;
extern mmove_t hound_move_run;
extern mmove_t hound_move_walk;
extern mmove_t hound_move_pain1;
extern mmove_t hound_move_pain2;
extern mmove_t hound_move_attack1;
extern mmove_t hound_move_attack2;
extern mmove_t hound_move_jump;
extern mmove_t hound_move_death;

mmove_t *frame_moves_hound[] = {
         &hound_stand1, &hound_stand2, &hound_move_run,
         &hound_move_walk, &hound_move_pain1, &hound_move_pain2,
         &hound_move_attack1, &hound_move_attack2, &hound_move_jump,
         &hound_move_death,
         NULL};


/*=========================================================================
   Sentien.
  =========================================================================*/
extern mmove_t sentien_move_stand1;
extern mmove_t sentien_move_stand2;
extern mmove_t sentien_move_stand3;
extern mmove_t sentien_move_walk_start;
extern mmove_t sentien_move_walk;
extern mmove_t sentien_move_walk_end;
extern mmove_t sentien_move_run_start;
extern mmove_t sentien_move_run;
extern mmove_t sentien_move_run_end;
extern mmove_t sentien_move_pre_blast_attack;
extern mmove_t sentien_move_blast_attack;
extern mmove_t sentien_move_post_blast_attack;
extern mmove_t sentien_move_pre_laser_attack;
extern mmove_t sentien_move_laser_attack;
extern mmove_t sentien_move_post_laser_attack;
extern mmove_t sentien_move_pain1;
extern mmove_t sentien_move_pain2;
extern mmove_t sentien_move_pain3;
extern mmove_t sentien_move_death1;
extern mmove_t sentien_move_death2;

mmove_t *frame_moves_sentien[] = {
         &sentien_move_stand1, &sentien_move_stand2, &sentien_move_stand3,
         &sentien_move_walk_start, &sentien_move_walk, &sentien_move_walk_end,
         &sentien_move_run_start, &sentien_move_run, &sentien_move_run_end,
         &sentien_move_pre_blast_attack, &sentien_move_blast_attack,
         &sentien_move_post_blast_attack, &sentien_move_pre_laser_attack,
         &sentien_move_laser_attack, &sentien_move_post_laser_attack,
         &sentien_move_pain1, &sentien_move_pain2, &sentien_move_pain3,
         &sentien_move_death1, &sentien_move_death2,
         NULL};

/*=========================================================================
   Gunner.
  =========================================================================*/
extern mmove_t gunner_move_fidget;
extern mmove_t gunner_move_stand;
extern mmove_t gunner_move_walk;
extern mmove_t gunner_move_run;
extern mmove_t gunner_move_runandshoot;
extern mmove_t gunner_move_pain3;
extern mmove_t gunner_move_pain2;
extern mmove_t gunner_move_pain1;
extern mmove_t gunner_move_death;
extern mmove_t gunner_move_duck;
extern mmove_t gunner_move_attack_chain;
extern mmove_t gunner_move_fire_chain;
extern mmove_t gunner_move_endfire_chain;
extern mmove_t gunner_move_attack_grenade;

mmove_t *frame_moves_gunner[] = {
         &gunner_move_fidget, &gunner_move_stand, &gunner_move_walk,
         &gunner_move_run, &gunner_move_runandshoot,
         &gunner_move_pain3, &gunner_move_pain2, &gunner_move_pain1,
         &gunner_move_death, &gunner_move_duck,
         &gunner_move_attack_chain, &gunner_move_fire_chain,
         &gunner_move_endfire_chain, &gunner_move_attack_grenade,
         NULL};

/*=========================================================================
   Infantry.
  =========================================================================*/
extern mmove_t infantry_move_stand;
extern mmove_t infantry_move_fidget;
extern mmove_t infantry_move_walk;
extern mmove_t infantry_move_run;
extern mmove_t infantry_move_pain1;
extern mmove_t infantry_move_pain2;
extern mmove_t infantry_move_death1;
extern mmove_t infantry_move_death2;
extern mmove_t infantry_move_death3;
extern mmove_t infantry_move_duck;
extern mmove_t infantry_move_attack1;
extern mmove_t infantry_move_attack2;
extern mmove_t infantry_move_attack2;
extern mmove_t infantry_move_attack2;

mmove_t *frame_moves_infantry[] = {
         &infantry_move_stand, &infantry_move_fidget, &infantry_move_walk,
         &infantry_move_run, &infantry_move_pain1, &infantry_move_pain2,
         &infantry_move_death1, &infantry_move_death2, &infantry_move_death3,
         &infantry_move_duck, &infantry_move_attack1, &infantry_move_attack2,
         NULL};

/*=========================================================================
   Chick.
  =========================================================================*/
extern mmove_t chick_move_fidget;
extern mmove_t chick_move_stand;
extern mmove_t chick_move_start_run;
extern mmove_t chick_move_run;
extern mmove_t chick_move_walk;
extern mmove_t chick_move_pain1;
extern mmove_t chick_move_pain2;
extern mmove_t chick_move_pain3;
extern mmove_t chick_move_death2;
extern mmove_t chick_move_death1;
extern mmove_t chick_move_duck;
extern mmove_t chick_move_start_attack1;
extern mmove_t chick_move_attack1;
extern mmove_t chick_move_end_attack1;
extern mmove_t chick_move_slash;
extern mmove_t chick_move_end_slash;
extern mmove_t chick_move_start_slash;

mmove_t *frame_moves_chick[] = {
         &chick_move_fidget, &chick_move_stand, &chick_move_start_run,
         &chick_move_run, &chick_move_walk,
         &chick_move_pain1, &chick_move_pain2, &chick_move_pain3,
         &chick_move_death2, &chick_move_death1, &chick_move_duck,
         &chick_move_start_attack1, &chick_move_attack1, &chick_move_end_attack1,
         &chick_move_start_slash, &chick_move_slash, &chick_move_end_slash,
         NULL};

/*=========================================================================
   Gladiator.
  =========================================================================*/
extern mmove_t gladiator_move_stand;
extern mmove_t gladiator_move_walk;
extern mmove_t gladiator_move_run;
extern mmove_t gladiator_move_attack_melee;
extern mmove_t gladiator_move_attack_gun;
extern mmove_t gladiator_move_pain;
extern mmove_t gladiator_move_pain_air;
extern mmove_t gladiator_move_death;
extern mmove_t gladiator_move_death;
extern mmove_t gladiator_move_death;
extern mmove_t gladiator_move_death;

mmove_t *frame_moves_gladiator[] = {
         &gladiator_move_stand, &gladiator_move_walk, &gladiator_move_run,
         &gladiator_move_attack_melee, &gladiator_move_attack_gun, &gladiator_move_pain,
         &gladiator_move_pain_air, &gladiator_move_death,
         NULL};

/*=========================================================================
   Soldier.
  =========================================================================*/
extern mmove_t soldier_move_stand1;
extern mmove_t soldier_move_stand3;
extern mmove_t soldier_move_walk1;
extern mmove_t soldier_move_walk2;
extern mmove_t soldier_move_start_run;
extern mmove_t soldier_move_run;
extern mmove_t soldier_move_pain1;
extern mmove_t soldier_move_pain2;
extern mmove_t soldier_move_pain3;
extern mmove_t soldier_move_pain4;
extern mmove_t soldier_move_attack1;
extern mmove_t soldier_move_attack2;
extern mmove_t soldier_move_attack3;
extern mmove_t soldier_move_attack4;
extern mmove_t soldier_move_attack6;
extern mmove_t soldier_move_duck;
extern mmove_t soldier_move_death1;
extern mmove_t soldier_move_death2;
extern mmove_t soldier_move_death3;
extern mmove_t soldier_move_death4;
extern mmove_t soldier_move_death5;
extern mmove_t soldier_move_death6;
extern mmove_t soldier_move_death6;
extern mmove_t soldier_move_death6;
extern mmove_t soldier_move_death6;

mmove_t *frame_moves_soldier[] = {
         &soldier_move_stand1, &soldier_move_stand3,
         &soldier_move_walk1, &soldier_move_walk2,
         &soldier_move_start_run, &soldier_move_run,
         &soldier_move_pain1, &soldier_move_pain2,
         &soldier_move_pain3, &soldier_move_pain4,
         &soldier_move_attack1, &soldier_move_attack2, &soldier_move_attack3,
         &soldier_move_attack4, &soldier_move_attack6,
         &soldier_move_duck,
         &soldier_move_death1, &soldier_move_death2, &soldier_move_death3,
         &soldier_move_death4, &soldier_move_death5, &soldier_move_death6,
         NULL};

/*=========================================================================
   Supertank.
  =========================================================================*/
extern mmove_t supertank_move_stand;
extern mmove_t supertank_move_run;
extern mmove_t supertank_move_forward;
extern mmove_t supertank_move_turn_right;
extern mmove_t supertank_move_turn_left;
extern mmove_t supertank_move_pain3;
extern mmove_t supertank_move_pain2;
extern mmove_t supertank_move_pain1;
extern mmove_t supertank_move_death;
extern mmove_t supertank_move_backward;
extern mmove_t supertank_move_attack4;
extern mmove_t supertank_move_attack3;
extern mmove_t supertank_move_attack2;
extern mmove_t supertank_move_attack1;
extern mmove_t supertank_move_end_attack1;
extern mmove_t supertank_move_end_attack1;
extern mmove_t supertank_move_end_attack1;
extern mmove_t supertank_move_end_attack1;
extern mmove_t supertank_move_end_attack1;

mmove_t *frame_moves_supertank[] = {
         &supertank_move_stand, &supertank_move_run,
         &supertank_move_forward, &supertank_move_backward,
         &supertank_move_turn_right, &supertank_move_turn_left,
         &supertank_move_pain1, &supertank_move_pain2, &supertank_move_pain3,
         &supertank_move_death,
         &supertank_move_attack1, &supertank_move_end_attack1, 
         &supertank_move_attack2, &supertank_move_attack3, &supertank_move_attack4,
         NULL};

/*=========================================================================
   Tank.
  =========================================================================*/
extern mmove_t tank_move_stand;
extern mmove_t tank_move_start_walk;
extern mmove_t tank_move_walk;
extern mmove_t tank_move_stop_walk;
extern mmove_t tank_move_start_run;
extern mmove_t tank_move_run;
extern mmove_t tank_move_stop_run;
extern mmove_t tank_move_pain1;
extern mmove_t tank_move_pain2;
extern mmove_t tank_move_pain3;
extern mmove_t tank_move_attack_blast;
extern mmove_t tank_move_reattack_blast;
extern mmove_t tank_move_attack_post_blast;
extern mmove_t tank_move_attack_strike;
extern mmove_t tank_move_attack_pre_rocket;
extern mmove_t tank_move_attack_fire_rocket;
extern mmove_t tank_move_attack_post_rocket;
extern mmove_t tank_move_attack_chain;
extern mmove_t tank_move_death;
extern mmove_t tank_move_death;

mmove_t *frame_moves_tank[] = {
         &tank_move_stand,
         &tank_move_start_walk, &tank_move_walk, &tank_move_stop_walk,
         &tank_move_start_run, &tank_move_run, &tank_move_stop_run,
         &tank_move_pain1, &tank_move_pain2, &tank_move_pain3,
         &tank_move_attack_blast, &tank_move_reattack_blast, &tank_move_attack_post_blast,
         &tank_move_attack_strike, &tank_move_attack_chain,
         &tank_move_attack_pre_rocket, &tank_move_attack_fire_rocket, &tank_move_attack_post_rocket,
         &tank_move_death,
         NULL};

/**************************************************************************
   Sequence resolver for classnames.
  **************************************************************************/
mmove_t **z_frame_get_sequence(char *classname)
{
   if(Q_stricmp(classname, "monster_hound") == 0)
      return frame_moves_hound;

   if(Q_stricmp(classname, "monster_sentien") == 0)
      return frame_moves_sentien;

   if(Q_stricmp(classname, "monster_gunner") == 0)
      return frame_moves_gunner;

   if(Q_stricmp(classname, "monster_infantry") == 0)
      return frame_moves_infantry;

   if(Q_stricmp(classname, "monster_chick") == 0)
      return frame_moves_chick;

   if(Q_stricmp(classname, "monster_gladiator") == 0)
      return frame_moves_gladiator;

   if(Q_stricmp(classname, "monster_soldier") == 0)
      return frame_moves_soldier;

   if(Q_stricmp(classname, "monster_supertank") == 0)
      return frame_moves_supertank;

   if(Q_stricmp(classname, "monster_tank") == 0)
      return frame_moves_tank;


   gi.dprintf("classname <%s> not registered\n", classname);
   return NULL;
}

#endif
