mirror of
https://github.com/ZDoom/raze-gles.git
synced 2024-12-25 19:20:46 +00:00
parent
4527da61a2
commit
55de5230ca
5 changed files with 155 additions and 41 deletions
|
@ -532,6 +532,9 @@ void StartLevel(GAMEOPTIONS *gameOptions)
|
||||||
levelAddUserMap(gPacketStartGame.userMapName);
|
levelAddUserMap(gPacketStartGame.userMapName);
|
||||||
else
|
else
|
||||||
levelSetupOptions(gGameOptions.nEpisode, gGameOptions.nLevel);
|
levelSetupOptions(gGameOptions.nEpisode, gGameOptions.nLevel);
|
||||||
|
|
||||||
|
gBlueFlagDropped = false;
|
||||||
|
gRedFlagDropped = false;
|
||||||
}
|
}
|
||||||
if (gameOptions->uGameFlags&1)
|
if (gameOptions->uGameFlags&1)
|
||||||
{
|
{
|
||||||
|
@ -676,6 +679,14 @@ void StartNetworkLevel(void)
|
||||||
gGameOptions.nWeaponSettings = gPacketStartGame.weaponSettings;
|
gGameOptions.nWeaponSettings = gPacketStartGame.weaponSettings;
|
||||||
gGameOptions.nItemSettings = gPacketStartGame.itemSettings;
|
gGameOptions.nItemSettings = gPacketStartGame.itemSettings;
|
||||||
gGameOptions.nRespawnSettings = gPacketStartGame.respawnSettings;
|
gGameOptions.nRespawnSettings = gPacketStartGame.respawnSettings;
|
||||||
|
|
||||||
|
///////
|
||||||
|
gGameOptions.weaponsV10x = gPacketStartGame.weaponsV10x;
|
||||||
|
///////
|
||||||
|
|
||||||
|
gBlueFlagDropped = false;
|
||||||
|
gRedFlagDropped = false;
|
||||||
|
|
||||||
if (gPacketStartGame.userMap)
|
if (gPacketStartGame.userMap)
|
||||||
levelAddUserMap(gPacketStartGame.userMapName);
|
levelAddUserMap(gPacketStartGame.userMapName);
|
||||||
else
|
else
|
||||||
|
|
|
@ -492,11 +492,13 @@ void sub_765B8(int nSprite) // 17
|
||||||
case 147:
|
case 147:
|
||||||
trTriggerSprite(pOwner->index, pXOwner, 1);
|
trTriggerSprite(pOwner->index, pXOwner, 1);
|
||||||
sndStartSample(8003, 255, 2, 0);
|
sndStartSample(8003, 255, 2, 0);
|
||||||
|
gBlueFlagDropped = false;
|
||||||
viewSetMessage("Blue Flag returned to base.");
|
viewSetMessage("Blue Flag returned to base.");
|
||||||
break;
|
break;
|
||||||
case 148:
|
case 148:
|
||||||
trTriggerSprite(pOwner->index, pXOwner, 1);
|
trTriggerSprite(pOwner->index, pXOwner, 1);
|
||||||
sndStartSample(8002, 255, 2, 0);
|
sndStartSample(8002, 255, 2, 0);
|
||||||
|
gRedFlagDropped = false;
|
||||||
viewSetMessage("Red Flag returned to base.");
|
viewSetMessage("Red Flag returned to base.");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -56,6 +56,9 @@ PROFILE gProfile[kMaxPlayers];
|
||||||
PLAYER gPlayer[kMaxPlayers];
|
PLAYER gPlayer[kMaxPlayers];
|
||||||
PLAYER *gMe, *gView;
|
PLAYER *gMe, *gView;
|
||||||
|
|
||||||
|
bool gBlueFlagDropped = false;
|
||||||
|
bool gRedFlagDropped = false;
|
||||||
|
|
||||||
POWERUPINFO gPowerUpInfo[kMaxPowerUps] = {
|
POWERUPINFO gPowerUpInfo[kMaxPowerUps] = {
|
||||||
{ -1, 1, 1, 1 },
|
{ -1, 1, 1, 1 },
|
||||||
{ -1, 1, 1, 1 },
|
{ -1, 1, 1, 1 },
|
||||||
|
@ -1170,7 +1173,7 @@ char PickupItem(PLAYER *pPlayer, spritetype *pItem)
|
||||||
dword_21EFB0[pPlayer->at2ea] += 10;
|
dword_21EFB0[pPlayer->at2ea] += 10;
|
||||||
dword_21EFD0[pPlayer->at2ea] += 240;
|
dword_21EFD0[pPlayer->at2ea] += 240;
|
||||||
evSend(0, 0, 80, COMMAND_ID_1);
|
evSend(0, 0, 80, COMMAND_ID_1);
|
||||||
sprintf(buffer, "%s captured Red Flag!", gProfile[pPlayer->at57].name);
|
sprintf(buffer, "%s captured Blue Flag!", gProfile[pPlayer->at57].name);
|
||||||
sndStartSample(8000, 255, 2, 0);
|
sndStartSample(8000, 255, 2, 0);
|
||||||
viewSetMessage(buffer);
|
viewSetMessage(buffer);
|
||||||
#if 0
|
#if 0
|
||||||
|
@ -1191,6 +1194,7 @@ char PickupItem(PLAYER *pPlayer, spritetype *pItem)
|
||||||
evKill(pItem->index, 3, CALLBACK_ID_17);
|
evKill(pItem->index, 3, CALLBACK_ID_17);
|
||||||
pPlayer->at90 |= 1;
|
pPlayer->at90 |= 1;
|
||||||
pPlayer->at91[0] = pItem->index;
|
pPlayer->at91[0] = pItem->index;
|
||||||
|
gBlueFlagDropped = false;
|
||||||
break;
|
break;
|
||||||
case 148:
|
case 148:
|
||||||
if (gGameOptions.nGameType != 3)
|
if (gGameOptions.nGameType != 3)
|
||||||
|
@ -1198,6 +1202,7 @@ char PickupItem(PLAYER *pPlayer, spritetype *pItem)
|
||||||
evKill(pItem->index, 3, CALLBACK_ID_17);
|
evKill(pItem->index, 3, CALLBACK_ID_17);
|
||||||
pPlayer->at90 |= 2;
|
pPlayer->at90 |= 2;
|
||||||
pPlayer->at91[1] = pItem->index;
|
pPlayer->at91[1] = pItem->index;
|
||||||
|
gRedFlagDropped = false;
|
||||||
break;
|
break;
|
||||||
case 140:
|
case 140:
|
||||||
case 141:
|
case 141:
|
||||||
|
@ -2113,6 +2118,7 @@ spritetype *sub_40A94(PLAYER *pPlayer, int a2)
|
||||||
pSprite = actDropObject(pPlayer->pSprite, 147);
|
pSprite = actDropObject(pPlayer->pSprite, 147);
|
||||||
if (pSprite)
|
if (pSprite)
|
||||||
pSprite->owner = pPlayer->at91[0];
|
pSprite->owner = pPlayer->at91[0];
|
||||||
|
gBlueFlagDropped = true;
|
||||||
sprintf(buffer, "%s dropped Blue Flag", gProfile[pPlayer->at57].name);
|
sprintf(buffer, "%s dropped Blue Flag", gProfile[pPlayer->at57].name);
|
||||||
sndStartSample(8005, 255, 2, 0);
|
sndStartSample(8005, 255, 2, 0);
|
||||||
viewSetMessage(buffer);
|
viewSetMessage(buffer);
|
||||||
|
@ -2122,6 +2128,7 @@ spritetype *sub_40A94(PLAYER *pPlayer, int a2)
|
||||||
pSprite = actDropObject(pPlayer->pSprite, 148);
|
pSprite = actDropObject(pPlayer->pSprite, 148);
|
||||||
if (pSprite)
|
if (pSprite)
|
||||||
pSprite->owner = pPlayer->at91[1];
|
pSprite->owner = pPlayer->at91[1];
|
||||||
|
gRedFlagDropped = true;
|
||||||
sprintf(buffer, "%s dropped Red Flag", gProfile[pPlayer->at57].name);
|
sprintf(buffer, "%s dropped Red Flag", gProfile[pPlayer->at57].name);
|
||||||
sndStartSample(8004, 255, 2, 0);
|
sndStartSample(8004, 255, 2, 0);
|
||||||
viewSetMessage(buffer);
|
viewSetMessage(buffer);
|
||||||
|
|
|
@ -196,6 +196,9 @@ extern POSTURE gPosture[4][3];
|
||||||
extern PLAYER gPlayer[kMaxPlayers];
|
extern PLAYER gPlayer[kMaxPlayers];
|
||||||
extern PLAYER *gMe, *gView;
|
extern PLAYER *gMe, *gView;
|
||||||
|
|
||||||
|
extern bool gBlueFlagDropped;
|
||||||
|
extern bool gRedFlagDropped;
|
||||||
|
|
||||||
extern PROFILE gProfile[kMaxPlayers];
|
extern PROFILE gProfile[kMaxPlayers];
|
||||||
|
|
||||||
extern int dword_21EFB0[kMaxPlayers];
|
extern int dword_21EFB0[kMaxPlayers];
|
||||||
|
|
|
@ -1312,8 +1312,129 @@ void DrawPackItemInStatusBar2(PLAYER *pPlayer, int x, int y, int x2, int y2, int
|
||||||
DrawStatNumber("%3d", pPlayer->packInfo[pPlayer->at321].at1, kSBarNumberInv, x2, y2, 0, 0, nStat, nScale);
|
DrawStatNumber("%3d", pPlayer->packInfo[pPlayer->at321].at1, kSBarNumberInv, x2, y2, 0, 0, nStat, nScale);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void viewDrawPlayerSlots(void)
|
||||||
|
{
|
||||||
|
for (int nRows = (gNetPlayers - 1) / 4; nRows >= 0; nRows--)
|
||||||
|
{
|
||||||
|
for (int nCol = 0; nCol < 4; nCol++)
|
||||||
|
{
|
||||||
|
DrawStatSprite(2229, 40 + nCol * 80, 4 + nRows * 9, 16);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
char gTempStr[128];
|
char gTempStr[128];
|
||||||
|
|
||||||
|
void viewDrawPlayerFrags(void)
|
||||||
|
{
|
||||||
|
viewDrawPlayerSlots();
|
||||||
|
for (int i = 0, p = connecthead; p >= 0; i++, p = connectpoint2[p])
|
||||||
|
{
|
||||||
|
int x = 80 * (i & 3);
|
||||||
|
int y = 9 * (i / 4);
|
||||||
|
int col = gPlayer[p].at2ea & 3;
|
||||||
|
char* name = gProfile[p].name;
|
||||||
|
if (gProfile[p].skill == 2)
|
||||||
|
sprintf(gTempStr, "%s", name);
|
||||||
|
else
|
||||||
|
sprintf(gTempStr, "%s [%d]", name, gProfile[p].skill);
|
||||||
|
Bstrupr(gTempStr);
|
||||||
|
viewDrawText(4, gTempStr, x + 4, y + 1, -128, 11 + col, 0, 0);
|
||||||
|
sprintf(gTempStr, "%2d", gPlayer[p].at2c6);
|
||||||
|
viewDrawText(4, gTempStr, x + 76, y + 1, -128, 11 + col, 2, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void viewDrawPlayerFlags(void)
|
||||||
|
{
|
||||||
|
viewDrawPlayerSlots();
|
||||||
|
for (int i = 0, p = connecthead; p >= 0; i++, p = connectpoint2[p])
|
||||||
|
{
|
||||||
|
int x = 80 * (i & 3);
|
||||||
|
int y = 9 * (i / 4);
|
||||||
|
int col = gPlayer[p].at2ea & 3;
|
||||||
|
char* name = gProfile[p].name;
|
||||||
|
if (gProfile[p].skill == 2)
|
||||||
|
sprintf(gTempStr, "%s", name);
|
||||||
|
else
|
||||||
|
sprintf(gTempStr, "%s [%d]", name, gProfile[p].skill);
|
||||||
|
Bstrupr(gTempStr);
|
||||||
|
viewDrawText(4, gTempStr, x + 4, y + 1, -128, 11 + col, 0, 0);
|
||||||
|
|
||||||
|
sprintf(gTempStr, "F");
|
||||||
|
x += 76;
|
||||||
|
if (gPlayer[p].at90 & 2)
|
||||||
|
{
|
||||||
|
viewDrawText(4, gTempStr, x, y + 1, -128, 12, 2, 0);
|
||||||
|
x -= 6;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (gPlayer[p].at90 & 1)
|
||||||
|
viewDrawText(4, gTempStr, x, y + 1, -128, 11, 2, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void viewDrawCtfHudVanilla(ClockTicks arg)
|
||||||
|
{
|
||||||
|
int x = 1, y = 1;
|
||||||
|
if (dword_21EFD0[0] == 0 || ((int)totalclock & 8))
|
||||||
|
{
|
||||||
|
viewDrawText(0, "BLUE", x, y, -128, 10, 0, 0, 256);
|
||||||
|
dword_21EFD0[0] = dword_21EFD0[0] - arg;
|
||||||
|
if (dword_21EFD0[0] < 0)
|
||||||
|
dword_21EFD0[0] = 0;
|
||||||
|
sprintf(gTempStr, "%-3d", dword_21EFB0[0]);
|
||||||
|
viewDrawText(0, gTempStr, x, y + 10, -128, 10, 0, 0, 256);
|
||||||
|
}
|
||||||
|
x = 319;
|
||||||
|
if (dword_21EFD0[1] == 0 || ((int)totalclock & 8))
|
||||||
|
{
|
||||||
|
viewDrawText(0, "RED", x, y, -128, 7, 2, 0, 512);
|
||||||
|
dword_21EFD0[1] = dword_21EFD0[1] - arg;
|
||||||
|
if (dword_21EFD0[1] < 0)
|
||||||
|
dword_21EFD0[1] = 0;
|
||||||
|
sprintf(gTempStr, "%3d", dword_21EFB0[1]);
|
||||||
|
viewDrawText(0, gTempStr, x, y + 10, -128, 7, 2, 0, 512);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void viewDrawCtfHud(void)
|
||||||
|
{
|
||||||
|
bool blueFlagTaken = false;
|
||||||
|
bool redFlagTaken = false;
|
||||||
|
int blueFlagCarrierColor = 0;
|
||||||
|
int redFlagCarrierColor = 0;
|
||||||
|
for (int i = 0, p = connecthead; p >= 0; i++, p = connectpoint2[p])
|
||||||
|
{
|
||||||
|
if ((gPlayer[p].at90 & 1) != 0)
|
||||||
|
{
|
||||||
|
blueFlagTaken = true;
|
||||||
|
blueFlagCarrierColor = gPlayer[p].at2ea & 3;
|
||||||
|
}
|
||||||
|
if ((gPlayer[p].at90 & 2) != 0)
|
||||||
|
{
|
||||||
|
redFlagTaken = true;
|
||||||
|
redFlagCarrierColor = gPlayer[p].at2ea & 3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool meHaveBlueFlag = gMe->at90 & 1;
|
||||||
|
DrawStatMaskedSprite(meHaveBlueFlag ? 3558 : 3559, 320, 75, 0, 10, 0, 65536 * 0.35);
|
||||||
|
if (gBlueFlagDropped)
|
||||||
|
DrawStatMaskedSprite(2332, 305, 83, 0, 10, 0, 65536);
|
||||||
|
else if (blueFlagTaken)
|
||||||
|
DrawStatMaskedSprite(4097, 307, 77, 0, blueFlagCarrierColor ? 2 : 10, 0, 65536);
|
||||||
|
DrawStatNumber("%d", dword_21EFB0[0], kSBarNumberInv, 290, 90, 0, 10, 0, 65536 * 0.75);
|
||||||
|
|
||||||
|
bool meHaveRedFlag = gMe->at90 & 2;
|
||||||
|
DrawStatMaskedSprite(meHaveRedFlag ? 3558 : 3559, 320, 110, 0, 2, 0, 65536 * 0.35);
|
||||||
|
if (gRedFlagDropped)
|
||||||
|
DrawStatMaskedSprite(2332, 305, 117, 0, 2, 0, 65536);
|
||||||
|
else if (redFlagTaken)
|
||||||
|
DrawStatMaskedSprite(4097, 307, 111, 0, redFlagCarrierColor ? 2 : 10, 0, 65536);
|
||||||
|
DrawStatNumber("%d", dword_21EFB0[1], kSBarNumberInv, 290, 125, 0, 2, 0, 65536 * 0.75);
|
||||||
|
}
|
||||||
|
|
||||||
void UpdateStatusBar(ClockTicks arg)
|
void UpdateStatusBar(ClockTicks arg)
|
||||||
{
|
{
|
||||||
PLAYER *pPlayer = gView;
|
PLAYER *pPlayer = gView;
|
||||||
|
@ -1536,49 +1657,19 @@ void UpdateStatusBar(ClockTicks arg)
|
||||||
|
|
||||||
if (gGameOptions.nGameType == 3)
|
if (gGameOptions.nGameType == 3)
|
||||||
{
|
{
|
||||||
int x = 1, y = 1;
|
if (VanillaMode())
|
||||||
if (dword_21EFD0[0] == 0 || ((int)totalclock & 8))
|
|
||||||
{
|
{
|
||||||
viewDrawText(0, "BLUE", x, y, -128, 10, 0, 0, 256);
|
viewDrawCtfHudVanilla(arg);
|
||||||
dword_21EFD0[0] = dword_21EFD0[0]-arg;
|
|
||||||
if (dword_21EFD0[0] < 0)
|
|
||||||
dword_21EFD0[0] = 0;
|
|
||||||
sprintf(gTempStr, "%-3d", dword_21EFB0[0]);
|
|
||||||
viewDrawText(0, gTempStr, x, y+10, -128, 10, 0, 0, 256);
|
|
||||||
}
|
}
|
||||||
x = 319;
|
|
||||||
if (dword_21EFD0[1] == 0 || ((int)totalclock & 8))
|
|
||||||
{
|
|
||||||
viewDrawText(0, "RED", x, y, -128, 7, 2, 0, 512);
|
|
||||||
dword_21EFD0[1] = dword_21EFD0[1]-arg;
|
|
||||||
if (dword_21EFD0[1] < 0)
|
|
||||||
dword_21EFD0[1] = 0;
|
|
||||||
sprintf(gTempStr, "%3d", dword_21EFB0[1]);
|
|
||||||
viewDrawText(0, gTempStr, x, y+10, -128, 7, 2, 0, 512);
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
for (int nRows = (gNetPlayers-1) / 4; nRows >= 0; nRows--)
|
|
||||||
{
|
|
||||||
for (int nCol = 0; nCol < 4; nCol++)
|
|
||||||
{
|
|
||||||
DrawStatSprite(2229, 40+nCol*80, 4+nRows*9, 16);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (int i = 0, p = connecthead; p >= 0; i++, p = connectpoint2[p])
|
|
||||||
{
|
|
||||||
int x = 80*(i&3);
|
|
||||||
int y = 9*(i/4);
|
|
||||||
int col = gPlayer[p].at2ea&3;
|
|
||||||
char *name = gProfile[p].name;
|
|
||||||
if (gProfile[p].skill == 2)
|
|
||||||
sprintf(gTempStr, "%s", name);
|
|
||||||
else
|
else
|
||||||
sprintf(gTempStr, "%s [%d]", name, gProfile[p].skill);
|
{
|
||||||
Bstrupr(gTempStr);
|
viewDrawCtfHud();
|
||||||
viewDrawText(4, gTempStr, x+4, y+1, -128, 11+col, 0, 0);
|
viewDrawPlayerFlags();
|
||||||
sprintf(gTempStr, "%2d", gPlayer[p].at2c6);
|
}
|
||||||
viewDrawText(4, gTempStr, x+76, y+1, -128, 11+col, 2, 0);
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
viewDrawPlayerFrags();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue