Bazaar developer reference

CvLuaGame::lGetAdvisorCounsel(lua_State *)

Defined in
Lua/CvLuaGame.cpp, line 1983
Class
CvLuaGame
Hook name
CivHooks::CvLuaGame_lGetAdvisorCounsel

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}

Calls

Called by