CvCityBuildings::IsBuildingSellable(const CvBuildingEntry &) const
- Defined in
- CvBuildingClasses.cpp, line 2425
- Class
- CvCityBuildings
- Hook name
CivHooks::CvCityBuildings_IsBuildingSellable- Lua events
GameEvents.CityBuildingsIsBuildingSellable
Hooks
static bool BeforeCvCityBuildings_IsBuildingSellable(const CvCityBuildings* self, const CvBuildingEntry& kBuilding, bool& result);static void AfterCvCityBuildings_IsBuildingSellable(const CvCityBuildings* self, const CvBuildingEntry& kBuilding, bool& result);static bool ReplaceCvCityBuildings_IsBuildingSellable(bool (*original)(const CvCityBuildings*, const CvBuildingEntry&), const CvCityBuildings* self, const CvBuildingEntry& kBuilding);CivRegisterBefore<CivHooks::CvCityBuildings_IsBuildingSellable>(host, &BeforeCvCityBuildings_IsBuildingSellable);CivRegisterAfter<CivHooks::CvCityBuildings_IsBuildingSellable>(host, &AfterCvCityBuildings_IsBuildingSellable);CivRegisterReplace<CivHooks::CvCityBuildings_IsBuildingSellable>(host, &ReplaceCvCityBuildings_IsBuildingSellable);
Code
2424/// Is the player allowed to sell building eIndex in this city?2425bool CvCityBuildings::IsBuildingSellable(const CvBuildingEntry& kBuilding) const2426{2427 // Can't sell more than one building per turn2428 if(IsSoldBuildingThisTurn())2429 return false;24302431 // Can't sell a building if it doesn't cost us anything (no exploits)2432 if(kBuilding.GetGoldMaintenance() <= 0)2433 return false;24342435 // Is this a free building?2436 if(GetNumFreeBuilding((BuildingTypes)kBuilding.GetID()) > 0)2437 return false;24382439 // Science building in capital that has given us a tech boost?2440 if(m_pCity->isCapital() && kBuilding.IsScienceBuilding())2441 {2442 return !(GET_PLAYER(m_pCity->getOwner()).GetPlayerTraits()->IsTechBoostFromCapitalScienceBuildings());2443 }24442445 // Great Work present in this one?2446 const BuildingClassTypes buildingClassType = (BuildingClassTypes) kBuilding.GetBuildingClassType();2447 if (IsHoldingGreatWork(buildingClassType))2448 {2449 return false;2450 }24512452 ICvEngineScriptSystem1* pkScriptSystem = gDLL->GetScriptSystem();2453 if(pkScriptSystem)2454 {2455 CvLuaArgsHandle args;2456 args->Push(m_pCity->getOwner());2457 args->Push(kBuilding.GetID());24582459 // Attempt to execute the game events.2460 // Will return false if there are no registered listeners.2461 bool bResult = false;2462 if(LuaSupport::CallTestAll(pkScriptSystem, "CityBuildingsIsBuildingSellable", args.get(), bResult))2463 {2464 // Check the result.2465 if(bResult == false)2466 {2467 return false;2468 }2469 }2470 }24712472 return true;2473}
Calls
- CvBaseInfo::GetID() const
- CvBuildingEntry::GetBuildingClassType() const
- CvBuildingEntry::GetGoldMaintenance() const
- CvBuildingEntry::IsScienceBuilding() const
- CvCity::getOwner() const
- CvCity::isCapital() const
- CvCityBuildings::GetNumFreeBuilding(BuildingTypes) const
- CvCityBuildings::IsHoldingGreatWork(BuildingClassTypes) const
- CvCityBuildings::IsSoldBuildingThisTurn() const
- CvGlobals::getDLLIFace()
- CvLuaArgsHandle::CvLuaArgsHandle()
- CvLuaArgsHandle::get() const
- CvLuaArgsHandle::operator->() const
- CvPlayer::GetPlayerTraits() const
- CvPlayerAI::getPlayer(PlayerTypes)
- CvPlayerTraits::IsTechBoostFromCapitalScienceBuildings() const
ICvEngineScriptSystemArgs1::PushICvEngineUtility1::GetScriptSystem- LuaSupport::CallTestAll(ICvEngineScriptSystem1 *, const char *, ICvEngineScriptSystemArgs1 *, bool &)