Bazaar developer reference

CvPlot::doImprovement()

Defined in
CvPlot.cpp, line 464
Class
CvPlot
Hook name
CivHooks::CvPlot_doImprovement

Hooks

static bool BeforeCvPlot_doImprovement(CvPlot* self);static void AfterCvPlot_doImprovement(CvPlot* self);static void ReplaceCvPlot_doImprovement(void (*original)(CvPlot*), CvPlot* self);CivRegisterBefore<CivHooks::CvPlot_doImprovement>(host, &BeforeCvPlot_doImprovement);CivRegisterAfter<CivHooks::CvPlot_doImprovement>(host, &AfterCvPlot_doImprovement);CivRegisterReplace<CivHooks::CvPlot_doImprovement>(host, &ReplaceCvPlot_doImprovement);

Code

464void CvPlot::doImprovement()465{466	CvCity* pCity;467	CvString strBuffer;468	int iI;469	int iResourceNum = 0;470	CvTeam& thisTeam = GET_TEAM(getTeam());471472	CvAssert(isBeingWorked() && isOwned());473474	if(m_eImprovementType != NO_IMPROVEMENT)475	{476		if(m_eResourceType == NO_RESOURCE)477		{478			CvAssertMsg((0 < GC.getNumResourceInfos()), "GC.getNumResourceInfos() is not greater than zero but an array is being allocated in CvPlot::doImprovement");479			int iNumResourceInfos = GC.getNumResourceInfos();480			CvImprovementEntry* thisImprovementInfo = GC.getImprovementInfo((ImprovementTypes)m_eImprovementType);481			for(iI = 0; iI < iNumResourceInfos; ++iI)482			{483				CvResourceInfo* thisResourceInfo = GC.getResourceInfo((ResourceTypes) iI);484				if (thisResourceInfo)485				{486					if(thisTeam.GetTeamTechs()->HasTech((TechTypes)(thisResourceInfo->getTechReveal())))487					{488						if(thisImprovementInfo->GetImprovementResourceDiscoverRand(iI) > 0)489						{490							if(GC.getGame().getJonRandNum(thisImprovementInfo->GetImprovementResourceDiscoverRand(iI), "Resource Discovery") == 0)491							{492								iResourceNum = GC.getMap().getRandomResourceQuantity((ResourceTypes)iI);493								setResourceType((ResourceTypes)iI, iResourceNum);494								if(getOwner() == GC.getGame().getActivePlayer())495								{496									pCity = GC.getMap().findCity(getX(), getY(), getOwner(), NO_TEAM, false);497									if(pCity != NULL)498									{499										if(strcmp(thisResourceInfo->GetType(), "RESOURCE_ARTIFACTS") == 0)500										{501											strBuffer = GetLocalizedText("TXT_KEY_MISC_DISCOVERED_ARTIFACTS_NEAR", pCity->getNameKey());502										}503										else if(strcmp(thisResourceInfo->GetType(), "RESOURCE_HIDDEN_ARTIFACTS") == 0)504										{505											strBuffer = GetLocalizedText("TXT_KEY_MISC_DISCOVERED_HIDDEN_ARTIFACTS_NEAR", pCity->getNameKey());506										}507										else508										{509											strBuffer = GetLocalizedText("TXT_KEY_MISC_DISCOVERED_NEW_RESOURCE", thisResourceInfo->GetTextKey(), pCity->getNameKey());510										}511512										GC.GetEngineUserInterface()->AddCityMessage(0, pCity->GetIDInfo(), getOwner(), false, GC.getEVENT_MESSAGE_TIME(), strBuffer/*, "AS2D_DISCOVERRESOURCE", MESSAGE_TYPE_MINOR_EVENT, thisResourceInfo.GetButton(), (ColorTypes)GC.getInfoTypeForString("COLOR_WHITE"), getX(), getY(), true, true*/);513									}514								}515516								break;517							}518						}519					}520				}521			}522		}523	}524525	doImprovementUpgrade();526}

Calls

Called by