Skip to content

Commit

Permalink
Fixes to score menu
Browse files Browse the repository at this point in the history
  • Loading branch information
ZhilkinSerg committed Dec 4, 2024
1 parent 04cb3d9 commit a636229
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 17 deletions.
14 changes: 14 additions & 0 deletions data/raw/keybindings.json
Original file line number Diff line number Diff line change
Expand Up @@ -4861,6 +4861,20 @@
{ "input_method": "keyboard_code", "mod": [ "ctrl" ], "key": "y" }
]
},
{
"type": "keybinding",
"id": "TOGGLE_MONSTER_GROUP",
"category": "SCORE_UI",
"name": "Toggle monster group",
"bindings": [ { "input_method": "keyboard_any", "key": "m" } ]
},
{
"type": "keybinding",
"id": "TOGGLE_NPC_GROUP",
"category": "SCORE_UI",
"name": "Toggle NPC group",
"bindings": [ { "input_method": "keyboard_any", "key": "n" } ]
},
{
"type": "keybinding",
"id": "HELP_KEYBINDINGS",
Expand Down
43 changes: 26 additions & 17 deletions src/scores_ui.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -69,27 +69,32 @@ class scores_ui_impl : public cataimgui::window
ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoNav ) {}

private:
void draw_achievements_text( bool use_conducts = false );
void draw_scores_text();
void draw_kills_text();
void draw_achievements_text( bool use_conducts = false ) const;
void draw_scores_text() const;
void draw_kills_text() const;

scores_ui_tab_enum selected_tab = scores_ui_tab_enum::achievements;
scores_ui_tab_enum switch_tab = scores_ui_tab_enum::num_tabs;

size_t window_width = ImGui::GetMainViewport()->Size.x / 3.0 * 2.0;
size_t window_height = ImGui::GetMainViewport()->Size.y / 3.0 * 2.0;
size_t window_width = ImGui::GetMainViewport()->Size.x * 8 / 9;
size_t window_height = ImGui::GetMainViewport()->Size.y * 8 / 9;

bool monster_group_collapsed = false;
bool npc_group_collapsed = false;

protected:
void draw_controls() override;
};

void scores_ui::draw_scores_ui()
{
input_context ctxt;
input_context ctxt( "SCORE_UI" );
scores_ui_impl p_impl;

ctxt.register_navigate_ui_list();
ctxt.register_leftright();
ctxt.register_action( "TOGGLE_MONSTER_GROUP" );
ctxt.register_action( "TOGGLE_NPC_GROUP" );
ctxt.register_action( "NEXT_TAB" );
ctxt.register_action( "PREV_TAB" );
ctxt.register_action( "SELECT" );
Expand All @@ -110,7 +115,7 @@ void scores_ui::draw_scores_ui()
}
}

void scores_ui_impl::draw_achievements_text( bool use_conducts )
void scores_ui_impl::draw_achievements_text( bool use_conducts ) const
{
const achievements_tracker &achievements = g->achievements();
if( !achievements.is_enabled() ) {
Expand Down Expand Up @@ -162,7 +167,7 @@ void scores_ui_impl::draw_achievements_text( bool use_conducts )
);
}

void scores_ui_impl::draw_scores_text()
void scores_ui_impl::draw_scores_text() const
{
stats_tracker &stats = g->stats();
std::vector<const score *> valid_scores = stats.valid_scores();
Expand All @@ -179,7 +184,7 @@ void scores_ui_impl::draw_scores_text()
);
}

void scores_ui_impl::draw_kills_text()
void scores_ui_impl::draw_kills_text() const
{
const kill_tracker &kills_data = g->get_kill_tracker();

Expand All @@ -197,7 +202,7 @@ void scores_ui_impl::draw_kills_text()
}

if( ImGui::CollapsingHeader( string_format( _( "Monster kills (%d):" ), monster_kills ).c_str(),
ImGuiTreeNodeFlags_DefaultOpen ) ) {
monster_group_collapsed ? ImGuiTreeNodeFlags_None : ImGuiTreeNodeFlags_DefaultOpen ) ) {
if( monster_kills == 0 ) {
ImGui::TextWrapped( "%s", _( "You haven't killed any monsters yet!" ) );
} else {
Expand All @@ -219,7 +224,7 @@ void scores_ui_impl::draw_kills_text()
}
}
if( ImGui::CollapsingHeader( string_format( _( "NPC kills (%d):" ), npc_kills ).c_str(),
ImGuiTreeNodeFlags_DefaultOpen ) ) {
npc_group_collapsed ? ImGuiTreeNodeFlags_None : ImGuiTreeNodeFlags_DefaultOpen ) ) {
if( npc_kills == 0 ) {
ImGui::TextWrapped( "%s", _( "You haven't killed any NPCs yet!" ) );
} else {
Expand All @@ -242,22 +247,26 @@ void scores_ui_impl::draw_controls()

if( last_action == "QUIT" ) {
return;
} else if( last_action == "TOGGLE_MONSTER_GROUP" ) {
monster_group_collapsed = !monster_group_collapsed;
} else if( last_action == "TOGGLE_NPC_GROUP" ) {
npc_group_collapsed = !npc_group_collapsed;
} else if( last_action == "UP" ) {
ImGui::SetKeyboardFocusHere( -1 );
ImGui::SetScrollY( ImGui::GetScrollY() - ImGui::GetTextLineHeightWithSpacing() );
} else if( last_action == "DOWN" ) {
ImGui::SetKeyboardFocusHere( 1 );
ImGui::SetScrollY( ImGui::GetScrollY() + ImGui::GetTextLineHeightWithSpacing() );
} else if( last_action == "NEXT_TAB" || last_action == "RIGHT" ) {
ImGui::SetScrollY( 0 );
switch_tab = selected_tab;
++switch_tab;
} else if( last_action == "PREV_TAB" || last_action == "LEFT" ) {
ImGui::SetScrollY( 0 );
switch_tab = selected_tab;
--switch_tab;
} else if( last_action == "PAGE_UP" ) {
ImGui::SetWindowFocus(); // Dumb hack! Clear our focused item so listbox selection isn't nav highlighted.
ImGui::SetScrollY( ImGui::GetScrollY() - ( window_height / 5.0f ) );
ImGui::SetScrollY( ImGui::GetScrollY() - window_height );
} else if( last_action == "PAGE_DOWN" ) {
ImGui::SetWindowFocus(); // Dumb hack! Clear our focused item so listbox selection isn't nav highlighted.
ImGui::SetScrollY( ImGui::GetScrollY() + ( window_height / 5.0f ) );
ImGui::SetScrollY( ImGui::GetScrollY() + window_height );
}

ImGuiTabItemFlags_ flags = ImGuiTabItemFlags_None;
Expand Down

0 comments on commit a636229

Please sign in to comment.