$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

src/stratagus/missile.cpp File Reference

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include "stratagus.h"
#include <vector>
#include <string>
#include <map>
#include "video.h"
#include "font.h"
#include "tileset.h"
#include "map.h"
#include "unitsound.h"
#include "unittype.h"
#include "player.h"
#include "unit.h"
#include "missile.h"
#include "sound.h"
#include "ui.h"
#include "iolib.h"
#include "util.h"
#include "trigger.h"
#include "luacallback.h"

Classes

struct  LandMineTargetFinder

missile.cpp - The missiles.

static std::vector< MissileType * > MissileTypes
static std::vector< Missile * > GlobalMissiles
 Missile types.
static std::vector< Missile * > LocalMissiles
 all global missiles on map
static std::map< std::string,
MissileType * > 
MissileTypeMap
 all local missiles on map
std::vector
< BurningBuildingFrame * > 
BurningBuildingFrames
NumberDescDamage
 Burning building frames.
void LoadMissileSprites ()
 load all missile sprites
MissileTypeMissileTypeByIdent (const std::string &ident)
 Get missile-type by ident.
MissileTypeNewMissileTypeSlot (const std::string &ident)
 allocate an empty missile-type slot
MissileMakeMissile (MissileType *mtype, const PixelPos &startPos, const PixelPos &destPos)
MissileMakeLocalMissile (MissileType *mtype, const PixelPos &startPos, const PixelPos &destPos)
static void FreeMissile (std::vector< Missile * > &missiles, std::vector< Missile * >::size_type i)
static int CalculateDamageStats (const CUnitStats &attacker_stats, const CUnitStats &goal_stats, int bloodlust)
static int CalculateDamage (const CUnit &attacker, const CUnit &goal)
void FireMissile (CUnit &unit)
 fire a missile
static void GetMissileMapArea (const Missile *missile, Vec2i &boxMin, Vec2i &boxMax)
static int MissileVisibleInViewport (const CViewport *vp, const Missile *missile)
static bool MissileDrawLevelCompare (const Missile *const l, const Missile *const r)
int FindAndSortMissiles (const CViewport *vp, Missile *table[], const int tablesize)
int FindAndSortMissiles (const CViewport *vp, MissileDrawProxy table[], const int tablesize)
static void MissileNewHeadingFromXY (Missile &missile, const PixelPos &delta)
static int MissileInitMove (Missile &missile)
static int PointToPointMissile (Missile &missile)
static int ParabolicMissile (Missile &missile)
static void MissileHitsGoal (const Missile &missile, CUnit &goal, int splash)
static void MissileHitsWall (const Missile &missile, const Vec2i &tilePos, int splash)
void MissileHit (Missile *missile)
static int NextMissileFrame (Missile &missile, char sign, char longAnimation)
static void NextMissileFrameCycle (Missile &missile)
static void MissilesActionLoop (std::vector< Missile * > &missiles)
void MissileActions ()
 handle all missiles
int ViewPointDistanceToMissile (const Missile *missile)
 distance from view point to missile
MissileTypeMissileBurningBuilding (int percent)
 Get the burning building missile based on hp percent.
void SaveMissiles (CFile *file)
 Save missiles.
void InitMissileTypes ()
 Initialize missile-types.
void CleanMissileTypes ()
 Clean missile-types.
void InitMissiles ()
 Initialize missiles.
void CleanMissiles ()
 Clean missiles.

Defines

#define BoundX(x)   std::min<int>(std::max<int>(0, x), Map.Info.MapWidth - 1)
#define BoundY(y)   std::min<int>(std::max<int>(0, y), Map.Info.MapHeight - 1)

Define Documentation

#define BoundX (  )     std::min<int>(std::max<int>(0, x), Map.Info.MapWidth - 1)

#define BoundY (  )     std::min<int>(std::max<int>(0, y), Map.Info.MapHeight - 1)


Function Documentation

static int CalculateDamage ( const CUnit attacker,
const CUnit goal 
) [static]

Calculate damage.

Parameters:
attacker Attacker.
goal Goal unit.
Returns:
damage produces on goal.

static int CalculateDamageStats ( const CUnitStats attacker_stats,
const CUnitStats goal_stats,
int  bloodlust 
) [static]

Calculate damage.

Todo:
NOTE: different targets (big are hit by some missiles better)
Todo:
NOTE: lower damage for hidden targets.
Todo:
NOTE: lower damage for targets on higher ground.
Parameters:
attacker_stats Attacker attributes.
goal_stats Goal attributes.
bloodlust If attacker has bloodlust
xp Experience of attacker.
Returns:
damage inflicted to goal.

void CleanMissiles (  ) 

Clean missiles.

Clean up missiles.

void CleanMissileTypes (  ) 

Clean missile-types.

Clean up missile-types.

int FindAndSortMissiles ( const CViewport vp,
MissileDrawProxy  table[],
const int  tablesize 
)

int FindAndSortMissiles ( const CViewport vp,
Missile table[],
const int  tablesize 
)

Sort visible missiles on map for display.

Parameters:
vp Viewport pointer.
table OUT : array of missile to display sorted by DrawLevel.
tablesize Size of table array
Returns:
number of missiles returned in table

void FireMissile ( CUnit unit  ) 

fire a missile

Fire missile.

Parameters:
unit Unit that fires the missile.

static void FreeMissile ( std::vector< Missile * > &  missiles,
std::vector< Missile * >::size_type  i 
) [static]

Free a missile.

Parameters:
missiles Missile pointer.
i Index in missiles of missile to free

static void GetMissileMapArea ( const Missile missile,
Vec2i boxMin,
Vec2i boxMax 
) [static]

Get area of tiles covered by missile

Parameters:
missile Missile to be checked and set.
boxMin OUT: Pointer to top left corner in map tiles.
boxMax OUT: Pointer to bottom right corner in map tiles.
Returns:
sx,sy,ex,ey defining area in Map

void InitMissiles (  ) 

Initialize missiles.

Initialize missiles.

void InitMissileTypes (  ) 

Initialize missile-types.

Initialize missile-types.

void LoadMissileSprites (  ) 

load all missile sprites

Load the graphics for all missiles types

Missile* MakeLocalMissile ( MissileType mtype,
const PixelPos startPos,
const PixelPos destPos 
)

Create a new local missile at (x,y).

Parameters:
mtype Type pointer of missile.
startPos Missile start point in pixel.
destPos Missile destination point in pixel.
Returns:
created missile.

Missile* MakeMissile ( MissileType mtype,
const PixelPos startPos,
const PixelPos destPos 
)

Create a new global missile at (x,y).

Parameters:
mtype Type pointer of missile.
startPos Missile start point in pixel.
destPos Missile destination point in pixel.
Returns:
created missile.

void MissileActions (  ) 

handle all missiles

Handle all missile actions.

MissileType* MissileBurningBuilding ( int  percent  ) 

Get the burning building missile based on hp percent.

Get the burning building missile based on hp percent.

Parameters:
percent HP percent
Returns:
the missile used for burning.

static bool MissileDrawLevelCompare ( const Missile *const   l,
const Missile *const   r 
) [static]

void MissileHit ( Missile missile  ) 

Work for missile hit.

Parameters:
missile Missile reaching end-point.

static void MissileHitsGoal ( const Missile missile,
CUnit goal,
int  splash 
) [static]

Missile hits the goal.

Parameters:
missile Missile hitting the goal.
goal Goal of the missile.
splash Splash damage divisor.

static void MissileHitsWall ( const Missile missile,
const Vec2i tilePos,
int  splash 
) [static]

Missile hits wall.

Parameters:
missile Missile hitting the goal.
tilePos Wall map tile position.
splash Splash damage divisor.
Todo:
FIXME: Support for more races.

static int MissileInitMove ( Missile missile  )  [static]

Init the move.

Parameters:
missile missile to initialise for movement.
Returns:
1 if goal is reached, 0 else.

static void MissileNewHeadingFromXY ( Missile missile,
const PixelPos delta 
) [static]

Change missile heading from x,y.

Parameters:
missile Missile.
delta Delta movement

static void MissilesActionLoop ( std::vector< Missile * > &  missiles  )  [static]

Handle all missile actions of global/local missiles.

Parameters:
missiles Table of missiles.

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

Get missile-type by ident.

Get Missile type by identifier.

Parameters:
ident Identifier.
Returns:
Missile type pointer.

static int MissileVisibleInViewport ( const CViewport vp,
const Missile missile 
) [static]

Check missile visibility in a given viewport.

Parameters:
vp Viewport to be checked.
missile Missile pointer to check if visible.
Returns:
Returns true if visible, false otherwise.

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

allocate an empty missile-type slot

Allocate an empty missile-type slot.

Parameters:
ident Identifier to identify the slot.
Returns:
New allocated (zeroed) missile-type pointer.

static int NextMissileFrame ( Missile missile,
char  sign,
char  longAnimation 
) [static]

Pass to the next frame for animation.

Parameters:
missile missile to animate.
sign 1 for next frame, -1 for previous frame.
longAnimation 1 if Frame is conditionned by covered distance, 0 else.
Returns:
1 if animation is finished, 0 else.

static void NextMissileFrameCycle ( Missile missile  )  [static]

Pass the next frame of the animation. This animation goes from start to finish ONCE on the way

Parameters:
missile Missile pointer.

static int ParabolicMissile ( Missile missile  )  [static]

Calculate parabolic trajectories.

Parameters:
missile Missile pointer.
Returns:
1 if target is reached, 0 otherwise
Todo:
Find good values for ZprojToX and Y

static int PointToPointMissile ( Missile missile  )  [static]

Handle point to point missile.

Parameters:
missile Missile pointer.
Returns:
1 if goal is reached, 0 else.

void SaveMissiles ( CFile file  ) 

Save missiles.

Save the state missiles to file.

Parameters:
file Output file.

int ViewPointDistanceToMissile ( const Missile missile  ) 

distance from view point to missile

Calculate distance from view-point to missle.

Parameters:
missile Missile pointer for distance.
Returns:
the computed value.


Variable Documentation

Burning building frames.

std::vector<Missile*> GlobalMissiles [static]

Missile types.

std::vector<Missile*> LocalMissiles [static]

all global missiles on map

std::map<std::string, MissileType *> MissileTypeMap [static]

all local missiles on map

lookup table for missile names

std::vector<MissileType *> MissileTypes [static]

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