void CcBuildDocks(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2) { if (result.Failed()) return; if (_settings_client.sound.confirm) SndPlayTileFx(SND_02_SPLAT, tile); if (!_settings_client.gui.persistent_buildingtools) ResetObjectToPlace(); }
static void TileLoopTreesAlps(TileIndex tile) { int k = GetTileZ(tile) - GetSnowLine() + TILE_HEIGHT; if (k < 0) { switch (GetTreeGround(tile)) { case TREE_GROUND_SNOW_DESERT: SetTreeGroundDensity(tile, TREE_GROUND_GRASS, 3); break; case TREE_GROUND_ROUGH_SNOW: SetTreeGroundDensity(tile, TREE_GROUND_ROUGH, 3); break; default: return; } } else { uint density = min((uint)k / TILE_HEIGHT, 3); if (GetTreeGround(tile) != TREE_GROUND_SNOW_DESERT && GetTreeGround(tile) != TREE_GROUND_ROUGH_SNOW) { TreeGround tg = GetTreeGround(tile) == TREE_GROUND_ROUGH ? TREE_GROUND_ROUGH_SNOW : TREE_GROUND_SNOW_DESERT; SetTreeGroundDensity(tile, tg, density); } else if (GetTreeDensity(tile) != density) { SetTreeGroundDensity(tile, GetTreeGround(tile), density); } else { if (GetTreeDensity(tile) == 3) { uint32 r = Random(); if (Chance16I(1, 200, r)) { SndPlayTileFx((r & 0x80000000) ? SND_39_HEAVY_WIND : SND_34_WIND, tile); } } return; } } MarkTileDirtyByTile(tile); }
void CcBuildAirport(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2) { if (result.Failed()) return; SndPlayTileFx(SND_1F_SPLAT, tile); if (!_settings_client.gui.persistent_buildingtools) ResetObjectToPlace(); }
static void TileLoopTreesDesert(TileIndex tile) { switch (GetTropicZone(tile)) { case TROPICZONE_DESERT: if (GetTreeGround(tile) != TREE_GROUND_SNOW_DESERT) { SetTreeGroundDensity(tile, TREE_GROUND_SNOW_DESERT, 3); MarkTileDirtyByTile(tile); } break; case TROPICZONE_RAINFOREST: { static const SoundFx forest_sounds[] = { SND_42_LOON_BIRD, SND_43_LION, SND_44_MONKEYS, SND_48_DISTANT_BIRD }; uint32 r = Random(); if (Chance16I(1, 200, r)) SndPlayTileFx(forest_sounds[GB(r, 16, 2)], tile); break; } default: break; } }
void CcRoadDepot(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2) { if (result.Failed()) return; DiagDirection dir = (DiagDirection)GB(p1, 0, 2); if (_settings_client.sound.confirm) SndPlayTileFx(SND_1F_SPLAT_OTHER, tile); if (!_settings_client.gui.persistent_buildingtools) ResetObjectToPlace(); ConnectRoadToStructure(tile, dir); }
void CcTerraform(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2) { if (result.Succeeded()) { if (_settings_client.sound.confirm) SndPlayTileFx(SND_1F_SPLAT_OTHER, tile); } else { extern TileIndex _terraform_err_tile; SetRedErrorSquare(_terraform_err_tile); } }
void CcTerraform(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2) { if (result.Succeeded()) { SndPlayTileFx(SND_1F_SPLAT, tile); } else { extern TileIndex _terraform_err_tile; SetRedErrorSquare(_terraform_err_tile); } }
bool PlayTileSound(const GRFFile *file, SoundID sound_id, TileIndex tile) { if (sound_id >= ORIGINAL_SAMPLE_COUNT) { sound_id -= ORIGINAL_SAMPLE_COUNT; if (sound_id > file->num_sounds) return false; sound_id += file->sound_offset; } assert(sound_id < GetNumSounds()); SndPlayTileFx(sound_id, tile); return true; }
/** * Command callback for building road stops. * @param result Result of the build road stop command. * @param tile Start tile. * @param p1 bit 0..7: Width of the road stop. * bit 8..15: Length of the road stop. * @param p2 bit 0: 0 For bus stops, 1 for truck stops. * bit 1: 0 For normal stops, 1 for drive-through. * bit 2..3: The roadtypes. * bit 5: Allow stations directly adjacent to other stations. * bit 6..7: Entrance direction (#DiagDirection). * bit 16..31: Station ID to join (NEW_STATION if build new one). * @see CmdBuildRoadStop */ void CcRoadStop(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2) { if (result.Failed()) return; DiagDirection dir = (DiagDirection)GB(p2, 6, 2); if (_settings_client.sound.confirm) SndPlayTileFx(SND_1F_SPLAT_OTHER, tile); if (!_settings_client.gui.persistent_buildingtools) ResetObjectToPlace(); TileArea roadstop_area(tile, GB(p1, 0, 8), GB(p1, 8, 8)); TILE_AREA_LOOP(cur_tile, roadstop_area) { ConnectRoadToStructure(cur_tile, dir); /* For a drive-through road stop build connecting road for other entrance. */ if (HasBit(p2, 1)) ConnectRoadToStructure(cur_tile, ReverseDiagDir(dir)); }
/** * Callback executed after a build Bridge CMD has been called * * @param result Whether the build succeeded * @param end_tile End tile of the bridge. * @param p1 packed start tile coords (~ dx) * @param p2 various bitstuffed elements * - p2 = (bit 0- 7) - bridge type (hi bh) * - p2 = (bit 8-11) - rail type or road types. * - p2 = (bit 15-16) - transport type. */ void CcBuildBridge(const CommandCost &result, TileIndex end_tile, uint32 p1, uint32 p2) { if (result.Failed()) return; if (_settings_client.sound.confirm) SndPlayTileFx(SND_27_BLACKSMITH_ANVIL, end_tile); TransportType transport_type = Extract<TransportType, 15, 2>(p2); if (transport_type == TRANSPORT_ROAD) { DiagDirection end_direction = ReverseDiagDir(GetTunnelBridgeDirection(end_tile)); ConnectRoadToStructure(end_tile, end_direction); DiagDirection start_direction = ReverseDiagDir(GetTunnelBridgeDirection(p1)); ConnectRoadToStructure(p1, start_direction); } }
/** * Callback executed after a build road tunnel command has been called. * * @param result Whether the build succeeded. * @param start_tile Starting tile of the tunnel. * @param p1 bit 0-3 railtype or roadtypes * bit 8-9 transport type * @param p2 unused */ void CcBuildRoadTunnel(const CommandCost &result, TileIndex start_tile, uint32 p1, uint32 p2) { if (result.Succeeded()) { if (_settings_client.sound.confirm) SndPlayTileFx(SND_1F_SPLAT_OTHER, start_tile); if (!_settings_client.gui.persistent_buildingtools) ResetObjectToPlace(); DiagDirection start_direction = ReverseDiagDir(GetTunnelBridgeDirection(start_tile)); ConnectRoadToStructure(start_tile, start_direction); TileIndex end_tile = GetOtherTunnelBridgeEnd(start_tile); DiagDirection end_direction = ReverseDiagDir(GetTunnelBridgeDirection(end_tile)); ConnectRoadToStructure(end_tile, end_direction); } else { SetRedErrorSquare(_build_tunnel_endtile); } }
void CcPlaySound10(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2) { if (result.Succeeded() && _settings_client.sound.confirm) SndPlayTileFx(SND_12_EXPLOSION, tile); }
void CcBuildCanal(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2) { if (result.Succeeded() && _settings_client.sound.confirm) SndPlayTileFx(SND_02_SPLAT, tile); }
void CcPlaySound_SPLAT_OTHER(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2) { if (result.Succeeded() && _settings_client.sound.confirm) SndPlayTileFx(SND_1F_SPLAT_OTHER, tile); }
void CcBuildCanal(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2) { if (result.Succeeded()) SndPlayTileFx(SND_02_SPLAT, tile); }
void CcPlaySound1D(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2) { if (result.Succeeded()) SndPlayTileFx(SND_1F_SPLAT, tile); }