Skip to content

Commit

Permalink
Updated GNEStop. Refs #14053
Browse files Browse the repository at this point in the history
  • Loading branch information
palvarezlopez committed Nov 9, 2023
1 parent 9e11d0b commit f2a4bf4
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 19 deletions.
5 changes: 5 additions & 0 deletions src/netedit/elements/GNEAttributeCarrier.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6292,6 +6292,11 @@ GNEAttributeCarrier::fillCommonStopAttributes(SumoXMLTag currentTag, const bool
GNEAttributeProperties::STRING | GNEAttributeProperties::LIST | GNEAttributeProperties::DEFAULTVALUE,
TL("List of elements that must board the vehicle before it may continue"));
myTagProperties[currentTag].addAttribute(attrProperty);

attrProperty = GNEAttributeProperties(SUMO_ATTR_JOIN,
GNEAttributeProperties::STRING | GNEAttributeProperties::DEFAULTVALUE,
TL("Joins this train to another upn reaching the stop"));
myTagProperties[currentTag].addAttribute(attrProperty);
}

attrProperty = GNEAttributeProperties(SUMO_ATTR_PERMITTED,
Expand Down
49 changes: 33 additions & 16 deletions src/netedit/elements/demand/GNEStop.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -442,25 +442,29 @@ GNEStop::getAttribute(SumoXMLAttr key) const {
return "";
}
case SUMO_ATTR_TRIGGERED:
if ((parametersSet & STOP_TRIGGER_SET) == false) {
return "false";
} else if (triggered) {
if (triggered) {
return "person";
} else if (containerTriggered) {
return "container";
} else {
} else if (joinTriggered) {
return "join";
} else {
return "false";
}
case SUMO_ATTR_EXPECTED:
if ((parametersSet & STOP_TRIGGER_SET) == false) {
return "";
} else if (triggered) {
if (triggered) {
return toString(awaitedPersons);
} else if (containerTriggered) {
return toString(awaitedContainers);
} else {
return "";
}
case SUMO_ATTR_JOIN:
if (joinTriggered) {
return join;
} else {
return "";
}
case SUMO_ATTR_PERMITTED:
return toString(permitted);
case SUMO_ATTR_PARKING:
Expand Down Expand Up @@ -625,6 +629,7 @@ GNEStop::setAttribute(SumoXMLAttr key, const std::string& value, GNEUndoList* un
case SUMO_ATTR_EXTENSION:
case SUMO_ATTR_TRIGGERED:
case SUMO_ATTR_EXPECTED:
case SUMO_ATTR_JOIN:
case SUMO_ATTR_PERMITTED:
case SUMO_ATTR_PARKING:
case SUMO_ATTR_ACTTYPE:
Expand Down Expand Up @@ -693,6 +698,12 @@ GNEStop::isValid(SumoXMLAttr key, const std::string& value) {
}
return true;
}
case SUMO_ATTR_JOIN:
if (value.empty()) {
return false;
} else {
return SUMOXMLDefinitions::isValidVehicleID(value);
}
case SUMO_ATTR_PERMITTED: {
const std::vector<std::string> expectedValues = parse<std::vector<std::string> >(value);
for (const auto& expectedValue : expectedValues) {
Expand Down Expand Up @@ -795,8 +806,6 @@ GNEStop::enableAttribute(SumoXMLAttr key, GNEUndoList* undoList) {
case SUMO_ATTR_DURATION:
case SUMO_ATTR_UNTIL:
case SUMO_ATTR_EXTENSION:
case SUMO_ATTR_EXPECTED:
case SUMO_ATTR_EXPECTED_CONTAINERS:
undoList->add(new GNEChange_ToggleAttribute(this, key, true), true);
break;
default:
Expand All @@ -811,8 +820,6 @@ GNEStop::disableAttribute(SumoXMLAttr key, GNEUndoList* undoList) {
case SUMO_ATTR_DURATION:
case SUMO_ATTR_UNTIL:
case SUMO_ATTR_EXTENSION:
case SUMO_ATTR_EXPECTED:
case SUMO_ATTR_EXPECTED_CONTAINERS:
undoList->add(new GNEChange_ToggleAttribute(this, key, false), true);
break;
default:
Expand All @@ -838,11 +845,12 @@ GNEStop::isAttributeEnabled(SumoXMLAttr key) const {
case SUMO_ATTR_EXTENSION:
return (parametersSet & STOP_EXTENSION_SET) != 0;
case SUMO_ATTR_EXPECTED:
return (parametersSet & STOP_TRIGGER_SET) != 0;
return triggered || containerTriggered;
case SUMO_ATTR_JOIN:
return joinTriggered;
case SUMO_ATTR_PARKING:
if (myTagProperty.getTag() == GNE_TAG_STOP_PARKINGAREA) {
return false;
} else if (myTagProperty.getTag() == GNE_TAG_WAYPOINT_PARKINGAREA) {
// for stops/waypoints over parking areas, always enabled
if ((myTagProperty.getTag() == GNE_TAG_STOP_PARKINGAREA) || (myTagProperty.getTag() == GNE_TAG_WAYPOINT_PARKINGAREA)) {
return false;
} else {
return true;
Expand Down Expand Up @@ -1092,7 +1100,7 @@ GNEStop::setAttribute(SumoXMLAttr key, const std::string& value) {
parametersSet &= ~STOP_CONTAINER_TRIGGER_SET;
parametersSet &= ~STOP_EXPECTED_CONTAINERS_SET;
// check value
if (value == "person") {
if ((value == "person") || (value == "true")) {
parametersSet |= STOP_TRIGGER_SET;
triggered = true;
if (awaitedPersons.size() > 0) {
Expand Down Expand Up @@ -1126,6 +1134,15 @@ GNEStop::setAttribute(SumoXMLAttr key, const std::string& value) {
parametersSet &= ~STOP_EXPECTED_CONTAINERS_SET;
}
}
case SUMO_ATTR_JOIN:
if (joinTriggered) {
join = value;
if (join.size() > 0) {
parametersSet |= STOP_JOIN_SET;
} else {
parametersSet &= ~STOP_JOIN_SET;
}
}
break;
case SUMO_ATTR_PERMITTED:
if (value.empty()) {
Expand Down
11 changes: 8 additions & 3 deletions src/netedit/frames/demand/GNEStopFrame.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -432,15 +432,14 @@ GNEStopFrame::getStopParameter(const SumoXMLTag stopTag, const GNELane* lane, co
stop.parametersSet |= STOP_EXTENSION_SET;
}
if (stopBaseObject->hasStringAttribute(SUMO_ATTR_TRIGGERED)) {
if (stopBaseObject->getStringAttribute(SUMO_ATTR_TRIGGERED) == "person") {
if ((stopBaseObject->getStringAttribute(SUMO_ATTR_TRIGGERED) == "person") || (stopBaseObject->getStringAttribute(SUMO_ATTR_TRIGGERED) == "true")) {
stop.parametersSet |= STOP_TRIGGER_SET;
stop.triggered = true;
} else if (stopBaseObject->getStringAttribute(SUMO_ATTR_TRIGGERED) == "container") {
stop.parametersSet |= STOP_TRIGGER_SET;
stop.parametersSet |= STOP_CONTAINER_TRIGGER_SET;
stop.containerTriggered = true;
} else if (stopBaseObject->getStringAttribute(SUMO_ATTR_TRIGGERED) == "join") {
stop.parametersSet |= STOP_TRIGGER_SET;
stop.parametersSet |= STOP_JOIN_SET;
stop.joinTriggered = true;
}
}
Expand All @@ -460,6 +459,12 @@ GNEStopFrame::getStopParameter(const SumoXMLTag stopTag, const GNELane* lane, co
}
}
}
if (stopBaseObject->hasStringAttribute(SUMO_ATTR_JOIN)) {
stop.join = stopBaseObject->getStringAttribute(SUMO_ATTR_JOIN);
if (stop.join.size() > 0) {
stop.parametersSet |= STOP_JOIN_SET;
}
}
if (stopBaseObject->hasStringListAttribute(SUMO_ATTR_PERMITTED)) {
const auto permitted = stopBaseObject->getStringListAttribute(SUMO_ATTR_PERMITTED);
if (permitted.size() > 0) {
Expand Down

0 comments on commit f2a4bf4

Please sign in to comment.