mirror of
https://github.com/vcmi/vcmi.git
synced 2025-06-17 00:07:41 +02:00
Start making new serialization for rewardables
This commit is contained in:
@ -276,4 +276,9 @@ void CRewardableObject::initObj(CRandomGenerator & rand)
|
|||||||
CRewardableObject::CRewardableObject()
|
CRewardableObject::CRewardableObject()
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
void CRewardableObject::serializeJsonOptions(JsonSerializeFormat & handler)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
VCMI_LIB_NAMESPACE_END
|
VCMI_LIB_NAMESPACE_END
|
||||||
|
@ -32,6 +32,8 @@ protected:
|
|||||||
/// unlike wasVisited, this method uses information not available to player owner, for example, if object was cleared by another player before
|
/// unlike wasVisited, this method uses information not available to player owner, for example, if object was cleared by another player before
|
||||||
bool wasVisitedBefore(const CGHeroInstance * contextHero) const;
|
bool wasVisitedBefore(const CGHeroInstance * contextHero) const;
|
||||||
|
|
||||||
|
void serializeJsonOptions(JsonSerializeFormat & handler) override;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/// Visitability checks. Note that hero check includes check for hero owner (returns true if object was visited by player)
|
/// Visitability checks. Note that hero check includes check for hero owner (returns true if object was visited by player)
|
||||||
bool wasVisited(PlayerColor player) const override;
|
bool wasVisited(PlayerColor player) const override;
|
||||||
|
@ -163,10 +163,21 @@ void RewardsWidget::obtainData()
|
|||||||
|
|
||||||
if(seerhut)
|
if(seerhut)
|
||||||
{
|
{
|
||||||
switch(seerhut->rewardType)
|
for(auto & i : seerhut->configuration.info)
|
||||||
|
{
|
||||||
|
if(i.reward.heroExperience)
|
||||||
|
addReward(RewardType::EXPERIENCE, 0, i.reward.heroExperience);
|
||||||
|
if(i.reward.manaDiff)
|
||||||
|
addReward(RewardType::MANA, 0, i.reward.manaDiff);
|
||||||
|
for(auto & a : i.reward.artifacts)
|
||||||
|
addReward(RewardType::ARTIFACT, a.getNum(), 0);
|
||||||
|
for(auto & a : i.reward.creatures)
|
||||||
|
addReward(RewardType::CREATURE, a.getType()->getId().getNum(), a.getCount());
|
||||||
|
}
|
||||||
|
/*switch(seerhut->rewardType)
|
||||||
{
|
{
|
||||||
case CGSeerHut::ERewardType::EXPERIENCE:
|
case CGSeerHut::ERewardType::EXPERIENCE:
|
||||||
addReward(RewardType::EXPERIENCE, 0, seerhut->rVal);
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CGSeerHut::ERewardType::MANA_POINTS:
|
case CGSeerHut::ERewardType::MANA_POINTS:
|
||||||
@ -182,7 +193,7 @@ void RewardsWidget::obtainData()
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case CGSeerHut::ERewardType::RESOURCES:
|
case CGSeerHut::ERewardType::RESOURCES:
|
||||||
addReward(RewardType::RESOURCE, seerhut->rID, seerhut->rVal);
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CGSeerHut::ERewardType::PRIMARY_SKILL:
|
case CGSeerHut::ERewardType::PRIMARY_SKILL:
|
||||||
@ -207,7 +218,7 @@ void RewardsWidget::obtainData()
|
|||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -279,15 +290,29 @@ bool RewardsWidget::commitChanges()
|
|||||||
}
|
}
|
||||||
if(seerhut)
|
if(seerhut)
|
||||||
{
|
{
|
||||||
|
seerhut->configuration.info.clear();
|
||||||
for(int row = 0; row < rewards; ++row)
|
for(int row = 0; row < rewards; ++row)
|
||||||
{
|
{
|
||||||
|
Rewardable::Reward reward;
|
||||||
haveRewards = true;
|
haveRewards = true;
|
||||||
int typeId = ui->rewardsTable->item(row, 0)->data(Qt::UserRole).toInt();
|
int typeId = ui->rewardsTable->item(row, 0)->data(Qt::UserRole).toInt();
|
||||||
int listId = ui->rewardsTable->item(row, 1) ? ui->rewardsTable->item(row, 1)->data(Qt::UserRole).toInt() : 0;
|
int listId = ui->rewardsTable->item(row, 1) ? ui->rewardsTable->item(row, 1)->data(Qt::UserRole).toInt() : 0;
|
||||||
int amount = ui->rewardsTable->item(row, 2)->data(Qt::UserRole).toInt();
|
int amount = ui->rewardsTable->item(row, 2)->data(Qt::UserRole).toInt();
|
||||||
seerhut->rewardType = CGSeerHut::ERewardType(typeId + 1);
|
switch (typeId) {
|
||||||
seerhut->rID = listId;
|
case RewardType::EXPERIENCE:
|
||||||
seerhut->rVal = amount;
|
reward.heroExperience = amount;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case RewardType::ARTIFACT:
|
||||||
|
reward.artifacts.push_back(listId);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case RewardType::CREATURE:
|
||||||
|
reward.creatures.emplace_back(listId, amount);
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return haveRewards;
|
return haveRewards;
|
||||||
|
Reference in New Issue
Block a user