Merge pull request #696 from GriffinRichards/new-event-button

New event button refactor
This commit is contained in:
GriffinR
2025-03-06 21:21:49 -05:00
committed by GitHub
7 changed files with 99 additions and 167 deletions

View File

@@ -1109,9 +1109,9 @@ bool MainWindow::setProjectUI() {
// Wild Encounters tab
ui->mainTabBar->setTabEnabled(MainTab::WildPokemon, editor->project->wildEncountersLoaded);
ui->newEventToolButton->newWeatherTriggerAction->setVisible(projectConfig.eventWeatherTriggerEnabled);
ui->newEventToolButton->newSecretBaseAction->setVisible(projectConfig.eventSecretBaseEnabled);
ui->newEventToolButton->newCloneObjectAction->setVisible(projectConfig.eventCloneObjectEnabled);
ui->newEventToolButton->setEventTypeVisible(Event::Type::WeatherTrigger, projectConfig.eventWeatherTriggerEnabled);
ui->newEventToolButton->setEventTypeVisible(Event::Type::SecretBase, projectConfig.eventSecretBaseEnabled);
ui->newEventToolButton->setEventTypeVisible(Event::Type::CloneObject, projectConfig.eventCloneObjectEnabled);
editor->setCollisionGraphics();
ui->spinBox_SelectedElevation->setMaximum(Block::getMaxElevation());
@@ -1647,7 +1647,7 @@ void MainWindow::copy() {
OrderedJson::array eventsArray;
for (const auto &event : this->editor->selectedEvents) {
OrderedJson::object eventContainer;
eventContainer["event_type"] = Event::typeToString(event->getEventType());
eventContainer["event_type"] = Event::typeToJsonKey(event->getEventType());
OrderedJson::object eventJson = event->buildEventJson(editor->project);
eventContainer["event"] = eventJson;
eventsArray.append(eventContainer);
@@ -1758,7 +1758,7 @@ void MainWindow::paste() {
QJsonArray events = pasteObject["events"].toArray();
for (QJsonValue event : events) {
// paste the event to the map
Event::Type type = Event::typeFromString(event["event_type"].toString());
Event::Type type = Event::typeFromJsonKey(event["event_type"].toString());
Event *pasteEvent = Event::create(type);
if (!pasteEvent)
continue;
@@ -1990,7 +1990,7 @@ void MainWindow::resetMapViewScale() {
void MainWindow::tryAddEventTab(QWidget * tab) {
auto group = getEventGroupFromTabWidget(tab);
if (editor->map->getNumEvents(group))
if (this->editor->map && this->editor->map->getNumEvents(group))
ui->tabWidget_EventType->addTab(tab, QString("%1s").arg(Event::groupToString(group)));
}
@@ -2118,6 +2118,11 @@ void MainWindow::updateSelectedEvents() {
ui->tabWidget_EventType->setCurrentWidget(ui->tab_Multiple);
}
if (!events.isEmpty()) {
// Set the 'New Event' button to be the type of the most recently-selected event
ui->newEventToolButton->selectEventType(events.constLast()->getEventType());
}
this->isProgrammaticEventTabChange = false;
QList<QFrame *> frames;
@@ -2177,27 +2182,6 @@ void MainWindow::eventTabChanged(int index) {
if (editor->map) {
Event::Group group = getEventGroupFromTabWidget(ui->tabWidget_EventType->widget(index));
Event *selectedEvent = this->lastSelectedEvent.value(group, nullptr);
switch (group) {
case Event::Group::Object:
ui->newEventToolButton->setDefaultAction(ui->newEventToolButton->newObjectAction);
break;
case Event::Group::Warp:
ui->newEventToolButton->setDefaultAction(ui->newEventToolButton->newWarpAction);
break;
case Event::Group::Coord:
ui->newEventToolButton->setDefaultAction(ui->newEventToolButton->newTriggerAction);
break;
case Event::Group::Bg:
ui->newEventToolButton->setDefaultAction(ui->newEventToolButton->newSignAction);
break;
case Event::Group::Heal:
ui->newEventToolButton->setDefaultAction(ui->newEventToolButton->newHealLocationAction);
break;
default:
break;
}
if (!isProgrammaticEventTabChange) {
if (!selectedEvent) selectedEvent = this->editor->map->getEvent(group, 0);
this->editor->selectMapEvent(selectedEvent);