diff --git a/P3D/Screens/VoltorbFlipScreen.vb b/P3D/Screens/VoltorbFlipScreen.vb index 6c7e94d4f..264d0769d 100644 --- a/P3D/Screens/VoltorbFlipScreen.vb +++ b/P3D/Screens/VoltorbFlipScreen.vb @@ -23,6 +23,10 @@ Namespace VoltorbFlip Public Property MaxCoins As Integer = 1 Public Board As List(Of List(Of Tile)) + + Public VoltorbSums As List(Of List(Of Integer)) + Public CoinSums As List(Of List(Of Integer)) + Private GameSize As New Vector2(512, 512) Private TileSize As New Vector2(66, 66) Private GameOrigin As New Vector2(CInt(windowSize.Width - GameSize.X / 2), CInt(windowSize.Height / 2 - GameSize.Y / 2)) @@ -172,6 +176,9 @@ Namespace VoltorbFlip MaxCoins = CInt(Math.Pow(2, Data(0)) * Math.Pow(3, Data(1))) + VoltorbSums = GenerateSums(Board, True) + CoinSums = GenerateSums(Board, False) + Return Board End Function @@ -188,6 +195,67 @@ Namespace VoltorbFlip Return Grid End Function + ''' + ''' Returns amount of either Coins or Voltorbs in each row and column of a grid of tiles + ''' + ''' A grid of Tiles + ''' True returns amount of Voltorbs, False returns amount of Coins + ''' + Private Function GenerateSums(ByVal Board As List(Of List(Of Tile)), ByVal CoinsOrVoltorbs As Boolean) As List(Of List(Of Integer)) + Dim RowSums As New List(Of Integer) + Dim ColumnSums As New List(Of Integer) + Dim RowBombs As New List(Of Integer) + Dim ColumnBombs As New List(Of Integer) + + For _row = 0 To GridSize - 1 + For _column = 0 To GridSize - 1 + If Board(_row)(_column).Value = Tile.Values.Voltorb Then + If RowBombs(_row) = Nothing Then + RowBombs.Add(1) + Else + RowBombs(_row) += 1 + End If + Else + If RowSums(_row) = Nothing Then + RowSums.Add(Board(_row)(_column).Value) + Else + RowSums(_row) += Board(_row)(_column).Value + End If + End If + Next + Next + + For _column = 0 To GridSize - 1 + For _row = 0 To GridSize - 1 + If Board(_row)(_column).Value = Tile.Values.Voltorb Then + If ColumnBombs(_column) = Nothing Then + ColumnBombs.Add(1) + Else + ColumnBombs(_column) += 1 + End If + Else + If ColumnSums(_column) = Nothing Then + ColumnSums.Add(Board(_row)(_column).Value) + Else + ColumnSums(_column) += Board(_row)(_column).Value + End If + End If + Next + Next + + + If CoinsOrVoltorbs = False Then + Dim Sums As New List(Of List(Of Integer)) + Sums.AddRange({RowSums, ColumnSums}) + Return Sums + Else + Dim Voltorbs As New List(Of List(Of Integer)) + Voltorbs.AddRange({RowBombs, ColumnBombs}) + Return Voltorbs + End If + + End Function + Public Function GetCursorOffset(ByVal Column As Integer, ByVal Row As Integer) As Vector2 Dim Offset As Vector2 = New Vector2(Nothing, Nothing) If Column = Not Nothing Then @@ -201,6 +269,7 @@ Namespace VoltorbFlip Public Function GetCurrentTile() As Vector2 Return GetCursorOffset(CInt(BoardCursorDestination.X / TileSize.X), CInt(BoardCursorDestination.Y / TileSize.Y)) End Function + Public Function GetLevelData(ByVal LevelNumber As Integer) As List(Of Integer) Select Case LevelNumber Case 1