make server mods have a little bit of a different color

This commit is contained in:
HJfod 2024-03-25 13:18:25 +02:00
parent 98e174ac10
commit 560b42c8de
13 changed files with 28 additions and 12 deletions

View file

@ -29,6 +29,7 @@ namespace geode {
Blue = 3,
Cyan = 4,
DarkPurple = 5, // Geode-added color, used in Geode UIs
DarkAqua = 6, // Geode-added color, used in Geode UIs
};
GEODE_DLL const char* baseEnumToString(CircleBaseColor);

Binary file not shown.

After

(image error) Size: 20 KiB

Binary file not shown.

After

(image error) Size: 27 KiB

Binary file not shown.

After

(image error) Size: 16 KiB

Binary file not shown.

After

(image error) Size: 15 KiB

Binary file not shown.

After

(image error) Size: 13 KiB

Binary file not shown.

After

(image error) Size: 12 KiB

Binary file not shown.

After

(image error) Size: 8.1 KiB

Binary file not shown.

After

(image error) Size: 21 KiB

View file

@ -8,6 +8,8 @@ $execute {
ColorProvider::get()->define("mod-list-restart-required-label"_spr, ccc3(153, 245, 245));
ColorProvider::get()->define("mod-list-restart-required-label-bg"_spr, ccc3(123, 156, 163));
ColorProvider::get()->define("mod-list-search-bg"_spr, { 83, 65, 109, 255 });
ColorProvider::get()->define("mod-list-tab-selected-bg"_spr, { 168, 147, 185, 255 });
ColorProvider::get()->define("mod-list-tab-selected-bg-alt"_spr, { 147, 163, 185, 255 });
}
bool GeodeSquareSprite::init(CCSprite* top, bool* state) {
@ -101,7 +103,7 @@ std::pair<ccColor3B, ccColor3B> geodeTagColor(std::string_view const& text) {
return TAG_COLORS[hash(text) % 5932 % TAG_COLORS.size()];
}
bool GeodeTabSprite::init(const char* iconFrame, const char* text, float width) {
bool GeodeTabSprite::init(const char* iconFrame, const char* text, float width, bool altColor) {
if (!CCNode::init())
return false;
@ -120,7 +122,11 @@ bool GeodeTabSprite::init(const char* iconFrame, const char* text, float width)
m_selectedBG = CCScale9Sprite::createWithSpriteFrameName("tab-bg.png"_spr);
m_selectedBG->setScale(.8f);
m_selectedBG->setContentSize(itemSize / .8f);
m_selectedBG->setColor({ 168, 147, 185 });
m_selectedBG->setColor(to3B(ColorProvider::get()->color(
altColor ?
"mod-list-tab-selected-bg-alt"_spr :
"mod-list-tab-selected-bg"_spr
)));
this->addChildAtPosition(m_selectedBG, Anchor::Center);
m_icon = CCSprite::createWithSpriteFrameName(iconFrame);
@ -135,9 +141,9 @@ bool GeodeTabSprite::init(const char* iconFrame, const char* text, float width)
return true;
}
GeodeTabSprite* GeodeTabSprite::create(const char* iconFrame, const char* text, float width) {
GeodeTabSprite* GeodeTabSprite::create(const char* iconFrame, const char* text, float width, bool altColor) {
auto ret = new GeodeTabSprite();
if (ret && ret->init(iconFrame, text, width)) {
if (ret && ret->init(iconFrame, text, width, altColor)) {
ret->autorelease();
return ret;
}

View file

@ -9,15 +9,22 @@ using namespace geode::prelude;
template <class... Args>
class GeodePopup : public Popup<Args...> {
protected:
bool init(float width, float height, Args... args) {
if (!Popup<Args...>::initAnchored(width, height, std::forward<Args>(args)..., "GE_square01.png"_spr))
bool init(float width, float height, Args... args, bool altBG = false) {
if (!Popup<Args...>::initAnchored(width, height, std::forward<Args>(args)..., (altBG ? "GE_square02.png"_spr : "GE_square01.png"_spr)))
return false;
// Replace the close button with a Geode style one
// Store original attributes of the close button
auto origSize = Popup<Args...>::m_closeBtn->getContentSize();
auto orig = Ref(Popup<Args...>::m_closeBtn->getNormalImage());
auto spr = CircleButtonSprite::createWithSpriteFrameName("close.png"_spr, 1.f, CircleBaseColor::DarkPurple);
// Replace the close button with a Geode style one
auto spr = CircleButtonSprite::createWithSpriteFrameName(
"close.png"_spr, 1.f,
(altBG ? CircleBaseColor::DarkAqua : CircleBaseColor::DarkPurple)
);
Popup<Args...>::m_closeBtn->setNormalImage(spr);
// Restore size and position
spr->setScale(orig->getScale());
spr->setPosition(orig->getPosition());
spr->setAnchorPoint(orig->getAnchorPoint());
@ -57,10 +64,10 @@ protected:
CCSprite* m_icon;
CCLabelBMFont* m_label;
bool init(const char* iconFrame, const char* text, float width);
bool init(const char* iconFrame, const char* text, float width, bool altColor);
public:
static GeodeTabSprite* create(const char* iconFrame, const char* text, float width);
static GeodeTabSprite* create(const char* iconFrame, const char* text, float width, bool altColor = false);
void select(bool selected);
void disable(bool disabled);

View file

@ -400,7 +400,7 @@ bool ModPopup::setup(ModSource&& src) {
{ "changelog.png"_spr, "Changelog", Tab::Changelog },
{ "version.png"_spr, "Versions", Tab::Versions },
}) {
auto spr = GeodeTabSprite::create(std::get<0>(mdTab), std::get<1>(mdTab), 140);
auto spr = GeodeTabSprite::create(std::get<0>(mdTab), std::get<1>(mdTab), 140, m_source.asServer());
auto btn = CCMenuItemSpriteExtra::create(spr, this, menu_selector(ModPopup::onTab));
btn->setTag(static_cast<int>(std::get<2>(mdTab)));
tabsMenu->addChild(btn);
@ -685,7 +685,8 @@ void ModPopup::onSupport(CCObject*) {
ModPopup* ModPopup::create(ModSource&& src) {
auto ret = new ModPopup();
if (ret && ret->init(440, 280, std::move(src))) {
bool isServer = src.asServer();
if (ret && ret->init(440, 280, std::move(src), isServer)) {
ret->autorelease();
return ret;
}

View file

@ -26,6 +26,7 @@ const char* geode::baseEnumToString(CircleBaseColor value) {
case CircleBaseColor::Blue: return "Blue";
case CircleBaseColor::Cyan: return "Cyan";
case CircleBaseColor::DarkPurple: return "DarkPurple";
case CircleBaseColor::DarkAqua: return "DarkAqua";
}
return "Unknown";
}