Parent class for elements in the map. More...
#include <Map.h>
Public Member Functions | |
bool | atDiscoBall (int x, int y, int z, int range) |
Helper for calling atDiscoBall(IntVec3 v, int range) More... | |
bool | atDiscoBall (IntVec3 v, int range) |
bool | attack (int x, int y, int z, int damage) |
Attack the position on a grid Does attack damage if a Creature and defend Damage if a Cube. More... | |
bool | attack (IntVec3 v, int damage) |
Helper for calling attack(int x,int y,int z,int damage) More... | |
bool | attack (IntVec3 old, int x, int y, int z, int damage) |
Helper for calling attack(int x,int y,int z,int damage) More... | |
bool | attackDiscoBall (int damage) |
Attack the Disco Ball!!!! More... | |
bool | boundaryCheck (int x, int y, int z) |
Check if this position is in the Map grid in order to avoid bad access. More... | |
virtual AABox | getAABox () |
Get the AABox corresponding to the creature. More... | |
virtual int | getBounty () |
virtual int | getOccupancy () |
virtual int | getType () |
bool | hasBox (int x, int y, int z) |
Check if there is a box at the specified position. More... | |
bool | hasBox (IntVec3 v) |
Helper for calling hasBox(int x, int y, int z);. More... | |
bool | inMap () |
Check if the MapElement is close to the Disco Ball. More... | |
bool | isValidMove (int x, int y, int z) |
Check if can move to the position Can move if the occupancy of this MapElement sums the gridOccupancy of the destination grid is less than or equal to 100. More... | |
bool | isValidMove (IntVec3 v) |
Helper for calling isValidMove(int x, int y, int z);. More... | |
bool | isValidMove (IntVec3 old, int x, int y, int z) |
Helper for calling isValidMove(int x, int y, int z);. More... | |
MapElement (shared_ptr< VisibleEntity > e, int x, int y, int z, Map *m) | |
Constructor. More... | |
virtual bool | move () |
Take a move This is the method that actually determines the behavior of the creature. More... | |
virtual void | onDeath () |
Update m_map when it dies. More... | |
virtual void | onSpawn () |
Update m_map when it spawns. More... | |
bool | operator< (const MapElement &other) const |
Overloaded less than for sorting. More... | |
float | randFloat () |
Generates pseudo-random float between 0 and 1. More... | |
virtual void | run () |
Called every frame to update the MapElement A MapElement takes a certain number of turns(frames) to finish a move. More... | |
virtual void | takeDamage () |
Takes damage from the grid for both the oldPos and newPos. More... | |
void | updateHP () |
Called every frame to update the HP of the MapElement. More... | |
Public Attributes | |
AABox | aaBox |
Used for raycasting. More... | |
bool | change |
True if anything about it has changed in the past frame, vice versa. More... | |
Vector3 | displacement |
Displacement per frame. More... | |
shared_ptr< VisibleEntity > | entity |
Pointer to the VisibleEntity in the actual Scene. More... | |
Map * | m_map |
Pointer to the map. More... | |
int | maxHP |
Max HP of creature. More... | |
int | newHP |
HP at this frame. More... | |
Vector3 | newOffset |
Offset used for random placement within a Map grid. More... | |
IntVec3 | newPos |
Destination of this after finishing the current move. More... | |
int | oldHP |
HP before this frame. More... | |
Vector3 | oldOffset |
Offset used for random placement within a Map grid. More... | |
IntVec3 | oldPos |
Previous position of this before the current move. More... | |
int | suicide = false |
If true, no bounty is given upon death. More... | |
int | turnsLeft |
Number of frames left before the current move is finished. More... | |
Parent class for elements in the map.
Only child classes should be used A MapElement is the basic unit in Map. It contains information about is location, HP and etc, as well as methods that provides basic attack and move methods. In addition to that, it also contains information about its graphical representation.
MapElement::MapElement | ( | shared_ptr< VisibleEntity > | e, |
int | x, | ||
int | y, | ||
int | z, | ||
Map * | m | ||
) |
Constructor.
e | entity |
x,y,z | used for initializating oldPos and newPos |
m | m_map |
bool MapElement::atDiscoBall | ( | int | x, |
int | y, | ||
int | z, | ||
int | range | ||
) |
Helper for calling atDiscoBall(IntVec3 v, int range)
x,y,z | position of MapElement |
range | range of attack, in mahattan distance |
bool MapElement::atDiscoBall | ( | IntVec3 | v, |
int | range | ||
) |
bool MapElement::attack | ( | int | x, |
int | y, | ||
int | z, | ||
int | damage | ||
) |
Attack the position on a grid Does attack damage if a Creature and defend Damage if a Cube.
The damage is distributed to corresponding MapElement in the grid with weight base on corresponding occupancy.
x,y,z | grid to attack |
damage | Damage dealt |
See Map::attackDamage and Map::defendDamage for more info.
bool MapElement::attack | ( | IntVec3 | v, |
int | damage | ||
) |
Helper for calling attack(int x,int y,int z,int damage)
v | IntVec3 that contains x,y,z |
damage | Damage dealt |
bool MapElement::attack | ( | IntVec3 | old, |
int | x, | ||
int | y, | ||
int | z, | ||
int | damage | ||
) |
Helper for calling attack(int x,int y,int z,int damage)
bool MapElement::attackDiscoBall | ( | int | damage | ) |
Attack the Disco Ball!!!!
damage | Damage to Disco Ball |
bool MapElement::boundaryCheck | ( | int | x, |
int | y, | ||
int | z | ||
) |
Check if this position is in the Map grid in order to avoid bad access.
x,y,z | point to be checked |
|
virtual |
Get the AABox corresponding to the creature.
Has to be virtual because size vary
|
virtual |
Reimplemented in SuperCrawler, Bomber, Archer, SmartCrawler, Creeper, Crawler, and Creature.
|
virtual |
Reimplemented in SuperCrawler, Bomber, Archer, SmartCrawler, Creeper, Crawler, Creature, BasicTower, and Cube.
|
virtual |
Reimplemented in SuperCrawler, Bomber, Archer, SmartCrawler, Creeper, Crawler, Creature, BasicTower, and Cube.
bool MapElement::hasBox | ( | int | x, |
int | y, | ||
int | z | ||
) |
Check if there is a box at the specified position.
x,y,z | position to be checked |
bool MapElement::hasBox | ( | IntVec3 | v | ) |
Helper for calling hasBox(int x, int y, int z);.
v | IntVec3 of the position |
bool MapElement::inMap | ( | ) |
Check if the MapElement is close to the Disco Ball.
v | position of MapElement |
range | range of attack, in mahattan distance |
See Map::discoBallLoc for more infoCheck if the MapElement is inside the map. Used for visualizing the creatures approaching the playable map
bool MapElement::isValidMove | ( | int | x, |
int | y, | ||
int | z | ||
) |
Check if can move to the position Can move if the occupancy of this MapElement sums the gridOccupancy of the destination grid is less than or equal to 100.
x,y,z | position to be checked |
bool MapElement::isValidMove | ( | IntVec3 | v | ) |
Helper for calling isValidMove(int x, int y, int z);.
v | IntVec3 of the position |
bool MapElement::isValidMove | ( | IntVec3 | old, |
int | x, | ||
int | y, | ||
int | z | ||
) |
Helper for calling isValidMove(int x, int y, int z);.
|
virtual |
Take a move This is the method that actually determines the behavior of the creature.
Called by run() everytime when turnsLeft = 0;
Must update turnsLeft. Must be overridden in sub classesA
Reimplemented in SuperCrawler, Bomber, Archer, SmartCrawler, Creeper, Crawler, Creature, BasicTower, Cube, and Bullet.
|
virtual |
Update m_map when it dies.
Reimplemented in SuperCrawler, Bomber, Archer, SmartCrawler, Creeper, Crawler, Creature, BasicTower, Cube, and Bullet.
|
virtual |
Update m_map when it spawns.
Reimplemented in SuperCrawler, Bomber, Archer, SmartCrawler, Creeper, Crawler, Creature, BasicTower, and Cube.
bool MapElement::operator< | ( | const MapElement & | other | ) | const |
Overloaded less than for sorting.
float MapElement::randFloat | ( | ) |
Generates pseudo-random float between 0 and 1.
|
virtual |
Called every frame to update the MapElement A MapElement takes a certain number of turns(frames) to finish a move.
Run is called to check if the current move has been finished. Everytime run() is called, turnsLeft is decremented by 1. If turnsLeft equals 0, move() is called to perform the next move
Reimplemented in Bullet.
|
virtual |
Takes damage from the grid for both the oldPos and newPos.
Takes attack damage if a Cube and defend damage if a Creature.
See Map::attackDamage and Map::defendDamage for more info.
Reimplemented in Bullet.
void MapElement::updateHP | ( | ) |
Called every frame to update the HP of the MapElement.
AABox MapElement::aaBox |
Used for raycasting.
bool MapElement::change |
True if anything about it has changed in the past frame, vice versa.
Vector3 MapElement::displacement |
Displacement per frame.
Calculated as the difference between newPos and oldPos(plus offset) divided by the number of turns need to finish a move
shared_ptr<VisibleEntity> MapElement::entity |
Pointer to the VisibleEntity in the actual Scene.
Map* MapElement::m_map |
Pointer to the map.
int MapElement::maxHP |
Max HP of creature.
int MapElement::newHP |
HP at this frame.
Vector3 MapElement::newOffset |
Offset used for random placement within a Map grid.
Reflects the offset for newPos
int MapElement::oldHP |
HP before this frame.
Vector3 MapElement::oldOffset |
Offset used for random placement within a Map grid.
Reflects the offset for oldPos
IntVec3 MapElement::oldPos |
Previous position of this before the current move.
int MapElement::suicide = false |
If true, no bounty is given upon death.
int MapElement::turnsLeft |
Number of frames left before the current move is finished.
See move()