Skip to content

Commit 49b5296

Browse files
authored
Merge pull request #1154 from CitiesSkylinesMods/refactoring/ALL_BOOL
Removed weird foreach over { false, true } hack.
2 parents eb43e13 + 77525c4 commit 49b5296

File tree

4 files changed

+45
-40
lines changed

4 files changed

+45
-40
lines changed

TLM/TLM/Constants.cs

-5
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,6 @@ public static class Constants {
1111
/// </summary>
1212
public const float BYTE_TO_FLOAT_SCALE = 1f / 255f;
1313

14-
/// <summary>
15-
/// Array of boolean to allow creating foreach loops
16-
/// </summary>
17-
public static readonly bool[] ALL_BOOL = { false, true };
18-
1914
/// <summary>
2015
/// Conversion rate from km/h to game speed (also exists in TrafficManager.API.Constants)
2116
/// </summary>

TLM/TLM/Manager/Impl/JunctionRestrictionsManager.cs

+11-8
Original file line numberDiff line numberDiff line change
@@ -160,17 +160,20 @@ public void RemoveJunctionRestrictionsIfNecessary(ushort nodeId) {
160160
}
161161

162162
protected override void HandleInvalidSegment(ref ExtSegment seg) {
163-
foreach (bool startNode in Constants.ALL_BOOL) {
164-
SegmentEndFlags flags = startNode
165-
? segmentFlags_[seg.segmentId].startNodeFlags
166-
: segmentFlags_[seg.segmentId].endNodeFlags;
163+
HandleInvalidSegment(ref seg, false);
164+
HandleInvalidSegment(ref seg, true);
165+
}
167166

168-
if (!flags.IsDefault()) {
169-
AddInvalidSegmentEndFlags(seg.segmentId, startNode, ref flags);
170-
}
167+
private void HandleInvalidSegment(ref ExtSegment seg, bool startNode) {
168+
SegmentEndFlags flags = startNode
169+
? segmentFlags_[seg.segmentId].startNodeFlags
170+
: segmentFlags_[seg.segmentId].endNodeFlags;
171171

172-
segmentFlags_[seg.segmentId].Reset(startNode, true);
172+
if (!flags.IsDefault()) {
173+
AddInvalidSegmentEndFlags(seg.segmentId, startNode, ref flags);
173174
}
175+
176+
segmentFlags_[seg.segmentId].Reset(startNode, true);
174177
}
175178

176179
protected override void HandleValidSegment(ref ExtSegment seg) {

TLM/TLM/Util/PriorityRoad.cs

+13-9
Original file line numberDiff line numberDiff line change
@@ -155,19 +155,23 @@ public static IRecordable FixRoad(List<ushort> segmentList) {
155155
}
156156

157157
foreach (ushort segmentId in segmentList) {
158-
foreach (bool startNode in Constants.ALL_BOOL) {
159-
ushort nodeId = netService.GetSegmentNodeId(segmentId, startNode);
160-
bool isEndNode = nodeId == firstNodeId || nodeId == lastNodeId;
161-
if (isEndNode) {
162-
FixHighPriorityJunction(nodeId);
163-
} else {
164-
FixHighPriorityJunction(nodeId, segmentList);
165-
}
166-
}
158+
FixHighPriorityJunction(segmentId, firstNodeId, lastNodeId, segmentList, false);
159+
FixHighPriorityJunction(segmentId, firstNodeId, lastNodeId, segmentList, true);
167160
}
161+
168162
return record;
169163
}
170164

165+
private static void FixHighPriorityJunction(ushort segmentId, ushort firstNodeId, ushort lastNodeId, List<ushort> segmentList, bool startNode) {
166+
ushort nodeId = netService.GetSegmentNodeId(segmentId, startNode);
167+
bool isEndNode = nodeId == firstNodeId || nodeId == lastNodeId;
168+
if (isEndNode) {
169+
FixHighPriorityJunction(nodeId);
170+
} else {
171+
FixHighPriorityJunction(nodeId, segmentList);
172+
}
173+
}
174+
171175
private static bool IsStraighOneWay(ushort segmentId0, ushort segmentId1) {
172176
ref NetSegment seg0 = ref GetSeg(segmentId0);
173177
//ref NetSegment seg1 = ref GetSeg(segmentId1);

TLM/TLM/Util/RoundaboutMassEdit.cs

+21-18
Original file line numberDiff line numberDiff line change
@@ -106,31 +106,34 @@ ref GetNode(nodeId),
106106
}
107107

108108
internal static void FixRulesRoundabout(ushort segmentId) {
109-
foreach (bool startNode in Constants.ALL_BOOL) {
110-
if (OptionsMassEditTab.RoundAboutQuickFix_PrioritySigns) {
111-
TrafficPriorityManager.Instance.SetPrioritySign(
112-
segmentId,
113-
startNode,
114-
PriorityType.Main);
115-
}
109+
FixRulesRoundabout(segmentId, false);
110+
FixRulesRoundabout(segmentId, true);
111+
}
116112

117-
ushort nodeId = netService.GetSegmentNodeId(
113+
private static void FixRulesRoundabout(ushort segmentId, bool startNode) {
114+
if (OptionsMassEditTab.RoundAboutQuickFix_PrioritySigns) {
115+
TrafficPriorityManager.Instance.SetPrioritySign(
118116
segmentId,
119-
startNode);
117+
startNode,
118+
PriorityType.Main);
119+
}
120120

121-
ExtSegmentEnd curEnd = GetSegEnd(segmentId, startNode);
121+
ushort nodeId = netService.GetSegmentNodeId(
122+
segmentId,
123+
startNode);
122124

123-
if (OptionsMassEditTab.RoundAboutQuickFix_NoCrossMainR) {
124-
JunctionRestrictionsManager.Instance.SetPedestrianCrossingAllowed(
125-
segmentId,
126-
startNode,
127-
false);
128-
}
129-
JunctionRestrictionsManager.Instance.SetEnteringBlockedJunctionAllowed(
125+
ExtSegmentEnd curEnd = GetSegEnd(segmentId, startNode);
126+
127+
if (OptionsMassEditTab.RoundAboutQuickFix_NoCrossMainR) {
128+
JunctionRestrictionsManager.Instance.SetPedestrianCrossingAllowed(
130129
segmentId,
131130
startNode,
132-
true);
131+
false);
133132
}
133+
JunctionRestrictionsManager.Instance.SetEnteringBlockedJunctionAllowed(
134+
segmentId,
135+
startNode,
136+
true);
134137
}
135138

136139
internal static void FixRulesMinor(ushort segmentId, ushort nodeId) {

0 commit comments

Comments
 (0)