Browse Source

♻️ Clean up InitCutscene

pull/1265/head
Anders Jenbo 5 years ago
parent
commit
a69a76941e
  1. 16
      Source/diablo.cpp
  2. 2
      Source/diablo.h
  3. 5
      Source/gendung.cpp
  4. 4
      Source/gendung.h
  5. 280
      Source/interfac.cpp
  6. 18
      Source/interfac.h
  7. 10
      Source/loadsave.cpp
  8. 8
      Source/msg.cpp
  9. 2
      Source/multi.cpp
  10. 4
      Source/portal.cpp
  11. 13
      Source/portal.h
  12. 2
      Source/quests.cpp
  13. 6
      Source/quests.h
  14. 13
      structs.h

16
Source/diablo.cpp

@ -14,7 +14,7 @@ DEVILUTION_BEGIN_NAMESPACE
SDL_Window *ghMainWnd;
DWORD glSeedTbl[NUMLEVELS];
int gnLevelTypeTbl[NUMLEVELS];
dungeon_type gnLevelTypeTbl[NUMLEVELS];
int glEndSeed[NUMLEVELS];
int glMid1Seed[NUMLEVELS];
int glMid2Seed[NUMLEVELS];
@ -175,7 +175,7 @@ static void diablo_parse_flags(int argc, char **argv)
} else if (strcasecmp("-l", argv[i]) == 0) {
setlevel = FALSE;
leveldebug = true;
leveltype = SDL_atoi(argv[++i]);
leveltype = (dungeon_type)SDL_atoi(argv[++i]);
currlevel = SDL_atoi(argv[++i]);
plr[0].plrlevel = currlevel;
} else if (strcasecmp("-m", argv[i]) == 0) {
@ -219,7 +219,7 @@ void FreeGameMem()
FreeTownerGFX();
}
static void start_game(unsigned int uMsg)
static void start_game(interface_mode uMsg)
{
zoomflag = TRUE;
CalcViewportGeometry();
@ -291,7 +291,7 @@ static bool ProcessInput()
return true;
}
static void run_game_loop(unsigned int uMsg)
static void run_game_loop(interface_mode uMsg)
{
WNDPROC saveProc;
MSG msg;
@ -361,7 +361,6 @@ static void run_game_loop(unsigned int uMsg)
BOOL StartGame(BOOL bNewGame, BOOL bSinglePlayer)
{
BOOL fExitProgram;
unsigned int uMsg;
gbSelectProvider = TRUE;
@ -382,9 +381,8 @@ BOOL StartGame(BOOL bNewGame, BOOL bSinglePlayer)
InitPortals();
InitDungMsgs(myplr);
}
if (!gbValidSaveFile || !gbLoadGame) {
uMsg = WM_DIABNEWGAME;
} else {
interface_mode uMsg = WM_DIABNEWGAME;
if (gbValidSaveFile && gbLoadGame) {
uMsg = WM_DIABLOADGAME;
}
run_game_loop(uMsg);
@ -1591,7 +1589,7 @@ void GM_Game(UINT uMsg, WPARAM wParam, LPARAM lParam)
music_stop();
track_repeat_walk(FALSE);
sgbMouseDown = CLICK_NONE;
ShowProgress(uMsg);
ShowProgress((interface_mode)uMsg);
force_redraw = 255;
DrawAndBlit();
LoadPWaterPalette();

2
Source/diablo.h

@ -155,7 +155,7 @@ typedef struct Options {
extern SDL_Window *ghMainWnd;
extern DWORD glSeedTbl[NUMLEVELS];
extern int gnLevelTypeTbl[NUMLEVELS];
extern dungeon_type gnLevelTypeTbl[NUMLEVELS];
extern int MouseX;
extern int MouseY;
extern BOOL gbRunGame;

5
Source/gendung.cpp

@ -60,13 +60,14 @@ int dmaxx;
int dmaxy;
int gnDifficulty;
/** Specifies the active dungeon type of the current game. */
BYTE leveltype;
dungeon_type leveltype;
/** Specifies the active dungeon level of the current game. */
BYTE currlevel;
BOOLEAN setlevel;
/** Specifies the active quest level of the current game. */
BYTE setlvlnum;
char setlvltype;
/** Level type of the active quest level */
dungeon_type setlvltype;
/** Specifies the player viewpoint X-coordinate of the map. */
int ViewX;
/** Specifies the player viewpoint Y-coordinate of the map. */

4
Source/gendung.h

@ -56,11 +56,11 @@ extern int dminy;
extern int dmaxx;
extern int dmaxy;
extern int gnDifficulty;
extern BYTE leveltype;
extern dungeon_type leveltype;
extern BYTE currlevel;
extern BOOLEAN setlevel;
extern BYTE setlvlnum;
extern char setlvltype;
extern dungeon_type setlvltype;
extern int ViewX;
extern int ViewY;
extern int ViewBX;

280
Source/interfac.cpp

@ -21,212 +21,128 @@ static void FreeInterface()
MemFreeDbg(sgpBackCel);
}
static void InitCutscene(unsigned int uMsg)
static Cutseens PickCutscene(interface_mode uMsg)
{
assert(!sgpBackCel);
switch (uMsg) {
case WM_DIABLOADGAME:
case WM_DIABNEWGAME:
return CutStart;
case WM_DIABRETOWN:
return CutTown;
case WM_DIABNEXTLVL:
switch (gnLevelTypeTbl[currlevel]) {
case WM_DIABPREVLVL:
case WM_DIABTOWNWARP:
case WM_DIABTWARPUP: {
int lvl = currlevel;
if (uMsg = WM_DIABTWARPUP)
lvl = plr[myplr].plrlevel;
if (lvl == 1 && uMsg == WM_DIABPREVLVL)
return CutTown;
if (lvl == 16 && uMsg == WM_DIABNEXTLVL)
return CutGate;
switch (gnLevelTypeTbl[lvl]) {
case DTYPE_TOWN:
sgpBackCel = LoadFileInMem("Gendata\\Cuttt.CEL", NULL);
LoadPalette("Gendata\\Cuttt.pal");
progress_id = 1;
break;
return CutTown;
case DTYPE_CATHEDRAL:
if (currlevel < 17) {
sgpBackCel = LoadFileInMem("Gendata\\Cutl1d.CEL", NULL);
LoadPalette("Gendata\\Cutl1d.pal");
progress_id = 0;
} else {
sgpBackCel = LoadFileInMem("Nlevels\\cutl5.CEL", NULL);
LoadPalette("Nlevels\\cutl5.pal");
progress_id = 1;
}
break;
if (lvl > 16)
return CutLevel5;
return CutLevel1;
case DTYPE_CATACOMBS:
sgpBackCel = LoadFileInMem("Gendata\\Cut2.CEL", NULL);
LoadPalette("Gendata\\Cut2.pal");
progress_id = 2;
break;
return CutLevel2;
case DTYPE_CAVES:
if (currlevel < 17) {
sgpBackCel = LoadFileInMem("Gendata\\Cut3.CEL", NULL);
LoadPalette("Gendata\\Cut3.pal");
progress_id = 1;
} else {
sgpBackCel = LoadFileInMem("Nlevels\\cutl6.CEL", NULL);
LoadPalette("Nlevels\\cutl6.pal");
progress_id = 1;
}
break;
if (lvl > 16)
return CutLevel6;
return CutLevel3;
case DTYPE_HELL:
if (currlevel < 15) {
sgpBackCel = LoadFileInMem("Gendata\\Cut4.CEL", NULL);
LoadPalette("Gendata\\Cut4.pal");
progress_id = 1;
} else {
sgpBackCel = LoadFileInMem("Gendata\\Cutgate.CEL", NULL);
LoadPalette("Gendata\\Cutgate.pal");
progress_id = 1;
}
break;
return CutLevel4;
default:
sgpBackCel = LoadFileInMem("Gendata\\Cutl1d.CEL", NULL);
LoadPalette("Gendata\\Cutl1d.pal");
progress_id = 0;
break;
return CutLevel1;
}
};
case WM_DIABWARPLVL:
return CutPortal;
case WM_DIABSETLVL:
case WM_DIABRTNLVL:
if (setlvlnum == SL_BONECHAMB)
return CutLevel2;
if (setlvlnum == SL_VILEBETRAYER)
return CutPortalRed;
return CutLevel1;
default:
app_fatal("Unknown progress mode");
return CutLevel1;
}
}
static void InitCutscene(interface_mode uMsg)
{
const char *celPath;
const char *palPath;
switch (PickCutscene(uMsg)) {
case CutStart:
celPath = "Gendata\\Cutstart.cel";
palPath = "Gendata\\Cutstart.pal";
progress_id = 1;
break;
case WM_DIABPREVLVL:
if (gnLevelTypeTbl[currlevel - 1] == 0) {
sgpBackCel = LoadFileInMem("Gendata\\Cuttt.CEL", NULL);
LoadPalette("Gendata\\Cuttt.pal");
progress_id = 1;
} else {
switch (gnLevelTypeTbl[currlevel]) {
case DTYPE_TOWN:
sgpBackCel = LoadFileInMem("Gendata\\Cuttt.CEL", NULL);
LoadPalette("Gendata\\Cuttt.pal");
progress_id = 1;
break;
case DTYPE_CATHEDRAL:
if (currlevel < 17) {
sgpBackCel = LoadFileInMem("Gendata\\Cutl1d.CEL", NULL);
LoadPalette("Gendata\\Cutl1d.pal");
progress_id = 0;
} else {
sgpBackCel = LoadFileInMem("Nlevels\\cutl5.CEL", NULL);
LoadPalette("Nlevels\\cutl5.pal");
progress_id = 1;
}
break;
case DTYPE_CATACOMBS:
sgpBackCel = LoadFileInMem("Gendata\\Cut2.CEL", NULL);
LoadPalette("Gendata\\Cut2.pal");
progress_id = 2;
break;
case DTYPE_CAVES:
if (currlevel < 17) {
sgpBackCel = LoadFileInMem("Gendata\\Cut3.CEL", NULL);
LoadPalette("Gendata\\Cut3.pal");
progress_id = 1;
} else {
sgpBackCel = LoadFileInMem("Nlevels\\cutl6.CEL", NULL);
LoadPalette("Nlevels\\cutl6.pal");
progress_id = 1;
}
break;
case DTYPE_HELL:
sgpBackCel = LoadFileInMem("Gendata\\Cut4.CEL", NULL);
LoadPalette("Gendata\\Cut4.pal");
progress_id = 1;
break;
default:
sgpBackCel = LoadFileInMem("Gendata\\Cutl1d.CEL", NULL);
LoadPalette("Gendata\\Cutl1d.pal");
progress_id = 0;
break;
}
}
case CutTown:
celPath = "Gendata\\Cuttt.cel";
palPath = "Gendata\\Cuttt.pal";
progress_id = 1;
break;
case WM_DIABSETLVL:
if (setlvlnum == SL_BONECHAMB) {
sgpBackCel = LoadFileInMem("Gendata\\Cut2.CEL", NULL);
LoadPalette("Gendata\\Cut2.pal");
progress_id = 2;
} else if (setlvlnum == SL_VILEBETRAYER) {
sgpBackCel = LoadFileInMem("Gendata\\Cutportr.CEL", NULL);
LoadPalette("Gendata\\Cutportr.pal");
progress_id = 1;
} else {
sgpBackCel = LoadFileInMem("Gendata\\Cutl1d.CEL", NULL);
LoadPalette("Gendata\\Cutl1d.pal");
progress_id = 0;
}
case CutLevel1:
celPath = "Gendata\\Cutl1d.cel";
palPath = "Gendata\\Cutl1d.pal";
progress_id = 0;
break;
case WM_DIABRTNLVL:
if (setlvlnum == SL_BONECHAMB) {
sgpBackCel = LoadFileInMem("Gendata\\Cut2.CEL", NULL);
LoadPalette("Gendata\\Cut2.pal");
progress_id = 2;
} else if (setlvlnum == SL_VILEBETRAYER) {
sgpBackCel = LoadFileInMem("Gendata\\Cutportr.CEL", NULL);
LoadPalette("Gendata\\Cutportr.pal");
progress_id = 1;
} else {
sgpBackCel = LoadFileInMem("Gendata\\Cutl1d.CEL", NULL);
LoadPalette("Gendata\\Cutl1d.pal");
progress_id = 0;
}
case CutLevel2:
celPath = "Gendata\\Cut2.cel";
palPath = "Gendata\\Cut2.pal";
progress_id = 2;
break;
case WM_DIABWARPLVL:
sgpBackCel = LoadFileInMem("Gendata\\Cutportl.CEL", NULL);
LoadPalette("Gendata\\Cutportl.pal");
case CutLevel3:
celPath = "Gendata\\Cut3.cel";
palPath = "Gendata\\Cut3.pal";
progress_id = 1;
break;
case WM_DIABLOADGAME:
sgpBackCel = LoadFileInMem("Gendata\\Cutstart.CEL", NULL);
LoadPalette("Gendata\\Cutstart.pal");
case CutLevel4:
celPath = "Gendata\\Cut4.cel";
palPath = "Gendata\\Cut4.pal";
progress_id = 1;
break;
case WM_DIABNEWGAME:
sgpBackCel = LoadFileInMem("Gendata\\Cutstart.CEL", NULL);
LoadPalette("Gendata\\Cutstart.pal");
case CutLevel5:
celPath = "Gendata\\Cutl5.cel";
palPath = "Gendata\\Cutl5.pal";
progress_id = 1;
break;
case WM_DIABTOWNWARP:
case WM_DIABTWARPUP:
switch (gnLevelTypeTbl[plr[myplr].plrlevel]) {
case DTYPE_TOWN:
sgpBackCel = LoadFileInMem("Gendata\\Cuttt.CEL", NULL);
LoadPalette("Gendata\\Cuttt.pal");
progress_id = 1;
break;
case DTYPE_CATHEDRAL:
if (plr[myplr].plrlevel < 17) {
sgpBackCel = LoadFileInMem("Gendata\\Cutl1d.CEL", NULL);
LoadPalette("Gendata\\Cutl1d.pal");
progress_id = 0;
} else {
sgpBackCel = LoadFileInMem("Nlevels\\Cutl5.CEL", NULL);
LoadPalette("Nlevels\\Cutl5.pal");
progress_id = 1;
}
break;
case DTYPE_CATACOMBS:
sgpBackCel = LoadFileInMem("Gendata\\Cut2.CEL", NULL);
LoadPalette("Gendata\\Cut2.pal");
progress_id = 2;
break;
case DTYPE_CAVES:
if (plr[myplr].plrlevel < 17) {
sgpBackCel = LoadFileInMem("Gendata\\Cut3.CEL", NULL);
LoadPalette("Gendata\\Cut3.pal");
progress_id = 1;
} else {
sgpBackCel = LoadFileInMem("Nlevels\\Cutl6.CEL", NULL);
LoadPalette("Nlevels\\Cutl6.pal");
progress_id = 1;
}
break;
case DTYPE_HELL:
sgpBackCel = LoadFileInMem("Gendata\\Cut4.CEL", NULL);
LoadPalette("Gendata\\Cut4.pal");
progress_id = 1;
break;
}
case CutLevel6:
celPath = "Gendata\\Cutl6.cel";
palPath = "Gendata\\Cutl6.pal";
progress_id = 1;
break;
case WM_DIABRETOWN:
sgpBackCel = LoadFileInMem("Gendata\\Cuttt.CEL", NULL);
LoadPalette("Gendata\\Cuttt.pal");
case CutPortal:
celPath = "Gendata\\Cutportl.cel";
palPath = "Gendata\\Cutportl.pal";
progress_id = 1;
break;
default:
app_fatal("Unknown progress mode");
case CutPortalRed:
celPath = "Gendata\\Cutportr.cel";
palPath = "Gendata\\Cutportr.pal";
progress_id = 1;
break;
case CutGate:
celPath = "Gendata\\Cutgate.cel";
palPath = "Gendata\\Cutgate.pal";
progress_id = 1;
break;
}
assert(!sgpBackCel);
sgpBackCel = LoadFileInMem(celPath, NULL);
LoadPalette(palPath);
sgdwProgress = 0;
}
@ -271,7 +187,7 @@ void interface_msg_pump()
}
}
BOOL IncProgress()
bool IncProgress()
{
interface_msg_pump();
sgdwProgress += 23;
@ -282,7 +198,7 @@ BOOL IncProgress()
return sgdwProgress >= 534;
}
void ShowProgress(unsigned int uMsg)
void ShowProgress(interface_mode uMsg)
{
WNDPROC saveProc;

18
Source/interfac.h

@ -12,9 +12,23 @@ DEVILUTION_BEGIN_NAMESPACE
extern "C" {
#endif
typedef enum Cutseens {
CutStart,
CutTown,
CutLevel1,
CutLevel2,
CutLevel3,
CutLevel4,
CutLevel5,
CutLevel6,
CutPortal,
CutPortalRed,
CutGate,
} cutseens;
void interface_msg_pump();
BOOL IncProgress();
void ShowProgress(unsigned int uMsg);
bool IncProgress();
void ShowProgress(interface_mode uMsg);
#ifdef __cplusplus
}

10
Source/loadsave.cpp

@ -716,7 +716,7 @@ static void LoadQuest(LoadHelper *file, int i)
pQuest->_qlevel = file->nextLE<Uint8>();
pQuest->_qtype = file->nextLE<Uint8>();
pQuest->_qactive = file->nextLE<Uint8>();
pQuest->_qlvltype = file->nextLE<Uint8>();
pQuest->_qlvltype = (dungeon_type)file->nextLE<Uint8>();
pQuest->_qtx = file->nextLE<Sint32>();
pQuest->_qty = file->nextLE<Sint32>();
pQuest->_qslvl = file->nextLE<Uint8>();
@ -737,7 +737,7 @@ static void LoadQuest(LoadHelper *file, int i)
ReturnLvlX = file->nextBE<Sint32>();
ReturnLvlY = file->nextBE<Sint32>();
ReturnLvl = file->nextBE<Sint32>();
ReturnLvlT = file->nextBE<Sint32>();
ReturnLvlT = (dungeon_type)file->nextBE<Sint32>();
DoomQuestState = file->nextBE<Sint32>();
}
@ -766,7 +766,7 @@ static void LoadPortal(LoadHelper *file, int i)
pPortal->x = file->nextLE<Sint32>();
pPortal->y = file->nextLE<Sint32>();
pPortal->level = file->nextLE<Sint32>();
pPortal->ltype = file->nextLE<Sint32>();
pPortal->ltype = (dungeon_type)file->nextLE<Sint32>();
pPortal->setlvl = file->nextBool32();
}
@ -830,7 +830,7 @@ void ConvertLevels()
bool _setlevel = setlevel;
int _setlvlnum = setlvlnum;
int _currlevel = currlevel;
int _leveltype = leveltype;
dungeon_type _leveltype = leveltype;
gbSkipSync = true;
@ -940,7 +940,7 @@ void LoadGame(BOOL firstflag)
setlevel = file.nextBool8();
setlvlnum = file.nextBE<Uint32>();
currlevel = file.nextBE<Uint32>();
leveltype = file.nextBE<Uint32>();
leveltype = (dungeon_type)file.nextBE<Uint32>();
if (!setlevel)
leveltype = gnLevelTypeTbl[currlevel];
int _ViewX = file.nextBE<Sint32>();

8
Source/msg.cpp

@ -296,7 +296,7 @@ static void DeltaImportJunk(BYTE *src)
sgJunk.portal[i].x,
sgJunk.portal[i].y,
sgJunk.portal[i].level,
sgJunk.portal[i].ltype);
(dungeon_type)sgJunk.portal[i].ltype);
}
}
@ -1244,7 +1244,7 @@ static DWORD On_STRING2(int pnum, TCmd *pCmd)
return len + 2; // length of string + nul terminator + sizeof(p->bCmd)
}
static void delta_open_portal(int pnum, BYTE x, BYTE y, BYTE bLevel, BYTE bLType, BYTE bSetLvl)
static void delta_open_portal(int pnum, BYTE x, BYTE y, BYTE bLevel, dungeon_type bLType, BYTE bSetLvl)
{
sgbDeltaChanged = TRUE;
sgJunk.portal[pnum].x = x;
@ -2242,7 +2242,7 @@ static DWORD On_ACTIVATEPORTAL(TCmd *pCmd, int pnum)
if (gbBufferMsgs == 1)
msg_send_packet(pnum, p, sizeof(*p));
else {
ActivatePortal(pnum, p->x, p->y, p->wParam1, p->wParam2, p->wParam3);
ActivatePortal(pnum, p->x, p->y, p->wParam1, (dungeon_type)p->wParam2, p->wParam3);
if (pnum != myplr) {
if (currlevel == 0)
AddInTownPortal(pnum);
@ -2260,7 +2260,7 @@ static DWORD On_ACTIVATEPORTAL(TCmd *pCmd, int pnum)
} else
RemovePortalMissile(pnum);
}
delta_open_portal(pnum, p->x, p->y, p->wParam1, p->wParam2, p->wParam3);
delta_open_portal(pnum, p->x, p->y, p->wParam1, (dungeon_type)p->wParam2, p->wParam3);
}
return sizeof(*p);

2
Source/multi.cpp

@ -582,7 +582,7 @@ static void multi_send_pinfo(int pnum, char cmd)
dthread_send_delta(pnum, cmd, &pkplr, sizeof(pkplr));
}
static int InitLevelType(int l)
static dungeon_type InitLevelType(int l)
{
if (l == 0)
return DTYPE_TOWN;

4
Source/portal.cpp

@ -27,7 +27,7 @@ void InitPortals()
}
}
void SetPortalStats(int i, BOOL o, int x, int y, int lvl, int lvltype)
void SetPortalStats(int i, BOOL o, int x, int y, int lvl, dungeon_type lvltype)
{
portal[i].open = o;
portal[i].x = x;
@ -79,7 +79,7 @@ void AddInTownPortal(int i)
AddWarpMissile(i, WarpDropX[i], WarpDropY[i]);
}
void ActivatePortal(int i, int x, int y, int lvl, int lvltype, BOOL sp)
void ActivatePortal(int i, int x, int y, int lvl, dungeon_type lvltype, BOOL sp)
{
portal[i].open = TRUE;

13
Source/portal.h

@ -12,14 +12,23 @@ DEVILUTION_BEGIN_NAMESPACE
extern "C" {
#endif
typedef struct PortalStruct {
bool open;
Sint32 x;
Sint32 y;
Sint32 level;
dungeon_type ltype;
bool setlvl;
} PortalStruct;
extern PortalStruct portal[MAXPORTAL];
void InitPortals();
void SetPortalStats(int i, BOOL o, int x, int y, int lvl, int lvltype);
void SetPortalStats(int i, BOOL o, int x, int y, int lvl, dungeon_type lvltype);
void AddWarpMissile(int i, int x, int y);
void SyncPortals();
void AddInTownPortal(int i);
void ActivatePortal(int i, int x, int y, int lvl, int lvltype, BOOL sp);
void ActivatePortal(int i, int x, int y, int lvl, dungeon_type lvltype, BOOL sp);
void DeactivatePortal(int i);
BOOL PortalOnLevel(int i);
void RemovePortalMissile(int id);

2
Source/quests.cpp

@ -18,7 +18,7 @@ int numqlines;
int WaterDone;
int ReturnLvlX;
int ReturnLvlY;
int ReturnLvlT;
dungeon_type ReturnLvlT;
int ReturnLvl;
/** Contains the data related to each quest_id. */

6
Source/quests.h

@ -18,7 +18,7 @@ typedef struct QuestStruct {
Uint8 _qlevel;
Uint8 _qtype;
Uint8 _qactive;
Uint8 _qlvltype;
dungeon_type _qlvltype;
Sint32 _qtx;
Sint32 _qty;
Uint8 _qslvl;
@ -32,7 +32,7 @@ typedef struct QuestStruct {
typedef struct QuestData {
Uint8 _qdlvl;
Sint8 _qdmultlvl;
Uint8 _qlvlt;
dungeon_type _qlvlt;
Uint8 _qdtype;
Uint8 _qdrnd;
Uint8 _qslvl;
@ -46,7 +46,7 @@ extern BYTE *pQLogCel;
extern QuestStruct quests[MAXQUESTS];
extern int ReturnLvlX;
extern int ReturnLvlY;
extern int ReturnLvlT;
extern dungeon_type ReturnLvlT;
extern int ReturnLvl;
void InitQuests();

13
structs.h

@ -102,19 +102,6 @@ typedef struct ObjectStruct {
int _oVar8;
} ObjectStruct;
//////////////////////////////////////////////////
// portal
//////////////////////////////////////////////////
typedef struct PortalStruct {
BOOL open;
int x;
int y;
int level;
int ltype;
BOOL setlvl;
} PortalStruct;
//////////////////////////////////////////////////
// gamemenu/gmenu
//////////////////////////////////////////////////

Loading…
Cancel
Save