MCPcopy Create free account
hub / github.com/OpenDungeons/OpenDungeons / digOut

Method digOut

source/entities/Tile.cpp:1330–1393  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1328}
1329
1330double Tile::digOut(double digRate)
1331{
1332 // We scle dig rate depending on the tile type
1333 double digRateScaled;
1334 double fullnessLost;
1335 switch(getTileVisual())
1336 {
1337 case TileVisual::claimedFull:
1338 {
1339 static double digCoefClaimedWall = ConfigManager::getSingleton().getDigCoefClaimedWall();
1340 digRateScaled = digRate * digCoefClaimedWall;
1341 fullnessLost = digRate * digCoefClaimedWall;
1342 break;
1343 }
1344 case TileVisual::dirtFull:
1345 case TileVisual::goldFull:
1346 digRateScaled = digRate;
1347 fullnessLost = digRate;
1348 break;
1349 case TileVisual::gemFull:
1350 digRateScaled = digRate;
1351 fullnessLost = 0.0;
1352 break;
1353 default:
1354 // Non diggable type!
1355 OD_LOG_ERR("Wrong tile visual for digging tile=" + Tile::displayAsString(this) + ", visual=" + tileVisualToString(getTileVisual()));
1356 return 0.0;
1357 }
1358
1359 // Nothing to dig
1360 if(fullnessLost <= 0.0)
1361 return digRateScaled;
1362
1363 if(mFullness <= 0.0)
1364 {
1365 OD_LOG_ERR("tile=" + Tile::displayAsString(this) + ", mFullness=" + Helper::toString(mFullness));
1366 return 0.0;
1367 }
1368
1369 if(fullnessLost >= mFullness)
1370 {
1371 digRateScaled = mFullness;
1372 setFullness(0.0);
1373
1374 computeTileVisual();
1375 setDirtyForAllSeats();
1376
1377 for (Tile* tile : mNeighbors)
1378 {
1379 // Update potential active spots.
1380 Building* building = tile->getCoveringBuilding();
1381 if (building != nullptr)
1382 {
1383 building->updateActiveSpots();
1384 building->createMesh();
1385 }
1386 }
1387 return digRateScaled;

Callers 1

handleDigTileMethod · 0.80

Calls 5

getDigCoefClaimedWallMethod · 0.80
getCoveringBuildingMethod · 0.80
createMeshMethod · 0.80
toStringFunction · 0.50
updateActiveSpotsMethod · 0.45

Tested by

no test coverage detected