Sign in to follow this  

SDL selection based on color

This topic is 2060 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

[b]Hello GameDever![/b]

I am trying to create a game, in which you play a country with a number of provinces, but for this game to work, I need to have a way to select these provinces. I thought of making every province easy to identify by using unique colors (from a devers point of view), but of course, I do only want to use these colors internally, and they shouldn't be rendered.

I thought of checking the pixel you are currently clicking on, and looking for the province with the color of the pixel in a table, containing pointers to all of the provinces. This seems fairly straight forward, but how do I get the unique color of the province, when I am rendering it with a different color?

This problem [i]will[/i] be easier to understand for people who have played some of Paradox Interactives games before, because they also use a similar layout (I think).

Also, I will be using SDL for this.

Oliver

Share this post


Link to post
Share on other sites
Have a generic country object that either has a name or id you can use to idenify each country with. when a player clicks on the object check to see if that point is contained within the shape, if it is then select that country. Your method sounds a bit messy to say the least, I would really rethink how you're approaching the problem.

Share this post


Link to post
Share on other sites
[quote name='OliverNordbjerg' timestamp='1335101323' post='4933765']
[b]Hello GameDever![/b]

I am trying to create a game, in which you play a country with a number of provinces, but for this game to work, I need to have a way to select these provinces. I thought of making every province easy to identify by using unique colors (from a devers point of view), but of course, I do only want to use these colors internally, and they shouldn't be rendered.

I thought of checking the pixel you are currently clicking on, and looking for the province with the color of the pixel in a table, containing pointers to all of the provinces. This seems fairly straight forward, but how do I get the unique color of the province, when I am rendering it with a different color?

This problem [i]will[/i] be easier to understand for people who have played some of Paradox Interactives games before, because they also use a similar layout (I think).

Also, I will be using SDL for this.

Oliver
[/quote]

Create a second (software) surface (hardware surfaces are slow to read from) with the colorkeyed version of the map and read the colors from that surface (don't render it).

You can probably use a lower resolution for this map aswell to save memory (just remember to properly scale down the mouse position aswell before reading the keyed map though)

Edit:
Here is a link with info on how to access surface pixels with SDL: [url="http://www.libsdl.org/cgi/docwiki.cgi/Pixel_Access"]http://www.libsdl.or...gi/Pixel_Access[/url]

Share this post


Link to post
Share on other sites
[quote name='GameGeazer' timestamp='1335148657' post='4933935']
Have a generic country object that either has a name or id you can use to idenify each country with. when a player clicks on the object check to see if that point is contained within the shape, if it is then select that country. Your method sounds a bit messy to say the least, I would really rethink how you're approaching the problem.
[/quote]

I thought of your approach, but I am worried that it will eat my CPU, and I am going to need that for other stuff.


[quote name='SimonForsman' timestamp='1335153149' post='4933943']
Create a second (software) surface (hardware surfaces are slow to read from) with the colorkeyed version of the map and read the colors from that surface (don't render it).

You can probably use a lower resolution for this map aswell to save memory (just remember to properly scale down the mouse position aswell before reading the keyed map though)

Edit:
Here is a link with info on how to access surface pixels with SDL: [url="http://www.libsdl.org/cgi/docwiki.cgi/Pixel_Access"]http://www.libsdl.or...gi/Pixel_Access[/url]
[/quote]

Thank you, I will use this approach.

Share this post


Link to post
Share on other sites

This topic is 2060 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

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