Wing Commander
Reconstructed Win32 source (1996)
Loading...
Searching...
No Matches
barracks.c File Reference

The barracks: campaign save and load. More...

#include "wc1.h"
#include <process.h>
#include <sys/stat.h>

Go to the source code of this file.

Functions

short InitializeModalTextPanel (ModalTextPanel *panel, short fontIndex, ShortRect bounds, short clearColour, short backgroundColour, short borderColour)
void DrawModalTextPanel (ModalTextPanel *panel, short x, short y, unsigned char alignment, const char *format,...)
void RestoreModalTextPanel (ModalTextPanel *panel)
short ShowModalTextPanel (short fontIndex, const char *format,...)
void ReleaseModalTextPanel (void)
short AnySavedGames (void)
void CreateEmptySaveGameFile (void)
void EnsureSaveGameFile (void)
void InitializeBarracksAnimation (BarracksAnimationState *state)
void FreeBarracksMenuLabel (char **label)
void SetAwakenBarracksMenuLabel (char **label, short series, short mission, char *description)
void FreeBarracksMenuLabels (void)
short SaveGame (short slot, SaveGameRecord *gameRecord)
short PromptForTextInput (short x, short y, const char *prompt, char *destination, short maximumLength, short inputMode)
int WarnLoadGameFirst (void)
void SaveGameWithNamePrompt (short slot, CampaignState *campaign, PilotRecord *pilots, MissionObjective *objectives)
int LoadGame (short slot, SaveGameRecord *gameRecord)
void LoadGameFromSlot (short slot, CampaignState *campaign, PilotRecord *pilots, MissionObjective *objectives)
void SetBunkMenuLabel (short occupied, short side, char **label, short series, short mission, char *description)
void GetBunkInfo (BarracksAnimationState *state)
void DrawBarracksBunks (Viewport *viewport, struct Shape *shape, BarracksAnimationState *state)
void DrawBarracksStaticDetails (Viewport *viewport, struct Shape *shape)
void AnimateBarracks (Viewport *viewport, struct Shape *shape, BarracksAnimationState *state)
int ConfirmQuitWingCommander (void)
int ConfirmAwakenAfterBadData (short slot)
int ConfirmReplaceFaultyData (short slot)
void HandleBarracksBunkSelection (Viewport *viewport, struct Shape *shape, BarracksAnimationState *state, short region)
void UpdateBarracksScreen (Viewport *viewport, struct Shape *shape, BarracksAnimationState *state)
short BarracksScreen (void)

Variables

const TitleMenuRegion aBarracksMenuRegions [21]
ShortPoint aBarracksBunkOrigins [8]
const char * apszSaveCampaignMenuLabels [2]
char * apszBarracksMenuLabels [20]
ShortRect stModalTextBounds = { 24, 40, 296, 60 }
ModalTextPanel * pModalTextPanel = 0
short asCampaignPilotFiles [3] = {58, 61, 74}
short asCampaignBriefingFiles [3] = {10, 62, 73}
short asMissionDataFiles [3] = {15, 52, 72}
int bSavedGameExists

Detailed Description

The barracks: campaign save and load.

Address range 41a9d0-41c50f. The menu tables precede the modal renderer's literals, then the SAVEGAME.WLD literals; the palette flag that follows starts a separate unit after this file's string pool.

Definition in file barracks.c.

Function Documentation

◆ AnimateBarracks()

◆ AnySavedGames()

short AnySavedGames ( void )

◆ BarracksScreen()

short BarracksScreen ( void )

Definition at line 975 of file barracks.c.

References aBarracksMenuRegions, apszBarracksMenuLabels, BarracksScreen(), bCampaignActive, bInputModeState, Viewport::bottom, CalibrateJoystickInteractive(), cBlackColour, ClearInputKeyStatePreservingModifiers(), ClearViewport(), ConfirmQuitWingCommander(), CampaignState::currentMission, CampaignState::currentSeries, DIBslam(), DIBslamReal(), DrawBarracksBunks(), EnsureSaveGameFile(), EnterAllocationScope(), EventManagerHook(), exit_squadron(), FetchDiskPacketRetrying(), FindMenuRegionAtPoint(), FlushInputEvents(), free_viewport(), FreeBarracksMenuLabels(), GetBunkInfo(), HandleBarracksBunkSelection(), InitializeBarracksAnimation(), InitializeRoomMenu(), InitializeRoomViewports(), IsFrameTickElapsed(), LeaveAllocationScope(), LoadMissionData(), MoveMenuPointerFromKeyboard(), nInputTickScale, nMenuInputRepeatDelay, nMenuPointerSpeed, nSavedRoomCtrlX, nTickCount60Hz, PollInputEvent(), PreloadMusicTrackHook(), ReleaseMusicTrackHook(), ReleasePacketHandle(), ReleaseTextFont(), SetFrameTimerPeriodDirect(), ShowMemoryStatusDebug(), ShutdownEventManager(), spacetrack(), stCampaignState, stMouseCursorState, StopMusicUnlessSuppressed(), stRoomScreenViewport, stSceneBuffer, stScreenView, szDefaultTxtBuf, Viewport::top, UpdateBarracksScreen(), UpdateRoomMenuCursor(), InputEventState::value, ViewMedals(), MouseCursorState::viewport, WarnLoadGameFirst(), WarpMouseTo(), InputEventState::x, and InputEventState::y.

Referenced by BarracksScreen(), GameFlow(), and RunAnimationDemoLoop().

◆ ConfirmAwakenAfterBadData()

◆ ConfirmQuitWingCommander()

◆ ConfirmReplaceFaultyData()

◆ CreateEmptySaveGameFile()

void CreateEmptySaveGameFile ( void )

Definition at line 193 of file barracks.c.

References CampaignState::aceFlags, SaveGameDiskCampaignState::aceFlags, CampaignState::badges, SaveGameDiskCampaignState::badges, SaveGameDiskRecord::campaign, SaveGameRecord::campaign, CampaignState::campaignIndex, SaveGameDiskCampaignState::campaignIndex, CloseDataFile(), CreateDataFile(), CreateEmptySaveGameFile(), CampaignState::currentDate, SaveGameDiskCampaignState::currentDate, CampaignState::currentMission, SaveGameDiskCampaignState::currentMission, CampaignState::currentPilot, SaveGameDiskCampaignState::currentPilot, CampaignState::currentSeries, SaveGameDiskCampaignState::currentSeries, CampaignDate::day, SaveGameDiskRecord::description, SaveGameRecord::description, MissionObjective::displayName, SaveGameDiskObjective::displayName, CampaignState::elapsedDate, SaveGameDiskCampaignState::elapsedDate, MissionObjective::field_4, SaveGameDiskObjective::field_4, MissionObjective::flags, SaveGameDiskObjective::flags, MissionObjective::index, SaveGameDiskObjective::index, MissionObjective::mapX, SaveGameDiskObjective::mapX, MissionObjective::mapY, SaveGameDiskObjective::mapY, CampaignState::medals, SaveGameDiskCampaignState::medals, CampaignState::missionScore, SaveGameDiskCampaignState::missionScore, MissionObjective::name, SaveGameDiskObjective::name, SaveGameDiskRecord::objectives, SaveGameRecord::objectives, SaveGameDiskRecord::occupied, SaveGameRecord::occupied, CampaignState::personalityDeathMission, SaveGameDiskCampaignState::personalityDeathMission, SaveGameDiskRecord::pilots, SaveGameRecord::pilots, CampaignState::playerShipType, SaveGameDiskCampaignState::playerShipType, MissionObjective::position, SaveGameDiskObjective::position, CampaignState::promotionScore, SaveGameDiskCampaignState::promotionScore, PromptInsertNumberedDisk(), CampaignState::seriesHistory, SaveGameDiskCampaignState::seriesHistory, CampaignState::seriesHistoryCount, SaveGameDiskCampaignState::seriesHistoryCount, CampaignState::seriesScore, SaveGameDiskCampaignState::seriesScore, MissionObjective::type, SaveGameDiskObjective::type, WriteDataFileAtOffset(), and CampaignDate::year.

Referenced by CreateEmptySaveGameFile(), and EnsureSaveGameFile().

◆ DrawBarracksBunks()

◆ DrawBarracksStaticDetails()

void DrawBarracksStaticDetails ( Viewport * viewport,
struct Shape * shape )

◆ DrawModalTextPanel()

void DrawModalTextPanel ( ModalTextPanel * panel,
short x,
short y,
unsigned char alignment,
const char * format,
... )

◆ EnsureSaveGameFile()

◆ FreeBarracksMenuLabel()

void FreeBarracksMenuLabel ( char ** label)

◆ FreeBarracksMenuLabels()

◆ GetBunkInfo()

◆ HandleBarracksBunkSelection()

◆ InitializeBarracksAnimation()

◆ InitializeModalTextPanel()

◆ LoadGame()

int LoadGame ( short slot,
SaveGameRecord * gameRecord )

Definition at line 585 of file barracks.c.

References CampaignState::aceFlags, SaveGameDiskCampaignState::aceFlags, CampaignState::badges, SaveGameDiskCampaignState::badges, SaveGameDiskRecord::campaign, SaveGameRecord::campaign, CampaignState::campaignIndex, SaveGameDiskCampaignState::campaignIndex, CloseDataFile(), CampaignState::currentDate, SaveGameDiskCampaignState::currentDate, CampaignState::currentMission, SaveGameDiskCampaignState::currentMission, CampaignState::currentPilot, SaveGameDiskCampaignState::currentPilot, CampaignState::currentSeries, SaveGameDiskCampaignState::currentSeries, CampaignDate::day, SaveGameDiskRecord::description, SaveGameRecord::description, MissionObjective::displayName, SaveGameDiskObjective::displayName, CampaignState::elapsedDate, SaveGameDiskCampaignState::elapsedDate, MissionObjective::field_4, SaveGameDiskObjective::field_4, MissionObjective::flags, SaveGameDiskObjective::flags, MissionObjective::index, SaveGameDiskObjective::index, LoadGame(), MissionObjective::mapX, SaveGameDiskObjective::mapX, MissionObjective::mapY, SaveGameDiskObjective::mapY, CampaignState::medals, SaveGameDiskCampaignState::medals, CampaignState::missionScore, SaveGameDiskCampaignState::missionScore, MissionObjective::name, SaveGameDiskObjective::name, SaveGameDiskRecord::objectives, SaveGameRecord::objectives, SaveGameRecord::occupied, OpenDataFileOrDie(), CampaignState::personalityDeathMission, SaveGameDiskCampaignState::personalityDeathMission, SaveGameDiskRecord::pilots, SaveGameRecord::pilots, CampaignState::playerShipType, SaveGameDiskCampaignState::playerShipType, MissionObjective::position, SaveGameDiskObjective::position, CampaignState::promotionScore, SaveGameDiskCampaignState::promotionScore, PromptInsertNumberedDisk(), ReadDataFileAtOffset(), CampaignState::seriesHistory, SaveGameDiskCampaignState::seriesHistory, CampaignState::seriesHistoryCount, SaveGameDiskCampaignState::seriesHistoryCount, CampaignState::seriesScore, SaveGameDiskCampaignState::seriesScore, MissionObjective::type, SaveGameDiskObjective::type, and CampaignDate::year.

Referenced by AnySavedGames(), ConfirmAwakenAfterBadData(), ConfirmReplaceFaultyData(), GetBunkInfo(), LoadGame(), and LoadGameFromSlot().

◆ LoadGameFromSlot()

◆ PromptForTextInput()

◆ ReleaseModalTextPanel()

◆ RestoreModalTextPanel()

◆ SaveGame()

short SaveGame ( short slot,
SaveGameRecord * gameRecord )

Definition at line 395 of file barracks.c.

References CampaignState::aceFlags, SaveGameDiskCampaignState::aceFlags, CampaignState::badges, SaveGameDiskCampaignState::badges, SaveGameDiskRecord::campaign, SaveGameRecord::campaign, CampaignState::campaignIndex, SaveGameDiskCampaignState::campaignIndex, CloseDataFile(), CampaignState::currentDate, SaveGameDiskCampaignState::currentDate, CampaignState::currentMission, SaveGameDiskCampaignState::currentMission, CampaignState::currentPilot, SaveGameDiskCampaignState::currentPilot, CampaignState::currentSeries, SaveGameDiskCampaignState::currentSeries, CampaignDate::day, SaveGameDiskRecord::description, SaveGameRecord::description, MissionObjective::displayName, SaveGameDiskObjective::displayName, CampaignState::elapsedDate, SaveGameDiskCampaignState::elapsedDate, MissionObjective::field_4, SaveGameDiskObjective::field_4, MissionObjective::flags, SaveGameDiskObjective::flags, MissionObjective::index, SaveGameDiskObjective::index, MissionObjective::mapX, SaveGameDiskObjective::mapX, MissionObjective::mapY, SaveGameDiskObjective::mapY, CampaignState::medals, SaveGameDiskCampaignState::medals, CampaignState::missionScore, SaveGameDiskCampaignState::missionScore, MissionObjective::name, SaveGameDiskObjective::name, SaveGameDiskRecord::objectives, SaveGameRecord::objectives, SaveGameDiskRecord::occupied, SaveGameRecord::occupied, OpenDataFileOrDie(), CampaignState::personalityDeathMission, SaveGameDiskCampaignState::personalityDeathMission, SaveGameDiskRecord::pilots, SaveGameRecord::pilots, CampaignState::playerShipType, SaveGameDiskCampaignState::playerShipType, MissionObjective::position, SaveGameDiskObjective::position, CampaignState::promotionScore, SaveGameDiskCampaignState::promotionScore, PromptInsertNumberedDisk(), SaveGame(), CampaignState::seriesHistory, SaveGameDiskCampaignState::seriesHistory, CampaignState::seriesHistoryCount, SaveGameDiskCampaignState::seriesHistoryCount, CampaignState::seriesScore, SaveGameDiskCampaignState::seriesScore, MissionObjective::type, SaveGameDiskObjective::type, WriteDataFileAtOffset(), and CampaignDate::year.

Referenced by SaveGame(), and SaveGameWithNamePrompt().

◆ SaveGameWithNamePrompt()

◆ SetAwakenBarracksMenuLabel()

void SetAwakenBarracksMenuLabel ( char ** label,
short series,
short mission,
char * description )

◆ SetBunkMenuLabel()

void SetBunkMenuLabel ( short occupied,
short side,
char ** label,
short series,
short mission,
char * description )

◆ ShowModalTextPanel()

◆ UpdateBarracksScreen()

void UpdateBarracksScreen ( Viewport * viewport,
struct Shape * shape,
BarracksAnimationState * state )

◆ WarnLoadGameFirst()

Variable Documentation

◆ aBarracksBunkOrigins

ShortPoint aBarracksBunkOrigins[8]
Initial value:
= {
{109, 86}, {170, 86}, {98, 95}, {173, 95},
{78, 110}, {176, 110}, {42, 136}, {183, 136}
}

Definition at line 38 of file barracks.c.

Referenced by DrawBarracksBunks().

◆ aBarracksMenuRegions

const TitleMenuRegion aBarracksMenuRegions[21]
Initial value:
= {
{ 1, 137, 88, 149, 94 },
{ 1, 110, 88, 136, 94 },
{ 1, 172, 88, 184, 94 },
{ 1, 185, 88, 210, 94 },
{ 1, 133, 98, 146, 107 },
{ 1, 100, 98, 132, 107 },
{ 1, 174, 98, 189, 107 },
{ 1, 190, 98, 220, 107 },
{ 1, 124, 114, 142, 128 },
{ 1, 81, 114, 123, 128 },
{ 1, 178, 114, 197, 128 },
{ 1, 198, 114, 238, 128 },
{ 1, 109, 141, 135, 164 },
{ 1, 50, 141, 108, 164 },
{ 1, 185, 141, 213, 164 },
{ 1, 214, 141, 268, 164 },
{ 1, 288, 39, 311, 85 },
{ 1, 9, 33, 39, 95 },
{ 1, 218, 37, 248, 78 },
{ 1, 86, 44, 181, 78 },
{ -1, 0, 0, 0, 0 }
}

Definition at line 14 of file barracks.c.

Referenced by BarracksScreen().

◆ apszBarracksMenuLabels

char* apszBarracksMenuLabels[20]
Initial value:
= {
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
"Mission Hangar",
"Return to the Bar",
"Quit Wing Commander",
"View your medals"
}

Definition at line 46 of file barracks.c.

Referenced by BarracksScreen(), FreeBarracksMenuLabels(), GetBunkInfo(), and SaveGameWithNamePrompt().

◆ apszSaveCampaignMenuLabels

const char* apszSaveCampaignMenuLabels[2]
Initial value:
= {
"Save this campaign ",
"Save this campaign "
}

Definition at line 42 of file barracks.c.

Referenced by FreeBarracksMenuLabel(), FreeBarracksMenuLabels(), SaveGameWithNamePrompt(), and SetBunkMenuLabel().

◆ asCampaignBriefingFiles

short asCampaignBriefingFiles[3] = {10, 62, 73}

Definition at line 57 of file barracks.c.

Referenced by AwardCampaignMedal(), funeral_sequence(), LoadBriefingData(), and Office().

◆ asCampaignPilotFiles

short asCampaignPilotFiles[3] = {58, 61, 74}

Definition at line 56 of file barracks.c.

Referenced by LoadGameFromSlot(), RecRoom(), and StartNewCampaign().

◆ asMissionDataFiles

short asMissionDataFiles[3] = {15, 52, 72}

Definition at line 58 of file barracks.c.

Referenced by LoadMissionData().

◆ bSavedGameExists

int bSavedGameExists

Definition at line 61 of file barracks.c.

Referenced by AnySavedGames(), and main().

◆ pModalTextPanel

ModalTextPanel* pModalTextPanel = 0

Definition at line 55 of file barracks.c.

Referenced by ReleaseModalTextPanel(), and ShowModalTextPanel().

◆ stModalTextBounds

ShortRect stModalTextBounds = { 24, 40, 296, 60 }

Definition at line 54 of file barracks.c.

Referenced by PromptForTextInput(), and ShowModalTextPanel().