76 lines
2.9 KiB
C++
76 lines
2.9 KiB
C++
#include "backend/bool_command.hpp"
|
|
#include "backend/int_command.hpp"
|
|
#include "backend/looped/looped.hpp"
|
|
#include "natives.hpp"
|
|
#include "script.hpp"
|
|
|
|
namespace big
|
|
{
|
|
float red = 255.f, green = 0.f, blue = 0.f;
|
|
void looped::vehicle_rainbow_paint()
|
|
{
|
|
static std::chrono::system_clock::time_point last_rgb_run_time;
|
|
static std::chrono::milliseconds delay = 0s;
|
|
static bool ran = false;
|
|
|
|
if (self::veh && g.vehicle.rainbow_paint.type != RainbowPaintType::Off)
|
|
{
|
|
if (g.vehicle.rainbow_paint.type == RainbowPaintType::Spasm && last_rgb_run_time + delay < std::chrono::system_clock::now())
|
|
{
|
|
red = rand() % 255;
|
|
green = rand() % 255;
|
|
blue = rand() % 255;
|
|
delay = std::chrono::milliseconds((110) - (g.vehicle.rainbow_paint.speed * 10));
|
|
last_rgb_run_time = std::chrono::system_clock::now();
|
|
ran = true;
|
|
}
|
|
|
|
if (g.vehicle.rainbow_paint.type == RainbowPaintType::Fade) //messy but gets job done
|
|
{
|
|
if (ran) { red = 255; green = 0; blue = 0; ran = false; }
|
|
|
|
if (red > 0 && blue == 0)
|
|
{
|
|
green += g.vehicle.rainbow_paint.speed;
|
|
red -= g.vehicle.rainbow_paint.speed;
|
|
}
|
|
if (green > 0 && red == 0)
|
|
{
|
|
blue += g.vehicle.rainbow_paint.speed;
|
|
green -= g.vehicle.rainbow_paint.speed;
|
|
}
|
|
if (blue > 0 && green == 0)
|
|
{
|
|
red += g.vehicle.rainbow_paint.speed;
|
|
blue -= g.vehicle.rainbow_paint.speed;
|
|
}
|
|
red = std::clamp(red, 0.f, 255.f);
|
|
green = std::clamp(green, 0.f, 255.f);
|
|
blue = std::clamp(blue, 0.f, 255.f);
|
|
}
|
|
|
|
if (g.vehicle.rainbow_paint.primary)
|
|
{
|
|
VEHICLE::SET_VEHICLE_CUSTOM_PRIMARY_COLOUR(self::veh, red, green, blue);
|
|
}
|
|
if (g.vehicle.rainbow_paint.secondary)
|
|
{
|
|
VEHICLE::SET_VEHICLE_CUSTOM_SECONDARY_COLOUR(self::veh, red, green, blue);
|
|
}
|
|
if (g.vehicle.rainbow_paint.neon)
|
|
{
|
|
VEHICLE::SET_VEHICLE_NEON_COLOUR(self::veh, red, green, blue);
|
|
}
|
|
if (g.vehicle.rainbow_paint.smoke)
|
|
{
|
|
VEHICLE::SET_VEHICLE_TYRE_SMOKE_COLOR(self::veh, red, green, blue);
|
|
}
|
|
}
|
|
}
|
|
|
|
bool_command g_rainbow_paint_primary("rainbowpri", "BACKEND_LOOPED_VEHICLE_RGB_PAINT_PRIMARY", "BACKEND_LOOPED_VEHICLE_RGB_PAINT_PRIMARY_DESC", g.vehicle.rainbow_paint.primary);
|
|
bool_command g_rainbow_paint_secondary("rainbowsec", "BACKEND_LOOPED_VEHICLE_RGB_PAINT_SECONDARY", "BACKEND_LOOPED_VEHICLE_RGB_PAINT_SECONDARY_DESC", g.vehicle.rainbow_paint.secondary);
|
|
bool_command g_rainbow_paint_neon("rainbowneons", "BACKEND_LOOPED_VEHICLE_RGB_PAINT_NEONS", "BACKEND_LOOPED_VEHICLE_RGB_PAINT_NEONS_DESC", g.vehicle.rainbow_paint.neon);
|
|
bool_command g_rainbow_paint_smoke("rainbowsmoke", "BACKEND_LOOPED_VEHICLE_RGB_PAINT_TIRE", "BACKEND_LOOPED_VEHICLE_RGB_PAINT_TIRE_DESC", g.vehicle.rainbow_paint.smoke);
|
|
int_command g_rainbow_paint_speed("rainbowspeed", "BACKEND_LOOPED_VEHICLE_RGB_PAINT_SPEED", "BACKEND_LOOPED_VEHICLE_RGB_PAINT_SPEED_DESC", g.vehicle.rainbow_paint.speed, 1, 10);
|
|
} |