Integrated Dynamics

Integrated Dynamics

63M Downloads

Advanced logic programmer, or an update to the logic programmer to make the whole ID experience better

Comphus opened this issue · 2 comments

commented

Issue type:

  • ➕ Feature request

Short description:

The advanced logic programmer or modified logic programmer would be the combination of:

  • logic programmer
  • display panel
  • variable store, or using your player inventory as the variable store

and maybe

  • 1 slot inventory as storage for just blank variable cards
  • 1 slot inventory strictly for just clearing out variable cards with data in them, which will put that newly blank variable card into the above mentioned 1 slot storage inventory if possible
  • materializer

into one GUI.
If this suggestion were a brand new item, it could be made by crafting a logic programmer, display panel, variable store and such into a crafting table.

Longer description:

The whole purpose of this would be to just make using this mod a whole heck of a lot easier and way less tedious.
Right now all of these features are fragmented out, which makes playing with this mod and debugging a lot more tedious. If I were to exaggerate, this would be like writing your code on machine A(logic programmer), having to save it on machine B(variable store), and having the output go to the console on machine C(display panel)

If I wanted to filter an inventory based on the mod of each item, durability, and/or NBT data, I would have to interact with the logic programmer, variable store and display panel constantly. If something went wrong in the final result, back tracking would be a pain and tedious as the cycle of opening and closing separate GUIs constantly begin again. If this suggestion was implemented, the tediousness of constantly opening and closing 3+ GUIs wouldn't be there anymore as everything would be in one GUI.

An idea of how the new GUI might look like would be:

  • Having the logic programmer GUI be in the middle left of the screen, taking about 50-70% of the GUI's real estate.
  • A decent sized display to the right where you can put a variable card in to to see what results are of that card. One with a horizontal and vertical scroll bar for cases when all the NBT JSON data is in one line, or if there is just too much stuff vertically. If possible, in the cases where there are long lines of JSON data, automatically prettifying it for display purposes would be nice
  • Variable store inventory right under the display, or instead uses your player's inventory as the "variable store"

and optionally if its possible:

  • 1 slot inventory above the left corner of the display that is strictly for blank variable cards
  • 1 slot inventory with an X on it and an arrow pointing to the variable card inventory that is for clearing variable data and auto outputting into the variable card inventory
  • expanding/collapsing GUI on the top right for the materializer (similar to how Thermal Expansion has its own expanding/collapsing GUIs for their machines)

With this we can put our focus on just one GUI instead of multiple others and make the ID workflow a much more pleasant experience. I'd feel like this would also benefit people who are just learning Integrated Dynamics as well. The display for variables will be right in your face after making them, so it can help instill a habit of debugging your code.

Displaying the NBT data of an item will be as simple as:

open programmer -> input item to get item card -> input item card to get NBT card -> place item card in variable store inventory -> place NBT card in display.
vs
setup a network with a variable store and display -> open programmer -> input item to get item card -> input item card to get NBT card -> exit programmer -> open variable store -> place item card in variable store inventory -> exit variable store -> open display -> place NBT card in display -> exit display to view in world

5 steps vs 11 steps to display NBT data.
You also wont need to set up a network in the world as the new logic programmer will essentially be its own "network". After you do all or most of your ID programming work, you can then setup the network in the world when and if you're happy with the results.

Heres my ghetto rendition of what it would look like in paint. I shortened the slots of the variable store to 27, but if it fits then all original 45 slots can be there.
image

commented

As a simpler change that would get a lot of the benefit, perhaps the logic programmer should auto-materialize the result of an expression if all input cards are static.

commented

An advanced LP has been on my todolist for many years now. Not sure I'll ever find time to implement it, so feel free to have a go at it.