void TB_SaveSelect::DrawExtendedInfo() { Profile *p = &fProfiles[fCurSel]; int x, y, s; if (fPicXOffset < 0) { fPicXOffset += 8; set_clip_rect(MSG_X+4, 0, SCREEN_WIDTH, SCREEN_HEIGHT); } // player pic draw_sprite((MSG_X+8) + fPicXOffset, MSG_NORMAL_Y+8, SPR_SELECTOR_ARMS); x = (MSG_X + 12) + fPicXOffset; y = MSG_NORMAL_Y + 12; s = (p->equipmask & EQUIP_MIMIGA_MASK) ? SPR_MYCHAR_MIMIGA : SPR_MYCHAR; draw_sprite(x, y, s, 0, RIGHT); // player gun if (p->curWeapon != WPN_NONE && p->curWeapon != WPN_BLADE) { int spr, frame; GetSpriteForGun(p->curWeapon, 0, &spr, &frame); draw_sprite_at_dp(x + sprites[s].frame[0].dir[RIGHT].actionpoint.x, \ y + sprites[s].frame[0].dir[RIGHT].actionpoint.y, \ spr, frame, RIGHT); } clear_clip_rect(); // whimsical stars if (p->equipmask & EQUIP_WHIMSTAR) { x = MSG_X + 12; for(int i=0;i<3;i++) { static int frames[] = { 1, 0, 2 }; draw_sprite(x, y+20, SPR_WHIMSICAL_STAR, frames[i]); x += 10; } } // WEAPONS: x = MSG_X + 64; y = MSG_NORMAL_Y + 8; // weapon list for(int i=0;i<WPN_COUNT;i++) { if (p->weapons[i].hasWeapon) { draw_sprite(x, y, SPR_ARMSICONS, i); x += 20; } } // xp of current weapon if (p->curWeapon != WPN_NONE) { int xb = MSG_X + 64; int yb = MSG_NORMAL_Y + 26; int level = p->weapons[p->curWeapon].level; int curxp = p->weapons[p->curWeapon].xp; int maxxp = player->weapons[p->curWeapon].max_xp[level]; draw_sprite(xb, yb, SPR_XPLEVELICON); xb += 16; draw_sprite(xb, yb, SPR_WHITENUMBERS, level+1); xb += 8; draw_sprite(xb, yb, SPR_XPBAR); if ((curxp == maxxp) && level == 2) draw_sprite(xb, yb, SPR_XPBAR, 3); // MAX else DrawPercentage(xb, yb, SPR_XPBAR, 1, curxp, maxxp, sprites[SPR_XPBAR].w); } // ITEMS: x = (MSG_X + 64) - 10; y = MSG_NORMAL_Y + 40; // Booster // items list. I generally tried to put the ones that are temporary and indicate a // quantity of stage completion at the front so they'll be more likely to be visible. static int items[] = { ITEM_BOOSTER08, ITEM_BOOSTER20, ITEM_LIFE_POT, ITEM_PUPPY, ITEM_JELLYFISH_JUICE, ITEM_CHARCOAL, ITEM_GUM_BASE, ITEM_EXPLOSIVE, ITEM_SPRINKLER, ITEM_CONTROLLER, ITEM_MA_PIGNON, ITEM_LITTLE_MAN, -1 }; for(int i=0;items[i] != -1;i++) { if (CheckInventoryList(items[i], p->inventory, p->ninventory) != -1) { draw_sprite(x, y, SPR_ITEMIMAGE, items[i]); x += 28; if (x + sprites[SPR_ITEMIMAGE].w > (MSG_X + MSG_W) - 8) break; } } // health DrawHealth((MSG_X+MSG_W) - 4, MSG_NORMAL_Y+8, p); }
// find which slot an item is in (returns -1 if player does not have it) int FindInventory(int item) { return CheckInventoryList(item, player->inventory, player->ninventory); }