All pastes #1753140 Raw Edit

clueless

public text v1 · immutable
#1753140 ·published 2010-01-16 03:06 UTC
rendered paste body
Index: src/client/gui/pawsskillwindow.h===================================================================--- src/client/gui/pawsskillwindow.h	(revision 5301)+++ src/client/gui/pawsskillwindow.h	(working copy)@@ -100,7 +100,7 @@     void BuySkill();     void BuyMaxSkill(); -    void HandleSkillList(psSkillCache *skills, int selectedNameId = -1, int *rowIdx = NULL);+    void HandleSkillList(psSkillCache *skills, int selectedNameId = -1, int *rowIdx = NULL, bool flush = true);     void HandleSkillDescription( csString& description );      void SelectSkill(int skill, int cat);@@ -115,7 +115,7 @@      /** This handles the skill list for each category */     void HandleSkillCategory(pawsListBox* tabNameSkillList, const char* indWidget,-                             const char* tabName, psSkillCacheItem* skillInfo, int &idx);+                             const char* tabName, psSkillCacheItem* skillInfo, int &idx, bool flush);      pawsListBox *statsSkillList, *combatSkillList, *magicSkillList, *jobsSkillList, *variousSkillList;     pawsListBox *factionList;Index: src/client/gui/pawsskillwindow.cpp===================================================================--- src/client/gui/pawsskillwindow.cpp	(revision 5301)+++ src/client/gui/pawsskillwindow.cpp	(working copy)@@ -299,10 +299,11 @@                     skillString = incoming.commandData;                     skillCache.apply(&incoming.skillCache); +                    bool flush = train != incoming.trainingWindow;                     train=incoming.trainingWindow;                      int selectedRowIdx = -1;-                    HandleSkillList(&skillCache, incoming.focusSkill, &selectedRowIdx);+                    HandleSkillList(&skillCache, incoming.focusSkill, &selectedRowIdx, true);                      SelectSkill(selectedRowIdx, incoming.skillCat); @@ -418,29 +419,40 @@     } } -void pawsSkillWindow::HandleSkillList(psSkillCache *skills, int selectedNameId, int *rowIdx)+void pawsSkillWindow::HandleSkillList(psSkillCache *skills, int selectedNameId, int *rowIdx, bool flush) {-    combatSkillList->Clear();//Clear everything each time we filter out.-    statsSkillList->Clear();-    magicSkillList->Clear();-    jobsSkillList->Clear();-    variousSkillList->Clear();-    selectedSkill.Clear();+    if (!flush && !skills->isModified())+        return; -    // Clear descriptions-    statsSkillDescription->SetText("");-    combatSkillDescription->SetText("");-    magicSkillDescription->SetText("");-    jobsSkillDescription->SetText("");-    variousSkillDescription->SetText("");+    if (skills->hasRemoved())+        flush = true; -    unsortedSkills.DeleteAll();+    if (flush)+    {+        selectedSkill.Clear();++        // Clear descriptions+        statsSkillDescription->SetText("");+        combatSkillDescription->SetText("");+        magicSkillDescription->SetText("");+        jobsSkillDescription->SetText("");+        variousSkillDescription->SetText("");++        // Clear everything on a flush+        combatSkillList->Clear();+        statsSkillList->Clear();+        magicSkillList->Clear();+        jobsSkillList->Clear();+        variousSkillList->Clear();+        unsortedSkills.DeleteAll();+    }+     x = skills->getProgressionPoints();-     foundSelected = false;      int idx = 0; // Row index counter     psSkillCacheIter p = skills->iterBegin();+    bool stats = false, combat = false, magic = false, jobs = false, various = false;     while (p.HasNext())     {         psSkillCacheItem *skill = p.Next();@@ -450,45 +462,86 @@             *rowIdx = idx; // Row index of the selected skill         } -        switch (skill->getCategory())+        if (flush || skill->isModified())         {-            case 0://Stats+            switch (skill->getCategory())             {-                HandleSkillCategory(statsSkillList, "StatsIndicator", "Stats Button", skill, idx);-                break;+                case 0://Stats+                {+                    stats = true;+                    HandleSkillCategory(statsSkillList, "StatsIndicator", "Stats Button", skill, idx, flush);+                    break;+                }+                case 1://Combat skills+                {+                    combat = true;+                    HandleSkillCategory(combatSkillList, "CombatIndicator", "Combat Button", skill, idx, flush);+                    break;+                }+                case 2://Magic skills+                {+                    magic = true;+                    HandleSkillCategory(magicSkillList, "MagicIndicator", "Magic Button", skill, idx, flush);+                    break;+                }+                case 3://Jobs skills+                {+                    jobs = true;+                    HandleSkillCategory(jobsSkillList, "JobsIndicator", "Jobs Button", skill, idx, flush);+                    break;+                }+                case 4://Various skills+                {+                    various = true;+                    HandleSkillCategory(variousSkillList, "VariousIndicator", "Various Button", skill, idx, flush);+                    break;+                }             }-            case 1://Combat skills+          /*  if(stat)             {-                HandleSkillCategory(combatSkillList, "CombatIndicator", "Combat Button", skill, idx);-                break;-            }-            case 2://Magic skills-            {-                HandleSkillCategory(magicSkillList, "MagicIndicator", "Magic Button", skill, idx);-                break;-            }-            case 3://Jobs skills-            {-                HandleSkillCategory(jobsSkillList, "JobsIndicator", "Jobs Button", skill, idx);-                break;-            }-            case 4://Various skills-            {-                HandleSkillCategory(variousSkillList, "VariousIndicator", "Various Button", skill, idx);-                break;-            }+                combatSkillList->MoveRow(combatSkillList->GetRowCount()-1,stati);+                stati++;+            }*/         }-      /*  if(stat)-        {-            combatSkillList->MoveRow(combatSkillList->GetRowCount()-1,stati);-            stati++;-        }*/     }+    +    if (stats)+    {+    statsSkillList->SetSortedColumn(0);+    statsSkillList->SortRows();+    }+    +    if (combat)+    {+    combatSkillList->SetSortedColumn(0);+    combatSkillList->SortRows();+    }+    +    if (magic)+    {+    magicSkillList->SetSortedColumn(0);+    magicSkillList->SortRows();+    }+    +    if (jobs)+    {+    jobsSkillList->SetSortedColumn(0);+    jobsSkillList->SortRows();+    }+    +    if (various)+    {+    variousSkillList->SetSortedColumn(0);+    variousSkillList->SortRows();+    }      if (!foundSelected)     {         selectedSkill.Clear();     }+    +    skills->setRemoved(false);+    skills->setModified(false); }  void pawsSkillWindow::HandleSkillDescription( csString& description )@@ -805,7 +858,7 @@                                           const char* indWidget,                                           const char* tabName,                                           psSkillCacheItem *skillInfo,-                                          int &idx)+                                          int &idx, bool flush) {      int R = skillInfo->getRank();@@ -826,7 +879,16 @@         return;     } -    pawsListBoxRow* row = tabNameSkillList->NewRow();+    pawsListBoxRow* row = NULL;+    if (!flush)+    {+        row = unsortedSkills[idx];+    }+    +    if (row == NULL)+    {+        row = tabNameSkillList->NewRow();+    }      pawsTextBox* name = dynamic_cast <pawsTextBox*> (row->GetColumn(0));     if (name == NULL)@@ -864,16 +926,21 @@     indicator->Set(x, R, Y, skillInfo->getKnowledgeCost(),                    Z, skillInfo->getPracticeCost()); -    unsortedSkills.Push(row);+    if (flush)+    {+        unsortedSkills.Push(row);+    }+    else+    {+        unsortedSkills[idx] = row;+    }+         if (skillName == selectedSkill)     {         statsSkillList->Select(row);         foundSelected = true;     } -    tabNameSkillList->SetSortedColumn(0);-    tabNameSkillList->SortRows();-     if (train) //If we are training, flash the tab button     {         FlashTabButton(tabName);