|
|
@@ -142,6 +142,7 @@ namespace D17.Bonus
|
|
|
|
|
|
rwater.Remove(water);
|
|
|
if (!rwater.ContainsKey(source)) rwater.Add(source, (source.x, source.y - 1));
|
|
|
+ map[source] = EnumType.RunningWater;
|
|
|
}
|
|
|
|
|
|
private static bool CanConvertToStillWater(Dictionary<(int x, int y), EnumType> map, IDictionary<(int x, int y), (int x, int y)> rwater, (int x, int y) water, (int x, int y) source, out int maxX, out int minX)
|
|
|
@@ -153,22 +154,14 @@ namespace D17.Bonus
|
|
|
{
|
|
|
maxX = x;
|
|
|
var res = map.TryGetValue((x, water.y), out var type);
|
|
|
- if (res == false)
|
|
|
- {
|
|
|
- canConvert = false;
|
|
|
- if (!rwater.ContainsKey((x - 1, water.y))) rwater.Add((x - 1, water.y), source);
|
|
|
- }
|
|
|
+ if (res == false) canConvert = false;
|
|
|
else if (type == EnumType.Clay) break;
|
|
|
}
|
|
|
for (int x = water.x; canConvert; --x) // right to left
|
|
|
{
|
|
|
minX = x;
|
|
|
var res = map.TryGetValue((x, water.y), out var type);
|
|
|
- if (res == false)
|
|
|
- {
|
|
|
- canConvert = false;
|
|
|
- if (!rwater.ContainsKey((x + 1, water.y))) rwater.Add((x + 1, water.y), source);
|
|
|
- }
|
|
|
+ if (res == false) canConvert = false;
|
|
|
else if (type == EnumType.Clay) break;
|
|
|
}
|
|
|
|