OpenTTD Source  20241120-master-g6d3adc6169
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. More...
 
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)
 
EffectVehicleCreateEffectVehicle (int x, int y, int z, EffectVehicleType type)
 Create an effect vehicle at a particular location. More...
 
EffectVehicleCreateEffectVehicleAbove (int x, int y, int z, EffectVehicleType type)
 Create an effect vehicle above a particular location. More...
 
EffectVehicleCreateEffectVehicleRel (const Vehicle *v, int x, int y, int z, EffectVehicleType type)
 Create an effect vehicle above a particular vehicle. More...
 

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. More...
 

Detailed Description

Implementation of everything generic to vehicles.

Definition in file effectvehicle.cpp.

Function Documentation

◆ CreateEffectVehicle()

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

◆ CreateEffectVehicleAbove()

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

Referenced by CmdClearArea().

◆ CreateEffectVehicleRel()

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

Referenced by CrashAirplane(), HandleCrashedTrain(), and RoadVehIsCrashed().

◆ IncrementSprite()

static bool IncrementSprite ( EffectVehicle v,
SpriteID  last 
)
static

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

Parameters
vVehicle to increment sprite of.
lastLast 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.

Variable Documentation

◆ _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
Invalid transparency option.
Definition: transparency.h:33
@ TO_INDUSTRIES
industries
Definition: transparency.h:26

Per-EffectVehicleType handling.

Definition at line 543 of file effectvehicle.cpp.

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

◆ 

const { ... } _inc_by_dir[]
Initial value:
= {
{ -1, 0 },
{ 0, 1 },
{ 1, 0 },
{ 0, -1 }
}