Skip to content

Backwards compatibility: Determine object type from sprite filename if sprite not found (WIP) #3184

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 1 commit into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions src/badguy/bouncing_snowball.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,18 @@ BouncingSnowball::get_types() const
};
}

bool
BouncingSnowball::get_type_from_sprite(const std::string& sprite_name, std::string& type) const
{
if(sprite_name.find("images/creatures/fatbat/fatbat.sprite") != std::string::npos)
{
type = "fatbat";
return true;
}

return false;
}

std::string
BouncingSnowball::get_default_sprite_name() const
{
Expand Down
1 change: 1 addition & 0 deletions src/badguy/bouncing_snowball.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ class BouncingSnowball final : public BadGuy
virtual GameObjectClasses get_class_types() const override { return BadGuy::get_class_types().add(typeid(BouncingSnowball)); }

virtual GameObjectTypes get_types() const override;
virtual bool get_type_from_sprite(const std::string& sprite_name, std::string& type) const override;
virtual std::string get_default_sprite_name() const override;

virtual void after_editor_set() override;
Expand Down
18 changes: 18 additions & 0 deletions src/badguy/crusher.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,24 @@ Crusher::get_types() const
};
}

bool
Crusher::get_type_from_sprite(const std::string& sprite_name, std::string& type) const
{
if (sprite_name.find("krosh") != std::string::npos)
{
type = "ice-krosh";
return true;
}
if ((sprite_name.find("rock_crusher") != std::string::npos) ||
(sprite_name.find("moss_crusher") != std::string::npos))
{
type = "rock-crush";
return true;
}

return false;
}

std::string
Crusher::get_default_sprite_name() const
{
Expand Down
1 change: 1 addition & 0 deletions src/badguy/crusher.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ class Crusher final : public MovingSprite

virtual ObjectSettings get_settings() override;
GameObjectTypes get_types() const override;
virtual bool get_type_from_sprite(const std::string& sprite_name, std::string& type) const override;
std::string get_default_sprite_name() const override;

virtual void on_flip(float height) override;
Expand Down
12 changes: 12 additions & 0 deletions src/badguy/darttrap.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,18 @@ DartTrap::get_types() const
};
}

bool
DartTrap::get_type_from_sprite(const std::string& sprite_name, std::string& type) const
{
if (sprite_name.find("darttrap.sprite") != std::string::npos)
{
type = "skull";
return true;
}

return false;
}

std::string
DartTrap::get_default_sprite_name() const
{
Expand Down
1 change: 1 addition & 0 deletions src/badguy/darttrap.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ class DartTrap final : public StickyBadguy

virtual ObjectSettings get_settings() override;
virtual GameObjectTypes get_types() const override;
virtual bool get_type_from_sprite(const std::string& sprite_name, std::string& type) const override;
virtual std::string get_default_sprite_name() const override;
virtual void kill_fall() override;

Expand Down
18 changes: 18 additions & 0 deletions src/badguy/flame.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,24 @@ Flame::get_default_sprite_name() const
}
}

bool
Flame::get_type_from_sprite(const std::string& sprite_name, std::string& type) const
{
if (sprite_name == "images/creatures/flame/ghostflame.sprite")
{
type = "ghost";
return true;
}

if (sprite_name == "images/creatures/flame/iceflame.sprite")
{
type = "ice";
return true;
}

return false;
}

ObjectSettings
Flame::get_settings()
{
Expand Down
1 change: 1 addition & 0 deletions src/badguy/flame.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ class Flame final : public BadGuy
static std::string display_name() { return _("Flame"); }
virtual std::string get_display_name() const override { return display_name(); }
virtual GameObjectClasses get_class_types() const override { return BadGuy::get_class_types().add(typeid(Flame)); }
virtual bool get_type_from_sprite(const std::string& sprite_name, std::string& type) const override;

virtual void stop_looping_sounds() override;
virtual void play_looping_sounds() override;
Expand Down
12 changes: 12 additions & 0 deletions src/badguy/jumpy.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,18 @@ Jumpy::get_default_sprite_name() const
}
}

bool
Jumpy::get_type_from_sprite(const std::string& sprite_name, std::string& type) const
{
if (sprite_name.find("wooden.sprite") != std::string::npos)
{
type = "wooden";
return true;
}

return false;
}

void
Jumpy::collision_solid(const CollisionHit& chit)
{
Expand Down
1 change: 1 addition & 0 deletions src/badguy/jumpy.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ class Jumpy final : public BadGuy

GameObjectTypes get_types() const override;
std::string get_default_sprite_name() const override;
virtual bool get_type_from_sprite(const std::string& sprite_name, std::string& type) const override;

protected:
virtual std::vector<Direction> get_allowed_directions() const override;
Expand Down
12 changes: 12 additions & 0 deletions src/badguy/mriceblock.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,18 @@ MrIceBlock::get_default_sprite_name() const
}
}

bool
MrIceBlock::get_type_from_sprite(const std::string& sprite_name, std::string& type) const
{
if (sprite_name == "images/creatures/laptop/laptop.sprite")
{
type = "laptop";
return true;
}

return false;
}

bool
MrIceBlock::is_freezable() const
{
Expand Down
1 change: 1 addition & 0 deletions src/badguy/mriceblock.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ class MrIceBlock : public WalkingBadguy

virtual GameObjectTypes get_types() const override;
std::string get_default_sprite_name() const override;
bool get_type_from_sprite(const std::string& sprite_name, std::string& type) const override;

bool can_break();

Expand Down
12 changes: 12 additions & 0 deletions src/badguy/smartball.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,18 @@ SmartBall::get_default_sprite_name() const
}
}

bool
SmartBall::get_type_from_sprite(const std::string& sprite_name, std::string& type) const
{
if (sprite_name.find("kirby.sprite") != std::string::npos)
{
type = "pumpkin";
return true;
}

return false;
}

bool
SmartBall::is_freezable() const
{
Expand Down
1 change: 1 addition & 0 deletions src/badguy/smartball.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ class SmartBall final : public WalkingBadguy

GameObjectTypes get_types() const override;
std::string get_default_sprite_name() const override;
virtual bool get_type_from_sprite(const std::string& sprite_name, std::string& type) const override;

protected:
virtual bool collision_squished(MovingObject& object) override;
Expand Down
18 changes: 18 additions & 0 deletions src/badguy/snowball.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,24 @@ SnowBall::get_default_sprite_name() const
}
}

bool
SnowBall::get_type_from_sprite(const std::string& sprite_name, std::string& type) const
{
if (sprite_name.find("kirby.sprite") != std::string::npos)
{
type = "bumpkin";
return true;
}

if (sprite_name.find("bsod.sprite") != std::string::npos)
{
type = "bsod";
return true;
}

return false;
}

bool
SnowBall::is_freezable() const
{
Expand Down
1 change: 1 addition & 0 deletions src/badguy/snowball.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ class SnowBall final : public WalkingBadguy

GameObjectTypes get_types() const override;
std::string get_default_sprite_name() const override;
bool get_type_from_sprite(const std::string& sprite_name, std::string& type) const override;

protected:
virtual bool collision_squished(MovingObject& object) override;
Expand Down
12 changes: 12 additions & 0 deletions src/badguy/stalactite.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,18 @@ Stalactite::get_default_sprite_name() const
}
}

bool
Stalactite::get_type_from_sprite(const std::string& sprite_name, std::string& type) const
{
if (sprite_name.find("forest_stalactite") != std::string::npos)
{
type = "rock";
return true;
}

return false;
}

void
Stalactite::kill_fall()
{
Expand Down
1 change: 1 addition & 0 deletions src/badguy/stalactite.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ class Stalactite : public StickyBadguy
static std::string display_name() { return _("Stalactite"); }
virtual std::string get_display_name() const override { return display_name(); }
virtual GameObjectClasses get_class_types() const override { return StickyBadguy::get_class_types().add(typeid(Stalactite)); }
virtual bool get_type_from_sprite(const std::string& sprite_name, std::string& type) const override;

virtual ObjectSettings get_settings() override;

Expand Down
24 changes: 24 additions & 0 deletions src/object/bonus_block.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -192,6 +192,30 @@ BonusBlock::get_default_sprite_name() const
}
}

bool
BonusBlock::get_type_from_sprite(const std::string& sprite_name, std::string& type) const
{
if (sprite_name.find("orangeblock") != std::string::npos)
{
type = "orange";
return true;
}

if (sprite_name.find("purpleblock") != std::string::npos)
{
type = "purple";
return true;
}

if (sprite_name.find("retroblock") != std::string::npos)
{
type = "retro";
return true;
}

return false;
}

void
BonusBlock::on_type_change(int old_type)
{
Expand Down
1 change: 1 addition & 0 deletions src/object/bonus_block.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ class BonusBlock final : public Block

virtual ObjectSettings get_settings() override;
GameObjectTypes get_types() const override;
virtual bool get_type_from_sprite(const std::string& sprite_name, std::string& type) const override;
std::string get_default_sprite_name() const override;

int get_coins_worth() const override;
Expand Down
12 changes: 12 additions & 0 deletions src/object/brick.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,18 @@ Brick::get_default_sprite_name() const
}
}

bool
Brick::get_type_from_sprite(const std::string& sprite_name, std::string& type) const
{
if (sprite_name.find("retro_brick") != std::string::npos)
{
type = "retro";
return true;
}

return false;
}

void
Brick::hit(Player& player)
{
Expand Down
1 change: 1 addition & 0 deletions src/object/brick.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ class Brick : public Block
virtual GameObjectClasses get_class_types() const override { return Block::get_class_types().add(typeid(Brick)); }

GameObjectTypes get_types() const override;
bool get_type_from_sprite(const std::string& sprite_name, std::string& type) const override;
std::string get_default_sprite_name() const override;

void try_break(Player* player, bool slider = false);
Expand Down
12 changes: 12 additions & 0 deletions src/object/coin.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,18 @@ Coin::get_default_sprite_name() const
}
}

bool
Coin::get_type_from_sprite(const std::string& sprite_name, std::string& type) const
{
if (sprite_name.find("retro_coin") != std::string::npos)
{
type = "retro";
return true;
}

return false;
}

void
Coin::finish_construction()
{
Expand Down
1 change: 1 addition & 0 deletions src/object/coin.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ class Coin : public MovingSprite,

virtual ObjectSettings get_settings() override;
GameObjectTypes get_types() const override;
bool get_type_from_sprite(const std::string& sprite_name, std::string& type) const override;
std::string get_default_sprite_name() const override;

virtual void after_editor_set() override;
Expand Down
Loading
Loading