Ejemplo n.º 1
0
void CBaseWater::UpdateBaseWater(CGame* game) {
	std::vector<int> wm;
	{
		GML_STDMUTEX_LOCK(water); // UpdateBaseWater

		wm.swap(waterModes);
	}

	for(std::vector<int>::iterator i = wm.begin(); i != wm.end(); ++i) {
		int nextWaterRendererMode = *i;
		if(nextWaterRendererMode < 0)
			nextWaterRendererMode = (std::max(0, water->GetID()) + 1) % CBaseWater::NUM_WATER_RENDERERS;
		water = GetWater(water, nextWaterRendererMode);
		logOutput.Print("Set water rendering mode to %i (%s)", nextWaterRendererMode, water->GetName());
	}

	std::vector<HeightmapChange> hc;
	{
		GML_STDMUTEX_LOCK(water); // UpdateBaseWater

		hc.swap(heightmapChanges);
	}

	for(std::vector<HeightmapChange>::iterator i = hc.begin(); i != hc.end(); ++i) {
		HeightmapChange &h = *i;
		water->HeightmapChanged(h.x1,h.y1,h.x2,h.y2);
	}

	water->UpdateWater(game);
}
Ejemplo n.º 2
0
 int GetAns(int A[], int n, vector<int> &incpos) 
 {
     int ans = 0;
     for (int i = 0;i < incpos.size() - 1; i++)
     {
         ans += GetWater(incpos[i], incpos[i+1], A);
     }
     return ans;
 }
Ejemplo n.º 3
0
void IWater::ApplyPushedChanges(CGame* game) {
	std::vector<int> wm;

	{
		wm.swap(waterModes);
	}

	for (std::vector<int>::iterator i = wm.begin(); i != wm.end(); ++i) {
		int nextWaterRendererMode = *i;

		if (nextWaterRendererMode < 0) {
			nextWaterRendererMode = (std::max(0, water->GetID()) + 1) % IWater::NUM_WATER_RENDERERS;
		}

		water = GetWater(water, nextWaterRendererMode);
		LOG("Set water rendering mode to %i (%s)", nextWaterRendererMode, water->GetName());
	}
}
Ejemplo n.º 4
0
 int trap(int A[], int n) {
     if (n <= 2) return 0;
     GenIncPos(A, n);
     int pos1 = IncPos[IncPos.size()-1];
     int ans = GetAns(A, n , IncPos);
     //cout <<"pos: "<< pos1 << " ans "<< ans << endl;
     reverse(A, A+n);
     GenIncPos(A, n);
     int pos2 = IncPos[IncPos.size()-1];
     ans += GetAns(A, n, IncPos);
     
     //cout <<"pos: "<< pos2 << " ans "<< ans << endl;
     pos1 = n - pos1 - 1;
     ans += GetWater(pos2, pos1, A);
     
     //cout <<"pos: "<< pos1 << " ans "<< ans << endl;
     return ans;
 }
Ejemplo n.º 5
0
 void Situation()
 {
     GetWater();
 }