mirror of
https://github.com/TerryCavanagh/VVVVVV.git
synced 2024-09-29 01:37:23 +02:00
96d397060c
While there already exists an option to skip the fake loading screen entirely (without requiring an ACTION press), there are several reasons for including this option as well: * So people upgrading from 2.2 won't have to sit through the fake loading screen the first time they open 2.3. * So if people are too lazy to use the existing option, they can use this one instead. * So tool-assisted speedruns (TASes) of this game can skip the fake loading screen without requiring an existing settings.vvv beforehand. This last one is the biggest reason for me, since I'm not sure what TASVideos.org rules are regarding existing save files, but with this change nobody has to worry about their rules and can safely just press ACTION to skip the fake loading screen automatically.
126 lines
3.7 KiB
C++
126 lines
3.7 KiB
C++
#include "Enums.h"
|
|
#include "Game.h"
|
|
#include "Graphics.h"
|
|
#include "KeyPoll.h"
|
|
#include "UtilityClass.h"
|
|
|
|
int pre_fakepercent=0, pre_transition=30;
|
|
bool pre_startgame=false;
|
|
int pre_darkcol=0, pre_lightcol=0, pre_curcol=0, pre_coltimer=0, pre_offset=0;
|
|
|
|
int pre_frontrectx=30, pre_frontrecty=20, pre_frontrectw=260, pre_frontrecth=200;
|
|
int pre_temprectx=0, pre_temprecty=0, pre_temprectw=320, pre_temprecth=240;
|
|
|
|
void preloaderinput()
|
|
{
|
|
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()
|
|
{
|
|
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()
|
|
{
|
|
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.getBGR(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) {
|
|
FillRect(graphics.backBuffer, 0, 0, 320,240, graphics.getBGR(0,0,0));
|
|
}else if (pre_transition < 20) {
|
|
pre_temprecty = 0;
|
|
pre_temprecth = 240;
|
|
FillRect(graphics.backBuffer, pre_temprectx, pre_temprecty, pre_temprectw,pre_temprecth, 0x000000);
|
|
FillRect(graphics.backBuffer, pre_frontrectx, pre_frontrecty, pre_frontrectw,pre_frontrecth, graphics.getBGR(0x3E,0x31,0xA2));
|
|
|
|
graphics.Print(282-(15*8), 204, "LOADING... 100%", 124, 112, 218, false);
|
|
}
|
|
|
|
graphics.drawfade();
|
|
|
|
graphics.render();
|
|
}
|