Hooks
static bool BeforeCvLuaPlayer_lGetEspionageSpies(lua_State* L, int& result);static void AfterCvLuaPlayer_lGetEspionageSpies(lua_State* L, int& result);static int ReplaceCvLuaPlayer_lGetEspionageSpies(int (*original)(lua_State*), lua_State* L);CivRegisterBefore<CivHooks::CvLuaPlayer_lGetEspionageSpies>(host, &BeforeCvLuaPlayer_lGetEspionageSpies);CivRegisterAfter<CivHooks::CvLuaPlayer_lGetEspionageSpies>(host, &AfterCvLuaPlayer_lGetEspionageSpies);CivRegisterReplace<CivHooks::CvLuaPlayer_lGetEspionageSpies>(host, &ReplaceCvLuaPlayer_lGetEspionageSpies);
Code
11422int CvLuaPlayer::lGetEspionageSpies(lua_State* L)11423{11424 CvPlayerAI* pkThisPlayer = GetInstance(L);11425 CvPlayerEspionage* pkPlayerEspionage = pkThisPlayer->GetEspionage();1142611427 lua_createtable(L, 0, 0);11428 int index = 1;1142911430 for(uint uiSpy = 0; uiSpy < pkPlayerEspionage->m_aSpyList.size(); ++uiSpy)11431 {11432 CvEspionageSpy* pSpy = &(pkPlayerEspionage->m_aSpyList[uiSpy]);1143311434 lua_createtable(L, 0, 0);11435 const int t = lua_gettop(L);1143611437 lua_pushinteger(L, uiSpy);11438 lua_setfield(L, t, "AgentID");1143911440 lua_pushinteger(L, pSpy->m_iCityX);11441 lua_setfield(L, t, "CityX");1144211443 lua_pushinteger(L, pSpy->m_iCityY);11444 lua_setfield(L, t, "CityY");1144511446#if defined(MOD_BUGFIX_SPY_NAMES)11447 const char* szSpyName = pSpy->GetSpyName(pkThisPlayer);11448#else11449 const char* szSpyName = pkThisPlayer->getCivilizationInfo().getSpyNames(pSpy->m_iName);11450#endif11451 lua_pushstring(L, szSpyName);11452 lua_setfield(L, t, "Name");1145311454 switch(pSpy->m_eRank)11455 {11456 case SPY_RANK_RECRUIT:11457 lua_pushstring(L, "TXT_KEY_SPY_RANK_0");11458 break;11459 case SPY_RANK_AGENT:11460 lua_pushstring(L, "TXT_KEY_SPY_RANK_1");11461 break;11462 case SPY_RANK_SPECIAL_AGENT:11463 lua_pushstring(L, "TXT_KEY_SPY_RANK_2");11464 break;11465 default:11466 CvAssertMsg(false, "pSpy->m_eRank not in case statement");11467 break;11468 }11469 lua_setfield(L, t, "Rank");1147011471 switch(pSpy->m_eSpyState)11472 {11473 case SPY_STATE_UNASSIGNED:11474 lua_pushstring(L, "TXT_KEY_SPY_STATE_UNASSIGNED");11475 break;11476 case SPY_STATE_TRAVELLING:11477 lua_pushstring(L, "TXT_KEY_SPY_STATE_TRAVELLING");11478 break;11479 case SPY_STATE_SURVEILLANCE:11480 lua_pushstring(L, "TXT_KEY_SPY_STATE_SURVEILLANCE");11481 break;11482 case SPY_STATE_GATHERING_INTEL:11483 lua_pushstring(L, "TXT_KEY_SPY_STATE_GATHERING_INTEL");11484 break;11485 case SPY_STATE_RIG_ELECTION:11486 lua_pushstring(L, "TXT_KEY_SPY_STATE_RIGGING_ELECTION");11487 break;11488 case SPY_STATE_COUNTER_INTEL:11489 lua_pushstring(L, "TXT_KEY_SPY_STATE_COUNTER_INTEL");11490 break;11491 case SPY_STATE_DEAD:11492 lua_pushstring(L, "TXT_KEY_SPY_STATE_DEAD");11493 break;11494 case SPY_STATE_MAKING_INTRODUCTIONS:11495 lua_pushstring(L, "TXT_KEY_SPY_STATE_MAKING_INTRODUCTIONS");11496 break;11497 case SPY_STATE_SCHMOOZE:11498 lua_pushstring(L, "TXT_KEY_SPY_STATE_SCHMOOZING");11499 break;11500#if defined(MOD_API_LUA_EXTENSIONS) && defined(MOD_API_ESPIONAGE)11501 case SPY_STATE_TERMINATED:11502 lua_pushstring(L, "TXT_KEY_SPY_STATE_TERMINATED");11503 break;11504#endif11505 default:11506 CvAssertMsg(false, "pSpy->m_eSpyState not in case statement");11507 break;11508 }11509 lua_setfield(L, t, "State");1151011511 lua_pushinteger(L, pkPlayerEspionage->GetTurnsUntilStateComplete(uiSpy));11512 lua_setfield(L, t, "TurnsLeft");1151311514 lua_pushinteger(L, pkPlayerEspionage->GetPercentOfStateComplete(uiSpy));11515 lua_setfield(L, t, "PercentComplete");1151611517 lua_pushboolean(L, pkPlayerEspionage->HasEstablishedSurveillance(uiSpy));11518 lua_setfield(L, t, "EstablishedSurveillance");1151911520 lua_pushboolean(L, pkPlayerEspionage->IsDiplomat(uiSpy));11521 lua_setfield(L, t, "IsDiplomat");1152211523#if defined(MOD_API_LUA_EXTENSIONS) && defined(MOD_API_ESPIONAGE)11524 lua_pushboolean(L, pSpy->m_bPassive);11525 lua_setfield(L, t, "Passive");11526#endif11527 lua_rawseti(L, -2, index++);11528 }11529 return 1;11530}