MCPcopy Create free account
hub / github.com/OpenApoc/OpenApoc / randomlyPlaceFacility

Function randomlyPlaceFacility

game/state/city/base.cpp:161–192  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

159}
160
161static bool randomlyPlaceFacility(GameState &state, Base &base, StateRef<FacilityType> facility)
162{
163
164 std::vector<Vec2<int>> possible_positions;
165 for (int y = 0; y < base.SIZE; y++)
166 {
167 for (int x = 0; x < base.SIZE; x++)
168 {
169 Vec2<int> position{x, y};
170 if (base.canBuildFacility(facility, position, true) == Base::BuildError::NoError)
171 {
172 possible_positions.push_back(position);
173 }
174 }
175 }
176 if (possible_positions.empty())
177 {
178 return false;
179 }
180 std::uniform_int_distribution<int> positionDistribution(0, (int)possible_positions.size() - 1);
181 auto position = possible_positions[positionDistribution(state.rng)];
182 if (base.canBuildFacility(facility, position, true) == Base::BuildError::NoError)
183 {
184 base.buildFacility(state, facility, position, true);
185 return true;
186 }
187 else
188 {
189 LogError("Position %s in base in possible list but failed to build", position);
190 return false;
191 }
192}
193
194static bool tryToPlaceInitialFacilities(GameState &state, Base &base)
195{

Callers 1

Calls 4

canBuildFacilityMethod · 0.80
emptyMethod · 0.80
buildFacilityMethod · 0.80
sizeMethod · 0.45

Tested by

no test coverage detected