فهرست منبع

Merge pull request #5879 from godric3/map-editor-fix-random-hero-crash

Map editor fix random hero and artifact crashes
Ivan Savenko 3 ماه پیش
والد
کامیت
9c1b03cd8a
3فایلهای تغییر یافته به همراه18 افزوده شده و 6 حذف شده
  1. 10 2
      mapeditor/inspector/heroskillswidget.cpp
  2. 1 1
      mapeditor/inspector/inspector.cpp
  3. 7 3
      mapeditor/inspector/portraitwidget.cpp

+ 10 - 2
mapeditor/inspector/heroskillswidget.cpp

@@ -165,8 +165,16 @@ void HeroSkillsDelegate::updateModelData(QAbstractItemModel * model, const QMode
 	auto heroSecondarySkills = hero.secSkills;
 	if(heroSecondarySkills.size() == 1 && heroSecondarySkills[0].first == SecondarySkill::NONE) 
 	{
-		textList += QObject::tr("Default secondary skills:");
-		heroSecondarySkills = hero.getHeroType()->secSkillsInit;
+		if(hero.getHeroTypeID().isValid())
+		{
+			textList += QObject::tr("Default secondary skills:");
+			heroSecondarySkills = hero.getHeroType()->secSkillsInit;
+		}
+		else
+		{
+			textList += QObject::tr("Random hero secondary skills");
+			heroSecondarySkills.clear();
+		}
 	}
 	else
 	{

+ 1 - 1
mapeditor/inspector/inspector.cpp

@@ -207,7 +207,7 @@ void Initializer::initialize(CGArtifact * o)
 		auto a = controller.map()->createScroll(*RandomGeneratorUtil::nextItem(out, CRandomGenerator::getDefault()));
 		o->setArtifactInstance(a);
 	}
-	else if(o->ID == Obj::ARTIFACT)
+	else if(o->ID == Obj::ARTIFACT || (o->ID >= Obj::RANDOM_ART && o->ID <= Obj::RANDOM_RELIC_ART))
 	{
 		auto instance = controller.map()->createArtifact(o->getArtifactType());
 		o->setArtifactInstance(instance);

+ 7 - 3
mapeditor/inspector/portraitwidget.cpp

@@ -34,10 +34,14 @@ PortraitWidget::~PortraitWidget()
 
 void PortraitWidget::obtainData()
 {
-	portraitIndex = LIBRARY->heroh->getById(hero.getPortraitSource())->getIndex();
-	if(hero.customPortraitSource.isValid())
+	auto portraitSource = hero.getPortraitSource();
+	if(portraitSource.isValid())
 	{
-		ui->isDefault->setChecked(true);
+		portraitIndex = LIBRARY->heroh->getById(portraitSource)->getIndex();
+		if(hero.customPortraitSource.isValid())
+		{
+			ui->isDefault->setChecked(false);
+		}
 	}
 	
 	drawPortrait();