]> git.localhorst.tv Git - l2e.git/blobdiff - src/common/Capsule.cpp
more intuitive horizontal capsule class navigation
[l2e.git] / src / common / Capsule.cpp
index a944e70c622bffbed9fbeecd6759ff298bf23dec..f886724515c3db11f9d5698f3d063f3eb306c45f 100644 (file)
@@ -23,6 +23,8 @@ Capsule::Capsule()
 : name("")
 , alignment("")
 
+, alignmentSprite(0)
+
 , maxHealth(0)
 
 , level(1)
@@ -33,18 +35,39 @@ Capsule::Capsule()
 
 , classes(0)
 , numClasses(0)
-, curClass(0)
+, curClass(-1)
 , maxClass(0) {
 
 }
 
 
+const char *Capsule::ClassName() const {
+       return GetClass().name;
+}
+
+const char *Capsule::Tribe() const {
+       return GetClass().tribe;
+}
+
+const Spell *Capsule::Attack1() const {
+       return GetClass().attacks[0];
+}
+
+const Spell *Capsule::Attack2() const {
+       return GetClass().attacks[1];
+}
+
+const Spell *Capsule::Attack3() const {
+       return GetClass().attacks[2];
+}
+
+
 Uint16 Capsule::MaxHealth() const {
        return maxHealth + GetClass().healthBoost;
 }
 
 
-Stats Capsule::GetStats() {
+Stats Capsule::GetStats() const {
        return stats + GetClass().statBoost;
 }
 
@@ -57,6 +80,35 @@ int Capsule::NextLevel() const {
        }
 }
 
+void Capsule::UpgradeClass() {
+       ++maxClass;
+       ++curClass;
+}
+
+void Capsule::NextClass() {
+       ++curClass;
+       if (curClass >= maxClass) {
+               curClass = 0;
+       }
+}
+
+void Capsule::PreviousClass() {
+       --curClass;
+       if (curClass < 0) {
+               curClass = maxClass - 1;
+       }
+}
+
+void Capsule::SetClass(int index) {
+       curClass = index;
+       if (curClass < 0 ) {
+               curClass = 0;
+       }
+       if (curClass >= maxClass) {
+               curClass = maxClass - 1;
+       }
+}
+
 
 Sprite *Capsule::BattleSprite() {
        return GetClass().battleSprite;
@@ -115,6 +167,9 @@ void Capsule::CreateTypeDescription() {
        td.AddField("name", FieldDescription(((char *)&c.name) - ((char *)&c), Interpreter::STRING_ID).SetReferenced());
        td.AddField("alignment", FieldDescription(((char *)&c.alignment) - ((char *)&c), Interpreter::STRING_ID).SetReferenced());
 
+       td.AddField("alignmentCursor", FieldDescription(((char *)&c.alignmentCursor) - ((char *)&c), Interpreter::VECTOR_ID));
+       td.AddField("alignmentSprite", FieldDescription(((char *)&c.alignmentSprite) - ((char *)&c), Sprite::TYPE_ID).SetReferenced());
+
        td.AddField("maxHealth", FieldDescription(((char *)&c.maxHealth) - ((char *)&c), Interpreter::NUMBER_ID));
 
        td.AddField("stats", FieldDescription(((char *)&c.stats) - ((char *)&c), Stats::TYPE_ID));