From ff2967c7e57d329c7d396fc697e9a89010c645cf Mon Sep 17 00:00:00 2001 From: h4570 Date: Sat, 30 Jul 2022 15:03:46 +0200 Subject: [PATCH] support for 512x512 textures --- .../states/intro/states/intro_war_info_state.hpp | 3 +++ demo/src/states/intro/intro_state.cpp | 4 ++-- .../src/states/intro/states/intro_tyra_state.cpp | 2 ++ .../states/intro/states/intro_war_info_state.cpp | 16 +++++++++++++++- .../src/renderer/core/texture/models/texture.cpp | 14 ++++++++------ 5 files changed, 30 insertions(+), 9 deletions(-) diff --git a/demo/inc/states/intro/states/intro_war_info_state.hpp b/demo/inc/states/intro/states/intro_war_info_state.hpp index f0abcc2..a2b7284 100644 --- a/demo/inc/states/intro/states/intro_war_info_state.hpp +++ b/demo/inc/states/intro/states/intro_war_info_state.hpp @@ -41,6 +41,9 @@ class IntroWarInfoState : public State { IntroStateType state; bool _wantFinish; bool initialized; + + Texture* warInfoTexture; + Sprite* warInfoSprite; }; } // namespace Demo diff --git a/demo/src/states/intro/intro_state.cpp b/demo/src/states/intro/intro_state.cpp index 5d51bb3..000a82b 100644 --- a/demo/src/states/intro/intro_state.cpp +++ b/demo/src/states/intro/intro_state.cpp @@ -21,7 +21,7 @@ using Tyra::FileUtils; namespace Demo { IntroState::IntroState(Engine* t_engine) - : State(t_engine), stateManager(STATE_PS2DEV) { + : State(t_engine), stateManager(STATE_WAR_INFO) { state = STATE_INTRO; _wantFinish = false; } @@ -32,7 +32,7 @@ void IntroState::onStart() { engine->audio.loadSong(FileUtils::fromCwd("intro/intro.wav")); engine->audio.setSongLoop(false); engine->audio.setSongVolume(80); - engine->audio.playSong(); + // engine->audio.playSong(); stateManager.add(new IntroPs2DevState(engine)); stateManager.add(new IntroTyraState(engine)); diff --git a/demo/src/states/intro/states/intro_tyra_state.cpp b/demo/src/states/intro/states/intro_tyra_state.cpp index 04b3f97..c767299 100644 --- a/demo/src/states/intro/states/intro_tyra_state.cpp +++ b/demo/src/states/intro/states/intro_tyra_state.cpp @@ -37,10 +37,12 @@ IntroTyraState::~IntroTyraState() { engine->renderer.core.texture.repository.free(tyraTexture->getId()); engine->renderer.core.texture.repository.free(bgTexture->getId()); + engine->renderer.core.texture.repository.free(bg2Texture->getId()); engine->renderer.core.texture.repository.free(fillerTexture->getId()); delete tyraSprite; delete bgSprite; + delete bg2Sprite; delete fillerSprite; } diff --git a/demo/src/states/intro/states/intro_war_info_state.cpp b/demo/src/states/intro/states/intro_war_info_state.cpp index 19ec422..30b4973 100644 --- a/demo/src/states/intro/states/intro_war_info_state.cpp +++ b/demo/src/states/intro/states/intro_war_info_state.cpp @@ -31,11 +31,25 @@ IntroWarInfoState::~IntroWarInfoState() { if (!initialized) return; } -void IntroWarInfoState::onStart() { initialized = true; } +void IntroWarInfoState::onStart() { + warInfoSprite = new Sprite; + warInfoSprite->size.set(512.0F, 512.0F); + warInfoSprite->position.set(0.0F, 0.0F); + + warInfoTexture = engine->renderer.core.texture.repository.add( + FileUtils::fromCwd("intro/war_info.png")); + warInfoTexture->addLink(warInfoSprite->getId()); + + initialized = true; +} void IntroWarInfoState::update() { engine->renderer.beginFrame(); + Threading::switchThread(); + + engine->renderer.renderer2D.render(warInfoSprite); + engine->renderer.endFrame(); } IntroStateType IntroWarInfoState::onFinish() { return STATE_PRESS_KEY; } diff --git a/engine/src/renderer/core/texture/models/texture.cpp b/engine/src/renderer/core/texture/models/texture.cpp index e979ab3..3a1c00c 100644 --- a/engine/src/renderer/core/texture/models/texture.cpp +++ b/engine/src/renderer/core/texture/models/texture.cpp @@ -24,18 +24,20 @@ Texture::Texture(TextureBuilderData* t_data) { name = t_data->name; - TYRA_ASSERT(t_data->width <= 256 && t_data->height <= 256, - "Tyra supports only 256x256 textures max!"); + TYRA_ASSERT(t_data->width <= 512 && t_data->height <= 512, + "Tyra supports only 512x512 textures max!"); TYRA_ASSERT(t_data->width == 8 || t_data->width == 16 || t_data->width == 32 || t_data->width == 64 || - t_data->width == 128 || t_data->width == 256, - "Texture width/height should be 8/16/32/64/128/256!"); + t_data->width == 128 || t_data->width == 256 || + t_data->width == 512, + "Texture width/height should be 8/16/32/64/128/256/512!"); TYRA_ASSERT(t_data->height == 8 || t_data->height == 16 || t_data->height == 32 || t_data->height == 64 || - t_data->height == 128 || t_data->height == 256, - "Texture width/height should be 8/16/32/64/128/256!"); + t_data->height == 128 || t_data->height == 256 || + t_data->height == 512, + "Texture width/height should be 8/16/32/64/128/256/512!"); core = new TextureData(t_data->data, t_data->bpp, t_data->gsComponents, t_data->width, t_data->height);