primera faeneta

This commit is contained in:
JailDesigner committed 2026-11-03 14:15:50 +01:00
1 parent 2cd3f807ec
commit 6961986ad2
9 files changed
+193

No files matched your search

+22
View File
@@ -0,0 +1,22 @@
BasedOnStyle: Google
IndentWidth: 4
NamespaceIndentation: All
IndentAccessModifiers: false
ColumnLimit: 0 # Sin límite de longitud de línea
BreakBeforeBraces: Attach # Llaves en la misma línea
AllowShortIfStatementsOnASingleLine: true
AllowShortBlocksOnASingleLine: true
AllowShortFunctionsOnASingleLine: All
AlignOperands: DontAlign
AlignAfterOpenBracket: DontAlign
BinPackArguments: false
BinPackParameters: false
ContinuationIndentWidth: 4
ConstructorInitializerIndentWidth: 4
IndentWrappedFunctionNames: false
Cpp11BracedListStyle: true
BreakConstructorInitializers: BeforeColon
AllowAllConstructorInitializersOnNextLine: false
PackConstructorInitializers: Never
AllowAllArgumentsOnNextLine: false
AllowAllParametersOfDeclarationOnNextLine: false
+3
View File
@@ -1,3 +1,5 @@
build/
# ---> C++
# Prerequisites
*.d
@@ -82,6 +84,7 @@ $RECYCLE.BIN/
# Icon must end with two \r
Icon
# Thumbnails
._*
+19
View File
@@ -0,0 +1,19 @@
cmake_minimum_required(VERSION 3.16)
project(spectrum LANGUAGES CXX)
find_package(SDL3 REQUIRED CONFIG)
add_executable(spectrum
source/core/main.cpp
source/core/rendering/video.cpp
source/core/system/director.cpp
)
target_compile_features(spectrum PRIVATE cxx_std_20)
target_include_directories(spectrum PRIVATE
source/core
)
target_link_libraries(spectrum PRIVATE SDL3::SDL3)
+8
View File
@@ -0,0 +1,8 @@
#include <memory>
#include "system/director.hpp"
auto main() -> int {
auto director = std::make_unique<Director>();
return 0;
}
+65
View File
@@ -0,0 +1,65 @@
#include "rendering/video.hpp"
#include <SDL3/SDL.h>
Video::Video(Config config)
: config_(config) {
initSDL();
}
Video::~Video() {
cleanup();
}
void Video::cleanup() {
SDL_DestroyTexture(game_texture_);
game_texture_ = nullptr;
SDL_DestroyRenderer(renderer_);
renderer_ = nullptr;
SDL_DestroyWindow(window_);
window_ = nullptr;
}
auto Video::initSDL() -> int {
if (!SDL_Init(SDL_INIT_VIDEO)) {
SDL_Log("No se pudo inicializar SDL: %s", SDL_GetError());
return 1;
}
window_ = SDL_CreateWindow("Mi ventana", config_.width, config_.height, 0);
if (window_ == nullptr) {
SDL_Log("No se pudo crear la ventana: %s", SDL_GetError());
cleanup();
SDL_Quit();
return 1;
}
renderer_ = SDL_CreateRenderer(window_, nullptr);
if (renderer_ == nullptr) {
SDL_Log("No se pudo crear el renderer: %s", SDL_GetError());
cleanup();
SDL_Quit();
return 1;
}
// SDL_SetRenderVSync(renderer_, config_.vsync ? 1 : 0);
// SDL_SetRenderLogicalPresentation(renderer_, GameCanvas::WIDTH, GameCanvas::HEIGHT, toSdlPresentation(config_.scaling_mode));
game_texture_ = SDL_CreateTexture(renderer_, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_STREAMING, config_.width, config_.height);
if (game_texture_ == nullptr) {
SDL_Log("No se pudo crear la textura de juego: %s", SDL_GetError());
cleanup();
SDL_Quit();
return 1;
}
//SDL_SetTextureScaleMode(game_texture_, toSdlScaleMode(config_.texture_filter));
SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION,
"Video subsystem initialized successfully");
SDL_Delay(1000);
return 0;
}
+26
View File
@@ -0,0 +1,26 @@
#pragma once
#include <SDL3/SDL.h>
class Video {
public:
struct Config {
bool fullscreen{false};
float zoom{1.0F};
float width{320.0F};
float height{240.0F};
};
Video(Config config);
~Video();
private:
Config config_;
SDL_Window* window_{nullptr};
SDL_Renderer* renderer_{nullptr};
SDL_Texture* game_texture_{nullptr};
auto initSDL() -> int;
void cleanup();
};
+8
View File
@@ -0,0 +1,8 @@
#pragma once
namespace Defaults::Video {
constexpr int ZOOM = 3;
constexpr bool FULLSCREEN = false;
constexpr float WIDTH = 320.0F;
constexpr float HEIGHT = 240.0F;
} // namespace Defaults::Video
+26
View File
@@ -0,0 +1,26 @@
#include "system/director.hpp"
#include "rendering/video.hpp"
#include "system/defaults.hpp"
Director::Director() {
SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION,
"Game start!");
video = std::make_shared<Video>(
Video::Config{
Defaults::Video::FULLSCREEN,
Defaults::Video::ZOOM,
Defaults::Video::WIDTH,
Defaults::Video::HEIGHT});
}
Director::~Director() {
SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION,
"Bye!");
SDL_Quit();
}
auto Director::iterate() -> int {
return 0;
}
+16
View File
@@ -0,0 +1,16 @@
#pragma once
#include <memory>
#include "rendering/video.hpp"
class Director {
public:
Director();
~Director();
auto iterate() -> int;
private:
std::shared_ptr<Video> video;
};