A bit of cleanup

This commit is contained in:
rftrdev
2022-10-14 00:59:42 -07:00
parent dea5da5fc6
commit 0485aa230e
+51 -105
View File
@@ -1309,7 +1309,6 @@ void RenderHeader(RebelCommandText titleText)
// line at the bottom of the header // line at the bottom of the header
usPosX = WEBSITE_LEFT - 1; usPosX = WEBSITE_LEFT - 1;
usPosY = WEBSITE_TOP + 35; usPosY = WEBSITE_TOP + 35;
//DisplaySmallColouredLineWithShadow(usPosX, usPosY, usPosX + WEBSITE_WIDTH, usPosY, FROMRGB(240, 240, 240));
{ {
UINT32 uiDestPitchBYTES; UINT32 uiDestPitchBYTES;
UINT8 *pDestBuf; UINT8 *pDestBuf;
@@ -1422,7 +1421,6 @@ void RenderNationalOverview()
// line between incoming supplies and directive // line between incoming supplies and directive
usPosX = WEBSITE_LEFT - 1; usPosX = WEBSITE_LEFT - 1;
usPosY += 43; usPosY += 43;
//DisplaySmallColouredLineWithShadow(usPosX, usPosY, usPosX + WEBSITE_WIDTH, usPosY, FROMRGB(240, 240, 240));
{ {
UINT32 uiDestPitchBYTES; UINT32 uiDestPitchBYTES;
UINT8 *pDestBuf; UINT8 *pDestBuf;
@@ -1488,7 +1486,6 @@ void RenderNationalOverview()
// line between directive and militia // line between directive and militia
usPosX = WEBSITE_LEFT - 1; usPosX = WEBSITE_LEFT - 1;
usPosY += 10; usPosY += 10;
//DisplaySmallColouredLineWithShadow(usPosX, usPosY, usPosX + WEBSITE_WIDTH, usPosY, FROMRGB(240, 240, 240));
{ {
UINT32 uiDestPitchBYTES; UINT32 uiDestPitchBYTES;
UINT8 *pDestBuf; UINT8 *pDestBuf;
@@ -1547,7 +1544,6 @@ void RenderNationalOverview()
// draw vertical line // draw vertical line
usPosX += 75; usPosX += 75;
usPosY = militiaY - 3; usPosY = militiaY - 3;
//DisplaySmallColouredLineWithShadow(usPosX, usPosY, usPosX, usPosY + 38, FROMRGB(240, 240, 240));
{ {
UINT32 uiDestPitchBYTES; UINT32 uiDestPitchBYTES;
UINT8 *pDestBuf; UINT8 *pDestBuf;
@@ -1580,7 +1576,6 @@ void RenderNationalOverview()
// draw vertical line // draw vertical line
usPosX += 75; usPosX += 75;
usPosY = militiaY - 3; usPosY = militiaY - 3;
//DisplaySmallColouredLineWithShadow(usPosX, usPosY, usPosX, usPosY + 38, FROMRGB(240, 240, 240));
{ {
UINT32 uiDestPitchBYTES; UINT32 uiDestPitchBYTES;
UINT8 *pDestBuf; UINT8 *pDestBuf;
@@ -1619,7 +1614,6 @@ void RenderNationalOverview()
// line // line
usPosX = WEBSITE_LEFT + 25; usPosX = WEBSITE_LEFT + 25;
usPosY = militiaY + 50; usPosY = militiaY + 50;
//DisplaySmallColouredLineWithShadow(usPosX, usPosY, usPosX + 450, usPosY, FROMRGB(240, 240, 240));
{ {
UINT32 uiDestPitchBYTES; UINT32 uiDestPitchBYTES;
UINT8 *pDestBuf; UINT8 *pDestBuf;
@@ -1640,7 +1634,6 @@ void RenderNationalOverview()
// draw vertical line // draw vertical line
usPosX += 120; usPosX += 120;
//DisplaySmallColouredLineWithShadow(usPosX, usPosY - 2, usPosX, usPosY + 38, FROMRGB(240, 240, 240));
{ {
UINT32 uiDestPitchBYTES; UINT32 uiDestPitchBYTES;
UINT8 *pDestBuf; UINT8 *pDestBuf;
@@ -1695,7 +1688,6 @@ void RenderNationalOverview()
// line // line
usPosX = WEBSITE_LEFT + 25; usPosX = WEBSITE_LEFT + 25;
usPosY += 30; usPosY += 30;
//DisplaySmallColouredLineWithShadow(usPosX, usPosY, usPosX + 450, usPosY, FROMRGB(240, 240, 240));
{ {
UINT32 uiDestPitchBYTES; UINT32 uiDestPitchBYTES;
UINT8 *pDestBuf; UINT8 *pDestBuf;
@@ -1730,7 +1722,6 @@ void RenderNationalOverview()
// draw vertical line // draw vertical line
usPosX = WEBSITE_LEFT + 130; usPosX = WEBSITE_LEFT + 130;
usPosY -= 12; usPosY -= 12;
//DisplaySmallColouredLineWithShadow(usPosX, usPosY, usPosX, usPosY + 38, FROMRGB(240, 240, 240));
{ {
UINT32 uiDestPitchBYTES; UINT32 uiDestPitchBYTES;
UINT8 *pDestBuf; UINT8 *pDestBuf;
@@ -1824,7 +1815,6 @@ void RenderRegionalOverview()
// line between region info and admin info // line between region info and admin info
usPosX = WEBSITE_LEFT - 1; usPosX = WEBSITE_LEFT - 1;
usPosY += 15; usPosY += 15;
//DisplaySmallColouredLineWithShadow(usPosX, usPosY, usPosX + WEBSITE_WIDTH, usPosY, FROMRGB(240, 240, 240));
{ {
UINT32 uiDestPitchBYTES; UINT32 uiDestPitchBYTES;
UINT8 *pDestBuf; UINT8 *pDestBuf;
@@ -1874,7 +1864,6 @@ void RenderRegionalOverview()
// vertical line between admin team and loyalty // vertical line between admin team and loyalty
usPosX = WEBSITE_LEFT + 105; usPosX = WEBSITE_LEFT + 105;
usPosY += 5; usPosY += 5;
//DisplaySmallColouredLineWithShadow(usPosX, usPosY, usPosX, usPosY + 15, FROMRGB(240, 240, 240));
{ {
UINT32 uiDestPitchBYTES; UINT32 uiDestPitchBYTES;
UINT8 *pDestBuf; UINT8 *pDestBuf;
@@ -1917,7 +1906,6 @@ void RenderRegionalOverview()
// vertical line between loyalty and max loyalty // vertical line between loyalty and max loyalty
usPosX = WEBSITE_LEFT + 195; usPosX = WEBSITE_LEFT + 195;
usPosY += 5; usPosY += 5;
//DisplaySmallColouredLineWithShadow(usPosX, usPosY, usPosX, usPosY + 15, FROMRGB(240, 240, 240));
{ {
UINT32 uiDestPitchBYTES; UINT32 uiDestPitchBYTES;
UINT8 *pDestBuf; UINT8 *pDestBuf;
@@ -1960,7 +1948,6 @@ void RenderRegionalOverview()
// vertical line between max loyalty // vertical line between max loyalty
usPosX = WEBSITE_LEFT + 325; usPosX = WEBSITE_LEFT + 325;
usPosY += 5; usPosY += 5;
//DisplaySmallColouredLineWithShadow(usPosX, usPosY, usPosX, usPosY + 15, FROMRGB(240, 240, 240));
{ {
UINT32 uiDestPitchBYTES; UINT32 uiDestPitchBYTES;
UINT8 *pDestBuf; UINT8 *pDestBuf;
@@ -2046,7 +2033,6 @@ void RenderRegionalOverview()
// line between admin info and admin actions // line between admin info and admin actions
usPosX = WEBSITE_LEFT - 1; usPosX = WEBSITE_LEFT - 1;
usPosY += 25; usPosY += 25;
//DisplaySmallColouredLineWithShadow(usPosX, usPosY, usPosX + WEBSITE_WIDTH, usPosY, FROMRGB(240, 240, 240));
{ {
UINT32 uiDestPitchBYTES; UINT32 uiDestPitchBYTES;
UINT8 *pDestBuf; UINT8 *pDestBuf;
@@ -2127,8 +2113,6 @@ BOOLEAN SetupMissionAgentBox(UINT16 x, UINT16 y, INT8 index)
UnLockVideoSurface( FRAME_BUFFER ); UnLockVideoSurface( FRAME_BUFFER );
// clamp indices // clamp indices
//if (missionIndex[index] < 0) missionIndex[index] = RCAM_NUM_MISSIONS - 1;
//else if (missionIndex[index] >= RCAM_NUM_MISSIONS) missionIndex[index] = 0;
// we're reserving an index for the generic rebel agent, so no need to subtract 1 from size here // we're reserving an index for the generic rebel agent, so no need to subtract 1 from size here
if (agentIndex[index] < 0) agentIndex[index] = static_cast<INT8>(mercs.size()); if (agentIndex[index] < 0) agentIndex[index] = static_cast<INT8>(mercs.size());
else if (agentIndex[index] > static_cast<INT8>(mercs.size())) agentIndex[index] = 0; else if (agentIndex[index] > static_cast<INT8>(mercs.size())) agentIndex[index] = 0;
@@ -2453,14 +2437,6 @@ BOOLEAN SetupMissionAgentBox(UINT16 x, UINT16 y, INT8 index)
void RenderMissionOverview() void RenderMissionOverview()
{ {
// randomised missions - preserved in bitarray (24h refresh if none selected)
// only 1 active mission? allow multiple?
// increase cost based on num active missions?
// need a ui toggle between active missions and mission select
// need to convey that different folks can go on different missions, skills provide different bonuses
// we can probably store a lot of info in the strategic event int64 since we don't need to query it that often - on load, on mission start (send event)/end (receive event)
// 24 hours to find out if success/fail, then hold agent for a few days?
// don't need to save active missions - on load game, check strategic events (I have confirmed that strategic events are loaded before rebelcommandsaveinfo)
CHAR16 sText[800]; CHAR16 sText[800];
INT32 btnId; INT32 btnId;
@@ -2665,22 +2641,14 @@ void StartMission(INT8 index)
if (!evt.sentGenericRebelAgent) if (!evt.sentGenericRebelAgent)
{ {
//for (UINT8 i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++i) SOLDIERTYPE* pSoldier = MercPtrs[evt.mercProfileId];
{
SOLDIERTYPE* pSoldier = MercPtrs[evt.mercProfileId];
//if (pSoldier->ubProfile != evt.mercProfileId) TakeSoldierOutOfVehicle(pSoldier);
// continue; RemoveCharacterFromSquads(pSoldier);
pSoldier->bSectorZ += REBEL_COMMAND_Z_OFFSET;
TakeSoldierOutOfVehicle(pSoldier); pSoldier->bBleeding = 0;
RemoveCharacterFromSquads(pSoldier); SetTimeOfAssignmentChangeForMerc(pSoldier);
pSoldier->bSectorZ += REBEL_COMMAND_Z_OFFSET; ChangeSoldiersAssignment(pSoldier, ASSIGNMENT_REBELCOMMAND);
pSoldier->bBleeding = 0;
SetTimeOfAssignmentChangeForMerc(pSoldier);
ChangeSoldiersAssignment(pSoldier, ASSIGNMENT_REBELCOMMAND);
//break;
}
} }
for (INT8 i = 0; i < NUM_ARC_AGENT_SLOTS; ++i) for (INT8 i = 0; i < NUM_ARC_AGENT_SLOTS; ++i)
@@ -3783,32 +3751,17 @@ BOOLEAN Load(HWFILE file)
Init(); Init();
} }
// rftr TEST it works hooray, assuming I don't change the layout of the bitflag
//const UINT32 param1 = SerialiseMissionFirstEvent(FALSE, 8, RCAM_DEEP_DEPLOYMENT, 200, 0x0F);
//const UINT32 param2 = SerialiseMissionSecondEvent(FALSE, 10, RCAM_GET_ENEMY_MOVEMENT_TARGETS, 0xFF);
//MissionFirstEvent evt1;
//MissionSecondEvent evt2;
//DeserialiseMissionFirstEvent(param1, evt1);
//DeserialiseMissionSecondEvent(param2, evt2);
// go through every strategic event to find active agent missions // go through every strategic event to find active agent missions
std::vector<std::pair<UINT32,UINT32>> missions = GetAllStrategicEventsOfType(EVENT_REBELCOMMAND); std::vector<std::pair<UINT32,UINT32>> missions = GetAllStrategicEventsOfType(EVENT_REBELCOMMAND);
missionMap.clear(); missionMap.clear();
// example is EVENT_BLOODCAT_ATTACK // example is EVENT_BLOODCAT_ATTACK
for (std::vector<std::pair<UINT32,UINT32>>::iterator it = missions.begin(); it != missions.end(); ++it) for (std::vector<std::pair<UINT32,UINT32>>::iterator it = missions.begin(); it != missions.end(); ++it)
{ {
// FIRST EVENT EXAMPLE
//AddStrategicEvent(EVENT_REBELCOMMAND, GetWorldTotalMin() + 60 * 24, my32bitparam);
// SECOND EVENT EXAMPLE
//AddStrategicEvent(EVENT_REBELCOMMAND, GetWorldTotalMin() + 60 * durationInHours, my32bitparam);
//const UINT32 first = it->first; // timestamp - when this event will be fired
//const UINT32 second = it->second; // uiParam
MissionFirstEvent evt1; MissionFirstEvent evt1;
DeserialiseMissionFirstEvent(it->second, evt1); DeserialiseMissionFirstEvent(it->second, evt1);
if (evt1.isFirstEvent) if (evt1.isFirstEvent)
{ {
missionMap[static_cast<RebelCommandAgentMissions>(evt1.missionId)] = it->second; missionMap.insert(std::make_pair(static_cast<RebelCommandAgentMissions>(evt1.missionId), it->second));
} }
MissionSecondEvent evt2; MissionSecondEvent evt2;
@@ -3816,7 +3769,7 @@ BOOLEAN Load(HWFILE file)
if (evt2.isSecondEvent) if (evt2.isSecondEvent)
{ {
missionMap[static_cast<RebelCommandAgentMissions>(evt2.missionId)] = it->second; missionMap.insert(std::make_pair(static_cast<RebelCommandAgentMissions>(evt2.missionId), it->second));
} }
} }
return TRUE; return TRUE;
@@ -4140,27 +4093,35 @@ BOOLEAN CanTrainMilitiaAnywhere()
if (!gGameExternalOptions.fRebelCommandEnabled) if (!gGameExternalOptions.fRebelCommandEnabled)
return FALSE; return FALSE;
// rftr todo: check bitmask const std::unordered_map<RebelCommandAgentMissions, UINT32>::iterator iter = missionMap.find(RCAM_TRAIN_MILITIA_ANYWHERE);
const UINT32 param = missionMap[RCAM_TRAIN_MILITIA_ANYWHERE];
if (iter == missionMap.end())
return FALSE;
MissionSecondEvent evt; MissionSecondEvent evt;
DeserialiseMissionSecondEvent(param, evt); DeserialiseMissionSecondEvent(iter->second, evt);
return evt.isSecondEvent; return evt.isSecondEvent;
} }
UINT8 GetMaxTrainersForTrainMilitiaAnywhere() UINT8 GetMaxTrainersForTrainMilitiaAnywhere()
{ {
const UINT32 param = missionMap[RCAM_TRAIN_MILITIA_ANYWHERE]; const std::unordered_map<RebelCommandAgentMissions, UINT32>::iterator iter = missionMap.find(RCAM_TRAIN_MILITIA_ANYWHERE);
if (iter == missionMap.end())
return FALSE;
MissionSecondEvent evt; MissionSecondEvent evt;
DeserialiseMissionSecondEvent(param, evt); DeserialiseMissionSecondEvent(iter->second, evt);
if (!evt.isSecondEvent) if (!evt.isSecondEvent)
return 0; return 0;
if (evt.extraBits == MissionHelpers::TRAIN_MILITIA_ANYWHERE_TEACHING) switch (evt.extraBits)
return gRebelCommandSettings.iTrainMilitiaAnywhereMaxTrainers_Teaching; {
case MissionHelpers::TRAIN_MILITIA_ANYWHERE_TEACHING: return gRebelCommandSettings.iTrainMilitiaAnywhereMaxTrainers_Teaching;
return gRebelCommandSettings.iTrainMilitiaAnywhereMaxTrainers; default: return gRebelCommandSettings.iTrainMilitiaAnywhereMaxTrainers;
}
} }
INT16 GetAdditionalDeployRange(const UINT8 insertionCode) INT16 GetAdditionalDeployRange(const UINT8 insertionCode)
@@ -4175,18 +4136,18 @@ INT16 GetAdditionalDeployRange(const UINT8 insertionCode)
// rftr todo: check bitmask // rftr todo: check bitmask
switch (insertionCode) INT16 range = 0;
{
case INSERTION_CODE_NORTH:
case INSERTION_CODE_SOUTH:
{
INT16 range = 0;
MissionSecondEvent evt; MissionSecondEvent evt;
DeserialiseMissionSecondEvent(iter->second, evt); DeserialiseMissionSecondEvent(iter->second, evt);
// we only get a range bonus if the mission is active! // we only get a range bonus if the mission is active!
if (evt.isSecondEvent) if (evt.isSecondEvent)
{
switch (insertionCode)
{
case INSERTION_CODE_NORTH:
case INSERTION_CODE_SOUTH:
{ {
range = gRebelCommandSettings.iDeepDeploymentRangeNS; range = gRebelCommandSettings.iDeepDeploymentRangeNS;
@@ -4200,21 +4161,12 @@ INT16 GetAdditionalDeployRange(const UINT8 insertionCode)
default: break; default: break;
} }
return range;
} }
return range; case INSERTION_CODE_WEST:
} case INSERTION_CODE_EAST:
case INSERTION_CODE_WEST:
case INSERTION_CODE_EAST:
{
INT16 range = 0;
MissionSecondEvent evt;
DeserialiseMissionSecondEvent(iter->second, evt);
// we only get a range bonus if the mission is active!
if (evt.isSecondEvent)
{ {
range = gRebelCommandSettings.iDeepDeploymentRangeEW; range = gRebelCommandSettings.iDeepDeploymentRangeEW;
@@ -4227,10 +4179,10 @@ INT16 GetAdditionalDeployRange(const UINT8 insertionCode)
default: break; default: break;
} }
}
return range; return range;
} }
}
} }
return 0; return 0;
@@ -4368,21 +4320,15 @@ void HandleStrategicEvent(const UINT32 eventParam)
if (!evt1.sentGenericRebelAgent) if (!evt1.sentGenericRebelAgent)
{ {
//for (UINT8 i = gTacticalStatus.Team[OUR_TEAM].bFirstID; i <= gTacticalStatus.Team[OUR_TEAM].bLastID; ++i) SOLDIERTYPE* pSoldier = MercPtrs[evt1.mercProfileId];
{
SOLDIERTYPE* pSoldier = MercPtrs[evt1.mercProfileId];
//if (pSoldier->ubProfile != evt1.mercProfileId) // rftr todo: tell the player that the mission has started. popupbox or screenmsg?
// continue; // rftr todo: mission successful! give some experience pts
pSoldier->bSectorZ -= REBEL_COMMAND_Z_OFFSET;
// rftr todo: tell the player that the mission has started. popupbox or screenmsg? pSoldier->ubInsertionDirection = DIRECTION_IRRELEVANT;
// rftr todo: mission successful! give some experience pts pSoldier->ubStrategicInsertionCode = INSERTION_CODE_CENTER;
pSoldier->bSectorZ -= REBEL_COMMAND_Z_OFFSET; AssignmentDone(pSoldier, TRUE, FALSE);
pSoldier->ubInsertionDirection = DIRECTION_IRRELEVANT; AddCharacterToAnySquad(pSoldier);
pSoldier->ubStrategicInsertionCode = INSERTION_CODE_CENTER;
AssignmentDone(pSoldier, TRUE, FALSE);
AddCharacterToAnySquad(pSoldier);
}
} }
missionMap.insert(std::make_pair(mission, activatedMissionParam)); missionMap.insert(std::make_pair(mission, activatedMissionParam));