1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-02-03 13:01:33 +02:00

Removed incomplete functionality from rewardable object

This commit is contained in:
Ivan Savenko 2023-01-24 16:29:05 +02:00
parent c9dcb921ab
commit ca521fb129
4 changed files with 4 additions and 41 deletions

View File

@ -1178,7 +1178,7 @@ namespace ObjProperty
BANK_DAYCOUNTER, BANK_RESET, BANK_CLEAR, BANK_DAYCOUNTER, BANK_RESET, BANK_CLEAR,
//object with reward //object with reward
REWARD_RANDOMIZE, REWARDS_CLEAR_GRANTS, REWARD_SELECT REWARD_RANDOMIZE, REWARD_SELECT
}; };
} }

View File

@ -134,7 +134,6 @@ void CRandomRewardObjectInfo::configureResetInfo(CRewardableObject * object, CRa
{ {
resetParameters.period = static_cast<ui32>(source["period"].Float()); resetParameters.period = static_cast<ui32>(source["period"].Float());
resetParameters.visitors = source["visitors"].Bool(); resetParameters.visitors = source["visitors"].Bool();
resetParameters.grants = source["grants"].Bool();
resetParameters.rewards = source["rewards"].Bool(); resetParameters.rewards = source["rewards"].Bool();
} }
@ -172,9 +171,7 @@ void CRandomRewardObjectInfo::configureObject(CRewardableObject * object, CRando
configureLimiter(object, rng, info.limiter, reward["limiter"]); configureLimiter(object, rng, info.limiter, reward["limiter"]);
configureReward(object, rng, info.reward, reward); configureReward(object, rng, info.reward, reward);
info.numOfGrantsAllowed = JsonRandom::loadValue(reward["numOfGrants"], rng);
info.message = loadMessage(reward["message"]); info.message = loadMessage(reward["message"]);
info.selectChance = JsonRandom::loadValue(reward["selectChance"], rng);
for (const auto & artifact : info.reward.artifacts ) for (const auto & artifact : info.reward.artifacts )
info.message.addReplacement(MetaString::ART_NAMES, artifact.getNum()); info.message.addReplacement(MetaString::ART_NAMES, artifact.getNum());

View File

@ -104,8 +104,7 @@ std::vector<ui32> CRewardableObject::getAvailableRewards(const CGHeroInstance *
{ {
const CRewardVisitInfo & visit = info[i]; const CRewardVisitInfo & visit = info[i];
if((visit.numOfGrantsAllowed == 0 || visit.numOfGrantsPerformed < visit.numOfGrantsAllowed) // reward has unlimited uses or some are still available if(visit.limiter.heroAllowed(hero))
&& visit.limiter.heroAllowed(hero))
{ {
logGlobal->trace("Reward %d is allowed", i); logGlobal->trace("Reward %d is allowed", i);
ret.push_back(static_cast<ui32>(i)); ret.push_back(static_cast<ui32>(i));
@ -188,9 +187,6 @@ void CRewardableObject::onHeroVisit(const CGHeroInstance *h) const
case SELECT_FIRST: // give first available case SELECT_FIRST: // give first available
grantRewardWithMessage(rewards[0]); grantRewardWithMessage(rewards[0]);
break; break;
case SELECT_RANDOM: // select one randomly //TODO: use weights
grantRewardWithMessage(rewards[CRandomGenerator::getDefault().nextInt((int)rewards.size()-1)]);
break;
} }
break; break;
} }
@ -489,13 +485,8 @@ void CRewardableObject::setPropertyDer(ui8 what, ui32 val)
case ObjProperty::REWARD_RANDOMIZE: case ObjProperty::REWARD_RANDOMIZE:
initObj(cb->gameState()->getRandomGenerator()); initObj(cb->gameState()->getRandomGenerator());
break; break;
case ObjProperty::REWARDS_CLEAR_GRANTS:
for (auto & visit : info)
visit.numOfGrantsPerformed = 0;
break;
case ObjProperty::REWARD_SELECT: case ObjProperty::REWARD_SELECT:
selectedReward = val; selectedReward = val;
info[val].numOfGrantsPerformed++;
break; break;
} }
} }
@ -506,10 +497,6 @@ void CRewardableObject::triggerReset() const
{ {
cb->setObjProperty(id, ObjProperty::REWARD_RANDOMIZE, 0); cb->setObjProperty(id, ObjProperty::REWARD_RANDOMIZE, 0);
} }
if (resetParameters.grants)
{
cb->setObjProperty(id, ObjProperty::REWARDS_CLEAR_GRANTS, 0);
}
if (resetParameters.visitors) if (resetParameters.visitors)
{ {
ChangeObjectVisitors cov(ChangeObjectVisitors::VISITOR_CLEAR, id); ChangeObjectVisitors cov(ChangeObjectVisitors::VISITOR_CLEAR, id);

View File

@ -94,7 +94,6 @@ public:
CRewardResetInfo() CRewardResetInfo()
: period(0) : period(0)
, visitors(false) , visitors(false)
, grants(false)
, rewards(false) , rewards(false)
{} {}
@ -104,8 +103,6 @@ public:
/// if true - reset list of visitors (heroes & players) on reset /// if true - reset list of visitors (heroes & players) on reset
bool visitors; bool visitors;
/// if true - reset number of grants of rewards on reset
bool grants;
/// if true - re-randomize rewards on a new week /// if true - re-randomize rewards on a new week
bool rewards; bool rewards;
@ -114,7 +111,6 @@ public:
{ {
h & period; h & period;
h & visitors; h & visitors;
h & grants;
h & rewards; h & rewards;
} }
}; };
@ -214,35 +210,19 @@ public:
/// Message that will be displayed on granting of this reward, if not empty /// Message that will be displayed on granting of this reward, if not empty
MetaString message; MetaString message;
/// Chance for this reward to be selected in case of random choice CRewardVisitInfo() = default;
si32 selectChance;
/// How many times this reward can be granted between two resets
si32 numOfGrantsAllowed;
/// How many times this reward has been granted since last reset
si32 numOfGrantsPerformed;
CRewardVisitInfo():
selectChance(0),
numOfGrantsAllowed(0),
numOfGrantsPerformed(0)
{}
template <typename Handler> void serialize(Handler &h, const int version) template <typename Handler> void serialize(Handler &h, const int version)
{ {
h & limiter; h & limiter;
h & reward; h & reward;
h & message; h & message;
h & selectChance;
h & numOfGrantsAllowed;
h & numOfGrantsPerformed;
} }
}; };
namespace Rewardable namespace Rewardable
{ {
const std::array<std::string, 3> SelectModeString{"selectFirst", "selectPlayer", "selectRandom"}; const std::array<std::string, 3> SelectModeString{"selectFirst", "selectPlayer"};
const std::array<std::string, 5> VisitModeString{"unlimited", "once", "hero", "bonus", "player"}; const std::array<std::string, 5> VisitModeString{"unlimited", "once", "hero", "bonus", "player"};
} }
@ -272,7 +252,6 @@ protected:
{ {
SELECT_FIRST, // first reward that matches limiters SELECT_FIRST, // first reward that matches limiters
SELECT_PLAYER, // player can select from all allowed rewards SELECT_PLAYER, // player can select from all allowed rewards
SELECT_RANDOM // reward will be selected from allowed randomly
}; };
/// filters list of visit info and returns rewards that can be granted to current hero /// filters list of visit info and returns rewards that can be granted to current hero