This commit is contained in:
2026-05-02 21:08:47 +02:00
parent e4389f035d
commit fcc598adb1
11 changed files with 35 additions and 32 deletions

View File

@@ -15,7 +15,7 @@ namespace {
void writeFinalScoreFile(int score) { void writeFinalScoreFile(int score) {
std::ofstream file("score.txt", std::ios::trunc); std::ofstream file("score.txt", std::ios::trunc);
if (!file.is_open()) { if (!file.is_open()) {
WARN("Failed to open score.txt for writing"); WARN("Neuspešno odpiranje score.txt za pisanje");
return; return;
} }
@@ -314,7 +314,7 @@ namespace Game::AGame {
} else if (!GameManager::getSharedData<bool>("gameWon")) { } else if (!GameManager::getSharedData<bool>("gameWon")) {
writeFinalScoreFile(GameManager::getSharedData<int>("gameScore")); writeFinalScoreFile(GameManager::getSharedData<int>("gameScore"));
GameManager::setSharedData("gameWon", true); GameManager::setSharedData("gameWon", true);
LOG("All levels cleared"); LOG("Vsi nivoji so zaključeni");
} }
} }
} }

View File

@@ -13,7 +13,7 @@ namespace Game::AGame {
void Enemy::start() { void Enemy::start() {
mZIndex = 20; mZIndex = 20;
addComponent<Object::Components::BoxCollider>(); addComponent<Object::Components::BoxCollider>();
LOG("Enemy started: " << getName()); LOG("Sovražnik zagnan: " << getName());
// Initialize random movement // Initialize random movement
const float angle = static_cast<float>(Utils::getUtils().rirng32(0, 360)) * 3.14159f / 180.f; const float angle = static_cast<float>(Utils::getUtils().rirng32(0, 360)) * 3.14159f / 180.f;
@@ -144,13 +144,13 @@ namespace Game::AGame {
} }
if (hasAdjacentEnemy()) { if (hasAdjacentEnemy()) {
LOG("Player collided with a strong group of polluters; game over!"); LOG("Igralec je trčil v močno skupino onesnaževalcev; konec igre!");
GameManager::setSharedData("gameLost", true); GameManager::setSharedData("gameLost", true);
GameManager::destroyEntity(player); GameManager::destroyEntity(player);
return; return;
} }
LOG("Enemy '" << getName() << "' collided with player; removing polluter and awarding points"); LOG("Sovražnik '" << getName() << "' je trčil v igralca; odstranjujem onesnaževalca in dodeljujem točke");
GameManager::setSharedData("enemyActiveCount", std::max(0, GameManager::getSharedData<int>("enemyActiveCount") - 1)); GameManager::setSharedData("enemyActiveCount", std::max(0, GameManager::getSharedData<int>("enemyActiveCount") - 1));
GameManager::setSharedData("gameScore", GameManager::getSharedData<int>("gameScore") + 100); GameManager::setSharedData("gameScore", GameManager::getSharedData<int>("gameScore") + 100);
GameManager::destroyEntity(this); GameManager::destroyEntity(this);

View File

@@ -11,7 +11,7 @@ namespace Game::AGame {
void Friendly::start() { void Friendly::start() {
mZIndex = 20; mZIndex = 20;
addComponent<Object::Components::BoxCollider>(); addComponent<Object::Components::BoxCollider>();
LOG("Friendly started: " << getName()); LOG("Zaveznik zagnan: " << getName());
// Initialize random movement // Initialize random movement
const float angle = static_cast<float>(Utils::getUtils().rirng32(0, 360)) * 3.14159f / 180.f; const float angle = static_cast<float>(Utils::getUtils().rirng32(0, 360)) * 3.14159f / 180.f;

View File

@@ -44,8 +44,11 @@ namespace Game::AGame {
return; return;
} }
const std::string playerName = GameManager::getSharedData<std::string>("playerName");
std::stringstream stream; std::stringstream stream;
stream << "Level " << GameManager::getSharedData<int>("gameStage") stream << "Igralec: " << (playerName.empty() ? std::string("Anonimni") : playerName)
<< " | Level " << GameManager::getSharedData<int>("gameStage")
<< " | Točke " << GameManager::getSharedData<int>("gameScore") << " | Točke " << GameManager::getSharedData<int>("gameScore")
<< " | Smeti " << GameManager::getSharedData<int>("trashActiveCount") << " | Smeti " << GameManager::getSharedData<int>("trashActiveCount")
<< " | Sovražniki " << GameManager::getSharedData<int>("enemyActiveCount"); << " | Sovražniki " << GameManager::getSharedData<int>("enemyActiveCount");

View File

@@ -99,7 +99,7 @@ namespace Game::AGame {
setTexture(mGroundTex); setTexture(mGroundTex);
} }
LOG("W: " << w << " H: " << h); LOG("Š: " << w << " V: " << h);
//mSound.~Sound(); //mSound.~Sound();
} }

View File

@@ -20,7 +20,7 @@ int main() {
PLNIMP("Letnik3Zadnja - Licenca: LGPLv2.1-only, CC BY-SA 4.0"); PLNIMP("Letnik3Zadnja - Licenca: LGPLv2.1-only, CC BY-SA 4.0");
// Prompt for player name before initializing the window/engine // Prompt for player name before initializing the window/engine
std::string playerName; std::string playerName;
std::cout << "Vnesi ime igralca (pritisni Enter za 'Igralec'): "; std::cout << "Vnesi uporabniško ime (pusti prazno za 'Igralec'): ";
std::getline(std::cin, playerName); std::getline(std::cin, playerName);
if (playerName.empty()) playerName = "Igralec"; if (playerName.empty()) playerName = "Igralec";
Game::GameManager::setSharedData<std::string>("playerName", playerName); Game::GameManager::setSharedData<std::string>("playerName", playerName);

View File

@@ -6,7 +6,7 @@
namespace Game::Object::Components { namespace Game::Object::Components {
BoxCollider::BoxCollider(const BoxCollider& other) : Component(other) { BoxCollider::BoxCollider(const BoxCollider& other) : Component(other) {
LOG("Copied BoxCollider Component: " << mName); LOG("Kopiran BoxCollider komponenta: " << mName);
} }
BoxCollider& BoxCollider::operator=(const BoxCollider& other) { BoxCollider& BoxCollider::operator=(const BoxCollider& other) {
@@ -17,7 +17,7 @@ namespace Game::Object::Components {
} }
BoxCollider::BoxCollider(BoxCollider&& other) noexcept : Component(std::move(other)) { BoxCollider::BoxCollider(BoxCollider&& other) noexcept : Component(std::move(other)) {
LOG("Moved BoxCollider Component: " << mName); LOG("Premaknjena BoxCollider komponenta: " << mName);
} }
BoxCollider& BoxCollider::operator=(BoxCollider&& other) noexcept { BoxCollider& BoxCollider::operator=(BoxCollider&& other) noexcept {

View File

@@ -9,7 +9,7 @@ namespace Game::Object {
Entity::~Entity() = default; Entity::~Entity() = default;
Entity::Entity(const Entity& other) : mName(other.mName), mTex(other.mTex), mTransform(other.mTransform), mIsActive(other.mIsActive) { Entity::Entity(const Entity& other) : mName(other.mName), mTex(other.mTex), mTransform(other.mTransform), mIsActive(other.mIsActive) {
LOG("Copied Entity: " << mName); LOG("Kopirana entiteta: " << mName);
} }
Entity& Entity::operator=(const Entity& other) { Entity& Entity::operator=(const Entity& other) {
@@ -24,7 +24,7 @@ namespace Game::Object {
Entity::Entity(Entity&& other) noexcept : mName(std::move(other.mName)), mTex(other.mTex), mTransform(other.mTransform), mIsActive(other.mIsActive) { Entity::Entity(Entity&& other) noexcept : mName(std::move(other.mName)), mTex(other.mTex), mTransform(other.mTransform), mIsActive(other.mIsActive) {
other.mTex = nullptr; other.mTex = nullptr;
LOG("Moved Entity: " << mName); LOG("Premaknjena entiteta: " << mName);
} }
Entity& Entity::operator=(Entity&& other) noexcept { Entity& Entity::operator=(Entity&& other) noexcept {

View File

@@ -17,7 +17,7 @@ namespace Game::Renderer {
if (mRenderer) { if (mRenderer) {
SDL_DestroyRenderer(mRenderer); SDL_DestroyRenderer(mRenderer);
mRenderer = nullptr; mRenderer = nullptr;
LOG("Destroyed Renderer"); LOG("Renderer uničen");
} }
} }
@@ -27,22 +27,22 @@ namespace Game::Renderer {
mRenderer = SDL_CreateRenderer(window, nullptr); mRenderer = SDL_CreateRenderer(window, nullptr);
if (!mRenderer) { if (!mRenderer) {
std::string errorMsg = "Failed to create renderer: " + std::string(SDL_GetError()); std::string errorMsg = std::string("Neuspešno ustvarjanje rendererja: ") + std::string(SDL_GetError());
ERROR(errorMsg.c_str()); ERROR(errorMsg.c_str());
return false; return false;
} }
mVSyncEnabled = SDL_SetRenderVSync(mRenderer, 1); mVSyncEnabled = SDL_SetRenderVSync(mRenderer, 1);
if (!mVSyncEnabled) { if (!mVSyncEnabled) {
WARN("VSync could not be enabled, using software frame pacing fallback: " << SDL_GetError()); WARN("VSync ni mogoče omogočiti, uporabljam programsko omejitev okvirjev: " << SDL_GetError());
} }
if (!SDL_SetRenderDrawColor(mRenderer, 0, 0, 255, 255)) { if (!SDL_SetRenderDrawColor(mRenderer, 0, 0, 255, 255)) {
ERROR("Failed to set renderer draw color: " << SDL_GetError()); ERROR("Neuspelo nastavitev barve rendererja: " << SDL_GetError());
return false; return false;
} }
LOG("Renderer created successfully"); LOG("Renderer uspešno ustvarjen");
return true; return true;
} }

View File

@@ -41,7 +41,7 @@ namespace Game::Renderer {
Texture::~Texture() { Texture::~Texture() {
if (mTex) if (mTex)
SDL_DestroyTexture(mTex); SDL_DestroyTexture(mTex);
LOG("Destroyed texture '" << mId << "'") LOG("Tekstura '" << mId << "' uničena")
} }
SDL_Texture* Texture::getSDLTexture() { SDL_Texture* Texture::getSDLTexture() {

View File

@@ -14,14 +14,14 @@ namespace Game::Window {
if (mGameThread.joinable()) { if (mGameThread.joinable()) {
mGameThread.request_stop(); mGameThread.request_stop();
mGameThread.join(); mGameThread.join();
LOG("Game thread stopped successfully"); LOG("Nit igre uspešno ustavljena");
} }
if (mWindow) { if (mWindow) {
SDL_DestroyWindow(mWindow); SDL_DestroyWindow(mWindow);
mWindow = nullptr; mWindow = nullptr;
sWindowBackend = nullptr; sWindowBackend = nullptr;
LOG("Window destroyed successfully"); LOG("Okno uspešno uničeno");
} }
SDL_Quit(); SDL_Quit();
} }
@@ -50,7 +50,7 @@ namespace Game::Window {
mLastWindowHeight = height; mLastWindowHeight = height;
sWindowBackend = mWindow; sWindowBackend = mWindow;
LOG("Window created successfully"); LOG("Okno uspešno ustvarjeno");
if (!mRenderer.init(mWindow)) { if (!mRenderer.init(mWindow)) {
SDL_DestroyWindow(mWindow); SDL_DestroyWindow(mWindow);
@@ -64,17 +64,17 @@ namespace Game::Window {
if (mRenderer.isVSyncEnabled()) { if (mRenderer.isVSyncEnabled()) {
const int vsyncCap = std::max(1, mTargetFPS - VSYNC_FPS_OFFSET); const int vsyncCap = std::max(1, mTargetFPS - VSYNC_FPS_OFFSET);
mEffectiveFrameCap = vsyncCap; mEffectiveFrameCap = vsyncCap;
LOG("Low-latency VSync mode enabled. Target FPS: " << mTargetFPS << ", cap: " << mEffectiveFrameCap); LOG("Low-latency VSync mode vključen. Target FPS: " << mTargetFPS << ", cap: " << mEffectiveFrameCap);
} else { } else {
mEffectiveFrameCap = std::max(1, mTargetFPS); mEffectiveFrameCap = std::max(1, mTargetFPS);
LOG("VSync unavailable, using software cap: " << mEffectiveFrameCap); LOG("VSync ni na voljo, uporabljam programski limit: " << mEffectiveFrameCap);
} }
#else #else
mEffectiveFrameCap = std::max(1, mTargetFPS); mEffectiveFrameCap = std::max(1, mTargetFPS);
#endif #endif
mGameManager.setTargetUpdatesPerSecond(TARGET_UPDATE_RATE); mGameManager.setTargetUpdatesPerSecond(TARGET_UPDATE_RATE);
LOG("Target updates per second: " << mGameManager.getTargetUpdatesPerSecond()); LOG("Ciljna hitrost posodobitev na sekundo: " << mGameManager.getTargetUpdatesPerSecond());
mGameThread = std::jthread(std::bind_front(&Game::GameManager::run, &mGameManager)); mGameThread = std::jthread(std::bind_front(&Game::GameManager::run, &mGameManager));