Pārlūkot izejas kodu

fixed spell school ordering http://bugs.vcmi.eu/view.php?id=91

AlexVinS 9 gadi atpakaļ
vecāks
revīzija
bc2f0ba6f1
2 mainītis faili ar 12 papildinājumiem un 2 dzēšanām
  1. 1 1
      client/windows/CSpellWindow.cpp
  2. 11 1
      lib/spells/CSpellHandler.cpp

+ 1 - 1
client/windows/CSpellWindow.cpp

@@ -829,6 +829,6 @@ void CSpellWindow::SpellArea::setSpell(const CSpell * spell)
 
 		image->setFrame(mySpell->id);
 		image->visible = true;
-		schoolBorder = owner->schoolBorders[whichSchool]->getImage(schoolLevel,0);
+		schoolBorder = owner->schoolBorders[owner->selectedTab >= 4 ? whichSchool : owner->selectedTab]->getImage(schoolLevel,0);
 	}
 }

+ 11 - 1
lib/spells/CSpellHandler.cpp

@@ -69,6 +69,15 @@ namespace SpellConfig
 			Bonus::EARTH_SPELLS
 		}
 	};
+
+	//order as described in http://bugs.vcmi.eu/view.php?id=91
+	static const ESpellSchool SCHOOL_ORDER[4] =
+	{
+		ESpellSchool::AIR,  //=0
+		ESpellSchool::FIRE, //=1
+		ESpellSchool::EARTH,//=3(!)
+		ESpellSchool::WATER //=2(!)
+	};
 }
 
 ///CSpell::LevelInfo
@@ -226,8 +235,9 @@ CSpell::ETargetType CSpell::getTargetType() const
 void CSpell::forEachSchool(const std::function<void(const SpellSchoolInfo &, bool &)>& cb) const
 {
 	bool stop = false;
-	for(const SpellSchoolInfo & cnf : SpellConfig::SCHOOL)
+	for(ESpellSchool iter : SpellConfig::SCHOOL_ORDER)
 	{
+		const SpellSchoolInfo & cnf = SpellConfig::SCHOOL[(ui8)iter];
 		if(school.at(cnf.id))
 		{
 			cb(cnf, stop);