| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772 |
- #include "QuestRequirement.h"
- #include <Fenster.h>
- #include "BlockType.h"
- #include "Game.h"
- #include "ItemFilter.h"
- #include "ItemType.h"
- #include "Quest.h"
- QuestRequirement::QuestRequirement()
- : ReferenceCounter()
- {}
- void QuestRequirement::api(Framework::StreamReader* message,
- Framework::XML::Element* zParent,
- QuestStorage* zStorage)
- {}
- void QuestRequirement::setRequirementId(Framework::Text id)
- {
- this->id = id;
- }
- const Framework::Text& QuestRequirement::getRequirementId() const
- {
- return id;
- }
- void QuestRequirement::setDescription(Framework::Text description)
- {
- this->description = description;
- }
- const Framework::Text& QuestRequirement::getDescription() const
- {
- return description;
- }
- QuestRequirementOpenDialog::QuestRequirementOpenDialog()
- : QuestRequirement()
- {}
- void QuestRequirementOpenDialog::processEvent(
- QuestEvent* zEvent, QuestStorage* zStorage)
- {
- QuestRequirementStorage* zRequirementStorage
- = zStorage->zStorage(getRequirementId());
- QuestEventOpenDialog* event = dynamic_cast<QuestEventOpenDialog*>(zEvent);
- if (event)
- {
- if (event->getDialogId() == dialogId)
- {
- zRequirementStorage->setFullfilled(true);
- }
- }
- }
- void QuestRequirementOpenDialog::addRequirementUIML(QuestStorage* zStorage,
- Framework::XML::Element* zParent,
- Framework::Text onClickPrefix)
- {
- Framework::XML::Element* container = new Framework::XML::Element(
- "<frame width=\"100%\" height=\"50\" display=\"row\" gap=\"10\"/>");
- container->setAttribute("style",
- Framework::Text() += (Framework::Fenster::Style::Sichtbar
- | Framework::Fenster::Style::Erlaubt));
- container->setAttribute(
- "id", Framework::Text("requirement_") += getRequirementId());
- // TODO: add icon of dialog
- auto text
- = new Framework::XML::Element("<text width=\"auto\" height=\"auto\"/>");
- text->setAttribute("id",
- Framework::Text("requirement_description_") += getRequirementId());
- text->setText(description);
- container->addChild(text);
- auto status = new Framework::XML::Element(
- "<text margin-top=\"10\" width=\"auto\" height=\"auto\"/>");
- status->setAttribute("align-top", text->getAttributeValue("id"));
- status->setAttribute("align-x", text->getAttributeValue("id"));
- if (zStorage->zStorage(getRequirementId())->isFullfilled())
- {
- status->setText("Completed");
- status->setAttribute("text-color", "0xFF00FF00");
- }
- else
- {
- status->setText("Not completed");
- status->setAttribute("text-color", "0xFFFF0000");
- }
- container->addChild(status);
- zParent->addChild(container);
- }
- void QuestRequirementOpenDialog::setDialogId(Framework::Text dialogId)
- {
- this->dialogId = dialogId;
- }
- const Framework::Text& QuestRequirementOpenDialog::getDialogId() const
- {
- return dialogId;
- }
- QuestRequirementOpenDialogType::QuestRequirementOpenDialogType()
- : QuestRequirementFactoryBase()
- {}
- QuestRequirementOpenDialog* QuestRequirementOpenDialogType::createValue(
- Framework::JSON::JSONObject* zJson) const
- {
- return new QuestRequirementOpenDialog();
- }
- QuestRequirementOpenDialog* QuestRequirementOpenDialogType::fromJson(
- Framework::JSON::JSONObject* zJson) const
- {
- QuestRequirementOpenDialog* result
- = QuestRequirementFactoryBase::fromJson(zJson);
- result->setDialogId(zJson->zValue("dialogId")->asString()->getString());
- return result;
- }
- Framework::JSON::JSONObject* QuestRequirementOpenDialogType::toJsonObject(
- QuestRequirementOpenDialog* zObject) const
- {
- Framework::JSON::JSONObject* result
- = QuestRequirementFactoryBase::toJsonObject(zObject);
- result->addValue(
- "dialogId", new Framework::JSON::JSONString(zObject->dialogId));
- return result;
- }
- JSONObjectValidationBuilder* QuestRequirementOpenDialogType::addToValidator(
- JSONObjectValidationBuilder* builder) const
- {
- return QuestRequirementFactoryBase::addToValidator(
- builder->withRequiredString("dialogId")->finishString());
- }
- const char* QuestRequirementOpenDialogType::getTypeToken() const
- {
- return "open_dialog";
- }
- QuestRequirementBlockBreak::QuestRequirementBlockBreak()
- : QuestRequirement(),
- blockTypeId(0),
- amount(1),
- usedItemTypeId(-1)
- {}
- void QuestRequirementBlockBreak::processEvent(
- QuestEvent* zEvent, QuestStorage* zStorage)
- {
- QuestEventBlockBreak* event = dynamic_cast<QuestEventBlockBreak*>(zEvent);
- if (event)
- {
- if (event->getBlockTypeId() == blockTypeId)
- {
- if (usedItemTypeId != -1
- && event->getUsedItemTypeId() != usedItemTypeId)
- {
- return;
- }
- int currentAmount = zStorage->containsKey(getRequirementId())
- ? (int)zStorage->zValue(getRequirementId())
- ->asNumber()
- ->getNumber()
- : 0;
- currentAmount += 1;
- zStorage->putValue(getRequirementId(),
- new Framework::JSON::JSONNumber(currentAmount));
- if (currentAmount >= amount)
- {
- zStorage->zStorage(getRequirementId())->setFullfilled(true);
- }
- }
- }
- }
- void QuestRequirementBlockBreak::addRequirementUIML(QuestStorage* zStorage,
- Framework::XML::Element* zParent,
- Framework::Text onClickPrefix)
- {
- Framework::XML::Element* container = new Framework::XML::Element(
- "<frame width=\"100%\" height=\"50\" display=\"row\" gap=\"10\"/>");
- container->setAttribute("style",
- Framework::Text() += (Framework::Fenster::Style::Sichtbar
- | Framework::Fenster::Style::Erlaubt));
- container->setAttribute(
- "id", Framework::Text("requirement_") += getRequirementId());
- // TODO: add icon of block
- auto text
- = new Framework::XML::Element("<text width=\"auto\" height=\"auto\"/>");
- text->setAttribute("id",
- Framework::Text("requirement_description_") += getRequirementId());
- text->setText(description);
- container->addChild(text);
- auto status = new Framework::XML::Element(
- "<text margin-top=\"10\" width=\"auto\" height=\"auto\"/>");
- status->setAttribute("align-top", text->getAttributeValue("id"));
- status->setAttribute("align-x", text->getAttributeValue("id"));
- if (zStorage->zStorage(getRequirementId())->isFullfilled())
- {
- Framework::Text completedText = "Completed (";
- completedText.append() << amount << "/" << amount << ")";
- status->setText(completedText.getText());
- status->setAttribute("text-color", "0xFF00FF00");
- }
- else
- {
- int currentAmount = zStorage->containsKey(getRequirementId())
- ? (int)zStorage->zValue(getRequirementId())
- ->asNumber()
- ->getNumber()
- : 0;
- Framework::Text completedText = "Not completed (";
- completedText.append() << currentAmount << "/" << amount << ")";
- status->setAttribute("text-color", "0xFFFF0000");
- }
- container->addChild(status);
- zParent->addChild(container);
- }
- void QuestRequirementBlockBreak::setBlockTypeId(int blockTypeId)
- {
- this->blockTypeId = blockTypeId;
- }
- int QuestRequirementBlockBreak::getBlockTypeId() const
- {
- return blockTypeId;
- }
- void QuestRequirementBlockBreak::setAmount(int amount)
- {
- this->amount = amount;
- }
- int QuestRequirementBlockBreak::getAmount() const
- {
- return amount;
- }
- void QuestRequirementBlockBreak::setUsedItemTypeId(int usedItemTypeId)
- {
- this->usedItemTypeId = usedItemTypeId;
- }
- int QuestRequirementBlockBreak::getUsedItemTypeId() const
- {
- return usedItemTypeId;
- }
- QuestRequirementBlockBreakType::QuestRequirementBlockBreakType()
- : QuestRequirementFactoryBase()
- {}
- QuestRequirementBlockBreak* QuestRequirementBlockBreakType::createValue(
- Framework::JSON::JSONObject* zJson) const
- {
- return new QuestRequirementBlockBreak();
- }
- QuestRequirementBlockBreak* QuestRequirementBlockBreakType::fromJson(
- Framework::JSON::JSONObject* zJson) const
- {
- QuestRequirementBlockBreak* result
- = QuestRequirementFactoryBase::fromJson(zJson);
- result->setBlockTypeId(Game::INSTANCE->getBlockTypeId(
- zJson->zValue("blockType")->asString()->getString()));
- result->setAmount((int)zJson->zValue("amount")->asNumber()->getNumber());
- if (zJson->hasValue("usedItemTypeId"))
- {
- result->setUsedItemTypeId(Game::INSTANCE->getItemTypeId(
- zJson->zValue("usedItemType")->asString()->getString()));
- }
- else
- {
- result->setUsedItemTypeId(-1);
- }
- return result;
- }
- Framework::JSON::JSONObject* QuestRequirementBlockBreakType::toJsonObject(
- QuestRequirementBlockBreak* zObject) const
- {
- Framework::JSON::JSONObject* result
- = QuestRequirementFactoryBase::toJsonObject(zObject);
- result->addValue("blockType",
- new Framework::JSON::JSONString(
- Game::INSTANCE->zBlockType(zObject->getBlockTypeId())->getName()));
- result->addValue("amount",
- new Framework::JSON::JSONNumber((double)zObject->getAmount()));
- if (zObject->getUsedItemTypeId() != -1)
- {
- result->addValue("usedItemType",
- new Framework::JSON::JSONString(
- Game::INSTANCE->zItemType(zObject->getUsedItemTypeId())
- ->getName()));
- }
- return result;
- }
- JSONObjectValidationBuilder* QuestRequirementBlockBreakType::addToValidator(
- JSONObjectValidationBuilder* builder) const
- {
- return QuestRequirementFactoryBase::addToValidator(builder
- ->withRequiredAttribute("blockType",
- Game::INSTANCE->zTypeRegistry()->getValidator<Framework::Text>(
- BlockTypeNameFactory::TYPE_ID))
- ->withRequiredNumber("amount")
- ->whichIsGreaterOrEqual(1.0)
- ->withDefault(1.0)
- ->finishNumber()
- ->withOptionalAttribute("usedItemType",
- Game::INSTANCE->zTypeRegistry()->getValidator<Framework::Text>(
- ItemTypeNameFactory::TYPE_ID)));
- }
- const char* QuestRequirementBlockBreakType::getTypeToken() const
- {
- return "block_break";
- }
- QuestRequirementBlockPlace::QuestRequirementBlockPlace()
- : QuestRequirement(),
- blockTypeId(0),
- amount(1)
- {}
- void QuestRequirementBlockPlace::processEvent(
- QuestEvent* zEvent, QuestStorage* zStorage)
- {
- QuestEventBlockPlace* event = dynamic_cast<QuestEventBlockPlace*>(zEvent);
- if (event)
- {
- if (event->getBlockTypeId() == blockTypeId)
- {
- int currentAmount = zStorage->containsKey(getRequirementId())
- ? (int)zStorage->zValue(getRequirementId())
- ->asNumber()
- ->getNumber()
- : 0;
- currentAmount += 1;
- zStorage->putValue(getRequirementId(),
- new Framework::JSON::JSONNumber(currentAmount));
- if (currentAmount >= amount)
- {
- zStorage->zStorage(getRequirementId())->setFullfilled(true);
- }
- }
- }
- }
- void QuestRequirementBlockPlace::addRequirementUIML(QuestStorage* zStorage,
- Framework::XML::Element* zParent,
- Framework::Text onClickPrefix)
- {
- Framework::XML::Element* container = new Framework::XML::Element(
- "<frame width=\"100%\" height=\"50\" display=\"row\" gap=\"10\"/>");
- container->setAttribute("style",
- Framework::Text() += (Framework::Fenster::Style::Sichtbar
- | Framework::Fenster::Style::Erlaubt));
- container->setAttribute(
- "id", Framework::Text("requirement_") += getRequirementId());
- // TODO: add icon of block
- auto text
- = new Framework::XML::Element("<text width=\"auto\" height=\"auto\"/>");
- text->setAttribute("id",
- Framework::Text("requirement_description_") += getRequirementId());
- text->setText(description);
- container->addChild(text);
- auto status = new Framework::XML::Element(
- "<text margin-top=\"10\" width=\"auto\" height=\"auto\"/>");
- status->setAttribute("align-top", text->getAttributeValue("id"));
- status->setAttribute("align-x", text->getAttributeValue("id"));
- if (zStorage->zStorage(getRequirementId())->isFullfilled())
- {
- Framework::Text completedText = "Completed (";
- completedText.append() << amount << "/" << amount << ")";
- status->setText(completedText.getText());
- status->setAttribute("text-color", "0xFF00FF00");
- }
- else
- {
- int currentAmount = zStorage->containsKey(getRequirementId())
- ? (int)zStorage->zValue(getRequirementId())
- ->asNumber()
- ->getNumber()
- : 0;
- Framework::Text completedText = "Not completed (";
- completedText.append() << currentAmount << "/" << amount << ")";
- status->setAttribute("text-color", "0xFFFF0000");
- }
- container->addChild(status);
- zParent->addChild(container);
- }
- void QuestRequirementBlockPlace::setBlockTypeId(int blockTypeId)
- {
- this->blockTypeId = blockTypeId;
- }
- int QuestRequirementBlockPlace::getBlockTypeId() const
- {
- return blockTypeId;
- }
- void QuestRequirementBlockPlace::setAmount(int amount)
- {
- this->amount = amount;
- }
- int QuestRequirementBlockPlace::getAmount() const
- {
- return amount;
- }
- QuestRequirementBlockPlaceType::QuestRequirementBlockPlaceType()
- : QuestRequirementFactoryBase()
- {}
- QuestRequirementBlockPlace* QuestRequirementBlockPlaceType::createValue(
- Framework::JSON::JSONObject* zJson) const
- {
- return new QuestRequirementBlockPlace();
- }
- QuestRequirementBlockPlace* QuestRequirementBlockPlaceType::fromJson(
- Framework::JSON::JSONObject* zJson) const
- {
- QuestRequirementBlockPlace* result
- = QuestRequirementFactoryBase::fromJson(zJson);
- result->setBlockTypeId(Game::INSTANCE->getBlockTypeId(
- zJson->zValue("blockType")->asString()->getString()));
- result->setAmount((int)zJson->zValue("amount")->asNumber()->getNumber());
- return result;
- }
- Framework::JSON::JSONObject* QuestRequirementBlockPlaceType::toJsonObject(
- QuestRequirementBlockPlace* zObject) const
- {
- Framework::JSON::JSONObject* result
- = QuestRequirementFactoryBase::toJsonObject(zObject);
- result->addValue("blockType",
- new Framework::JSON::JSONString(
- Game::INSTANCE->zBlockType(zObject->getBlockTypeId())->getName()));
- result->addValue("amount",
- new Framework::JSON::JSONNumber((double)zObject->getAmount()));
- return result;
- }
- JSONObjectValidationBuilder* QuestRequirementBlockPlaceType::addToValidator(
- JSONObjectValidationBuilder* builder) const
- {
- return QuestRequirementFactoryBase::addToValidator(builder
- ->withRequiredAttribute("blockType",
- Game::INSTANCE->zTypeRegistry()->getValidator<Framework::Text>(
- BlockTypeNameFactory::TYPE_ID))
- ->withRequiredNumber("amount")
- ->whichIsGreaterOrEqual(1.0)
- ->withDefault(1.0)
- ->finishNumber());
- }
- const char* QuestRequirementBlockPlaceType::getTypeToken() const
- {
- return "block_place";
- }
- QuestRequirementBlockInteract::QuestRequirementBlockInteract()
- : QuestRequirement(),
- blockTypeId(0),
- itemTypeId(-1)
- {}
- void QuestRequirementBlockInteract::processEvent(
- QuestEvent* zEvent, QuestStorage* zStorage)
- {
- QuestEventBlockInteract* event
- = dynamic_cast<QuestEventBlockInteract*>(zEvent);
- if (event)
- {
- if (event->getBlockTypeId() == blockTypeId)
- {
- if (itemTypeId != -1 && event->getUsedItemTypeId() != itemTypeId)
- {
- return;
- }
- QuestRequirementStorage* zRequirementStorage
- = zStorage->zStorage(getRequirementId());
- zRequirementStorage->setFullfilled(true);
- }
- }
- }
- void QuestRequirementBlockInteract::addRequirementUIML(QuestStorage* zStorage,
- Framework::XML::Element* zParent,
- Framework::Text onClickPrefix)
- {
- Framework::XML::Element* container = new Framework::XML::Element(
- "<frame width=\"100%\" height=\"50\" display=\"row\" gap=\"10\"/>");
- container->setAttribute("style",
- Framework::Text() += (Framework::Fenster::Style::Sichtbar
- | Framework::Fenster::Style::Erlaubt));
- container->setAttribute(
- "id", Framework::Text("requirement_") += getRequirementId());
- // TODO: add icon of block
- auto text
- = new Framework::XML::Element("<text width=\"auto\" height=\"auto\"/>");
- text->setAttribute("id",
- Framework::Text("requirement_description_") += getRequirementId());
- text->setText(description);
- container->addChild(text);
- auto status = new Framework::XML::Element(
- "<text margin-top=\"10\" width=\"auto\" height=\"auto\"/>");
- status->setAttribute("align-top", text->getAttributeValue("id"));
- status->setAttribute("align-x", text->getAttributeValue("id"));
- if (zStorage->zStorage(getRequirementId())->isFullfilled())
- {
- status->setText("Completed");
- status->setAttribute("text-color", "0xFF00FF00");
- }
- else
- {
- status->setText("Not completed");
- status->setAttribute("text-color", "0xFFFF0000");
- }
- container->addChild(status);
- zParent->addChild(container);
- }
- void QuestRequirementBlockInteract::setBlockTypeId(int blockTypeId)
- {
- this->blockTypeId = blockTypeId;
- }
- int QuestRequirementBlockInteract::getBlockTypeId() const
- {
- return blockTypeId;
- }
- void QuestRequirementBlockInteract::setItemTypeId(int itemTypeId)
- {
- this->itemTypeId = itemTypeId;
- }
- int QuestRequirementBlockInteract::getItemTypeId() const
- {
- return itemTypeId;
- }
- QuestRequirementBlockInteractType::QuestRequirementBlockInteractType()
- : QuestRequirementFactoryBase()
- {}
- QuestRequirementBlockInteract* QuestRequirementBlockInteractType::createValue(
- Framework::JSON::JSONObject* zJson) const
- {
- return new QuestRequirementBlockInteract();
- }
- QuestRequirementBlockInteract* QuestRequirementBlockInteractType::fromJson(
- Framework::JSON::JSONObject* zJson) const
- {
- QuestRequirementBlockInteract* result
- = QuestRequirementFactoryBase::fromJson(zJson);
- result->setBlockTypeId(Game::INSTANCE->getBlockTypeId(
- zJson->zValue("blockType")->asString()->getString()));
- if (zJson->hasValue("itemType"))
- {
- result->setItemTypeId(Game::INSTANCE->getItemTypeId(
- zJson->zValue("itemType")->asString()->getString()));
- }
- else
- {
- result->setItemTypeId(-1);
- }
- return result;
- }
- Framework::JSON::JSONObject* QuestRequirementBlockInteractType::toJsonObject(
- QuestRequirementBlockInteract* zObject) const
- {
- Framework::JSON::JSONObject* result
- = QuestRequirementFactoryBase::toJsonObject(zObject);
- result->addValue("blockType",
- new Framework::JSON::JSONString(
- Game::INSTANCE->zBlockType(zObject->getBlockTypeId())->getName()));
- if (zObject->getItemTypeId() != -1)
- {
- result->addValue("itemType",
- new Framework::JSON::JSONString(
- Game::INSTANCE->zItemType(zObject->getItemTypeId())
- ->getName()));
- }
- return result;
- }
- JSONObjectValidationBuilder* QuestRequirementBlockInteractType::addToValidator(
- JSONObjectValidationBuilder* builder) const
- {
- return QuestRequirementFactoryBase::addToValidator(builder
- ->withRequiredAttribute("blockType",
- Game::INSTANCE->zTypeRegistry()->getValidator<Framework::Text>(
- BlockTypeNameFactory::TYPE_ID))
- ->withOptionalAttribute("itemType",
- Game::INSTANCE->zTypeRegistry()->getValidator<Framework::Text>(
- ItemTypeNameFactory::TYPE_ID)));
- }
- const char* QuestRequirementBlockInteractType::getTypeToken() const
- {
- return "block_interact";
- }
- QuestRequirementItemInInventory::QuestRequirementItemInInventory()
- : QuestRequirement(),
- itemTypeId(0),
- amount(1)
- {}
- void QuestRequirementItemInInventory::processEvent(
- QuestEvent* zEvent, QuestStorage* zStorage)
- {
- QuestEventItemPickup* event = dynamic_cast<QuestEventItemPickup*>(zEvent);
- if (event)
- {
- if (event->getItemTypeId() == itemTypeId)
- {
- TypeItemFilter filter;
- filter.setType(Game::INSTANCE->zItemType(itemTypeId));
- int current = event->zActingEntity()->countAccessableItems(
- &filter, Direction::NO_DIRECTION);
- int currentAmount = zStorage->containsKey(getRequirementId())
- ? (int)zStorage->zValue(getRequirementId())
- ->asNumber()
- ->getNumber()
- : 0;
- if (currentAmount < current)
- {
- currentAmount = current;
- }
- zStorage->putValue(getRequirementId(),
- new Framework::JSON::JSONNumber(currentAmount));
- if (currentAmount >= amount)
- {
- zStorage->zStorage(getRequirementId())->setFullfilled(true);
- }
- }
- }
- }
- void QuestRequirementItemInInventory::addRequirementUIML(QuestStorage* zStorage,
- Framework::XML::Element* zParent,
- Framework::Text onClickPrefix)
- {
- Framework::XML::Element* container = new Framework::XML::Element(
- "<frame width=\"100%\" height=\"50\" display=\"row\" gap=\"10\"/>");
- container->setAttribute("style",
- Framework::Text() += (Framework::Fenster::Style::Sichtbar
- | Framework::Fenster::Style::Erlaubt));
- container->setAttribute(
- "id", Framework::Text("requirement_") += getRequirementId());
- // TODO: add icon of item
- auto text
- = new Framework::XML::Element("<text width=\"auto\" height=\"auto\"/>");
- text->setAttribute("id",
- Framework::Text("requirement_description_") += getRequirementId());
- text->setText(description);
- container->addChild(text);
- auto status = new Framework::XML::Element(
- "<text margin-top=\"10\" width=\"auto\" height=\"auto\"/>");
- status->setAttribute("align-top", text->getAttributeValue("id"));
- status->setAttribute("align-x", text->getAttributeValue("id"));
- if (zStorage->zStorage(getRequirementId())->isFullfilled())
- {
- Framework::Text completedText = "Completed (";
- completedText.append() << amount << "/" << amount << ")";
- status->setText(completedText.getText());
- status->setAttribute("text-color", "0xFF00FF00");
- }
- else
- {
- int currentAmount = zStorage->containsKey(getRequirementId())
- ? (int)zStorage->zValue(getRequirementId())
- ->asNumber()
- ->getNumber()
- : 0;
- Framework::Text completedText = "Not completed (";
- completedText.append() << currentAmount << "/" << amount << ")";
- status->setAttribute("text-color", "0xFFFF0000");
- }
- container->addChild(status);
- zParent->addChild(container);
- }
- void QuestRequirementItemInInventory::setItemTypeId(int itemTypeId)
- {
- this->itemTypeId = itemTypeId;
- }
- int QuestRequirementItemInInventory::getItemTypeId() const
- {
- return itemTypeId;
- }
- void QuestRequirementItemInInventory::setAmount(int amount)
- {
- this->amount = amount;
- }
- int QuestRequirementItemInInventory::getAmount() const
- {
- return amount;
- }
- QuestRequirementItemInInventoryType::QuestRequirementItemInInventoryType()
- : QuestRequirementFactoryBase()
- {}
- QuestRequirementItemInInventory*
- QuestRequirementItemInInventoryType::createValue(
- Framework::JSON::JSONObject* zJson) const
- {
- return new QuestRequirementItemInInventory();
- }
- QuestRequirementItemInInventory* QuestRequirementItemInInventoryType::fromJson(
- Framework::JSON::JSONObject* zJson) const
- {
- QuestRequirementItemInInventory* result
- = QuestRequirementFactoryBase::fromJson(zJson);
- result->setItemTypeId(Game::INSTANCE->getItemTypeId(
- zJson->zValue("itemType")->asString()->getString()));
- result->setAmount((int)zJson->zValue("amount")->asNumber()->getNumber());
- return result;
- }
- Framework::JSON::JSONObject* QuestRequirementItemInInventoryType::toJsonObject(
- QuestRequirementItemInInventory* zObject) const
- {
- Framework::JSON::JSONObject* result
- = QuestRequirementFactoryBase::toJsonObject(zObject);
- result->addValue("itemType",
- new Framework::JSON::JSONString(
- Game::INSTANCE->zItemType(zObject->getItemTypeId())->getName()));
- result->addValue("amount",
- new Framework::JSON::JSONNumber((double)zObject->getAmount()));
- return result;
- }
- JSONObjectValidationBuilder*
- QuestRequirementItemInInventoryType::addToValidator(
- JSONObjectValidationBuilder* builder) const
- {
- return QuestRequirementFactoryBase::addToValidator(builder
- ->withRequiredAttribute("itemType",
- Game::INSTANCE->zTypeRegistry()->getValidator<Framework::Text>(
- ItemTypeNameFactory::TYPE_ID))
- ->withRequiredNumber("amount")
- ->whichIsGreaterOrEqual(1.0)
- ->withDefault(1.0)
- ->finishNumber());
- }
- const char* QuestRequirementItemInInventoryType::getTypeToken() const
- {
- return "item_in_inventory";
- }
|