/**********************************************************************
* Aztheria Menu System - Version 1.0 by Xeroth *
**********************************************************************/
#include "include.h"
#include "interp.h"
#include "recycle.h"
#include "tables.h"
/*Local function prototypes*/
void generate(MENU_DATA *menu, DESCRIPTOR_DATA *d);
/*Character Generation Menu Compiler*/
void chargen_menu (const int m, DESCRIPTOR_DATA *d)
{
int i;
CHAR_DATA *ch;
int iClass, race, weapon, pcrace;
MENU_DATA *menu = aztheria_menu;
menu->header = NULL;
for(i = 0; i < MAX_MENU_ITEMS; i++)
menu->item[i] = NULL;
ch = d->character;
switch(m) /*compile appropriate menu*/
{
case MENU_CHARGEN_RACE:
pcrace = 0;
for (race = 1; race_table[race].name != NULL; race++)
{
if (!race_table[race].pc_race)
break;
menu->item[pcrace] = race_table[race].name;
pcrace++;
}
menu->header = "Select Your Race:";
generate(menu, d);
break;
case MENU_CHARGEN_ALIGN:
menu->item[0] = "Good";
menu->item[1] = "Neutral";
menu->item[2] = "Evil";
menu->header = "Choose Your Alignment:";
generate(menu, d);
break;
case MENU_CHARGEN_CLASS:
for (iClass = 0; iClass < MAX_CLASS; iClass++)
menu->item[iClass] = class_table[iClass].name;
menu->header = "Pick Your Class:";
generate(menu, d);
break;
case MENU_CHARGEN_SEX:
menu->item[0] = "[M]ale";
menu->item[1] = "[F]emale";
menu->header = "Gender?";
generate(menu, d);
break;
case MENU_CHARGEN_EYES:
menu->item[0] = "Blue";
menu->item[1] = "Green";
menu->item[2] = "Brown";
menu->item[3] = "Black";
menu->item[4] = "Red";
menu->item[5] = "Grey";
menu->item[6] = "Hazel";
menu->item[7] = "Prple";
menu->item[8] = "Yellw";
menu->header = "What Color Shall Your Eyes Be?";
generate(menu, d);
break;
case MENU_CHARGEN_HAIR:
menu->item[0] = "Silvr";
menu->item[1] = "Grey";
menu->item[2] = "Black";
menu->item[3] = "Blond";
menu->item[4] = "Brown";
menu->item[5] = "Red";
menu->header = "What Color Shall Your Hair Be?";
generate(menu,d);
break;
default:
menu->header = "{R*** ERROR: NULL MENU! ***{x\n\r";
generate(menu, d);
}
}
/*Generate Pre-compiled Menu*/
void generate(MENU_DATA *menu, DESCRIPTOR_DATA *d)
{
char buf[MAX_STRING_LENGTH];
int i;
sprintf(buf, "{c|=============================================|{x\n\r");
send_to_desc(buf, d);
sprintf(buf, "{c| {C%-43s {c|{x\n\r", menu->header);
send_to_desc(buf, d);
sprintf(buf, "{c| |{x\n\r");
send_to_desc(buf, d);
for(i = 0; menu->item[i] != NULL; i++)
{
sprintf(buf, "{c| {w%-43s {c|{x\n\r", menu->item[i]);
send_to_desc(buf, d);
}
sprintf(buf, "{c| |{x\n\r");
send_to_desc(buf, d);
sprintf(buf, "{c|=============================================|{x\n\r");
send_to_desc(buf, d);
send_to_desc("{c|=> {x", d);
}