longturn / freeciv21

Develop your civilization from humble roots to a global empire
GNU General Public License v3.0
215 stars 39 forks source link

Action Dialogs are Annoying! #2039

Open jwrober opened 9 months ago

jwrober commented 9 months ago

Is your feature request related to a problem? Please describe. This is a meta issue, subsequent more detailed issues related to the problem should link here.

Any time a unit attempts to perform an action, the player is presented with an action dialog box. Many actions are obvious and don't need some kind of confirmation box and other times the box is important. We need some sanity...

Per @lmoureaux ... to initiate this discussion, I see 3 kinds of actions:

  1. Actions whose properties are known beforehand except in corner cases (attack, capture, embark, ... there might be a stealth fighter protecting a workers stack, for instance)
  2. Actions whose properties are not known in advance (trade routes/enter marketplace)
  3. Actions whose availability is not known in advance (diplomat actions)

Actions can be possible or not depending on rules specified in the ruleset. Actions can also be prevented by other actions being available. It's so complicated that the server currently needs to tell the client what can be done when the unit reaches its target.

Describe the solution you'd like For option 1 above, if the action is obvious then don't ask me. For example:

  • Some units that special actions (e.g. Diplomats) that enter friendly (self or allied) cities should not have a prompt.

Some examples of corner cases for option 1...

For option 2 above, there are certain units with action properties that are simply unknown. We should ask here. For example:

Any dialog option needs to be very clear. Tool-tips can be used to help the player. For example: If an action dialog says "wait" and "do nothing" there is a difference. The "wait" options is the same as the wait action, which means the player isn't finished with the unit yet and wants the game to prompt. The "do nothing" options is less obvious, but essentially means "I'm done". That isn't clear, however and makes for confusing UX.

Describe alternatives you've considered None

Additional context Blauwal started a Discord conversation here - https://discord.com/channels/378908274113904641/912500712833974322/1157780210377298024

jeltsch commented 9 months ago

2 ¢ from my side:

I think that generally having the “wait” option in such a dialog is superfluous: if you really want to wait, you can just choose to do nothing and then press W. Waiting is not an action but about controlling the order in which units perform their activities.

Furthermore, it would make sense to drop the “do nothing” option, because this is also not about executing an action but precisely about not executing an action. If someone really attempted to make a move by mistake and now wants to get out of this while there is still this dialog shown, he can just close the dialog by pressing the “close” button in the window frame. Well, usually dialogs also have a “Cancel” button in addition, but such a button should indeed be labeled “Cancel” and not “Do nothing”, I’d say.

If, however, “do nothing” is actually about having the unit not be automatically selected anymore during this turn, there should also be no “do nothing” option but for essentially the same reasons as with “wait”: you can just cancel and then press Space.

If after the removal of “wait” and “do nothing” it turns out that there is only one option left, for example “attack”, then no dialog should be shown but the sole possible action should just be executed.

jeltsch commented 9 months ago

I think that especially what I wrote above about “do nothing” and not showing a dialog if only one action is left is in line with normal functioning of dialogs in GUIs: They are not about generally giving you a chance to abort accidentally initiated activities (except for confirmation dialogs), but they are rather presented to you if the concrete activity isn’t yet clear and you need to make a choice, and the possibility to cancel is only there so that you don’t find yourself in a situation where an activity hasn’t been performed yet (because you still have to make a choice) but nevertheless you can’t avoid some activity being performed.

jeltsch commented 9 months ago

To clarify further, think of saving a file: If you choose “Save as …”, you’re presented with a dialog, because you have to choose a file path. It would be pretty bad if you accidentally initiated saving and are now in this dialog with no saving having happened yet, but you can’t prevent saving anymore. If, however, you just selected “Save”, no dialog is shown that asks you whether you really want to save. Instead, it is assumed that you think before you select “Save”. :slightly_smiling_face:

Corbeau-1 commented 2 months ago

For option 2 above, there are certain units with action properties that are simply unknown. We should ask here. For example:

* Caravan entering a city. It isn't obvious if we want to create a trade route, help build a wonder, enter the "marketplace" or simply go into the city. We need to ask.

Actually, even this action can be de-menued. By default, a caravan enters a city and then, once in, a menu/shortcut action is needed to establish trade route.

Simply, passing through cities happens more often than starting trade routes. Having a menu pop-up every time is a >50% of the time unnecessary.

Same goes for helping a wonder.

lmoureaux commented 2 months ago

By default, a caravan enters a city and then, once in

If the caravan has one move left, it can establish the trade route from outside the city. If it had to move inside the city, it would waste a turn.

Corbeau-1 commented 2 months ago

By default, a caravan enters a city and then, once in

If the caravan has one move left, it can establish the trade route from outside the city. If it had to move inside the city, it would waste a turn.

Not if you make it possible to establish a traderoute with 0 MP.

lmoureaux commented 2 months ago

By default, a caravan enters a city and then, once in

If the caravan has one move left, it can establish the trade route from outside the city. If it had to move inside the city, it would waste a turn.

Not if you make it possible to establish a traderoute with 0 MP.

It's ruleset-controlled

Corbeau-1 commented 2 months ago

By default, a caravan enters a city and then, once in

If the caravan has one move left, it can establish the trade route from outside the city. If it had to move inside the city, it would waste a turn.

Not if you make it possible to establish a traderoute with 0 MP.

It's ruleset-controlled

See? No problem.

lmoureaux commented 1 month ago

What's more, this dialog has keyboard shortcuts that can be inadvertently activated if the dialog comes up while you're typing.