Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions loader/include/Geode/ui/General.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -97,4 +97,24 @@ namespace geode {
);
void setContentSize(cocos2d::CCSize const& size) override;
};

enum class BackButtonStyle {
Green,
Blue,
Pink
};

/**
* Add a back button to a layer
* @param to Layer to add back button to
* @param target Target to call selector on
* @param selector Selector to call on button press
* @param style Style of button to use
*/
GEODE_DLL void addBackButton(
cocos2d::CCNode* to,
cocos2d::CCObject* target,
cocos2d::SEL_MenuHandler selector,
BackButtonStyle style = BackButtonStyle::Green
);
}
24 changes: 24 additions & 0 deletions loader/src/ui/nodes/General.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -200,3 +200,27 @@ void ListBorders::setContentSize(CCSize const& size) {
m_left->setScaleY((size.height - height) / m_left->getContentHeight());
m_right->setScaleY((size.height - height) / m_right->getContentHeight());
}

void geode::addBackButton(cocos2d::CCNode* to, cocos2d::CCObject* target, cocos2d::SEL_MenuHandler selector, BackButtonStyle style) {
const char* sprite;
switch (style) {
default:
case BackButtonStyle::Green: sprite = "GJ_arrow_01_001.png"; break;
case BackButtonStyle::Blue: sprite = "GJ_arrow_02_001.png"; break;
case BackButtonStyle::Pink: sprite = "GJ_arrow_03_001.png"; break;
}

auto backBtn = CCMenuItemSpriteExtra::create(
CCSprite::createWithSpriteFrameName(sprite),
target,
selector
);
backBtn->setID("back-button");
backBtn->setZOrder(1);

auto menu = CCMenu::createWithItem(backBtn);
menu->setID("back-menu");
menu->setPosition({ 25.0f, CCDirector::get()->getWinSize().height - 25.0f });
menu->setZOrder(1);
to->addChild(menu);
}
Loading