* 0x0049742F * Update town * * @param this @ */
| 53 | * @param this @<esi> |
| 54 | */ |
| 55 | void Town::update() |
| 56 | { |
| 57 | recalculateSize(); |
| 58 | |
| 59 | if (Config::get().townGrowthDisabled) |
| 60 | { |
| 61 | return; |
| 62 | } |
| 63 | |
| 64 | static constexpr std::array<uint8_t, 12> kBuildSpeedToGrowthPerTick = { 0, 1, 3, 5, 7, 9, 12, 16, 22, 0, 0, 0 }; |
| 65 | auto growthPerTick = kBuildSpeedToGrowthPerTick[this->buildSpeed]; |
| 66 | if (growthPerTick == 0 || (growthPerTick == 1 && (gPrng1().randNext() & 7))) |
| 67 | { |
| 68 | grow(TownGrowFlags::buildInitialRoad | TownGrowFlags::roadUpdate | TownGrowFlags::neutralRoadTakeover); |
| 69 | } |
| 70 | else |
| 71 | { |
| 72 | for (int32_t counter = 0; counter < growthPerTick; ++counter) |
| 73 | { |
| 74 | grow(TownGrowFlags::buildInitialRoad | TownGrowFlags::roadUpdate | TownGrowFlags::neutralRoadTakeover | TownGrowFlags::allowRoadExpansion | TownGrowFlags::allowRoadBranching | TownGrowFlags::constructBuildings); |
| 75 | } |
| 76 | } |
| 77 | } |
| 78 | |
| 79 | // 0x004FF6F4 |
| 80 | static constexpr std::array<Gfx::Font, 4> kZoomToTownFonts = { |