]> git.localhorst.tv Git - l2e.git/commitdiff
implemented spell sorting
authorDaniel Karbach <daniel.karbach@localhorst.tv>
Sun, 18 Nov 2012 16:13:24 +0000 (17:13 +0100)
committerDaniel Karbach <daniel.karbach@localhorst.tv>
Sun, 18 Nov 2012 16:21:22 +0000 (17:21 +0100)
sorting order is cost for now, need to find out the real order

src/common/Hero.h
src/common/Spell.cpp
src/common/Spell.h
src/menu/SpellMenu.cpp
src/menu/SpellMenu.h

index 77269c6b25572415a43c32da5e83cbd15c001f47..1905c815e9cac9cbb7549c0f276b8054a6c9a035 100644 (file)
@@ -71,6 +71,7 @@ public:
        bool HasRing() const { return ring; }
        bool HasJewel() const { return jewel; }
 
+       std::vector<const Spell *> &Spells() { return spells; }
        const std::vector<const Spell *> &Spells() const { return spells; }
 
        graphics::Sprite *BattleSprite() { return battleSprite; }
index 4fce22f1e42ea3e15992b969a952c8296cd9ee60..33979ca9811d97a32a84a28b30bedd71db3853fc 100644 (file)
@@ -23,6 +23,12 @@ Spell::Spell()
 }
 
 
+bool Spell::Less(const Spell *lhs, const Spell *rhs) {
+       // TODO: find out real spell sorting order
+       return lhs->Cost() < rhs->Cost();
+}
+
+
 void Spell::CreateTypeDescription() {
        Spell s;
 
index 0f864b81bda0c3c8bd42373e24cf324e82c9a3b1..e9befa900184ce499ba8135aea6a7e940a0a3bb6 100644 (file)
@@ -35,6 +35,8 @@ public:
        HeroGroup &UsableBy() { return usableBy; }
        const HeroGroup &UsableBy() const { return usableBy; }
 
+       static bool Less(const Spell *, const Spell *);
+
 // temporary setters
 public:
        void SetName(const char *n) { name = n; }
index 0f34d067940ffc56148eacb4a58d82a59a4b7e62..3be722bffa550313b9005d408a166268bb68b329 100644 (file)
@@ -18,6 +18,7 @@
 #include "../graphics/Font.h"
 #include "../graphics/Frame.h"
 
+#include <algorithm>
 #include <SDL.h>
 #include <vector>
 
@@ -68,6 +69,10 @@ const Hero &SpellMenu::GetHero() const {
        return *parent->Game().state->party[cursor];
 }
 
+Hero &SpellMenu::GetHero() {
+       return *parent->Game().state->party[cursor];
+}
+
 void SpellMenu::OnExitState(SDL_Surface *) {
        SDL_FreeSurface(highlight);
 }
@@ -112,7 +117,9 @@ void SpellMenu::HandleEvents(const Input &input) {
        if (input.JustPressed(Input::ACTION_A)) {
                if (actionMenu.IsActive()) {
                        if (actionMenu.Selected() == CHOICE_SORT) {
-                               // TODO: sort spells
+                               std::sort(GetHero().Spells().begin(),
+                                               GetHero().Spells().end(),
+                                               Spell::Less);
                                LoadSpells();
                        } else {
                                actionMenu.SetSelected();
index c9c62a79b6ea968358231d0bf8ffe707564c1372..d289794795852b4552d2f07aa68dddfb5f5067b8 100644 (file)
@@ -39,6 +39,7 @@ private:
 
        virtual void OnResize(int width, int height);
 
+       common::Hero &GetHero();
        const common::Hero &GetHero() const;
 
        void LoadSpells();