Skip to content

Commit a79f8b6

Browse files
committed
Update panorama
1 parent 8858ab8 commit a79f8b6

File tree

10 files changed

+149
-10
lines changed

10 files changed

+149
-10
lines changed

assets/panorama/panorama_0.png

-125 KB
Loading

assets/panorama/panorama_1.png

22.2 KB
Loading

assets/panorama/panorama_2.png

-16.2 KB
Loading

assets/panorama/panorama_3.png

-97.5 KB
Loading

assets/panorama/panorama_4.png

-120 KB
Loading

assets/panorama/panorama_5.png

-144 KB
Loading

mod.json

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"mac": "2.2074",
66
"android": "2.2074"
77
},
8-
"version": "v0.9.14",
8+
"version": "v0.9.15",
99
"id": "zalphalaneous.minecraft",
1010
"name": "Minecraftify!",
1111
"developer": "Alphalaneous",
@@ -28,6 +28,12 @@
2828
"assets/logo.ico"
2929
]
3030
},
31+
"settings": {
32+
"reset-panorama": {
33+
"type": "custom:button",
34+
"name": "Reset Panorama"
35+
}
36+
},
3137
"dependencies": [
3238
{
3339
"id": "geode.node-ids",

src/ButtonSetting.cpp

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
#include <Geode/loader/SettingV3.hpp>
2+
#include <Geode/loader/Mod.hpp>
3+
4+
using namespace geode::prelude;
5+
6+
class ButtonSettingV3 : public SettingV3 {
7+
public:
8+
static Result<std::shared_ptr<SettingV3>> parse(std::string const& key, std::string const& modID, matjson::Value const& json) {
9+
auto res = std::make_shared<ButtonSettingV3>();
10+
auto root = checkJson(json, "ButtonSettingV3");
11+
12+
res->init(key, modID, root);
13+
res->parseNameAndDescription(root);
14+
res->parseEnableIf(root);
15+
16+
root.checkUnknownKeys();
17+
return root.ok(std::static_pointer_cast<SettingV3>(res));
18+
}
19+
20+
bool load(matjson::Value const& json) override {
21+
return true;
22+
}
23+
bool save(matjson::Value& json) const override {
24+
return true;
25+
}
26+
27+
bool isDefaultValue() const override {
28+
return true;
29+
}
30+
void reset() override {}
31+
32+
SettingNodeV3* createNode(float width) override;
33+
};
34+
35+
class ButtonSettingNodeV3 : public SettingNodeV3 {
36+
protected:
37+
ButtonSprite* m_buttonSprite;
38+
CCMenuItemSpriteExtra* m_button;
39+
40+
bool init(std::shared_ptr<ButtonSettingV3> setting, float width) {
41+
if (!SettingNodeV3::init(setting, width))
42+
return false;
43+
44+
m_buttonSprite = ButtonSprite::create("Reset", "goldFont.fnt", "GJ_button_01.png", .8f);
45+
m_buttonSprite->setScale(.5f);
46+
m_button = CCMenuItemSpriteExtra::create(
47+
m_buttonSprite, this, menu_selector(ButtonSettingNodeV3::onButton)
48+
);
49+
this->getButtonMenu()->addChildAtPosition(m_button, Anchor::Center);
50+
this->getButtonMenu()->setContentWidth(60);
51+
this->getButtonMenu()->updateLayout();
52+
53+
this->updateState(nullptr);
54+
55+
return true;
56+
}
57+
58+
void updateState(CCNode* invoker) override {
59+
SettingNodeV3::updateState(invoker);
60+
61+
auto shouldEnable = this->getSetting()->shouldEnable();
62+
m_button->setEnabled(shouldEnable);
63+
m_buttonSprite->setCascadeColorEnabled(true);
64+
m_buttonSprite->setCascadeOpacityEnabled(true);
65+
m_buttonSprite->setOpacity(shouldEnable ? 255 : 155);
66+
m_buttonSprite->setColor(shouldEnable ? ccWHITE : ccGRAY);
67+
}
68+
void onButton(CCObject*) {
69+
Mod::get()->setSavedValue<std::string>("panorama-0", "panorama_0.png"_spr);
70+
Mod::get()->setSavedValue<std::string>("panorama-1", "panorama_1.png"_spr);
71+
Mod::get()->setSavedValue<std::string>("panorama-2", "panorama_2.png"_spr);
72+
Mod::get()->setSavedValue<std::string>("panorama-3", "panorama_3.png"_spr);
73+
Mod::get()->setSavedValue<std::string>("panorama-4", "panorama_4.png"_spr);
74+
Mod::get()->setSavedValue<std::string>("panorama-5", "panorama_5.png"_spr);
75+
Mod::get()->setSavedValue<bool>("changed", true);
76+
}
77+
78+
void onCommit() override {}
79+
void onResetToDefault() override {}
80+
81+
public:
82+
static ButtonSettingNodeV3* create(std::shared_ptr<ButtonSettingV3> setting, float width) {
83+
auto ret = new ButtonSettingNodeV3();
84+
if (ret && ret->init(setting, width)) {
85+
ret->autorelease();
86+
return ret;
87+
}
88+
CC_SAFE_DELETE(ret);
89+
return nullptr;
90+
}
91+
92+
bool hasUncommittedChanges() const override {
93+
return false;
94+
}
95+
bool hasNonDefaultValue() const override {
96+
return false;
97+
}
98+
99+
std::shared_ptr<ButtonSettingV3> getSetting() const {
100+
return std::static_pointer_cast<ButtonSettingV3>(SettingNodeV3::getSetting());
101+
}
102+
};
103+
104+
SettingNodeV3* ButtonSettingV3::createNode(float width) {
105+
return ButtonSettingNodeV3::create(
106+
std::static_pointer_cast<ButtonSettingV3>(shared_from_this()),
107+
width
108+
);
109+
}
110+
111+
$execute {
112+
(void)Mod::get()->registerCustomSettingType("button", &ButtonSettingV3::parse);
113+
}

src/ui/nodes/Panorama.cpp

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -48,14 +48,27 @@ bool Panorama::init(){
4848
m_uniformTime = glGetUniformLocation(m_shader.program, "time");
4949
m_uniformMouse = glGetUniformLocation(m_shader.program, "mouse");
5050

51+
std::string panorama0 = Mod::get()->getSavedValue<std::string>("panorama-0", "panorama_0.png"_spr);
52+
std::string panorama1 = Mod::get()->getSavedValue<std::string>("panorama-1", "panorama_1.png"_spr);
53+
std::string panorama2 = Mod::get()->getSavedValue<std::string>("panorama-2", "panorama_2.png"_spr);
54+
std::string panorama3 = Mod::get()->getSavedValue<std::string>("panorama-3", "panorama_3.png"_spr);
55+
std::string panorama4 = Mod::get()->getSavedValue<std::string>("panorama-4", "panorama_4.png"_spr);
56+
std::string panorama5 = Mod::get()->getSavedValue<std::string>("panorama-5", "panorama_5.png"_spr);
57+
58+
bool changed = Mod::get()->getSavedValue<bool>("changed", false);
59+
if (changed) {
60+
Utils::clearImageCache();
61+
Mod::get()->setSavedValue<bool>("changed", false);
62+
}
63+
5164
std::vector<std::string> faces
5265
{
53-
"panorama_1.png"_spr,
54-
"panorama_3.png"_spr,
55-
"panorama_4.png"_spr,
56-
"panorama_5.png"_spr,
57-
"panorama_0.png"_spr,
58-
"panorama_2.png"_spr
66+
panorama1,
67+
panorama3,
68+
panorama4,
69+
panorama5,
70+
panorama0,
71+
panorama2
5972
};
6073

6174
glGenTextures(1, &textureID);

src/utils/Utils.h

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,21 +34,28 @@ class Utils {
3434

3535
inline static std::vector<ImageData> imageCache;
3636

37+
static void clearImageCache() {
38+
for(ImageData i : imageCache){
39+
i.texture->release();
40+
i.img->release();
41+
}
42+
imageCache.clear();
43+
}
44+
3745
static void generateTexture(std::string filePath, GLenum target){
3846

3947
ImageData imgData;
4048

4149
bool found = false;
4250

43-
for(ImageData i : imageCache){
51+
for (ImageData i : imageCache){
4452
if(i.filePath == filePath){
4553
imgData = i;
4654
found = true;
47-
break;
4855
}
4956
}
5057

51-
if(!found){
58+
if (!found){
5259
CCImage* img = new CCImage();
5360
img->initWithImageFile(filePath.c_str());
5461
img->retain();

0 commit comments

Comments
 (0)