Skip to content

Commit c6b92ff

Browse files
committed
Set camera starting position over human troops
1 parent 4119560 commit c6b92ff

2 files changed

Lines changed: 48 additions & 19 deletions

File tree

Source/Dialogs/CampaignDialog.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,11 @@ void cCampaignDialog::SpriteClicked(QModelIndex pIndex) {
164164
break;
165165
}
166166

167-
g_Fodder->Mission_Sprites_Handle();
167+
168+
g_Fodder->Sprite_Sort_DrawList();
169+
g_Fodder->MapTile_UpdateFromCamera();
170+
g_Fodder->Sprites_Draw();
171+
168172
g_Fodder->sub_11CAD();
169173

170174
g_Fodder->Cycle_End();

Source/OFED.cpp

Lines changed: 43 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -120,13 +120,6 @@ void cOFED::OpenFodder_Prepare() {
120120

121121
LoadMap();
122122

123-
g_Fodder->Phase_Goals_Set();
124-
125-
g_Fodder->Phase_Soldiers_Count();
126-
g_Fodder->mGame_Data.Soldier_Sort();
127-
g_Fodder->Phase_Soldiers_Prepare(false);
128-
g_Fodder->Phase_Soldiers_AttachToSprites();
129-
130123
g_Fodder->mPhase_Aborted = false;
131124

132125
g_Fodder->MapTiles_Draw();
@@ -137,10 +130,6 @@ void cOFED::OpenFodder_Prepare() {
137130
g_Fodder->Mouse_Inputs_Get();
138131
g_Fodder->Sprite_Frame_Modifier_Update();
139132

140-
g_Fodder->mCamera_Start_Adjust = 1;
141-
g_Fodder->mCamera_StartPosition_X = g_Fodder->mSprites[0].field_0;
142-
g_Fodder->mCamera_StartPosition_Y = g_Fodder->mSprites[0].field_4;
143-
144133
g_Fodder->mInput_Enabled = -1;
145134
g_Fodder->sub_11CAD();
146135

@@ -1055,6 +1044,7 @@ void cOFED::Create_NewMap(const std::string& pTileSet, const std::string& pTileS
10551044
}
10561045

10571046
void cOFED::LoadMap() {
1047+
sSprite* Sprite = 0;
10581048

10591049
if (g_Fodder->mGame_Data.mMission_Current) {
10601050
auto MissionName = "Mission: " + g_Fodder->mGame_Data.mMission_Current->mName;
@@ -1066,22 +1056,57 @@ void cOFED::LoadMap() {
10661056
mPhaseLabel->setText(QString::fromStdString(PhaseName));
10671057
}
10681058

1059+
10691060
g_Fodder->Map_Load();
10701061
g_Fodder->Map_Load_Sprites();
10711062

1072-
g_Fodder->MapTiles_Draw();
1073-
g_Fodder->Sprite_Handle_Loop();
1063+
g_Fodder->Phase_Soldiers_Count();
1064+
g_Fodder->mGame_Data.Soldier_Sort();
1065+
g_Fodder->Phase_Soldiers_Prepare(false);
1066+
g_Fodder->Phase_Soldiers_AttachToSprites();
10741067

1075-
g_Fodder->mGraphics->PaletteSet();
1076-
g_Fodder->mSurface->surfaceSetToPaletteNew();
1068+
g_Fodder->Squad_Troops_Count();
10771069

1078-
g_Fodder->mWindow->FrameEnd();
1070+
g_Fodder->mSquad_Selected = 0;
1071+
g_Fodder->sub_305D5(Sprite);
1072+
g_Fodder->Sprite_Handle_Loop();
10791073

1080-
if(mToolboxSprites)
1074+
g_Fodder->MapTiles_Draw();
1075+
1076+
// THis has to happen now, as the map tiles x/y is currently 0
1077+
if (mToolboxSprites)
10811078
mToolboxSprites->RenderSprites();
10821079

1083-
if(mToolboxTiles)
1080+
if (mToolboxTiles)
10841081
mToolboxTiles->RenderTiles();
1082+
1083+
g_Fodder->mCamera_SquadLeaderX = 0;
1084+
g_Fodder->mCamera_SquadLeaderY = 0;
1085+
1086+
g_Fodder->mCamera_Panning_ToTarget = true;
1087+
g_Fodder->Camera_PanTarget_AdjustToward_SquadLeader();
1088+
g_Fodder->mCamera_Speed_Reset_X = false;
1089+
g_Fodder->mCamera_Speed_Reset_Y = false;
1090+
g_Fodder->mCamera_AccelerationX &= 0x0000FFFF;
1091+
g_Fodder->mCamera_AccelerationY &= 0x0000FFFF;
1092+
g_Fodder->mCamera_Reached_Target = true;
1093+
g_Fodder->mCamera_Start_Adjust = 1;
1094+
1095+
for (;;) {
1096+
g_Fodder->Camera_Pan_To_Target();
1097+
g_Fodder->Camera_Pan_To_Target();
1098+
1099+
if (!g_Fodder->mCamera_Reached_Target)
1100+
break;
1101+
}
1102+
1103+
g_Fodder->mGraphics->PaletteSet();
1104+
g_Fodder->mSurface->surfaceSetToPaletteNew();
1105+
1106+
g_Fodder->mGraphics->MapTiles_Draw();
1107+
g_Fodder->Mission_Sprites_Handle();
1108+
g_Fodder->mWindow->FrameEnd();
1109+
10851110
}
10861111

10871112
/**

0 commit comments

Comments
 (0)