change color based on position of sone

This commit is contained in:
Nikola Petrov 2024-08-20 20:04:26 +02:00
parent f58fabcea9
commit ed9d049fa3
4 changed files with 28 additions and 3 deletions

View File

@ -41,8 +41,8 @@ private:
constexpr static size_t numOfStarts = 150; constexpr static size_t numOfStarts = 150;
constexpr static float moonXOffset = 0.1f; constexpr static float moonXOffset = 0.1f;
constexpr static float minSizeOfMoon = 0.075f; constexpr static float minSizeOfMoon = 0.1f;
constexpr static float maxSizeOfMoon = 0.1f; constexpr static float maxSizeOfMoon = 0.15f;
constexpr static float maxYPosOfMoon = 0.80f; constexpr static float maxYPosOfMoon = 0.80f;
constexpr static float bigRingRatio = 0.5f; constexpr static float bigRingRatio = 0.5f;
constexpr static float smallRingRatio = 0.25f; constexpr static float smallRingRatio = 0.25f;

View File

@ -7,6 +7,7 @@ public:
~Sun() = default; ~Sun() = default;
void init(); void init();
void deinit(); void deinit();
void setColor(Color color);
void draw(float x, float y, float size); void draw(float x, float y, float size);
private: private:
const int sizeTexute = 250; const int sizeTexute = 250;

View File

@ -1,3 +1,5 @@
#include <cmath>
#include "canvas/BackGround.hpp" #include "canvas/BackGround.hpp"
#include "canvas/BackGroundColors.hpp" #include "canvas/BackGroundColors.hpp"
#include "Math.hpp" #include "Math.hpp"
@ -91,10 +93,23 @@ void BackGround::drawStarts()
void BackGround::drawSun() 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 xpos = Lerp(size * moonXOffset, size - size * moonXOffset, m_moon.x);
int ypos = Lerp(size * moonXOffset, maxYPosOfMoon * size, m_moon.y); 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); sun.draw(xpos, ypos, r);
} }

View File

@ -58,6 +58,15 @@ void Sun::deinit()
UnloadRenderTexture(target); 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) void Sun::draw(float x, float y, float size)
{ {
Rectangle dest = { x-size, y - size, size * 2, size * 2}; Rectangle dest = { x-size, y - size, size * 2, size * 2};