Hi there,
I’m facing a problem I’ve faced a few times in the past and have always been able to work around using the goto keyword, though I know this is a very bad habit to get into and I’m hoping someone might help suggest an alternate solution.
//if TileSpace contains a tile conflicting with conditions, return
for (int j = 0; j < baseContent.Count; j++)
{
if (baseTile.Contains(baseContent[j]) == baseContentCondition)
{
goto End:
}
}
The code above checks a list of strings and if they meet a specified condition, the iteration of the initial loop ends, but I don’t know how to break from this loop and skip the code below without having a boolean check (ie if(baseTile.Contains(baseContent[j]) == baseContentCondition) is true, set a bool to true and break, and then check that bool to see whether to skip the rest of the code.
private void ConditionalTilePlacement(string resourceName, int offsetX, int offsetY, bool baseContentCondition, List<string> baseContent, bool targetContentCondition, List<string> targetContent)
{
int childCount = transform.childCount;
//loop for all children of MapGen
for (int i = 0; i < childCount; i++)
{
TileSpace baseTile = transform.GetChild(i).GetComponent<TileSpace>();
//if TileSpace contains a tile conflicting with conditions, return
for (int j = 0; j < baseContent.Count; j++)
{
if (baseTile.Contains(baseContent[j]) == baseContentCondition)
{
goto End:
}
}
//if target tilespaces does not exist, create new tile at target
if (!tileSpaces[baseTile.X + offsetX, baseTile.Y + offsetY])
{
NewTile(baseTile.X + offsetX, baseTile.Y + offsetY);
}
//if Target TileSpace contains a tile conflicting with conditions, return
for (int j2o = 0; j2o < targetContent.Count; j2o++)
{
if (tileSpaces[baseTile.X + offsetX, baseTile.Y + offsetY].Contains(targetContent[j2o]) != targetContentCondition)
{
continue;
}
}
//create tile on target, in tilespaces
tileSpaces[baseTile.X + offsetX, baseTile.Y + offsetY].Add(m_resources.Get(resourceName), resourceName);
End:
}
}
Bit of an odd question, but if anyone has any suggestions please let me know, and sorry if I’ve worded my question poorly.