Best approach for an opaque overlay?

Hi all!

I’m creating my first Java game, and I’m at a crossroads with the HUD, and I wanted your advice…

This is an application, not applet.

I’ve extended Frame to display the 1500x1000 map, which is scrollable and zoomable. On top of this I wish to place a mini-map (like Empire Earth).

In doing so, I’d like to make it abstract enough to use for the other overlays of the HUD, such as player stats.

I don’t want it to have a frame, although I would like for it to have the ability to be dragged (accept events).

Do you guys have any helpful advice for me?

Thanks!

Zanth

Um yeah. You are going to need to build it into your render loop. As far as Java is concerned its just part of the image in the frame. You catch mouse drag across the whole frame and decide for yourself if its inside the HUD or not.

Thanks for responding…

OK, that’s what I was expecting, regarding the event handling…

…and that leads me to the conclusion there isn’t a good way to use a component to display the mini-map…I guess I’ll just have to draw it right over the main image.

Which is less than convenient.

The good news is, I won’t have to write my own component…

Now, to learn about render loops…

-Joseph

This is a very simple game, with no animation (it is based on a board game).

I’m guessing my current ‘render loop’ is just my overloaded paint() method…Is this correct? Is this going to suffice for such a project, or am I going to have to get more fancy?

I’m still watching this thread, so any extraneous advice would be greatly appreciated :wink:

-Zanth

You probably should have an active render loop instead of an overloaded paint() method.

public void render()
{
...put all of your paint code here
}

 

then just call it from your game loop

while (!done)
{
     render()
     gameLogic()
  try
  {
     sleep(fprs)
   }
}

If there is no animation then you dont really need a fast precisely timed game loop. To do your desired drag effect, you can do the following:

render()
{
 .....  
Minimap.draw(x,y);
}

then during your game logic you check if the mouse was clicked in the in the minimap area by cheking if the MouseClicked() values are within the Minimap’s x + width, y + length. The as the mouse is dragged you update the Minimap’s x y coords according to the mouse’s coords (you would ofcourse have to account for the position of the mouse vs the x,y edge of the minimap) Let me know if you wish me to clear anything up.