Skip to content

Commit

Permalink
fs fixes, editor for main levels, delete artist, andaa fixes ya
Browse files Browse the repository at this point in the history
  • Loading branch information
user95401 committed Jul 13, 2024
1 parent 5f2528f commit 1d5983c
Show file tree
Hide file tree
Showing 8 changed files with 226 additions and 64 deletions.
2 changes: 1 addition & 1 deletion mod.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"win": "2.206",
"android": "*"
},
"version": "v7.0.0-beta.7",
"version": "v7.0.0-beta.8",
"id": "user95401.mainlevelseditor",
"name": "Main Levels Editor",
"developer": "user95401",
Expand Down
37 changes: 19 additions & 18 deletions src/_a_local_config.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,31 +2,32 @@
#include <Geode/Geode.hpp>
using namespace geode::prelude;

inline std::error_code last_err_code;
void CopyFromLocal() {
auto game_dir = Mod::get()->getConfigDir() / "settings.json"; //from_game_dir
auto save_dir = Mod::get()->getSaveDir() / "settings.json"; //from_game_dir
if (!std::filesystem::exists(game_dir)) return;
//if (!std::filesystem::exists(save_dir)) return;
auto at_config_dir = Mod::get()->getConfigDir() / "settings.json"; //from_game_dir
auto at_save_dir = Mod::get()->getSaveDir() / "settings.json"; //from_game_dir
if (!std::filesystem::exists(at_config_dir, last_err_code)) return;
std::filesystem::copy(
game_dir, //from game dir
save_dir, //to game save dir
std::filesystem::copy_options::overwrite_existing);
at_config_dir, //from game dir
at_save_dir, //to game save dir
std::filesystem::copy_options::overwrite_existing,
last_err_code
);
//aaaa
auto link = Mod::get()->getSaveDir() / "REAL CONFIG DIR LINK";
if (std::filesystem::exists(link)) std::filesystem::remove(link);
std::error_code err_code;
std::filesystem::create_directory_symlink(Mod::get()->getConfigDir(), link, err_code);
if (std::filesystem::exists(link, last_err_code)) std::filesystem::remove(link, last_err_code);
std::filesystem::create_directory_symlink(Mod::get()->getConfigDir(), link, last_err_code);
};

void CopyFromData() {
auto game_dir = Mod::get()->getConfigDir() / "settings.json"; //from_game_dir
auto save_dir = Mod::get()->getSaveDir() / "settings.json"; //from_game_dir
//if (!std::filesystem::exists(game_dir)) return;
if (!std::filesystem::exists(save_dir)) return;
std::filesystem::copy(
save_dir, //to game save dir
game_dir, //from game dir
std::filesystem::copy_options::overwrite_existing);
auto at_config_dir = Mod::get()->getConfigDir() / "settings.json"; //from_game_dir
auto at_save_dir = Mod::get()->getSaveDir() / "settings.json"; //from_game_dir
if (!std::filesystem::exists(at_save_dir, last_err_code)) return;
std::filesystem::rename(
at_save_dir, //to game save dir
at_config_dir, //from game dir
last_err_code
);
};

$on_mod(Loaded) {
Expand Down
194 changes: 160 additions & 34 deletions src/_main.hpp

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions src/control_ui.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -39,15 +39,15 @@ class $modify(LevelPageExt, LevelPage) {
if (levelID > currentID and levelID < 500) {
auto rn1 = levels_meta_path / fmt::format("{}.json", levelID);
auto rn2 = levels_meta_path / fmt::format("{}.json", levelID - 1);
if (my_fs::exists(rn1)) my_fs::rename(rn1, rn2);
if (fs::exists(rn1)) fs::rename(rn1, rn2);
};
}
//level data
for (int levelID = 0; levelID < 500; levelID++) {
if (levelID > currentID) {
auto rn1 = levels_path / fmt::format("{}.txt", levelID);
auto rn2 = levels_path / fmt::format("{}.txt", levelID - 1);
if (my_fs::exists(rn1)) my_fs::rename(rn1, rn2);
if (fs::exists(rn1)) fs::rename(rn1, rn2);
}
}
}
Expand Down
31 changes: 31 additions & 0 deletions src/editor.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#include "_main.hpp"

#include <Geode/modify/EditorPauseLayer.hpp>
class $modify(EditorPauseLayerExt, EditorPauseLayer) {
$override void saveLevel() {
EditorPauseLayer::saveLevel();
if (not this->m_editorLayer->getChildByIDRecursive("IsMainLevelEditor")) return;
mle_leveltools::updateLevelDataAndMetaFiles(
this->m_editorLayer->getLevelString(),
this->m_editorLayer->m_level
);
}
$override bool init(LevelEditorLayer * p0) {
auto rtn = EditorPauseLayer::init(p0);
if (not p0->getChildByIDRecursive("IsMainLevelEditor")) return rtn;
if (auto node = this->getChildByIDRecursive("save-and-play-button"))
node->removeFromParent();
if (auto node = (CCMenu*)this->getChildByIDRecursive("resume-menu")) {
node->addChild(TextArea::create(
"<co>Main Level Editor</c>\n"
"Actually <cg>saves level data</c> to file\n"
"<cy>in user95401.mainlevelseditor config</c>.\n"
"<cr>User coins</c> will be <cy>saved as Secret Coins</c>!\n"
" "
, "chatFont.fnt", 1.f, 600.f, { 0.5f, 0.5f }, 14.f, 0
), -1, 6302);
node->updateLayout();
}
return rtn;
}
};
4 changes: 2 additions & 2 deletions src/level_data.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,10 @@ class $modify(LocalLevelManagerExt, LocalLevelManager) {
auto toRead = std::string();
auto dataFile = std::string(CCFileUtils::get()->fullPathForFilename(fmt::format("levels/{}.txt", levelID).c_str(), 0).data());
auto dataFileAtMod = (levels_path / fmt::format("{}.txt", levelID)).string();
if (my_fs::exists(dataFileAtMod)) toRead = dataFileAtMod;
if (fs::exists(dataFileAtMod)) toRead = dataFileAtMod;
else toRead = dataFile;
//read
auto fileContent = my_fs::read(toRead);
auto fileContent = fs::read(toRead);
//return
return gd::string(fileContent.c_str());
}
Expand Down
8 changes: 4 additions & 4 deletions src/on_load.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@

void Loaded() {
//dirs
my_fs::create_directories(levels_meta_path);
my_fs::create_directories(audios_meta_path);
my_fs::create_directories(artists_meta_path);
fs::create_directories(levels_meta_path);
fs::create_directories(audios_meta_path);
fs::create_directories(artists_meta_path);
//add info
std::ofstream(levels_meta_path / "_here is {id}.json meta files about names, stars and stuff") << "asd";
std::ofstream(levels_path / "_here u put {id}.txt level data files");
Expand All @@ -20,7 +20,7 @@ void Loaded() {
if (level_is_exists_in_gd and not level_is_exists_in_mod) {
log::debug("ofstreamingo...");
std::ofstream(level_path_to_save)
<< my_fs::read(level_in_game_path);
<< fs::read(level_in_game_path);
}
}
//preset all org songs
Expand Down
10 changes: 7 additions & 3 deletions src/songs.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ class $modify(SongsLayerExt, SongsLayer) {
pArtistsLayer->showLayer(0);
pArtistsLayer->setZOrder(this->getZOrder());
}
void addSongCell(int id, bool &altBg, CCContentLayer* contentLayer) {
auto addSongCell(int id, bool &altBg, CCContentLayer* contentLayer) {
auto width = contentLayer->getContentWidth();
//hr
if (altBg) contentLayer->addChild(CCLayerColor::create(
Expand Down Expand Up @@ -114,7 +114,7 @@ class $modify(SongsLayerExt, SongsLayer) {
entry->updateLayout();
}
//add
contentLayer->addChild(entry);
contentLayer->addChild(entry, 0, id);
contentLayer->setContentHeight(
contentLayer->getContentHeight() + 1.1f + entry->getContentHeight()
);
Expand All @@ -125,6 +125,7 @@ class $modify(SongsLayerExt, SongsLayer) {
));
//sw alt
altBg = !altBg;
return entry;
}
$override void customSetup() {
SongsLayer::customSetup();
Expand Down Expand Up @@ -168,7 +169,10 @@ class $modify(SongsLayerExt, SongsLayer) {
this, menu_selector(SongsLayerExt::onViewArtists)
);
viewArtists->setID("viewArtists"_spr);
viewArtists->setPosition(CCPoint(277.f, -270.f));
viewArtists->setPosition({
(this->m_buttonMenu->getContentSize().width / 2) - this->m_buttonMenu->getPositionX(),
(this->m_buttonMenu->getContentSize().height / -1) + 48.f
});
viewArtists->m_baseScale = 0.8f;
viewArtists->setScale(viewArtists->m_baseScale);
};
Expand Down

0 comments on commit 1d5983c

Please sign in to comment.