#ifndef VDNPC_H
#define VDNPC_H



/* **********************************************************************************************************************
   Included Header Files
   **********************************************************************************************************************/

#include <vector>
#include "VDEntity.h"
#include "VDDialogue.h"
using namespace std;



/* **********************************************************************************************************************
   VDNPC
   **********************************************************************************************************************/

class VDNPC : public VDEntity {
public:
    VDNPC();
    VDNPC(LPCSTR aName);
    virtual ~VDNPC();

    void AddDialogue(int id, LPCSTR text);
    void RemoveDialogue(int id);
    void AddOption(int dialogueID, LPCSTR text, int nextID);
    void RemoveOption(int dialogueID, LPCSTR optionName);
     int RunLogic(double currentTime);
    void WriteNPC(HANDLE anOpenFile);
    void LoadNPC(HANDLE anOpenFile);

       int GetStatus();
      void SetStatus(int aStatus);
    size_t GetDialoguesSize();
    LPCSTR GetDialogueText(unsigned int index);
       int GetDialogueID(unsigned int index);
    size_t GetOptionsSize(int dialogueID);
    LPCSTR GetOption(int dialogueID, unsigned int optionIndex);
       int GetOptionNextID(int dialogueID, unsigned int optionIndex);
private:
                   int status;     // 0 null, 1 normal, 2 static
    vector<VDDialogue> dialogues;
                   int movementSpeed;  // TODO: move to VDEntity?
                double movementTimer;  // TODO: move to VDEntity?
};



#endif  // VDNPC_H