#include "Character.h"

std::string Character::Archetype() const {
    return this->lsObject->GetMember("Archetype").CharPtr;
}

std::string Character::SubClass() const {
    return this->lsObject->GetMember("SubClass").CharPtr;
}

std::string Character::TradeskillArchtype() const {
    return this->lsObject->GetMember("TSArchetype").CharPtr;
}

std::string Character::TradeskillClass() const {
    return this->lsObject->GetMember("TSClass").CharPtr;
}

std::string Character::TradeskillSubClass() const {
    return this->lsObject->GetMember("TSSubClass").CharPtr;
}

Actor Character::CursorActor() const {
    return Actor(make_shared<LSObject>(LSObject(this->lsObject->GetMember("CursorActor"))));
}

bool Character::IsMoving() const {
    return this->lsObject->GetMember("IsMoving").Int;
}

bool Character::InGameWorld() const {
    return this->lsObject->GetMember("InGameWorld").Int;
}

bool Character::AtCharSelect() const {
    return this->lsObject->GetMember("AtCharSelect").Int;
}

float Character::WaterDepth() const {
    return this->lsObject->GetMember("WaterDepth").Float;
}

float Character::HeadingTo(const float toX, const float toY, const float toZ) const {
    return this->lsObject->GetMember("HeadingTo", toX, toY, toZ).Float;
}

string Character::HeadingToAsString(const float toX, const float toY, const float toZ) const {
    return this->lsObject->GetMember("HeadingTo", toX, toY, toZ, "AsString").CharPtr;
}

int Character::VeteranBonus() const {
    return this->lsObject->GetMember("VeteranBonus").Int;
}

int Character::Level() const {
    return this->lsObject->GetMember("Level").Int;
}

int Character::EffectiveLevel() const {
    return this->lsObject->GetMember("EffectiveLevel").Int;
}

int Character::TradeskillLevel() const {
    return this->lsObject->GetMember("TSLevel").Int;
}

int Character::APExperience() const {
    return this->lsObject->GetMember("APExp").Int;
}

int Character::TotalEarnedAPs() const {
    return this->lsObject->GetMember("TotalEarnedAPs").Int;
}

int Character::MaxAPs() const {
    return this->lsObject->GetMember("MaxAPs").Int;
}

int Character::NumAbilities() const {
    return this->lsObject->GetMember("NumAbilities").Int;
}

Ability Character::Ability(const int index) const {
    return Ability::Ability(make_shared<LSObject>(LSObject(this->lsObject->GetMember("Ability", index))));
}




