Add 'click anywhere' starting menu for web builds

This commit is contained in:
Nikita Lisitsa 2026-07-04 18:12:50 +03:00
parent b5b8ba9498
commit 480a087d8e

View file

@ -1504,7 +1504,7 @@ namespace gmtk
error_ = audio::load_mp3(io::read_full(std::move(*app::open_resource("sounds/error.mp3"))));
context_.windowed(is_windowed_);
set_start_menu();
init_menu();
}
void on_event(app::resize_event const & event) override
@ -1668,7 +1668,11 @@ namespace gmtk
{
item_killing_spree_ = false;
if (selected_button_)
if (in_click_anywhere_menu_)
{
set_start_menu();
}
else if (selected_button_)
{
if (*selected_button_ < menu_buttons_.size() && menu_buttons_[*selected_button_].action)
{
@ -2568,7 +2572,8 @@ namespace gmtk
bool running_ = true;
bool in_start_menu_ = true;
bool in_click_anywhere_menu_ = false;
bool in_start_menu_ = false;
bool in_escape_menu_ = false;
bool in_victory_menu_ = false;
@ -2586,7 +2591,7 @@ namespace gmtk
bool in_menu() const
{
return in_start_menu_ || in_escape_menu_ || in_victory_menu_;
return in_click_anywhere_menu_ || in_start_menu_ || in_escape_menu_ || in_victory_menu_;
}
std::uint64_t seed_ = 0;
@ -2637,13 +2642,26 @@ namespace gmtk
card_animation_.clear();
}
void set_start_menu()
void init_menu()
{
in_start_menu_ = true;
map_ = start_menu_map();
#ifdef __EMSCRIPTEN__
set_click_anywhere_menu();
#else
set_start_menu();
#endif
}
void set_click_anywhere_menu()
{
in_click_anywhere_menu_ = true;
in_start_menu_ = false;
in_escape_menu_ = false;
in_victory_menu_ = false;
map_ = start_menu_map();
menu_buttons_.clear();
menu_buttons_.push_back({"Click anywhere", {}});
if (!view_stack_.empty())
{
@ -2652,8 +2670,24 @@ namespace gmtk
}
view_stack_.push_back({-1, {0, 0}});
view_stack_.push_back({0, {1, 1}});
}
void set_start_menu()
{
in_click_anywhere_menu_ = false;
in_start_menu_ = true;
in_escape_menu_ = false;
in_victory_menu_ = false;
set_start_menu_buttons();
if (!view_stack_.empty())
{
view_transition_ = {view_stack_.back()};
view_stack_.clear();
}
view_stack_.push_back({-1, {0, 0}});
view_stack_.push_back({0, {1, 1}});
}
void set_start_menu_buttons()
@ -2852,43 +2886,43 @@ namespace gmtk
void item_received_sound()
{
if (in_start_menu_) return;
if (in_click_anywhere_menu_ || in_start_menu_) return;
mixer_->add(audio::volume(click_high_->stream(), 0.25f));
}
void item_produced_sound()
{
if (in_start_menu_) return;
if (in_click_anywhere_menu_ || in_start_menu_) return;
mixer_->add(audio::volume(click_low_->stream(), 0.5f));
}
void mixer_sound()
{
if (in_start_menu_) return;
if (in_click_anywhere_menu_ || in_start_menu_) return;
mixer_->add(audio::volume(machine_->stream(), 0.125f));
}
void shifter_sound()
{
if (in_start_menu_) return;
if (in_click_anywhere_menu_ || in_start_menu_) return;
mixer_->add(audio::volume(gears_->stream(), 0.5f));
}
void reshaper_sound()
{
if (in_start_menu_) return;
if (in_click_anywhere_menu_ || in_start_menu_) return;
mixer_->add(audio::volume(key_click_->stream(), 0.25f));
}
void item_removed_sound()
{
if (in_start_menu_) return;
if (in_click_anywhere_menu_ || in_start_menu_) return;
mixer_->add(audio::volume(pop_->stream(), 0.5f));
}
void item_error_sound()
{
if (in_start_menu_) return;
if (in_click_anywhere_menu_ || in_start_menu_) return;
// mixer_->add(audio::volume(error_->stream(), 0.25f));
}
};