From a1aacff68705bec38be6ca78b68164b451ce20b3 Mon Sep 17 00:00:00 2001 From: /nick haya <74699483+The-SGPT@users.noreply.github.com> Date: Wed, 16 Feb 2022 14:04:01 +0800 Subject: [PATCH] transitions currently buggy tho --- CMakeLists.txt | 20 +++--- DOCUMENTATION.md | 1 + bin/data/images/black.png | Bin 339 -> 12449 bytes src/Main.cpp | 4 ++ src/libflixel.hpp | 128 ++++++++++++++++++++++++++++++-------- 5 files changed, 116 insertions(+), 37 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index fa8acc7..23c38cb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,5 @@ -# Make sur cmake is 3.8 -cmake_minimum_required(VERSION 3.8) +# Make sur cmake is 3.10 +cmake_minimum_required(VERSION 3.10) # proj name project(Skateboard) @@ -14,16 +14,16 @@ set(OUT5_INCLUDE_DIRS "${CMAKE_CURRENT_LIST_DIR}/src/SDL_gpu/") option(PREFER_MODPLUG "Use libmodplug api instead of libopenmpt for module playback" ON) +if (${CMAKE_SIZEOF_VOID_P} MATCHES 8) + set(MAIN_LIBRARIES_E "${CMAKE_CURRENT_LIST_DIR}/lib/x64") +else () + set(MAIN_LIBRARIES_E "${CMAKE_CURRENT_LIST_DIR}/lib/x86") +endif () + # Support both 32 and 64 bit builds # Someone make a pull request to support MingW # Way to lazy to do that right now -if (${CMAKE_SIZEOF_VOID_P} MATCHES 8) - set(MAIN_LIBRARIES "${CMAKE_CURRENT_LIST_DIR}/lib/x64/SDL2_gpu.lib;${CMAKE_CURRENT_LIST_DIR}/lib/x64/libmodplug.lib;${CMAKE_CURRENT_LIST_DIR}/lib/x64/soloud_static.lib;${CMAKE_CURRENT_LIST_DIR}/lib/x64/SDL2.lib;${CMAKE_CURRENT_LIST_DIR}/lib/x64/SDL2_ttf.lib") - set(MAIN_LIBRARIES_E "${CMAKE_CURRENT_LIST_DIR}/lib/x64/") -else () - set(MAIN_LIBRARIES "${CMAKE_CURRENT_LIST_DIR}/lib/x86/SDL2_gpu.lib;${CMAKE_CURRENT_LIST_DIR}/lib/x86/libmodplug.lib;${CMAKE_CURRENT_LIST_DIR}/lib/x86/soloud_static.lib;${CMAKE_CURRENT_LIST_DIR}/lib/x86/SDL2.lib;${CMAKE_CURRENT_LIST_DIR}/lib/x86/SDL2_ttf.lib") - set(MAIN_LIBRARIES_E "${CMAKE_CURRENT_LIST_DIR}/lib/x86/") -endif () +set(MAIN_LIBRARIES "${MAIN_LIBRARIES_E}/SDL2_gpu.lib;${MAIN_LIBRARIES_E}/libmodplug.lib;${MAIN_LIBRARIES_E}/soloud_static.lib;${MAIN_LIBRARIES_E}/SDL2.lib;${MAIN_LIBRARIES_E}/SDL2_ttf.lib") # strip it all string(STRIP "${MAIN_LIBRARIES}" MAIN_LIBRARIES) @@ -80,7 +80,7 @@ set_target_properties(Skateboard PROPERTIES ) # copy dll files -file(COPY ${MAIN_LIBRARIES_E} DESTINATION ${BUILD_DIRECTORY}) +file(COPY "${MAIN_LIBRARIES_E}/" DESTINATION ${BUILD_DIRECTORY}) # remove lib files file(REMOVE_RECURSE "${BUILD_DIRECTORY}/*.lib") diff --git a/DOCUMENTATION.md b/DOCUMENTATION.md index fbaa46e..28ffb76 100644 --- a/DOCUMENTATION.md +++ b/DOCUMENTATION.md @@ -28,6 +28,7 @@ To use it (in windows atleast), - Get SDL2 and SDL_ttf 2.0, and put em on the respective x86 and x64 folders. You know how to place them. It's fucking common sense. +- Get SDL_gpu as well. - [SoLoud fork.](https://github.com/haya3218/soloud) Follow GENie instructions and build as a static library. - You also need to build libmodplug with it as well. - If you are gonna be using the OpenMPT module, you'll need the libopenmpt dll in your exe directory as well. diff --git a/bin/data/images/black.png b/bin/data/images/black.png index 00e8199e693916c0c5519ba2cd27df539173ffc4..4e4359a92219ce92c470814b0fe65eb71462a577 100644 GIT binary patch literal 12449 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 diff --git a/src/Main.cpp b/src/Main.cpp index 52c455c..b091098 100644 --- a/src/Main.cpp +++ b/src/Main.cpp @@ -39,6 +39,7 @@ class ExampleState : public sdfml::sdState { add(&bg1); bg1.updateCamera(&camera); add(&example); + //bg1.screenCenter(); } virtual void update(float elapsed) { if (sdfml::key_pressed(SDL_SCANCODE_LEFT)) @@ -49,9 +50,12 @@ class ExampleState : public sdfml::sdState { example.y -= 1; if (sdfml::key_pressed(SDL_SCANCODE_DOWN)) example.y += 1; + if (sdfml::key_just_pressed(SDL_SCANCODE_R)) + sdfml::switchState(this); bg1.scale.x = sin(sdfml::elapsed/100); bg1.scale.y = cos(sdfml::elapsed/100); + bg1.screenCenter(); sdfml::focusCamera(&camera, example); diff --git a/src/libflixel.hpp b/src/libflixel.hpp index 0e211a1..b8d8cec 100644 --- a/src/libflixel.hpp +++ b/src/libflixel.hpp @@ -38,6 +38,9 @@ #include "SDL_gpu/SDL_gpu.h" +#include // std::this_thread::sleep_for +#include // std::chrono::seconds + #ifdef _WIN32 #define __FILENAME__ (strrchr(__FILE__, '\\') ? strrchr(__FILE__, '\\') + 1 : __FILE__) #else @@ -65,6 +68,13 @@ struct Vector2 int y = 0; }; +template +struct Vector3 { + T r; + T g; + T b; +}; + enum lLOG_TYPE { NORMAL, WARNING, @@ -147,6 +157,25 @@ namespace sdfml { static context mContext; + template + inline int getIndex(vector v, T K) + { + auto it = find(v.begin(), v.end(), K); + + // If element was found + if (it != v.end()) + { + + // calculating the index + // of K + int index = it - v.begin(); + return index; + } + else { + return -1; + } + } + class sdSprite { public: int x, y, width, height; @@ -156,6 +185,8 @@ namespace sdfml { Vector2f scale = {1, 1}; Vector2 offset; + Vector3 color; + virtual void create(int x, int y, string path) { this->x = x; this->y = y; @@ -163,34 +194,26 @@ namespace sdfml { GPU_SetBlendMode(_tex_gpu, GPU_BLEND_NORMAL); width = _tex_gpu->w; height = _tex_gpu->h; + color.r = 255; + color.g = 255; + color.b = 255; } - SDL_Rect emptyRect = {0, 0, 0, 0}; GPU_Rect *r; virtual void update(float elapsed) { _x = x+offset.x; _y = y+offset.y; - _w = width*scale.x; - _h = height*scale.y; - - _sc.x = _x-_camera->x; - _sc.y = _y-_camera->y; - _sc.w = _w; - _sc.h = _h; - - // GPU_SetRGBA(_tex_gpu, 255, 255, 255, alpha*255); - + GPU_SetRGBA(_tex_gpu, color.r, color.g, color.b, alpha*255); r = &_src_rect; - if (r->w == 0) r = NULL; - GPU_BlitRectX(_tex_gpu, r, mContext.gpu_render, &_sc, angle, NULL, NULL, GPU_FLIP_NONE); + GPU_Rect dst = {static_cast(_x-_camera->x), static_cast(_y-_camera->y), width*scale.x, height*scale.y}; + GPU_BlitRectX(_tex_gpu, r, mContext.gpu_render, &dst, angle, NULL, NULL, GPU_FLIP_NONE); } virtual void destroy() { _x = 0; _y = 0; _w = 0; _h = 0; - _sc = {0, 0, 0, 0}; GPU_FreeImage(_tex_gpu); } virtual void updateCamera(SDL_Rect* camera) { @@ -213,7 +236,6 @@ namespace sdfml { protected: int _x, _y, _w, _h; - GPU_Rect _sc; GPU_Rect _src_rect = {0, 0, 0, 0}; SDL_Rect dummy = {0, 0, 0, 0}; sdCam _cam; @@ -316,7 +338,10 @@ namespace sdfml { vector get_mspr() { return _mut_sprites; } - private: + void freeSprites() { + _mut_sprites.clear(); + _sprites.clear(); + } vector _mut_sprites; vector _sprites; }; @@ -423,14 +448,22 @@ namespace sdfml { static const Uint8* kb_last; inline bool key_just_pressed(SDL_Scancode code) { - if (kb[code] && !kb_last[code]) - return true; + while (SDL_PollEvent(&mContext.events)) + { + if (mContext.events.type == SDL_KEYDOWN) + if (mContext.events.key.keysym.scancode == code) + return true; + } return false; } inline bool key_just_released(SDL_Scancode code) { - if (!kb[code] && kb_last[code]) - return true; + while (SDL_PollEvent(&mContext.events)) + { + if (mContext.events.type == SDL_KEYUP) + if (mContext.events.key.keysym.scancode == code) + return true; + } return false; } @@ -502,12 +535,12 @@ namespace sdfml { float elapsedMS = (float)(end - start) / SDL_GetPerformanceFrequency() * 1000.0f; - kb_last = SDL_GetKeyboardState(NULL); - elapsed += 1; SDL_Delay(floor((1000.0f/FRAMERATE) - elapsedMS)); + kb_last = SDL_GetKeyboardState(NULL); + GPU_Flip(mContext.gpu_render); } @@ -530,12 +563,18 @@ namespace sdfml { return 0; } - inline void switchState(sdState* state) { + static sdSprite transitionSprite; + static sdSprite transitionSprite2; + static sdTimer fadeTimer; + static sdTimer switchTimer; + + inline double clamp(double d, double min, double max) { + const double t = d < min ? min : d; + return t > max ? max : t; + } + + inline int lmao(sdState* state) { if (curState != nullptr) { - _ticks = {}; - _call = {}; - _repeats = {}; - _sec = {}; if (curState->get_spr().size() > 0) { for (auto texture : curState->get_spr()) { texture->destroy(); @@ -546,9 +585,44 @@ namespace sdfml { texture.destroy(); } } + curState->freeSprites(); } curState = state; + _ticks = {}; + _call = {}; + _repeats = {}; + _sec = {}; curState->create(); + transitionSprite2.create(0, 0, "data/images/black.png"); + curState->add(&transitionSprite2); + fadeTimer.start(0, []() { + transitionSprite2.x = clamp(transitionSprite2.x - 10, -mContext.size.x, 0); + return 0; + }, true); + + return 0; + } + + inline void switchState(sdState* state) { + try { + if (curState != nullptr) { + transitionSprite.create(mContext.size.x, 0, "data/images/black.png"); + curState->add(&transitionSprite); + fadeTimer.start(0, []() { + transitionSprite.x = clamp(transitionSprite.x - 7, 0, mContext.size.x); + return 0; + }, true); + switchTimer.start(1, [state](){ + lmao(state); + return 0; + }); + } else { + lmao(state); + } + } + catch (...) { + lmao(state); + } } } #endif \ No newline at end of file