78 lines
1.7 KiB
C++
78 lines
1.7 KiB
C++
#include "ball.hpp"
|
|
#include "ax_funktions.hpp"
|
|
|
|
|
|
|
|
ball::ball()
|
|
{
|
|
std::cout << "Ball erzeugt!"<< std::endl;
|
|
|
|
r_dir = 0;
|
|
g_dir = -1;
|
|
b_dir = 1;
|
|
|
|
velx = 200;
|
|
vely = 200;
|
|
|
|
rect = {20,20,20,20};
|
|
color = {255,0,0,255};
|
|
}
|
|
|
|
ball::~ball()
|
|
{
|
|
}
|
|
|
|
int ball::GetXPos(){
|
|
return rect.x;
|
|
}
|
|
|
|
int ball::GetYPos(){
|
|
return rect.y;
|
|
}
|
|
|
|
void ball::Draw(SDL_Renderer* renderer){
|
|
rect.x;
|
|
rect.y;
|
|
SDL_SetRenderDrawColor(renderer, color.r, color.g, color.b, color.a);
|
|
SDL_RenderFillRect(renderer, &rect);
|
|
}
|
|
|
|
void ball::Update(float f_DeltaTime){
|
|
color.r += r_dir;
|
|
color.g += g_dir;
|
|
color.b += b_dir;
|
|
|
|
//=================ColorCycle======================
|
|
// Clamp values between 1 and 254
|
|
color.g = ax::clamp_int(color.g, 1, 254);
|
|
color.b = ax::clamp_int(color.b, 1, 254);
|
|
color.r = ax::clamp_int(color.r, 1, 254);
|
|
|
|
// Transition logic
|
|
if (r_dir != 0 && (color.r == 254 || color.r == 1)) {
|
|
r_dir = 0;
|
|
g_dir = (color.r == 254) ? 1 : -1;
|
|
b_dir = 0;
|
|
}
|
|
else if (g_dir != 0 && (color.g == 254 || color.g == 1)) {
|
|
g_dir = 0;
|
|
b_dir = (color.g == 254) ? 1 : -1;
|
|
r_dir = (color.g == 254) ? -1 : 1;
|
|
}
|
|
else if (b_dir != 0 && (color.b == 254 || color.b == 1)) {
|
|
b_dir = 0;
|
|
r_dir = 0;
|
|
g_dir = (color.b == 254) ? -1 : 1;
|
|
}
|
|
|
|
//=================Movement======================
|
|
//Update Position
|
|
rect.x +=velx * f_DeltaTime;
|
|
rect.y +=vely * f_DeltaTime;
|
|
//Kollisioinstest Fenster 1024x768
|
|
if(rect.x > (1024 -20) || rect.x < 0) velx *= -0.5;
|
|
if(rect.y > (768 - 20) || rect.y < 0) vely *= -0.5;
|
|
//std::cout << velx <<"|"<< vely <<std::endl;
|
|
|
|
}
|