Now, while playing with Space Exploration, it could be possible to somehow make a circuit network that allows for sending of commands, and then maybe plop down a transmitter and transmit the signals required to change the values, but let's be honest, who in god's name would do something like that?
With this mod, it could all be much simpler. I doubt manually adding buttons to the ones to the right of the toolbar is possible on the fly, but a single button to open a configurable GUI is definitely possible.
Within this GUI there could be several types of buttons and fields:
- First off, an ON/OFF button, corresponding to a combinator similar to the pushbutton - when you place it, you specify what it should output when OFF, and what it should output when ON.
- Secondly, a value combinator - when you place it, you specify the signal type, and you can control the value it outputs from the GUI itself. Maybe within the building GUI itself there should be a way to set the maximum and minimum value.
- Third, a slider - very similar to the value combinator, but more intuitive. Also possible to modify the range of the output, though as a default, it should work similar to the vanila logistic request slider, though starting from zero.
- Fourth, a single cell combinator - you can set it to output anything you want from the GUI, but limited to a single cell.
- And lastly, a normal combinator, that you can control from the GUI, perhaps with the option of hiding the bottom two rows not to clutter the interface.
Now, addressing the big problem I can foresee - accidental changes and clicks. This could be mitigated by having each GUI field that controls a combinator be in one of two modes:
- Real time - every change in the GUI is transmitted instantly.
- Confirmation required - you can change anything you like, but nothing happens until you press a button that updates the combinators.
The per-link basis would have all the links displayed however the user wants, with only an icon or some kind of letter signifying the difference between a constantly updating link or a confirmation link.
The two category implementation would simply see the entire window split into two sections - one in which the constantly updating links reside, and the other with the confirmation based links. In this category, it would also be neat to create two button types that allow for changing the output of a combinator - one that would confirm all of the changes and send them to all the combinators, and a button next to each combinator, allowing for confirming the change to that single link.
Honestly, the continuous mode would be harder to program in, but it has its' bonuses: it should be familiar to the majority of players who worked with combinators, and if you somehow fuck up an input in some way, it will be immediately visible, and there will be no confusion what caused it. In comparison, if you change a lot of stuff, then confirm it and something fucks up, you don't know immediately what caused it.
The second mode would be easier to program, and would be lighter on the scripts, since a script would have to be run only once when a change was confirmed. On the other hand, a script to continuously check if a value of a GUI element was updated would have to run constantly - as far as I'm aware, anyway. Perhaps there is an event in the Factorio library that could be listened to, to check whether a specific GUI element was updated. Hell, now that I think about it, there most likely is such an element. Whatever,
All of the things I just described should be relatively easy to implement (as long as the scripts related to the game and the scripts related to the GUI are not split in some weird way for security/efficiency reasons), but there is one thing I would love in a hypothetical mod like this - customizability. For example, naming the individual links, creating your own categories inside the interface, rearranging the order of the links, being able to change the layout... Actually, that's all I can think of. But it's definitely a lot of work to implement
Overall, I would love to see a mod like this, even with barely a fraction of the features I described. After all, if I can manipulate a combinator with my GUI, that would solve basically all my problems. The rest are merely quality of life features. To end the post on a positive note, thanks for reading and have a lovely day!