$treeview $search $mathjax
Stratagus  2.2.6
$projectbrief
$projectbrief
$searchbox
-->
         _________ __                 __
        /   _____//  |_____________ _/  |______     ____  __ __  ______
        \_____  \\   __\_  __ \__  \\   __\__  \   / ___\|  |  \/  ___/
        /        \|  |  |  | \// __ \|  |  / __ \_/ /_/  >  |  /\___ \
       /_______  /|__|  |__|  (____  /__| (____  /\___  /|____//____  >
               \/                  \/          \//_____/            \/
    ______________________                           ______________________
                          T H E   W A R   B E G I N S
           Stratagus - A free fantasy real time strategy game engine

MissileType Class Reference

Base structure of missile-types. More...

#include <missile.h>

List of all members.


Public Member Functions

void DrawMissileType (int frame, int x, int y) const
int Width () const
int Height () const
missile.cpp - The missiles.
 MissileType (const std::string &ident)
 ~MissileType ()
void LoadMissileSprite ()
 load the graphics for a missile type
void Init ()
void DrawMissileType (int frame, const PixelPos &pos) const

Public Attributes

std::string Ident
int Transparency
 missile name
PixelSize size
 missile transparency
int DrawLevel
 missile size in pixels
int SpriteFrames
 Level to draw missile at.
int NumDirections
 number of sprite frames in graphic
SoundConfig FiredSound
 number of directions missile can face
SoundConfig ImpactSound
 fired sound
bool Flip
 impact sound for this missile-type
bool CanHitOwner
 flip image when facing left
bool FriendlyFire
 missile can hit the owner
MissileClass Class
 missile can't hit own units
int NumBounces
 missile class
int StartDelay
 number of bounces
int Sleep
 missile start delay
int Speed
 missile sleep
int Range
 missile speed
int SplashFactor
 missile damage range
std::string ImpactName
 missile splash divisor
MissileTypeImpactMissile
 impact missile-type name
std::string SmokeName
 missile produces an impact
MissileTypeSmokeMissile
 impact missile-type name
LuaCallbackImpactParticle
 Trailling missile.
CGraphicG
 impact particle

Detailed Description

Base structure of missile-types.

#include "missile.h"

This structure defines the base type information of all missiles. It contains all information that all missiles of the same type shares. The fields are filled from the configuration files.

The missile-type structure members:

MissileType::Ident

Unique identifier of the missile-type, used to reference it in config files and during startup.

Note:
Don't use this member in game, use instead the pointer to this structure. See MissileTypeByIdent().
MissileType::DrawLevel

The Level/Order to draw the missile in, usually 0-255

MissileType::Width MissileType::Height

Size (width and height) of a frame in the image. All sprite frames of the missile-type must have the same size.

MissileType::SpriteFrames

Total number of sprite frames in the graphic image.

Note:
If the image is smaller than the number of directions, width/height and/or framecount suggest the engine crashes.

There is currently a limit of 127 sprite frames, which can be lifted if needed.

MissileType::NumDirections

Number of directions missile can face.

MissileType::Transparency

Set a missile transparency. Current supported value is 50 only.

MissileType::FiredSound

Sound of the missile, if fired.

Note:
currently not used.
MissileType::ImpactSound

Impact sound for this missile.

MissileType::CanHitOwner

Can hit the unit that have fired the missile.

Note:
Currently no missile can hurt its owner.
MissileType::FriendlyFire

Can't hit the units of the same player, that has the missile fired.

MissileType::Class

Class of the missile-type, defines the basic effects of the missile. Look at the different class identifiers for more informations (_missile_class_, MissileClassNone, ...).

MissileType::NumBounces

This is the number of bounces, and it is only valid with MissileClassBounce. The missile will hit this many times in a row.

MissileType::StartDelay

Delay in game cycles after the missile generation, until the missile animation and effects starts. Delay denotes the number of display cycles to skip before drawing the first sprite frame and only happens once at start.

MissileType::Sleep

This are the number of game cycles to wait for the next animation or the sleeping between the animation steps. All animations steps use the same delay. 0 is the fastest and 255 the slowest animation.

Note:
Perhaps we should later allow animation scripts for more complex animations.
MissileType::Speed

The speed how fast the missile moves. 0 the missile didn't move, 1 is the slowest speed and 32 s the fastest supported speed. This is how many pixels the missiles moves with each animation step. The real use of this member depends on the MissileType::Class

Note:
This is currently only used by the point-to-point missiles (MissileClassPointToPoint, ...). Perhaps we should later allow animation scripts for more complex animations.
MissileType::Range

Determines the range in which a projectile will deal its damage. A range of 0 will mean that the damage will be limited to the targetted unit only. So if you shot a missile at a unit, it would only damage that unit. A value of 1 only affects the field where the missile hits. A value of 2 would mean that the damage for that particular missile would be dealt for a range of 1 around the impact spot. All fields that aren't the center get only 1/SpashFactor of the damage. Fields 2 away get 1/(SplashFactor*2), and following...

MissileType::SplashFactor

Determines The Splash damage divisor, see Range

MissileType::ImpactName

The name of the next (other) missile to generate, when this missile reached its end point or its life time is over. So it can be used to generate a chain of missiles.

Note:
Used and should only be used during configuration and startup.
MissileType::ImpactMissile

Pointer to the impact missile-type. Used during run time.

MissileType::SmokeName

The name of the next (other) missile to generate a trailing smoke. So it can be used to generate a chain of missiles.

Note:
Used and should only be used during configuration and startup.
MissileType::SmokeMissile

Pointer to the smoke missile-type. Used during run time.

MissileType::Sprite

Missile sprite image loaded from MissileType::File

MissileType::G

File containing the image (sprite) graphics of the missile. The file can contain multiple sprite frames. The sprite frames for the different directions are placed in the row. The different animations steps are placed in the column. But the correct order depends on MissileType::Class. Missiles like fire have no directions, missiles like arrows have a direction.


Constructor & Destructor Documentation

MissileType::MissileType ( const std::string &  ident  ) 

Constructor.

MissileType::~MissileType (  ) 

Destructor.


Member Function Documentation

void MissileType::LoadMissileSprite (  ) 

load the graphics for a missile type

Damage calculation for missile.

Load the graphics for a missile type

void MissileType::Init (  ) 

Initialize missile type.

void MissileType::DrawMissileType ( int  frame,
const PixelPos pos 
) const

Draw missile.

Parameters:
frame Animation frame
pos Screen pixel position

void MissileType::DrawMissileType ( int  frame,
int  x,
int  y 
) const [inline]

int MissileType::Width (  )  const [inline]

int MissileType::Height (  )  const [inline]


Member Data Documentation

std::string MissileType::Ident

missile name

missile transparency

missile size in pixels

Level to draw missile at.

number of sprite frames in graphic

number of directions missile can face

Todo:
FiredSound defined but not used!

impact sound for this missile-type

flip image when facing left

missile can hit the owner

missile can't hit own units

missile class

number of bounces

missile start delay

missile sleep

missile speed

missile damage range

missile splash divisor

impact missile-type name

missile produces an impact

impact missile-type name

impact particle


The documentation for this class was generated from the following files:
(C) Copyright 1998-2011 by The Stratagus Project under the GNU General Public License.
All trademarks and copyrights on this page are owned by their respective owners.