Hooks
static bool BeforeCvLuaGame_lGetAdvisorCounsel(lua_State* L, int& result);static void AfterCvLuaGame_lGetAdvisorCounsel(lua_State* L, int& result);static int ReplaceCvLuaGame_lGetAdvisorCounsel(int (*original)(lua_State*), lua_State* L);CivRegisterBefore<CivHooks::CvLuaGame_lGetAdvisorCounsel>(host, &BeforeCvLuaGame_lGetAdvisorCounsel);CivRegisterAfter<CivHooks::CvLuaGame_lGetAdvisorCounsel>(host, &AfterCvLuaGame_lGetAdvisorCounsel);CivRegisterReplace<CivHooks::CvLuaGame_lGetAdvisorCounsel>(host, &ReplaceCvLuaGame_lGetAdvisorCounsel);
Code
1983int CvLuaGame::lGetAdvisorCounsel(lua_State* L)1984{1985 const PlayerTypes ePlayer = GC.getGame().getActivePlayer();1986 GC.getGame().GetAdvisorCounsel()->BuildCounselList(ePlayer);1987 lua_createtable(L, 0, 0);1988 int iTopLevelLua = lua_gettop(L);19891990 AdvisorTypes eCurrentAdvisorType = NUM_ADVISOR_TYPES;1991 int iAdvisorTableLevel = -1;1992 int iAdvisorIndex = 0;1993 bool bTableOpen = false;1994 for(uint ui = 0; ui < GC.getGame().GetAdvisorCounsel()->m_aCounsel.size(); ui++)1995 {1996 if(GC.getGame().GetAdvisorCounsel()->m_aCounsel[ui].m_eAdvisor != eCurrentAdvisorType)1997 {1998 // close out previous table1999 if(eCurrentAdvisorType != NUM_ADVISOR_TYPES)2000 {2001 CvAssertMsg(bTableOpen, "Table should be open");2002 lua_rawseti(L, iTopLevelLua, eCurrentAdvisorType);2003 bTableOpen = false;2004 }20052006 AdvisorTypes eNextAdvisorType = GC.getGame().GetAdvisorCounsel()->m_aCounsel[ui].m_eAdvisor;2007 if(eNextAdvisorType == NO_ADVISOR_TYPE)2008 {2009 // no more valid advisor info. Bail out!2010 break;2011 }2012 eCurrentAdvisorType = eNextAdvisorType;2013 CvAssertMsg(!bTableOpen, "table should be open");2014 lua_createtable(L, 0, 0);2015 bTableOpen = true;2016 iAdvisorTableLevel = lua_gettop(L);2017 iAdvisorIndex = 0;2018 }20192020 CvAssertMsg(bTableOpen, "Table should be open");2021 lua_pushstring(L, GC.getGame().GetAdvisorCounsel()->m_aCounsel[ui].m_strTxtKey);2022 lua_rawseti(L, iAdvisorTableLevel, iAdvisorIndex);2023 iAdvisorIndex++;2024 }20252026 if(bTableOpen)2027 {2028 lua_rawseti(L, iTopLevelLua, eCurrentAdvisorType);2029 }20302031 return 1;2032}