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,
//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.visitors = source["visitors"].Bool();
resetParameters.grants = source["grants"].Bool();
resetParameters.rewards = source["rewards"].Bool();
}
@ -172,9 +171,7 @@ void CRandomRewardObjectInfo::configureObject(CRewardableObject * object, CRando
configureLimiter(object, rng, info.limiter, reward["limiter"]);
configureReward(object, rng, info.reward, reward);
info.numOfGrantsAllowed = JsonRandom::loadValue(reward["numOfGrants"], rng);
info.message = loadMessage(reward["message"]);
info.selectChance = JsonRandom::loadValue(reward["selectChance"], rng);
for (const auto & artifact : info.reward.artifacts )
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];
if((visit.numOfGrantsAllowed == 0 || visit.numOfGrantsPerformed < visit.numOfGrantsAllowed) // reward has unlimited uses or some are still available
&& visit.limiter.heroAllowed(hero))
if(visit.limiter.heroAllowed(hero))
{
logGlobal->trace("Reward %d is allowed", 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
grantRewardWithMessage(rewards[0]);
break;
case SELECT_RANDOM: // select one randomly //TODO: use weights
grantRewardWithMessage(rewards[CRandomGenerator::getDefault().nextInt((int)rewards.size()-1)]);
break;
}
break;
}
@ -489,13 +485,8 @@ void CRewardableObject::setPropertyDer(ui8 what, ui32 val)
case ObjProperty::REWARD_RANDOMIZE:
initObj(cb->gameState()->getRandomGenerator());
break;
case ObjProperty::REWARDS_CLEAR_GRANTS:
for (auto & visit : info)
visit.numOfGrantsPerformed = 0;
break;
case ObjProperty::REWARD_SELECT:
selectedReward = val;
info[val].numOfGrantsPerformed++;
break;
}
}
@ -506,10 +497,6 @@ void CRewardableObject::triggerReset() const
{
cb->setObjProperty(id, ObjProperty::REWARD_RANDOMIZE, 0);
}
if (resetParameters.grants)
{
cb->setObjProperty(id, ObjProperty::REWARDS_CLEAR_GRANTS, 0);
}
if (resetParameters.visitors)
{
ChangeObjectVisitors cov(ChangeObjectVisitors::VISITOR_CLEAR, id);

View File

@ -94,7 +94,6 @@ public:
CRewardResetInfo()
: period(0)
, visitors(false)
, grants(false)
, rewards(false)
{}
@ -104,8 +103,6 @@ public:
/// if true - reset list of visitors (heroes & players) on reset
bool visitors;
/// if true - reset number of grants of rewards on reset
bool grants;
/// if true - re-randomize rewards on a new week
bool rewards;
@ -114,7 +111,6 @@ public:
{
h & period;
h & visitors;
h & grants;
h & rewards;
}
};
@ -214,35 +210,19 @@ public:
/// Message that will be displayed on granting of this reward, if not empty
MetaString message;
/// Chance for this reward to be selected in case of random choice
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)
{}
CRewardVisitInfo() = default;
template <typename Handler> void serialize(Handler &h, const int version)
{
h & limiter;
h & reward;
h & message;
h & selectChance;
h & numOfGrantsAllowed;
h & numOfGrantsPerformed;
}
};
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"};
}
@ -272,7 +252,6 @@ protected:
{
SELECT_FIRST, // first reward that matches limiters
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