Skip to content
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

Add weariness and activity sidebar display and panels, display effects on weariness in effect description #46340

Merged
merged 4 commits into from
Feb 6, 2021

Conversation

anothersimulacrum
Copy link
Member

@anothersimulacrum anothersimulacrum commented Dec 26, 2020

Summary

SUMMARY: Interface "Show weariness and activity level in sidebar panels"

Purpose of change

Fixes #44428
Alternative to #46193
I wanted to demonstrate how I thought this information should be displayed, instead of just saying that #46193 should be changed to meet my standards.

Now that we're displaying information about what activity level you're in, we can also display the exact penalties for proficiencies, as I have done in the effects menu.

I'm looking for feedback in particular on how I'm framing the UI, and the adjectives I'm using for activities and weariness.

Describe the solution

Add instantaneous activity tracking to Character

b1f41ba

This tracks the highest activity level of the Character for the current turn and the last turn.
Add hack for cases (such as diagonal moves with circular distances) to keep the last activity taken in the cache and not clear it.
All of this commit will become obsolete when we have turn-granularity activity tracking.
This is a little spotty, but it work wells enough.

Add weariness transition information function

e598d91

This can be used to create a hp_bar or similar showing how far away the character is from the next weariness level.

Add weariness and activity panel displays

17b93ad

Add weariness and activity level display to the stat panel (in all layouts except the classic one), and a separate weariness panel showing distance from weariness transition as well as the malus to the currentactivity level.
I should rewrite this code to be more generic and reduce duplication.
The basic info is included in the stats panel because it is fairly vital to know, but the transition and extent of the malus are more reasonable to not know if you want more space in the sidebar panels.
The names and contextualization for the data could probably use some work.

Show effects of weariness in effect description

43c6ce6

Now that activity levels are publicly shown, these can explain their effects in detail.

Describe alternatives you've considered

See #46193
In particular, I think that the speed panel here would be worth considering over the current malus display.
speed panel, showing penalities to each activity level in sequence, separated by slashes

Testing

Classic:
image

image
image
image
image

Compact:
image

image
image
image
image

Labels:
image

image
image
image
image

Labels Narrow:
image

image
image
image
image

Effects:
image
image
image
image
image

Every state with the 'compact' sidebar layout:
image
image
image
image
image

image

Sidebar:
image

Recovering/Becoming more weary:
weary
weary2

@anothersimulacrum anothersimulacrum added [C++] Changes (can be) made in C++. Previously named `Code` Info / User Interface Game - player communication, menus, etc. labels Dec 26, 2020
data/json/effects.json Show resolved Hide resolved
src/character.cpp Show resolved Hide resolved
src/panels.cpp Outdated Show resolved Hide resolved
@@ -1027,6 +1061,30 @@ static void draw_stats( avatar &u, const catacurses::window &w )
mvwprintz( w, point( 25, 0 ), c_light_gray, _( "PER" ) );
mvwprintz( w, point( stat < 10 ? 30 : 29, 0 ), stat_clr,
stat < 100 ? to_string( stat ) : "99+" );

int weariness = u.weariness_level();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think these weariness levels belongs with stats, which is for DEX, STR, INT, and PER. If you do it this way, when you also force the user to arrange the weariness bar under the stats bar for things to look correct. Why not add a two-line weariness bar?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As I stated in the commit adding these panels, I think the weariness and activity level displays are very important, while the stuff I included in the panel is a bit more extraneous, and would be something that would make a lot of sense to give up if you're short on log space.

I don't feel strongly this way, and am definitely open to changing it.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think that we should go with a two line weariness panel and default it to being enabled, but would prefer to see weariness added to the bottom of the Needs panel rather than the Stats panel if we want to make sure people see it.

I also want to support putting weariness anywhere in the side panel that the player wants, rather than splitting the basics into one of the current panels and then adding the details in a new panel.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was going to say I don't think it fits better in stats than in needs, but I don't actually find myself very convinced by that.

I think I may need some time to think this over, there are good arguments for both methods.

@Salty-Panda
Copy link
Contributor

For the Compact version, something like this could be nice too
image

@Svankensen
Copy link

Spectacular work. I would suggest adding a blurb of text in the @ menu specifically telling you how bad you are at melee at this point in time.

This tracks the highest activity level of the Character for the current
turn and the last turn.

Add hack for cases (such as diagonal moves with circular distances)
to keep the last activity taken in the cache and not clear it.

All of this commit will become obsolete when we have turn-granularity
activity tracking.

This is a little spotty, but it work wells enough.
This can be used to create a hp_bar or similar showing how far away the
character is from the next weariness level.
Add weariness and activity level display to the stat panel (in all
layouts except the classic one), and a separate weariness panel showing
distance from weariness transition as well as the malus to the current
activity level.

I should rewrite this code to be more generic and reduce duplication.

The basic info is included in the stats panel because it is fairly vital
to know, but the transition and extent of the malus are more reasonable
to not know if you want more space in the sidebar panels.

The names and contextualization for the data could probably use some
work.
Now that activity levels are publicly shown, these can explain their
effects in detail.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
[C++] Changes (can be) made in C++. Previously named `Code` Info / User Interface Game - player communication, menus, etc.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

A weariness indicator should be in the sidebar
6 participants