OpenTTD
Data Structures | Macros | Typedefs | 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

Macros

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

Typedefs

typedef void EffectInitProc (EffectVehicle *v)
typedef bool EffectTickProc (EffectVehicle *v)

Functions

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)
 assert_compile (lengthof(_effect_init_procs)==EV_END)
 assert_compile (lengthof(_effect_tick_procs)==EV_END)
 assert_compile (lengthof(_effect_transparency_options)==EV_END)
EffectVehicleCreateEffectVehicle (int x, int y, int z, EffectVehicleType type)
 Create an effect vehicle at a particular location.
EffectVehicleCreateEffectVehicleAbove (int x, int y, int z, EffectVehicleType type)
 Create an effect vehicle above a particular location.
EffectVehicleCreateEffectVehicleRel (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   x
   int8   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 EffectInitProc *const _effect_init_procs []
 Functions to initialise an effect vehicle after construction.
static EffectTickProc *const _effect_tick_procs []
 Functions for controlling effect vehicles at each tick.
static const TransparencyOption _effect_transparency_options []
 Transparency options affecting the effects.

Detailed Description

Implementation of everything generic to vehicles.

Definition in file effectvehicle.cpp.

Function Documentation

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

Create an effect vehicle at a particular location.

Parameters
xThe x location on the map.
yThe y location on the map.
zThe z location on the map.
typeThe type of effect vehicle.
Returns
The effect vehicle.

Definition at line 595 of file effectvehicle.cpp.

References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_vehicle_pool >::CanAllocateItem(), INVALID_DIR, 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().

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

Create an effect vehicle above a particular location.

Parameters
xThe x location on the map.
yThe y location on the map.
zThe offset from the ground.
typeThe type of effect vehicle.
Returns
The effect vehicle.

Definition at line 623 of file effectvehicle.cpp.

References Clamp(), CreateEffectVehicle(), MapMaxX(), MapMaxY(), and TILE_SIZE.

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

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

Create an effect vehicle above a particular vehicle.

Parameters
vThe vehicle to base the position on.
xThe x offset to the vehicle.
yThe y offset to the vehicle.
zThe z offset to the vehicle.
typeThe type of effect vehicle.
Returns
The effect vehicle.

Definition at line 639 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().

Variable Documentation

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 363 of file effectvehicle.cpp.

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 339 of file effectvehicle.cpp.

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 355 of file effectvehicle.cpp.

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 347 of file effectvehicle.cpp.

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 330 of file effectvehicle.cpp.

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 461 of file effectvehicle.cpp.

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 254 of file effectvehicle.cpp.

EffectInitProc* const _effect_init_procs[]
static
Initial value:
{
ChimneySmokeInit,
SteamSmokeInit,
DieselSmokeInit,
ElectricSparkInit,
SmokeInit,
ExplosionLargeInit,
BreakdownSmokeInit,
ExplosionSmallInit,
BulldozerInit,
BubbleInit,
SmokeInit,
SmokeInit,
}

Functions to initialise an effect vehicle after construction.

Definition at line 536 of file effectvehicle.cpp.

EffectTickProc* const _effect_tick_procs[]
static
Initial value:
{
ChimneySmokeTick,
SteamSmokeTick,
DieselSmokeTick,
ElectricSparkTick,
SmokeTick,
ExplosionLargeTick,
BreakdownSmokeTick,
ExplosionSmallTick,
BulldozerTick,
BubbleTick,
SmokeTick,
SmokeTick,
}

Functions for controlling effect vehicles at each tick.

Definition at line 553 of file effectvehicle.cpp.

const TransparencyOption _effect_transparency_options[]
static
Initial value:

Transparency options affecting the effects.

Definition at line 570 of file effectvehicle.cpp.