void main()
{
controlConfigScreen();
}
void controlConfigScreen()
{
void str;
int align;
int maxPlayers = openborvariant("maxplayers");
int hRes = openborvariant("hresolution");
int vRes = openborvariant("vresolution");
int buttonConfig = openborvariant("screen_status") & openborconstant("IN_SCREEN_BUTTON_CONFIG_MENU");
int yPos = vRes/3;
int font0 = 0;
int font1 = 0;
int font2 = 0;
int font3 = 0;
int fontTitle = 2;
int yAdd = 11;
int layer = 1000000003;
int backLayer = 1000000002;
//CONTROL OPTIONS
if(openborvariant("in_control_options") && !buttonConfig){
//NECESSARY STEP TO RESET THE "MENU OPTION" VARIABLE
if(getglobalvar("mainMenuOpt") == NULL()){setglobalvar("mainMenuOpt", 0);}
//DRAW AN ADDITIONAL BACKGROUND TO COMPLETELY COVER THE MAIN SCREEN
mainMenuBackground(backLayer);
//DEFINE FONTS TO HIGHLIGHTED OPTIONS
if(getglobalvar("mainMenuOpt") == 0){font0 = 1;}else //IS SETUP PLAYER 1 HIGHLIGHTED??
if(getglobalvar("mainMenuOpt") == 1){font1 = 1;}else //IS SETUP PLAYER 2 HIGHLIGHTED??
if(getglobalvar("mainMenuOpt") == 2){font2 = 1;}else //IS SETUP PLAYER 3 HIGHLIGHTED??
if(getglobalvar("mainMenuOpt") == 3){font3 = 1;} //IS BACK HIGHLIGHTED??
yPos = yPos+yAdd;
str = "Control Options";align = (hRes-(strwidth(str, fontTitle)))/2;
drawstring(align, yPos, fontTitle, str, layer);
yPos = yPos+yAdd*2;
str = "Setup Player 1...";align = (hRes-(strwidth(str, font0)))/2;
drawstring(align, yPos, font0, str, layer);
if(maxPlayers >= 2){
yPos = yPos+yAdd;
str = "Setup Player 2...";align = (hRes-(strwidth(str, font1)))/2;
drawstring(align, yPos, font1, str, layer);
}
if(maxPlayers >= 3){
yPos = yPos+yAdd;
str = "Setup Player 3...";align = (hRes-(strwidth(str, font2)))/2;
drawstring(align, yPos, font2, str, layer);
}
yPos = yPos+yAdd*2;
str = "Back";align = (hRes-(strwidth(str, font3)))/2;
drawstring(align, yPos, font3, str, layer);
}
}
void mainMenuBackground(float layer, int rangeMin, int rangeMax)
{//Draw an additional screen using the same "main menu" background but with adjustable properties
void vScreen = openborvariant("vscreen");
float x = 0;
float y = 0;
float z = 0;
//CREATE A SCREEN AND SAVE IN A VARIABLE
if(getglobalvar("allocScr_menuScreen") == NULL()){
setglobalvar("allocScr_menuScreen", allocscreen(openborvariant("hResolution"), openborvariant("vResolution")*4));
}
//CLEAR ANY PREVIOUS SCREEN VALUE
clearscreen(getglobalvar("allocScr_menuScreen"));
if(rangeMin == NULL()){rangeMin = openborconstant("MIN_INT");}
if(rangeMax == NULL()){rangeMax = openborconstant("MIN_INT");}
//DRAW EVERYTHING TO THE SCREEN
drawspriteq(getglobalvar("allocScr_menuScreen"), 0, rangeMin, rangeMax, 0, 0);
drawscreen(getglobalvar("allocScr_menuScreen"), x, y, layer);
drawspriteq(vScreen, 0, openborconstant("MIN_INT"), openborconstant("MAX_INT"), 0, 0);
clearspriteq();
}