CleverRaven / Cataclysm-DDA

Cataclysm - Dark Days Ahead. A turn-based survival game set in a post-apocalyptic world.
http://cataclysmdda.org
Other
9.77k stars 4.07k forks source link

[Bounty] ($50) Clickable Menu Icons, Right-click Context Menus #73823

Open Daikiero opened 2 weeks ago

Daikiero commented 2 weeks ago

Is your feature request related to a problem? Please describe.

Everyone who's played this game for 10 minutes can tell you that you'll use your whole keyboard to make use of all the keybinds in this game. After playing for hundreds of hours, this is something I've become used to, as we all have. That said, every time I open the game, I have to- without fail- open the keybindings menu to check a binding I forgot. After playing other similar games such as Zomboid and the Steam release of Dwarf Fortress, the lack of clickable menu icons on the screen has really gotten me thinking that they would be a great QoL addition for players like myself, and a huge boon to ease the learning curve for new players.

Solution you would like.

When you think of clicking an element on the UI, you probably think of things like clicking a backpack icon to open your inventory, or a picture of a book to open your quest log. These are exactly the types of things I would love to see in this game. Adding clickable icons wouldn't fundamentally change the game for veterans, but it would be a great option to have regardless. I think it would make sense for them to be visible by default with an option to hide them, but I understand if the current playerbase would prefer the opposite.

On top of this, I think adding drop down/context menus to certain elements of the UI would also be a nice addition, especially when paired with menu icons. Left-click the backpack to open (I)nventory, right-click the same icon to show related options, such as Advanced Inventory Management.

Describe alternatives you have considered.

Having context menus in the menus themselves could be great, too, but I won't consider it as part of this bounty. Things like right-clicking an item to show your options for interacting with it without having to select it first.

Additional context

I've mostly just jotted down my broad thoughts on this topic, so I'm sure there are a few things I haven't clarified enough. Honestly, I'm giving pretty much all creative control to whoever decides to pick up this bounty. Don't hesitate to ask me for clarification.

As the title states, I'm offering $50 to whoever brings this to the game. I'd prefer to use PayPal or CashApp for the exchange, but if you have a different preferred payment method don't hesitate to suggest an alternative.

Cheers, daikiero

ZhilkinSerg commented 2 weeks ago

We already have quick shortcuts in Android builds and it should not take much to get them working on desktop (WIP is here - https://github.com/CleverRaven/Cataclysm-DDA/compare/master...ZhilkinSerg:Cataclysm-DDA:ui-quick-shortcuts?expand=1). Displaying icons in addition to keys in quick shortcuts should be rather easy too.

The issue is if you press ? on a main game screen with the following patch you will see that there are too many commands (144 in total, 80 of which are bound to a key). There is probably no way all icons for them would fit on a screen without obscuring much of the map.

image

@ -646,6 +646,15 @@ keybindings_ui::keybindings_ui( bool permit_execute_action,
    legend.push_back( colorize( _( "Keybinding active only on this screen" ), local_key ) );
    legend.push_back( colorize( _( "Keybinding active globally" ), global_key ) );
    legend.push_back( colorize( _( "* User customized" ), global_key ) );
    int bound_actions_count = 0;
    for( const std::string &a : parent->get_registered_actions() ) {
        auto iel = parent->keys_bound_to( a );
        if( iel.size() > 0 ) {
            bound_actions_count++;
        }
    }
    legend.push_back( string_format( _( "All commands: %d, Bound to a key: %d" ),
                                     parent->get_registered_actions().size(), bound_actions_count ) );
    if( permit_execute_action ) {
        legend.push_back( string_format(
                              _( "Press %c to execute action\n" ),
Procyonae commented 2 weeks ago

Personally I'd prefer this added as an accessibility option that can default on for new players rather than a compulsory thing, personally I'd have no interest using it and I imagine the same goes for alot of peeps who've played alot and I'd rather not lost screen space for something I'm never going to interact with. You literally said as much, I can't read >_<

Qrox commented 2 weeks ago

Maybe we can show a menu when you right-click on your character/nearby terrain to list the action you can do (similar to the current action menu). It won't take any screen space until requested, and adding icons to the menu should be easy.

Daikiero commented 2 weeks ago

We already have quick shortcuts in Android builds and it should not take much to get them working on desktop (WIP is here - https://github.com/CleverRaven/Cataclysm-DDA/compare/master...ZhilkinSerg:Cataclysm-DDA:ui-quick-shortcuts?expand=1). Displaying icons in addition to keys in quick shortcuts should be rather easy too.

The issue is if you press ? on a main game screen with the following patch you will see that there are too many commands (144 in total, 80 of which are bound to a key). There is probably no way all icons for them would fit on a screen without obscuring much of the map.

image


@ -646,6 +646,15 @@ keybindings_ui::keybindings_ui( bool permit_execute_action,

    legend.push_back( colorize( _( "Keybinding active only on this screen" ), local_key ) );

    legend.push_back( colorize( _( "Keybinding active globally" ), global_key ) );

    legend.push_back( colorize( _( "* User customized" ), global_key ) );

    int bound_actions_count = 0;

    for( const std::string &a : parent->get_registered_actions() ) {

        auto iel = parent->keys_bound_to( a );

        if( iel.size() > 0 ) {

            bound_actions_count++;

        }

    }

    legend.push_back( string_format( _( "All commands: %d, Bound to a key: %d" ),

                                     parent->get_registered_actions().size(), bound_actions_count ) );

    if( permit_execute_action ) {

        legend.push_back( string_format(

                              _( "Press %c to execute action\n" ),

This is where the right-click context menu option comes in. CDDA has a ton of keybinds that aren't used commonly ("look at the sky", anyone?) and I feel that those bindings would be perfect for a drop down menu, rather than having a dedicated icon for every single keybind in the game.