Jump to content

  • Log In with Google      Sign In   
  • Create Account


Drawing enemies based on position


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
3 replies to this topic

#1 barodamike   Members   -  Reputation: 127

Like
0Likes
Like

Posted 25 January 2013 - 11:48 PM

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!

Sponsor:

#2 NoAdmiral   Members   -  Reputation: 511

Like
0Likes
Like

Posted 26 January 2013 - 02:29 AM

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.


Inspiration from my tea:

"Never wish life were easier. Wish that you were better" -Jim Rohn

 

herwrathmustbedragons.tumblr.com


#3 EWClay   Members   -  Reputation: 659

Like
0Likes
Like

Posted 26 January 2013 - 02:42 AM

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.

#4 BeerNutts   Crossbones+   -  Reputation: 2763

Like
0Likes
Like

Posted 27 January 2013 - 01:36 PM

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.
My Gamedev Journal: 2D Game Making, the Easy Way

---(Old Blog, still has good info): 2dGameMaking
-----
"No one ever posts on that message board; it's too crowded." - Yoga Berra (sorta)




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS