123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- module ui.effects;
- import raylib;
- import std.stdio;
- import variables;
- import std.string;
- import system.abstraction;
- import std.file;
- int screenWidth;
- int screenHeight;
- Texture2D[] loadAnimationFramesUI(const string fileDir, const string animationFileName)
- {
- screenWidth = systemSettings.defaultScreenWidth;
- screenHeight = systemSettings.defaultScreenHeight;
- Texture2D[] frames;
- uint frameIndex = 1;
- while (true)
- {
- string frameFileName = format("%s-%03d.png", animationFileName, frameIndex);
- if (std.file.exists(fileDir~"/"~frameFileName) == false) break;
- debug debugWriteln(frameFileName);
- Texture2D texture = LoadTexture((fileDir~"/"~frameFileName).toStringz());
- frames ~= texture;
- debug debugWriteln("Loaded frame for UI ", frameIndex, " - ", frameFileName);
- frameIndex++;
- }
- debug debugWriteln("Frames for ui animations length: ", frames.length);
- return frames;
- }
- void playUIAnimation(Texture2D[] frames)
- {
- static float frameTime = 0.0f;
-
- if (playAnimation) {
- frameTime += GetFrameTime();
-
- while (frameTime >= frameDuration && frameDuration > 0) {
- frameTime -= frameDuration;
- currentFrame = cast(int)((currentFrame + 1) % frames.length);
- }
- int frameWidth = frames[currentFrame].width;
- int frameHeight = frames[currentFrame].height;
-
- DrawTexturePro(
- frames[currentFrame],
- Rectangle(0, 0, frameWidth, frameHeight),
- Rectangle(0, 0, screenWidth, screenHeight),
- Vector2(0, 0),
- 0,
- Color(255, 255, 255, 127)
- );
- } else {
- frameTime = 0.0f;
- currentFrame = 0;
- }
- }
- void fadeEffect(float alpha, bool fadeIn, void delegate(float alpha) renderer)
- {
- const float FadeIncrement = 0.02f;
- while (fadeIn ? alpha < 2.0f : alpha > 0.0f)
- {
- alpha += fadeIn ? FadeIncrement : -FadeIncrement;
- BeginDrawing();
- ClearBackground(Colors.BLACK);
- renderer(alpha);
- EndDrawing();
- }
- }
- void renderText(float alpha, immutable(char)* text)
- {
- DrawTextEx(textFont, text,
- Vector2(GetScreenWidth() / 2 - MeasureText(text, 40) / 2,
- GetScreenHeight() / 2), 40, 0, Fade(Colors.WHITE, alpha)
- );
- }
- void helloScreen()
- {
- debug
- {
- bool play = false;
- debugWriteln("hello screen showing");
- if (play == false) {
- videoFinished = true;
- }
- } else {
- fadeEffect(0.0f, true, (float alpha) {
- renderText(alpha, "powered by\n\nHimmel Engine");
- });
- fadeEffect(2.0f, false, (float alpha) {
- renderText(alpha, "powered by\n\nHimmel Engine");
- });
- /*
- fadeEffect(0.0f, true, (float alpha) {
- renderLogo(alpha, "atlus_logo.png".toStringz, true);
- });
-
- fadeEffect(fadeAlpha, false, (float alpha) {
- renderLogo(alpha, "atlus_logo.png".toStringz, true);
- });
- */
- // Play Opening Video
- }
- }
|