Hooks
static bool BeforeCvLuaGame_lGetReplayMessages(lua_State* L, int& result);static void AfterCvLuaGame_lGetReplayMessages(lua_State* L, int& result);static int ReplaceCvLuaGame_lGetReplayMessages(int (*original)(lua_State*), lua_State* L);CivRegisterBefore<CivHooks::CvLuaGame_lGetReplayMessages>(host, &BeforeCvLuaGame_lGetReplayMessages);CivRegisterAfter<CivHooks::CvLuaGame_lGetReplayMessages>(host, &AfterCvLuaGame_lGetReplayMessages);CivRegisterReplace<CivHooks::CvLuaGame_lGetReplayMessages>(host, &ReplaceCvLuaGame_lGetReplayMessages);
Code
1686int CvLuaGame::lGetReplayMessages(lua_State* L)1687{1688 CvGame& game = GC.getGame();1689 const unsigned int nMessages = game.getNumReplayMessages();16901691 lua_createtable(L, nMessages, 0);1692 const int messages_t = lua_gettop(L);1693 int messages_idx = 1;16941695 for(unsigned int i = 0; i < nMessages; i++)1696 {1697 const CvReplayMessage* pMessage = game.getReplayMessage(i);16981699 lua_createtable(L, 0, 5);1700 const int t = lua_gettop(L);17011702 lua_pushinteger(L, pMessage->getPlayer());1703 lua_setfield(L, t, "Player");17041705 lua_pushinteger(L, pMessage->getTurn());1706 lua_setfield(L, t, "Turn");17071708 lua_pushinteger(L, pMessage->getType());1709 lua_setfield(L, t, "Type");17101711 const CvString& text = pMessage->getText();1712 if(text.GetLength() > 0)1713 {1714 lua_pushstring(L, text.c_str());1715 lua_setfield(L, t, "Text");1716 }17171718 const unsigned int nPlots = pMessage->getNumPlots();1719 if(nPlots > 0)1720 {1721 lua_createtable(L, nPlots, 0);1722 int idx = 1;1723 int plots_idx = lua_gettop(L);17241725 for(unsigned int j = 0; j < nPlots; j++)1726 {1727 int iPlotX, iPlotY;1728 if(pMessage->getPlot(j, iPlotX, iPlotY))1729 {1730 lua_createtable(L, 0, 2);1731 lua_pushinteger(L, iPlotX);1732 lua_setfield(L, -2, "X");1733 lua_pushinteger(L, iPlotY);1734 lua_setfield(L, -2, "Y");1735 lua_rawseti(L, plots_idx, idx++);1736 }1737 }17381739 lua_setfield(L, t, "Plots");1740 }17411742 lua_rawseti(L, messages_t, messages_idx++);1743 }17441745 return 1;1746}