commit c93baeed
Can now use a different mod file format. Can be set in an external file.
Changed files
| D | Game/themes/default before |
| M | source/code/ModInfo.cpp before |
| M | source/code/ModInfo.hpp before |
| M | source/code/main.cpp before |
| M | source/misc/standalone/build_standalone.sh before |
diff --git a/Game/themes/default b/Game/themes/default
deleted file mode 100644
index d758df1..0000000
--- a/Game/themes/default
+++ /dev/null
@@ -1,5 +0,0 @@
-This is an empty file
-
-It needs to be here so the theme 'default' can be selected from the menu
-
-Custom themes should be placed as directories next to this file
diff --git a/source/code/ModInfo.cpp b/source/code/ModInfo.cpp
index da0b3f1..92686e9 100644
--- a/source/code/ModInfo.cpp
+++ b/source/code/ModInfo.cpp
@@ -25,6 +25,7 @@ http://blockattack.net
#include "sago/SagoMisc.hpp"
#include "rapidjson/document.h"
#include <iostream>
+#include <sstream>
#include <boost/algorithm/string.hpp>
void ModInfo::InitModList(const std::vector<std::string>& modlist) {
@@ -51,6 +52,23 @@ void ModInfo::InitModList(const std::vector<std::string>& modlist) {
}
}
+void ModInfo::ParseModFile(const std::string& content) {
+ std::istringstream ss(content);
+ std::string line;
+ while (std::getline(ss, line)) {
+ std::vector<std::string> line_vector;
+ boost::split(line_vector, line, boost::is_any_of(","));
+ if (line_vector.size() < 2) {
+ std::cerr << "skipping " << line << "\n";
+ continue;
+ }
+ if (line_vector[1] == "1") {
+ this->mod_list.push_back(line_vector[0]);
+ }
+ }
+ InitModList(this->mod_list);
+}
+
const std::vector<std::string>& ModInfo::getModList() {
return this->mod_list;
}
diff --git a/source/code/ModInfo.hpp b/source/code/ModInfo.hpp
index 0a94001..78b612a 100644
--- a/source/code/ModInfo.hpp
+++ b/source/code/ModInfo.hpp
@@ -32,6 +32,7 @@ class ModInfo {
public:
ModInfo() = default;
void InitModList(const std::vector<std::string>& modlist);
+ void ParseModFile(const std::string& content);
const std::vector<std::string>& getModList();
const std::vector<std::string>& getModSpriteFiles();
private:
diff --git a/source/code/main.cpp b/source/code/main.cpp
index eaa6c3a..ff864a9 100644
--- a/source/code/main.cpp
+++ b/source/code/main.cpp
@@ -1006,10 +1006,19 @@ int main(int argc, char* argv[]) {
std::string modString = sago::GetFileContent(MODLIST_TXT);
boost::split(globalData.modList, modString, boost::is_any_of(","));
}*/
+ globalData.modinfo.InitModList(globalData.modList);
+ if (sago::FileExists(MODLIST_TXT)) {
+ globalData.modinfo.ParseModFile(sago::GetFileContent(MODLIST_TXT));
+ globalData.modList = globalData.modinfo.getModList();
+ }
+ std::cout << "Mod list: ";
+ for (const std::string& s : globalData.modList) {
+ std::cout << s << ",";
+ }
+ std::cout << "\n";
if (globalData.modList.size()>0) {
PHYSFS_unmount(config.savepath.c_str());
FsSearchPathModAppend(config.search_paths, globalData.modList);
- globalData.modinfo.InitModList(globalData.modList);
PhysFsSetSearchPath(config.search_paths, config.savepath);
}
//Os create folders must be after the parameters because they can change the home folder
@@ -1279,17 +1288,17 @@ int main(int argc, char* argv[]) {
std::cout << SPrintStringF("Block Attack - Rise of the Blocks ran for: %i hours %i mins and %i secs", ct.hours, ct.minutes, ct.seconds) << "\n";
}
- std::string modListString;
+ /*std::string modListString;
if (globalData.modList.size()>0) {
modListString = globalData.modList.at(0);
for (size_t i = 1; i < globalData.modList.size(); ++i) {
modListString += std::string(",")+globalData.modList[i];
}
- }
+ }*/
ct = TimeHandler::addTime("totalTime",ct);
if (globalData.verboseLevel) {
std::cout << "Total run time is now: " << ct.days << " days " << ct.hours << " hours " << ct.minutes << " mins and " << ct.seconds << " secs" << "\n";
- std::cout << "Mods loaded: " << modListString << "\n";
+ //std::cout << "Mods loaded: " << modListString << "\n";
}
//sago::WriteFileContent(MODLIST_TXT, modListString);
Stats::getInstance()->save();
diff --git a/source/misc/standalone/build_standalone.sh b/source/misc/standalone/build_standalone.sh
index b3062b3..8e856cb 100755
--- a/source/misc/standalone/build_standalone.sh
+++ b/source/misc/standalone/build_standalone.sh
@@ -11,6 +11,7 @@ ARCHIVENAME=$1
rm -rf staging
mkdir -p staging/$ARCHIVENAME/x86_64
mkdir -p staging/$ARCHIVENAME/docs
+mkdir -p staging/$ARCHIVENAME/mods
cp blockattack_standalone_launcher staging/$ARCHIVENAME/blockattack
cp README.txt staging/$ARCHIVENAME/README
chmod +x staging/$ARCHIVENAME/blockattack
@@ -32,6 +33,7 @@ cp /usr/local/lib/libSDL2_image-2.0.so.0 /output/x86_64/"
docker run -it --rm -v $(pwd)/source/misc/standalone/staging/$ARCHIVENAME/:/output blockattack_test /bin/bash -c "cp -r /staging/blockattack-game/source/misc/translation/locale /output/ && \
cp /staging/blockattack-game/Game/blockattack.data /output/ && \
+cp /staging/blockattack-game/Game/mods/1.3.0.bricks.data /output/mods/ && \
cp -r /staging/blockattack-game/source/misc/icons /output/ && \
cp /staging/blockattack-game/COPYING /output/ && \
cp /staging/blockattack-game/man/blockattack.man /output/docs/ && \