mirror of
https://github.com/vcmi/vcmi.git
synced 2025-01-12 02:28:11 +02:00
* MSVC compilation fixes
* campaign epilogues and minor fixes
This commit is contained in:
parent
f40863b82f
commit
602827d1ae
@ -4101,9 +4101,9 @@ CPrologEpilogVideo::CPrologEpilogVideo( CCampaignScenario::SScenarioPrologEpilog
|
|||||||
|
|
||||||
auto lines = CMessage::breakText(spe.prologText, 500, EFonts::FONT_BIG);
|
auto lines = CMessage::breakText(spe.prologText, 500, EFonts::FONT_BIG);
|
||||||
|
|
||||||
txt = CSDL_Ext::newSurface(500, 20 * lines.size() + 5);
|
txt = CSDL_Ext::newSurface(500, 20 * lines.size() + 10);
|
||||||
curTxtH = screen->h;
|
curTxtH = screen->h;
|
||||||
graphics->fonts[FONT_BIG]->renderTextLinesCenter(txt, lines, Colors::METALLIC_GOLD, Point(txt->w/2, txt->h/2));
|
graphics->fonts[FONT_BIG]->renderTextLinesCenter(txt, lines, Colors::METALLIC_GOLD, Point(txt->w/2, txt->h/2 + 5));
|
||||||
//SDL_SaveBMP(txt, "txtsrfc.bmp");
|
//SDL_SaveBMP(txt, "txtsrfc.bmp");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -524,10 +524,7 @@ void CClient::finishCampaign( shared_ptr<CCampaignState> camp )
|
|||||||
|
|
||||||
void CClient::proposeNextMission(shared_ptr<CCampaignState> camp)
|
void CClient::proposeNextMission(shared_ptr<CCampaignState> camp)
|
||||||
{
|
{
|
||||||
endGame(false);
|
|
||||||
LOCPLINT = nullptr; //TODO free res
|
|
||||||
GH.pushInt(new CBonusSelection(camp));
|
GH.pushInt(new CBonusSelection(camp));
|
||||||
GH.curInt = CGPreGame::create();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CClient::stopConnection()
|
void CClient::stopConnection()
|
||||||
@ -679,6 +676,30 @@ int CClient::sendRequest(const CPack *request, TPlayerColor player)
|
|||||||
return requestID;
|
return requestID;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CClient::campaignMapFinished( shared_ptr<CCampaignState> camp )
|
||||||
|
{
|
||||||
|
endGame(false);
|
||||||
|
LOCPLINT = nullptr; //TODO free res
|
||||||
|
|
||||||
|
GH.curInt = CGPreGame::create();
|
||||||
|
auto & epilogue = camp->camp->scenarios[camp->mapsConquered.back()].epilog;
|
||||||
|
auto finisher = [&]()
|
||||||
|
{
|
||||||
|
if(camp->mapsRemaining.size())
|
||||||
|
proposeNextMission(camp);
|
||||||
|
else
|
||||||
|
finishCampaign(camp);
|
||||||
|
};
|
||||||
|
if(epilogue.hasPrologEpilog)
|
||||||
|
{
|
||||||
|
GH.pushInt(new CPrologEpilogVideo(epilogue, finisher));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
finisher();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
template void CClient::serialize( CISer<CLoadFile> &h, const int version );
|
template void CClient::serialize( CISer<CLoadFile> &h, const int version );
|
||||||
template void CClient::serialize( COSer<CSaveFile> &h, const int version );
|
template void CClient::serialize( COSer<CSaveFile> &h, const int version );
|
||||||
|
|
||||||
|
@ -148,6 +148,7 @@ public:
|
|||||||
void save(const std::string & fname);
|
void save(const std::string & fname);
|
||||||
void loadGame(const std::string & fname);
|
void loadGame(const std::string & fname);
|
||||||
void run();
|
void run();
|
||||||
|
void campaignMapFinished( shared_ptr<CCampaignState> camp );
|
||||||
void finishCampaign( shared_ptr<CCampaignState> camp );
|
void finishCampaign( shared_ptr<CCampaignState> camp );
|
||||||
void proposeNextMission(shared_ptr<CCampaignState> camp);
|
void proposeNextMission(shared_ptr<CCampaignState> camp);
|
||||||
void invalidatePaths(const CGHeroInstance *h = NULL); //invalidates paths for hero h or for any hero if h is NULL => they'll got recalculated when the next query comes
|
void invalidatePaths(const CGHeroInstance *h = NULL); //invalidates paths for hero h or for any hero if h is NULL => they'll got recalculated when the next query comes
|
||||||
|
@ -311,10 +311,7 @@ void RemoveBonus::applyCl( CClient *cl )
|
|||||||
void UpdateCampaignState::applyCl( CClient *cl )
|
void UpdateCampaignState::applyCl( CClient *cl )
|
||||||
{
|
{
|
||||||
cl->stopConnection();
|
cl->stopConnection();
|
||||||
if(camp->mapsRemaining.size())
|
cl->campaignMapFinished(camp);
|
||||||
cl->proposeNextMission(camp);
|
|
||||||
else
|
|
||||||
cl->finishCampaign(camp);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void PrepareForAdvancingCampaign::applyCl(CClient *cl)
|
void PrepareForAdvancingCampaign::applyCl(CClient *cl)
|
||||||
|
@ -464,7 +464,8 @@ CCampaignState::CCampaignState( unique_ptr<CCampaign> _camp ) : camp(std::move(_
|
|||||||
{
|
{
|
||||||
for(int i = 0; i < camp->scenarios.size(); i++)
|
for(int i = 0; i < camp->scenarios.size(); i++)
|
||||||
{
|
{
|
||||||
mapsRemaining.push_back(i);
|
if(vstd::contains(camp->mapPieces, i)) //not all maps must be present in a campaign
|
||||||
|
mapsRemaining.push_back(i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
#include "StdInc.h"
|
#include "StdInc.h"
|
||||||
|
#define DO_NOT_DISABLE_REGISTER_TYPES_INSTANTIATION
|
||||||
#include "RegisterTypes.h"
|
#include "RegisterTypes.h"
|
||||||
|
|
||||||
#include "Mapping/CMapInfo.h"
|
#include "Mapping/CMapInfo.h"
|
||||||
|
@ -264,9 +264,12 @@ void registerTypes(Serializer &s)
|
|||||||
registerTypes4(s);
|
registerTypes4(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef DO_NOT_DISABLE_REGISTER_TYPES_INSTANTIATION
|
||||||
extern template DLL_LINKAGE void registerTypes<CISer<CConnection>>(CISer<CConnection>& s);
|
extern template DLL_LINKAGE void registerTypes<CISer<CConnection>>(CISer<CConnection>& s);
|
||||||
extern template DLL_LINKAGE void registerTypes<COSer<CConnection>>(COSer<CConnection>& s);
|
extern template DLL_LINKAGE void registerTypes<COSer<CConnection>>(COSer<CConnection>& s);
|
||||||
extern template DLL_LINKAGE void registerTypes<CSaveFile>(CSaveFile & s);
|
extern template DLL_LINKAGE void registerTypes<CSaveFile>(CSaveFile & s);
|
||||||
extern template DLL_LINKAGE void registerTypes<CLoadFile>(CLoadFile & s);
|
extern template DLL_LINKAGE void registerTypes<CLoadFile>(CLoadFile & s);
|
||||||
extern template DLL_LINKAGE void registerTypes<CTypeList>(CTypeList & s);
|
extern template DLL_LINKAGE void registerTypes<CTypeList>(CTypeList & s);
|
||||||
extern template DLL_LINKAGE void registerTypes<CLoadIntegrityValidator>(CLoadIntegrityValidator & s);
|
extern template DLL_LINKAGE void registerTypes<CLoadIntegrityValidator>(CLoadIntegrityValidator & s);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
@ -200,6 +200,7 @@
|
|||||||
<ClCompile Include="Mapping\CMapService.cpp" />
|
<ClCompile Include="Mapping\CMapService.cpp" />
|
||||||
<ClCompile Include="Mapping\CMapEditManager.cpp" />
|
<ClCompile Include="Mapping\CMapEditManager.cpp" />
|
||||||
<ClCompile Include="Mapping\MapFormatH3M.cpp" />
|
<ClCompile Include="Mapping\MapFormatH3M.cpp" />
|
||||||
|
<ClCompile Include="RegisterTypes.cpp" />
|
||||||
<ClCompile Include="RMG\CMapGenOptions.cpp" />
|
<ClCompile Include="RMG\CMapGenOptions.cpp" />
|
||||||
<ClCompile Include="RMG\CMapGenerator.cpp" />
|
<ClCompile Include="RMG\CMapGenerator.cpp" />
|
||||||
<ClCompile Include="HeroBonus.cpp" />
|
<ClCompile Include="HeroBonus.cpp" />
|
||||||
|
Loading…
Reference in New Issue
Block a user