primera faeneta
This commit is contained in:
1 parent
2cd3f807ec
commit
6961986ad2
9 files changed
+193
No files matched your search
@@ -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
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
|
build/
|
||||||
|
|
||||||
# ---> C++
|
# ---> C++
|
||||||
# Prerequisites
|
# Prerequisites
|
||||||
*.d
|
*.d
|
||||||
@@ -82,6 +84,7 @@ $RECYCLE.BIN/
|
|||||||
# Icon must end with two \r
|
# Icon must end with two \r
|
||||||
Icon
|
Icon
|
||||||
|
|
||||||
|
|
||||||
# Thumbnails
|
# Thumbnails
|
||||||
._*
|
._*
|
||||||
|
|
||||||
|
|||||||
@@ -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)
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
#include <memory>
|
||||||
|
|
||||||
|
#include "system/director.hpp"
|
||||||
|
|
||||||
|
auto main() -> int {
|
||||||
|
auto director = std::make_unique<Director>();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
@@ -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;
|
||||||
|
}
|
||||||
@@ -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();
|
||||||
|
};
|
||||||
@@ -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
|
||||||
@@ -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;
|
||||||
|
}
|
||||||
@@ -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;
|
||||||
|
};
|
||||||
Reference in new issue
Block a user