#ifndef _HPP_KUNGFLOW_CHARACTER_CONTROLLER
#define _HPP_KUNGFLOW_CHARACTER_CONTROLLER

#include "gaia/gaia.hpp"
using namespace gaia;

class KungFlowGame;
class PlayState;
class Stage;
class CharacterModelView;

enum e_ControllerType {
  e_ControllerType_Human,
  e_ControllerType_AI
};

class CharacterController {

  public:

    CharacterController(const KungFlowGame *game, const PlayState *playState, e_ControllerType controllerType = e_ControllerType_AI);
    virtual ~CharacterController();

    virtual void OnStepPhysicsTime(CharacterModelView *characterModelView) = 0;

    e_ControllerType GetControllerType() const { return controllerType; }

  protected:

    const KungFlowGame *game;
    const PlayState *playState;
    const Stage *_stage;

    e_ControllerType controllerType;

  private:

};

#endif
