소스 검색

Removed incomplete functionality from rewardable object

Ivan Savenko 2 년 전
부모
커밋
ca521fb129
4개의 변경된 파일4개의 추가작업 그리고 41개의 파일을 삭제
  1. 1 1
      lib/NetPacks.h
  2. 0 3
      lib/mapObjects/CRewardableConstructor.cpp
  3. 1 14
      lib/mapObjects/CRewardableObject.cpp
  4. 2 23
      lib/mapObjects/CRewardableObject.h

+ 1 - 1
lib/NetPacks.h

@@ -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
 	};
 }
 

+ 0 - 3
lib/mapObjects/CRewardableConstructor.cpp

@@ -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());

+ 1 - 14
lib/mapObjects/CRewardableObject.cpp

@@ -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);

+ 2 - 23
lib/mapObjects/CRewardableObject.h

@@ -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