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:
parent
c9dcb921ab
commit
ca521fb129
@ -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
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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());
|
||||||
|
@ -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);
|
||||||
|
@ -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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user