#ifndef CHARACTER_H
#define CHARACTER_H

#include <string>

#include "Ability.h"
#include "LSObject.h"
#include "Actor.h"

class Character : public Actor {
public:
    explicit Character(const shared_ptr<LSObject> &obj) : Actor(obj) { }

    std::string Archetype() const;
    std::string SubClass() const;
    std::string TradeskillArchtype() const;
    std::string TradeskillClass() const;
    std::string TradeskillSubClass() const;
    Actor CursorActor() const;

    // GameData

    // Location
    bool IsMoving() const;
    bool InGameWorld() const;
    bool AtCharSelect() const;
    float WaterDepth() const;
    float HeadingTo(float toX, float toY, float toZ) const;
    string HeadingToAsString(float toX, float toY, float toZ) const;

    // Experience/Level
    int VeteranBonus() const;
    int Level() const;
    int EffectiveLevel() const;
    int TradeskillLevel() const;
    int APExperience() const;
    int TotalEarnedAPs() const;
    int MaxAPs() const;

    // Abilities & Recipes
    int NumAbilities() const;
    Ability Ability(int index) const;
};



#endif //CHARACTER_H
