Add getIndexOffset, change expected event fields to QSet
This commit is contained in:
parent
300d153849
commit
af0abaa38d
3 changed files with 25 additions and 22 deletions
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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()) {
|
||||
|
|
Loading…
Reference in a new issue