supertux
|
Base class for moving sprites that can hurt the Player. More...
#include <badguy.hpp>
Public Member Functions | |
BadGuy (const Vector &pos, const std::string &sprite_name, int layer=LAYER_OBJECTS, const std::string &light_sprite_name="images/objects/lightmap_light/lightmap_light-medium.sprite", const std::string &ice_sprite_name="images/creatures/overlays/iceoverlay/iceoverlay.sprite") | |
BadGuy (const Vector &pos, Direction direction, const std::string &sprite_name, int layer=LAYER_OBJECTS, const std::string &light_sprite_name="images/objects/lightmap_light/lightmap_light-medium.sprite", const std::string &ice_sprite_name="images/creatures/overlays/iceoverlay/iceoverlay.sprite") | |
BadGuy (const ReaderMapping &reader, const std::string &sprite_name, int layer=LAYER_OBJECTS, const std::string &light_sprite_name="images/objects/lightmap_light/lightmap_light-medium.sprite", const std::string &ice_sprite_name="images/creatures/overlays/iceoverlay/iceoverlay.sprite") | |
BadGuy (const ReaderMapping &reader, const std::string &sprite_name, Direction default_direction, int layer=LAYER_OBJECTS, const std::string &light_sprite_name="images/objects/lightmap_light/lightmap_light-medium.sprite", const std::string &ice_sprite_name="images/creatures/overlays/iceoverlay/iceoverlay.sprite") | |
virtual void | draw (DrawingContext &context) override |
Called when the badguy is drawn. More... | |
virtual void | update (float dt_sec) override |
Called each frame. More... | |
virtual std::string | get_class_name () const override |
virtual std::string | get_exposed_class_name () const override |
virtual std::string | get_display_name () const override |
Returns the display name of the object, translated to the user's locale. | |
virtual GameObjectClasses | get_class_types () const override |
List notable classes in inheritance hierarchy of class. More... | |
virtual std::string | get_overlay_size () const |
virtual ObjectSettings | get_settings () override |
virtual void | after_editor_set () override |
virtual HitResponse | collision (GameObject &other, const CollisionHit &hit) override |
Called when a collision with another object occurred. More... | |
virtual void | collision_tile (uint32_t tile_attributes) override |
Called when a collision with tile with special attributes occurred. | |
virtual void | kill_fall () |
Set the badguy to kill/falling state, which makes him falling of the screen (his sprite is turned upside-down) | |
virtual void | run_dead_script () |
Call this, if you use custom kill_fall() or kill_squashed(GameObject& object) | |
virtual bool | can_break () const |
True if this badguy can break bricks or open bonusblocks in his current form. More... | |
Vector | get_start_position () const |
void | set_start_position (const Vector &vec) |
virtual void | grab (MovingObject &object, const Vector &pos, Direction dir) override |
called each frame when the object has been grabbed. More... | |
virtual void | ungrab (MovingObject &object, Direction dir) override |
virtual bool | is_portable () const override |
virtual void | ignite () |
Kills the badguy by igniting it. | |
virtual void | extinguish () |
Called to revert a badguy when is_ignited() returns true. | |
virtual bool | is_flammable () const |
Returns whether to call ignite() when a badguy gets hit by a fire bullet. | |
bool | is_ignited () const |
Returns whether this badguys is currently on fire. | |
virtual void | freeze () |
Called when hit by an ice bullet, and is_freezable() returns true. More... | |
virtual void | unfreeze (bool melt=true) |
Called to unfreeze the badguy. More... | |
virtual bool | is_freezable () const |
virtual bool | is_hurtable () const |
Return true if this badguy can be hurt by tiles with the attribute "hurts". | |
virtual bool | is_snipable () const |
Can enemy be sniped by sliding or swimboosting Tux? Returns false if enemy is spiky or too large. | |
virtual bool | always_active () const |
bool | is_frozen () const |
bool | is_in_water () const |
virtual std::string | get_water_sprite () const |
Get melting particle sprite filename. | |
virtual bool | can_be_affected_by_wind () const |
Returns true if the badguy can currently be affected by wind. | |
virtual void | add_wind_velocity (const Vector &velocity, const Vector &end_speed) |
Adds velocity from wind. | |
Physic & | get_physic () |
![]() | |
MovingSprite (const Vector &pos, const std::string &sprite_name, int layer=LAYER_OBJECTS, CollisionGroup collision_group=COLGROUP_MOVING) | |
MovingSprite (const ReaderMapping &reader, const Vector &pos, int layer=LAYER_OBJECTS, CollisionGroup collision_group=COLGROUP_MOVING) | |
MovingSprite (const ReaderMapping &reader, const std::string &sprite_name, int layer=LAYER_OBJECTS, CollisionGroup collision_group=COLGROUP_MOVING) | |
MovingSprite (const ReaderMapping &reader, int layer=LAYER_OBJECTS, CollisionGroup collision_group=COLGROUP_MOVING) | |
virtual void | on_type_change (int old_type) override |
virtual int | get_layer () const override |
bool | has_found_sprite () const |
const std::string & | get_sprite_name () const |
virtual std::string | get_default_sprite_name () const |
bool | matches_sprite (const std::string &sprite_file) const |
bool | change_sprite (const std::string &new_sprite_name) |
void | spawn_explosion_sprites (int count, const std::string &sprite_path) |
Sprite * | get_sprite () const |
Get various sprite properties. More... | |
std::string | get_action () const |
Returns the name of the current action of the sprite. | |
void | set_action (const std::string &name) |
Sets the current action of the sprite and resizes the bounding box. More... | |
void | set_action_loops (const std::string &name, int loops) |
Sets the current action of the sprite, as well as the number of times it should loop, and resizes the bounding box. More... | |
void | set_action (const std::string &name, int loops) |
Sets the action from an action name, as well as the number of times it should loop. More... | |
void | set_action (const std::string &name, const Direction &dir, int loops=-1) |
Sets the action from an action name and a particular direction in the form of "name-direction", eg. More... | |
void | set_action (const Direction &dir, const std::string &name, int loops=-1) |
Sets the action from an action name and a particular direction in the form of "direction-name", eg. More... | |
void | set_action (const Direction &dir, int loops=-1) |
Sets the action from a string from a particular direction in the form of "direction", e.g. More... | |
void | set_action_centered (const std::string &action, int loops=-1) |
Set new action for sprite and re-center bounding box. More... | |
void | set_action (const std::string &action, int loops, AnchorPoint anchorPoint) |
Set new action for sprite and align bounding boxes at anchorPoint. More... | |
![]() | |
MovingObject (const ReaderMapping &reader) | |
virtual bool | collides (GameObject &, const CollisionHit &) const override |
when 2 objects collided, we will first call the collision functions of both objects that can decide on how to react to the collision. More... | |
virtual void | set_pos (const Vector &pos) |
virtual void | move_to (const Vector &pos) |
virtual void | move (const Vector &dist) |
virtual bool | listener_is_valid () const override |
Vector | get_pos () const |
const Rectf & | get_bbox () const |
const Vector & | get_movement () const |
CollisionGroup | get_group () const |
CollisionObject * | get_collision_object () |
const CollisionObject * | get_collision_object () const |
void | set_parent_dispenser (Dispenser *dispenser) |
Dispenser * | get_parent_dispenser () const |
virtual void | editor_select () override |
The user clicked on the object in the editor and selected it. | |
float | get_x () const |
Returns the object's X coordinate. | |
float | get_y () const |
Returns the object's Y coordinate. | |
void | set_pos (float x, float y) |
Sets the position of the object. More... | |
void | move (float x, float y) |
Moves the object by ""x"" units to the right and ""y"" down, relative to its current position. More... | |
float | get_width () const |
Returns the object's hitbox width. | |
float | get_height () const |
Returns the object's hitbox height. | |
![]() | |
GameObject (const std::string &name) | |
GameObject (const ReaderMapping &reader) | |
virtual void | finish_construction () |
Called after all objects have been added to the Sector and the Sector is fully constructed. More... | |
UID | get_uid () const |
virtual void | save (Writer &writer) |
This function saves the object. More... | |
std::string | save () |
virtual std::vector< std::string > | get_patches () const |
Version checking/updating, patch information. | |
virtual void | update_version () |
int | get_version () const |
Returns the current version of the object. | |
int | get_latest_version () const |
Returns the latest version of the object. | |
bool | is_up_to_date () const |
Checks whether the object's current version is equal to its latest one. | |
virtual bool | is_singleton () const |
If true only a single object of this type is allowed in a given GameObjectManager. | |
virtual bool | has_variable_size () const |
Does this object have variable size (secret area trigger, wind, etc.) | |
virtual bool | is_saveable () const |
Indicates if the object will be saved. More... | |
virtual bool | track_state () const |
Indicates if the object's state should be tracked. More... | |
virtual bool | has_object_manager_priority () const |
Indicates if the object should be added at the beginning of the object list. More... | |
virtual bool | has_settings () const |
Indicates if get_settings() is implemented. More... | |
virtual GameObjectTypes | get_types () const |
Get all types of the object, if available. More... | |
int | get_type () const |
Returns the type index of the object. | |
virtual void | remove_me () |
schedules this object to be removed at the end of the frame | |
bool | is_valid () const |
returns true if the object is not scheduled to be removed yet | |
void | add_remove_listener (ObjectRemoveListener *listener) |
registers a remove listener which will be called if the object gets removed/destroyed | |
void | del_remove_listener (ObjectRemoveListener *listener) |
unregisters a remove listener, so it will no longer be called if the object gets removed/destroyed | |
void | set_name (const std::string &name) |
const std::string & | get_name () const |
Returns the name of the object. | |
virtual const std::string | get_icon_path () const |
virtual void | stop_looping_sounds () |
stops all looping sounds | |
virtual void | play_looping_sounds () |
continues all looping sounds | |
template<typename T > | |
T * | get_component () |
void | add_component (std::unique_ptr< GameObjectComponent > component) |
void | remove_component (GameObjectComponent *component) |
virtual void | save_state () |
Save/check the current state of the object. More... | |
virtual void | check_state () |
virtual void | editor_delete () |
The editor requested the deletion of the object. | |
virtual void | editor_deselect () |
The object got deselected. | |
virtual void | editor_update () |
Called each frame in the editor, used to keep linked objects together (e.g. More... | |
GameObjectManager * | get_parent () const |
![]() | |
virtual MovingObject * | get_owner () const |
virtual bool | is_grabbed () const |
virtual bool | is_hampering () const |
Is the object so heavy/bulky/fragile that Tux can't run while carrying it? | |
Static Public Member Functions | |
static void | register_class (ssq::VM &vm) |
static std::string | class_name () |
static std::string | display_name () |
![]() | |
static void | register_class (ssq::VM &vm) |
static std::string | class_name () |
![]() | |
static void | register_class (ssq::VM &vm) |
static std::string | class_name () |
![]() | |
static void | register_class (ssq::VM &vm) |
Public Attributes | |
bool | m_countMe |
Count this badguy to the statistics? This value should not be changed during runtime. More... | |
Protected Types | |
enum | State { STATE_INIT, STATE_INACTIVE, STATE_ACTIVE, STATE_SQUISHED, STATE_FALLING, STATE_BURNING, STATE_MELTING, STATE_GROUND_MELTING, STATE_INSIDE_MELTING, STATE_GEAR } |
![]() | |
enum | TypeChange { INITIAL = -1 } |
When the type has been changed from the editor. More... | |
Protected Member Functions | |
virtual HitResponse | collision_player (Player &player, const CollisionHit &hit) |
Called when the badguy collided with a player. | |
virtual void | collision_solid (const CollisionHit &hit) override |
Called when the badguy collided with solid ground. | |
virtual void | on_flip (float height) override |
When level is flipped vertically. | |
virtual HitResponse | collision_badguy (BadGuy &other, const CollisionHit &hit) |
Called when the badguy collided with another badguy. | |
virtual bool | collision_squished (GameObject &object) |
Called when the player hit the badguy from above. More... | |
virtual HitResponse | collision_bullet (Bullet &bullet, const CollisionHit &hit) |
Called when the badguy collided with a bullet. | |
virtual void | active_update (float dt_sec) |
called each frame when the badguy is activated. More... | |
virtual void | inactive_update (float dt_sec) |
called each frame when the badguy is not activated. More... | |
virtual void | initialize () |
called immediately before the first call to initialize | |
virtual void | activate () |
called when the badguy has been activated. More... | |
virtual void | deactivate () |
called when the badguy has been deactivated | |
virtual std::vector< Direction > | get_allowed_directions () const |
Returns a vector of directions the badguy can be set to. More... | |
void | kill_squished (GameObject &object) |
void | set_state (State state) |
State | get_state () const |
bool | check_state_timer () |
Player * | get_nearest_player () const |
returns a pointer to the nearest player or 0 if no player is available | |
bool | is_offscreen () const |
initial position of the enemy. More... | |
bool | might_fall (int height=1) const |
Returns true if we might soon fall at least height pixels. More... | |
void | update_on_ground_flag (const CollisionHit &hit) |
Update on_ground_flag judging by solid collision hit . More... | |
bool | on_ground () const |
Returns true if we touched ground in the past frame This only works if update_on_ground_flag() gets called in collision_solid. More... | |
Vector | get_floor_normal () const |
Returns floor normal stored the last time when update_on_ground_flag was called and we touched something solid from above. More... | |
bool | is_active () const |
Returns true if we were in STATE_ACTIVE at the beginning of the last call to update() | |
void | set_colgroup_active (CollisionGroup group) |
changes colgroup_active. More... | |
![]() | |
virtual void | update_hitbox () |
Update hitbox, based on sprite. More... | |
![]() | |
void | set_group (CollisionGroup group) |
![]() | |
void | parse_type (const ReaderMapping &reader) |
Parse object type. More... | |
int | type_id_to_value (const std::string &id) const |
Conversion between type ID and value. More... | |
std::string | type_value_to_id (int value) const |
Protected Attributes | |
Physic | m_physic |
bool | m_is_initialized |
true if initialize() has already been called | |
Vector | m_start_position |
Direction | m_dir |
The direction we currently face in. | |
Direction | m_start_dir |
The direction we initially faced in. | |
bool | m_frozen |
bool | m_ignited |
true if this badguy is currently on fire | |
bool | m_in_water |
std::string | m_dead_script |
< true if the badguy is currently in water More... | |
float | m_melting_time |
SpritePtr | m_lightsprite |
SpritePtr | m_freezesprite |
bool | m_glowing |
bool | m_water_affected |
Timer | m_unfreeze_timer |
![]() | |
std::string | m_sprite_name |
std::string | m_default_sprite_name |
The default sprite for this MovingObject. More... | |
SpritePtr | m_sprite |
int | m_layer |
Sprite's z-position. More... | |
Flip | m_flip |
![]() | |
CollisionObject | m_col |
Dispenser * | m_parent_dispenser |
![]() | |
std::string | m_name |
a name for the gameobject, this is mostly a hint for scripts and for debugging, don't rely on names being set or being unique | |
int | m_type |
Type of the GameObject. More... | |
std::vector< std::unique_ptr< FadeHelper > > | m_fade_helpers |
Fade Helpers are for easing/fading script functions. | |
bool | m_track_undo |
Track the following creation/deletion of this object for undo. More... | |
![]() | |
MovingObject * | m_owner = nullptr |
Base class for moving sprites that can hurt the Player.
A ""BadGuy"" that was given a name can be controlled by scripts. A ""BadGuy"" is instantiated by placing a definition inside a level. It can then be accessed by its name from a script or via ""sector.name"" from the console.
|
protectedvirtual |
|
protectedvirtual |
called each frame when the badguy is activated.
Reimplemented in WalkingBadguy, Dispenser, Owl, WillOWisp, Granito, Ghoul, DiveMine, ViciousIvy, WalkingLeaf, GranitoBig, CorruptedGranito, SCrystallo, Crystallo, MrBomb, RCrystallo, Snail, Dart, MrIceBlock, FishSwimming, GhostTree, GoldBomb, Haywire, Root, RootSapling, TreeWillOWisp, Flame, Kugelblitz, Mole, MoleRock, Toad, FishJumping, BouncingSnowball, DartTrap, Igel, Jumpy, Plant, SSpiky, Totem, Yeti, Zeekling, AngryStone, CorruptedGranitoBig, FlyingSnowBall, LiveFire, Stumpy, Tarantula, CaptainSnowball, FishChasing, Stalactite, and YetiStalactite.
|
inlinevirtual |
True if this badguy can break bricks or open bonusblocks in his current form.
Reimplemented in MrIceBlock, Snail, and Igel.
|
overridevirtual |
Called when a collision with another object occurred.
The default implementation calls collision_player, collision_solid, collision_badguy and collision_squished
Implements CollisionListener.
Reimplemented in Dispenser, Granito, GhostTree, MrBomb, WalkingCandle, and MrIceBlock.
|
protectedvirtual |
Called when the player hit the badguy from above.
You should return true if the badguy was squished, false if squishing wasn't possible
Reimplemented in LeafShot, MrIceBlock, MrBomb, Owl, Snail, Haywire, BouncingSnowball, Ghoul, Tarantula, Stumpy, SCrystallo, Crystallo, ViciousIvy, WalkingLeaf, SmartBall, Totem, SnowBall, CaptainSnowball, KamikazeSnowball, MrTree, FlyingSnowBall, CorruptedGranito, ShortFuse, Snowman, Yeti, RootSapling, Toad, and Mole.
|
overridevirtual |
Called when the badguy is drawn.
The default implementation simply draws the badguy sprite on screen
Reimplemented from MovingSprite.
Reimplemented in LiveFireDormant, LiveFireAsleep, Dispenser, DiveMine, TreeWillOWisp, MrBomb, RCrystallo, Kugelblitz, Stalactite, GhostTree, Haywire, Flame, Root, Boss, CorruptedGranitoBig, Tarantula, Yeti, and YetiStalactite.
|
virtual |
Called when hit by an ice bullet, and is_freezable() returns true.
Reimplemented in WalkingBadguy, Dispenser, LeafShot, DiveMine, MrBomb, MrIceBlock, ShortFuse, Haywire, Owl, Flame, FishSwimming, FishJumping, Jumpy, SSpiky, Tarantula, Zeekling, AngryStone, LiveFire, and WalkingCandle.
|
protectedvirtual |
Returns a vector of directions the badguy can be set to.
Reimplemented in WillOWisp, Flame, Dart, DiveMine, Ghoul, Stalactite, GhostTree, Tarantula, SkyDive, Jumpy, RootSapling, DartTrap, Kugelblitz, Mole, Root, Yeti, FishJumping, AngryStone, YetiStalactite, and FlyingSnowBall.
|
inlineoverridevirtual |
List notable classes in inheritance hierarchy of class.
This makes it possible to efficiently look up all objects deriving from a particular intermediate class
Reimplemented from MovingSprite.
Reimplemented in LiveFireDormant, StickyBadguy, LiveFireAsleep, WillOWisp, Dispenser, LeafShot, MrBomb, WalkingBadguy, Granito, DiveMine, MrIceBlock, Flame, Haywire, Owl, CorruptedGranito, Dart, GranitoBig, MoleRock, SkyDive, Snail, Stalactite, FishJumping, FishSwimming, GhostTree, RootSapling, WalkingCandle, BouncingSnowball, Jumpy, Kugelblitz, AngryStone, Igel, Root, Tarantula, Zeekling, LiveFire, Mole, Stumpy, Toad, Yeti, SSpiky, Totem, GoldBomb, CorruptedGranitoBig, DartTrap, FishChasing, KamikazeSnowball, Plant, YetiStalactite, Crystallo, FlyingSnowBall, RCrystallo, ViciousIvy, WalkingLeaf, CaptainSnowball, GranitoGiant, MrTree, SmartBall, Boss, Ghoul, SCrystallo, Spiky, FishHarmless, ShortFuse, SmartBlock, SnowBall, Snowman, and TreeWillOWisp.
|
protected |
Returns floor normal stored the last time when update_on_ground_flag was called and we touched something solid from above.
|
overridevirtual |
called each frame when the object has been grabbed.
Reimplemented from Portable.
Reimplemented in Snail, MrBomb, MrIceBlock, and SkyDive.
|
protectedvirtual |
called each frame when the badguy is not activated.
|
protected |
initial position of the enemy.
Also the position where enemy respawns when after being deactivated.
|
protected |
Returns true if we might soon fall at least height
pixels.
Minimum value for height is 1 pixel
|
protected |
Returns true if we touched ground in the past frame This only works if update_on_ground_flag() gets called in collision_solid.
|
protected |
changes colgroup_active.
Also calls set_group when badguy is in STATE_ACTIVE
|
virtual |
Called to unfreeze the badguy.
Reimplemented in WalkingBadguy, Dispenser, LeafShot, DiveMine, MrIceBlock, Igel, CorruptedGranito, Owl, FishSwimming, BouncingSnowball, FishJumping, Toad, Tarantula, Zeekling, AngryStone, and WalkingCandle.
|
overridevirtual |
Called each frame.
The default implementation checks badguy state and calls active_update and inactive_update
if(countMe) { get badguy name from sprite_name ignoring path and extension std::string badguy = sprite_name.substr(0, sprite_name.length() - 7); int path_chars = badguy.rfind("/",badguy.length()); badguy = badguy.substr(path_chars + 1, badguy.length() - path_chars); log warning since badguys_killed can no longer reach total_badguys std::string current_level = "[" + Sector::get().get_level()->filename + "] "; log_warning << current_level << "Counted badguy " << badguy << " starting at " << start_position << " has left the sector" <<std::endl; }
Reimplemented from MovingSprite.
Reimplemented in FishSwimming, and YetiStalactite.
|
protected |
Update on_ground_flag judging by solid collision hit
.
This gets called from the base implementation of collision_solid, so call this when overriding collision_solid's default behaviour.
bool BadGuy::m_countMe |
Count this badguy to the statistics? This value should not be changed during runtime.
|
protected |
< true if the badguy is currently in water
script to execute when badguy is killed