only display more button for devs on server mods

This commit is contained in:
Fleeym 2024-06-12 13:03:46 +03:00
parent 93c12a6757
commit 1c40a63e33
3 changed files with 33 additions and 27 deletions

View file

@ -23,7 +23,8 @@ bool ModDeveloperItem::init(
DevListPopup* popup,
std::string developer,
CCSize const& size,
std::optional<std::string> displayName
std::optional<std::string> displayName,
bool addMoreButton
) {
if (!CCNode::init()) {
return false;
@ -66,30 +67,32 @@ bool ModDeveloperItem::init(
{5, 0}
);
auto menu = CCMenu::create();
menu->setAnchorPoint({1.0f, 0.5f});
if (addMoreButton) {
auto menu = CCMenu::create();
menu->setAnchorPoint({1.0f, 0.5f});
auto more = createGeodeButton("More");
auto more = createGeodeButton("More");
auto btn = CCMenuItemSpriteExtra::create(
more, this, menu_selector(ModDeveloperItem::onMoreByThisDev)
);
btn->setUserObject(CCString::create(developer));
menu->addChild(btn);
menu->setContentSize({size.width/2, size.height});
menu->setScale(0.6f);
auto btn = CCMenuItemSpriteExtra::create(
more, this, menu_selector(ModDeveloperItem::onMoreByThisDev)
);
btn->setUserObject(CCString::create(developer));
menu->addChild(btn);
menu->setContentSize({size.width/2, size.height});
menu->setScale(0.6f);
auto layout = RowLayout::create();
layout->setDefaultScaleLimits(0.5f, 0.7f);
layout->setAxisAlignment(AxisAlignment::End);
layout->setAxisReverse(true);
menu->setLayout(layout);
auto layout = RowLayout::create();
layout->setDefaultScaleLimits(0.5f, 0.7f);
layout->setAxisAlignment(AxisAlignment::End);
layout->setAxisReverse(true);
menu->setLayout(layout);
this->addChildAtPosition(
menu,
Anchor::Right,
{-3, 0}
);
this->addChildAtPosition(
menu,
Anchor::Right,
{-3, 0}
);
}
return true;
}
@ -104,10 +107,11 @@ ModDeveloperItem* ModDeveloperItem::create(
DevListPopup* popup,
std::string developer,
CCSize const& size,
std::optional<std::string> displayName
std::optional<std::string> displayName,
bool addMoreButton
) {
auto ret = new ModDeveloperItem();
if (!ret || !ret->init(popup, developer, size, displayName)) {
if (!ret || !ret->init(popup, developer, size, displayName, addMoreButton)) {
CC_SAFE_DELETE(ret);
return nullptr;
}

View file

@ -19,14 +19,16 @@ public:
DevListPopup* popup,
std::string developer,
CCSize const& size,
std::optional<std::string> displayName = std::nullopt
std::optional<std::string> displayName = std::nullopt,
bool addMoreButton = true
);
private:
bool init(
DevListPopup* popup,
std::string developer,
CCSize const& size,
std::optional<std::string> displayName
std::optional<std::string> displayName,
bool addMoreButton
);
void onMoreByThisDev(CCObject* sender);
};

View file

@ -56,7 +56,7 @@ bool ModDeveloperList::init(DevListPopup* popup, ModSource const& source, CCSize
m_source.visit(makeVisitor {
[this, popup, itemSize](Mod* mod) {
for (std::string& dev : mod->getMetadata().getDevelopers()) {
m_list->m_contentLayer->addChild(ModDeveloperItem::create(popup, dev, itemSize));
m_list->m_contentLayer->addChild(ModDeveloperItem::create(popup, dev, itemSize, std::nullopt, false));
}
},
[this, popup, itemSize](server::ServerModMetadata const& metadata) {
@ -66,7 +66,7 @@ bool ModDeveloperList::init(DevListPopup* popup, ModSource const& source, CCSize
},
[this, popup, itemSize](ModSuggestion const& suggestion) {
for (std::string& dev : suggestion.suggestion.getDevelopers()) {
m_list->m_contentLayer->addChild(ModDeveloperItem::create(popup, dev, itemSize));
m_list->m_contentLayer->addChild(ModDeveloperItem::create(popup, dev, itemSize, std::nullopt, false));
}
},
});