void EditorToolboxWidget::select_objectgroup(int id) { m_active_objectgroup = id; m_input_type = EditorToolboxWidget::InputType::OBJECT; m_starting_tile = 0; update_mouse_icon(); }
void EditorToolboxWidget::select_tilegroup(int id) { m_active_tilegroup.reset(new Tilegroup(m_editor.get_tileset()->get_tilegroups()[id])); m_input_type = EditorToolboxWidget::InputType::TILE; m_starting_tile = 0; update_mouse_icon(); }
void EditorTilegroupMenu::menu_action(MenuItem* item) { if (item->id >= 0) { auto tileselect = &(Editor::current()->tileselect); tileselect->active_tilegroup = Editor::current()->tileset->tilegroups[item->id].tiles; tileselect->input_type = EditorInputGui::IP_TILE; tileselect->reset_pos(); tileselect->update_mouse_icon(); } MenuManager::instance().clear_menu_stack(); }
bool EditorToolboxWidget::on_mouse_button_down(const SDL_MouseButtonEvent& button) { if (button.button == SDL_BUTTON_LEFT || button.button == SDL_BUTTON_RIGHT) { switch (m_hovered_item) { case HoveredItem::TILEGROUP: if (m_editor.get_tileset()->get_tilegroups().size() > 1) { m_editor.disable_keyboard(); MenuManager::instance().push_menu(MenuStorage::EDITOR_TILEGROUP_MENU); } else { m_active_tilegroup.reset(new Tilegroup(m_editor.get_tileset()->get_tilegroups()[0])); m_input_type = EditorToolboxWidget::InputType::TILE; m_starting_tile = 0; update_mouse_icon(); } return true; case HoveredItem::OBJECTS: if ((m_editor.get_level()->is_worldmap() && m_object_info->get_num_worldmap_groups() > 1) || (!m_editor.get_level()->is_worldmap() && m_object_info->get_num_level_groups() > 1)) { m_editor.disable_keyboard(); MenuManager::instance().push_menu(MenuStorage::EDITOR_OBJECTGROUP_MENU); } else { if (m_editor.get_level()->is_worldmap()) { m_active_objectgroup = m_object_info->get_first_worldmap_group_index(); } else { m_active_objectgroup = 0; } m_input_type = EditorToolboxWidget::InputType::OBJECT; m_starting_tile = 0; update_mouse_icon(); } return true; case HoveredItem::TILE: switch (m_input_type) { case InputType::TILE: { m_dragging = true; m_drag_start = Vector(static_cast<float>(m_hovered_tile % 4), static_cast<float>(m_hovered_tile / 4)); // NOLINT int size = static_cast<int>(m_active_tilegroup->tiles.size()); int tile_pos = m_hovered_tile + m_starting_tile; if (tile_pos < size && tile_pos >= 0) { m_tiles->set_tile(m_active_tilegroup->tiles[tile_pos]); } else { m_tiles->set_tile(0); } } break; case InputType::OBJECT: { int size = static_cast<int>(m_object_info->m_groups[m_active_objectgroup].get_icons().size()); if (m_hovered_tile < size && m_hovered_tile >= 0) { m_object = m_object_info->m_groups[m_active_objectgroup].get_icons()[m_hovered_tile + m_starting_tile].get_object_class(); } update_mouse_icon(); } break; default: break; } return true; case HoveredItem::TOOL: switch (m_hovered_tile) { case 0: m_tiles->set_tile(0); m_object = ""; update_mouse_icon(); break; case 1: m_select_mode->next_mode(); update_mouse_icon(); break; case 2: m_move_mode->next_mode(); update_mouse_icon(); break; case 3: m_editor.esc_press(); break; default: break; } return true; case HoveredItem::NONE: return false; default: return false; } } else { return false; } }