btmux/autom4te.cache/
btmux/doc/.svn/
btmux/event/.svn/
btmux/game/.svn/
btmux/game/bin/.svn/
btmux/game/data/.svn/
btmux/game/logs/.svn/
btmux/game/maps/
btmux/game/maps/.svn/
btmux/game/maps/.svn/prop-base/
btmux/game/maps/.svn/props/
btmux/game/maps/.svn/text-base/
btmux/game/maps/.svn/wcprops/
btmux/game/mechs/
btmux/game/mechs/.svn/
btmux/game/mechs/.svn/prop-base/
btmux/game/mechs/.svn/props/
btmux/game/mechs/.svn/text-base/
btmux/game/mechs/.svn/wcprops/
btmux/game/text/.svn/
btmux/include/.svn/
btmux/misc/
btmux/misc/.svn/
btmux/misc/.svn/prop-base/
btmux/misc/.svn/props/
btmux/misc/.svn/text-base/
btmux/misc/.svn/wcprops/
btmux/python/
btmux/python/.svn/
btmux/python/.svn/prop-base/
btmux/python/.svn/props/
btmux/python/.svn/text-base/
btmux/python/.svn/wcprops/
btmux/src/.svn/prop-base/
btmux/src/.svn/props/
btmux/src/.svn/text-base/
btmux/src/.svn/wcprops/
btmux/src/hcode/.svn/
btmux/src/hcode/btech/
btmux/src/hcode/btech/.svn/
btmux/src/hcode/btech/.svn/prop-base/
btmux/src/hcode/btech/.svn/props/
btmux/src/hcode/btech/.svn/text-base/
btmux/src/hcode/btech/.svn/wcprops/
btmux/src/hcode/include/.svn/
/*
 * $Id: chargen_menus.h,v 1.1.1.1 2005/01/11 21:18:05 kstevens Exp $
 *
 * Author: Markus Stenberg <fingon@iki.fi>
 *
 *  Copyright (c) 1996 Markus Stenberg
 *       All rights reserved
 *
 * Created: Wed Sep 18 01:47:15 1996 fingon
 * Last modified: Sat Jun  6 20:01:48 1998 fingon
 *
 */

#ifndef CHARGEN_MENUS_H
#define CHARGEN_MENUS_H

int lowest_bit(int num)
{
    int i, j;

    for (i = 0;; i++) {
	j = 1 << i;
	if (j > num)
	    return -1;
	if (num & j)
	    return i;
    }
}

/* Chargen's default menu creation functions */
static coolmenu *create_menu_of_charvalues(dbref player, char *heading,
    int type, int flag, int maxval)
{
    coolmenu *c = NULL;
    int i, t, f, co = 0, wb;
    char buf[512];

    if (heading)
	strcpy(buf, heading);
    else {
	if (flag > 0) {
	    i = lowest_bit(flag);
	    sprintf(buf, "%s %ss for %s", btech_charskillflag_names[i],
		&(btech_charvaluetype_names[type][5]), Name(player));
	} else
	    sprintf(buf, "%ss for %s",
		&(btech_charvaluetype_names[type][5]), Name(player));
    }
    buf[0] = toupper(buf[0]);
    CreateMenuEntry_Simple(&c, NULL, CM_ONE | CM_LINE);
    CreateMenuEntry_Simple(&c, buf, CM_ONE | CM_CENTER);
    CreateMenuEntry_Simple(&c, NULL, CM_ONE | CM_LINE);
    for (i = 0; i < NUM_CHARVALUES; i++)
	if ((t = char_values[i].type) == type || type < 0)
	    if (((f = char_values[i].flag) & flag) || flag < 0)
		co++;
    wb = CoolMenu_FPWBit(co, 18);
    for (i = 0; i < NUM_CHARVALUES; i++)
	if ((t = char_values[i].type) == type || type < 0)
	    if (((f = char_values[i].flag) & flag) || flag < 0) {
		if (t == CHAR_ADVANTAGE && f == CHAR_ADV_BOOL)
		    CreateMenuEntry_Normal(&c, char_values[i].name,
			wb | CM_TOGGLE, i + 1, 1);
		else
		    CreateMenuEntry_Normal(&c, char_values[i].name,
			wb | CM_NUMBER, i + 1, maxval);
	    }
    CreateMenuEntry_Simple(&c, NULL, CM_ONE | CM_LINE);
    return c;
}

static coolmenu *create_packskill_menu(dbref player,
    struct chargen_struct *st)
{
    coolmenu *c = NULL;
    int i, t, f, co = 0, wb;
    int type = CHAR_SKILL;
    int flag = st->chosen_packages + CAREER_MISC;

    if (st->chosen_packagetype >= BASIC_UNIV)
	flag |= CAREER_ACADMISC;
    CreateMenuEntry_Simple(&c, NULL, CM_ONE | CM_LINE);
    CreateMenuEntry_Simple(&c, tprintf("Package Skills for %s",
	    Name(player)), CM_ONE | CM_CENTER);
    CreateMenuEntry_Simple(&c, NULL, CM_ONE | CM_LINE);
    for (i = 0; i < NUM_CHARVALUES; i++)
	if ((t = char_values[i].type) == type)
	    if (((f = char_values[i].flag) & flag))
		co++;
    wb = CoolMenu_FPWBit(co, 18);
    for (i = 0; i < NUM_CHARVALUES; i++)
	if ((t = char_values[i].type) == type)
	    if (((f = char_values[i].flag) & flag))
		CreateMenuEntry_Normal(&c, char_values[i].name,
		    wb | CM_NUMBER, i + 1, 3);
    CreateMenuEntry_Simple(&c, NULL, CM_ONE | CM_LINE);
    CreateMenuEntry_Simple(&c, "Prev = Previous menu", CM_TWO | CM_CENTER);
    CreateMenuEntry_Simple(&c, "Next = Next menu", CM_TWO | CM_CENTER);
    CreateMenuEntry_Normal(&c, "Status", CM_ONE | CM_CENTER, -1, 0);
    CreateMenuEntry_Simple(&c, NULL, CM_ONE | CM_LINE);
    return c;
}

#endif				/* CHARGEN_MENUS_H */