Let me add my two cents into this matter as someone who see the bigger picture of the 'mod installation' state. Some time ago I've discovered "Mod-configuration system" topic and because recent post at G3 forums about "mod database" I was going to rise READLN issue again. It's the main blocker of any kind of progress in terms of "automatic mod installation" - please see
http://forums.pocketplane.net/index.php/topic,29449.msg337315.html - if the mod contains READLN actions, it's impossible for the
"current state of the weidu" to get values and questions from components which require user interaction. It' is also not possible to create automatic solution for uploading required mod data into "mod database" - modders would have to manually fill some data for every component which require READLN. And when they update weidu code (add one more combination for the user typed value) and forgot to update ini, mod installation will fail.
My proposition is to add internal weidu framework for new mods (because I think that you cannot simply remove/replace READLN) : you have to define component values and answers in a 'standard' way, which could then output full data about component and choices. Most of the mods use 2-level deep so there shouldn't be a problem to create such framework. Even if the mods use n-subcomponetns, it sohuld nt be a problem for creating n-subcomponents tree.
Example existing code:
OUTER_SPRINT ~ajantimer~ ~placeholder_value~
OUTER_WHILE (!(IS_AN_INT ~ajantimer~) OR (~ajantimer~ > 0x5) OR (~ajantimer~ < 0x1)) BEGIN
PRINT @1108
ACTION_READLN ~ajantimer~
END
ACTION_IF ("ajantimer" = 1) THEN BEGIN
APPEND ~gtimes.ids~ ~3600 AJROM_TIMER~
PRINT @1109
END
ACTION_IF ("ajantimer" = 2) THEN BEGIN
APPEND ~gtimes.ids~ ~2700 AJROM_TIMER~
PRINT @1110
END
ACTION_IF ("ajantimer" = 3) THEN BEGIN
APPEND ~gtimes.ids~ ~1800 AJROM_TIMER~
PRINT @1111
END
ACTION_IF ("ajantimer" = 4) THEN BEGIN
APPEND ~gtimes.ids~ ~900 AJROM_TIMER~
PRINT @1112
END
ACTION_IF ("ajantimer" = 5) THEN BEGIN
APPEND ~gtimes.ids~ ~5400 AJROM_TIMER~
PRINT @1113
END
should be coded by 'framework' something like this:
Component-<componentNumber>-Main "variableName" "Name of the component"
variableName-Subcomponent-1 "valueForSubcomponent1" "descriptionForSubcomponent1" > { execute specific code }
variableName-Subcomponent-2 "valueForSubcomponent2" "descriptionForSubcomponent2" > { execute specific code }
variableName-Subcomponent-3 "valueForSubcomponent3" "descriptionForSubcomponent3" > { execute specific code }
variableName-Subcomponent-4 "valueForSubcomponent4" "descriptionForSubcomponent4" > { execute specific code }
variableName-Subcomponent-5 "valueForSubcomponent5" "descriptionForSubcomponent5" > { execute specific code }
Example:
Component-1-Main "ajantimer" "The BG1 NPC Project: Ajantis Romance Core (teen content)"
ajantimer-Subcomponent-1 "1" "Press 1 for 15 minutes banter time" { APPEND ~gtimes.ids~ ~900 AJROM_TIMER~ }
ajantimer-Subcomponent-2 "2" "Press 2 for 30 minutes banter time" { APPEND ~gtimes.ids~ ~1800 AJROM_TIMER~ }
...
The goal is to get output for each component, subcomponent and accepted value from --list-components. So instead of this output:
~BG1NPC\BG1NPC.TP2~ #0 #9 // The BG1 NPC Project: Ajantis Romance Core (teen content): v21_20150320
we would get this:
~BG1NPC\BG1NPC.TP2~ #0 #9 // The BG1 NPC Project: Ajantis Romance Core (teen content): v21_20150320
~BG1NPC\BG1NPC.TP2~ #0 #9 #1 // The BG1 NPC Project: Ajantis Romance Core (teen content): v21_20150320 - Press 1 for 15 minutes banter time
~BG1NPC\BG1NPC.TP2~ #0 #9 #2 // The BG1 NPC Project: Ajantis Romance Core (teen content): v21_20150320 - Press 2 for 30 minutes banter time
It would allow for:
- automatic mod installation without creating custom answer file
- providing a special script for the modders which will gather all required info about mods and upload it into mod database every time when they will release new version of the mod, without any additional work at their side (no chances for errors/missing info)
- create website and backend service for uploading mod and testing successful installation (you upload mod, backend install you mod and present results), testing install order of the various mod combination via automated way (choose mods, select install order, test it, see outcome, test another install order etc)
Th key factor is
"current state of the weidu" - nothing should prevent further progress which will makes players, modders and "community tools maintainers" (as I'm not focusing only about BWS) easier. There is no other limitation/missing feature which have such devastating impact on the whole aspect of the mod installation. And there is currently nothing which could have bigger impact at it. Please reconsider implementing this feature.