Skip to content

Better UX for machines control logic unit item eject behavior #337

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
S-S-X opened this issue Dec 7, 2023 · 4 comments
Open

Better UX for machines control logic unit item eject behavior #337

S-S-X opened this issue Dec 7, 2023 · 4 comments
Labels
Discussion Brainstorming or other extended discussion instead of well defined goal. Enhancement New feature or request

Comments

@S-S-X
Copy link
Member

S-S-X commented Dec 7, 2023

This should be improved one way or another.

The machine that contains the control logic unit, ejects items in a way that is unnecessarily hard to understand at first.

It is a problem for the construction of pipeworks tube systems, which fail when the side from which the items are ejected is reversed.

Original issue got closed but contains some information, suggestions for improvement and some info about related issues:

@S-S-X S-S-X added Enhancement New feature or request Discussion Brainstorming or other extended discussion instead of well defined goal. labels Dec 7, 2023
@OgelGames
Copy link
Contributor

I think the best solution would be to allow players to choose the auto-eject side with a button, and have the default be the currently used direction so nothing breaks.

@OgelGames OgelGames added this to the 2.0.0 milestone Feb 9, 2024
@OgelGames OgelGames removed this from the 2.0.0 milestone Jan 5, 2025
@cheapie
Copy link
Contributor

cheapie commented Jan 16, 2025

I've been requested by a user to take a look at this and see if I can come up with a solution. I think I do have an idea, something like:

  • Setting in the configuration file to determine which direction machines output by default, options being "left", "right", and "legacy" (legacy meaning existing behavior, others are I hope self-explanatory)
  • Default value in the config file being "legacy"
  • Each machine can be set to output to the left or right using a button on the machine's UI, something like "[left arrow] Output direction" which toggles to "[right arrow] Output direction" on click and vice-versa. Button is hidden unless at least one CLU upgrade is installed
  • If the config value is set to "legacy" then existing and newly-upgraded machines would set their own direction to left or right, depending on orientation, when the first CLU upgrade is installed. It wouldn't be done on place as that would result in a behavior change if machines are placed and then rotated - at least I think machines allow screwdriver use, I haven't actually tested that.
  • The code that updates the formspec and handles fields would be deduplicated and turned into functions as part of the internal work to make this all happen

Before I actually go implement this and open a PR - any comments/questions/adjustments/complaints/requests/bikeshedding/anything else I should consider? I figured I might as well ask what would be thought of such a solution before putting the effort in this time around :P

@S-S-X
Copy link
Member Author

S-S-X commented Jan 16, 2025

I think machines allow screwdriver use

Sonic screwdriver included with mod been originally made exactly for this, it could however also be improved (as in making machines work with mtg-compatible screwdrivers) but that's another discussion:

edits.
Though not sure about config thing... I mean maybe just passive migration to new behavior would be better choice here.

Tri-state switch on machines, default to legacy? No migration or configs. left - legacy - right

@cheapie
Copy link
Contributor

cheapie commented Jan 16, 2025

Though not sure about config thing... I mean maybe just passive migration to new behavior would be better choice here.

Tri-state switch on machines, default to legacy? No migration or configs. left - legacy - right

I did consider that, but I was a bit concerned about confusing players - I'd think it would make more sense to just present the left/right choices and have it pick one for existing machines that reflects what the machine was already doing. Otherwise I can see myself having to explain to users over here what "legacy" means there over and over again...

The setting idea is because I just know I'm going to have people screaming at me when the behavior changes, regardless of what it gets changed to. At least letting server owners pick why they complain would keep said server owners happy even if their players aren't. Maybe "right" would be a better "default default" for the setting for new machines, though, with existing ones internally being "legacy" and then converting to left or right next time the ejection or upgrade code has reason to run?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Discussion Brainstorming or other extended discussion instead of well defined goal. Enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants