0
0
mirror of https://github.com/Nimac0/SDL_Minigame synced 2026-01-12 15:53:42 +00:00

fixed some issues stemming from the removal of the window-size constant variables

This commit is contained in:
freezarite 2024-12-16 13:12:53 +01:00
parent 84cee5e307
commit abe018f99b
4 changed files with 18 additions and 13 deletions

View File

@ -11,6 +11,7 @@
#include "Vector2D.h"
#include "Entity.h"
#include "RenderManager.h"
#include "ConfigLoader.h"
typedef std::function<void()> gamefunction;
@ -48,6 +49,8 @@ public:
RenderManager renderManager;
Map* map; // game specific, might not be needed for all types of games
ConfigLoader* config;
std::vector<Entity*>& tiles;
std::vector<Entity*>& players;
std::vector<Entity*>& projectiles;

View File

@ -14,6 +14,7 @@
#include "Vector2D.h"
#include "PowerupComponent.h"
#include <iostream>
#include <VEGO.h>
#include "Textures.h"
@ -76,8 +77,8 @@ Vector2D AssetManager::calculateSpawnPosition()
{
SDL_Rect spawnRect;
spawnRect.h = spawnRect.w = 32;
spawnRect.x = rand() % (SCREEN_SIZE_WIDTH - spawnRect.w);
spawnRect.y = rand() % (SCREEN_SIZE_HEIGHT - spawnRect.h);
spawnRect.x = rand() % (VEGO_Game().config->getFinalConfig().at("width").get<int>() - spawnRect.w);
spawnRect.y = rand() % (VEGO_Game().config->getFinalConfig().at("height").get<int>() - spawnRect.h);
conflict = false;
for (auto cc : this->man->getGame()->collisionHandler->getColliders({ Entity::GroupLabel::MAPTILES }))
{

View File

@ -10,6 +10,7 @@
#include <bitset>
#include <cstdio>
#include <memory>
#include <VEGO.h>
IntersectionBitSet CollisionHandler::getIntersection(Entity* entityA, Entity* entityB, Vector2D posModA, Vector2D posModB)
{
@ -66,20 +67,20 @@ IntersectionBitSet CollisionHandler::getIntersectionWithBounds(Entity* entity, V
// all 4 directions and both sides to allow checking for fully out of bounds
if (collider->x + posMod.x < 0 ||
collider->x + posMod.x > SCREEN_SIZE_WIDTH) {
collider->x + posMod.x > VEGO_Game().config->getFinalConfig().at("width")) {
intersections.set((size_t) Direction::LEFT);
}
if (collider->x + collider->w + posMod.x < 0 ||
collider->x + collider->w + posMod.x > SCREEN_SIZE_WIDTH)
collider->x + collider->w + posMod.x > VEGO_Game().config->getFinalConfig().at("width"))
intersections.set((size_t) Direction::RIGHT);
if (collider->y + posMod.y < 0 ||
collider->y + posMod.y > SCREEN_SIZE_HEIGHT)
collider->y + posMod.y > VEGO_Game().config->getFinalConfig().at("height"))
intersections.set((size_t) Direction::UP);
if (collider->y + collider->h + posMod.y < 0 ||
collider->y + collider->h + posMod.y > SCREEN_SIZE_HEIGHT)
collider->y + collider->h + posMod.y > VEGO_Game().config->getFinalConfig().at("height"))
intersections.set((size_t) Direction::DOWN);
return intersections;

View File

@ -31,13 +31,13 @@ GameInternal::~GameInternal() = default;
SDL_AppResult GameInternal::init()
{
ConfigLoader* loader = new ConfigLoader();
config = new ConfigLoader;
this->gameInstance = GameFactory::instance().create(this);
loader->setCustomConfig(this->gameInstance->getConfigFilePath());
loader->init();
config->setCustomConfig(this->gameInstance->getConfigFilePath());
config->init();
json config = loader->getFinalConfig();
json finalConfig = config->getFinalConfig();
GameInternal::assets = new AssetManager(&manager);
GameInternal::textureManager = new TextureManager(&manager);
@ -45,7 +45,7 @@ SDL_AppResult GameInternal::init()
GameInternal::collisionHandler = new CollisionHandler(manager); // why does this use a referrence, but AssetManager a pointer?
int flags = 0;
if (config.at("fullscreen"))
if (finalConfig.at("fullscreen"))
{
flags = SDL_WINDOW_FULLSCREEN;
}
@ -62,7 +62,7 @@ SDL_AppResult GameInternal::init()
return SDL_APP_FAILURE;
}
window = SDL_CreateWindow(config.at("title").get<std::string>().c_str(), config.at("width"), config.at("height"), flags);
window = SDL_CreateWindow(finalConfig.at("title").get<std::string>().c_str(), finalConfig.at("width"), finalConfig.at("height"), flags);
if (!window)
{
std::cout << "ERROR: Window couldnt be created! " << SDL_GetError() << std::endl;
@ -72,7 +72,7 @@ SDL_AppResult GameInternal::init()
// bad
SDL_Surface* icon;
if((icon = SDL_LoadBMP(config.at("icon").get<std::string>().c_str())))
if((icon = SDL_LoadBMP(finalConfig.at("icon").get<std::string>().c_str())))
{
SDL_SetWindowIcon(window, icon);
}