Alright, so I figured it out!
Beta 4 is up, and it's got some big changes:
- When the modules are created, the project tree is now updated right away (usually this will be the first time you save the game with the plugin).
- Despite the comment which I left in-tact (d'oh!), changes to the InterfacerInteractions.asc script are now not just read back, but are read back immediately!
- Changes to the plugin data are also reflected immediately in the script.*
- Key codes are now reliant on the KeyCodeAction property, as it fits better with the way that GUI Buttons and the mouse buttons are handled.
- Added list to set the GUI button actions. I want (still need) to implement a better way of handling the ListBox and TextBox controls for saving and loading games.
- Cursor modes and labels will populate for where I will be adding a way to set cursor mode text and the status label. This is not functional (yet).
- I almost forgot the totally awesome icon provided by Secret Fawful! Thank you sir!
- The entire thing is now OPEN SOURCE. I'll worry about proper licensing later, for now just don't go around trying to claim that you created the module or plugin and you're pretty free to do whatever the heck else you want with it (including derivative works of the source, so long as credit is given where due).
The AGS project files are inside of the Visual C# 2008 Express project folder. This allows the VC# project to automatically update the plugin's internal copies of the module script files, and I can also automatically copy the SCM to the output directory, saving me a few seconds!
This means that most
of the module data can be set up using the plugin. In upcoming versions of the module+plugin, I plan to include:
- Making sure that the script editor for InterfacerInteractions.asc will reflect changes to the plugin when it's opened. Currently it does this if the script is already open for editing, but I just need to make sure this is kept in-sync.
- Better dialog for setting the controls for saving and loading games. This will also make sure the controls are kept in-sync, whereas presently you can assign this multiple times, but only the last values are used. I will also need to make sure this has a way to set the list box format and max items.
- Add dialog for setting cursor mode text. I could actually default this to the cursor name as set in the editor, which would probably make sense for most use cases.
- Add dialog for setting the status line label, position, format, etc. As a matter of fact, that makes me realize that I don't have a separate format string available for using inventory items, which would be nice to have.
- A way to clear the plugin data entirely.
- A way to disable/enable the plugin and module. Just because you're using it in one project, doesn't mean you need or want it in every project.
- Various other miscellany, such as a key code action for quick save could be possible.
- A way to export the existing plugin data into a function in the InterfacerModes module. This would be a step in making it possible to design multiple interfaces for your game by using the plugin, whereas presently you have to either manually copy the scripts over, or write the script yourself.
You tell me! What do you want to see in the module or plugin? Feedback can only help make this thing better.
Also, I'd like to release an updated demo at some point to show off the features a bit more. Also, at some point I'll need to get around to actually testing that the inventory handling (which has been in-place since Beta 1) actually works. In fact, I remember mentioning to Fawful at one point that users might want/need the ability to set a different mouse button action for when the mouse is over an inventory item. For example, unless you actually specify in the "Interact with inventory" handler that the ActiveInventory should be set, the module doesn't have a way to do that at all. That's probably a reasonably good shortcoming.
In addition to the above, I'd also like to extend the InterfacerModes module as a sort of prepackaged set of example code, if only more for reference than actually being used (due to having to reference specific controls and such).
For now, enjoy Beta 4, and keep sending me feedback on this. I'm starting to worry that I'm putting all this time into something no one is going to find genuinely useful, but I'd like to think this is more than some gimmicky thing. *Note:
If the script isn't open for editing, this may actually cause things to get out-of-sync. To be honest, I'm not sure why I didn't test that more.