|
@@ -1,18 +1,21 @@
|
|
#include "BasicTool.h"
|
|
#include "BasicTool.h"
|
|
|
|
|
|
|
|
+#include <numeric>
|
|
|
|
+
|
|
|
|
+#include "Block.h"
|
|
|
|
+#include "Dimension.h"
|
|
|
|
+#include "Entity.h"
|
|
#include "Game.h"
|
|
#include "Game.h"
|
|
|
|
|
|
-XPBasedLevelUpRule::XPBasedLevelUpRule(float xpIncrease,
|
|
|
|
- float xpMultiplier,
|
|
|
|
- float levelIncrease,
|
|
|
|
- float levelMultiplier,
|
|
|
|
- float maxLevel)
|
|
|
|
|
|
+#undef max
|
|
|
|
+
|
|
|
|
+XPBasedLevelUpRule::XPBasedLevelUpRule()
|
|
: ItemSkillLevelUpRule(),
|
|
: ItemSkillLevelUpRule(),
|
|
- xpIncrease(xpIncrease),
|
|
|
|
- xpMultiplier(xpMultiplier),
|
|
|
|
- levelIncrease(levelIncrease),
|
|
|
|
- levelMultiplier(levelMultiplier),
|
|
|
|
- maxLevel(maxLevel)
|
|
|
|
|
|
+ xpIncrease(0.0),
|
|
|
|
+ xpMultiplier(2.0),
|
|
|
|
+ levelIncrease(1.0),
|
|
|
|
+ levelMultiplier(1.0),
|
|
|
|
+ maxLevel(std::numeric_limits<float>::max())
|
|
{}
|
|
{}
|
|
|
|
|
|
void XPBasedLevelUpRule::applyOn(ItemSkill* zSkill)
|
|
void XPBasedLevelUpRule::applyOn(ItemSkill* zSkill)
|
|
@@ -26,26 +29,51 @@ void XPBasedLevelUpRule::applyOn(ItemSkill* zSkill)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void XPBasedLevelUpRule::setXpIncrease(float xpIncrease)
|
|
|
|
+{
|
|
|
|
+ this->xpIncrease = xpIncrease;
|
|
|
|
+}
|
|
|
|
+
|
|
float XPBasedLevelUpRule::getXpIncrease() const
|
|
float XPBasedLevelUpRule::getXpIncrease() const
|
|
{
|
|
{
|
|
return xpIncrease;
|
|
return xpIncrease;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void XPBasedLevelUpRule::setXpMultiplier(float xpMultiplier)
|
|
|
|
+{
|
|
|
|
+ this->xpMultiplier = xpMultiplier;
|
|
|
|
+}
|
|
|
|
+
|
|
float XPBasedLevelUpRule::getXpMultiplier() const
|
|
float XPBasedLevelUpRule::getXpMultiplier() const
|
|
{
|
|
{
|
|
return xpMultiplier;
|
|
return xpMultiplier;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void XPBasedLevelUpRule::setLevelIncrease(float levelIncrease)
|
|
|
|
+{
|
|
|
|
+ this->levelIncrease = levelIncrease;
|
|
|
|
+}
|
|
|
|
+
|
|
float XPBasedLevelUpRule::getLevelIncrease() const
|
|
float XPBasedLevelUpRule::getLevelIncrease() const
|
|
{
|
|
{
|
|
return levelIncrease;
|
|
return levelIncrease;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void XPBasedLevelUpRule::setLevelMultiplier(float levelMultiplier)
|
|
|
|
+{
|
|
|
|
+ this->levelMultiplier = levelMultiplier;
|
|
|
|
+}
|
|
|
|
+
|
|
float XPBasedLevelUpRule::getLevelMultiplier() const
|
|
float XPBasedLevelUpRule::getLevelMultiplier() const
|
|
{
|
|
{
|
|
return levelMultiplier;
|
|
return levelMultiplier;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void XPBasedLevelUpRule::setMaxLevel(float maxLevel)
|
|
|
|
+{
|
|
|
|
+ this->maxLevel = maxLevel;
|
|
|
|
+}
|
|
|
|
+
|
|
float XPBasedLevelUpRule::getMaxLevel() const
|
|
float XPBasedLevelUpRule::getMaxLevel() const
|
|
{
|
|
{
|
|
return maxLevel;
|
|
return maxLevel;
|
|
@@ -55,55 +83,47 @@ XPBasedLevelUpRuleFactory::XPBasedLevelUpRuleFactory()
|
|
: SubTypeFactory()
|
|
: SubTypeFactory()
|
|
{}
|
|
{}
|
|
|
|
|
|
-XPBasedLevelUpRule* XPBasedLevelUpRuleFactory::fromJson(
|
|
|
|
|
|
+XPBasedLevelUpRule* XPBasedLevelUpRuleFactory::createValue(
|
|
Framework::JSON::JSONObject* zJson) const
|
|
Framework::JSON::JSONObject* zJson) const
|
|
{
|
|
{
|
|
- float maxLevel;
|
|
|
|
- if (zJson->zValue("maxLevel")->getType()
|
|
|
|
- == Framework::JSON::JSONType::NULL_)
|
|
|
|
- {
|
|
|
|
- maxLevel = -1;
|
|
|
|
- }
|
|
|
|
- else
|
|
|
|
|
|
+ return new XPBasedLevelUpRule();
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+void XPBasedLevelUpRuleFactory::fromJson(
|
|
|
|
+ XPBasedLevelUpRule* zResult, Framework::JSON::JSONObject* zJson) const
|
|
|
|
+{
|
|
|
|
+ if (zJson->hasValue("maxLevel"))
|
|
{
|
|
{
|
|
- maxLevel = (float)zJson->zValue("maxLevel")->asNumber()->getNumber();
|
|
|
|
|
|
+ zResult->setMaxLevel(
|
|
|
|
+ (float)zJson->zValue("maxLevel")->asNumber()->getNumber());
|
|
}
|
|
}
|
|
- return new XPBasedLevelUpRule(
|
|
|
|
- (float)zJson->zValue("xpIncrease")->asNumber()->getNumber(),
|
|
|
|
- (float)zJson->zValue("xpMultiplier")->asNumber()->getNumber(),
|
|
|
|
- (float)zJson->zValue("levelIncrease")->asNumber()->getNumber(),
|
|
|
|
- (float)zJson->zValue("levelMultiplier")->asNumber()->getNumber(),
|
|
|
|
- maxLevel);
|
|
|
|
|
|
+ zResult->setXpIncrease(
|
|
|
|
+ (float)zJson->zValue("xpIncrease")->asNumber()->getNumber());
|
|
|
|
+ zResult->setXpMultiplier(
|
|
|
|
+ (float)zJson->zValue("xpMultiplier")->asNumber()->getNumber());
|
|
|
|
+ zResult->setLevelIncrease(
|
|
|
|
+ (float)zJson->zValue("levelIncrease")->asNumber()->getNumber());
|
|
|
|
+ zResult->setLevelMultiplier(
|
|
|
|
+ (float)zJson->zValue("levelMultiplier")->asNumber()->getNumber());
|
|
}
|
|
}
|
|
|
|
|
|
-Framework::JSON::JSONObject* XPBasedLevelUpRuleFactory::toJson(
|
|
|
|
- XPBasedLevelUpRule* zObject) const
|
|
|
|
|
|
+void XPBasedLevelUpRuleFactory::toJson(
|
|
|
|
+ XPBasedLevelUpRule* zObject, Framework::JSON::JSONObject* zResult) const
|
|
{
|
|
{
|
|
- Framework::JSON::JSONObject* result = new Framework::JSON::JSONObject();
|
|
|
|
- result->addValue("xpIncrease",
|
|
|
|
|
|
+ zResult->addValue("xpIncrease",
|
|
new Framework::JSON::JSONNumber(zObject->getXpIncrease()));
|
|
new Framework::JSON::JSONNumber(zObject->getXpIncrease()));
|
|
- result->addValue("xpMultiplier",
|
|
|
|
|
|
+ zResult->addValue("xpMultiplier",
|
|
new Framework::JSON::JSONNumber(zObject->getXpMultiplier()));
|
|
new Framework::JSON::JSONNumber(zObject->getXpMultiplier()));
|
|
- result->addValue("levelIncrease",
|
|
|
|
|
|
+ zResult->addValue("levelIncrease",
|
|
new Framework::JSON::JSONNumber(zObject->getLevelIncrease()));
|
|
new Framework::JSON::JSONNumber(zObject->getLevelIncrease()));
|
|
- result->addValue("levelMultiplier",
|
|
|
|
|
|
+ zResult->addValue("levelMultiplier",
|
|
new Framework::JSON::JSONNumber(zObject->getLevelMultiplier()));
|
|
new Framework::JSON::JSONNumber(zObject->getLevelMultiplier()));
|
|
- if (zObject->getMaxLevel() < 0)
|
|
|
|
- {
|
|
|
|
- result->addValue("maxLevel",
|
|
|
|
- new Framework::JSON::JSONNumber(zObject->getMaxLevel()));
|
|
|
|
- }
|
|
|
|
- else
|
|
|
|
- {
|
|
|
|
- result->addValue("maxLevel", new Framework::JSON::JSONValue());
|
|
|
|
- }
|
|
|
|
- return result;
|
|
|
|
|
|
+ zResult->addValue(
|
|
|
|
+ "maxLevel", new Framework::JSON::JSONNumber(zObject->getMaxLevel()));
|
|
}
|
|
}
|
|
|
|
|
|
-Framework::JSON::Validator::JSONValidator*
|
|
|
|
-XPBasedLevelUpRuleFactory::getValidator(
|
|
|
|
- Framework::JSON::Validator::ObjectValidationBuilder<
|
|
|
|
- Framework::JSON::Validator::JSONValidator>* builder) const
|
|
|
|
|
|
+JSONObjectValidationBuilder* XPBasedLevelUpRuleFactory::addToValidator(
|
|
|
|
+ JSONObjectValidationBuilder* builder) const
|
|
{
|
|
{
|
|
return builder->withRequiredNumber("xpIncrease")
|
|
return builder->withRequiredNumber("xpIncrease")
|
|
->whichIsGreaterOrEqual(0.0)
|
|
->whichIsGreaterOrEqual(0.0)
|
|
@@ -122,10 +142,8 @@ XPBasedLevelUpRuleFactory::getValidator(
|
|
->withDefault(1.0)
|
|
->withDefault(1.0)
|
|
->finishNumber()
|
|
->finishNumber()
|
|
->withRequiredNumber("maxLevel")
|
|
->withRequiredNumber("maxLevel")
|
|
- ->withDefaultNull()
|
|
|
|
- ->whichCanBeNull()
|
|
|
|
- ->finishNumber()
|
|
|
|
- ->finishObject();
|
|
|
|
|
|
+ ->whichIsOptional()
|
|
|
|
+ ->finishNumber();
|
|
}
|
|
}
|
|
|
|
|
|
Framework::Text XPBasedLevelUpRuleFactory::getTypeToken() const
|
|
Framework::Text XPBasedLevelUpRuleFactory::getTypeToken() const
|
|
@@ -133,9 +151,8 @@ Framework::Text XPBasedLevelUpRuleFactory::getTypeToken() const
|
|
return "xpBased";
|
|
return "xpBased";
|
|
}
|
|
}
|
|
|
|
|
|
-BasicToolItem::BasicToolItem(int itemTypeId, Framework::Text name,
|
|
|
|
- float maxHp,
|
|
|
|
- float maxDurability)
|
|
|
|
|
|
+BasicToolItem::BasicToolItem(
|
|
|
|
+ int itemTypeId, Framework::Text name, float maxHp, float maxDurability)
|
|
: Item(itemTypeId, name),
|
|
: Item(itemTypeId, name),
|
|
headMaterialHardness(0.0),
|
|
headMaterialHardness(0.0),
|
|
rodMaterialHardness(0.0),
|
|
rodMaterialHardness(0.0),
|
|
@@ -182,46 +199,29 @@ float BasicToolItem::getHandleMaterialHardness() const
|
|
return handleMaterialHardness;
|
|
return handleMaterialHardness;
|
|
}
|
|
}
|
|
|
|
|
|
-BasicToolItemType::BasicToolItemType(Framework::Text name,
|
|
|
|
- ModelInfo* model,
|
|
|
|
- float headMaterialHardness,
|
|
|
|
- float rodMaterialHardness,
|
|
|
|
- float handleMaterialHardness,
|
|
|
|
- float baseDurability,
|
|
|
|
- float baseDurabilityMultiplier,
|
|
|
|
- float headMaterialDurability,
|
|
|
|
- float headMaterialDurabilityMultiplier,
|
|
|
|
- float rodMaterialDurability,
|
|
|
|
- float rodMaterialDurabilityMultiplier,
|
|
|
|
- float handleMaterialDurability,
|
|
|
|
- float handleMaterialDurabilityMultiplier,
|
|
|
|
- ItemSkillLevelUpRule* levelUpRule,
|
|
|
|
- Framework::Text brokenItemTypeName,
|
|
|
|
- Framework::JSON::JSONObject* itemSkillConfigJson,
|
|
|
|
- int maxStackSize,
|
|
|
|
- Framework::RCArray<Framework::Text> groups)
|
|
|
|
- : ItemType(name, model, maxStackSize, groups),
|
|
|
|
- headMaterialHardness(headMaterialHardness),
|
|
|
|
- rodMaterialHardness(rodMaterialHardness),
|
|
|
|
- handleMaterialHardness(handleMaterialHardness),
|
|
|
|
- baseDurability(baseDurability),
|
|
|
|
- baseDurabilityMultiplier(baseDurabilityMultiplier),
|
|
|
|
- headMaterialDurability(headMaterialDurability),
|
|
|
|
- headMaterialDurabilityMultiplier(headMaterialDurabilityMultiplier),
|
|
|
|
- rodMaterialDurability(rodMaterialDurability),
|
|
|
|
- rodMaterialDurabilityMultiplier(rodMaterialDurabilityMultiplier),
|
|
|
|
- handleMaterialDurability(handleMaterialDurability),
|
|
|
|
- handleMaterialDurabilityMultiplier(handleMaterialDurabilityMultiplier),
|
|
|
|
- levelUpRule(levelUpRule),
|
|
|
|
- brokenItemTypeName(brokenItemTypeName),
|
|
|
|
- itemSkillConfigJson(itemSkillConfigJson),
|
|
|
|
|
|
+BasicToolItemType::BasicToolItemType()
|
|
|
|
+ : ItemType(),
|
|
|
|
+ headMaterialHardness(1.f),
|
|
|
|
+ rodMaterialHardness(1.f),
|
|
|
|
+ handleMaterialHardness(1.f),
|
|
|
|
+ baseDurability(10.f),
|
|
|
|
+ baseDurabilityMultiplier(1.f),
|
|
|
|
+ headMaterialDurability(10.f),
|
|
|
|
+ headMaterialDurabilityMultiplier(0.f),
|
|
|
|
+ rodMaterialDurability(10.f),
|
|
|
|
+ rodMaterialDurabilityMultiplier(0.f),
|
|
|
|
+ handleMaterialDurability(10.f),
|
|
|
|
+ handleMaterialDurabilityMultiplier(0.0),
|
|
|
|
+ levelUpRule(0),
|
|
|
|
+ brokenItemTypeName(),
|
|
|
|
+ itemSkillConfigJson(0),
|
|
brokenItemTypeId(-1)
|
|
brokenItemTypeId(-1)
|
|
{}
|
|
{}
|
|
|
|
|
|
BasicToolItemType::~BasicToolItemType()
|
|
BasicToolItemType::~BasicToolItemType()
|
|
{
|
|
{
|
|
- levelUpRule->release();
|
|
|
|
- itemSkillConfigJson->release();
|
|
|
|
|
|
+ if (levelUpRule) levelUpRule->release();
|
|
|
|
+ if (itemSkillConfigJson) itemSkillConfigJson->release();
|
|
}
|
|
}
|
|
|
|
|
|
void BasicToolItemType::loadSuperItem(
|
|
void BasicToolItemType::loadSuperItem(
|
|
@@ -333,241 +333,308 @@ void BasicToolItemType::addItemAttributes(
|
|
ItemType::addItemAttributes(item, zItemObjet);
|
|
ItemType::addItemAttributes(item, zItemObjet);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ItemSkill* BasicToolItemType::createDefaultItemSkill() const
|
|
|
|
+{
|
|
|
|
+ return Game::INSTANCE->zTypeRegistry()->fromJson<ItemSkill>(
|
|
|
|
+ itemSkillConfigJson);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+void BasicToolItemType::setBrokenItemTypeName(
|
|
|
|
+ Framework::Text brokenItemTypeName)
|
|
|
|
+{
|
|
|
|
+ this->brokenItemTypeName = brokenItemTypeName;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+Framework::Text BasicToolItemType::getBrokenItemTypeName() const
|
|
|
|
+{
|
|
|
|
+ return brokenItemTypeName;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+void BasicToolItemType::setHeadMaterialHardness(float hardness)
|
|
|
|
+{
|
|
|
|
+ headMaterialHardness = hardness;
|
|
|
|
+}
|
|
|
|
+
|
|
float BasicToolItemType::getHeadMaterialHardness() const
|
|
float BasicToolItemType::getHeadMaterialHardness() const
|
|
{
|
|
{
|
|
return headMaterialHardness;
|
|
return headMaterialHardness;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void BasicToolItemType::setRodMaterialHardness(float hardness)
|
|
|
|
+{
|
|
|
|
+ rodMaterialHardness = hardness;
|
|
|
|
+}
|
|
|
|
+
|
|
float BasicToolItemType::getRodMaterialHardness() const
|
|
float BasicToolItemType::getRodMaterialHardness() const
|
|
{
|
|
{
|
|
return rodMaterialHardness;
|
|
return rodMaterialHardness;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void BasicToolItemType::setHandleMaterialHardness(float hardness)
|
|
|
|
+{
|
|
|
|
+ handleMaterialHardness = hardness;
|
|
|
|
+}
|
|
|
|
+
|
|
float BasicToolItemType::getHandleMaterialHardness() const
|
|
float BasicToolItemType::getHandleMaterialHardness() const
|
|
{
|
|
{
|
|
return handleMaterialHardness;
|
|
return handleMaterialHardness;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void BasicToolItemType::setBaseDurability(float durability)
|
|
|
|
+{
|
|
|
|
+ baseDurability = durability;
|
|
|
|
+}
|
|
|
|
+
|
|
float BasicToolItemType::getBaseDurablility() const
|
|
float BasicToolItemType::getBaseDurablility() const
|
|
{
|
|
{
|
|
return baseDurability;
|
|
return baseDurability;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void BasicToolItemType::setBaseDurabilityMultiplier(float multiplier)
|
|
|
|
+{
|
|
|
|
+ baseDurabilityMultiplier = multiplier;
|
|
|
|
+}
|
|
|
|
+
|
|
float BasicToolItemType::getBaseDurabilityMultiplier() const
|
|
float BasicToolItemType::getBaseDurabilityMultiplier() const
|
|
{
|
|
{
|
|
return baseDurabilityMultiplier;
|
|
return baseDurabilityMultiplier;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void BasicToolItemType::setHeadMaterialDurability(float durability)
|
|
|
|
+{
|
|
|
|
+ headMaterialDurability = durability;
|
|
|
|
+}
|
|
|
|
+
|
|
float BasicToolItemType::getHeadMaterialDurability() const
|
|
float BasicToolItemType::getHeadMaterialDurability() const
|
|
{
|
|
{
|
|
return headMaterialDurability;
|
|
return headMaterialDurability;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void BasicToolItemType::setHeadMaterialDurabilityMultiplier(float multiplier)
|
|
|
|
+{
|
|
|
|
+ headMaterialDurabilityMultiplier = multiplier;
|
|
|
|
+}
|
|
|
|
+
|
|
float BasicToolItemType::getHeadMaterialDurabilityMultiplier() const
|
|
float BasicToolItemType::getHeadMaterialDurabilityMultiplier() const
|
|
{
|
|
{
|
|
return headMaterialDurabilityMultiplier;
|
|
return headMaterialDurabilityMultiplier;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void BasicToolItemType::setRodMaterialDurability(float durability)
|
|
|
|
+{
|
|
|
|
+ rodMaterialDurability = durability;
|
|
|
|
+}
|
|
|
|
+
|
|
float BasicToolItemType::getRodMaterialDurability() const
|
|
float BasicToolItemType::getRodMaterialDurability() const
|
|
{
|
|
{
|
|
return rodMaterialDurability;
|
|
return rodMaterialDurability;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void BasicToolItemType::setRodMaterialDurabilityMultiplier(float multiplier)
|
|
|
|
+{
|
|
|
|
+ rodMaterialDurabilityMultiplier = multiplier;
|
|
|
|
+}
|
|
|
|
+
|
|
float BasicToolItemType::getRodMaterialDurabilityMultiplier() const
|
|
float BasicToolItemType::getRodMaterialDurabilityMultiplier() const
|
|
{
|
|
{
|
|
return rodMaterialDurabilityMultiplier;
|
|
return rodMaterialDurabilityMultiplier;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void BasicToolItemType::setHandleMaterialDurability(float durability)
|
|
|
|
+{
|
|
|
|
+ handleMaterialDurability = durability;
|
|
|
|
+}
|
|
|
|
+
|
|
float BasicToolItemType::getHandleMaterialDurability() const
|
|
float BasicToolItemType::getHandleMaterialDurability() const
|
|
{
|
|
{
|
|
return handleMaterialDurability;
|
|
return handleMaterialDurability;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void BasicToolItemType::setHandleMaterialDurabilityMultiplier(float multiplier)
|
|
|
|
+{
|
|
|
|
+ handleMaterialDurabilityMultiplier = multiplier;
|
|
|
|
+}
|
|
|
|
+
|
|
float BasicToolItemType::getHandleMaterialDurabilityMultiplier() const
|
|
float BasicToolItemType::getHandleMaterialDurabilityMultiplier() const
|
|
{
|
|
{
|
|
return handleMaterialDurabilityMultiplier;
|
|
return handleMaterialDurabilityMultiplier;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void BasicToolItemType::setLevelUpRule(ItemSkillLevelUpRule* rule)
|
|
|
|
+{
|
|
|
|
+ if (levelUpRule) levelUpRule->release();
|
|
|
|
+ levelUpRule = rule;
|
|
|
|
+}
|
|
|
|
+
|
|
ItemSkillLevelUpRule* BasicToolItemType::zLevelUpRule() const
|
|
ItemSkillLevelUpRule* BasicToolItemType::zLevelUpRule() const
|
|
{
|
|
{
|
|
return levelUpRule;
|
|
return levelUpRule;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void BasicToolItemType::setItemSkillConfigJson(
|
|
|
|
+ Framework::JSON::JSONObject* zJson)
|
|
|
|
+{
|
|
|
|
+ if (itemSkillConfigJson) itemSkillConfigJson->release();
|
|
|
|
+ itemSkillConfigJson = zJson;
|
|
|
|
+}
|
|
|
|
+
|
|
Framework::JSON::JSONObject* BasicToolItemType::getItemSkillConfigJson() const
|
|
Framework::JSON::JSONObject* BasicToolItemType::getItemSkillConfigJson() const
|
|
{
|
|
{
|
|
return dynamic_cast<Framework::JSON::JSONObject*>(
|
|
return dynamic_cast<Framework::JSON::JSONObject*>(
|
|
itemSkillConfigJson->getThis());
|
|
itemSkillConfigJson->getThis());
|
|
}
|
|
}
|
|
|
|
|
|
-ItemSkill* BasicToolItemType::createDefaultItemSkill() const
|
|
|
|
|
|
+BasicToolItemTypeFactory::BasicToolItemTypeFactory()
|
|
|
|
+ : ItemTypeFactoryBase()
|
|
|
|
+{}
|
|
|
|
+
|
|
|
|
+BasicToolItemType* BasicToolItemTypeFactory::createValue(
|
|
|
|
+ Framework::JSON::JSONObject* zJson) const
|
|
{
|
|
{
|
|
- return Game::INSTANCE->zTypeRegistry()->fromJson<ItemSkill>(
|
|
|
|
- itemSkillConfigJson);
|
|
|
|
|
|
+ return new BasicToolItemType();
|
|
}
|
|
}
|
|
|
|
|
|
-BasicToolItemTypeFactory::BasicToolItemTypeFactory() {}
|
|
|
|
-
|
|
|
|
-BasicToolItemType* BasicToolItemTypeFactory::fromJson(
|
|
|
|
- Framework::JSON::JSONObject* zJson) const
|
|
|
|
|
|
+void BasicToolItemTypeFactory::fromJson(
|
|
|
|
+ BasicToolItemType* zResult, Framework::JSON::JSONObject* zJson) const
|
|
{
|
|
{
|
|
- Framework::RCArray<Framework::Text> groups;
|
|
|
|
- for (Framework::JSON::JSONValue* group :
|
|
|
|
- *zJson->zValue("groupNames")->asArray())
|
|
|
|
- {
|
|
|
|
- groups.add(new Framework::Text(group->asString()->getString()));
|
|
|
|
- }
|
|
|
|
- return new BasicToolItemType(zJson->zValue("name")->asString()->getString(),
|
|
|
|
- Game::INSTANCE->zTypeRegistry()->fromJson<ModelInfo>(
|
|
|
|
- zJson->zValue("model")),
|
|
|
|
- (float)zJson->zValue("headMaterialHardness")->asNumber()->getNumber(),
|
|
|
|
- (float)zJson->zValue("rodMaterialHardness")->asNumber()->getNumber(),
|
|
|
|
- (float)zJson->zValue("handleMaterialHardness")->asNumber()->getNumber(),
|
|
|
|
- (float)zJson->zValue("baseDurability")->asNumber()->getNumber(),
|
|
|
|
|
|
+ zResult->setHandleMaterialHardness(
|
|
|
|
+ (float)zJson->zValue("headMaterialHardness")->asNumber()->getNumber());
|
|
|
|
+ zResult->setRodMaterialHardness(
|
|
|
|
+ (float)zJson->zValue("rodMaterialHardness")->asNumber()->getNumber());
|
|
|
|
+ zResult->setHandleMaterialHardness(
|
|
|
|
+ (float)zJson->zValue("handleMaterialHardness")
|
|
|
|
+ ->asNumber()
|
|
|
|
+ ->getNumber());
|
|
|
|
+ zResult->setBaseDurability(
|
|
|
|
+ (float)zJson->zValue("baseDurability")->asNumber()->getNumber());
|
|
|
|
+ zResult->setBaseDurabilityMultiplier(
|
|
(float)zJson->zValue("baseDurabilityMultiplier")
|
|
(float)zJson->zValue("baseDurabilityMultiplier")
|
|
->asNumber()
|
|
->asNumber()
|
|
- ->getNumber(),
|
|
|
|
- (float)zJson->zValue("headMaterialDurability")->asNumber()->getNumber(),
|
|
|
|
|
|
+ ->getNumber());
|
|
|
|
+ zResult->setHeadMaterialDurability(
|
|
|
|
+ (float)zJson->zValue("headMaterialDurability")
|
|
|
|
+ ->asNumber()
|
|
|
|
+ ->getNumber());
|
|
|
|
+ zResult->setHeadMaterialDurabilityMultiplier(
|
|
(float)zJson->zValue("headMaterialDurabilityMultiplier")
|
|
(float)zJson->zValue("headMaterialDurabilityMultiplier")
|
|
->asNumber()
|
|
->asNumber()
|
|
- ->getNumber(),
|
|
|
|
- (float)zJson->zValue("rodMaterialDurability")->asNumber()->getNumber(),
|
|
|
|
|
|
+ ->getNumber());
|
|
|
|
+ zResult->setRodMaterialDurability(
|
|
|
|
+ (float)zJson->zValue("rodMaterialDurability")->asNumber()->getNumber());
|
|
|
|
+ zResult->setRodMaterialDurabilityMultiplier(
|
|
(float)zJson->zValue("rodMaterialDurabilityMultiplier")
|
|
(float)zJson->zValue("rodMaterialDurabilityMultiplier")
|
|
->asNumber()
|
|
->asNumber()
|
|
- ->getNumber(),
|
|
|
|
|
|
+ ->getNumber());
|
|
|
|
+ zResult->setHandleMaterialDurability(
|
|
(float)zJson->zValue("handleMaterialDurability")
|
|
(float)zJson->zValue("handleMaterialDurability")
|
|
->asNumber()
|
|
->asNumber()
|
|
- ->getNumber(),
|
|
|
|
|
|
+ ->getNumber());
|
|
|
|
+ zResult->setHandleMaterialDurabilityMultiplier(
|
|
(float)zJson->zValue("handleMaterialDurabilityMultiplier")
|
|
(float)zJson->zValue("handleMaterialDurabilityMultiplier")
|
|
->asNumber()
|
|
->asNumber()
|
|
- ->getNumber(),
|
|
|
|
|
|
+ ->getNumber());
|
|
|
|
+ zResult->setLevelUpRule(
|
|
Game::INSTANCE->zTypeRegistry()->fromJson<ItemSkillLevelUpRule>(
|
|
Game::INSTANCE->zTypeRegistry()->fromJson<ItemSkillLevelUpRule>(
|
|
- zJson->zValue("levelUpRule")),
|
|
|
|
- zJson->zValue("brokenItemTypeName")->asString()->getString(),
|
|
|
|
- zJson->getValue("itemSkill")->asObject(),
|
|
|
|
- (int)zJson->zValue("maxStack")->asNumber()->getNumber(), groups);
|
|
|
|
|
|
+ zJson->zValue("levelUpRule")));
|
|
|
|
+ zResult->setBrokenItemTypeName(
|
|
|
|
+ zJson->zValue("brokenItemTypeName")->asString()->getString());
|
|
|
|
+ zResult->setItemSkillConfigJson(zJson->getValue("itemSkill")->asObject());
|
|
|
|
+ ItemTypeFactoryBase::fromJson(zResult, zJson);
|
|
}
|
|
}
|
|
|
|
|
|
-Framework::JSON::JSONObject* BasicToolItemTypeFactory::toJson(
|
|
|
|
- BasicToolItemType* zObject) const
|
|
|
|
|
|
+void BasicToolItemTypeFactory::toJson(
|
|
|
|
+ BasicToolItemType* zObject, Framework::JSON::JSONObject* zResult) const
|
|
{
|
|
{
|
|
- Framework::JSON::JSONObject* json = new Framework::JSON::JSONObject();
|
|
|
|
- json->addValue("name", new Framework::JSON::JSONString(zObject->getName()));
|
|
|
|
- json->addValue(
|
|
|
|
- "model", Game::INSTANCE->zTypeRegistry()->toJson(zObject->zModel()));
|
|
|
|
- json->addValue("headMaterialHardness",
|
|
|
|
|
|
+ zResult->addValue("headMaterialHardness",
|
|
new Framework::JSON::JSONNumber(zObject->getHeadMaterialHardness()));
|
|
new Framework::JSON::JSONNumber(zObject->getHeadMaterialHardness()));
|
|
- json->addValue("rodMaterialHardness",
|
|
|
|
|
|
+ zResult->addValue("rodMaterialHardness",
|
|
new Framework::JSON::JSONNumber(zObject->getRodMaterialHardness()));
|
|
new Framework::JSON::JSONNumber(zObject->getRodMaterialHardness()));
|
|
- json->addValue("handleMaterialHardness",
|
|
|
|
|
|
+ zResult->addValue("handleMaterialHardness",
|
|
new Framework::JSON::JSONNumber(zObject->getHandleMaterialHardness()));
|
|
new Framework::JSON::JSONNumber(zObject->getHandleMaterialHardness()));
|
|
- json->addValue("baseDurability",
|
|
|
|
|
|
+ zResult->addValue("baseDurability",
|
|
new Framework::JSON::JSONNumber(zObject->getBaseDurablility()));
|
|
new Framework::JSON::JSONNumber(zObject->getBaseDurablility()));
|
|
- json->addValue("baseDurabilityMultiplier",
|
|
|
|
|
|
+ zResult->addValue("baseDurabilityMultiplier",
|
|
new Framework::JSON::JSONNumber(
|
|
new Framework::JSON::JSONNumber(
|
|
zObject->getBaseDurabilityMultiplier()));
|
|
zObject->getBaseDurabilityMultiplier()));
|
|
- json->addValue("headMaterialDurability",
|
|
|
|
|
|
+ zResult->addValue("headMaterialDurability",
|
|
new Framework::JSON::JSONNumber(zObject->getHeadMaterialDurability()));
|
|
new Framework::JSON::JSONNumber(zObject->getHeadMaterialDurability()));
|
|
-
|
|
|
|
- json->addValue("headMaterialDurabilityMultiplier",
|
|
|
|
|
|
+ zResult->addValue("headMaterialDurabilityMultiplier",
|
|
new Framework::JSON::JSONNumber(
|
|
new Framework::JSON::JSONNumber(
|
|
zObject->getHeadMaterialDurabilityMultiplier()));
|
|
zObject->getHeadMaterialDurabilityMultiplier()));
|
|
- json->addValue("rodMaterialDurability",
|
|
|
|
|
|
+ zResult->addValue("rodMaterialDurability",
|
|
new Framework::JSON::JSONNumber(zObject->getRodMaterialDurability()));
|
|
new Framework::JSON::JSONNumber(zObject->getRodMaterialDurability()));
|
|
- json->addValue("rodMaterialDurabilityMultiplier",
|
|
|
|
|
|
+ zResult->addValue("rodMaterialDurabilityMultiplier",
|
|
new Framework::JSON::JSONNumber(
|
|
new Framework::JSON::JSONNumber(
|
|
zObject->getRodMaterialDurabilityMultiplier()));
|
|
zObject->getRodMaterialDurabilityMultiplier()));
|
|
- json->addValue("handleMaterialDurability",
|
|
|
|
|
|
+ zResult->addValue("handleMaterialDurability",
|
|
new Framework::JSON::JSONNumber(
|
|
new Framework::JSON::JSONNumber(
|
|
zObject->getHandleMaterialDurability()));
|
|
zObject->getHandleMaterialDurability()));
|
|
- json->addValue("handleMaterialDurabilityMultiplier",
|
|
|
|
|
|
+ zResult->addValue("handleMaterialDurabilityMultiplier",
|
|
new Framework::JSON::JSONNumber(
|
|
new Framework::JSON::JSONNumber(
|
|
zObject->getHandleMaterialDurabilityMultiplier()));
|
|
zObject->getHandleMaterialDurabilityMultiplier()));
|
|
- json->addValue("levelUpRule",
|
|
|
|
|
|
+ zResult->addValue("levelUpRule",
|
|
Game::INSTANCE->zTypeRegistry()->toJson(zObject->zLevelUpRule()));
|
|
Game::INSTANCE->zTypeRegistry()->toJson(zObject->zLevelUpRule()));
|
|
- json->addValue("brokenItemTypeName",
|
|
|
|
|
|
+ zResult->addValue("brokenItemTypeName",
|
|
new Framework::JSON::JSONString(zObject->zBrokenItemType()->getName()));
|
|
new Framework::JSON::JSONString(zObject->zBrokenItemType()->getName()));
|
|
- json->addValue("itemSkill", zObject->getItemSkillConfigJson());
|
|
|
|
- json->addValue("maxStack",
|
|
|
|
- new Framework::JSON::JSONNumber(zObject->getMaxStackSize()));
|
|
|
|
- Framework::JSON::JSONArray* groups = new Framework::JSON::JSONArray();
|
|
|
|
- for (Framework::Text* group : zObject->getGroups())
|
|
|
|
- {
|
|
|
|
- groups->addValue(new Framework::JSON::JSONString(group->getText()));
|
|
|
|
- }
|
|
|
|
- json->addValue("groupNames", groups);
|
|
|
|
- return json;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-Framework::JSON::Validator::JSONValidator*
|
|
|
|
-BasicToolItemTypeFactory::getValidator(
|
|
|
|
- Framework::JSON::Validator::ObjectValidationBuilder<
|
|
|
|
- Framework::JSON::Validator::JSONValidator>* builder) const
|
|
|
|
-{
|
|
|
|
- return builder->withRequiredString("name")
|
|
|
|
- ->finishString()
|
|
|
|
- ->withRequiredAttribute(
|
|
|
|
- "model", Game::INSTANCE->zTypeRegistry()->getValidator<ModelInfo>())
|
|
|
|
- ->withRequiredNumber("headMaterialHardness")
|
|
|
|
- ->withDefault(1.0)
|
|
|
|
- ->whichIsGreaterOrEqual(0.0)
|
|
|
|
- ->finishNumber()
|
|
|
|
- ->withRequiredNumber("rodMaterialHardness")
|
|
|
|
- ->withDefault(1.0)
|
|
|
|
- ->whichIsGreaterOrEqual(0.0)
|
|
|
|
- ->finishNumber()
|
|
|
|
- ->withRequiredNumber("handleMaterialHardness")
|
|
|
|
- ->withDefault(1.0)
|
|
|
|
- ->whichIsGreaterOrEqual(0.0)
|
|
|
|
- ->finishNumber()
|
|
|
|
- ->withRequiredNumber("baseDurability")
|
|
|
|
- ->withDefault(10.0)
|
|
|
|
- ->whichIsGreaterOrEqual(0.0)
|
|
|
|
- ->finishNumber()
|
|
|
|
- ->withRequiredNumber("baseDurabilityMultiplier")
|
|
|
|
- ->withDefault(1.0)
|
|
|
|
- ->whichIsGreaterOrEqual(0.0)
|
|
|
|
- ->finishNumber()
|
|
|
|
- ->withRequiredNumber("headMaterialDurability")
|
|
|
|
- ->withDefault(10.0)
|
|
|
|
- ->whichIsGreaterOrEqual(0.0)
|
|
|
|
- ->finishNumber()
|
|
|
|
- ->withRequiredNumber("headMaterialDurabilityMultiplier")
|
|
|
|
- ->withDefault(0.0)
|
|
|
|
- ->whichIsGreaterOrEqual(0.0)
|
|
|
|
- ->finishNumber()
|
|
|
|
- ->withRequiredNumber("rodMaterialDurability")
|
|
|
|
- ->withDefault(10.0)
|
|
|
|
- ->whichIsGreaterOrEqual(0.0)
|
|
|
|
- ->finishNumber()
|
|
|
|
- ->withRequiredNumber("rodMaterialDurabilityMultiplier")
|
|
|
|
- ->withDefault(0.0)
|
|
|
|
- ->whichIsGreaterOrEqual(0.0)
|
|
|
|
- ->finishNumber()
|
|
|
|
- ->withRequiredNumber("handleMaterialDurability")
|
|
|
|
- ->withDefault(10.0)
|
|
|
|
- ->whichIsGreaterOrEqual(0.0)
|
|
|
|
- ->finishNumber()
|
|
|
|
- ->withRequiredNumber("handleMaterialDurabilityMultiplier")
|
|
|
|
- ->withDefault(0.0)
|
|
|
|
- ->whichIsGreaterOrEqual(0.0)
|
|
|
|
- ->finishNumber()
|
|
|
|
- ->withRequiredNumber("maxStack")
|
|
|
|
- ->withDefault(10)
|
|
|
|
- ->whichIsGreaterOrEqual(1)
|
|
|
|
- ->finishNumber()
|
|
|
|
- ->withRequiredString("brokenItemTypeName")
|
|
|
|
- ->finishString()
|
|
|
|
- ->withRequiredAttribute("levelUpRule",
|
|
|
|
- Game::INSTANCE->zTypeRegistry()
|
|
|
|
- ->getValidator<ItemSkillLevelUpRule>())
|
|
|
|
- ->withRequiredAttribute("itemSkill",
|
|
|
|
- Game::INSTANCE->zTypeRegistry()->getValidator<ItemSkill>())
|
|
|
|
- ->withRequiredArray("groupNames")
|
|
|
|
- ->addAcceptedStringInArray()
|
|
|
|
- ->finishString()
|
|
|
|
- ->withDefault(new Framework::JSON::JSONArray())
|
|
|
|
- ->finishArray()
|
|
|
|
- ->finishObject();
|
|
|
|
|
|
+ zResult->addValue("itemSkill", zObject->getItemSkillConfigJson());
|
|
|
|
+ ItemTypeFactoryBase::toJson(zObject, zResult);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+JSONObjectValidationBuilder* BasicToolItemTypeFactory::addToValidator(
|
|
|
|
+ JSONObjectValidationBuilder* builder) const
|
|
|
|
+{
|
|
|
|
+ return ItemTypeFactoryBase::addToValidator(
|
|
|
|
+ builder->withRequiredNumber("headMaterialHardness")
|
|
|
|
+ ->withDefault(1.0)
|
|
|
|
+ ->whichIsGreaterOrEqual(0.0)
|
|
|
|
+ ->finishNumber()
|
|
|
|
+ ->withRequiredNumber("rodMaterialHardness")
|
|
|
|
+ ->withDefault(1.0)
|
|
|
|
+ ->whichIsGreaterOrEqual(0.0)
|
|
|
|
+ ->finishNumber()
|
|
|
|
+ ->withRequiredNumber("handleMaterialHardness")
|
|
|
|
+ ->withDefault(1.0)
|
|
|
|
+ ->whichIsGreaterOrEqual(0.0)
|
|
|
|
+ ->finishNumber()
|
|
|
|
+ ->withRequiredNumber("baseDurability")
|
|
|
|
+ ->withDefault(10.0)
|
|
|
|
+ ->whichIsGreaterOrEqual(0.0)
|
|
|
|
+ ->finishNumber()
|
|
|
|
+ ->withRequiredNumber("baseDurabilityMultiplier")
|
|
|
|
+ ->withDefault(1.0)
|
|
|
|
+ ->whichIsGreaterOrEqual(0.0)
|
|
|
|
+ ->finishNumber()
|
|
|
|
+ ->withRequiredNumber("headMaterialDurability")
|
|
|
|
+ ->withDefault(10.0)
|
|
|
|
+ ->whichIsGreaterOrEqual(0.0)
|
|
|
|
+ ->finishNumber()
|
|
|
|
+ ->withRequiredNumber("headMaterialDurabilityMultiplier")
|
|
|
|
+ ->withDefault(0.0)
|
|
|
|
+ ->whichIsGreaterOrEqual(0.0)
|
|
|
|
+ ->finishNumber()
|
|
|
|
+ ->withRequiredNumber("rodMaterialDurability")
|
|
|
|
+ ->withDefault(10.0)
|
|
|
|
+ ->whichIsGreaterOrEqual(0.0)
|
|
|
|
+ ->finishNumber()
|
|
|
|
+ ->withRequiredNumber("rodMaterialDurabilityMultiplier")
|
|
|
|
+ ->withDefault(0.0)
|
|
|
|
+ ->whichIsGreaterOrEqual(0.0)
|
|
|
|
+ ->finishNumber()
|
|
|
|
+ ->withRequiredNumber("handleMaterialDurability")
|
|
|
|
+ ->withDefault(10.0)
|
|
|
|
+ ->whichIsGreaterOrEqual(0.0)
|
|
|
|
+ ->finishNumber()
|
|
|
|
+ ->withRequiredNumber("handleMaterialDurabilityMultiplier")
|
|
|
|
+ ->withDefault(0.0)
|
|
|
|
+ ->whichIsGreaterOrEqual(0.0)
|
|
|
|
+ ->finishNumber()
|
|
|
|
+ ->withRequiredString("brokenItemTypeName")
|
|
|
|
+ ->finishString()
|
|
|
|
+ ->withRequiredAttribute("levelUpRule",
|
|
|
|
+ Game::INSTANCE->zTypeRegistry()
|
|
|
|
+ ->getValidator<ItemSkillLevelUpRule>())
|
|
|
|
+ ->withRequiredAttribute("itemSkill",
|
|
|
|
+ Game::INSTANCE->zTypeRegistry()->getValidator<ItemSkill>()));
|
|
}
|
|
}
|
|
|
|
|
|
Framework::Text BasicToolItemTypeFactory::getTypeToken() const
|
|
Framework::Text BasicToolItemTypeFactory::getTypeToken() const
|
|
@@ -575,30 +642,18 @@ Framework::Text BasicToolItemTypeFactory::getTypeToken() const
|
|
return "tool";
|
|
return "tool";
|
|
}
|
|
}
|
|
|
|
|
|
-BlockReplaceItemSkillConfig::BlockReplaceItemSkillConfig(
|
|
|
|
- BlockFilter* targetBlockFilter,
|
|
|
|
- int replacementBlockTypeId,
|
|
|
|
- int cooldownTicks,
|
|
|
|
- float staminaCost,
|
|
|
|
- float staminaCostDevider,
|
|
|
|
- float additionalStaminaCostDeviderPerLevel,
|
|
|
|
- float durabilityCost,
|
|
|
|
- float durabilityCostDevider,
|
|
|
|
- float additionalDurabilityCostDeviderPerLevel,
|
|
|
|
- float xpGain)
|
|
|
|
|
|
+BlockReplaceItemSkillConfig::BlockReplaceItemSkillConfig()
|
|
: ReferenceCounter(),
|
|
: ReferenceCounter(),
|
|
- targetBlockFilter(targetBlockFilter),
|
|
|
|
- replacementBlockTypeId(replacementBlockTypeId),
|
|
|
|
- cooldownTicks(cooldownTicks),
|
|
|
|
- staminaCost(staminaCost),
|
|
|
|
- staminaCostDevider(staminaCostDevider),
|
|
|
|
- additionalStaminaCostDeviderPerLevel(
|
|
|
|
- additionalStaminaCostDeviderPerLevel),
|
|
|
|
- durabilityCost(durabilityCost),
|
|
|
|
- durabilityCostDevider(durabilityCostDevider),
|
|
|
|
- additionalDurabilityCostDeviderPerLevel(
|
|
|
|
- additionalDurabilityCostDeviderPerLevel),
|
|
|
|
- xpGain(xpGain)
|
|
|
|
|
|
+ targetBlockFilter(0),
|
|
|
|
+ replacementBlockTypeId(-1),
|
|
|
|
+ cooldownTicks(20),
|
|
|
|
+ staminaCost(0.5f),
|
|
|
|
+ staminaCostDevider(0.8f),
|
|
|
|
+ additionalStaminaCostDeviderPerLevel(0.2f),
|
|
|
|
+ durabilityCost(0.5f),
|
|
|
|
+ durabilityCostDevider(0.89f),
|
|
|
|
+ additionalDurabilityCostDeviderPerLevel(0.02f),
|
|
|
|
+ xpGain(0.5f)
|
|
{}
|
|
{}
|
|
|
|
|
|
BlockReplaceItemSkillConfig::~BlockReplaceItemSkillConfig()
|
|
BlockReplaceItemSkillConfig::~BlockReplaceItemSkillConfig()
|
|
@@ -606,53 +661,111 @@ BlockReplaceItemSkillConfig::~BlockReplaceItemSkillConfig()
|
|
if (targetBlockFilter) targetBlockFilter->release();
|
|
if (targetBlockFilter) targetBlockFilter->release();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void BlockReplaceItemSkillConfig::setTargetBlockFilter(
|
|
|
|
+ BlockFilter* targetBlockFilter)
|
|
|
|
+{
|
|
|
|
+ this->targetBlockFilter = targetBlockFilter;
|
|
|
|
+}
|
|
|
|
+
|
|
BlockFilter* BlockReplaceItemSkillConfig::zTargetBlockFilter() const
|
|
BlockFilter* BlockReplaceItemSkillConfig::zTargetBlockFilter() const
|
|
{
|
|
{
|
|
return targetBlockFilter;
|
|
return targetBlockFilter;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void BlockReplaceItemSkillConfig::setReplacementBlockTypeId(
|
|
|
|
+ int replacementBlockTypeId)
|
|
|
|
+{
|
|
|
|
+ this->replacementBlockTypeId = replacementBlockTypeId;
|
|
|
|
+}
|
|
|
|
+
|
|
int BlockReplaceItemSkillConfig::getReplacementBlockTypeId() const
|
|
int BlockReplaceItemSkillConfig::getReplacementBlockTypeId() const
|
|
{
|
|
{
|
|
return replacementBlockTypeId;
|
|
return replacementBlockTypeId;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void BlockReplaceItemSkillConfig::setCooldownTicks(int cooldownTicks)
|
|
|
|
+{
|
|
|
|
+ this->cooldownTicks = cooldownTicks;
|
|
|
|
+}
|
|
|
|
+
|
|
int BlockReplaceItemSkillConfig::getCooldownTicks() const
|
|
int BlockReplaceItemSkillConfig::getCooldownTicks() const
|
|
{
|
|
{
|
|
return cooldownTicks;
|
|
return cooldownTicks;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void BlockReplaceItemSkillConfig::setStaminaCost(float staminaCost)
|
|
|
|
+{
|
|
|
|
+ this->staminaCost = staminaCost;
|
|
|
|
+}
|
|
|
|
+
|
|
float BlockReplaceItemSkillConfig::getStaminaCost() const
|
|
float BlockReplaceItemSkillConfig::getStaminaCost() const
|
|
{
|
|
{
|
|
return staminaCost;
|
|
return staminaCost;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void BlockReplaceItemSkillConfig::setStaminaCostDevider(
|
|
|
|
+ float staminaCostDevider)
|
|
|
|
+{
|
|
|
|
+ this->staminaCostDevider = staminaCostDevider;
|
|
|
|
+}
|
|
|
|
+
|
|
float BlockReplaceItemSkillConfig::getStaminaCostDevider() const
|
|
float BlockReplaceItemSkillConfig::getStaminaCostDevider() const
|
|
{
|
|
{
|
|
return staminaCostDevider;
|
|
return staminaCostDevider;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void BlockReplaceItemSkillConfig::setAdditionalStaminaCostDeviderPerLevel(
|
|
|
|
+ float additionalStaminaCostDeviderPerLevel)
|
|
|
|
+{
|
|
|
|
+ this->additionalStaminaCostDeviderPerLevel
|
|
|
|
+ = additionalStaminaCostDeviderPerLevel;
|
|
|
|
+}
|
|
|
|
+
|
|
float BlockReplaceItemSkillConfig::getAdditionalStaminaCostDeviderPerLevel()
|
|
float BlockReplaceItemSkillConfig::getAdditionalStaminaCostDeviderPerLevel()
|
|
const
|
|
const
|
|
{
|
|
{
|
|
return additionalStaminaCostDeviderPerLevel;
|
|
return additionalStaminaCostDeviderPerLevel;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void BlockReplaceItemSkillConfig::setDurabilityCost(float durabilityCost)
|
|
|
|
+{
|
|
|
|
+ this->durabilityCost = durabilityCost;
|
|
|
|
+}
|
|
|
|
+
|
|
float BlockReplaceItemSkillConfig::getDurabilityCost() const
|
|
float BlockReplaceItemSkillConfig::getDurabilityCost() const
|
|
{
|
|
{
|
|
return durabilityCost;
|
|
return durabilityCost;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void BlockReplaceItemSkillConfig::setDurabilityCostDevider(
|
|
|
|
+ float durabilityCostDevider)
|
|
|
|
+{
|
|
|
|
+ this->durabilityCostDevider = durabilityCostDevider;
|
|
|
|
+}
|
|
|
|
+
|
|
float BlockReplaceItemSkillConfig::getDurabilityCostDevider() const
|
|
float BlockReplaceItemSkillConfig::getDurabilityCostDevider() const
|
|
{
|
|
{
|
|
return durabilityCostDevider;
|
|
return durabilityCostDevider;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void BlockReplaceItemSkillConfig::setAdditionalDurabilityCostDeviderPerLevel(
|
|
|
|
+ float additionalDurabilityCostDeviderPerLevel)
|
|
|
|
+{
|
|
|
|
+ this->additionalDurabilityCostDeviderPerLevel
|
|
|
|
+ = additionalDurabilityCostDeviderPerLevel;
|
|
|
|
+}
|
|
|
|
+
|
|
float BlockReplaceItemSkillConfig::getAdditionalDurabilityCostDeviderPerLevel()
|
|
float BlockReplaceItemSkillConfig::getAdditionalDurabilityCostDeviderPerLevel()
|
|
const
|
|
const
|
|
{
|
|
{
|
|
return additionalDurabilityCostDeviderPerLevel;
|
|
return additionalDurabilityCostDeviderPerLevel;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void BlockReplaceItemSkillConfig::setXpGain(float xpGain)
|
|
|
|
+{
|
|
|
|
+ this->xpGain = xpGain;
|
|
|
|
+}
|
|
|
|
+
|
|
float BlockReplaceItemSkillConfig::getXpGain() const
|
|
float BlockReplaceItemSkillConfig::getXpGain() const
|
|
{
|
|
{
|
|
return xpGain;
|
|
return xpGain;
|
|
@@ -662,82 +775,96 @@ BlockReplaceItemSkillConfigFactory::BlockReplaceItemSkillConfigFactory()
|
|
: TypeFactory()
|
|
: TypeFactory()
|
|
{}
|
|
{}
|
|
|
|
|
|
-BlockReplaceItemSkillConfig* BlockReplaceItemSkillConfigFactory::fromJson(
|
|
|
|
- Framework::JSON::JSONValue* zJson) const
|
|
|
|
|
|
+BlockReplaceItemSkillConfig* BlockReplaceItemSkillConfigFactory::createValue(
|
|
|
|
+ Framework::JSON::JSONObject* zJson) const
|
|
{
|
|
{
|
|
- return new BlockReplaceItemSkillConfig(
|
|
|
|
|
|
+ return new BlockReplaceItemSkillConfig();
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+void BlockReplaceItemSkillConfigFactory::fromJson(
|
|
|
|
+ BlockReplaceItemSkillConfig* zResult,
|
|
|
|
+ Framework::JSON::JSONObject* zJson) const
|
|
|
|
+{
|
|
|
|
+ zResult->setTargetBlockFilter(
|
|
Game::INSTANCE->zTypeRegistry()->fromJson<BlockFilter>(
|
|
Game::INSTANCE->zTypeRegistry()->fromJson<BlockFilter>(
|
|
- zJson->asObject()->zValue("targetFilter")),
|
|
|
|
|
|
+ zJson->asObject()->zValue("targetFilter")));
|
|
|
|
+ zResult->setCooldownTicks((int)zJson->asObject()
|
|
|
|
+ ->zValue("cooldownTicks")
|
|
|
|
+ ->asNumber()
|
|
|
|
+ ->getNumber());
|
|
|
|
+ zResult->setReplacementBlockTypeId(
|
|
Game::INSTANCE->getBlockTypeId(zJson->asObject()
|
|
Game::INSTANCE->getBlockTypeId(zJson->asObject()
|
|
->zValue("replacementBlockType")
|
|
->zValue("replacementBlockType")
|
|
->asString()
|
|
->asString()
|
|
- ->getString()),
|
|
|
|
- (int)zJson->asObject()
|
|
|
|
- ->zValue("cooldownTicks")
|
|
|
|
- ->asNumber()
|
|
|
|
- ->getNumber(),
|
|
|
|
- (float)zJson->asObject()
|
|
|
|
- ->zValue("staminaCost")
|
|
|
|
- ->asNumber()
|
|
|
|
- ->getNumber(),
|
|
|
|
- (float)zJson->asObject()
|
|
|
|
- ->zValue("staminaCostDevider")
|
|
|
|
- ->asNumber()
|
|
|
|
- ->getNumber(),
|
|
|
|
|
|
+ ->getString()));
|
|
|
|
+ zResult->setCooldownTicks((int)zJson->asObject()
|
|
|
|
+ ->zValue("cooldownTicks")
|
|
|
|
+ ->asNumber()
|
|
|
|
+ ->getNumber());
|
|
|
|
+ zResult->setStaminaCost((float)zJson->asObject()
|
|
|
|
+ ->zValue("staminaCost")
|
|
|
|
+ ->asNumber()
|
|
|
|
+ ->getNumber());
|
|
|
|
+ zResult->setStaminaCostDevider((float)zJson->asObject()
|
|
|
|
+ ->zValue("staminaCostDevider")
|
|
|
|
+ ->asNumber()
|
|
|
|
+ ->getNumber());
|
|
|
|
+ zResult->setAdditionalStaminaCostDeviderPerLevel(
|
|
(float)zJson->asObject()
|
|
(float)zJson->asObject()
|
|
->zValue("additionalStaminaCostDeviderPerLevel")
|
|
->zValue("additionalStaminaCostDeviderPerLevel")
|
|
->asNumber()
|
|
->asNumber()
|
|
- ->getNumber(),
|
|
|
|
- (float)zJson->asObject()
|
|
|
|
- ->zValue("durabilityCost")
|
|
|
|
- ->asNumber()
|
|
|
|
- ->getNumber(),
|
|
|
|
- (float)zJson->asObject()
|
|
|
|
- ->zValue("durabilityCostDevider")
|
|
|
|
- ->asNumber()
|
|
|
|
- ->getNumber(),
|
|
|
|
|
|
+ ->getNumber());
|
|
|
|
+ zResult->setDurabilityCost((float)zJson->asObject()
|
|
|
|
+ ->zValue("durabilityCost")
|
|
|
|
+ ->asNumber()
|
|
|
|
+ ->getNumber());
|
|
|
|
+ zResult->setDurabilityCostDevider((float)zJson->asObject()
|
|
|
|
+ ->zValue("durabilityCostDevider")
|
|
|
|
+ ->asNumber()
|
|
|
|
+ ->getNumber());
|
|
|
|
+ zResult->setAdditionalDurabilityCostDeviderPerLevel(
|
|
(float)zJson->asObject()
|
|
(float)zJson->asObject()
|
|
->zValue("additionalDurabilityCostDeviderPerLevel")
|
|
->zValue("additionalDurabilityCostDeviderPerLevel")
|
|
->asNumber()
|
|
->asNumber()
|
|
- ->getNumber(),
|
|
|
|
|
|
+ ->getNumber());
|
|
|
|
+ zResult->setXpGain(
|
|
(float)zJson->asObject()->zValue("xpGain")->asNumber()->getNumber());
|
|
(float)zJson->asObject()->zValue("xpGain")->asNumber()->getNumber());
|
|
}
|
|
}
|
|
|
|
|
|
-Framework::JSON::JSONValue* BlockReplaceItemSkillConfigFactory::toJson(
|
|
|
|
- BlockReplaceItemSkillConfig* zObject) const
|
|
|
|
|
|
+void BlockReplaceItemSkillConfigFactory::toJson(
|
|
|
|
+ BlockReplaceItemSkillConfig* zObject,
|
|
|
|
+ Framework::JSON::JSONObject* zResult) const
|
|
{
|
|
{
|
|
- Framework::JSON::JSONObject* result = new Framework::JSON::JSONObject();
|
|
|
|
- result->addValue("targetFilter",
|
|
|
|
|
|
+ zResult->addValue("targetFilter",
|
|
Game::INSTANCE->zTypeRegistry()->toJson(zObject->zTargetBlockFilter()));
|
|
Game::INSTANCE->zTypeRegistry()->toJson(zObject->zTargetBlockFilter()));
|
|
- result->addValue("replacementBlockType",
|
|
|
|
|
|
+ zResult->addValue("replacementBlockType",
|
|
new Framework::JSON::JSONString(
|
|
new Framework::JSON::JSONString(
|
|
Game::INSTANCE->zBlockType(zObject->getReplacementBlockTypeId())
|
|
Game::INSTANCE->zBlockType(zObject->getReplacementBlockTypeId())
|
|
->getName()));
|
|
->getName()));
|
|
- result->addValue("cooldownTicks",
|
|
|
|
|
|
+ zResult->addValue("cooldownTicks",
|
|
new Framework::JSON::JSONNumber(zObject->getCooldownTicks()));
|
|
new Framework::JSON::JSONNumber(zObject->getCooldownTicks()));
|
|
- result->addValue("staminaCost",
|
|
|
|
|
|
+ zResult->addValue("staminaCost",
|
|
new Framework::JSON::JSONNumber(zObject->getStaminaCost()));
|
|
new Framework::JSON::JSONNumber(zObject->getStaminaCost()));
|
|
- result->addValue("staminaCostDevider",
|
|
|
|
|
|
+ zResult->addValue("staminaCostDevider",
|
|
new Framework::JSON::JSONNumber(zObject->getStaminaCostDevider()));
|
|
new Framework::JSON::JSONNumber(zObject->getStaminaCostDevider()));
|
|
- result->addValue("additionalStaminaCostDeviderPerLevel",
|
|
|
|
|
|
+ zResult->addValue("additionalStaminaCostDeviderPerLevel",
|
|
new Framework::JSON::JSONNumber(
|
|
new Framework::JSON::JSONNumber(
|
|
zObject->getAdditionalStaminaCostDeviderPerLevel()));
|
|
zObject->getAdditionalStaminaCostDeviderPerLevel()));
|
|
- result->addValue("durabilityCost",
|
|
|
|
|
|
+ zResult->addValue("durabilityCost",
|
|
new Framework::JSON::JSONNumber(zObject->getDurabilityCost()));
|
|
new Framework::JSON::JSONNumber(zObject->getDurabilityCost()));
|
|
- result->addValue("durabilityCostDevider",
|
|
|
|
|
|
+ zResult->addValue("durabilityCostDevider",
|
|
new Framework::JSON::JSONNumber(zObject->getDurabilityCostDevider()));
|
|
new Framework::JSON::JSONNumber(zObject->getDurabilityCostDevider()));
|
|
- result->addValue("additionalDurabilityCostDeviderPerLevel",
|
|
|
|
|
|
+ zResult->addValue("additionalDurabilityCostDeviderPerLevel",
|
|
new Framework::JSON::JSONNumber(
|
|
new Framework::JSON::JSONNumber(
|
|
zObject->getAdditionalDurabilityCostDeviderPerLevel()));
|
|
zObject->getAdditionalDurabilityCostDeviderPerLevel()));
|
|
- result->addValue(
|
|
|
|
|
|
+ zResult->addValue(
|
|
"xpGain", new Framework::JSON::JSONNumber(zObject->getXpGain()));
|
|
"xpGain", new Framework::JSON::JSONNumber(zObject->getXpGain()));
|
|
- return result;
|
|
|
|
}
|
|
}
|
|
|
|
|
|
-Framework::JSON::Validator::JSONValidator*
|
|
|
|
-BlockReplaceItemSkillConfigFactory::getValidator() const
|
|
|
|
|
|
+JSONObjectValidationBuilder* BlockReplaceItemSkillConfigFactory::addToValidator(
|
|
|
|
+ JSONObjectValidationBuilder* builder) const
|
|
{
|
|
{
|
|
- return Framework::JSON::Validator::JSONValidator::buildForObject()
|
|
|
|
|
|
+ return builder
|
|
->withRequiredAttribute("targetFilter",
|
|
->withRequiredAttribute("targetFilter",
|
|
Game::INSTANCE->zTypeRegistry()->getValidator<BlockFilter>())
|
|
Game::INSTANCE->zTypeRegistry()->getValidator<BlockFilter>())
|
|
->withRequiredString("replacementBlockType")
|
|
->withRequiredString("replacementBlockType")
|
|
@@ -773,22 +900,21 @@ BlockReplaceItemSkillConfigFactory::getValidator() const
|
|
->withRequiredNumber("xpGain")
|
|
->withRequiredNumber("xpGain")
|
|
->whichIsGreaterOrEqual(0)
|
|
->whichIsGreaterOrEqual(0)
|
|
->withDefault(0.5)
|
|
->withDefault(0.5)
|
|
- ->finishNumber()
|
|
|
|
- ->finishObject();
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-BlockReplaceItemSkill::BlockReplaceItemSkill(float xp,
|
|
|
|
- float maxXp,
|
|
|
|
- float level,
|
|
|
|
- BlockReplaceItemSkillConfig* invalidUseConfig,
|
|
|
|
- Framework::RCArray<BlockReplaceItemSkillConfig> configs,
|
|
|
|
- int cooldownTicks)
|
|
|
|
- : ItemSkill(xp, maxXp, level),
|
|
|
|
- invalidUseConfig(invalidUseConfig),
|
|
|
|
- configs(configs),
|
|
|
|
- cooldownTicks(cooldownTicks)
|
|
|
|
|
|
+ ->finishNumber();
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+BlockReplaceItemSkill::BlockReplaceItemSkill()
|
|
|
|
+ : ItemSkill(),
|
|
|
|
+ invalidUseConfig(0),
|
|
|
|
+ configs(),
|
|
|
|
+ cooldownTicks(20)
|
|
{}
|
|
{}
|
|
|
|
|
|
|
|
+BlockReplaceItemSkill::~BlockReplaceItemSkill()
|
|
|
|
+{
|
|
|
|
+ if (invalidUseConfig) invalidUseConfig->release();
|
|
|
|
+}
|
|
|
|
+
|
|
void BlockReplaceItemSkill::load(Framework::StreamReader* zReader)
|
|
void BlockReplaceItemSkill::load(Framework::StreamReader* zReader)
|
|
{
|
|
{
|
|
zReader->lese((char*)&cooldownTicks, 4);
|
|
zReader->lese((char*)&cooldownTicks, 4);
|
|
@@ -849,7 +975,7 @@ bool BlockReplaceItemSkill::use(Entity* zActor, Item* zUsedItem, Block* zTarget)
|
|
setXp(getXp() + usedConfig->getXpGain());
|
|
setXp(getXp() + usedConfig->getXpGain());
|
|
if (!invalid)
|
|
if (!invalid)
|
|
{
|
|
{
|
|
- Vec3<int> pos = zTarget->getPos();
|
|
|
|
|
|
+ Framework::Vec3<int> pos = zTarget->getPos();
|
|
int dimension = zTarget->getDimensionId();
|
|
int dimension = zTarget->getDimensionId();
|
|
Game::INSTANCE->doLater([pos, dimension, usedConfig]() {
|
|
Game::INSTANCE->doLater([pos, dimension, usedConfig]() {
|
|
Game::INSTANCE->zDimension(dimension)->placeBlock(
|
|
Game::INSTANCE->zDimension(dimension)->placeBlock(
|
|
@@ -865,94 +991,112 @@ bool BlockReplaceItemSkill::use(
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void BlockReplaceItemSkill::setInvalidUseConfig(
|
|
|
|
+ BlockReplaceItemSkillConfig* config)
|
|
|
|
+{
|
|
|
|
+ if (invalidUseConfig) invalidUseConfig->release();
|
|
|
|
+ invalidUseConfig = config;
|
|
|
|
+}
|
|
|
|
+
|
|
BlockReplaceItemSkillConfig* BlockReplaceItemSkill::zInvalidUseConfig() const
|
|
BlockReplaceItemSkillConfig* BlockReplaceItemSkill::zInvalidUseConfig() const
|
|
{
|
|
{
|
|
return invalidUseConfig;
|
|
return invalidUseConfig;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void BlockReplaceItemSkill::addConfig(BlockReplaceItemSkillConfig* config)
|
|
|
|
+{
|
|
|
|
+ configs.add(config);
|
|
|
|
+}
|
|
|
|
+
|
|
const Framework::RCArray<BlockReplaceItemSkillConfig>&
|
|
const Framework::RCArray<BlockReplaceItemSkillConfig>&
|
|
BlockReplaceItemSkill::getConfigs() const
|
|
BlockReplaceItemSkill::getConfigs() const
|
|
{
|
|
{
|
|
return configs;
|
|
return configs;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void BlockReplaceItemSkill::setCooldownTicks(int cooldownTicks)
|
|
|
|
+{
|
|
|
|
+ this->cooldownTicks = cooldownTicks;
|
|
|
|
+}
|
|
|
|
+
|
|
int BlockReplaceItemSkill::getCooldownTicks() const
|
|
int BlockReplaceItemSkill::getCooldownTicks() const
|
|
{
|
|
{
|
|
return cooldownTicks;
|
|
return cooldownTicks;
|
|
}
|
|
}
|
|
|
|
|
|
BlockReplaceItemSkillFactory::BlockReplaceItemSkillFactory()
|
|
BlockReplaceItemSkillFactory::BlockReplaceItemSkillFactory()
|
|
- : SubTypeFactory()
|
|
|
|
|
|
+ : ItemSkillFactoryBase()
|
|
{}
|
|
{}
|
|
|
|
|
|
-BlockReplaceItemSkill* BlockReplaceItemSkillFactory::fromJson(
|
|
|
|
|
|
+BlockReplaceItemSkill* BlockReplaceItemSkillFactory::createValue(
|
|
Framework::JSON::JSONObject* zJson) const
|
|
Framework::JSON::JSONObject* zJson) const
|
|
{
|
|
{
|
|
|
|
+ return new BlockReplaceItemSkill();
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+void BlockReplaceItemSkillFactory::fromJson(
|
|
|
|
+ BlockReplaceItemSkill* zResult, Framework::JSON::JSONObject* zJson) const
|
|
|
|
+{
|
|
|
|
+ BlockReplaceItemSkillConfig* invalidUseConfig
|
|
|
|
+ = new BlockReplaceItemSkillConfig();
|
|
|
|
+ invalidUseConfig->setStaminaCost(
|
|
|
|
+ (float)zJson->zValue("invalidStaminaCost")->asNumber()->getNumber());
|
|
|
|
+ invalidUseConfig->setStaminaCostDevider(
|
|
|
|
+ (float)zJson->zValue("invalidStaminaCostDevider")
|
|
|
|
+ ->asNumber()
|
|
|
|
+ ->getNumber());
|
|
|
|
+ invalidUseConfig->setAdditionalStaminaCostDeviderPerLevel(
|
|
|
|
+ (float)zJson->zValue("invalidAdditionalStaminaCostDeviderPerLevel")
|
|
|
|
+ ->asNumber()
|
|
|
|
+ ->getNumber());
|
|
|
|
+ invalidUseConfig->setDurabilityCost(
|
|
|
|
+ (float)zJson->zValue("invalidDurabilityCost")->asNumber()->getNumber());
|
|
|
|
+ invalidUseConfig->setDurabilityCostDevider(
|
|
|
|
+ (float)zJson->zValue("invalidDurabilityCostDevider")
|
|
|
|
+ ->asNumber()
|
|
|
|
+ ->getNumber());
|
|
|
|
+ invalidUseConfig->setAdditionalDurabilityCostDeviderPerLevel(
|
|
|
|
+ (float)zJson->zValue("invalidAdditionalDurabilityCostDeviderPerLevel")
|
|
|
|
+ ->asNumber()
|
|
|
|
+ ->getNumber());
|
|
|
|
+ invalidUseConfig->setCooldownTicks(
|
|
|
|
+ (int)zJson->zValue("invalidCooldownTicks")->asNumber()->getNumber());
|
|
|
|
+ invalidUseConfig->setXpGain(0.f);
|
|
|
|
+ zResult->setInvalidUseConfig(invalidUseConfig);
|
|
Framework::RCArray<BlockReplaceItemSkillConfig> configs;
|
|
Framework::RCArray<BlockReplaceItemSkillConfig> configs;
|
|
for (Framework::JSON::JSONValue* value :
|
|
for (Framework::JSON::JSONValue* value :
|
|
*zJson->zValue("configs")->asArray())
|
|
*zJson->zValue("configs")->asArray())
|
|
{
|
|
{
|
|
- configs.add(Game::INSTANCE->zTypeRegistry()
|
|
|
|
- ->fromJson<BlockReplaceItemSkillConfig>(value));
|
|
|
|
|
|
+ zResult->addConfig(Game::INSTANCE->zTypeRegistry()
|
|
|
|
+ ->fromJson<BlockReplaceItemSkillConfig>(value));
|
|
}
|
|
}
|
|
- return new BlockReplaceItemSkill(0,
|
|
|
|
- (float)zJson->zValue("maxXp")->asNumber()->getNumber(),
|
|
|
|
- 1,
|
|
|
|
- new BlockReplaceItemSkillConfig(0,
|
|
|
|
- 0,
|
|
|
|
- 0,
|
|
|
|
- (float)zJson->zValue("invalidStaminaCost")->asNumber()->getNumber(),
|
|
|
|
- (float)zJson->zValue("invalidStaminaCostDevider")
|
|
|
|
- ->asNumber()
|
|
|
|
- ->getNumber(),
|
|
|
|
- (float)zJson->zValue("invalidAdditionalStaminaCostDeviderPerLevel")
|
|
|
|
- ->asNumber()
|
|
|
|
- ->getNumber(),
|
|
|
|
- (float)zJson->zValue("invalidDurabilityCost")
|
|
|
|
- ->asNumber()
|
|
|
|
- ->getNumber(),
|
|
|
|
- (float)zJson->zValue("invalidDurabilityCostDevider")
|
|
|
|
- ->asNumber()
|
|
|
|
- ->getNumber(),
|
|
|
|
- (float)zJson
|
|
|
|
- ->zValue("invalidAdditionalDurabilityCostDeviderPerLevel")
|
|
|
|
- ->asNumber()
|
|
|
|
- ->getNumber(),
|
|
|
|
- 0.f),
|
|
|
|
- configs,
|
|
|
|
- (int)zJson->zValue("cooldownTicks")->asNumber()->getNumber());
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-Framework::JSON::JSONObject* BlockReplaceItemSkillFactory::toJson(
|
|
|
|
- BlockReplaceItemSkill* zObject) const
|
|
|
|
-{
|
|
|
|
- Framework::JSON::JSONObject* result = new Framework::JSON::JSONObject();
|
|
|
|
- result->addValue(
|
|
|
|
- "maxXp", new Framework::JSON::JSONNumber(zObject->getMaxXp()));
|
|
|
|
- result->addValue("invalidStaminaCost",
|
|
|
|
|
|
+ ItemSkillFactoryBase::fromJson(zResult, zJson);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+void BlockReplaceItemSkillFactory::toJson(
|
|
|
|
+ BlockReplaceItemSkill* zObject, Framework::JSON::JSONObject* zResult) const
|
|
|
|
+{
|
|
|
|
+ zResult->addValue("invalidStaminaCost",
|
|
new Framework::JSON::JSONNumber(
|
|
new Framework::JSON::JSONNumber(
|
|
zObject->zInvalidUseConfig()->getStaminaCost()));
|
|
zObject->zInvalidUseConfig()->getStaminaCost()));
|
|
- result->addValue("invalidStaminaCostDevider",
|
|
|
|
|
|
+ zResult->addValue("invalidStaminaCostDevider",
|
|
new Framework::JSON::JSONNumber(
|
|
new Framework::JSON::JSONNumber(
|
|
zObject->zInvalidUseConfig()->getStaminaCostDevider()));
|
|
zObject->zInvalidUseConfig()->getStaminaCostDevider()));
|
|
- result->addValue("invalidAdditionalStaminaCostDeviderPerLevel",
|
|
|
|
|
|
+ zResult->addValue("invalidAdditionalStaminaCostDeviderPerLevel",
|
|
new Framework::JSON::JSONNumber(
|
|
new Framework::JSON::JSONNumber(
|
|
zObject->zInvalidUseConfig()
|
|
zObject->zInvalidUseConfig()
|
|
->getAdditionalStaminaCostDeviderPerLevel()));
|
|
->getAdditionalStaminaCostDeviderPerLevel()));
|
|
- result->addValue("invalidDurabilityCost",
|
|
|
|
|
|
+ zResult->addValue("invalidDurabilityCost",
|
|
new Framework::JSON::JSONNumber(
|
|
new Framework::JSON::JSONNumber(
|
|
zObject->zInvalidUseConfig()->getDurabilityCost()));
|
|
zObject->zInvalidUseConfig()->getDurabilityCost()));
|
|
- result->addValue("invalidDurabilityCostDevider",
|
|
|
|
|
|
+ zResult->addValue("invalidDurabilityCostDevider",
|
|
new Framework::JSON::JSONNumber(
|
|
new Framework::JSON::JSONNumber(
|
|
zObject->zInvalidUseConfig()->getDurabilityCostDevider()));
|
|
zObject->zInvalidUseConfig()->getDurabilityCostDevider()));
|
|
- result->addValue("invalidAdditionalDurabilityCostDeviderPerLevel",
|
|
|
|
|
|
+ zResult->addValue("invalidAdditionalDurabilityCostDeviderPerLevel",
|
|
new Framework::JSON::JSONNumber(
|
|
new Framework::JSON::JSONNumber(
|
|
zObject->zInvalidUseConfig()
|
|
zObject->zInvalidUseConfig()
|
|
->getAdditionalDurabilityCostDeviderPerLevel()));
|
|
->getAdditionalDurabilityCostDeviderPerLevel()));
|
|
- result->addValue("invalidXpGain",
|
|
|
|
- new Framework::JSON::JSONNumber(
|
|
|
|
- zObject->zInvalidUseConfig()->getXpGain()));
|
|
|
|
- result->addValue("invalidCooldownTicks",
|
|
|
|
|
|
+ zResult->addValue("invalidCooldownTicks",
|
|
new Framework::JSON::JSONNumber(
|
|
new Framework::JSON::JSONNumber(
|
|
zObject->zInvalidUseConfig()->getCooldownTicks()));
|
|
zObject->zInvalidUseConfig()->getCooldownTicks()));
|
|
Framework::JSON::JSONArray* configs = new Framework::JSON::JSONArray();
|
|
Framework::JSON::JSONArray* configs = new Framework::JSON::JSONArray();
|
|
@@ -960,51 +1104,47 @@ Framework::JSON::JSONObject* BlockReplaceItemSkillFactory::toJson(
|
|
{
|
|
{
|
|
configs->addValue(Game::INSTANCE->zTypeRegistry()->toJson(config));
|
|
configs->addValue(Game::INSTANCE->zTypeRegistry()->toJson(config));
|
|
}
|
|
}
|
|
- result->addValue("configs", configs);
|
|
|
|
- result->addValue("cooldownTicks",
|
|
|
|
- new Framework::JSON::JSONNumber(zObject->getCooldownTicks()));
|
|
|
|
- return result;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-Framework::JSON::Validator::JSONValidator*
|
|
|
|
-BlockReplaceItemSkillFactory::getValidator(
|
|
|
|
- Framework::JSON::Validator::ObjectValidationBuilder<
|
|
|
|
- Framework::JSON::Validator::JSONValidator>* builder) const
|
|
|
|
-{
|
|
|
|
- return builder->withRequiredNumber("maxXp")
|
|
|
|
- ->whichIsGreaterThen(0.0)
|
|
|
|
- ->withDefault(10.0)
|
|
|
|
- ->finishNumber()
|
|
|
|
- ->withRequiredNumber("invalidStaminaCost")
|
|
|
|
- ->whichIsGreaterOrEqual(0.0)
|
|
|
|
- ->withDefault(0.5)
|
|
|
|
- ->finishNumber()
|
|
|
|
- ->withRequiredNumber("invalidStaminaCostDevider")
|
|
|
|
- ->whichIsGreaterOrEqual(0.0)
|
|
|
|
- ->withDefault(0.8)
|
|
|
|
- ->finishNumber()
|
|
|
|
- ->withRequiredNumber("invalidAdditionalStaminaCostDeviderPerLevel")
|
|
|
|
- ->whichIsGreaterOrEqual(0.0)
|
|
|
|
- ->withDefault(0.2)
|
|
|
|
- ->finishNumber()
|
|
|
|
- ->withRequiredNumber("invalidDurabilityCost")
|
|
|
|
- ->whichIsGreaterOrEqual(0.0)
|
|
|
|
- ->withDefault(0.5)
|
|
|
|
- ->finishNumber()
|
|
|
|
- ->withRequiredNumber("invalidDurabilityCostDevider")
|
|
|
|
- ->whichIsGreaterOrEqual(0.0)
|
|
|
|
- ->withDefault(0.98)
|
|
|
|
- ->finishNumber()
|
|
|
|
- ->withRequiredNumber("invalidAdditionalDurabilityCostDeviderPerLevel")
|
|
|
|
- ->whichIsGreaterOrEqual(0.0)
|
|
|
|
- ->withDefault(0.02)
|
|
|
|
- ->finishNumber()
|
|
|
|
- ->withRequiredArray("configs")
|
|
|
|
- ->addAcceptedTypeInArray(
|
|
|
|
- Game::INSTANCE->zTypeRegistry()
|
|
|
|
- ->getValidator<BlockReplaceItemSkillConfig>())
|
|
|
|
- ->finishArray()
|
|
|
|
- ->finishObject();
|
|
|
|
|
|
+ zResult->addValue("configs", configs);
|
|
|
|
+ ItemSkillFactoryBase::toJson(zObject, zResult);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+JSONObjectValidationBuilder* BlockReplaceItemSkillFactory::addToValidator(
|
|
|
|
+ JSONObjectValidationBuilder* builder) const
|
|
|
|
+{
|
|
|
|
+ return ItemSkillFactoryBase::addToValidator(
|
|
|
|
+ builder->withRequiredNumber("invalidStaminaCost")
|
|
|
|
+ ->whichIsGreaterOrEqual(0.0)
|
|
|
|
+ ->withDefault(0.5)
|
|
|
|
+ ->finishNumber()
|
|
|
|
+ ->withRequiredNumber("invalidStaminaCostDevider")
|
|
|
|
+ ->whichIsGreaterOrEqual(0.0)
|
|
|
|
+ ->withDefault(0.8)
|
|
|
|
+ ->finishNumber()
|
|
|
|
+ ->withRequiredNumber("invalidAdditionalStaminaCostDeviderPerLevel")
|
|
|
|
+ ->whichIsGreaterOrEqual(0.0)
|
|
|
|
+ ->withDefault(0.2)
|
|
|
|
+ ->finishNumber()
|
|
|
|
+ ->withRequiredNumber("invalidDurabilityCost")
|
|
|
|
+ ->whichIsGreaterOrEqual(0.0)
|
|
|
|
+ ->withDefault(0.5)
|
|
|
|
+ ->finishNumber()
|
|
|
|
+ ->withRequiredNumber("invalidDurabilityCostDevider")
|
|
|
|
+ ->whichIsGreaterOrEqual(0.0)
|
|
|
|
+ ->withDefault(0.98)
|
|
|
|
+ ->finishNumber()
|
|
|
|
+ ->withRequiredNumber(
|
|
|
|
+ "invalidAdditionalDurabilityCostDeviderPerLevel")
|
|
|
|
+ ->whichIsGreaterOrEqual(0.0)
|
|
|
|
+ ->withDefault(0.02)
|
|
|
|
+ ->finishNumber()
|
|
|
|
+ ->withRequiredNumber("invalidCooldownTicks")
|
|
|
|
+ ->withDefault(20)
|
|
|
|
+ ->finishNumber()
|
|
|
|
+ ->withRequiredArray("configs")
|
|
|
|
+ ->addAcceptedTypeInArray(
|
|
|
|
+ Game::INSTANCE->zTypeRegistry()
|
|
|
|
+ ->getValidator<BlockReplaceItemSkillConfig>())
|
|
|
|
+ ->finishArray());
|
|
}
|
|
}
|
|
|
|
|
|
Framework::Text BlockReplaceItemSkillFactory::getTypeToken() const
|
|
Framework::Text BlockReplaceItemSkillFactory::getTypeToken() const
|
|
@@ -1012,48 +1152,28 @@ Framework::Text BlockReplaceItemSkillFactory::getTypeToken() const
|
|
return "replaceBlock";
|
|
return "replaceBlock";
|
|
}
|
|
}
|
|
|
|
|
|
-DamagingItemSkillConfig::DamagingItemSkillConfig(BlockFilter* targetBlockFilter,
|
|
|
|
- float damage,
|
|
|
|
- float damagePerHeadHardness,
|
|
|
|
- float baseDamageMultiplier,
|
|
|
|
- float damageMupliplierPerHeadHardness,
|
|
|
|
- float damagePerLevel,
|
|
|
|
- float damageMultiplierPerLevel,
|
|
|
|
- float damageDevider,
|
|
|
|
- float damageDeviderPerHardness,
|
|
|
|
- float staminaCost,
|
|
|
|
- float staminaCostPerDamage,
|
|
|
|
- float staminaCostPerHardness,
|
|
|
|
- float staminaCostDevider,
|
|
|
|
- float staminaCostDeviderPerLevel,
|
|
|
|
- float durabilityCost,
|
|
|
|
- float durabilityCostPerDamage,
|
|
|
|
- float durabilityCostPerHardness,
|
|
|
|
- float durabilityCostDevider,
|
|
|
|
- float additionalDurabilityCostDeviderPerLevel,
|
|
|
|
- float xpGainPerDamage)
|
|
|
|
|
|
+DamagingItemSkillConfig::DamagingItemSkillConfig()
|
|
: ReferenceCounter(),
|
|
: ReferenceCounter(),
|
|
- targetBlockFilter(targetBlockFilter),
|
|
|
|
- damage(damage),
|
|
|
|
- damagePerHeadHardness(damagePerHeadHardness),
|
|
|
|
- baseDamageMultiplier(baseDamageMultiplier),
|
|
|
|
- damageMupliplierPerHeadHardness(damageMupliplierPerHeadHardness),
|
|
|
|
- damagePerLevel(damagePerLevel),
|
|
|
|
- damageMultiplierPerLevel(damageMultiplierPerLevel),
|
|
|
|
- damageDevider(damageDevider),
|
|
|
|
- damageDeviderPerHardness(damageDeviderPerHardness),
|
|
|
|
- staminaCost(staminaCost),
|
|
|
|
- staminaCostPerDamage(staminaCostPerDamage),
|
|
|
|
- staminaCostPerHardness(staminaCostPerHardness),
|
|
|
|
- staminaCostDevider(staminaCostDevider),
|
|
|
|
- staminaCostDeviderPerLevel(staminaCostDeviderPerLevel),
|
|
|
|
- durabilityCost(durabilityCost),
|
|
|
|
- durabilityCostPerDamage(durabilityCostPerDamage),
|
|
|
|
- durabilityCostPerHardness(durabilityCostPerHardness),
|
|
|
|
- durabilityCostDevider(durabilityCostDevider),
|
|
|
|
- additionalDurabilityCostDeviderPerLevel(
|
|
|
|
- additionalDurabilityCostDeviderPerLevel),
|
|
|
|
- xpGainPerDamage(xpGainPerDamage)
|
|
|
|
|
|
+ targetBlockFilter(0),
|
|
|
|
+ damage(2.f),
|
|
|
|
+ damagePerHeadHardness(1.f),
|
|
|
|
+ baseDamageMultiplier(1.f),
|
|
|
|
+ damageMultiplierPerHeadHardness(0.f),
|
|
|
|
+ damagePerLevel(0.3f),
|
|
|
|
+ damageMultiplierPerLevel(0.0f),
|
|
|
|
+ damageDevider(1.0f),
|
|
|
|
+ damageDeviderPerHardness(1.0f),
|
|
|
|
+ staminaCost(0.00001f),
|
|
|
|
+ staminaCostPerDamage(0.00001f),
|
|
|
|
+ staminaCostPerHardness(0.001f),
|
|
|
|
+ staminaCostDevider(0.9f),
|
|
|
|
+ staminaCostDeviderPerLevel(0.1f),
|
|
|
|
+ durabilityCost(0.1f),
|
|
|
|
+ durabilityCostPerDamage(0.01f),
|
|
|
|
+ durabilityCostPerHardness(0.01f),
|
|
|
|
+ durabilityCostDevider(0.8f),
|
|
|
|
+ additionalDurabilityCostDeviderPerLevel(0.2f),
|
|
|
|
+ xpGainPerDamage(0.05f)
|
|
{}
|
|
{}
|
|
|
|
|
|
DamagingItemSkillConfig::~DamagingItemSkillConfig()
|
|
DamagingItemSkillConfig::~DamagingItemSkillConfig()
|
|
@@ -1061,29 +1181,64 @@ DamagingItemSkillConfig::~DamagingItemSkillConfig()
|
|
if (targetBlockFilter) targetBlockFilter->release();
|
|
if (targetBlockFilter) targetBlockFilter->release();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void DamagingItemSkillConfig::setTargetBlockFilter(
|
|
|
|
+ BlockFilter* targetBlockFilter)
|
|
|
|
+{
|
|
|
|
+ if (this->targetBlockFilter) this->targetBlockFilter->release();
|
|
|
|
+ this->targetBlockFilter = targetBlockFilter;
|
|
|
|
+}
|
|
|
|
+
|
|
BlockFilter* DamagingItemSkillConfig::zTargetBlockFilter() const
|
|
BlockFilter* DamagingItemSkillConfig::zTargetBlockFilter() const
|
|
{
|
|
{
|
|
return targetBlockFilter;
|
|
return targetBlockFilter;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void DamagingItemSkillConfig::setDamage(float damage)
|
|
|
|
+{
|
|
|
|
+ this->damage = damage;
|
|
|
|
+}
|
|
|
|
+
|
|
float DamagingItemSkillConfig::getDamage() const
|
|
float DamagingItemSkillConfig::getDamage() const
|
|
{
|
|
{
|
|
return damage;
|
|
return damage;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void DamagingItemSkillConfig::setDamagePerHeadHardness(
|
|
|
|
+ float damagePerHeadHardness)
|
|
|
|
+{
|
|
|
|
+ this->damagePerHeadHardness = damagePerHeadHardness;
|
|
|
|
+}
|
|
|
|
+
|
|
float DamagingItemSkillConfig::getDamagePerHeadHardness() const
|
|
float DamagingItemSkillConfig::getDamagePerHeadHardness() const
|
|
{
|
|
{
|
|
return damageDeviderPerHardness;
|
|
return damageDeviderPerHardness;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void DamagingItemSkillConfig::setBaseDamageMultiplier(
|
|
|
|
+ float baseDamageMultiplier)
|
|
|
|
+{
|
|
|
|
+ this->baseDamageMultiplier = baseDamageMultiplier;
|
|
|
|
+}
|
|
|
|
+
|
|
float DamagingItemSkillConfig::getBaseDamageMultiplier() const
|
|
float DamagingItemSkillConfig::getBaseDamageMultiplier() const
|
|
{
|
|
{
|
|
return baseDamageMultiplier;
|
|
return baseDamageMultiplier;
|
|
}
|
|
}
|
|
|
|
|
|
-float DamagingItemSkillConfig::getDamageMupliplierPerHeadHardness() const
|
|
|
|
|
|
+void DamagingItemSkillConfig::setDamageMultiplierPerHeadHardness(
|
|
|
|
+ float damageMupliplierPerHeadHardness)
|
|
|
|
+{
|
|
|
|
+ this->damageMultiplierPerHeadHardness = damageMupliplierPerHeadHardness;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+float DamagingItemSkillConfig::getDamageMultiplierPerHeadHardness() const
|
|
|
|
+{
|
|
|
|
+ return damageMultiplierPerHeadHardness;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+void DamagingItemSkillConfig::setDamagePerLevel(float damagePerLevel)
|
|
{
|
|
{
|
|
- return damageMupliplierPerHeadHardness;
|
|
|
|
|
|
+ this->damagePerLevel = damagePerLevel;
|
|
}
|
|
}
|
|
|
|
|
|
float DamagingItemSkillConfig::getDamagePerLevel() const
|
|
float DamagingItemSkillConfig::getDamagePerLevel() const
|
|
@@ -1091,72 +1246,152 @@ float DamagingItemSkillConfig::getDamagePerLevel() const
|
|
return damagePerLevel;
|
|
return damagePerLevel;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void DamagingItemSkillConfig::setDamageMultiplierPerLevel(
|
|
|
|
+ float damageMultiplierPerLevel)
|
|
|
|
+{
|
|
|
|
+ this->damageMultiplierPerLevel = damageMultiplierPerLevel;
|
|
|
|
+}
|
|
|
|
+
|
|
float DamagingItemSkillConfig::getDamageMultiplierPerLevel() const
|
|
float DamagingItemSkillConfig::getDamageMultiplierPerLevel() const
|
|
{
|
|
{
|
|
return damageMultiplierPerLevel;
|
|
return damageMultiplierPerLevel;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void DamagingItemSkillConfig::setDamageDevider(float damageDevider)
|
|
|
|
+{
|
|
|
|
+ this->damageDevider = damageDevider;
|
|
|
|
+}
|
|
|
|
+
|
|
float DamagingItemSkillConfig::getDamageDevider() const
|
|
float DamagingItemSkillConfig::getDamageDevider() const
|
|
{
|
|
{
|
|
return damageDevider;
|
|
return damageDevider;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void DamagingItemSkillConfig::setDamageDeviderPerHardness(
|
|
|
|
+ float damageDeviderPerHardness)
|
|
|
|
+{
|
|
|
|
+ this->damageDeviderPerHardness = damageDeviderPerHardness;
|
|
|
|
+}
|
|
|
|
+
|
|
float DamagingItemSkillConfig::getDamageDeviderPerHardness() const
|
|
float DamagingItemSkillConfig::getDamageDeviderPerHardness() const
|
|
{
|
|
{
|
|
return damageDeviderPerHardness;
|
|
return damageDeviderPerHardness;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void DamagingItemSkillConfig::setStaminaCost(float staminaCost)
|
|
|
|
+{
|
|
|
|
+ this->staminaCost = staminaCost;
|
|
|
|
+}
|
|
|
|
+
|
|
float DamagingItemSkillConfig::getStaminaCost() const
|
|
float DamagingItemSkillConfig::getStaminaCost() const
|
|
{
|
|
{
|
|
return staminaCost;
|
|
return staminaCost;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void DamagingItemSkillConfig::setStaminaCostPerDamage(
|
|
|
|
+ float staminaCostPerDamage)
|
|
|
|
+{
|
|
|
|
+ this->staminaCostPerDamage = staminaCostPerDamage;
|
|
|
|
+}
|
|
|
|
+
|
|
float DamagingItemSkillConfig::getStaminaCostPerDamage() const
|
|
float DamagingItemSkillConfig::getStaminaCostPerDamage() const
|
|
{
|
|
{
|
|
return staminaCostPerDamage;
|
|
return staminaCostPerDamage;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void DamagingItemSkillConfig::setStaminaCostPerHardness(
|
|
|
|
+ float staminaCostPerHardness)
|
|
|
|
+{
|
|
|
|
+ this->staminaCostPerHardness = staminaCostPerHardness;
|
|
|
|
+}
|
|
|
|
+
|
|
float DamagingItemSkillConfig::getStaminaCostPerHardness() const
|
|
float DamagingItemSkillConfig::getStaminaCostPerHardness() const
|
|
{
|
|
{
|
|
return staminaCostPerHardness;
|
|
return staminaCostPerHardness;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void DamagingItemSkillConfig::setStaminaCostDevider(float staminaCostDevider)
|
|
|
|
+{
|
|
|
|
+ this->staminaCostDevider = staminaCostDevider;
|
|
|
|
+}
|
|
|
|
+
|
|
float DamagingItemSkillConfig::getStaminaCostDevider() const
|
|
float DamagingItemSkillConfig::getStaminaCostDevider() const
|
|
{
|
|
{
|
|
return staminaCostDevider;
|
|
return staminaCostDevider;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void DamagingItemSkillConfig::setStaminaCostDeviderPerLevel(
|
|
|
|
+ float staminaCostDeviderPerLevel)
|
|
|
|
+{
|
|
|
|
+ this->staminaCostDeviderPerLevel = staminaCostDeviderPerLevel;
|
|
|
|
+}
|
|
|
|
+
|
|
float DamagingItemSkillConfig::getStaminaCostDeviderPerLevel() const
|
|
float DamagingItemSkillConfig::getStaminaCostDeviderPerLevel() const
|
|
{
|
|
{
|
|
return staminaCostDeviderPerLevel;
|
|
return staminaCostDeviderPerLevel;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void DamagingItemSkillConfig::setDurabilityCost(float durabilityCost)
|
|
|
|
+{
|
|
|
|
+ this->durabilityCost = durabilityCost;
|
|
|
|
+}
|
|
|
|
+
|
|
float DamagingItemSkillConfig::getDurabilityCost() const
|
|
float DamagingItemSkillConfig::getDurabilityCost() const
|
|
{
|
|
{
|
|
return durabilityCost;
|
|
return durabilityCost;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void DamagingItemSkillConfig::setDurabilityCostPerDamage(
|
|
|
|
+ float durabilityCostPerDamage)
|
|
|
|
+{
|
|
|
|
+ this->durabilityCostPerDamage = durabilityCostPerDamage;
|
|
|
|
+}
|
|
|
|
+
|
|
float DamagingItemSkillConfig::getDurabilityCostPerDamage() const
|
|
float DamagingItemSkillConfig::getDurabilityCostPerDamage() const
|
|
{
|
|
{
|
|
return durabilityCostPerDamage;
|
|
return durabilityCostPerDamage;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void DamagingItemSkillConfig::setDurabilityCostPerHardness(
|
|
|
|
+ float durabilityCostPerHardness)
|
|
|
|
+{
|
|
|
|
+ this->durabilityCostPerHardness = durabilityCostPerHardness;
|
|
|
|
+}
|
|
|
|
+
|
|
float DamagingItemSkillConfig::getDurabilityCostPerHardness() const
|
|
float DamagingItemSkillConfig::getDurabilityCostPerHardness() const
|
|
{
|
|
{
|
|
return durabilityCostPerHardness;
|
|
return durabilityCostPerHardness;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void DamagingItemSkillConfig::setDurabilityCostDevider(
|
|
|
|
+ float durabilityCostDevider)
|
|
|
|
+{
|
|
|
|
+ this->durabilityCostDevider = durabilityCostDevider;
|
|
|
|
+}
|
|
|
|
+
|
|
float DamagingItemSkillConfig::getDurabilityCostDevider() const
|
|
float DamagingItemSkillConfig::getDurabilityCostDevider() const
|
|
{
|
|
{
|
|
return durabilityCostDevider;
|
|
return durabilityCostDevider;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void DamagingItemSkillConfig::setAdditionalDurabilityCostDeviderPerLevel(
|
|
|
|
+ float additionalDurabilityCostDeviderPerLevel)
|
|
|
|
+{
|
|
|
|
+ this->additionalDurabilityCostDeviderPerLevel
|
|
|
|
+ = additionalDurabilityCostDeviderPerLevel;
|
|
|
|
+}
|
|
|
|
+
|
|
float DamagingItemSkillConfig::getAdditionalDurabilityCostDeviderPerLevel()
|
|
float DamagingItemSkillConfig::getAdditionalDurabilityCostDeviderPerLevel()
|
|
const
|
|
const
|
|
{
|
|
{
|
|
return additionalDurabilityCostDeviderPerLevel;
|
|
return additionalDurabilityCostDeviderPerLevel;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void DamagingItemSkillConfig::setXpGainPerDamage(float xpGainPerDamage)
|
|
|
|
+{
|
|
|
|
+ this->xpGainPerDamage = xpGainPerDamage;
|
|
|
|
+}
|
|
|
|
+
|
|
float DamagingItemSkillConfig::getXpGainPerDamage() const
|
|
float DamagingItemSkillConfig::getXpGainPerDamage() const
|
|
{
|
|
{
|
|
return xpGainPerDamage;
|
|
return xpGainPerDamage;
|
|
@@ -1166,144 +1401,155 @@ DamagingItemSkillConfigFactory::DamagingItemSkillConfigFactory()
|
|
: TypeFactory()
|
|
: TypeFactory()
|
|
{}
|
|
{}
|
|
|
|
|
|
-DamagingItemSkillConfig* DamagingItemSkillConfigFactory::fromJson(
|
|
|
|
- Framework::JSON::JSONValue* zJson) const
|
|
|
|
|
|
+DamagingItemSkillConfig* DamagingItemSkillConfigFactory::createValue(
|
|
|
|
+ Framework::JSON::JSONObject* zJson) const
|
|
{
|
|
{
|
|
- return new DamagingItemSkillConfig(
|
|
|
|
|
|
+ return new DamagingItemSkillConfig();
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+void DamagingItemSkillConfigFactory::fromJson(
|
|
|
|
+ DamagingItemSkillConfig* zResult, Framework::JSON::JSONObject* zJson) const
|
|
|
|
+{
|
|
|
|
+ zResult->setTargetBlockFilter(
|
|
Game::INSTANCE->zTypeRegistry()->fromJson<BlockFilter>(
|
|
Game::INSTANCE->zTypeRegistry()->fromJson<BlockFilter>(
|
|
- zJson->asObject()->zValue("targetFilter")),
|
|
|
|
- (float)zJson->asObject()->zValue("damage")->asNumber()->getNumber(),
|
|
|
|
|
|
+ zJson->zValue("targetFilter")));
|
|
|
|
+ zResult->setDamage(
|
|
|
|
+ (float)zJson->asObject()->zValue("damage")->asNumber()->getNumber());
|
|
|
|
+ zResult->setDamagePerHeadHardness((float)zJson->asObject()
|
|
|
|
+ ->zValue("damagePerHeadHardness")
|
|
|
|
+ ->asNumber()
|
|
|
|
+ ->getNumber());
|
|
|
|
+ zResult->setBaseDamageMultiplier((float)zJson->asObject()
|
|
|
|
+ ->zValue("baseDamageMultiplier")
|
|
|
|
+ ->asNumber()
|
|
|
|
+ ->getNumber());
|
|
|
|
+ zResult->setDamageMultiplierPerHeadHardness(
|
|
(float)zJson->asObject()
|
|
(float)zJson->asObject()
|
|
- ->zValue("damagePerHeadHardness")
|
|
|
|
|
|
+ ->zValue("damageMultiplierPerHeadHardness")
|
|
->asNumber()
|
|
->asNumber()
|
|
- ->getNumber(),
|
|
|
|
- (float)zJson->asObject()
|
|
|
|
- ->zValue("baseDamageMultiplier")
|
|
|
|
- ->asNumber()
|
|
|
|
- ->getNumber(),
|
|
|
|
- (float)zJson->asObject()
|
|
|
|
- ->zValue("damageMupliplierPerHeadHardness")
|
|
|
|
- ->asNumber()
|
|
|
|
- ->getNumber(),
|
|
|
|
- (float)zJson->asObject()
|
|
|
|
- ->zValue("damagePerLevel")
|
|
|
|
- ->asNumber()
|
|
|
|
- ->getNumber(),
|
|
|
|
|
|
+ ->getNumber());
|
|
|
|
+ zResult->setDamagePerLevel((float)zJson->asObject()
|
|
|
|
+ ->zValue("damagePerLevel")
|
|
|
|
+ ->asNumber()
|
|
|
|
+ ->getNumber());
|
|
|
|
+ zResult->setDamageMultiplierPerLevel(
|
|
(float)zJson->asObject()
|
|
(float)zJson->asObject()
|
|
->zValue("damageMultiplierPerLevel")
|
|
->zValue("damageMultiplierPerLevel")
|
|
->asNumber()
|
|
->asNumber()
|
|
- ->getNumber(),
|
|
|
|
- (float)zJson->asObject()
|
|
|
|
- ->zValue("damageDevider")
|
|
|
|
- ->asNumber()
|
|
|
|
- ->getNumber(),
|
|
|
|
|
|
+ ->getNumber());
|
|
|
|
+ zResult->setDamageDevider((float)zJson->asObject()
|
|
|
|
+ ->zValue("damageDevider")
|
|
|
|
+ ->asNumber()
|
|
|
|
+ ->getNumber());
|
|
|
|
+ zResult->setDamageDeviderPerHardness(
|
|
(float)zJson->asObject()
|
|
(float)zJson->asObject()
|
|
->zValue("damageDeviderPerHardness")
|
|
->zValue("damageDeviderPerHardness")
|
|
->asNumber()
|
|
->asNumber()
|
|
- ->getNumber(),
|
|
|
|
- (float)zJson->asObject()
|
|
|
|
- ->zValue("staminaCost")
|
|
|
|
- ->asNumber()
|
|
|
|
- ->getNumber(),
|
|
|
|
- (float)zJson->asObject()
|
|
|
|
- ->zValue("staminaCostPerDamage")
|
|
|
|
- ->asNumber()
|
|
|
|
- ->getNumber(),
|
|
|
|
- (float)zJson->asObject()
|
|
|
|
- ->zValue("staminaCostPerHardness")
|
|
|
|
- ->asNumber()
|
|
|
|
- ->getNumber(),
|
|
|
|
- (float)zJson->asObject()
|
|
|
|
- ->zValue("staminaCostDevider")
|
|
|
|
- ->asNumber()
|
|
|
|
- ->getNumber(),
|
|
|
|
|
|
+ ->getNumber());
|
|
|
|
+ zResult->setStaminaCost((float)zJson->asObject()
|
|
|
|
+ ->zValue("staminaCost")
|
|
|
|
+ ->asNumber()
|
|
|
|
+ ->getNumber());
|
|
|
|
+ zResult->setStaminaCostPerDamage((float)zJson->asObject()
|
|
|
|
+ ->zValue("staminaCostPerDamage")
|
|
|
|
+ ->asNumber()
|
|
|
|
+ ->getNumber());
|
|
|
|
+ zResult->setStaminaCostPerHardness((float)zJson->asObject()
|
|
|
|
+ ->zValue("staminaCostPerHardness")
|
|
|
|
+ ->asNumber()
|
|
|
|
+ ->getNumber());
|
|
|
|
+ zResult->setStaminaCostDevider((float)zJson->asObject()
|
|
|
|
+ ->zValue("staminaCostDevider")
|
|
|
|
+ ->asNumber()
|
|
|
|
+ ->getNumber());
|
|
|
|
+ zResult->setStaminaCostDeviderPerLevel(
|
|
(float)zJson->asObject()
|
|
(float)zJson->asObject()
|
|
->zValue("staminaCostDeviderPerLevel")
|
|
->zValue("staminaCostDeviderPerLevel")
|
|
->asNumber()
|
|
->asNumber()
|
|
- ->getNumber(),
|
|
|
|
- (float)zJson->asObject()
|
|
|
|
- ->zValue("durabilityCost")
|
|
|
|
- ->asNumber()
|
|
|
|
- ->getNumber(),
|
|
|
|
- (float)zJson->asObject()
|
|
|
|
- ->zValue("durabilityCostPerDamage")
|
|
|
|
- ->asNumber()
|
|
|
|
- ->getNumber(),
|
|
|
|
|
|
+ ->getNumber());
|
|
|
|
+ zResult->setDurabilityCost((float)zJson->asObject()
|
|
|
|
+ ->zValue("durabilityCost")
|
|
|
|
+ ->asNumber()
|
|
|
|
+ ->getNumber());
|
|
|
|
+ zResult->setDurabilityCostPerDamage((float)zJson->asObject()
|
|
|
|
+ ->zValue("durabilityCostPerDamage")
|
|
|
|
+ ->asNumber()
|
|
|
|
+ ->getNumber());
|
|
|
|
+ zResult->setDurabilityCostPerHardness(
|
|
(float)zJson->asObject()
|
|
(float)zJson->asObject()
|
|
->zValue("durabilityCostPerHardness")
|
|
->zValue("durabilityCostPerHardness")
|
|
->asNumber()
|
|
->asNumber()
|
|
- ->getNumber(),
|
|
|
|
- (float)zJson->asObject()
|
|
|
|
- ->zValue("durabilityCostDevider")
|
|
|
|
- ->asNumber()
|
|
|
|
- ->getNumber(),
|
|
|
|
|
|
+ ->getNumber());
|
|
|
|
+ zResult->setDurabilityCostDevider((float)zJson->asObject()
|
|
|
|
+ ->zValue("durabilityCostDevider")
|
|
|
|
+ ->asNumber()
|
|
|
|
+ ->getNumber());
|
|
|
|
+ zResult->setAdditionalDurabilityCostDeviderPerLevel(
|
|
(float)zJson->asObject()
|
|
(float)zJson->asObject()
|
|
->zValue("additionalDurabilityCostDeviderPerLevel")
|
|
->zValue("additionalDurabilityCostDeviderPerLevel")
|
|
->asNumber()
|
|
->asNumber()
|
|
- ->getNumber(),
|
|
|
|
- (float)zJson->asObject()
|
|
|
|
- ->zValue("xpGainPerDamage")
|
|
|
|
- ->asNumber()
|
|
|
|
->getNumber());
|
|
->getNumber());
|
|
|
|
+ zResult->setXpGainPerDamage((float)zJson->asObject()
|
|
|
|
+ ->zValue("xpGainPerDamage")
|
|
|
|
+ ->asNumber()
|
|
|
|
+ ->getNumber());
|
|
}
|
|
}
|
|
|
|
|
|
-Framework::JSON::JSONValue* DamagingItemSkillConfigFactory::toJson(
|
|
|
|
- DamagingItemSkillConfig* zObject) const
|
|
|
|
|
|
+void DamagingItemSkillConfigFactory::toJson(DamagingItemSkillConfig* zObject,
|
|
|
|
+ Framework::JSON::JSONObject* zResult) const
|
|
{
|
|
{
|
|
- Framework::JSON::JSONObject* result = new Framework::JSON::JSONObject();
|
|
|
|
- result->addValue("targetFilter",
|
|
|
|
|
|
+ zResult->addValue("targetFilter",
|
|
Game::INSTANCE->zTypeRegistry()->toJson(zObject->zTargetBlockFilter()));
|
|
Game::INSTANCE->zTypeRegistry()->toJson(zObject->zTargetBlockFilter()));
|
|
- result->addValue(
|
|
|
|
|
|
+ zResult->addValue(
|
|
"damage", new Framework::JSON::JSONNumber(zObject->getDamage()));
|
|
"damage", new Framework::JSON::JSONNumber(zObject->getDamage()));
|
|
- result->addValue("damagePerHeadHardness",
|
|
|
|
|
|
+ zResult->addValue("damagePerHeadHardness",
|
|
new Framework::JSON::JSONNumber(zObject->getDamagePerHeadHardness()));
|
|
new Framework::JSON::JSONNumber(zObject->getDamagePerHeadHardness()));
|
|
- result->addValue("baseDamageMultiplier",
|
|
|
|
|
|
+ zResult->addValue("baseDamageMultiplier",
|
|
new Framework::JSON::JSONNumber(zObject->getBaseDamageMultiplier()));
|
|
new Framework::JSON::JSONNumber(zObject->getBaseDamageMultiplier()));
|
|
- result->addValue("damageMupliplierPerHeadHardness",
|
|
|
|
|
|
+ zResult->addValue("damageMultiplierPerHeadHardness",
|
|
new Framework::JSON::JSONNumber(
|
|
new Framework::JSON::JSONNumber(
|
|
- zObject->getDamageMupliplierPerHeadHardness()));
|
|
|
|
- result->addValue("damagePerLevel",
|
|
|
|
|
|
+ zObject->getDamageMultiplierPerHeadHardness()));
|
|
|
|
+ zResult->addValue("damagePerLevel",
|
|
new Framework::JSON::JSONNumber(zObject->getDamagePerLevel()));
|
|
new Framework::JSON::JSONNumber(zObject->getDamagePerLevel()));
|
|
- result->addValue("damageMultiplierPerLevel",
|
|
|
|
|
|
+ zResult->addValue("damageMultiplierPerLevel",
|
|
new Framework::JSON::JSONNumber(
|
|
new Framework::JSON::JSONNumber(
|
|
zObject->getDamageMultiplierPerLevel()));
|
|
zObject->getDamageMultiplierPerLevel()));
|
|
- result->addValue("damageDevider",
|
|
|
|
|
|
+ zResult->addValue("damageDevider",
|
|
new Framework::JSON::JSONNumber(zObject->getDamageDevider()));
|
|
new Framework::JSON::JSONNumber(zObject->getDamageDevider()));
|
|
- result->addValue("damageDeviderPerHardness",
|
|
|
|
|
|
+ zResult->addValue("damageDeviderPerHardness",
|
|
new Framework::JSON::JSONNumber(
|
|
new Framework::JSON::JSONNumber(
|
|
zObject->getDamageDeviderPerHardness()));
|
|
zObject->getDamageDeviderPerHardness()));
|
|
- result->addValue("staminaCost",
|
|
|
|
|
|
+ zResult->addValue("staminaCost",
|
|
new Framework::JSON::JSONNumber(zObject->getStaminaCost()));
|
|
new Framework::JSON::JSONNumber(zObject->getStaminaCost()));
|
|
- result->addValue("staminaCostPerDamage",
|
|
|
|
|
|
+ zResult->addValue("staminaCostPerDamage",
|
|
new Framework::JSON::JSONNumber(zObject->getStaminaCostPerDamage()));
|
|
new Framework::JSON::JSONNumber(zObject->getStaminaCostPerDamage()));
|
|
- result->addValue("staminaCostPerHardness",
|
|
|
|
|
|
+ zResult->addValue("staminaCostPerHardness",
|
|
new Framework::JSON::JSONNumber(zObject->getStaminaCostPerHardness()));
|
|
new Framework::JSON::JSONNumber(zObject->getStaminaCostPerHardness()));
|
|
- result->addValue("staminaCostDevider",
|
|
|
|
|
|
+ zResult->addValue("staminaCostDevider",
|
|
new Framework::JSON::JSONNumber(zObject->getStaminaCostDevider()));
|
|
new Framework::JSON::JSONNumber(zObject->getStaminaCostDevider()));
|
|
- result->addValue("staminaCostDeviderPerLevel",
|
|
|
|
|
|
+ zResult->addValue("staminaCostDeviderPerLevel",
|
|
new Framework::JSON::JSONNumber(
|
|
new Framework::JSON::JSONNumber(
|
|
zObject->getStaminaCostDeviderPerLevel()));
|
|
zObject->getStaminaCostDeviderPerLevel()));
|
|
- result->addValue("durabilityCost",
|
|
|
|
|
|
+ zResult->addValue("durabilityCost",
|
|
new Framework::JSON::JSONNumber(zObject->getDurabilityCost()));
|
|
new Framework::JSON::JSONNumber(zObject->getDurabilityCost()));
|
|
- result->addValue("durabilityCostPerDamage",
|
|
|
|
|
|
+ zResult->addValue("durabilityCostPerDamage",
|
|
new Framework::JSON::JSONNumber(zObject->getDurabilityCostPerDamage()));
|
|
new Framework::JSON::JSONNumber(zObject->getDurabilityCostPerDamage()));
|
|
- result->addValue("durabilityCostPerHardness",
|
|
|
|
|
|
+ zResult->addValue("durabilityCostPerHardness",
|
|
new Framework::JSON::JSONNumber(
|
|
new Framework::JSON::JSONNumber(
|
|
zObject->getDurabilityCostPerHardness()));
|
|
zObject->getDurabilityCostPerHardness()));
|
|
- result->addValue("durabilityCostDevider",
|
|
|
|
|
|
+ zResult->addValue("durabilityCostDevider",
|
|
new Framework::JSON::JSONNumber(zObject->getDurabilityCostDevider()));
|
|
new Framework::JSON::JSONNumber(zObject->getDurabilityCostDevider()));
|
|
- result->addValue("additionalDurabilityCostDeviderPerLevel",
|
|
|
|
|
|
+ zResult->addValue("additionalDurabilityCostDeviderPerLevel",
|
|
new Framework::JSON::JSONNumber(
|
|
new Framework::JSON::JSONNumber(
|
|
zObject->getAdditionalDurabilityCostDeviderPerLevel()));
|
|
zObject->getAdditionalDurabilityCostDeviderPerLevel()));
|
|
- result->addValue("xpGainPerDamage",
|
|
|
|
|
|
+ zResult->addValue("xpGainPerDamage",
|
|
new Framework::JSON::JSONNumber(zObject->getXpGainPerDamage()));
|
|
new Framework::JSON::JSONNumber(zObject->getXpGainPerDamage()));
|
|
- return result;
|
|
|
|
}
|
|
}
|
|
|
|
|
|
-Framework::JSON::Validator::JSONValidator*
|
|
|
|
-DamagingItemSkillConfigFactory::getValidator() const
|
|
|
|
|
|
+JSONObjectValidationBuilder* DamagingItemSkillConfigFactory::addToValidator(
|
|
|
|
+ JSONObjectValidationBuilder* builder) const
|
|
{
|
|
{
|
|
- return Framework::JSON::Validator::JSONValidator::buildForObject()
|
|
|
|
|
|
+ return builder
|
|
->withRequiredAttribute("targetFilter",
|
|
->withRequiredAttribute("targetFilter",
|
|
Game::INSTANCE->zTypeRegistry()->getValidator<BlockFilter>())
|
|
Game::INSTANCE->zTypeRegistry()->getValidator<BlockFilter>())
|
|
->withRequiredNumber("damage")
|
|
->withRequiredNumber("damage")
|
|
@@ -1318,7 +1564,7 @@ DamagingItemSkillConfigFactory::getValidator() const
|
|
->whichIsGreaterOrEqual(0.0)
|
|
->whichIsGreaterOrEqual(0.0)
|
|
->withDefault(1.0)
|
|
->withDefault(1.0)
|
|
->finishNumber()
|
|
->finishNumber()
|
|
- ->withRequiredNumber("damageMupliplierPerHeadHardness")
|
|
|
|
|
|
+ ->withRequiredNumber("damageMultiplierPerHeadHardness")
|
|
->whichIsGreaterOrEqual(0.0)
|
|
->whichIsGreaterOrEqual(0.0)
|
|
->withDefault(0.0)
|
|
->withDefault(0.0)
|
|
->finishNumber()
|
|
->finishNumber()
|
|
@@ -1381,18 +1627,19 @@ DamagingItemSkillConfigFactory::getValidator() const
|
|
->withRequiredNumber("xpGainPerDamage")
|
|
->withRequiredNumber("xpGainPerDamage")
|
|
->whichIsGreaterOrEqual(0.0)
|
|
->whichIsGreaterOrEqual(0.0)
|
|
->withDefault(0.05)
|
|
->withDefault(0.05)
|
|
- ->finishNumber()
|
|
|
|
- ->finishObject();
|
|
|
|
|
|
+ ->finishNumber();
|
|
}
|
|
}
|
|
|
|
|
|
-DamagingItemSkill::DamagingItemSkill(float xp,
|
|
|
|
- float maxXp,
|
|
|
|
- float level,
|
|
|
|
- DamagingItemSkillConfig* invalidUseConfig,
|
|
|
|
- Framework::RCArray<DamagingItemSkillConfig> configs)
|
|
|
|
- : ItemSkill(xp, maxXp, level)
|
|
|
|
|
|
+DamagingItemSkill::DamagingItemSkill()
|
|
|
|
+ : ItemSkill(),
|
|
|
|
+ invalidUseConfig(0)
|
|
{}
|
|
{}
|
|
|
|
|
|
|
|
+DamagingItemSkill::~DamagingItemSkill()
|
|
|
|
+{
|
|
|
|
+ if (invalidUseConfig) invalidUseConfig->release();
|
|
|
|
+}
|
|
|
|
+
|
|
bool DamagingItemSkill::use(Entity* zActor, Item* zUsedItem, Block* zTarget)
|
|
bool DamagingItemSkill::use(Entity* zActor, Item* zUsedItem, Block* zTarget)
|
|
{
|
|
{
|
|
BasicToolItem* tool = dynamic_cast<BasicToolItem*>(zUsedItem);
|
|
BasicToolItem* tool = dynamic_cast<BasicToolItem*>(zUsedItem);
|
|
@@ -1418,7 +1665,7 @@ bool DamagingItemSkill::use(Entity* zActor, Item* zUsedItem, Block* zTarget)
|
|
float damageMultiplier
|
|
float damageMultiplier
|
|
= usedConfig->getBaseDamageMultiplier()
|
|
= usedConfig->getBaseDamageMultiplier()
|
|
+ usedConfig->getDamageMultiplierPerLevel() * getLevel()
|
|
+ usedConfig->getDamageMultiplierPerLevel() * getLevel()
|
|
- + usedConfig->getDamageMupliplierPerHeadHardness()
|
|
|
|
|
|
+ + usedConfig->getDamageMultiplierPerHeadHardness()
|
|
* (tool ? tool->getHeadMaterialHardness() : 0);
|
|
* (tool ? tool->getHeadMaterialHardness() : 0);
|
|
if (damageMultiplier != 0)
|
|
if (damageMultiplier != 0)
|
|
{
|
|
{
|
|
@@ -1469,11 +1716,22 @@ bool DamagingItemSkill::use(Entity* zActor, Item* zUsedItem, Entity* zTarget)
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void DamagingItemSkill::setInvalidUseConfig(DamagingItemSkillConfig* config)
|
|
|
|
+{
|
|
|
|
+ if (invalidUseConfig) invalidUseConfig->release();
|
|
|
|
+ invalidUseConfig = config;
|
|
|
|
+}
|
|
|
|
+
|
|
DamagingItemSkillConfig* DamagingItemSkill::zInvalidUseConfig() const
|
|
DamagingItemSkillConfig* DamagingItemSkill::zInvalidUseConfig() const
|
|
{
|
|
{
|
|
return invalidUseConfig;
|
|
return invalidUseConfig;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void DamagingItemSkill::addConfig(DamagingItemSkillConfig* config)
|
|
|
|
+{
|
|
|
|
+ configs.add(config);
|
|
|
|
+}
|
|
|
|
+
|
|
const Framework::RCArray<DamagingItemSkillConfig>&
|
|
const Framework::RCArray<DamagingItemSkillConfig>&
|
|
DamagingItemSkill::getConfigs() const
|
|
DamagingItemSkill::getConfigs() const
|
|
{
|
|
{
|
|
@@ -1481,88 +1739,94 @@ DamagingItemSkill::getConfigs() const
|
|
}
|
|
}
|
|
|
|
|
|
DamagingItemSkillFactory::DamagingItemSkillFactory()
|
|
DamagingItemSkillFactory::DamagingItemSkillFactory()
|
|
- : SubTypeFactory()
|
|
|
|
|
|
+ : ItemSkillFactoryBase()
|
|
{}
|
|
{}
|
|
|
|
|
|
-DamagingItemSkill* DamagingItemSkillFactory::fromJson(
|
|
|
|
|
|
+DamagingItemSkill* DamagingItemSkillFactory::createValue(
|
|
Framework::JSON::JSONObject* zJson) const
|
|
Framework::JSON::JSONObject* zJson) const
|
|
{
|
|
{
|
|
- Framework::RCArray<DamagingItemSkillConfig> configs;
|
|
|
|
|
|
+ return new DamagingItemSkill();
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+void DamagingItemSkillFactory::fromJson(
|
|
|
|
+ DamagingItemSkill* zResult, Framework::JSON::JSONObject* zJson) const
|
|
|
|
+{
|
|
for (Framework::JSON::JSONValue* configValue :
|
|
for (Framework::JSON::JSONValue* configValue :
|
|
*zJson->zValue("configs")->asArray())
|
|
*zJson->zValue("configs")->asArray())
|
|
{
|
|
{
|
|
- configs.add(
|
|
|
|
|
|
+ zResult->addConfig(
|
|
Game::INSTANCE->zTypeRegistry()->fromJson<DamagingItemSkillConfig>(
|
|
Game::INSTANCE->zTypeRegistry()->fromJson<DamagingItemSkillConfig>(
|
|
configValue));
|
|
configValue));
|
|
}
|
|
}
|
|
- return new DamagingItemSkill(0.f,
|
|
|
|
- (float)zJson->zValue("maxXp")->asNumber()->getNumber(),
|
|
|
|
- 1.f,
|
|
|
|
- new DamagingItemSkillConfig(0,
|
|
|
|
- 0.f,
|
|
|
|
- 0.f,
|
|
|
|
- 0.f,
|
|
|
|
- 0.f,
|
|
|
|
- 0.f,
|
|
|
|
- 0.f,
|
|
|
|
- 1.f,
|
|
|
|
- 0.f,
|
|
|
|
- (float)zJson->zValue("invalidStaminaCost")->asNumber()->getNumber(),
|
|
|
|
- 0.f,
|
|
|
|
- (float)zJson->zValue("invalidStaminaCostPerHardness")
|
|
|
|
- ->asNumber()
|
|
|
|
- ->getNumber(),
|
|
|
|
- (float)zJson->zValue("invalidStaminaCostDevider")
|
|
|
|
- ->asNumber()
|
|
|
|
- ->getNumber(),
|
|
|
|
- (float)zJson->zValue("invalidStaminaCostDeviderPerLevel")
|
|
|
|
- ->asNumber()
|
|
|
|
- ->getNumber(),
|
|
|
|
- (float)zJson->zValue("invalidDurabilityCost")
|
|
|
|
- ->asNumber()
|
|
|
|
- ->getNumber(),
|
|
|
|
- 0.f,
|
|
|
|
- (float)zJson->zValue("invalidDurabilityCostPerHardness")
|
|
|
|
- ->asNumber()
|
|
|
|
- ->getNumber(),
|
|
|
|
- (float)zJson->zValue("invalidDurabilityCostDevider")
|
|
|
|
- ->asNumber()
|
|
|
|
- ->getNumber(),
|
|
|
|
- (float)zJson->zValue("invalidDurabilityCostDeviderPerLevel")
|
|
|
|
- ->asNumber()
|
|
|
|
- ->getNumber(),
|
|
|
|
- 0.f),
|
|
|
|
- configs);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-Framework::JSON::JSONObject* DamagingItemSkillFactory::toJson(
|
|
|
|
- DamagingItemSkill* zObject) const
|
|
|
|
-{
|
|
|
|
- Framework::JSON::JSONObject* result = new Framework::JSON::JSONObject();
|
|
|
|
- result->addValue(
|
|
|
|
|
|
+ DamagingItemSkillConfig* invalidUseConfig = new DamagingItemSkillConfig();
|
|
|
|
+ invalidUseConfig->setDamage(0.f);
|
|
|
|
+ invalidUseConfig->setDamageDeviderPerHardness(0.f);
|
|
|
|
+ invalidUseConfig->setBaseDamageMultiplier(0.f);
|
|
|
|
+ invalidUseConfig->setDamageMultiplierPerHeadHardness(0.f);
|
|
|
|
+ invalidUseConfig->setDamagePerLevel(0.f);
|
|
|
|
+ invalidUseConfig->setDamageMultiplierPerLevel(0.f);
|
|
|
|
+ invalidUseConfig->setDamageDevider(1.f);
|
|
|
|
+ invalidUseConfig->setDamageDeviderPerHardness(0.f);
|
|
|
|
+ invalidUseConfig->setStaminaCost(
|
|
|
|
+ (float)zJson->zValue("invalidStaminaCost")->asNumber()->getNumber());
|
|
|
|
+ invalidUseConfig->setStaminaCostPerDamage(0.f);
|
|
|
|
+ invalidUseConfig->setStaminaCostPerHardness(
|
|
|
|
+ (float)zJson->zValue("invalidStaminaCostPerHardness")
|
|
|
|
+ ->asNumber()
|
|
|
|
+ ->getNumber());
|
|
|
|
+ invalidUseConfig->setStaminaCostDevider(
|
|
|
|
+ (float)zJson->zValue("invalidStaminaCostDevider")
|
|
|
|
+ ->asNumber()
|
|
|
|
+ ->getNumber());
|
|
|
|
+ invalidUseConfig->setStaminaCostDeviderPerLevel(
|
|
|
|
+ (float)zJson->zValue("invalidStaminaCostDeviderPerLevel")
|
|
|
|
+ ->asNumber()
|
|
|
|
+ ->getNumber());
|
|
|
|
+ invalidUseConfig->setDurabilityCost(
|
|
|
|
+ (float)zJson->zValue("invalidDurabilityCost")->asNumber()->getNumber());
|
|
|
|
+ invalidUseConfig->setDurabilityCostPerHardness(
|
|
|
|
+ (float)zJson->zValue("invalidDurabilityCostPerHardness")
|
|
|
|
+ ->asNumber()
|
|
|
|
+ ->getNumber());
|
|
|
|
+ invalidUseConfig->setDurabilityCostDevider(
|
|
|
|
+ (float)zJson->zValue("invalidDurabilityCostDevider")
|
|
|
|
+ ->asNumber()
|
|
|
|
+ ->getNumber());
|
|
|
|
+ invalidUseConfig->setAdditionalDurabilityCostDeviderPerLevel(
|
|
|
|
+ (float)zJson->zValue("invalidDurabilityCostDeviderPerLevel")
|
|
|
|
+ ->asNumber()
|
|
|
|
+ ->getNumber());
|
|
|
|
+ zResult->setInvalidUseConfig(invalidUseConfig);
|
|
|
|
+ ItemSkillFactoryBase::fromJson(zResult, zJson);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+void DamagingItemSkillFactory::toJson(
|
|
|
|
+ DamagingItemSkill* zObject, Framework::JSON::JSONObject* zResult) const
|
|
|
|
+{
|
|
|
|
+ zResult->addValue(
|
|
"maxXp", new Framework::JSON::JSONNumber(zObject->getMaxXp()));
|
|
"maxXp", new Framework::JSON::JSONNumber(zObject->getMaxXp()));
|
|
- result->addValue("invalidStaminaCost",
|
|
|
|
|
|
+ zResult->addValue("invalidStaminaCost",
|
|
new Framework::JSON::JSONNumber(
|
|
new Framework::JSON::JSONNumber(
|
|
zObject->zInvalidUseConfig()->getStaminaCost()));
|
|
zObject->zInvalidUseConfig()->getStaminaCost()));
|
|
- result->addValue("invalidStaminaCostPerHardness",
|
|
|
|
|
|
+ zResult->addValue("invalidStaminaCostPerHardness",
|
|
new Framework::JSON::JSONNumber(
|
|
new Framework::JSON::JSONNumber(
|
|
zObject->zInvalidUseConfig()->getStaminaCostPerHardness()));
|
|
zObject->zInvalidUseConfig()->getStaminaCostPerHardness()));
|
|
- result->addValue("invalidStaminaCostDevider",
|
|
|
|
|
|
+ zResult->addValue("invalidStaminaCostDevider",
|
|
new Framework::JSON::JSONNumber(
|
|
new Framework::JSON::JSONNumber(
|
|
zObject->zInvalidUseConfig()->getStaminaCostDevider()));
|
|
zObject->zInvalidUseConfig()->getStaminaCostDevider()));
|
|
- result->addValue("invalidStaminaCostDeviderPerLevel",
|
|
|
|
|
|
+ zResult->addValue("invalidStaminaCostDeviderPerLevel",
|
|
new Framework::JSON::JSONNumber(
|
|
new Framework::JSON::JSONNumber(
|
|
zObject->zInvalidUseConfig()->getStaminaCostDeviderPerLevel()));
|
|
zObject->zInvalidUseConfig()->getStaminaCostDeviderPerLevel()));
|
|
- result->addValue("invalidDurabilityCost",
|
|
|
|
|
|
+ zResult->addValue("invalidDurabilityCost",
|
|
new Framework::JSON::JSONNumber(
|
|
new Framework::JSON::JSONNumber(
|
|
zObject->zInvalidUseConfig()->getDurabilityCost()));
|
|
zObject->zInvalidUseConfig()->getDurabilityCost()));
|
|
- result->addValue("invalidDurabilityCostPerHardness",
|
|
|
|
|
|
+ zResult->addValue("invalidDurabilityCostPerHardness",
|
|
new Framework::JSON::JSONNumber(
|
|
new Framework::JSON::JSONNumber(
|
|
zObject->zInvalidUseConfig()->getDurabilityCostPerHardness()));
|
|
zObject->zInvalidUseConfig()->getDurabilityCostPerHardness()));
|
|
- result->addValue("invalidDurabilityCostDevider",
|
|
|
|
|
|
+ zResult->addValue("invalidDurabilityCostDevider",
|
|
new Framework::JSON::JSONNumber(
|
|
new Framework::JSON::JSONNumber(
|
|
zObject->zInvalidUseConfig()->getDurabilityCostDevider()));
|
|
zObject->zInvalidUseConfig()->getDurabilityCostDevider()));
|
|
- result->addValue("invalidDurabilityCostDeviderPerLevel",
|
|
|
|
|
|
+ zResult->addValue("invalidDurabilityCostDeviderPerLevel",
|
|
new Framework::JSON::JSONNumber(
|
|
new Framework::JSON::JSONNumber(
|
|
zObject->zInvalidUseConfig()
|
|
zObject->zInvalidUseConfig()
|
|
->getAdditionalDurabilityCostDeviderPerLevel()));
|
|
->getAdditionalDurabilityCostDeviderPerLevel()));
|
|
@@ -1571,56 +1835,52 @@ Framework::JSON::JSONObject* DamagingItemSkillFactory::toJson(
|
|
{
|
|
{
|
|
configs->addValue(Game::INSTANCE->zTypeRegistry()->toJson(config));
|
|
configs->addValue(Game::INSTANCE->zTypeRegistry()->toJson(config));
|
|
}
|
|
}
|
|
- result->addValue("configs", configs);
|
|
|
|
- return nullptr;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-Framework::JSON::Validator::JSONValidator*
|
|
|
|
-DamagingItemSkillFactory::getValidator(
|
|
|
|
- Framework::JSON::Validator::ObjectValidationBuilder<
|
|
|
|
- Framework::JSON::Validator::JSONValidator>* builder) const
|
|
|
|
-{
|
|
|
|
- return builder->withRequiredNumber("maxXp")
|
|
|
|
- ->whichIsGreaterThen(0.0)
|
|
|
|
- ->withDefault(10.0)
|
|
|
|
- ->finishNumber()
|
|
|
|
- ->withRequiredNumber("invalidStaminaCost")
|
|
|
|
- ->whichIsGreaterOrEqual(0.0)
|
|
|
|
- ->withDefault(0.5)
|
|
|
|
- ->finishNumber()
|
|
|
|
- ->withRequiredNumber("invalidStaminaCostPerHardness")
|
|
|
|
- ->whichIsGreaterOrEqual(0.0)
|
|
|
|
- ->withDefault(0.001)
|
|
|
|
- ->finishNumber()
|
|
|
|
- ->withRequiredNumber("invalidStaminaCostDevider")
|
|
|
|
- ->whichIsGreaterOrEqual(0.0)
|
|
|
|
- ->withDefault(0.8)
|
|
|
|
- ->finishNumber()
|
|
|
|
- ->withRequiredNumber("invalidAdditionalStaminaCostDeviderPerLevel")
|
|
|
|
- ->whichIsGreaterOrEqual(0.0)
|
|
|
|
- ->withDefault(0.2)
|
|
|
|
- ->finishNumber()
|
|
|
|
- ->withRequiredNumber("invalidDurabilityCost")
|
|
|
|
- ->whichIsGreaterOrEqual(0.0)
|
|
|
|
- ->withDefault(0.5)
|
|
|
|
- ->finishNumber()
|
|
|
|
- ->withRequiredNumber("invalidDurabilityCostPerHardness")
|
|
|
|
- ->whichIsGreaterOrEqual(0.0)
|
|
|
|
- ->withDefault(0.01)
|
|
|
|
- ->finishNumber()
|
|
|
|
- ->withRequiredNumber("invalidDurabilityCostDevider")
|
|
|
|
- ->whichIsGreaterOrEqual(0.0)
|
|
|
|
- ->withDefault(0.98)
|
|
|
|
- ->finishNumber()
|
|
|
|
- ->withRequiredNumber("invalidAdditionalDurabilityCostDeviderPerLevel")
|
|
|
|
- ->whichIsGreaterOrEqual(0.0)
|
|
|
|
- ->withDefault(0.02)
|
|
|
|
- ->finishNumber()
|
|
|
|
- ->withRequiredArray("configs")
|
|
|
|
- ->addAcceptedTypeInArray(Game::INSTANCE->zTypeRegistry()
|
|
|
|
- ->getValidator<DamagingItemSkillConfig>())
|
|
|
|
- ->finishArray()
|
|
|
|
- ->finishObject();
|
|
|
|
|
|
+ zResult->addValue("configs", configs);
|
|
|
|
+ ItemSkillFactoryBase::toJson(zObject, zResult);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+JSONObjectValidationBuilder* DamagingItemSkillFactory::addToValidator(
|
|
|
|
+ JSONObjectValidationBuilder* builder) const
|
|
|
|
+{
|
|
|
|
+ return ItemSkillFactoryBase::addToValidator(
|
|
|
|
+ builder->withRequiredNumber("invalidStaminaCost")
|
|
|
|
+ ->whichIsGreaterOrEqual(0.0)
|
|
|
|
+ ->withDefault(0.5)
|
|
|
|
+ ->finishNumber()
|
|
|
|
+ ->withRequiredNumber("invalidStaminaCostPerHardness")
|
|
|
|
+ ->whichIsGreaterOrEqual(0.0)
|
|
|
|
+ ->withDefault(0.001)
|
|
|
|
+ ->finishNumber()
|
|
|
|
+ ->withRequiredNumber("invalidStaminaCostDevider")
|
|
|
|
+ ->whichIsGreaterOrEqual(0.0)
|
|
|
|
+ ->withDefault(0.8)
|
|
|
|
+ ->finishNumber()
|
|
|
|
+ ->withRequiredNumber("invalidAdditionalStaminaCostDeviderPerLevel")
|
|
|
|
+ ->whichIsGreaterOrEqual(0.0)
|
|
|
|
+ ->withDefault(0.2)
|
|
|
|
+ ->finishNumber()
|
|
|
|
+ ->withRequiredNumber("invalidDurabilityCost")
|
|
|
|
+ ->whichIsGreaterOrEqual(0.0)
|
|
|
|
+ ->withDefault(0.5)
|
|
|
|
+ ->finishNumber()
|
|
|
|
+ ->withRequiredNumber("invalidDurabilityCostPerHardness")
|
|
|
|
+ ->whichIsGreaterOrEqual(0.0)
|
|
|
|
+ ->withDefault(0.01)
|
|
|
|
+ ->finishNumber()
|
|
|
|
+ ->withRequiredNumber("invalidDurabilityCostDevider")
|
|
|
|
+ ->whichIsGreaterOrEqual(0.0)
|
|
|
|
+ ->withDefault(0.98)
|
|
|
|
+ ->finishNumber()
|
|
|
|
+ ->withRequiredNumber(
|
|
|
|
+ "invalidAdditionalDurabilityCostDeviderPerLevel")
|
|
|
|
+ ->whichIsGreaterOrEqual(0.0)
|
|
|
|
+ ->withDefault(0.02)
|
|
|
|
+ ->finishNumber()
|
|
|
|
+ ->withRequiredArray("configs")
|
|
|
|
+ ->addAcceptedTypeInArray(
|
|
|
|
+ Game::INSTANCE->zTypeRegistry()
|
|
|
|
+ ->getValidator<DamagingItemSkillConfig>())
|
|
|
|
+ ->finishArray());
|
|
}
|
|
}
|
|
|
|
|
|
Framework::Text DamagingItemSkillFactory::getTypeToken() const
|
|
Framework::Text DamagingItemSkillFactory::getTypeToken() const
|