|
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") | |
| 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") | |
| 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") | |
| 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 () const override |
| virtual std::string | get_display_name () const override |
| 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 | ignite () |
| Called when hit by a fire bullet, and is_flammable() returns true. | |
| 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 () |
| 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". | |
| bool | is_frozen () const |
| bool | is_in_water () const |
| virtual std::string | get_water_sprite () const |
| Get melting particle sprite filename. | |
| void | set_parent_dispenser (Dispenser *parent) |
| Sets the dispenser that spawns this badguy. More... | |
| Dispenser * | get_parent_dispenser () const |
| Returns the dispenser this badguys was spawned by. | |
Public Member Functions inherited from MovingSprite | |
| 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 std::string | get_default_sprite_name () const |
| std::string | get_sprite_name () const |
| void | change_sprite (const std::string &new_sprite_name) |
| void | spawn_explosion_sprites (int count, const std::string &sprite_path) |
Public Member Functions inherited from MovingObject | |
| MovingObject (const ReaderMapping &reader) | |
| virtual bool | collides (GameObject &, const CollisionHit &) const override |
| when 2 objects collided, we will first call the pre_collision_check 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 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 |
| virtual void | editor_select () override |
| The user clicked on the object in the editor and selected it. | |
Public Member Functions inherited from GameObject | |
| 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 |
| void | save (Writer &writer) |
| This function saves the object. More... | |
| 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 | has_settings () const |
| Indicates if get_settings() is implemented. More... | |
| bool | is_valid () const |
| returns true if the object is not scheduled to be removed yet | |
| void | remove_me () |
| schedules this object to be removed at the end of the frame | |
| 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 |
| 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 | 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... | |
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 } |
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 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 | |
| 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... | |
| Direction | str2dir (const std::string &dir_str) const |
| Get Direction from String. 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... | |
Protected Member Functions inherited from MovingSprite | |
| void | set_action (const std::string &action, int loops) |
| set new action for sprite and resize bounding box. More... | |
| void | set_action_centered (const std::string &action, int loops) |
| 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... | |
Protected Member Functions inherited from MovingObject | |
| void | set_group (CollisionGroup group) |
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 |
| bool | m_glowing |
Protected Attributes inherited from MovingSprite | |
| std::string | m_sprite_name |
| std::string | m_default_sprite_name |
| The default sprite for this MovingObject. | |
| SpritePtr | m_sprite |
| int | m_layer |
| Sprite's z-position. More... | |
Protected Attributes inherited from MovingObject | |
| CollisionObject | m_col |
Protected Attributes inherited from GameObject | |
| 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 | |
Base class for moving sprites that can hurt the Player.
|
protectedvirtual |
called when the badguy has been activated.
(As a side effect the dir variable might have been changed so that it faces towards the player.
Reimplemented in Dispenser, WillOWisp, GhostTree, Dart, Mole, TreeWillOWisp, DartTrap, Flame, and FlyingSnowBall.
|
protectedvirtual |
called each frame when the badguy is activated.
Reimplemented in WalkingBadguy, Owl, Dispenser, WillOWisp, Bomb, Snail, GoldBomb, Dart, GhostTree, MrIceBlock, MrBomb, Fish, Haywire, Crystallo, Flame, Kugelblitz, Mole, MoleRock, SkullyHop, Toad, TreeWillOWisp, DartTrap, Igel, Jumpy, Plant, SSpiky, Totem, Yeti, Zeekling, AngryStone, FlyingSnowBall, LiveFire, Root, Stumpy, SpiderMite, CaptainSnowball, Iceflame, Stalactite, and YetiStalactite.
|
inlinevirtual |
True if this badguy can break bricks or open bonusblocks in his current form.
Reimplemented in MrIceBlock, and Snail.
|
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, GhostTree, GoldBomb, WalkingCandle, MrBomb, 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 Dispenser, MrIceBlock, GoldBomb, LeafShot, Snail, Haywire, MrBomb, Owl, SpiderMite, Stumpy, Totem, BouncingSnowball, CaptainSnowball, Crystallo, FlyingSnowBall, KamikazeSnowball, ShortFuse, SmartBall, PoisonIvy, Snowman, WalkingLeaf, MrTree, SnowBall, Yeti, SkullyHop, 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, TreeWillOWisp, Kugelblitz, GhostTree, Stalactite, Root, Yeti, YetiStalactite, and Fish.
|
virtual |
Called when hit by an ice bullet, and is_freezable() returns true.
Reimplemented in WalkingBadguy, Dispenser, GoldBomb, Haywire, Fish, Flame, Owl, Jumpy, SSpiky, Zeekling, LiveFire, SpiderMite, and WalkingCandle.
|
protected |
Returns floor normal stored the last time when update_on_ground_flag was called and we touched something solid from above.
|
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
|
inline |
Sets the dispenser that spawns this badguy.
| parent | The dispenser |
|
protected |
Get Direction from String.
|
virtual |
Called to unfreeze the badguy.
Reimplemented in WalkingBadguy, Dispenser, Fish, Owl, SkullyHop, Toad, Zeekling, SpiderMite, 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 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
1.8.12