1
0
mirror of https://github.com/TerryCavanagh/VVVVVV.git synced 2024-06-28 23:48:30 +02:00
VVVVVV/desktop_version/src/preloader.cpp
Misa 7430be69e3 Remove getBGR
getBGR, when used in FillRect, was actually passing colors in RGB order.
But now the masks are fixed, so remove it, and fix up all existing
getBGR colors to use getRGB instead.
2021-09-06 20:12:48 -07:00

127 lines
3.7 KiB
C++

#include "Enums.h"
#include "Game.h"
#include "Graphics.h"
#include "KeyPoll.h"
#include "UtilityClass.h"
static int pre_fakepercent=0, pre_transition=30;
static bool pre_startgame=false;
static int pre_darkcol=0, pre_lightcol=0, pre_curcol=0, pre_coltimer=0, pre_offset=0;
static int pre_frontrectx=30, pre_frontrecty=20, pre_frontrectw=260, pre_frontrecth=200;
static int pre_temprectx=0, pre_temprecty=0, pre_temprectw=320, pre_temprecth=240;
void preloaderinput(void)
{
game.press_action = false;
if (key.isDown(KEYBOARD_z) || key.isDown(KEYBOARD_SPACE) || key.isDown(KEYBOARD_v) || key.isDown(game.controllerButton_flip)) {
game.press_action = true;
}
if (game.press_action) {
//Skip to TITLEMODE immediately
game.gamestate = TITLEMODE;
game.jumpheld = true;
}
}
void preloaderrenderfixed(void)
{
if (pre_transition < 30) pre_transition--;
if(pre_transition>=30){
pre_fakepercent++;
if (pre_fakepercent >= 100) {
pre_fakepercent = 100;
pre_startgame = true;
}
pre_offset = (pre_offset + 4 + int(fRandom() * 5.0f))%32;
pre_coltimer--;
if (pre_coltimer <= 0) {
pre_curcol = (pre_curcol + int(fRandom() * 5.0f)) % 6;
pre_coltimer = 8;
}
}
if (pre_transition <= -10) {
game.gamestate = TITLEMODE;
}
}
void preloaderrender(void)
{
if(pre_transition>=30){
switch(pre_curcol) {
case 0:
pre_lightcol = graphics.RGBflip(0xBF,0x59,0x6F);
pre_darkcol = graphics.RGBflip(0x88,0x3E,0x53);
break;
case 1:
pre_lightcol = graphics.RGBflip(0x6C,0xBC,0x5C);
pre_darkcol = graphics.RGBflip(0x50,0x86,0x40);
break;
case 2:
pre_lightcol = graphics.RGBflip(0x5D,0x57,0xAA);
pre_darkcol = graphics.RGBflip(0x2F,0x2F,0x6C);
break;
case 3:
pre_lightcol = graphics.RGBflip(0xB7,0xBA,0x5E);
pre_darkcol = graphics.RGBflip(0x84,0x83,0x42);
break;
case 4:
pre_lightcol = graphics.RGBflip(0x57,0x90,0xAA);
pre_darkcol = graphics.RGBflip(0x2F,0x5B,0x6C);
break;
case 5:
pre_lightcol = graphics.RGBflip(0x90,0x61,0xB1);
pre_darkcol = graphics.RGBflip(0x58,0x3D,0x71);
break;
default:
pre_lightcol = graphics.RGBflip(0x00,0x00,0x00);
pre_darkcol = graphics.RGBflip(0x08,0x00,0x00);
break;
}
for (int i = 0; i < 18; i++) {
pre_temprecty = (i * 16)- pre_offset;
if (i % 2 == 0)
{
FillRect(graphics.backBuffer, pre_temprectx, pre_temprecty, pre_temprectw,pre_temprecth, pre_lightcol);
}
else
{
FillRect(graphics.backBuffer, pre_temprectx, pre_temprecty, pre_temprectw,pre_temprecth, pre_darkcol);
}
}
FillRect(graphics.backBuffer, pre_frontrectx, pre_frontrecty, pre_frontrectw,pre_frontrecth, graphics.getRGB(0x3E,0x31,0xA2));
if(pre_fakepercent==100){
graphics.Print(282-(15*8), 204, "LOADING... " + help.String(int(pre_fakepercent))+"%", 124, 112, 218, false);
}else{
graphics.Print(282-(14*8), 204, "LOADING... " + help.String(int(pre_fakepercent))+"%", 124, 112, 218, false);
}
//Render
if (pre_startgame) {
pre_transition = 29;
}
}else if (pre_transition <= -10) {
//Switch to TITLEMODE (handled by preloaderrenderfixed)
}else if (pre_transition < 5) {
ClearSurface(graphics.backBuffer);
}else if (pre_transition < 20) {
pre_temprecty = 0;
pre_temprecth = 240;
ClearSurface(graphics.backBuffer);
FillRect(graphics.backBuffer, pre_frontrectx, pre_frontrecty, pre_frontrectw,pre_frontrecth, graphics.getRGB(0x3E,0x31,0xA2));
graphics.Print(282-(15*8), 204, "LOADING... 100%", 124, 112, 218, false);
}
graphics.drawfade();
graphics.render();
}