Data Structures | Defines | 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"

Go to the source code of this file.

Data Structures

struct  BulldozerMovement
struct  BubbleMovement

Defines

#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:
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 593 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(), VehicleUpdatePositionAndViewport(), Vehicle::vehstatus, 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:
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 621 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:
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 637 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(), and Vehicle::ShowVisualEffect().


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 361 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 337 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 353 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 345 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 328 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 459 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 252 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 534 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 551 of file effectvehicle.cpp.

Initial value:
 {
  TO_INDUSTRIES,      
  TO_INVALID,         
  TO_INVALID,         
  TO_INVALID,         
  TO_INVALID,         
  TO_INVALID,         
  TO_INVALID,         
  TO_INVALID,         
  TO_INVALID,         
  TO_INDUSTRIES,      
  TO_INVALID,         
  TO_INDUSTRIES,      
}

Transparency options affecting the effects.

Definition at line 568 of file effectvehicle.cpp.