/// <summary>TODO</summary> public static HexsideCosts EntryCosts <THex>(BoardStorage <Maybe <THex> > boardHexes, HexCoords hexCoords) where THex : IHex { return(new HexsideCosts(hexside => DirectedCost(boardHexes, hexCoords.GetNeighbour(hexside), hexside.Reversed))); }
/// <summary>TODO</summary> public static short?DirectedCost <THex>(BoardStorage <Maybe <THex> > boardHexes, HexCoords hexCoords, Hexside hexside) where THex : IHex { return(boardHexes[hexCoords].Bind(hex => hex.TryStepCost(hexside).ToMaybe()).ToNullable()); }
/// <summary>TODO</summary> public static HexsideCosts ExitCosts <THex>(BoardStorage <Maybe <THex> > boardHexes, HexCoords hexCoords) where THex : IHex { return(new HexsideCosts(hexside => DirectedCost(boardHexes, hexCoords, hexside))); }