コード例 #1
0
void DrawPercentBar(PercentBar *bar, int x, int y, int curvalue, int maxvalue, int width)
{
	if (bar->displayed_value != curvalue)
		DrawPercentage(x, y, SPR_HEALTHFILL, 1, bar->displayed_value, maxvalue, width);
		
	DrawPercentage(x, y, SPR_HEALTHFILL, 0, curvalue, maxvalue, width);
}
コード例 #2
0
bool CDriveItem::DrawSubitem(int subitem, CDC *pdc, CRect rc, UINT state, int *width, int *focusLeft) const
{
	if (subitem == COL_NAME)
	{
		DrawLabel(m_list, GetMyImageList(), pdc, rc, state, width, focusLeft);
		return true;
	}
	else if (subitem == COL_GRAPH)
	{
		if (!m_success)
		{
			return false;
		}
		

		if (width != NULL)
		{		
			*width= 100;
			return true;
		}

		DrawSelection(m_list, pdc, rc, state);

		rc.DeflateRect(3, 5);
	
		DrawPercentage(pdc, rc, m_used, RGB(0,0,170));

		return true;
	}
	else
	{
		return false;
	}
}
コード例 #3
0
ファイル: item.cpp プロジェクト: coapp-packages/windirstat
bool CItem::DrawSubitem(int subitem, CDC *pdc, CRect rc, UINT state, int *width, int *focusLeft) const
{
	if (subitem == COL_NAME)
	{
		return CTreeListItem::DrawSubitem(subitem, pdc, rc, state, width, focusLeft);
	}
	if (subitem != COL_SUBTREEPERCENTAGE)
		return false;

	bool showReadJobs = MustShowReadJobs();

	if (showReadJobs && !GetOptions()->IsPacmanAnimation())
		return false;

	if (showReadJobs && IsDone())
		return false;

	if (width != NULL)
	{
		*width = GetSubtreePercentageWidth();
		return true;
	}

	DrawSelection(GetTreeListControl(), pdc, rc, state);

	if (showReadJobs)
	{
		rc.DeflateRect(sizeDeflatePacman);
		DrawPacman(pdc, rc, GetTreeListControl()->GetItemSelectionBackgroundColor(this));
	}
	else
	{
		rc.DeflateRect(2, 5);
		for (int i=0; i < GetIndent(); i++)
			rc.left += rc.Width() / 10;

		DrawPercentage(pdc, rc, GetFraction(), GetPercentageColor());
	}
	return true;
}
コード例 #4
0
ファイル: SaveSelect.cpp プロジェクト: EXL/NXEngine
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);
	
}
コード例 #5
0
void DrawStatusBar(void)
{
int level, curxp, maxxp;
int w, x;
bool maxed_out;

	//debug("%08x", game.bossbar.object);
	//debug("%s", game.bossbar.defeated ? "true" : "false");
	
	// handle animations etc
	RunStatusBar();
	
	// draw boss bar
	if (game.bossbar.object && !game.bossbar.defeated)
	{
		#define BOSSBAR_W	198
		// BOSS_X = 32 at normal resolution
		#define BOSS_X		((SCREEN_WIDTH / 2) - (BOSSBAR_W / 2) - 29)
		#define BOSS_Y		(SCREEN_HEIGHT-20)
		draw_sprite(BOSS_X, BOSS_Y, SPR_TEXTBOX, 0, 0);
		draw_sprite(BOSS_X, BOSS_Y+8, SPR_TEXTBOX, 2, 0);
		draw_sprite(BOSS_X+8, BOSS_Y+4, SPR_BOSSHPICON, 0, 0);
		
		// e.g. bosses w/ multiple forms (Ballos)
		if (game.bossbar.object->hp > game.bossbar.starting_hp)
			game.bossbar.starting_hp = game.bossbar.object->hp;
		
		RunPercentBar(&game.bossbar.bar, game.bossbar.object->hp);
		DrawPercentBar(&game.bossbar.bar, BOSS_X+40, BOSS_Y+5, game.bossbar.object->hp, game.bossbar.starting_hp, BOSSBAR_W);
	}
	
	if (game.frozen || player->inputs_locked) return;
	if (fade.getstate() != FS_NO_FADE) return;
	
	if (player->hp)
	{
		if (!player->hurt_flash_state)
		{
			if (!game.debug.god)
			{
				// -- draw the health bar -----------------------------
				draw_sprite(HEALTH_X, HEALTH_Y, SPR_HEALTHBAR, 0, 0);
				
				DrawPercentBar(&PHealthBar, HEALTHFILL_X, HEALTHFILL_Y, player->hp, player->maxHealth, HEALTHFILL_MAXLEN);
				
				// draw the health in numbers
				DrawNumberRAlign(HEALTH_X+24, HEALTH_Y, SPR_WHITENUMBERS, PHealthBar.displayed_value);
			}
			
			// -- draw the XP bar ---------------------------------
			level = player->weapons[player->curWeapon].level;
			curxp = player->weapons[player->curWeapon].xp;
			maxxp = player->weapons[player->curWeapon].max_xp[level];
			
			if (player->curWeapon == WPN_NONE)
			{
				curxp = 0;
				maxxp = 1;
			}
			
			// draw XP bar and fill it
			draw_sprite(XPBAR_X+slide.lv_offset, XPBAR_Y, SPR_XPBAR, FRAME_XP_BAR, 0);
			
			maxed_out = ((curxp == maxxp) && level == 2);
			if (!maxed_out)
				DrawPercentage(XPBAR_X+slide.lv_offset, XPBAR_Y, SPR_XPBAR, FRAME_XP_FILL, curxp, maxxp, sprites[SPR_XPBAR].w);
			
			// draw the white flashing if we just got more XP
			// the time-left and flash-state are in separate variables--
			// otherwise the Spur will not flash XP bar
			if (statusbar.xpflashcount)
			{
				if (++statusbar.xpflashstate & 2)
				{
					draw_sprite(XPBAR_X+slide.lv_offset, XPBAR_Y, SPR_XPBAR, FRAME_XP_FLASH, 0);
				}
				
				statusbar.xpflashcount--;
			}
			else statusbar.xpflashstate = 0;
			
			// draw "MAX"
			if (maxed_out)
				draw_sprite(XPBAR_X+slide.lv_offset, XPBAR_Y, SPR_XPBAR, FRAME_XP_MAX, 0);
			
			// Level Number
			DrawWeaponLevel(HEALTH_X + slide.lv_offset, XPBAR_Y, player->curWeapon);
		}
		
		// -- draw the weapon bar -----------------------------
		// draw current weapon
		if (player->curWeapon != WPN_NONE)
			draw_sprite(CURWEAPON_X + slide.wpn_offset, WEAPONBAR_Y, SPR_ARMSICONS, slide.firstWeapon, 0);
		
		// draw ammo, note we draw ammo of firstweapon NOT current weapon, for slide effect
		DrawWeaponAmmo((AMMO_X + slide.wpn_offset + slide.ammo_offset), AMMO_Y, slide.firstWeapon);
		
		// draw other weapons
		w = slide.firstWeapon;
		x = STATUS_X + 64 + slide.wpn_offset + 1;
		for(;;)
		{
			if (++w >= WPN_COUNT) w = 0;
			if (w==slide.firstWeapon) break;
			
			if (player->weapons[w].hasWeapon)
			{
				draw_sprite(x, WEAPONBAR_Y, SPR_ARMSICONS, w, RIGHT);
				x += 16;
			}
		}
		
		DrawAirLeft((SCREEN_WIDTH/2) - (5*8), ((SCREEN_HEIGHT)/2)-16);
	}
}