Bazaar developer reference

CvLuaPlayer::lGetPotentialTradeUnitNewHomeCity(lua_State *)

Defined in
Lua/CvLuaPlayer.cpp, line 3923
Class
CvLuaPlayer
Hook name
CivHooks::CvLuaPlayer_lGetPotentialTradeUnitNewHomeCity

Hooks

static bool BeforeCvLuaPlayer_lGetPotentialTradeUnitNewHomeCity(lua_State* L, int& result);static void AfterCvLuaPlayer_lGetPotentialTradeUnitNewHomeCity(lua_State* L, int& result);static int ReplaceCvLuaPlayer_lGetPotentialTradeUnitNewHomeCity(int (*original)(lua_State*), lua_State* L);CivRegisterBefore<CivHooks::CvLuaPlayer_lGetPotentialTradeUnitNewHomeCity>(host, &BeforeCvLuaPlayer_lGetPotentialTradeUnitNewHomeCity);CivRegisterAfter<CivHooks::CvLuaPlayer_lGetPotentialTradeUnitNewHomeCity>(host, &AfterCvLuaPlayer_lGetPotentialTradeUnitNewHomeCity);CivRegisterReplace<CivHooks::CvLuaPlayer_lGetPotentialTradeUnitNewHomeCity>(host, &ReplaceCvLuaPlayer_lGetPotentialTradeUnitNewHomeCity);

Code

3923int CvLuaPlayer::lGetPotentialTradeUnitNewHomeCity(lua_State* L)3924{3925	CvPlayerAI* pkPlayer = GetInstance(L);3926	CvUnit* pkUnit = CvLuaUnit::GetInstance(L, 2, false);3927	CvPlot* pkUnitPlot = pkUnit->plot();39283929	lua_createtable(L, 0, 0);3930	int index = 1;39313932	if (pkUnit->canChangeTradeUnitHomeCity(pkUnitPlot))3933	{3934		int iCityLoop;3935		CvCity* pLoopCity = NULL;3936		for(pLoopCity = pkPlayer->firstCity(&iCityLoop); pLoopCity != NULL; pLoopCity = pkPlayer->nextCity(&iCityLoop))3937		{3938			int iLoopCityX = pLoopCity->getX();3939			int iLoopCityY = pLoopCity->getY();39403941			// can't change to its own home city3942			if (pLoopCity->plot() == pkUnitPlot)3943			{3944				continue;3945			}39463947			if (pkUnit->canChangeTradeUnitHomeCityAt(pkUnitPlot, iLoopCityX, iLoopCityY))3948			{3949				lua_createtable(L, 0, 0);3950				const int t = lua_gettop(L);3951				lua_pushinteger(L, pLoopCity->getX());3952				lua_setfield(L, t, "X");3953				lua_pushinteger(L, pLoopCity->getY());3954				lua_setfield(L, t, "Y");3955				lua_rawseti(L, -2, index++);3956			}3957		}3958	}39593960	return 1;3961}

Calls

Called by