CvDLLInterfaceIFaceBase.h
// 3.13 不能使用
//virtual bool isDebugMenuCreated() const = 0;
==================================================================
CvDLLUtilityIFaceBase.h
// 3.13 不能使用
//virtual void enumerateModuleFiles(std::vector& aszFiles, const CvString& refcstrRootDirectory, const CvString& refcstrModularDirectory, const CvString& refcstrExtension, bool bSearchSubdirectories) = 0;
==================================================================
CvDLLButtonPopup.cpp
else if (pPopupReturn->getButtonClicked() == 1)
{
// exit to main menu
if (GC.getGameINLINE().isNetworkMultiPlayer() && GC.getGameINLINE().canDoControl(CONTROL_RETIRE) && GC.getGameINLINE().countHumanPlayersAlive() > 1)
{
GC.getGameINLINE().doControl(CONTROL_RETIRE);
}
// 下面是3.13的
else
{
gDLL->getInterfaceIFace()->exitingToMainMenu();
}
// 下面是3.17的
/*
else if (!gDLL->getInterfaceIFace()->isDebugMenuCreated())
{
gDLL->getInterfaceIFace()->exitingToMainMenu();
}
else
{
gDLL->SetDone(true);
}
*/
}
--------------------------------------------------------------------------------------------
// 下面是3.13的
gDLL->getInterfaceIFace()->popupAddGenericButton(pPopup, gDLL->getText("TXT_KEY_POPUP_EXIT_TO_MAIN_MENU").c_str(), NULL, 1, WIDGET_GENERAL, 1, 0, true, POPUP_LAYOUT_STRETCH, DLL_FONT_CENTER_JUSTIFY);
/* 下面是3.17的
if (!gDLL->getInterfaceIFace()->isDebugMenuCreated())
{
gDLL->getInterfaceIFace()->popupAddGenericButton(pPopup, gDLL->getText("TXT_KEY_POPUP_EXIT_TO_MAIN_MENU").c_str(), NULL, 1, WIDGET_GENERAL, 1, 0, true, POPUP_LAYOUT_STRETCH, DLL_FONT_CENTER_JUSTIFY);
}
*/
--------------------------------------------------------------------------------------------
// 下面是3.13的
gDLL->getInterfaceIFace()->popupAddGenericButton(pPopup, gDLL->getText("TXT_KEY_EXTENDED_GAME_NO_MENU"), NULL, 1, WIDGET_GENERAL);
/* 下面是3.17的
if (!gDLL->getInterfaceIFace()->isDebugMenuCreated())
{
gDLL->getInterfaceIFace()->popupAddGenericButton(pPopup, gDLL->getText("TXT_KEY_EXTENDED_GAME_NO_MENU"), NULL, 1, WIDGET_GENERAL);
}
else
{
gDLL->getInterfaceIFace()->popupAddGenericButton(pPopup, gDLL->getText("TXT_KEY_EXTENDED_GAME_NO_DESKTOP"), NULL, 1, WIDGET_GENERAL);
}
*/
==================================================================
CvInitCore.cpp
// 下面是3.13的
pStream->Read(NUM_GAMEOPTION_TYPES, m_abOptions);
/* 下面是3.17的
if (uiSaveFlag > 0)
{
pStream->Read(NUM_GAMEOPTION_TYPES, m_abOptions);
}
else
{
pStream->Read(NUM_GAMEOPTION_TYPES-1, m_abOptions);
m_abOptions[NUM_GAMEOPTION_TYPES-1] = false;
}
*/
--------------------------------------------------------------------------------------------
void CvInitCore::write(FDataStreamBase* pStream)
{
// 下面是3.13的
uint uiSaveFlag=0;
// 下面是3.17的
//uint uiSaveFlag=1;
pStream->Write(uiSaveFlag); // flag for expansion, see SaveBits)
==================================================================
CvPlayer.h
// 下面是3.17的,要加 const
//DllExport bool canTradeItem(PlayerTypes eWhoTo, TradeData item, bool bTestDenial = false) const; // Exposed to Python
//DllExport DenialTypes getTradeDenial(PlayerTypes eWhoTo, TradeData item) const; // Exposed to Python
// 下面是3.13的,不能有 const
DllExport bool canTradeItem(PlayerTypes eWhoTo, TradeData item, bool bTestDenial = false); // Exposed to Python
DllExport DenialTypes getTradeDenial(PlayerTypes eWhoTo, TradeData item);
--------------------------------------------------------------------------------------------
// 下面是3.17的,3.13不需要,删除或注释掉
//DllExport void buildTradeTable(PlayerTypes eOtherPlayer, CLinkList& ourList) const;
//DllExport bool getHeadingTradeString(PlayerTypes eOtherPlayer, TradeableItems eItem, CvWString& szString, CvString& szIcon) const;
//DllExport bool getItemTradeString(PlayerTypes eOtherPlayer, bool bOffer, bool bShowingCurrent, const TradeData& zTradeData, CvWString& szString, CvString& szIcon) const;
//DllExport void updateTradeList(PlayerTypes eOtherPlayer, CLinkList& ourInventory, const CLinkList& ourOffer, const CLinkList& theirOffer) const;
--------------------------------------------------------------------------------------------
// 下面是3.17的,要加 const
//virtual DenialTypes AI_bonusTrade(BonusTypes eBonus, PlayerTypes ePlayer) const = 0;
// 下面是3.13的,不能有 const
virtual DenialTypes AI_bonusTrade(BonusTypes eBonus, PlayerTypes ePlayer) = 0;
--------------------------------------------------------------------------------------------
// 下面是3.17的,要加 const
//virtual DenialTypes AI_cityTrade(CvCity* pCity, PlayerTypes ePlayer) const = 0;
//virtual DenialTypes AI_stopTradingTrade(TeamTypes eTradeTeam, PlayerTypes ePlayer) const = 0;
//virtual DenialTypes AI_civicTrade(CivicTypes eCivic, PlayerTypes ePlayer) const = 0;
//virtual DenialTypes AI_religionTrade(ReligionTypes eReligion, PlayerTypes ePlayer) const = 0;
// 下面是3.13的,不能有 const
virtual DenialTypes AI_cityTrade(CvCity* pCity, PlayerTypes ePlayer) = 0;
virtual DenialTypes AI_stopTradingTrade(TeamTypes eTradeTeam, PlayerTypes ePlayer) = 0;
virtual DenialTypes AI_civicTrade(CivicTypes eCivic, PlayerTypes ePlayer) = 0;
virtual DenialTypes AI_religionTrade(ReligionTypes eReligion, PlayerTypes ePlayer) = 0;
--------------------------------------------------------------------------------------------
// 下面是3.17的,3.13不需要
//virtual int AI_maxGoldPerTurnTrade(PlayerTypes ePlayer) const = 0;
//virtual int AI_maxGoldTrade(PlayerTypes ePlayer) const = 0;
==================================================================
CvPlayer.cpp
3.13不需要下面这四个函数,删除或注释掉
buildTradeTable,getHeadingTradeString,getItemTradeString,updateTradeList
==================================================================
CvPlayerAI.h
// 下面是3.17的,要加 const
//DllExport int AI_maxGoldTrade(PlayerTypes ePlayer) const;
//DllExport int AI_maxGoldPerTurnTrade(PlayerTypes ePlayer) const;
// 下面是3.13的,不能有 const
DllExport int AI_maxGoldTrade(PlayerTypes ePlayer);
DllExport int AI_maxGoldPerTurnTrade(PlayerTypes ePlayer);
--------------------------------------------------------------------------------------------
// 下面是3.17的,要加 const
//DenialTypes AI_bonusTrade(BonusTypes eBonus, PlayerTypes ePlayer) const;
//int AI_corporationBonusVal(BonusTypes eBonus) const;
// 下面是3.13的,不能有 const
DenialTypes AI_bonusTrade(BonusTypes eBonus, PlayerTypes ePlayer);
int AI_corporationBonusVal(BonusTypes eBonus);
--------------------------------------------------------------------------------------------
// 下面是3.17的,要加 const
//DenialTypes AI_cityTrade(CvCity* pCity, PlayerTypes ePlayer) const;
// 下面是3.13的,不能有 const
DenialTypes AI_cityTrade(CvCity* pCity, PlayerTypes ePlayer);
--------------------------------------------------------------------------------------------
// 下面是3.17的,要加 const
//DenialTypes AI_stopTradingTrade(TeamTypes eTradeTeam, PlayerTypes ePlayer) const;
// 下面是3.13的,不能有 const
DenialTypes AI_stopTradingTrade(TeamTypes eTradeTeam, PlayerTypes ePlayer);
--------------------------------------------------------------------------------------------
// 下面是3.17的,要加 const
//DenialTypes AI_civicTrade(CivicTypes eCivic, PlayerTypes ePlayer) const;
// 下面是3.13的,不能有 const
DenialTypes AI_civicTrade(CivicTypes eCivic, PlayerTypes ePlayer);
--------------------------------------------------------------------------------------------
// 下面是3.17的,要加 const
//DenialTypes AI_religionTrade(ReligionTypes eReligion, PlayerTypes ePlayer) const;
// 下面是3.13的,不能有 const
DenialTypes AI_religionTrade(ReligionTypes eReligion, PlayerTypes ePlayer);
--------------------------------------------------------------------------------------------
// 下面是3.17的,要加 const
//int AI_getGoldTradedTo(PlayerTypes eIndex) const;
// 下面是3.13的,不能有 const
int AI_getGoldTradedTo(PlayerTypes eIndex);
==================================================================
CvPlayerAI.cpp
根据 CvPlayerAI.h 的定义,将对应的函数后尾的 const 去掉
==================================================================
CvXMLLoadUtility.h
CvXMLLoadUtilitySet.cpp
CvInfos.h
CvInfos.cpp
以上这四个文件必需使用3.13的结构,否则换语言会跳出。
自己根据操作量来判断是将其修改至3.13版结构,还是将增加的结构加到3.13版的文件上。
==================================================================
CyInfoInterface1.cpp
.def("getButton", &CvInfoBase::getButton, "string ()")
// 3.13版要加入下面这行
.def("getXmlVal", &CvInfoBase::getXmlVal, "string ()")
--------------------------------------------------------------------------------------------
// 3.13版用的是 pyGetQuote
.def("getQuote", &CvTechInfo::pyGetQuote, "wstring ()")
==================================================================
CvPlayerAI.cpp
pDiplo->setDiploComment((DiploCommentTypes)GC.getInfoTypeForString("AI_DIPLOCOMMENT_CIVIC_PRESSURE"), GC.getCivicInfo(eFavoriteCivic).getTextKey());
// 3.17用的是 getTextKeyWide,3.13 的是getTextKey
至此完毕,再花4分钟来编译就可以在3.13上运行