Add in_connection to object events
This commit is contained in:
parent
7125cd7c8d
commit
8d89b370b4
3 changed files with 64 additions and 29 deletions
|
@ -59,6 +59,9 @@ Event* Event::createNewObjectEvent(Project *project)
|
||||||
event->put("event_type", EventType::Object);
|
event->put("event_type", EventType::Object);
|
||||||
event->put("sprite", project->getEventObjGfxConstants().keys().first());
|
event->put("sprite", project->getEventObjGfxConstants().keys().first());
|
||||||
event->put("movement_type", project->movementTypes->first());
|
event->put("movement_type", project->movementTypes->first());
|
||||||
|
if (projectConfig.getBaseGameVersion() == BaseGameVersion::pokefirered) {
|
||||||
|
event->put("in_connection", false);
|
||||||
|
}
|
||||||
event->put("radius_x", 0);
|
event->put("radius_x", 0);
|
||||||
event->put("radius_y", 0);
|
event->put("radius_y", 0);
|
||||||
event->put("script_label", "NULL");
|
event->put("script_label", "NULL");
|
||||||
|
@ -163,19 +166,36 @@ QMap<QString, bool> Event::getExpectedFields()
|
||||||
{
|
{
|
||||||
QString type = this->get("event_type");
|
QString type = this->get("event_type");
|
||||||
if (type == EventType::Object) {
|
if (type == EventType::Object) {
|
||||||
return QMap<QString, bool> {
|
if (projectConfig.getBaseGameVersion() == BaseGameVersion::pokefirered) {
|
||||||
{"graphics_id", true},
|
return QMap<QString, bool> {
|
||||||
{"x", true},
|
{"graphics_id", true},
|
||||||
{"y", true},
|
{"in_connection", true},
|
||||||
{"elevation", true},
|
{"x", true},
|
||||||
{"movement_type", true},
|
{"y", true},
|
||||||
{"movement_range_x", true},
|
{"elevation", true},
|
||||||
{"movement_range_y", true},
|
{"movement_type", true},
|
||||||
{"trainer_type", true},
|
{"movement_range_x", true},
|
||||||
{"trainer_sight_or_berry_tree_id", true},
|
{"movement_range_y", true},
|
||||||
{"script", true},
|
{"trainer_type", true},
|
||||||
{"flag", true},
|
{"trainer_sight_or_berry_tree_id", true},
|
||||||
};
|
{"script", true},
|
||||||
|
{"flag", true},
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
return QMap<QString, bool> {
|
||||||
|
{"graphics_id", true},
|
||||||
|
{"x", true},
|
||||||
|
{"y", true},
|
||||||
|
{"elevation", true},
|
||||||
|
{"movement_type", true},
|
||||||
|
{"movement_range_x", true},
|
||||||
|
{"movement_range_y", true},
|
||||||
|
{"trainer_type", true},
|
||||||
|
{"trainer_sight_or_berry_tree_id", true},
|
||||||
|
{"script", true},
|
||||||
|
{"flag", true},
|
||||||
|
};
|
||||||
|
}
|
||||||
} else if (type == EventType::Warp) {
|
} else if (type == EventType::Warp) {
|
||||||
return QMap<QString, bool> {
|
return QMap<QString, bool> {
|
||||||
{"x", true},
|
{"x", true},
|
||||||
|
@ -270,6 +290,9 @@ QJsonObject Event::buildObjectEventJSON()
|
||||||
{
|
{
|
||||||
QJsonObject eventObj;
|
QJsonObject eventObj;
|
||||||
eventObj["graphics_id"] = this->get("sprite");
|
eventObj["graphics_id"] = this->get("sprite");
|
||||||
|
if (projectConfig.getBaseGameVersion() == BaseGameVersion::pokefirered) {
|
||||||
|
eventObj["in_connection"] = this->getInt("in_connection") > 0 || this->get("in_connection") == "TRUE";
|
||||||
|
}
|
||||||
eventObj["x"] = this->getU16("x");
|
eventObj["x"] = this->getU16("x");
|
||||||
eventObj["y"] = this->getU16("y");
|
eventObj["y"] = this->getU16("y");
|
||||||
eventObj["elevation"] = this->getInt("elevation");
|
eventObj["elevation"] = this->getInt("elevation");
|
||||||
|
|
|
@ -1401,6 +1401,7 @@ void MainWindow::updateSelectedObjects() {
|
||||||
field_labels["radius_y"] = "Movement Radius Y";
|
field_labels["radius_y"] = "Movement Radius Y";
|
||||||
field_labels["trainer_type"] = "Trainer Type";
|
field_labels["trainer_type"] = "Trainer Type";
|
||||||
field_labels["sight_radius_tree_id"] = "Sight Radius / Berry Tree ID";
|
field_labels["sight_radius_tree_id"] = "Sight Radius / Berry Tree ID";
|
||||||
|
field_labels["in_connection"] = "In Connection";
|
||||||
field_labels["destination_warp"] = "Destination Warp";
|
field_labels["destination_warp"] = "Destination Warp";
|
||||||
field_labels["destination_map_name"] = "Destination Map";
|
field_labels["destination_map_name"] = "Destination Map";
|
||||||
field_labels["script_var"] = "Var";
|
field_labels["script_var"] = "Var";
|
||||||
|
@ -1439,6 +1440,9 @@ void MainWindow::updateSelectedObjects() {
|
||||||
fields << "event_flag";
|
fields << "event_flag";
|
||||||
fields << "trainer_type";
|
fields << "trainer_type";
|
||||||
fields << "sight_radius_tree_id";
|
fields << "sight_radius_tree_id";
|
||||||
|
if (projectConfig.getBaseGameVersion() == BaseGameVersion::pokefirered) {
|
||||||
|
fields << "in_connection";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (event_type == EventType::Warp) {
|
else if (event_type == EventType::Warp) {
|
||||||
fields << "destination_map_name";
|
fields << "destination_map_name";
|
||||||
|
@ -1487,7 +1491,7 @@ void MainWindow::updateSelectedObjects() {
|
||||||
// Some keys shouldn't use a combobox. This isn't very scalable
|
// Some keys shouldn't use a combobox. This isn't very scalable
|
||||||
if (key == "quantity") {
|
if (key == "quantity") {
|
||||||
spin = new NoScrollSpinBox(widget);
|
spin = new NoScrollSpinBox(widget);
|
||||||
} else if (key == "underfoot") {
|
} else if (key == "underfoot" || key == "in_connection") {
|
||||||
check = new QCheckBox(widget);
|
check = new QCheckBox(widget);
|
||||||
} else {
|
} else {
|
||||||
combo = new NoScrollComboBox(widget);
|
combo = new NoScrollComboBox(widget);
|
||||||
|
@ -1533,22 +1537,8 @@ void MainWindow::updateSelectedObjects() {
|
||||||
} else if (key == "quantity") {
|
} else if (key == "quantity") {
|
||||||
spin->setToolTip("The number of items received when the hidden item is picked up.");
|
spin->setToolTip("The number of items received when the hidden item is picked up.");
|
||||||
spin->setMaximum(127);
|
spin->setMaximum(127);
|
||||||
connect(spin, QOverload<int>::of(&NoScrollSpinBox::valueChanged), [item, key](int value) {
|
|
||||||
item->event->put(key, value);
|
|
||||||
});
|
|
||||||
} else if (key == "underfoot") {
|
} else if (key == "underfoot") {
|
||||||
check->setToolTip("If checked, hidden item can only be picked up using the Itemfinder");
|
check->setToolTip("If checked, hidden item can only be picked up using the Itemfinder");
|
||||||
connect(check, &QCheckBox::stateChanged, [item, key](int state) {
|
|
||||||
switch (state)
|
|
||||||
{
|
|
||||||
case Qt::Checked:
|
|
||||||
item->event->put(key, true);
|
|
||||||
break;
|
|
||||||
case Qt::Unchecked:
|
|
||||||
item->event->put(key, false);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else if (key == "flag" || key == "event_flag") {
|
} else if (key == "flag" || key == "event_flag") {
|
||||||
if (!editor->project->flagNames->contains(value)) {
|
if (!editor->project->flagNames->contains(value)) {
|
||||||
combo->addItem(value);
|
combo->addItem(value);
|
||||||
|
@ -1616,6 +1606,8 @@ void MainWindow::updateSelectedObjects() {
|
||||||
combo->setToolTip("The maximum sight range of a trainer,\n"
|
combo->setToolTip("The maximum sight range of a trainer,\n"
|
||||||
"OR the unique id of the berry tree.");
|
"OR the unique id of the berry tree.");
|
||||||
combo->setMinimumContentsLength(4);
|
combo->setMinimumContentsLength(4);
|
||||||
|
} else if (key == "in_connection") {
|
||||||
|
check->setToolTip("Check if object is positioned in the connection to another map.");
|
||||||
} else {
|
} else {
|
||||||
combo->addItem(value);
|
combo->addItem(value);
|
||||||
}
|
}
|
||||||
|
@ -1626,12 +1618,29 @@ void MainWindow::updateSelectedObjects() {
|
||||||
fl->addRow(new QLabel(field_labels[key], widget), spin);
|
fl->addRow(new QLabel(field_labels[key], widget), spin);
|
||||||
widget->setLayout(fl);
|
widget->setLayout(fl);
|
||||||
frame->layout()->addWidget(widget);
|
frame->layout()->addWidget(widget);
|
||||||
} else if (key == "underfoot") {
|
|
||||||
|
connect(spin, QOverload<int>::of(&NoScrollSpinBox::valueChanged), [item, key](int value) {
|
||||||
|
item->event->put(key, value);
|
||||||
|
});
|
||||||
|
|
||||||
|
} else if (key == "underfoot" || key == "in_connection") {
|
||||||
check->setChecked(value.toInt());
|
check->setChecked(value.toInt());
|
||||||
|
|
||||||
fl->addRow(new QLabel(field_labels[key], widget), check);
|
fl->addRow(new QLabel(field_labels[key], widget), check);
|
||||||
widget->setLayout(fl);
|
widget->setLayout(fl);
|
||||||
frame->layout()->addWidget(widget);
|
frame->layout()->addWidget(widget);
|
||||||
|
|
||||||
|
connect(check, &QCheckBox::stateChanged, [item, key](int state) {
|
||||||
|
switch (state)
|
||||||
|
{
|
||||||
|
case Qt::Checked:
|
||||||
|
item->event->put(key, true);
|
||||||
|
break;
|
||||||
|
case Qt::Unchecked:
|
||||||
|
item->event->put(key, false);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
combo->setCurrentText(value);
|
combo->setCurrentText(value);
|
||||||
|
|
||||||
|
|
|
@ -209,6 +209,9 @@ bool Project::loadMapData(Map* map) {
|
||||||
Event *object = new Event(event, EventType::Object);
|
Event *object = new Event(event, EventType::Object);
|
||||||
object->put("map_name", map->name);
|
object->put("map_name", map->name);
|
||||||
object->put("sprite", event["graphics_id"].toString());
|
object->put("sprite", event["graphics_id"].toString());
|
||||||
|
if (projectConfig.getBaseGameVersion() == BaseGameVersion::pokefirered) {
|
||||||
|
object->put("in_connection", event["in_connection"].toBool());
|
||||||
|
}
|
||||||
object->put("x", QString::number(event["x"].toInt()));
|
object->put("x", QString::number(event["x"].toInt()));
|
||||||
object->put("y", QString::number(event["y"].toInt()));
|
object->put("y", QString::number(event["y"].toInt()));
|
||||||
object->put("elevation", QString::number(event["elevation"].toInt()));
|
object->put("elevation", QString::number(event["elevation"].toInt()));
|
||||||
|
|
Loading…
Reference in a new issue