Sign in to follow this  
barodamike

Drawing enemies based on position

Recommended Posts

barodamike    127
Hi all, I'm relatively new to game programming and I'm sure there's a nice and easy way to do this so I thought I'd post here and see if I can get a concise reply before I make changes myself. The issue is I have 3 different types of enemies that I render to the screen. Unfortunately the way my code works is each type of enemy object gets stored in its own list. When it's time to draw the enemies to the screen they get rendered in the order of what kind of enemy they are because I simply draw one enemy list, draw the next enemy list and then draw the 3rd enemy list. This is not good because the 3rd enemy types are always "on top of" the first enemy types. I know there must be a way to define and interface or something where I can store the 3 different objects in one big list and sort them neatly depending on how close they are to the screen and update all their positions and so on. I tried putting them all in a list of their parent class but then I don't have access to their update methods. Help appreciated!

Share this post


Link to post
Share on other sites
InferiorOlive    1065

Do the update methods override the parent class's method, or does the parent class not have that method? If the parent doesn't have an update method, why not have all of your enemies inherit from an interface that has an update method, and then have a list of that interface (in which you can sort the enemies by render-order)?

 

I'm not sure what language you're using, so I can't know that these ideas are right for you, but that's what I'd do in your situation.

Share this post


Link to post
Share on other sites
EWClay    659
A separate list that you can sort by render order is the usual way.

But sorting by distance is unusual, unless the objects are transparent. For solid objects you can use a Z buffer so the order doesn't matter.

Share this post


Link to post
Share on other sites
BeerNutts    4400
I think you misunderstand how inheritence works. You can inherit an update and draw function from a parent, like this.

class TEnemy
{
public:
  virtual void Update();
  virtual void Draw ();
}

class TGoblin : public TEnemy
{
public:
  void Update ();
... //other functions or members
}

// Create a list of TEnemy, and when update is called, it will update the specifix enemy type
std::vector <TEnemy> EnemyList;

If I am misunderstanding what you are doing, tb en post some code for us.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this