OpenTTD Source: src/effectvehicle.cpp File Reference

OpenTTD Source 15.0-beta1

Data Structures | Macros | Functions | Variables
effectvehicle.cpp File Reference

Implementation of everything generic to vehicles. More...

`#include "stdafx.h"`
`#include "landscape.h"`
`#include "core/random_func.hpp"`
`#include "industry_map.h"`
`#include "vehicle_func.h"`
`#include "sound_func.h"`
`#include "animated_tile_func.h"`
`#include "effectvehicle_func.h"`
`#include "effectvehicle_base.h"`
`#include "safeguards.h"`

Go to the source code of this file.

## Data Structures
struct | BulldozerMovement
struct | BubbleMovement
struct | EffectProcs

## Macros
#define | MK(x, y, z, i) { x, y, z, i }
#define | ME(i) { i, 4, 0, 0 }

## Functions
static bool | IncrementSprite (EffectVehicle *v, SpriteID last)
| Increment the sprite unless it has reached the end of the animation.
static void | ChimneySmokeInit (EffectVehicle *v)
static bool | ChimneySmokeTick (EffectVehicle *v)
static void | SteamSmokeInit (EffectVehicle *v)
static bool | SteamSmokeTick (EffectVehicle *v)
static void | DieselSmokeInit (EffectVehicle *v)
static bool | DieselSmokeTick (EffectVehicle *v)
static void | ElectricSparkInit (EffectVehicle *v)
static bool | ElectricSparkTick (EffectVehicle *v)
static void | SmokeInit (EffectVehicle *v)
static bool | SmokeTick (EffectVehicle *v)
static void | ExplosionLargeInit (EffectVehicle *v)
static bool | ExplosionLargeTick (EffectVehicle *v)
static void | BreakdownSmokeInit (EffectVehicle *v)
static bool | BreakdownSmokeTick (EffectVehicle *v)
static void | ExplosionSmallInit (EffectVehicle *v)
static bool | ExplosionSmallTick (EffectVehicle *v)
static void | BulldozerInit (EffectVehicle *v)
static bool | BulldozerTick (EffectVehicle *v)
static void | BubbleInit (EffectVehicle *v)
static bool | BubbleTick (EffectVehicle *v)
EffectVehicle * | CreateEffectVehicle (int x, int y, int z, EffectVehicleType type)
| Create an effect vehicle at a particular location.
EffectVehicle * | CreateEffectVehicleAbove (int x, int y, int z, EffectVehicleType type)
| Create an effect vehicle above a particular location.
EffectVehicle * | CreateEffectVehicleRel (const Vehicle *v, int x, int y, int z, EffectVehicleType type)
| Create an effect vehicle above a particular vehicle.

## Variables
static const BulldozerMovement | _bulldozer_movement []
struct { |
int8_t x |
int8_t y |
} | _inc_by_dir [] |
static const BubbleMovement | _bubble_float_sw []
static const BubbleMovement | _bubble_float_ne []
static const BubbleMovement | _bubble_float_se []
static const BubbleMovement | _bubble_float_nw []
static const BubbleMovement | _bubble_burst []
static const BubbleMovement | _bubble_absorb []
static const BubbleMovement *const | _bubble_movement []
static std::array< EffectProcs, EV_END > | _effect_procs
| Per-EffectVehicleType handling.

## Detailed Description

Implementation of everything generic to vehicles.

Definition in file effectvehicle.cpp.

## Macro Definition Documentation

## ◆ ME

#define ME | ( |  | i | ) | { i, 4, 0, 0 }

Definition at line 327 of file effectvehicle.cpp.

## ◆ MK

#define MK | ( |  | x,
|  |  | y,
|  |  | z,
|  |  | i
| ) |  | { x, y, z, i }

Definition at line 326 of file effectvehicle.cpp.

## Function Documentation

## ◆ BreakdownSmokeInit()

static void BreakdownSmokeInit | ( | EffectVehicle * | v | ) |
| static

Definition at line 194 of file effectvehicle.cpp.

## ◆ BreakdownSmokeTick()

static bool BreakdownSmokeTick | ( | EffectVehicle * | v | ) |
| static

Definition at line 200 of file effectvehicle.cpp.

## ◆ BubbleInit()

static void BubbleInit | ( | EffectVehicle * | v | ) |
| static

Definition at line 312 of file effectvehicle.cpp.

## ◆ BubbleTick()

static bool BubbleTick | ( | EffectVehicle * | v | ) |
| static

Definition at line 469 of file effectvehicle.cpp.

## ◆ BulldozerInit()

static void BulldozerInit | ( | EffectVehicle * | v | ) |
| static

Definition at line 239 of file effectvehicle.cpp.

## ◆ BulldozerTick()

static bool BulldozerTick | ( | EffectVehicle * | v | ) |
| static

Definition at line 286 of file effectvehicle.cpp.

## ◆ ChimneySmokeInit()

static void ChimneySmokeInit | ( | EffectVehicle * | v | ) |
| static

Definition at line 39 of file effectvehicle.cpp.

## ◆ ChimneySmokeTick()

static bool ChimneySmokeTick | ( | EffectVehicle * | v | ) |
| static

Definition at line 46 of file effectvehicle.cpp.

## ◆ CreateEffectVehicle()

EffectVehicle * CreateEffectVehicle | ( | int | x,
|  | int | y,
|  | int | z,
|  | EffectVehicleType | type
| ) |  |

Create an effect vehicle at a particular location.

Parameters

  x | The x location on the map.
  y | The y location on the map.
  z | The z location on the map.
  type | The type of effect vehicle.

Returns
  The effect vehicle.

Definition at line 566 of file effectvehicle.cpp.

References _effect_procs, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_vehicle_pool >::CanAllocateItem(), Vehicle::subtype, Vehicle::tile, EffectVehicle::UpdateDeltaXY(), Vehicle::UpdatePositionAndViewport(), Vehicle::vehstatus, VS_UNCLICKABLE, Vehicle::x_pos, Vehicle::y_pos, and Vehicle::z_pos.

Referenced by CreateEffectVehicleAbove(), and CreateEffectVehicleRel().

## ◆ CreateEffectVehicleAbove()

EffectVehicle * CreateEffectVehicleAbove | ( | int | x,
|  | int | y,
|  | int | z,
|  | EffectVehicleType | type
| ) |  |

Create an effect vehicle above a particular location.

Parameters

  x | The x location on the map.
  y | The y location on the map.
  z | The offset from the ground.
  type | The type of effect vehicle.

Returns
  The effect vehicle.

Definition at line 594 of file effectvehicle.cpp.

References Clamp(), CreateEffectVehicle(), GetSlopePixelZ(), Map::MaxX(), Map::MaxY(), and TILE_SIZE.

Referenced by CmdClearArea(), DisasterTick_Aircraft(), and DisasterTick_Big_Ufo_Destroyer().

## ◆ CreateEffectVehicleRel()

EffectVehicle * CreateEffectVehicleRel | ( | const Vehicle * | v,
|  | int | x,
|  | int | y,
|  | int | z,
|  | EffectVehicleType | type
| ) |  |

Create an effect vehicle above a particular vehicle.

Parameters

  v | The vehicle to base the position on.
  x | The x offset to the vehicle.
  y | The y offset to the vehicle.
  z | The z offset to the vehicle.
  type | The type of effect vehicle.

Returns
  The effect vehicle.

Definition at line 610 of file effectvehicle.cpp.

References CreateEffectVehicle(), Vehicle::x_pos, Vehicle::y_pos, and Vehicle::z_pos.

Referenced by CrashAirplane(), DisasterTick_Big_Ufo_Destroyer(), DisasterTick_Ufo(), DisasterTick_Zeppeliner(), FloodVehicle(), HandleAircraftSmoke(), Vehicle::HandleBreakdown(), HandleCrashedAircraft(), HandleCrashedTrain(), RoadVehIsCrashed(), Vehicle::ShowVisualEffect(), and SpawnAdvancedVisualEffect().

## ◆ DieselSmokeInit()

static void DieselSmokeInit | ( | EffectVehicle * | v | ) |
| static

Definition at line 97 of file effectvehicle.cpp.

## ◆ DieselSmokeTick()

static bool DieselSmokeTick | ( | EffectVehicle * | v | ) |
| static

Definition at line 103 of file effectvehicle.cpp.

## ◆ ElectricSparkInit()

static void ElectricSparkInit | ( | EffectVehicle * | v | ) |
| static

Definition at line 121 of file effectvehicle.cpp.

## ◆ ElectricSparkTick()

static bool ElectricSparkTick | ( | EffectVehicle * | v | ) |
| static

Definition at line 127 of file effectvehicle.cpp.

## ◆ ExplosionLargeInit()

static void ExplosionLargeInit | ( | EffectVehicle * | v | ) |
| static

Definition at line 174 of file effectvehicle.cpp.

## ◆ ExplosionLargeTick()

static bool ExplosionLargeTick | ( | EffectVehicle * | v | ) |
| static

Definition at line 180 of file effectvehicle.cpp.

## ◆ ExplosionSmallInit()

static void ExplosionSmallInit | ( | EffectVehicle * | v | ) |
| static

Definition at line 219 of file effectvehicle.cpp.

## ◆ ExplosionSmallTick()

static bool ExplosionSmallTick | ( | EffectVehicle * | v | ) |
| static

Definition at line 225 of file effectvehicle.cpp.

## ◆ IncrementSprite()

static bool IncrementSprite | ( | EffectVehicle * | v,
|  | SpriteID | last
| ) |  |
| static

Increment the sprite unless it has reached the end of the animation.

Parameters

  v | Vehicle to increment sprite of.
  last | Last sprite of animation.

Returns
  true if the sprite was incremented, false if the end was reached.

Definition at line 29 of file effectvehicle.cpp.

References PalSpriteID::sprite, Vehicle::sprite_cache, and MutableSpriteCache::sprite_seq.

## ◆ SmokeInit()

static void SmokeInit | ( | EffectVehicle * | v | ) |
| static

Definition at line 144 of file effectvehicle.cpp.

## ◆ SmokeTick()

static bool SmokeTick | ( | EffectVehicle * | v | ) |
| static

Definition at line 150 of file effectvehicle.cpp.

## ◆ SteamSmokeInit()

static void SteamSmokeInit | ( | EffectVehicle * | v | ) |
| static

Definition at line 67 of file effectvehicle.cpp.

## ◆ SteamSmokeTick()

static bool SteamSmokeTick | ( | EffectVehicle * | v | ) |
| static

Definition at line 73 of file effectvehicle.cpp.

## Variable Documentation

## ◆ _bubble_absorb

const BubbleMovement _bubble_absorb[]
| static

Definition at line 370 of file effectvehicle.cpp.

## ◆ _bubble_burst

const BubbleMovement _bubble_burst[]
| static

Initial value:
= {
MK(0, 0, 1, 2),
MK(0, 0, 1, 7),
MK(0, 0, 1, 8),
MK(0, 0, 1, 9),
}

Definition at line 362 of file effectvehicle.cpp.

## ◆ _bubble_float_ne

const BubbleMovement _bubble_float_ne[]
| static

Initial value:
= {
MK( 0, 0, 1, 0),
MK(-1, 0, 1, 1),
MK( 0, 0, 1, 0),
MK(-1, 0, 1, 2),
}

Definition at line 338 of file effectvehicle.cpp.

## ◆ _bubble_float_nw

const BubbleMovement _bubble_float_nw[]
| static

Initial value:
= {
MK(0, 0, 1, 0),
MK(0, -1, 1, 1),
MK(0, 0, 1, 0),
MK(0, -1, 1, 2),
}

Definition at line 354 of file effectvehicle.cpp.

## ◆ _bubble_float_se

const BubbleMovement _bubble_float_se[]
| static

Initial value:
= {
MK(0, 0, 1, 0),
MK(0, 1, 1, 1),
MK(0, 0, 1, 0),
MK(0, 1, 1, 2),
}

Definition at line 346 of file effectvehicle.cpp.

## ◆ _bubble_float_sw

const BubbleMovement _bubble_float_sw[]
| static

Initial value:
= {
MK(0, 0, 1, 0),
MK(1, 0, 1, 1),
MK(0, 0, 1, 0),
MK(1, 0, 1, 2),
}

Definition at line 329 of file effectvehicle.cpp.

## ◆ _bubble_movement

const BubbleMovement* const _bubble_movement[]
| static

Initial value:
= {
_bubble_float_sw,
_bubble_float_ne,
_bubble_float_se,
_bubble_float_nw,
_bubble_burst,
_bubble_absorb,
}

Definition at line 460 of file effectvehicle.cpp.

## ◆ _bulldozer_movement

const BulldozerMovement _bulldozer_movement[]
| static

Initial value:
= {
{ 0, 0, 4 },
{ 3, 3, 4 },
{ 2, 2, 7 },
{ 0, 2, 7 },
{ 1, 1, 3 },
{ 2, 2, 7 },
{ 0, 2, 7 },
{ 1, 1, 3 },
{ 2, 2, 7 },
{ 0, 2, 7 },
{ 3, 3, 6 },
{ 2, 2, 6 },
{ 1, 1, 7 },
{ 3, 1, 7 },
{ 0, 0, 3 },
{ 1, 1, 7 },
{ 3, 1, 7 },
{ 0, 0, 3 },
{ 1, 1, 7 },
{ 3, 1, 7 }
}

Definition at line 253 of file effectvehicle.cpp.

## ◆ _effect_procs

std::array<EffectProcs, EV_END> _effect_procs
| static

Initial value:
= {{
{ ChimneySmokeInit, ChimneySmokeTick, TO_INDUSTRIES },
{ SteamSmokeInit, SteamSmokeTick, TO_INVALID },
{ DieselSmokeInit, DieselSmokeTick, TO_INVALID },
{ ElectricSparkInit, ElectricSparkTick, TO_INVALID },
{ SmokeInit, SmokeTick, TO_INVALID },
{ ExplosionLargeInit, ExplosionLargeTick, TO_INVALID },
{ BreakdownSmokeInit, BreakdownSmokeTick, TO_INVALID },
{ ExplosionSmallInit, ExplosionSmallTick, TO_INVALID },
{ BulldozerInit, BulldozerTick, TO_INVALID },
{ BubbleInit, BubbleTick, TO_INDUSTRIES },
{ SmokeInit, SmokeTick, TO_INVALID },
{ SmokeInit, SmokeTick, TO_INDUSTRIES },
}}
TO_INVALID
@ TO_INVALID
Invalid transparency option.
Definition transparency.h:33
TO_INDUSTRIES
@ TO_INDUSTRIES
industries
Definition transparency.h:26

Per-EffectVehicleType handling.

Definition at line 543 of file effectvehicle.cpp.

Referenced by CreateEffectVehicle(), EffectVehicle::GetTransparencyOption(), and EffectVehicle::Tick().

## ◆ [struct]

const struct { ... } _inc_by_dir[]

Initial value:
= {
{ -1, 0 },
{ 0, 1 },
{ 1, 0 },
{ 0, -1 }
}

## ◆ x

int8_t x

Definition at line 277 of file effectvehicle.cpp.

## ◆ y

int8_t y

Definition at line 278 of file effectvehicle.cpp.