[Scummvm-devel] Possible new backend features

Max Horn max at quendi.de
Tue Apr 4 17:45:24 CEST 2006


I want to get back to another point in Neil's post. This concerns in  
particular also the WinCE and Symbian ports!

BTW, Neil, are you on scummvm-devel? I am not 100% sure which is why  
I CC you.


Am 01.04.2006 um 19:47 schrieb Neil Millstone:

[...]

> I've also used ConfMan.get("gameid") to find out the id of the  
> running game, removing my other hack to the main source tree.

Unfortunately, ConfMan.get("gameid")  will not always work -- namely  
when using the gameid as targetname, the gameid entry might not be  
set :-/.

The WinCE and Symbian ports also use the gameid (until recently they  
actually incorrectly used the target name), but they get it from the  
GameDetector, which requires them to do various nasty hacks related  
to main().

This clearly is bad!

> I look the string up in a table to set my controls to one of four  
> modes that I have internally.  I'm  not sure if this could be done  
> a more generic way that would be useful to other ports, but at  
> least it doesn't require a hack in the ScummVM source.  The control  
> changes involve how the port handles the touch screen, so it's not  
> really applicable to other ports (except perhaps Symbian or other  
> ports that have touch screens, but I imaging they want to have  
> their own way of solving these issues).

Well, I certainly would prefer a generic solution... i.e. I prefer  
something like our "feature flags" that specifically describe  
requirements/features, over hard coding a list of gameids. In  
particular, it makes it easier to add more engines, w/o having to  
update all the backends each time.

Still, we might need some time to come up with a sensible proposal  
here (and it'll require the affected porters to tell us what they  
need, precisely). Hence, for now I think we should use a pragmatic  
soluion as a temporary remedy:

We can add a OSystem::setGameID(String) method, defaulting to do  
nothing. We then call that in the appropriate spot in main.cpp,  
namely right before the engine launches. We'll also call it with an  
empty string after the engine quits, which should tell the backend to  
"reset" the mapping (will be useful once we activate "return-to- 
launcher-after-quit").

I consider this method a temporary measure and hope to eventually get  
rid of it one day, but it would allow us to do various cleanups *now*.

What do you think?


Cheers,
Max





More information about the Scummvm-devel mailing list