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); }
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; }
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()); } }
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; }
void Situation() { GetWater(); }