#ifndef _BATTLE_H_
#define _BATTLE_H_

#include "allegro.h"
#include "Loader.h"
#include "UnitList.h"
#include "MusicSound.h"
#include "InputObj.h"
#include "GameSettings.h"
#include "Campaign.h"
#include <vector>
#include <string>
using namespace std;

class Battle {
 public:
  Battle ();

  int battleLoop (string, string, Loader *);
  void showCampaignIntro (BITMAP *);
  void showRoundIntro (int, int, BITMAP *, BITMAP *, bool);
  void getNextRound ();
  void drawToScreen (BITMAP *, bool);
  void drawHUD (Loader *);
  bool isRoundOver (Loader *);
  void setGameSettings (GameSettings *);
  void setMusicSound (MusicSound *);
  void setInputObj (InputObj * i);
  void recordStats ();
  void drawArena (BITMAP *);
  void setUpArena ();

  ~Battle ();

 protected:
  string thisCampaign;
  string pcName;
  int numRound;
  int totalRounds;
  UnitList * units;
  BITMAP * screenBuffer;
  MusicSound * noiseInstrument;
  InputObj * iO;
  GameSettings * gs;
  Round * rnd;

  int arenaDrawPosX, arenaDrawPosY;
  fixed arenaDrawScale;
  fixed arenaDrawAngle;
  BITMAP * arenaDraw;

  BITMAP * statusDraw;

  bool gamePaused;

  int battleEndStatus;

  Campaign camp;

  int playerScore;
};

#endif
