2009-10-10, 10:31 AM
Well the weather had knocked out the internet/tv for tonight, and I had a bug to do something in the middle of the night, so I ended up redirecting SOM's WindowProc() procedure. Unless SOM uses some fancy DirectInput crap that bypasses the WindowProc, this is how many messages including keyboard and mouse events are interpreted by a window. So with this technique we should be able to add extra keys to SOM, like for starters I'll probably use up the remaining F (function) keys for stuff, but there is really no limit. We could also draw GDI type stuff on top of SOM and use the mouse as well. Ultimately all of this will be configurable in an ini file with the same name as the proxy dll.
I think I have an idea of how SOM draws it's text to the screen. I think it uses yet another interface after directdraw, and direct3d, actually that last interface is called directx I think... though afaik directx also includes all the prior crap including directinput/sound/play/etc. I have at least one major reason to hook the text drawing routines. It really bothers me that items in your inventory there are only one of say x1 instead of just nothing. I think it's kinda tacky in general, but it seems dumb for unique items and even pseudo (action) items like I like to use to extend the basic command set.
^In general there can be a lot you can change up with the text, considering all printed text tends to include a printf like format string (how I added the percent sign after the HP and MP numbers in my status screen and other things) ...but there are limitations which could be routed around by catching the text as it goes to DX and modifying it on the fly. Still situations where the text is identical but you only want to change one case might be tricky or even impossible.
I think I have an idea of how SOM draws it's text to the screen. I think it uses yet another interface after directdraw, and direct3d, actually that last interface is called directx I think... though afaik directx also includes all the prior crap including directinput/sound/play/etc. I have at least one major reason to hook the text drawing routines. It really bothers me that items in your inventory there are only one of say x1 instead of just nothing. I think it's kinda tacky in general, but it seems dumb for unique items and even pseudo (action) items like I like to use to extend the basic command set.
^In general there can be a lot you can change up with the text, considering all printed text tends to include a printf like format string (how I added the percent sign after the HP and MP numbers in my status screen and other things) ...but there are limitations which could be routed around by catching the text as it goes to DX and modifying it on the fly. Still situations where the text is identical but you only want to change one case might be tricky or even impossible.