Skip to content

Commit

Permalink
Implement new appearance menus (#163)
Browse files Browse the repository at this point in the history
  • Loading branch information
cxong committed Nov 15, 2013
1 parent ce83ba4 commit 98eaa9a
Showing 1 changed file with 50 additions and 7 deletions.
57 changes: 50 additions & 7 deletions src/prep.c
Original file line number Diff line number Diff line change
Expand Up @@ -92,8 +92,6 @@
#define PLAYER_HAIR_COUNT 8


#define AVAILABLE_FACES PLAYER_FACE_COUNT

#define NEW_MENU 1


Expand Down Expand Up @@ -617,7 +615,7 @@ static int FaceSelection(int x, int idx, struct PlayerData *data, int cmd)

return AppearanceSelection(
faceNames,
AVAILABLE_FACES,
PLAYER_FACE_COUNT,
x, idx, data, &data->looks.face, IndexToHead, cmd, selection);
}

Expand Down Expand Up @@ -809,7 +807,7 @@ void UseTemplate(int character, struct PlayerData *data,
memset(data->name, 0, sizeof(data->name));
strncpy(data->name, t->name, sizeof(data->name) - 1);

data->looks.face = IndexToHead(t->head < AVAILABLE_FACES ? t->head : 0);
data->looks.face = IndexToHead(t->head < PLAYER_FACE_COUNT ? t->head : 0);
data->looks.body = t->body;
data->looks.arm = t->arms;
data->looks.leg = t->legs;
Expand Down Expand Up @@ -1024,6 +1022,11 @@ typedef struct
menu_t **currentMenu;
int nameMenuSelection;
AppearanceMenuData faceData;
AppearanceMenuData skinData;
AppearanceMenuData hairData;
AppearanceMenuData armsData;
AppearanceMenuData bodyData;
AppearanceMenuData legsData;
} PlayerSelectMenuData;

static void DrawNameMenu(GraphicsDevice *g, Vec2i pos, Vec2i size, void *data)
Expand Down Expand Up @@ -1064,7 +1067,7 @@ static void DrawNameMenu(GraphicsDevice *g, Vec2i pos, Vec2i size, void *data)
endChoice, i == d->nameMenuSelection);
}

static int HandleInputDrawMenu(int cmd, void *data)
static int HandleInputNameMenu(int cmd, void *data)
{
PlayerSelectMenuData *d = data;

Expand Down Expand Up @@ -1233,16 +1236,56 @@ static void MenuCreatePlayerSelection(
MenuAddSubmenu(
ms->root,
MenuCreateCustom(
"Name", DrawNameMenu, HandleInputDrawMenu, data));
"Name", DrawNameMenu, HandleInputNameMenu, data));

data->faceData.c = data->c;
data->faceData.pData = data->pData;
data->faceData.menu = faceNames;
data->faceData.menuCount = AVAILABLE_FACES;
data->faceData.menuCount = PLAYER_FACE_COUNT;
data->faceData.property = &data->pData->looks.face;
data->faceData.func = IndexToHead;
MenuAddSubmenu(ms->root, MenuCreateAppearance("Face", &data->faceData));

data->skinData.c = data->c;
data->skinData.pData = data->pData;
data->skinData.menu = skinNames;
data->skinData.menuCount = PLAYER_SKIN_COUNT;
data->skinData.property = &data->pData->looks.skin;
data->skinData.func = IndexToSkin;
MenuAddSubmenu(ms->root, MenuCreateAppearance("Skin", &data->skinData));

data->hairData.c = data->c;
data->hairData.pData = data->pData;
data->hairData.menu = hairNames;
data->hairData.menuCount = PLAYER_HAIR_COUNT;
data->hairData.property = &data->pData->looks.hair;
data->hairData.func = IndexToHair;
MenuAddSubmenu(ms->root, MenuCreateAppearance("Hair", &data->hairData));

data->armsData.c = data->c;
data->armsData.pData = data->pData;
data->armsData.menu = shadeNames;
data->armsData.menuCount = PLAYER_BODY_COUNT;
data->armsData.property = &data->pData->looks.arm;
data->armsData.func = IndexToShade;
MenuAddSubmenu(ms->root, MenuCreateAppearance("Arms", &data->armsData));

data->bodyData.c = data->c;
data->bodyData.pData = data->pData;
data->bodyData.menu = shadeNames;
data->bodyData.menuCount = PLAYER_BODY_COUNT;
data->bodyData.property = &data->pData->looks.body;
data->bodyData.func = IndexToShade;
MenuAddSubmenu(ms->root, MenuCreateAppearance("Body", &data->bodyData));

data->legsData.c = data->c;
data->legsData.pData = data->pData;
data->legsData.menu = shadeNames;
data->legsData.menuCount = PLAYER_BODY_COUNT;
data->legsData.property = &data->pData->looks.leg;
data->legsData.func = IndexToShade;
MenuAddSubmenu(ms->root, MenuCreateAppearance("Legs", &data->legsData));

MenuAddSubmenu(ms->root, MenuCreateSeparator(""));
MenuAddSubmenu(ms->root, MenuCreateReturn("Done", 0));
MenuAddExitType(ms, MENU_TYPE_RETURN);
Expand Down

0 comments on commit 98eaa9a

Please sign in to comment.