Add getIndexOffset, change expected event fields to QSet

This commit is contained in:
GriffinR 2022-02-08 19:11:54 -05:00 committed by huderlem
parent 300d153849
commit af0abaa38d
3 changed files with 25 additions and 22 deletions

View file

@ -89,6 +89,7 @@ public:
static Event* createNewSecretBaseEvent(Project*);
static bool isValidType(QString event_type);
static QString typeToGroup(QString event_type);
static int getIndexOffset(QString group_type);
OrderedJson::object buildObjectEventJSON();
OrderedJson::object buildCloneObjectEventJSON(const QMap<QString, QString> &);
@ -101,7 +102,7 @@ public:
void setPixmapFromSpritesheet(QImage, int, int, bool);
int getPixelX();
int getPixelY();
QStringList getExpectedFields();
QSet<QString> getExpectedFields();
void readCustomValues(QJsonObject values);
void addCustomValuesTo(OrderedJson::object *obj);
void setFrameFromMovement(QString);

View file

@ -195,7 +195,7 @@ int Event::getPixelY()
return (this->y() * 16) - qMax(0, this->spriteHeight - 16);
}
const QStringList expectedObjectFields = {
const QSet<QString> expectedObjectFields = {
"graphics_id",
"elevation",
"movement_type",
@ -207,20 +207,20 @@ const QStringList expectedObjectFields = {
"flag",
};
const QStringList expectedCloneObjectFields = {
const QSet<QString> expectedCloneObjectFields = {
"type",
"graphics_id",
"target_local_id",
"target_map",
};
const QStringList expectedWarpFields = {
const QSet<QString> expectedWarpFields = {
"elevation",
"dest_map",
"dest_warp_id",
};
const QStringList expectedTriggerFields = {
const QSet<QString> expectedTriggerFields = {
"type",
"elevation",
"var",
@ -228,40 +228,40 @@ const QStringList expectedTriggerFields = {
"script",
};
const QStringList expectedWeatherTriggerFields = {
const QSet<QString> expectedWeatherTriggerFields = {
"type",
"elevation",
"weather",
};
const QStringList expectedSignFields = {
const QSet<QString> expectedSignFields = {
"type",
"elevation",
"player_facing_dir",
"script",
};
const QStringList expectedHiddenItemFields = {
const QSet<QString> expectedHiddenItemFields = {
"type",
"elevation",
"item",
"flag",
};
const QStringList expectedSecretBaseFields = {
const QSet<QString> expectedSecretBaseFields = {
"type",
"elevation",
"secret_base_id",
};
QStringList Event::getExpectedFields()
QSet<QString> Event::getExpectedFields()
{
QString type = this->get("event_type");
QStringList expectedFields = QStringList();
QSet<QString> expectedFields = QSet<QString>();
if (type == EventType::Object) {
expectedFields = expectedObjectFields;
if (projectConfig.getEventCloneObjectEnabled()) {
expectedFields.append("type");
expectedFields.insert("type");
}
} else if (type == EventType::CloneObject) {
expectedFields = expectedCloneObjectFields;
@ -276,10 +276,10 @@ QStringList Event::getExpectedFields()
} else if (type == EventType::HiddenItem) {
expectedFields = expectedHiddenItemFields;
if (projectConfig.getHiddenItemQuantityEnabled()) {
expectedFields.append("quantity");
expectedFields.insert("quantity");
}
if (projectConfig.getHiddenItemRequiresItemfinderEnabled()) {
expectedFields.append("underfoot");
expectedFields.insert("underfoot");
}
} else if (type == EventType::SecretBase) {
expectedFields = expectedSecretBaseFields;
@ -291,7 +291,7 @@ QStringList Event::getExpectedFields()
void Event::readCustomValues(QJsonObject values)
{
this->customValues.clear();
QStringList expectedFields = this->getExpectedFields();
QSet<QString> expectedFields = this->getExpectedFields();
for (QString key : values.keys()) {
if (!expectedFields.contains(key)) {
this->customValues[key] = values[key].toString();
@ -466,6 +466,11 @@ void Event::setFrameFromMovement(QString facingDir) {
}
}
// All event groups excepts warps have IDs that start at 1
int Event::getIndexOffset(QString group_type) {
return (group_type == EventGroup::Warp) ? 0 : 1;
}
bool Event::isValidType(QString event_type) {
return EventTypeTable.contains(event_type);
}

View file

@ -719,10 +719,9 @@ void MainWindow::openWarpMap(QString map_name, QString event_id, QString event_g
}
// Select the target event.
if (event_group != EventGroup::Warp && event_index)
event_index--;
event_index -= Event::getIndexOffset(event_group);
QList<Event*> events = editor->map->events[event_group];
if (events.length() > event_index) {
if (event_index < events.length() && event_index >= 0) {
Event *event = events.at(event_index);
for (DraggablePixmapItem *item : editor->getObjects()) {
if (item->event == event) {
@ -1946,9 +1945,7 @@ void MainWindow::updateSelectedObjects() {
QString event_type = item->event->get("event_type");
QString event_group_type = item->event->get("event_group_type");
QString map_name = item->event->get("map_name");
int event_offs;
if (event_type == EventType::Warp) { event_offs = 0; }
else { event_offs = 1; }
int event_offs = Event::getIndexOffset(event_group_type);
frame->ui->label_name->setText(QString("%1 Id").arg(event_type));
if (events.count() == 1)
@ -2453,7 +2450,7 @@ void MainWindow::eventTabChanged(int index) {
void MainWindow::selectedEventIndexChanged(int index)
{
QString group = getEventGroupFromTabWidget(ui->tabWidget_EventType->currentWidget());
int event_offs = group == EventGroup::Warp ? 0 : 1;
int event_offs = Event::getIndexOffset(group);
Event *event = editor->map->events.value(group).at(index - event_offs);
DraggablePixmapItem *selectedEvent = nullptr;
for (QGraphicsItem *child : editor->events_group->childItems()) {