示例#1
0
void RB_SetupSkyData(void)
{
    if(((gamemap >= 9 && gamemap < 32) || gamemap == 35) ||
       (!deathmatch && players[0].weaponowned[wp_sigil]))
    {
        clearColor[0] = 0.25f;
        clearColor[1] = clearColor[2] = 0;
        clearColor[3] = 1;
        currentCloudLump = cloudlump2;
        skyDomeColor1 = D_RGBA(64, 0, 0, 0xff);
        skyDomeColor2 = D_RGBA(160, 8, 8, 0xff);
        RB_SetSkyShade(255, 236, 227);
    }
    else
    {
        clearColor[0] = clearColor[1] = 0.14f;
        clearColor[2] = 0.235f;
        clearColor[3] = 1;
        currentCloudLump = cloudlump1;
        skyDomeColor1 = D_RGBA(36, 36, 60, 0xff);
        skyDomeColor2 = D_RGBA(224, 224, 255, 0xff);
        RB_SetSkyShade(255, 252, 227);
    }

    dglClearColor(clearColor[0], clearColor[1], clearColor[2], clearColor[3]);
}
示例#2
0
void F_Drawer(void) {
    GL_ClearView(0xFF000000);
    Draw_GfxImage(64, 30, "EVIL", D_RGBA(255, 255, 255, 0xff), false);
    Draw_BigText(-1, 240-32, D_RGBA(255, 0, 0, 0xff), castorder[castnum].name);
    Draw_Sprite2D(
        caststate->sprite,
        castrotation,
        (caststate->frame & FF_FRAMEMASK),
        160,
        180,
        1.0f,
        mobjinfo[castorder[castnum].type].palette,
        D_RGBA(finalePal.r, finalePal.g, finalePal.b, finalePal.a)
    );
}
示例#3
0
文件: st_stuff.c 项目: MP2E/kexplus
static void ST_DrawPendingWeapon(void)
{
	int i;
	int x = 0;
	int wpn;

	if (!st_wpndisplay_show)
		return;

	GL_SetOrthoScale(0.5f);

	for (i = 0; i < NUMWEAPONS; i++) {
		rcolor color;

		if (plyr->weaponowned[i])
			color = D_RGBA(0xff, 0xff, 0x3f, st_wpndisplay_alpha);
		else
			color = WHITEALPHA(st_wpndisplay_alpha);

		Draw_Number(245 + x, 400, i, 0, color);
		x += 16;

	}

	if (plyr->pendingweapon == wp_nochange)
		wpn = plyr->readyweapon;
	else
		wpn = plyr->pendingweapon;

	Draw_BigText(235 + (wpn * 16), 404, WHITEALPHA(st_wpndisplay_alpha),
		     "/b");

	GL_SetOrthoScale(1.0f);
}
示例#4
0
文件: st_stuff.c 项目: MP2E/kexplus
void ST_FlashingScreen(byte r, byte g, byte b, byte a)
{
	rcolor c = D_RGBA(r, g, b, a);

	GL_SetState(GLSTATE_BLEND, 1);
	GL_SetOrtho(1);

	dglDisable(GL_TEXTURE_2D);
	dglColor4ubv((byte *) & c);
	dglRecti(SCREENWIDTH + ViewBorderX*2, SCREENHEIGHT, 0, 0);
	dglEnable(GL_TEXTURE_2D);

	GL_SetState(GLSTATE_BLEND, 0);
}
示例#5
0
文件: st_stuff.c 项目: MP2E/kexplus
static void ST_DrawKey(int key, const float uv[4][2], const float xy[4][2])
{
	float keydrawxy[4][2];

	if (plyr->cards[key] ||
	    (flashCards[key].doDraw && flashCards[key].active)) {
		dmemcpy(keydrawxy, xy, (sizeof(float) * 4) * 2);

		if (st_drawhud.value >= 2) {
			keydrawxy[0][0] += 20;
			keydrawxy[1][0] += 20;
			keydrawxy[2][0] += 20;
			keydrawxy[3][0] += 20;

			keydrawxy[0][1] += 78;
			keydrawxy[1][1] += 78;
			keydrawxy[2][1] += 78;
			keydrawxy[3][1] += 78;
		}

		ST_DrawStatusItem(keydrawxy, uv,
				  D_RGBA(0xff, 0xff, 0xff, 0x80));
	}
}
示例#6
0
文件: st_stuff.c 项目: MP2E/kexplus
void ST_UpdateFlash(void)
{
	player_t *p = &players[consoleplayer];

	flashcolor = 0;

	// invulnerability flash (white)
	if (p->powers[pw_invulnerability] > 61
	    || (p->powers[pw_invulnerability] & 8)) {
		flashcolor = D_RGBA(128, 128, 128, 0xff);
		st_flash_r = 255;
		st_flash_g = 255;
		st_flash_b = 255;
		st_flash_a = 64;
	}
	// bfg flash (green)
	else if (p->bfgcount) {
		flashcolor = D_RGBA(0, p->bfgcount & 0xff, 0, 0xff);
		st_flash_r = 0;
		st_flash_g = 255;
		st_flash_b = 0;
		st_flash_a = p->bfgcount;
	}
	// damage and strength flash (red)
	else if (p->damagecount || (p->powers[pw_strength] > 1)) {
		int r1 = p->damagecount;
		int r2 = p->powers[pw_strength];

		if (r1) {
			if (r1 > ST_MAXDMGCOUNT)
				r1 = ST_MAXDMGCOUNT;
		}

		if (r2 == 1)
			r2 = 0;
		else if (r2 > ST_MAXSTRCOUNT)
			r2 = ST_MAXSTRCOUNT;

		// take priority based on value
		if (r1 > r2) {
			flashcolor = D_RGBA(r1 & 0xff, 0, 0, 0xff);
			st_flash_r = 255;
			st_flash_g = 0;
			st_flash_b = 0;
			st_flash_a = r1;
		} else {
			flashcolor = D_RGBA(r2 & 0xff, 0, 0, 0xff);
			st_flash_r = 255;
			st_flash_g = 0;
			st_flash_b = 0;
			st_flash_a = r2;
		}
	}
	// suit flash (green/yellow)
	else if (p->powers[pw_ironfeet] > 61 || (p->powers[pw_ironfeet] & 8)) {
		flashcolor = D_RGBA(0, 32, 4, 0xff);
		st_flash_r = 0;
		st_flash_g = 255;
		st_flash_b = 31;
		st_flash_a = 64;
	}
	// bonus flash (yellow)
	else if (p->bonuscount) {
		int c1 = (p->bonuscount + 8) >> 3;
		int c2;

		if (c1 > ST_MAXBONCOUNT)
			c1 = ST_MAXBONCOUNT;

		c2 = (((c1 << 2) + c1) << 1);

		flashcolor = D_RGBA(c2 & 0xff, c2 & 0xff, c1 & 0xff, 0xff);
		st_flash_r = 255;
		st_flash_g = 255;
		st_flash_b = 0;
		st_flash_a = (p->bonuscount + 8) << 1;
	}
示例#7
0
文件: st_stuff.c 项目: MP2E/kexplus
static void ST_DrawStatus(void)
{
	int lump;
	float width;
	float height;
	float uv[4][2];
	const rcolor color = D_RGBA(0x68, 0x68, 0x68, 0x90);

	GL_SetState(GLSTATE_BLEND, 1);
	lump = GL_BindGfxTexture("STATUS", true);

	width = (float)gfxwidth[lump];
	height = (float)gfxheight[lump];

	dglTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, DGL_CLAMP);
	dglTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, DGL_CLAMP);

	if (st_drawhud.value >= 2)
		GL_SetOrthoScale(0.725f);

	GL_SetOrtho(0);

	dglSetVertex(st_vtx);
	st_vtxcount = 0;

	if (st_drawhud.value == 1) {
		// health

		uv[0][0] = uv[3][0] = 0.0f;
		uv[0][1] = uv[1][1] = 0.0f;
		uv[1][0] = uv[2][0] = 40.0f / width;
		uv[2][1] = uv[3][1] = 6.0f / height;

		ST_DrawStatusItem(st_healthVertex, uv, color);

		// armor

		uv[0][0] = uv[3][0] = 40.0f / width;
		uv[0][1] = uv[1][1] = 0.0f;
		uv[1][0] = uv[2][0] = uv[0][0] + (36.0f / width);
		uv[2][1] = uv[3][1] = 6.0f / height;

		ST_DrawStatusItem(st_armorVertex, uv, color);
	}
	// cards

	uv[0][0] = uv[3][0] = 0.0f;
	uv[0][1] = uv[1][1] = 6.0f / height;
	uv[1][0] = uv[2][0] = 9.0f / width;
	uv[2][1] = uv[3][1] = 1.0f;

	ST_DrawKey(it_bluecard, uv, st_key1Vertex);

	uv[0][0] = uv[3][0] = 9.0f / width;
	uv[1][0] = uv[2][0] = (9.0f / width) * 2;

	ST_DrawKey(it_yellowcard, uv, st_key2Vertex);

	uv[0][0] = uv[3][0] = (9.0f / width) * 2;
	uv[1][0] = uv[2][0] = (9.0f / width) * 3;

	ST_DrawKey(it_redcard, uv, st_key3Vertex);

	// skulls

	uv[0][0] = uv[3][0] = (9.0f / width) * 3;
	uv[1][0] = uv[2][0] = (9.0f / width) * 4;

	ST_DrawKey(it_blueskull, uv, st_key1Vertex);

	uv[0][0] = uv[3][0] = (9.0f / width) * 4;
	uv[1][0] = uv[2][0] = (9.0f / width) * 5;

	ST_DrawKey(it_yellowskull, uv, st_key2Vertex);

	uv[0][0] = uv[3][0] = (9.0f / width) * 5;
	uv[1][0] = uv[2][0] = (9.0f / width) * 6;

	ST_DrawKey(it_redskull, uv, st_key3Vertex);

	dglDrawGeometry(st_vtxcount, st_vtx);

	GL_ResetViewport();
	GL_SetState(GLSTATE_BLEND, 0);

	if (st_drawhud.value >= 2)
		GL_SetOrthoScale(1.0f);
}
示例#8
0
文件: st_stuff.c 项目: MP2E/kexplus
	HUSTR_CHATMACRO5,
	HUSTR_CHATMACRO6,
	HUSTR_CHATMACRO7,
	HUSTR_CHATMACRO8,
	HUSTR_CHATMACRO9
};

char player_names[MAXPLAYERS][MAXPLAYERNAME] = {
	HUSTR_PLR1,
	HUSTR_PLR2,
	HUSTR_PLR3,
	HUSTR_PLR4
};

static const rcolor st_chatcolors[MAXPLAYERS] = {
	D_RGBA(192, 255, 192, 255),
	D_RGBA(255, 192, 192, 255),
	D_RGBA(128, 255, 192, 255),
	D_RGBA(192, 192, 255, 255),
};

#define MAXCHATNODES    4
#define MAXCHATTIME     256
#define MAXCHATSIZE     256
#define STCHATX         32
#define STCHATY         384

typedef struct {
	char msg[MAXCHATSIZE];
	int tics;
	rcolor color;