From ed9d049fa3fb80e0a89ec36a380247d97d0a0c3d Mon Sep 17 00:00:00 2001 From: Nikola Petrov Date: Tue, 20 Aug 2024 20:04:26 +0200 Subject: [PATCH] change color based on position of sone --- inc/canvas/BackGround.hpp | 4 ++-- inc/canvas/Sun.hpp | 1 + src/canvas/BackGround.cpp | 17 ++++++++++++++++- src/canvas/Sun.cpp | 9 +++++++++ 4 files changed, 28 insertions(+), 3 deletions(-) diff --git a/inc/canvas/BackGround.hpp b/inc/canvas/BackGround.hpp index de3062c..04916c0 100644 --- a/inc/canvas/BackGround.hpp +++ b/inc/canvas/BackGround.hpp @@ -41,8 +41,8 @@ private: constexpr static size_t numOfStarts = 150; constexpr static float moonXOffset = 0.1f; - constexpr static float minSizeOfMoon = 0.075f; - constexpr static float maxSizeOfMoon = 0.1f; + constexpr static float minSizeOfMoon = 0.1f; + constexpr static float maxSizeOfMoon = 0.15f; constexpr static float maxYPosOfMoon = 0.80f; constexpr static float bigRingRatio = 0.5f; constexpr static float smallRingRatio = 0.25f; diff --git a/inc/canvas/Sun.hpp b/inc/canvas/Sun.hpp index c23857e..7366d79 100644 --- a/inc/canvas/Sun.hpp +++ b/inc/canvas/Sun.hpp @@ -7,6 +7,7 @@ public: ~Sun() = default; void init(); void deinit(); + void setColor(Color color); void draw(float x, float y, float size); private: const int sizeTexute = 250; diff --git a/src/canvas/BackGround.cpp b/src/canvas/BackGround.cpp index 21b5dc7..0eae445 100644 --- a/src/canvas/BackGround.cpp +++ b/src/canvas/BackGround.cpp @@ -1,3 +1,5 @@ +#include + #include "canvas/BackGround.hpp" #include "canvas/BackGroundColors.hpp" #include "Math.hpp" @@ -91,10 +93,23 @@ void BackGround::drawStarts() void BackGround::drawSun() { - int r = ((m_moon.size * (maxSizeOfMoon - minSizeOfMoon)) + minSizeOfMoon) * size; + int r = ((m_moon.y * (maxSizeOfMoon - minSizeOfMoon)) + minSizeOfMoon) * size; int xpos = Lerp(size * moonXOffset, size - size * moonXOffset, m_moon.x); int ypos = Lerp(size * moonXOffset, maxYPosOfMoon * size, m_moon.y); + if (colorSet == 3) { + sun.setColor(BackGroundColors::moonColor); + r = ((m_moon.size * (maxSizeOfMoon - minSizeOfMoon)) + minSizeOfMoon) * size; + } + else { + Color color = {0}; + color.r = 255; + color.g = std::lerp(200, 50, m_moon.y); + color.b = std::lerp(50, 0, m_moon.y); + color.a = 255; + + sun.setColor(color); + } sun.draw(xpos, ypos, r); } diff --git a/src/canvas/Sun.cpp b/src/canvas/Sun.cpp index c3f72ed..0e0ef38 100644 --- a/src/canvas/Sun.cpp +++ b/src/canvas/Sun.cpp @@ -58,6 +58,15 @@ void Sun::deinit() UnloadRenderTexture(target); } +void Sun::setColor(Color color) +{ + c[0] = color.r / 255.0f; + c[1] = color.g / 255.0f; + c[2] = color.b / 255.0f; + colorLoc = GetShaderLocation(shader, "color"); + SetShaderValue(shader, colorLoc, c, SHADER_UNIFORM_VEC3); +} + void Sun::draw(float x, float y, float size) { Rectangle dest = { x-size, y - size, size * 2, size * 2};