mirror of
https://github.com/RPCS3/rpcs3.git
synced 2026-07-10 10:04:47 -06:00
Add Remove + Better Name Label
This commit is contained in:
parent
05068b6b9c
commit
97693eecf1
@ -12,9 +12,9 @@ namespace rsx
|
||||
static constexpr u16 sky_list_y = 85;
|
||||
static constexpr u16 sky_list_h = 540;
|
||||
|
||||
skylander_list_entry::skylander_list_entry()
|
||||
skylander_list_entry::skylander_list_entry(std::string name)
|
||||
{
|
||||
std::unique_ptr<overlay_element> label_text = std::make_unique<label>("None");
|
||||
std::unique_ptr<overlay_element> label_text = std::make_unique<label>(name);
|
||||
std::unique_ptr<overlay_element> label_load = std::make_unique<label>("Load");
|
||||
std::unique_ptr<overlay_element> load_image = std::make_unique<image_view>(30, 30);
|
||||
std::unique_ptr<overlay_element> label_clear = std::make_unique<label>("Clear");
|
||||
@ -102,6 +102,7 @@ namespace rsx
|
||||
break;
|
||||
case pad_button::square:
|
||||
// clear
|
||||
clear_skylander(m_list->get_selected_index());
|
||||
break;
|
||||
case pad_button::triangle:
|
||||
// create
|
||||
@ -152,26 +153,6 @@ namespace rsx
|
||||
}
|
||||
if (m_list)
|
||||
{
|
||||
if (!m_list->m_items.empty())
|
||||
{
|
||||
for (u8 sky_slot = 0; sky_slot < 8; sky_slot++)
|
||||
{
|
||||
if (const auto& slot_infos = g_skyportal.get_skylander(sky_slot))
|
||||
{
|
||||
auto entry = m_list->m_items[sky_slot].get();
|
||||
const auto& [portal_slot, sky_id, sky_var] = slot_infos.value();
|
||||
const auto found_sky = list_skylanders.find(std::make_pair(sky_id, sky_var));
|
||||
if (found_sky != list_skylanders.cend())
|
||||
{
|
||||
entry->set_text(found_sky->second);
|
||||
}
|
||||
else
|
||||
{
|
||||
entry->set_text(fmt::format("Unknown (Id:%d Var:%d)", sky_id, sky_var));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
result.add(m_list->get_compiled());
|
||||
}
|
||||
result.add(m_description->get_compiled());
|
||||
@ -210,13 +191,28 @@ namespace rsx
|
||||
|
||||
void skylander_dialog::reload()
|
||||
{
|
||||
s32 selected_index = 0;
|
||||
s32 selected_index = m_list ? m_list->get_selected_index() : 0;
|
||||
|
||||
std::vector<std::unique_ptr<overlay_element>> entries;
|
||||
for (u8 sky_slot = 0; sky_slot < 8; ++sky_slot)
|
||||
{
|
||||
auto entry = std::make_unique<skylander_list_entry>();
|
||||
entries.emplace_back(std::move(entry));
|
||||
if (const auto& slot_infos = g_skyportal.get_skylander(sky_slot))
|
||||
{
|
||||
const auto& [portal_slot, sky_id, sky_var] = slot_infos.value();
|
||||
const auto found_sky = list_skylanders.find(std::make_pair(sky_id, sky_var));
|
||||
if (found_sky != list_skylanders.cend())
|
||||
{
|
||||
entries.emplace_back(std::make_unique<skylander_list_entry>(found_sky->second));
|
||||
}
|
||||
else
|
||||
{
|
||||
entries.emplace_back(std::make_unique<skylander_list_entry>(fmt::format("Unknown (Id:%d Var:%d)", sky_id, sky_var)));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
entries.emplace_back(std::make_unique<skylander_list_entry>("None"));
|
||||
}
|
||||
}
|
||||
|
||||
// Recreate list
|
||||
@ -242,5 +238,19 @@ namespace rsx
|
||||
m_description->set_text("Emulated Skylander Portal");
|
||||
m_description->auto_resize();
|
||||
}
|
||||
|
||||
void skylander_dialog::clear_skylander(u8 sky_slot)
|
||||
{
|
||||
ensure(sky_slot < 8);
|
||||
|
||||
if (const auto& slot_infos = g_skyportal.get_skylander(sky_slot))
|
||||
{
|
||||
const auto& [cur_slot, id, var] = slot_infos.value();
|
||||
if (g_skyportal.remove_skylander(cur_slot))
|
||||
{
|
||||
m_list_dirty = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
} // namespace overlays
|
||||
} // namespace rsx
|
||||
|
||||
@ -13,10 +13,9 @@ namespace rsx
|
||||
overlay_element* skylander_name = nullptr;
|
||||
|
||||
public:
|
||||
skylander_list_entry();
|
||||
skylander_list_entry(std::string name);
|
||||
void set_text(std::string_view text) override
|
||||
{
|
||||
rsx_log.notice("[ui] Setting skylander name to %s", text.data());
|
||||
if (skylander_name)
|
||||
{
|
||||
static_cast<label*>(skylander_name)->set_text(text);
|
||||
@ -29,6 +28,7 @@ namespace rsx
|
||||
{
|
||||
private:
|
||||
void reload();
|
||||
void clear_skylander(u8 sky_slot);
|
||||
|
||||
std::unique_ptr<overlay_element> m_dim_background;
|
||||
std::unique_ptr<list_view> m_list;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user