mirror of
https://github.com/DrBeef/Raze.git
synced 2024-11-15 08:52:00 +00:00
- transitioned RR to the new mapinfo
This commit is contained in:
parent
3b57f38e55
commit
4f04fe66de
12 changed files with 115 additions and 478 deletions
|
@ -556,12 +556,15 @@ void artClearMapArt(void)
|
|||
|
||||
//==========================================================================
|
||||
//
|
||||
// Load map specfici ART
|
||||
// Load map specficied ART
|
||||
//
|
||||
//==========================================================================
|
||||
static FString currentMapArt;
|
||||
|
||||
void artSetupMapArt(const char* filename)
|
||||
{
|
||||
if (currentMapArt.CompareNoCase(filename)) return;
|
||||
currentMapArt = filename;
|
||||
artClearMapArt();
|
||||
|
||||
FStringf firstname("%s_00.art", filename);
|
||||
|
|
|
@ -38,7 +38,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|||
BEGIN_DUKE_NS
|
||||
|
||||
static OutputFileCounter savecounter;
|
||||
char previousboardfilename[BMAX_PATH];
|
||||
|
||||
// For storing pointers in files.
|
||||
// back_p==0: ptr -> "small int"
|
||||
|
@ -221,6 +220,8 @@ static int different_user_map;
|
|||
// XXX: keyboard input 'blocked' after load fail? (at least ESC?)
|
||||
int32_t G_LoadPlayer(FSaveGameNode *sv)
|
||||
{
|
||||
char workbuffer[BMAX_PATH];
|
||||
|
||||
if (sv->bIsExt)
|
||||
{
|
||||
int volume = -1;
|
||||
|
@ -318,19 +319,17 @@ int32_t G_LoadPlayer(FSaveGameNode *sv)
|
|||
int const mapIdx = volume*MAXLEVELS + level;
|
||||
|
||||
if (boardfilename[0])
|
||||
strcpy(currentboardfilename, boardfilename);
|
||||
strcpy(workbuffer, boardfilename);
|
||||
else if (mapList[mapIdx].fileName.IsNotEmpty())
|
||||
strcpy(currentboardfilename, mapList[mapIdx].fileName);
|
||||
strcpy(workbuffer, mapList[mapIdx].fileName);
|
||||
|
||||
|
||||
if (currentboardfilename[0])
|
||||
if (workbuffer[0])
|
||||
{
|
||||
// only setup art if map differs from previous
|
||||
if (!previousboardfilename[0] || Bstrcmp(previousboardfilename, currentboardfilename))
|
||||
artSetupMapArt(currentboardfilename);
|
||||
Bstrcpy(previousboardfilename, currentboardfilename);
|
||||
append_ext_UNSAFE(currentboardfilename, ".mhk");
|
||||
engineLoadMHK(currentboardfilename);
|
||||
artSetupMapArt(workbuffer);
|
||||
append_ext_UNSAFE(workbuffer, ".mhk");
|
||||
engineLoadMHK(workbuffer);
|
||||
}
|
||||
|
||||
currentboardfilename[0] = '\0';
|
||||
|
@ -519,20 +518,19 @@ int32_t G_LoadPlayer(FSaveGameNode *sv)
|
|||
|
||||
int const mapIdx = h.volnum*MAXLEVELS + h.levnum;
|
||||
|
||||
if (boardfilename[0])
|
||||
strcpy(currentboardfilename, boardfilename);
|
||||
else if (mapList[mapIdx].fileName.IsNotEmpty())
|
||||
strcpy(currentboardfilename, mapList[mapIdx].fileName);
|
||||
if (boardfilename[0])
|
||||
strcpy(workbuffer, boardfilename);
|
||||
else if (mapList[mapIdx].fileName.IsNotEmpty())
|
||||
strcpy(workbuffer, mapList[mapIdx].fileName);
|
||||
|
||||
if (currentboardfilename[0])
|
||||
{
|
||||
// only setup art if map differs from previous
|
||||
if (!previousboardfilename[0] || Bstrcmp(previousboardfilename, currentboardfilename))
|
||||
artSetupMapArt(currentboardfilename);
|
||||
Bstrcpy(previousboardfilename, currentboardfilename);
|
||||
append_ext_UNSAFE(currentboardfilename, ".mhk");
|
||||
engineLoadMHK(currentboardfilename);
|
||||
}
|
||||
|
||||
if (workbuffer[0])
|
||||
{
|
||||
// only setup art if map differs from previous
|
||||
artSetupMapArt(workbuffer);
|
||||
append_ext_UNSAFE(workbuffer, ".mhk");
|
||||
engineLoadMHK(workbuffer);
|
||||
}
|
||||
|
||||
Bmemcpy(currentboardfilename, boardfilename, BMAX_PATH);
|
||||
|
||||
|
|
|
@ -25,6 +25,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|||
#include "duke3d.h"
|
||||
#include "osdcmds.h"
|
||||
#include "cheats.h"
|
||||
#inclide "mapinfo.h"
|
||||
|
||||
BEGIN_RR_NS
|
||||
|
||||
|
@ -554,7 +555,7 @@ void G_DoCheats(void)
|
|||
int32_t const volnume = ud.m_volume_number, levnume = m_level_number;
|
||||
|
||||
if ((!VOLUMEONE || volnume == 0) && (unsigned)volnume < (unsigned)g_volumeCnt &&
|
||||
(unsigned)levnume < MAXLEVELS && g_mapInfo[volnume*MAXLEVELS + levnume].filename != NULL)
|
||||
(unsigned)levnume < MAXLEVELS && mapList[volnume*MAXLEVELS + levnume].fileName.IsNotEmpty())
|
||||
{
|
||||
ud.volume_number = volnume;
|
||||
ud.level_number = levnume;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
//-------------------------------------------------------------------------
|
||||
//-------------------------------------------------------------------------
|
||||
/*
|
||||
Copyright (C) 2016 EDuke32 developers and contributors
|
||||
|
||||
|
@ -47,6 +47,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|||
#include "filesystem/filesystem.h"
|
||||
#include "statistics.h"
|
||||
#include "c_dispatch.h"
|
||||
#include "mapinfo.h"
|
||||
|
||||
// Uncomment to prevent anything except mirrors from drawing. It is sensible to
|
||||
// also uncomment ENGINE_CLEAR_SCREEN in build/src/engine_priv.h.
|
||||
|
@ -6366,8 +6367,8 @@ static int32_t S_DefineMusic(const char *ID, const char *name)
|
|||
if (sel < 0)
|
||||
return -1;
|
||||
}
|
||||
|
||||
return S_DefineAudioIfSupported(&g_mapInfo[sel].musicfn, name);
|
||||
mapList[sel].music = name;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int parsedefinitions_game(scriptfile *, int);
|
||||
|
@ -6798,10 +6799,6 @@ static void G_Cleanup(void)
|
|||
|
||||
for (i=(MAXLEVELS*(MAXVOLUMES+1))-1; i>=0; i--) // +1 volume for "intro", "briefing" music
|
||||
{
|
||||
Bfree(g_mapInfo[i].name);
|
||||
Bfree(g_mapInfo[i].filename);
|
||||
Bfree(g_mapInfo[i].musicfn);
|
||||
|
||||
G_FreeMapState(i);
|
||||
}
|
||||
|
||||
|
|
|
@ -37,6 +37,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|||
#include "printf.h"
|
||||
#include "menu/menu.h"
|
||||
#include "stringtable.h"
|
||||
#include "mapinfo.h"
|
||||
|
||||
BEGIN_RR_NS
|
||||
|
||||
|
@ -886,10 +887,7 @@ void C_DefineMusic(int volumeNum, int levelNum, const char *fileName)
|
|||
Bassert((unsigned)volumeNum < MAXVOLUMES+1);
|
||||
Bassert((unsigned)levelNum < MAXLEVELS);
|
||||
|
||||
map_t *const pMapInfo = &g_mapInfo[(MAXLEVELS*volumeNum)+levelNum];
|
||||
|
||||
Bfree(pMapInfo->musicfn);
|
||||
pMapInfo->musicfn = dup_filename(fileName);
|
||||
mapList[(MAXLEVELS*volumeNum)+levelNum].music = fileName;
|
||||
}
|
||||
|
||||
void C_DefineVolumeFlags(int32_t vol, int32_t flags)
|
||||
|
@ -1873,16 +1871,11 @@ static int32_t C_ParseCommand(int32_t loop)
|
|||
|
||||
Bcorrectfilename(tempbuf,0);
|
||||
|
||||
if (g_mapInfo[j *MAXLEVELS+k].filename == NULL)
|
||||
g_mapInfo[j *MAXLEVELS+k].filename = (char *)Xcalloc(Bstrlen(tempbuf)+1,sizeof(uint8_t));
|
||||
else if ((Bstrlen(tempbuf)+1) > sizeof(g_mapInfo[j*MAXLEVELS+k].filename))
|
||||
g_mapInfo[j *MAXLEVELS+k].filename = (char *)Xrealloc(g_mapInfo[j*MAXLEVELS+k].filename,(Bstrlen(tempbuf)+1));
|
||||
|
||||
Bstrcpy(g_mapInfo[j*MAXLEVELS+k].filename,tempbuf);
|
||||
mapList[j *MAXLEVELS+k].fileName = tempbuf;
|
||||
|
||||
C_SkipComments();
|
||||
|
||||
g_mapInfo[j *MAXLEVELS+k].partime =
|
||||
mapList[j *MAXLEVELS+k].parTime =
|
||||
(((*(textptr+0)-'0')*10+(*(textptr+1)-'0'))*REALGAMETICSPERSEC*60)+
|
||||
(((*(textptr+3)-'0')*10+(*(textptr+4)-'0'))*REALGAMETICSPERSEC);
|
||||
|
||||
|
@ -1892,7 +1885,7 @@ static int32_t C_ParseCommand(int32_t loop)
|
|||
// cheap hack, 0.99 doesn't have the 3D Realms time
|
||||
if (*(textptr+2) == ':')
|
||||
{
|
||||
g_mapInfo[j *MAXLEVELS+k].designertime =
|
||||
mapList[j *MAXLEVELS+k].designerTime =
|
||||
(((*(textptr+0)-'0')*10+(*(textptr+1)-'0'))*REALGAMETICSPERSEC*60)+
|
||||
(((*(textptr+3)-'0')*10+(*(textptr+4)-'0'))*REALGAMETICSPERSEC);
|
||||
|
||||
|
@ -1919,14 +1912,7 @@ static int32_t C_ParseCommand(int32_t loop)
|
|||
|
||||
tempbuf[i] = '\0';
|
||||
|
||||
if (g_mapInfo[j*MAXLEVELS+k].name == NULL)
|
||||
g_mapInfo[j*MAXLEVELS+k].name = (char *)Xcalloc(Bstrlen(tempbuf)+1,sizeof(uint8_t));
|
||||
else if ((Bstrlen(tempbuf)+1) > sizeof(g_mapInfo[j*MAXLEVELS+k].name))
|
||||
g_mapInfo[j *MAXLEVELS+k].name = (char *)Xrealloc(g_mapInfo[j*MAXLEVELS+k].name,(Bstrlen(tempbuf)+1));
|
||||
|
||||
/* initprintf("level name string len: %d\n",Bstrlen(tempbuf)); */
|
||||
|
||||
Bstrcpy(g_mapInfo[j*MAXLEVELS+k].name,tempbuf);
|
||||
mapList[j *MAXLEVELS+k].name = tempbuf;
|
||||
|
||||
continue;
|
||||
|
||||
|
|
|
@ -29,6 +29,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|||
#include "savegame.h"
|
||||
#include "input.h"
|
||||
#include "m_crc32.h"
|
||||
#include "mapinfo.h"
|
||||
|
||||
#include "enet.h"
|
||||
|
||||
|
@ -2359,340 +2360,7 @@ void Net_ParsePacket(uint8_t *packbuf, int packbufleng)
|
|||
//case PACKET_TYPE_QUIT:
|
||||
// G_GameExit(" ");
|
||||
// break;
|
||||
#if 0
|
||||
default:
|
||||
switch (packbuf[0])
|
||||
{
|
||||
case PACKET_TYPE_MESSAGE:
|
||||
//slaves in M/S mode only send to master
|
||||
if ((!g_networkBroadcastMode) && (myconnectindex == connecthead))
|
||||
{
|
||||
if (packbuf[1] == 255)
|
||||
{
|
||||
//Master re-transmits message to all others
|
||||
for (i=connectpoint2[connecthead];i>=0;i=connectpoint2[i])
|
||||
if (i != other)
|
||||
Net_SendPacket(i,packbuf,packbufleng);
|
||||
}
|
||||
else if (((int)packbuf[1]) != myconnectindex)
|
||||
{
|
||||
//Master re-transmits message not intended for master
|
||||
Net_SendPacket((int)packbuf[1],packbuf,packbufleng);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Bstrcpy(recbuf,(char*)packbuf+2);
|
||||
recbuf[packbufleng-2] = 0;
|
||||
|
||||
G_AddUserQuote(recbuf);
|
||||
S_PlaySound(EXITMENUSOUND);
|
||||
|
||||
pus = NUMPAGES;
|
||||
pub = NUMPAGES;
|
||||
|
||||
break;
|
||||
|
||||
case PACKET_TYPE_NEW_GAME:
|
||||
//Slaves in M/S mode only send to master
|
||||
//Master re-transmits message to all others
|
||||
if ((!g_networkBroadcastMode) && (myconnectindex == connecthead))
|
||||
for (i=connectpoint2[connecthead];i>=0;i=connectpoint2[i])
|
||||
if (i != other) Net_SendPacket(i,packbuf,packbufleng);
|
||||
|
||||
if (vote_map != -1 || vote_episode != -1 || voting != -1)
|
||||
G_AddUserQuote("VOTE SUCCEEDED");
|
||||
|
||||
m_level_number = ud.level_number = packbuf[1];
|
||||
ud.m_volume_number = ud.volume_number = packbuf[2];
|
||||
ud.m_player_skill = ud.player_skill = packbuf[3];
|
||||
|
||||
// Non-menu variables handled by G_EnterLevel
|
||||
ud.m_monsters_off = packbuf[4];
|
||||
ud.m_respawn_monsters = packbuf[5];
|
||||
ud.m_respawn_items = packbuf[6];
|
||||
ud.m_respawn_inventory = packbuf[7];
|
||||
m_coop = packbuf[8];
|
||||
m_marker = packbuf[9];
|
||||
m_ffire = packbuf[10];
|
||||
m_noexits = packbuf[11];
|
||||
//ud.m_weaponstay = packbuf[12];
|
||||
|
||||
for (int TRAVERSE_CONNECT(i))
|
||||
{
|
||||
P_ResetWeapons(i);
|
||||
P_ResetInventory(i);
|
||||
}
|
||||
|
||||
G_NewGame(ud.volume_number,ud.level_number,ud.player_skill);
|
||||
|
||||
if (G_EnterLevel(MODE_GAME)) G_BackToMenu();
|
||||
|
||||
break;
|
||||
|
||||
case PACKET_TYPE_INIT_SETTINGS:
|
||||
//Slaves in M/S mode only send to master
|
||||
//Master re-transmits message to all others
|
||||
if ((!g_networkBroadcastMode) && (myconnectindex == connecthead))
|
||||
for (i = connectpoint2[connecthead]; i >= 0; i = connectpoint2[i])
|
||||
if (i != other) Net_SendPacket(i, packbuf, packbufleng);
|
||||
|
||||
m_level_number = ud.level_number = packbuf[1];
|
||||
ud.m_volume_number = ud.volume_number = packbuf[2];
|
||||
ud.m_player_skill = ud.player_skill = packbuf[3];
|
||||
|
||||
// Non-menu variables handled by G_EnterLevel
|
||||
ud.m_monsters_off = packbuf[4];
|
||||
ud.m_respawn_monsters = packbuf[5];
|
||||
ud.m_respawn_items = packbuf[6];
|
||||
ud.m_respawn_inventory = packbuf[7];
|
||||
m_coop = packbuf[8];
|
||||
m_marker = packbuf[9];
|
||||
m_ffire = packbuf[10];
|
||||
m_noexits = packbuf[11];
|
||||
//ud.m_weaponstay = packbuf[12];
|
||||
break;
|
||||
|
||||
case PACKET_TYPE_VERSION:
|
||||
//slaves in M/S mode only send to master
|
||||
//Master re-transmits message to all others
|
||||
if ((!g_networkBroadcastMode) && (myconnectindex == connecthead))
|
||||
for (i=connectpoint2[connecthead];i>=0;i=connectpoint2[i])
|
||||
if (i != other) Net_SendPacket(i,packbuf,packbufleng);
|
||||
|
||||
if (packbuf[2] != (char)atoi(s_buildDate))
|
||||
{
|
||||
initprintf("Player has version %d, expecting %d\n",packbuf[2],(char)atoi(s_buildDate));
|
||||
G_GameExit("You cannot play with different versions of EDuke32!");
|
||||
}
|
||||
if (packbuf[3] != (char)BYTEVERSION)
|
||||
{
|
||||
initprintf("Player has version %d, expecting %d (%d, %d, %d)\n",packbuf[3],BYTEVERSION, NETVERSION, PLUTOPAK, VOLUMEONE);
|
||||
G_GameExit("You cannot play Duke with different versions!");
|
||||
}
|
||||
if (packbuf[4] > g_numSyncBytes)
|
||||
{
|
||||
initprintf("Sync debugging enabled\n");
|
||||
g_numSyncBytes = packbuf[4];
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case PACKET_TYPE_PLAYER_OPTIONS:
|
||||
//slaves in M/S mode only send to master
|
||||
//Master re-transmits message to all others
|
||||
if ((!g_networkBroadcastMode) && (myconnectindex == connecthead))
|
||||
for (i=connectpoint2[connecthead];i>=0;i=connectpoint2[i])
|
||||
if (i != other) Net_SendPacket(i,packbuf,packbufleng);
|
||||
|
||||
other = packbuf[1];
|
||||
i = 2;
|
||||
|
||||
g_player[other].ps->aim_mode = packbuf[i++];
|
||||
g_player[other].ps->auto_aim = packbuf[i++];
|
||||
g_player[other].ps->weaponswitch = packbuf[i++];
|
||||
g_player[other].ps->palookup = g_player[other].pcolor = packbuf[i++];
|
||||
g_player[other].pteam = packbuf[i++];
|
||||
|
||||
break;
|
||||
|
||||
//case PACKET_TYPE_FRAGLIMIT_CHANGED:
|
||||
// //slaves in M/S mode only send to master
|
||||
// //Master re-transmits message to all others
|
||||
// if ((!g_networkBroadcastMode) && (myconnectindex == connecthead))
|
||||
// for (i = connectpoint2[connecthead];i >= 0;i = connectpoint2[i])
|
||||
// if (i != other) Net_SendPacket(i, packbuf, packbufleng);
|
||||
//
|
||||
// ud.fraglimit = packbuf[2];
|
||||
//
|
||||
// Bsprintf(tempbuf, "FRAGLIMIT CHANGED TO %d", ud.fraglimit);
|
||||
// G_AddUserQuote(tempbuf);
|
||||
// break;
|
||||
|
||||
case PACKET_TYPE_EOL:
|
||||
if ((!g_networkBroadcastMode) && (myconnectindex == connecthead))
|
||||
for (i=connectpoint2[connecthead];i>=0;i=connectpoint2[i])
|
||||
if (i != other) Net_SendPacket(i,packbuf,packbufleng);
|
||||
|
||||
for (TRAVERSE_CONNECT(i))
|
||||
g_player[i].ps->gm = MODE_EOL;
|
||||
|
||||
ud.level_number = packbuf[1];
|
||||
m_level_number = ud.level_number;
|
||||
ud.from_bonus = packbuf[2];
|
||||
break;
|
||||
|
||||
case PACKET_TYPE_PLAYER_NAME:
|
||||
//slaves in M/S mode only send to master
|
||||
//Master re-transmits message to all others
|
||||
if ((!g_networkBroadcastMode) && (myconnectindex == connecthead))
|
||||
for (i=connectpoint2[connecthead];i>=0;i=connectpoint2[i])
|
||||
if (i != other) Net_SendPacket(i,packbuf,packbufleng);
|
||||
|
||||
other = packbuf[1];
|
||||
|
||||
for (i=2;packbuf[i];i++)
|
||||
g_player[other].user_name[i-2] = packbuf[i];
|
||||
g_player[other].user_name[i-2] = 0;
|
||||
i++;
|
||||
|
||||
initprintf("Player %d's name is now %s\n", other, g_player[other].user_name);
|
||||
|
||||
break;
|
||||
|
||||
case PACKET_TYPE_WEAPON_CHOICE:
|
||||
//slaves in M/S mode only send to master
|
||||
//Master re-transmits message to all others
|
||||
if ((!g_networkBroadcastMode) && (myconnectindex == connecthead))
|
||||
for (i=connectpoint2[connecthead];i>=0;i=connectpoint2[i])
|
||||
if (i != other) Net_SendPacket(i,packbuf,packbufleng);
|
||||
|
||||
other = packbuf[1];
|
||||
|
||||
i = 2;
|
||||
|
||||
j = i; //This used to be Duke packet #9... now concatenated with Duke packet #6
|
||||
for (;i-j<10;i++) g_player[other].wchoice[i-j] = packbuf[i];
|
||||
|
||||
break;
|
||||
case PACKET_TYPE_RTS:
|
||||
//slaves in M/S mode only send to master
|
||||
//Master re-transmits message to all others
|
||||
if ((!g_networkBroadcastMode) && (myconnectindex == connecthead))
|
||||
for (i=connectpoint2[connecthead];i>=0;i=connectpoint2[i])
|
||||
if (i != other) Net_SendPacket(i,packbuf,packbufleng);
|
||||
|
||||
G_StartRTS(packbuf[1], other);
|
||||
break;
|
||||
|
||||
case PACKET_TYPE_MENU_LEVEL_QUIT:
|
||||
//slaves in M/S mode only send to master
|
||||
if (myconnectindex == connecthead)
|
||||
{
|
||||
//Master re-transmits message to all others
|
||||
for (i=connectpoint2[connecthead];i>=0;i=connectpoint2[i])
|
||||
if (i != other)
|
||||
Net_SendPacket(i,packbuf,packbufleng);
|
||||
}
|
||||
|
||||
G_GameExit("Game aborted from menu; disconnected.");
|
||||
|
||||
break;
|
||||
|
||||
case PACKET_TYPE_USER_MAP:
|
||||
//slaves in M/S mode only send to master
|
||||
if (myconnectindex == connecthead)
|
||||
{
|
||||
//Master re-transmits message to all others
|
||||
for (i=connectpoint2[connecthead];i>=0;i=connectpoint2[i])
|
||||
if (i != other)
|
||||
Net_SendPacket(i,packbuf,packbufleng);
|
||||
}
|
||||
|
||||
Bstrcpy(boardfilename,(char*)packbuf+1);
|
||||
boardfilename[packbufleng-1] = 0;
|
||||
Bcorrectfilename(boardfilename,0);
|
||||
if (boardfilename[0] != 0)
|
||||
{
|
||||
if (fileSystem.FileExists(boardfilename,0))
|
||||
{
|
||||
Bmemset(boardfilename,0,sizeof(boardfilename));
|
||||
Net_SendUserMapName();
|
||||
}
|
||||
}
|
||||
|
||||
if (m_level_number == 7 && ud.m_volume_number == 0 && boardfilename[0] == 0)
|
||||
m_level_number = 0;
|
||||
|
||||
break;
|
||||
|
||||
case PACKET_TYPE_MAP_VOTE:
|
||||
case PACKET_TYPE_MAP_VOTE_INITIATE:
|
||||
case PACKET_TYPE_MAP_VOTE_CANCEL:
|
||||
|
||||
if (myconnectindex == connecthead)
|
||||
{
|
||||
//Master re-transmits message to all others
|
||||
for (i=connectpoint2[connecthead];i>=0;i=connectpoint2[i])
|
||||
if (i != other)
|
||||
Net_SendPacket(i,packbuf,packbufleng);
|
||||
}
|
||||
|
||||
switch (packbuf[0])
|
||||
{
|
||||
case PACKET_TYPE_MAP_VOTE:
|
||||
if (voting == myconnectindex && g_player[packbuf[1]].gotvote == 0)
|
||||
{
|
||||
g_player[packbuf[1]].gotvote = 1;
|
||||
g_player[packbuf[1]].vote = packbuf[2];
|
||||
Bsprintf(tempbuf,"Confirmed vote from %s",g_player[packbuf[1]].user_name);
|
||||
G_AddUserQuote(tempbuf);
|
||||
}
|
||||
break;
|
||||
|
||||
case PACKET_TYPE_MAP_VOTE_INITIATE: // call map vote
|
||||
/* if (g_networkBroadcastMode == 0 && packbuf[1] == connecthead)
|
||||
break; // ignore this from master */
|
||||
voting = packbuf[1];
|
||||
vote_episode = packbuf[2];
|
||||
vote_map = packbuf[3];
|
||||
|
||||
Bsprintf(tempbuf,"%s^00 HAS CALLED A VOTE TO CHANGE MAP TO %s (E%dL%d)",
|
||||
g_player[packbuf[1]].user_name,
|
||||
g_mapInfo[(unsigned char)(packbuf[2]*MAXLEVELS + packbuf[3])].name,
|
||||
packbuf[2]+1,packbuf[3]+1);
|
||||
G_AddUserQuote(tempbuf);
|
||||
|
||||
Bsprintf(tempbuf,"Press F1 to Accept, F2 to Decline");
|
||||
G_AddUserQuote(tempbuf);
|
||||
|
||||
for (i=MAXPLAYERS-1;i>=0;i--)
|
||||
{
|
||||
g_player[i].vote = 0;
|
||||
g_player[i].gotvote = 0;
|
||||
}
|
||||
g_player[voting].gotvote = g_player[voting].vote = 1;
|
||||
break;
|
||||
|
||||
case PACKET_TYPE_MAP_VOTE_CANCEL: // cancel map vote
|
||||
if (voting == packbuf[1])
|
||||
{
|
||||
voting = -1;
|
||||
i = 0;
|
||||
for (j=MAXPLAYERS-1;j>=0;j--)
|
||||
i += g_player[j].gotvote;
|
||||
|
||||
if (i != numplayers)
|
||||
Bsprintf(tempbuf,"%s^00 has canceled the vote",g_player[(unsigned char)packbuf[1]].user_name);
|
||||
else Bsprintf(tempbuf,"Vote failed");
|
||||
for (i=MAXPLAYERS-1;i>=0;i--)
|
||||
{
|
||||
g_player[i].vote = 0;
|
||||
g_player[i].gotvote = 0;
|
||||
}
|
||||
G_AddUserQuote(tempbuf);
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
//case PACKET_TYPE_LOAD_GAME:
|
||||
// //Slaves in M/S mode only send to master
|
||||
// //Master re-transmits message to all others
|
||||
// if ((!g_networkBroadcastMode) && (myconnectindex == connecthead))
|
||||
// for (i=connectpoint2[connecthead];i>=0;i=connectpoint2[i])
|
||||
// if (i != other) Net_SendPacket(i,packbuf,packbufleng);
|
||||
//
|
||||
// multiflag = 2;
|
||||
// multiwhat = 0;
|
||||
// multiwho = packbuf[2]; //other: need to send in m/s mode because of possible re-transmit
|
||||
// multipos = packbuf[1];
|
||||
// G_LoadPlayer(multipos);
|
||||
// multiflag = 0;
|
||||
// break;
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3849,7 +3517,7 @@ void Net_ReceiveMapVoteInitiate(uint8_t *pbuf)
|
|||
|
||||
Bsprintf(tempbuf,"%s^00 has called a vote to change map to %s (E%dL%d)",
|
||||
g_player[voting].user_name,
|
||||
g_mapInfo[(uint8_t)(vote_episode*MAXLEVELS + vote_map)].name,
|
||||
mapList[(uint8_t)(vote_episode*MAXLEVELS + vote_map)].DisplayName(),
|
||||
vote_episode+1,vote_map+1);
|
||||
G_AddUserQuote(tempbuf);
|
||||
|
||||
|
|
|
@ -29,6 +29,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|||
#include "osdcmds.h"
|
||||
#include "savegame.h"
|
||||
#include "sbar.h"
|
||||
#include "mapinfo.h"
|
||||
|
||||
BEGIN_RR_NS
|
||||
|
||||
|
@ -68,7 +69,7 @@ static int osdcmd_changelevel(osdcmdptr_t parm)
|
|||
}
|
||||
}
|
||||
|
||||
if (level > MAXLEVELS || g_mapInfo[volume *MAXLEVELS+level].filename == NULL)
|
||||
if (level > MAXLEVELS || mapList *MAXLEVELS+level].fileName.IsEmpty)
|
||||
{
|
||||
OSD_Printf("changelevel: invalid level number\n");
|
||||
return OSDCMD_SHOWHELP;
|
||||
|
|
|
@ -29,6 +29,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|||
#include "cmdline.h"
|
||||
#include "statistics.h"
|
||||
#include "menu/menu.h"
|
||||
#include "mapinfo.h"
|
||||
#include "cmdlib.h"
|
||||
|
||||
BEGIN_RR_NS
|
||||
|
||||
|
@ -504,14 +506,13 @@ static void G_DoLoadScreen(const char *statustext, int32_t percent)
|
|||
}
|
||||
else if (RR && g_lastLevel)
|
||||
{
|
||||
menutext_center(textY,GStrings("ENTERIN"));
|
||||
menutext_center(textY,GStrings("TXT_ENTERIN"));
|
||||
menutext_center(textY+16+8,GStrings("TXT_CLOSEENCOUNTERS"));
|
||||
}
|
||||
else
|
||||
{
|
||||
menutext_center(textY, RR ? GStrings("TXT_ENTERIN") : GStrings("TXT_LOADING"));
|
||||
if (g_mapInfo[(ud.volume_number*MAXLEVELS) + ud.level_number].name != NULL)
|
||||
menutext_center(textY+16+8,g_mapInfo[(ud.volume_number*MAXLEVELS) + ud.level_number].name);
|
||||
menutext_center(textY+16+8,mapList[(ud.volume_number*MAXLEVELS) + ud.level_number].DisplayName());
|
||||
}
|
||||
|
||||
#ifndef EDUKE32_TOUCH_DEVICES
|
||||
|
@ -2179,10 +2180,7 @@ int G_FindLevelByFile(const char *fileName)
|
|||
|
||||
for (bssize_t levelNum = 0; levelNum < MAXLEVELS; levelNum++)
|
||||
{
|
||||
if (g_mapInfo[volOffset + levelNum].filename == NULL)
|
||||
continue;
|
||||
|
||||
if (!Bstrcasecmp(fileName, g_mapInfo[volOffset + levelNum].filename))
|
||||
if (!mapList[volOffset + levelNum].fileName.CompareNoCase(fileName))
|
||||
return volOffset + levelNum;
|
||||
}
|
||||
}
|
||||
|
@ -2249,20 +2247,18 @@ void G_SetupFilenameBasedMusic(char *nameBuf, const char *fileName, int levelNum
|
|||
{
|
||||
char *p;
|
||||
char const *exts[] = {
|
||||
#ifdef HAVE_FLAC
|
||||
"flac",
|
||||
#endif
|
||||
#ifdef HAVE_VORBIS
|
||||
"ogg",
|
||||
#endif
|
||||
#ifdef HAVE_XMP
|
||||
"mp3",
|
||||
"xm",
|
||||
"mod",
|
||||
"it",
|
||||
"s3m",
|
||||
"mtm",
|
||||
#endif
|
||||
"mid"
|
||||
"mid",
|
||||
"hmp",
|
||||
"hmi",
|
||||
"xmi"
|
||||
};
|
||||
|
||||
Bstrncpy(nameBuf, fileName, BMAX_PATH);
|
||||
|
@ -2279,14 +2275,14 @@ void G_SetupFilenameBasedMusic(char *nameBuf, const char *fileName, int levelNum
|
|||
{
|
||||
Bmemcpy(p+1, ext, Bstrlen(ext) + 1);
|
||||
|
||||
if (fileSystem.FileExists(nameBuf))
|
||||
{
|
||||
realloc_copy(&g_mapInfo[levelNum].musicfn, nameBuf);
|
||||
if (FileExists(nameBuf))
|
||||
{
|
||||
mapList[levelNum].music = nameBuf;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
realloc_copy(&g_mapInfo[levelNum].musicfn, "dethtoll.mid");
|
||||
mapList[levelNum].music = "dethtoll.mid";
|
||||
}
|
||||
|
||||
int G_EnterLevel(int gameMode)
|
||||
|
@ -2342,22 +2338,19 @@ int G_EnterLevel(int gameMode)
|
|||
}
|
||||
|
||||
mii = (ud.volume_number*MAXLEVELS)+ud.level_number;
|
||||
auto &mi = mapList[mii];
|
||||
|
||||
if (g_mapInfo[mii].name == NULL || g_mapInfo[mii].filename == NULL)
|
||||
if ( mi.name.IsEmpty() || mi.fileName.IsEmpty())
|
||||
{
|
||||
if (RR && g_lastLevel)
|
||||
{
|
||||
if (g_mapInfo[mii].filename == NULL)
|
||||
g_mapInfo[mii].filename = (char *)Xcalloc(BMAX_PATH, sizeof(uint8_t));
|
||||
if (g_mapInfo[mii].name == NULL)
|
||||
g_mapInfo[mii].name = Xstrdup("CLOSE ENCOUNTERS");
|
||||
// FIXME: Initialize this properly in the data structures!
|
||||
mi.fileName = "endgame.map";
|
||||
mi.name = "$TXT_CLOSEENCOUNTERS";
|
||||
}
|
||||
else if (Menu_HaveUserMap())
|
||||
{
|
||||
if (g_mapInfo[mii].filename == NULL)
|
||||
g_mapInfo[mii].filename = (char *)Xcalloc(BMAX_PATH, sizeof(uint8_t));
|
||||
if (g_mapInfo[mii].name == NULL)
|
||||
g_mapInfo[mii].name = Xstrdup("User Map");
|
||||
mi.name = "$TXT_USERMAP";
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -2378,18 +2371,7 @@ int G_EnterLevel(int gameMode)
|
|||
DukePlayer_t *const pPlayer = g_player[0].ps;
|
||||
int16_t lbang;
|
||||
|
||||
if (RR && g_lastLevel)
|
||||
{
|
||||
if (engineLoadBoard("endgame.map", 0, &pPlayer->pos, &lbang, &pPlayer->cursectnum) < 0)
|
||||
{
|
||||
OSD_Printf(OSD_ERROR "Map \"endgame.map\" not found or invalid map version!\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
G_LoadMapHack(levelName, "endgame.map");
|
||||
G_SetupFilenameBasedMusic(levelName, "endgame.map", m_level_number);
|
||||
}
|
||||
else if (!VOLUMEONE && Menu_HaveUserMap())
|
||||
if (!VOLUMEONE && Menu_HaveUserMap())
|
||||
{
|
||||
if (engineLoadBoard(boardfilename, 0, &pPlayer->pos, &lbang, &pPlayer->cursectnum) < 0)
|
||||
{
|
||||
|
@ -2401,15 +2383,15 @@ int G_EnterLevel(int gameMode)
|
|||
G_LoadMapHack(levelName, boardfilename);
|
||||
G_SetupFilenameBasedMusic(levelName, boardfilename, m_level_number);
|
||||
}
|
||||
else if (engineLoadBoard(g_mapInfo[mii].filename, VOLUMEONE, &pPlayer->pos, &lbang, &pPlayer->cursectnum) < 0)
|
||||
else if (engineLoadBoard(mi.fileName, VOLUMEONE, &pPlayer->pos, &lbang, &pPlayer->cursectnum) < 0)
|
||||
{
|
||||
OSD_Printf(OSD_ERROR "Map \"%s\" not found or invalid map version!\n", g_mapInfo[mii].filename);
|
||||
OSD_Printf(OSD_ERROR "Map \"%s\" not found or invalid map version!\n", mi.fileName.GetChars());
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
STAT_NewLevel(g_mapInfo[mii].filename);
|
||||
G_LoadMapHack(levelName, g_mapInfo[mii].filename);
|
||||
STAT_NewLevel(mi.fileName);
|
||||
G_LoadMapHack(levelName, mi.fileName);
|
||||
}
|
||||
|
||||
if (RR && !RRRA && ud.volume_number == 1 && ud.level_number == 1)
|
||||
|
@ -2444,7 +2426,7 @@ int G_EnterLevel(int gameMode)
|
|||
G_AlignWarpElevators();
|
||||
resetpspritevars(gameMode);
|
||||
|
||||
ud.playerbest = CONFIG_GetMapBestTime(Menu_HaveUserMap() ? boardfilename : g_mapInfo[mii].filename, g_loadedMapHack.md4);
|
||||
ud.playerbest = CONFIG_GetMapBestTime(Menu_HaveUserMap() ? boardfilename : mi.fileName.GetChars(), g_loadedMapHack.md4);
|
||||
|
||||
// G_FadeLoad(0,0,0, 252,0, -28, 4, -1);
|
||||
G_CacheMapData();
|
||||
|
@ -2452,9 +2434,9 @@ int G_EnterLevel(int gameMode)
|
|||
|
||||
if (ud.recstat != 2)
|
||||
{
|
||||
if (g_mapInfo[g_musicIndex].musicfn == NULL ||
|
||||
g_mapInfo[mii].musicfn == NULL || // intentional, to pass control further while avoiding the strcmp on null
|
||||
strcmp(g_mapInfo[g_musicIndex].musicfn, g_mapInfo[mii].musicfn) ||
|
||||
if (mapList[g_musicIndex].music.IsEmpty() ||
|
||||
mi.music.IsEmpty() ||
|
||||
mi.music.CompareNoCase(mapList[g_musicIndex].music) ||
|
||||
g_musicSize == 0 ||
|
||||
ud.last_level == -1)
|
||||
{
|
||||
|
@ -2545,7 +2527,7 @@ int G_EnterLevel(int gameMode)
|
|||
else
|
||||
{
|
||||
OSD_Printf(OSDTEXT_YELLOW "E%dL%d: %s\n", ud.volume_number+1, ud.level_number+1,
|
||||
g_mapInfo[mii].name);
|
||||
mapList[mii].DisplayName());
|
||||
}
|
||||
|
||||
g_restorePalette = -1;
|
||||
|
|
|
@ -29,6 +29,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|||
#include "gamecontrol.h"
|
||||
#include "version.h"
|
||||
#include "z_music.h"
|
||||
#include "mapinfo.h"
|
||||
|
||||
#include "savegamehelp.h"
|
||||
BEGIN_RR_NS
|
||||
|
@ -273,17 +274,17 @@ int32_t G_LoadPlayer(const char *path)
|
|||
Bmemcpy(boardfilename, h.boardfn, sizeof(boardfilename));
|
||||
|
||||
int const mapIdx = h.volnum*MAXLEVELS + h.levnum;
|
||||
|
||||
char workbuffer[BMAX_PATH];
|
||||
if (boardfilename[0])
|
||||
Bstrcpy(currentboardfilename, boardfilename);
|
||||
else if (g_mapInfo[mapIdx].filename)
|
||||
Bstrcpy(currentboardfilename, g_mapInfo[mapIdx].filename);
|
||||
Bstrcpy(workbuffer, boardfilename);
|
||||
else
|
||||
Bstrcpy(workbuffer, mapList[mapIdx].fileName);
|
||||
|
||||
if (currentboardfilename[0])
|
||||
if (workbuffer[0])
|
||||
{
|
||||
artSetupMapArt(currentboardfilename);
|
||||
append_ext_UNSAFE(currentboardfilename, ".mhk");
|
||||
engineLoadMHK(currentboardfilename);
|
||||
artSetupMapArt(workbuffer);
|
||||
append_ext_UNSAFE(workbuffer, ".mhk");
|
||||
engineLoadMHK(workbuffer);
|
||||
}
|
||||
|
||||
Bmemcpy(currentboardfilename, boardfilename, BMAX_PATH);
|
||||
|
@ -1169,8 +1170,8 @@ int32_t sv_saveandmakesnapshot(FileWriter &fil, char const *name, int8_t spot, i
|
|||
auto fw = WriteSavegameChunk("header.dat");
|
||||
fw->Write(&h, sizeof(savehead_t));
|
||||
|
||||
auto& mi = g_mapInfo[(MAXLEVELS * ud.volume_number) + ud.level_number];
|
||||
G_WriteSaveHeader(name, mi.filename, mi.name);
|
||||
auto& mi = mapList[(MAXLEVELS * ud.volume_number) + ud.level_number];
|
||||
G_WriteSaveHeader(name, mi.fileName, mi.DisplayName());
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -33,6 +33,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|||
#include "mdsprite.h"
|
||||
#include "gamecvars.h"
|
||||
#include "menu/menu.h"
|
||||
#include "mapinfo.h"
|
||||
|
||||
BEGIN_RR_NS
|
||||
|
||||
|
@ -175,7 +176,7 @@ static void G_ShowScores(void)
|
|||
if (g_mostConcurrentPlayers > 1 && (g_gametypeFlags[ud.coop]&GAMETYPE_SCORESHEET))
|
||||
{
|
||||
gametext_center(SCORESHEETOFFSET+58+2, GStrings("Multiplayer Totals"));
|
||||
gametext_center(SCORESHEETOFFSET+58+10, g_mapInfo[G_LastMapInfoIndex()].name);
|
||||
gametext_center(SCORESHEETOFFSET+58+10, mapList[G_LastMapInfoIndex()].DisplayName());
|
||||
|
||||
t = 0;
|
||||
minitext(70, SCORESHEETOFFSET+80, GStrings("Name"), 8, 2+8+16+ROTATESPRITE_MAX);
|
||||
|
@ -994,7 +995,7 @@ void G_DisplayRest(int32_t smoothratio)
|
|||
{
|
||||
if (!G_HaveUserMap())
|
||||
minitext(5, a+6, GStrings.localize(gVolumeNames[ud.volume_number]), 0, 2+8+16+256);
|
||||
minitext(5, a+6+6, g_mapInfo[ud.volume_number*MAXLEVELS + ud.level_number].name, 0, 2+8+16+256);
|
||||
minitext(5, a+6+6, mapList[ud.volume_number*MAXLEVELS + ud.level_number].DisplayName(), 0, 2+8+16+256);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1024,12 +1025,12 @@ void G_DisplayRest(int32_t smoothratio)
|
|||
else if (g_levelTextTime < 5)
|
||||
o |= 1;
|
||||
|
||||
if (g_mapInfo[(ud.volume_number*MAXLEVELS) + ud.level_number].name != NULL)
|
||||
if (mapList[(ud.volume_number*MAXLEVELS) + ud.level_number].name.IsNotEmpty())
|
||||
{
|
||||
char const * const fn = currentboardfilename[0] != 0 &&
|
||||
ud.volume_number == 0 && ud.level_number == 7
|
||||
? currentboardfilename
|
||||
: g_mapInfo[(ud.volume_number*MAXLEVELS) + ud.level_number].name;
|
||||
: mapList[(ud.volume_number*MAXLEVELS) + ud.level_number].DisplayName();
|
||||
|
||||
menutext_(160<<16, (90+16+8)<<16, -g_levelTextTime+22/*quotepulseshade*/, fn, o, TEXT_XCENTER);
|
||||
}
|
||||
|
@ -1118,7 +1119,7 @@ void G_DisplayRest(int32_t smoothratio)
|
|||
{
|
||||
Bsprintf(tempbuf, "%s^00 has called a vote for map", g_player[voting].user_name);
|
||||
gametext_center(40, tempbuf);
|
||||
Bsprintf(tempbuf, "%s (E%dL%d)", g_mapInfo[vote_episode*MAXLEVELS + vote_map].name, vote_episode+1, vote_map+1);
|
||||
Bsprintf(tempbuf, "%s (E%dL%d)", mapList[vote_episode*MAXLEVELS + vote_map].DisplayName(), vote_episode+1, vote_map+1);
|
||||
gametext_center(48, tempbuf);
|
||||
gametext_center(70, "Press F1 to Accept, F2 to Decline");
|
||||
}
|
||||
|
@ -1911,7 +1912,7 @@ static void G_DisplayMPResultsScreen(void)
|
|||
if (!RR && PLUTOPAK) // JBF 20030804
|
||||
rotatesprite_fs((260)<<16, 36<<16, 65536L, 0, PLUTOPAKSPRITE+2, 0, 0, 2+8);
|
||||
gametext_center(58+(RR ? 0 : 2), GStrings("Multiplayer Totals"));
|
||||
gametext_center(58+10, g_mapInfo[G_LastMapInfoIndex()].name);
|
||||
gametext_center(58+10, mapList[G_LastMapInfoIndex()].DisplayName());
|
||||
|
||||
gametext_center_shade(RR ? 175 : 165, GStrings("Presskey"), quotepulseshade);
|
||||
|
||||
|
@ -1979,11 +1980,11 @@ static int32_t G_PrintTime_ClockPad(void)
|
|||
clockpad = max(clockpad, ij);
|
||||
if (!(ud.volume_number == 0 && ud.last_level-1 == 7 && boardfilename[0]))
|
||||
{
|
||||
for (ii=g_mapInfo[G_LastMapInfoIndex()].partime/(REALGAMETICSPERSEC*60), ij=1; ii>9; ii/=10, ij++) { }
|
||||
for (ii=mapList[G_LastMapInfoIndex()].parTime/(REALGAMETICSPERSEC*60), ij=1; ii>9; ii/=10, ij++) { }
|
||||
clockpad = max(clockpad, ij);
|
||||
if (g_mapInfo[G_LastMapInfoIndex()].designertime)
|
||||
if (mapList[G_LastMapInfoIndex()].designerTime)
|
||||
{
|
||||
for (ii=g_mapInfo[G_LastMapInfoIndex()].designertime/(REALGAMETICSPERSEC*60), ij=1; ii>9; ii/=10, ij++) { }
|
||||
for (ii=mapList[G_LastMapInfoIndex()].designerTime/(REALGAMETICSPERSEC*60), ij=1; ii>9; ii/=10, ij++) { }
|
||||
clockpad = max(clockpad, ij);
|
||||
}
|
||||
}
|
||||
|
@ -2012,13 +2013,13 @@ const char* G_PrintParTime(void)
|
|||
{
|
||||
if (ud.last_level < 1)
|
||||
return "<invalid>";
|
||||
return G_PrintTime2(g_mapInfo[G_LastMapInfoIndex()].partime);
|
||||
return G_PrintTime2(mapList[G_LastMapInfoIndex()].parTime);
|
||||
}
|
||||
const char* G_PrintDesignerTime(void)
|
||||
{
|
||||
if (ud.last_level < 1)
|
||||
return "<invalid>";
|
||||
return G_PrintTime2(g_mapInfo[G_LastMapInfoIndex()].designertime);
|
||||
return G_PrintTime2(mapList[G_LastMapInfoIndex()].designerTime);
|
||||
}
|
||||
const char* G_PrintBestTime(void)
|
||||
{
|
||||
|
@ -2043,17 +2044,17 @@ void G_BonusScreen(int32_t bonusonly)
|
|||
}
|
||||
else
|
||||
{
|
||||
lastmapname = g_mapInfo[G_LastMapInfoIndex()].name;
|
||||
if (!lastmapname) // this isn't right but it's better than no name at all
|
||||
lastmapname = g_mapInfo[G_LastMapInfoIndex()].name;
|
||||
lastmapname = mapList[G_LastMapInfoIndex()].DisplayName();
|
||||
if (!lastmapname || !*lastmapname) // this isn't right but it's better than no name at all
|
||||
lastmapname = mapList[G_LastMapInfoIndex()].fileName;
|
||||
}
|
||||
|
||||
if (RR)
|
||||
{
|
||||
if ((g_lastLevel && ud.volume_number == 2) || g_vixenLevel)
|
||||
lastmapname = "CLOSE ENCOUNTERS";
|
||||
else if (g_turdLevel)
|
||||
lastmapname = "SMELTING PLANT";
|
||||
lastmapname = GStrings("TXT_CLOSEENCOUNTERS");
|
||||
else if (g_turdLevel)
|
||||
lastmapname = GStrings("SMELTIN' PLANT");
|
||||
}
|
||||
|
||||
|
||||
|
@ -2256,7 +2257,7 @@ void G_BonusScreen(int32_t bonusonly)
|
|||
yy+= yystep;
|
||||
if (!(ud.volume_number == 0 && ud.last_level-1 == 7 && boardfilename[0]))
|
||||
{
|
||||
if (g_mapInfo[G_LastMapInfoIndex()].partime)
|
||||
if (mapList[G_LastMapInfoIndex()].parTime)
|
||||
{
|
||||
if (!RR)
|
||||
gametext(10, yy+9, GStrings("TXT_ParTime"));
|
||||
|
@ -2264,7 +2265,7 @@ void G_BonusScreen(int32_t bonusonly)
|
|||
menutext(30, yy, GStrings("TXT_ParTime"));
|
||||
yy+=yystep;
|
||||
}
|
||||
if (g_mapInfo[G_LastMapInfoIndex()].designertime)
|
||||
if (mapList[G_LastMapInfoIndex()].designerTime)
|
||||
{
|
||||
// EDuke 2.0 / NAM source suggests "Green Beret's Time:"
|
||||
if (DUKE)
|
||||
|
@ -2320,7 +2321,7 @@ void G_BonusScreen(int32_t bonusonly)
|
|||
|
||||
if (!(ud.volume_number == 0 && ud.last_level-1 == 7 && boardfilename[0]))
|
||||
{
|
||||
if (g_mapInfo[G_LastMapInfoIndex()].partime)
|
||||
if (mapList[G_LastMapInfoIndex()].parTime)
|
||||
{
|
||||
G_PrintParTime();
|
||||
if (!RR)
|
||||
|
@ -2329,7 +2330,7 @@ void G_BonusScreen(int32_t bonusonly)
|
|||
menutext(191, yy, tempbuf);
|
||||
yy+=yystep;
|
||||
}
|
||||
if (g_mapInfo[G_LastMapInfoIndex()].designertime)
|
||||
if (mapList[G_LastMapInfoIndex()].designerTime)
|
||||
{
|
||||
G_PrintDesignerTime();
|
||||
if (DUKE)
|
||||
|
@ -2623,9 +2624,9 @@ void G_BonusScreenRRRA(int32_t bonusonly)
|
|||
}
|
||||
else
|
||||
{
|
||||
lastmapname = g_mapInfo[G_LastMapInfoIndex()].name;
|
||||
if (!lastmapname) // this isn't right but it's better than no name at all
|
||||
lastmapname = g_mapInfo[G_LastMapInfoIndex()].name;
|
||||
lastmapname = mapList[G_LastMapInfoIndex()].DisplayName();
|
||||
if (!lastmapname || !*lastmapname) // this isn't right but it's better than no name at all
|
||||
lastmapname = mapList[G_LastMapInfoIndex()].fileName;
|
||||
}
|
||||
|
||||
if ((g_lastLevel && ud.volume_number == 2) || g_vixenLevel)
|
||||
|
@ -2826,12 +2827,12 @@ void G_BonusScreenRRRA(int32_t bonusonly)
|
|||
yy+= yystep;
|
||||
if (!(ud.volume_number == 0 && ud.last_level-1 == 7 && boardfilename[0]))
|
||||
{
|
||||
if (g_mapInfo[G_LastMapInfoIndex()].partime)
|
||||
if (mapList[G_LastMapInfoIndex()].parTime)
|
||||
{
|
||||
menutext(30, yy, GStrings("TXT_PARTIME"));
|
||||
yy+=yystep;
|
||||
}
|
||||
if (g_mapInfo[G_LastMapInfoIndex()].designertime)
|
||||
if (mapList[G_LastMapInfoIndex()].designerTime)
|
||||
{
|
||||
menutext(30, yy, GStrings("TXT_XTRTIME"));
|
||||
yy+=yystep;
|
||||
|
@ -2869,13 +2870,14 @@ void G_BonusScreenRRRA(int32_t bonusonly)
|
|||
|
||||
if (!(ud.volume_number == 0 && ud.last_level-1 == 7 && boardfilename[0]))
|
||||
{
|
||||
if (g_mapInfo[G_LastMapInfoIndex()].partime)
|
||||
if (mapList[G_LastMapInfoIndex()].parTime)
|
||||
{
|
||||
G_PrintParTime();
|
||||
menutext(191, yy, tempbuf);
|
||||
yy+=yystep;
|
||||
}
|
||||
if (g_mapInfo[G_LastMapInfoIndex()].designertime)
|
||||
if (mapList[G_LastMapInfoIndex()].designerT
|
||||
ime)
|
||||
{
|
||||
G_PrintDesignerTime();
|
||||
menutext(191, yy, tempbuf);
|
||||
|
|
|
@ -98,12 +98,9 @@ typedef struct {
|
|||
} mapstate_t;
|
||||
|
||||
typedef struct {
|
||||
int32_t partime, designertime;
|
||||
char *name, *filename, *musicfn;
|
||||
mapstate_t *savedstate;
|
||||
} map_t;
|
||||
|
||||
//extern map_t g_mapInfo[(MAXVOLUMES+1)*MAXLEVELS]; // +1 volume for "intro", "briefing" music
|
||||
|
||||
void G_ActivateBySector(int sect,int spriteNum);
|
||||
int S_FindMusicSFX(int sectNum, int *sndptr);
|
||||
|
|
|
@ -28,6 +28,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|||
#include "openaudio.h"
|
||||
#include "z_music.h"
|
||||
#include <atomic>
|
||||
#include "mapinfo.h"
|
||||
|
||||
BEGIN_RR_NS
|
||||
|
||||
|
@ -131,7 +132,7 @@ static void S_SetMusicIndex(unsigned int m)
|
|||
|
||||
void S_PlayLevelMusicOrNothing(unsigned int m)
|
||||
{
|
||||
Mus_Play(g_mapInfo[m].filename, RR ? nullptr : g_mapInfo[m].musicfn, true);
|
||||
Mus_Play(mapList[m].fileName, RR ? nullptr : mapList[m].music, true);
|
||||
S_SetMusicIndex(m);
|
||||
}
|
||||
|
||||
|
@ -139,8 +140,8 @@ int S_TryPlaySpecialMusic(unsigned int m)
|
|||
{
|
||||
if (RR)
|
||||
return 1;
|
||||
char const * musicfn = g_mapInfo[m].musicfn;
|
||||
if (musicfn != NULL)
|
||||
auto &musicfn = mapList[m].music;
|
||||
if (musicfn.IsNotEmpty())
|
||||
{
|
||||
if (!Mus_Play(nullptr, musicfn, 1))
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue