diff --git a/data/AUTH b/data/AUTH index e98f7a9..58c2ec3 100644 --- a/data/AUTH +++ b/data/AUTH @@ -2,6 +2,9 @@ To ensure that all authers is known for each medie file. Only files that cannot Poul Sander's files are multi licensed under "GPL v2 or later" OR "CC-BY-SA any version" +/fonts/ +freeserif.ttf Free Software Foundation (GPL with exception) + /textures/ background_sixteen_nine.png Poul Sander (based of qubodup's background.png) fallback.png Poul Sander diff --git a/data/fonts/freeserif.ttf b/data/fonts/freeserif.ttf new file mode 100644 index 0000000..2f3dfc3 Binary files /dev/null and b/data/fonts/freeserif.ttf differ diff --git a/src/ImageSelectState.cpp b/src/ImageSelectState.cpp index 9b1eac3..c097e0c 100644 --- a/src/ImageSelectState.cpp +++ b/src/ImageSelectState.cpp @@ -92,6 +92,9 @@ void ImageSelectState::Draw(SDL_Renderer* target) { int x = i % number_of_columns; int y = i / number_of_columns; DrawRectYellow(target, top_x+x*(frame_size+frame_spacing), top_y+y*(frame_size+frame_spacing), frame_size, frame_size); + if (i < imageNameFields.size()) { + imageNameFields[i].Draw(target, top_x+x*(frame_size+frame_spacing)+frame_size/2, top_y+y*(frame_size+frame_spacing)+frame_size-5, sago::SagoTextField::Alignment::center, sago::SagoTextField::VerticalAlignment::bottom); + } } } @@ -128,6 +131,15 @@ static bool HasExtension(const std::string& filename, const std::string& extensi return std::equal(extension.rbegin(), extension.rend(), filename.rbegin(), ichar_equals); } +static void setFontText(const sago::SagoDataHolder* holder, sago::SagoTextField& field, const char* text) { + field.SetHolder(holder); + field.SetFont("freeserif"); + field.SetColor({255,255,255,255}); + field.SetFontSize(24); + field.SetOutline(1, {0,0,0,255}); + field.SetText(text); +} + void ImageSelectState::Init() { if (!folder.empty()) { @@ -135,6 +147,9 @@ void ImageSelectState::Init() { if (entry.is_regular_file() && (HasExtension(entry.path().string(), ".jpg") || HasExtension(entry.path().string(), ".jpeg") || HasExtension(entry.path().string(), ".png") ) ) { std::cout << entry.path() << std::endl; imageList.push_back(entry.path().string()); + sago::SagoTextField field; + setFontText(globalData.dataHolder, field, entry.path().filename().string().c_str()); + imageNameFields.push_back(std::move(field)); } } } diff --git a/src/ImageSelectState.hpp b/src/ImageSelectState.hpp index 3acca77..93e1633 100644 --- a/src/ImageSelectState.hpp +++ b/src/ImageSelectState.hpp @@ -24,6 +24,7 @@ https://github.com/sago007/saland #include "sago/GameStateInterface.hpp" #include #include +#include "sago/SagoTextField.hpp" #pragma once @@ -44,6 +45,7 @@ public: std::string folder = ""; std::string collection = ""; std::vector imageList; + std::vector imageNameFields; private: bool isActive = true; diff --git a/src/sago_multi_scrambler_puzzle2.cpp b/src/sago_multi_scrambler_puzzle2.cpp index 9453697..b9f3b05 100644 --- a/src/sago_multi_scrambler_puzzle2.cpp +++ b/src/sago_multi_scrambler_puzzle2.cpp @@ -57,18 +57,18 @@ void runGame() { } void runCollection(const std::string& collection_name) { + InitGame(); ImageSelectState iss; iss.collection = collection_name; - InitGame(); RunGameState(iss); UninitGame(); } void runFolder(const std::string& folder_name) { + InitGame(); ImageSelectState iss; iss.folder = folder_name; iss.Init(); - InitGame(); RunGameState(iss); UninitGame(); }