mirror of
https://github.com/P3D-Legacy/P3D-Legacy.git
synced 2025-07-28 00:04:33 +02:00
Started Development on Voltorb Flip
I think... if I've done everything I did so far correctly, I should have a level 1 grid of tiles, it's just not visible yet and you can't interact with it in any way, so I have no idea if it actually does what I want it to do yet XD
This commit is contained in:
parent
0fef783154
commit
ff0111ecdc
@ -31802,6 +31802,7 @@
|
|||||||
<Compile Include="Screens\Pokemon\HatchEggScreen.vb" />
|
<Compile Include="Screens\Pokemon\HatchEggScreen.vb" />
|
||||||
<Compile Include="Screens\Pokemon\LearnAttackScreen.vb" />
|
<Compile Include="Screens\Pokemon\LearnAttackScreen.vb" />
|
||||||
<Compile Include="Screens\Pokemon\NameObjectScreen.vb" />
|
<Compile Include="Screens\Pokemon\NameObjectScreen.vb" />
|
||||||
|
<Compile Include="Screens\VoltorbFlipScreen.vb" />
|
||||||
<Compile Include="Screens\Pokemon\PartyScreen.vb" />
|
<Compile Include="Screens\Pokemon\PartyScreen.vb" />
|
||||||
<Compile Include="Screens\Pokemon\SummaryScreen.vb" />
|
<Compile Include="Screens\Pokemon\SummaryScreen.vb" />
|
||||||
<Compile Include="Screens\Pokemon\TeachMovesScreen.vb" />
|
<Compile Include="Screens\Pokemon\TeachMovesScreen.vb" />
|
||||||
|
@ -91,6 +91,7 @@ Public MustInherit Class Screen
|
|||||||
PressStartScreen
|
PressStartScreen
|
||||||
CharacterSelectionScreen
|
CharacterSelectionScreen
|
||||||
GameModeSelectionScreen
|
GameModeSelectionScreen
|
||||||
|
VoltorbFlipScreen
|
||||||
|
|
||||||
'TEMPORARY, OLD
|
'TEMPORARY, OLD
|
||||||
PokemonScreen
|
PokemonScreen
|
||||||
|
401
P3D/Screens/VoltorbFlipScreen.vb
Normal file
401
P3D/Screens/VoltorbFlipScreen.vb
Normal file
@ -0,0 +1,401 @@
|
|||||||
|
Imports P3D.Screens.UI
|
||||||
|
|
||||||
|
Namespace VoltorbFlip
|
||||||
|
Public Class VoltorbFlipScreen
|
||||||
|
|
||||||
|
Inherits Screen
|
||||||
|
|
||||||
|
'Animation:
|
||||||
|
Private _closing As Boolean = False
|
||||||
|
|
||||||
|
Private _enrollY As Single = 0F
|
||||||
|
Private _interfaceFade As Single = 0F
|
||||||
|
Private _cursorPosition As New Vector2
|
||||||
|
Private _cursorDest As New Vector2
|
||||||
|
|
||||||
|
Public Shared ReadOnly GridSize As Integer = 5
|
||||||
|
Public Property PreviousLevel As Integer = 1
|
||||||
|
Public Property CurrentLevel As Integer = 1
|
||||||
|
Public Property CurrentCoins As Integer = 0
|
||||||
|
Public Property TotalCoins As Integer = 0
|
||||||
|
Public Property MaxCoins As Integer = 1
|
||||||
|
|
||||||
|
'Stuff related to blurred PreScreens
|
||||||
|
Private _preScreenTexture As RenderTarget2D
|
||||||
|
Private _preScreenTarget As RenderTarget2D
|
||||||
|
Private _blurScreens As Identifications() = {Identifications.BattleScreen,
|
||||||
|
Identifications.OverworldScreen,
|
||||||
|
Identifications.DirectTradeScreen,
|
||||||
|
Identifications.WonderTradeScreen,
|
||||||
|
Identifications.GTSSetupScreen,
|
||||||
|
Identifications.GTSTradeScreen,
|
||||||
|
Identifications.PVPLobbyScreen}
|
||||||
|
|
||||||
|
Public Sub New(ByVal currentScreen As Screen)
|
||||||
|
|
||||||
|
CreateBoard(1)
|
||||||
|
|
||||||
|
_preScreenTarget = New RenderTarget2D(GraphicsDevice, windowSize.Width, windowSize.Height, False, SurfaceFormat.Color, DepthFormat.Depth24Stencil8)
|
||||||
|
_blur = New Resources.Blur.BlurHandler(windowSize.Width, windowSize.Height)
|
||||||
|
|
||||||
|
Identification = Identifications.VoltorbFlipScreen
|
||||||
|
PreScreen = currentScreen
|
||||||
|
IsDrawingGradients = True
|
||||||
|
|
||||||
|
Me.MouseVisible = True
|
||||||
|
Me.CanChat = Me.PreScreen.CanChat
|
||||||
|
Me.CanBePaused = Me.PreScreen.CanBePaused
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
|
||||||
|
Public Overrides Sub Draw()
|
||||||
|
If _blurScreens.Contains(PreScreen.Identification) Then
|
||||||
|
DrawPrescreen()
|
||||||
|
Else
|
||||||
|
PreScreen.Draw()
|
||||||
|
End If
|
||||||
|
|
||||||
|
DrawGradients(CInt(255 * _interfaceFade))
|
||||||
|
|
||||||
|
DrawBackground()
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
|
||||||
|
Private _blur As Resources.Blur.BlurHandler
|
||||||
|
|
||||||
|
Private Sub DrawPrescreen()
|
||||||
|
If _preScreenTexture Is Nothing OrElse _preScreenTexture.IsContentLost Then
|
||||||
|
SpriteBatch.EndBatch()
|
||||||
|
|
||||||
|
Dim target As RenderTarget2D = _preScreenTarget
|
||||||
|
GraphicsDevice.SetRenderTarget(target)
|
||||||
|
GraphicsDevice.Clear(BackgroundColor)
|
||||||
|
|
||||||
|
SpriteBatch.BeginBatch()
|
||||||
|
|
||||||
|
PreScreen.Draw()
|
||||||
|
|
||||||
|
SpriteBatch.EndBatch()
|
||||||
|
|
||||||
|
GraphicsDevice.SetRenderTarget(Nothing)
|
||||||
|
|
||||||
|
SpriteBatch.BeginBatch()
|
||||||
|
|
||||||
|
_preScreenTexture = target
|
||||||
|
End If
|
||||||
|
|
||||||
|
If _interfaceFade < 1.0F Then
|
||||||
|
SpriteBatch.Draw(_preScreenTexture, windowSize, Color.White)
|
||||||
|
End If
|
||||||
|
SpriteBatch.Draw(_blur.Perform(_preScreenTexture), windowSize, New Color(255, 255, 255, CInt(255 * _interfaceFade * 2).Clamp(0, 255)))
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
|
||||||
|
Private Sub DrawBackground()
|
||||||
|
Dim mainBackgroundColor As Color = New Color(48, 151, 70)
|
||||||
|
If _closing Then
|
||||||
|
mainBackgroundColor = New Color(48, 151, 70, CInt(255 * _interfaceFade))
|
||||||
|
End If
|
||||||
|
|
||||||
|
Dim halfWidth As Integer = CInt(Core.windowSize.Width / 2)
|
||||||
|
Dim halfHeight As Integer = CInt(Core.windowSize.Height / 2)
|
||||||
|
|
||||||
|
Canvas.DrawRectangle(New Rectangle(halfWidth - 256, halfHeight - 256, 512, 512), mainBackgroundColor)
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Public Function CreateBoard(ByVal Level As Integer) As List(Of List(Of Tile))
|
||||||
|
|
||||||
|
Dim Board As List(Of List(Of Tile)) = CreateGrid()
|
||||||
|
Dim Data As List(Of Integer) = GetLevelData(Level)
|
||||||
|
Dim Spots As List(Of List(Of Integer)) = New List(Of List(Of Integer))
|
||||||
|
|
||||||
|
For i = 0 To Data(0) + Data(1) + Data(2)
|
||||||
|
Dim SpotList As List(Of Integer) = New List(Of Integer)
|
||||||
|
Dim ValueX As Integer = Random.Next(0, 5)
|
||||||
|
Dim ValueY As Integer = Random.Next(0, 5)
|
||||||
|
SpotList.AddRange({ValueX, ValueY})
|
||||||
|
If Spots.Count > 0 Then
|
||||||
|
Dim AddList As Boolean = True
|
||||||
|
For SpotIndex = 0 To Spots.Count - 1
|
||||||
|
If Spots(SpotIndex)(0) = ValueX AndAlso Spots(SpotIndex)(1) = ValueY Then
|
||||||
|
AddList = False
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
If AddList = True Then
|
||||||
|
Spots.Add(SpotList)
|
||||||
|
End If
|
||||||
|
Else
|
||||||
|
Spots.Add(SpotList)
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
|
||||||
|
Dim a = 0
|
||||||
|
While a < Data(0)
|
||||||
|
Dim TileX As Integer = Spots(a)(0)
|
||||||
|
Dim TileY As Integer = Spots(a)(1)
|
||||||
|
|
||||||
|
Board(TileX)(TileY).Value = Tile.Values.Two
|
||||||
|
a += 1
|
||||||
|
End While
|
||||||
|
|
||||||
|
While a < Data(0) + Data(1)
|
||||||
|
Dim TileX As Integer = Spots(a)(0)
|
||||||
|
Dim TileY As Integer = Spots(a)(1)
|
||||||
|
|
||||||
|
Board(TileX)(TileY).Value = Tile.Values.Three
|
||||||
|
a += 1
|
||||||
|
End While
|
||||||
|
|
||||||
|
While a < Data(0) + Data(1) + Data(2)
|
||||||
|
Dim TileX As Integer = Spots(a)(0)
|
||||||
|
Dim TileY As Integer = Spots(a)(1)
|
||||||
|
|
||||||
|
Board(TileX)(TileY).Value = Tile.Values.Voltorb
|
||||||
|
a += 1
|
||||||
|
End While
|
||||||
|
|
||||||
|
MaxCoins = CInt(Math.Pow(2, Data(0)) * Math.Pow(3, Data(1)))
|
||||||
|
|
||||||
|
Return Board
|
||||||
|
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Private Function CreateGrid() As List(Of List(Of Tile))
|
||||||
|
Dim Grid As New List(Of List(Of Tile))
|
||||||
|
For _row = 1 To VoltorbFlipScreen.GridSize
|
||||||
|
Dim Column As New List(Of Tile)
|
||||||
|
For _column = 1 To VoltorbFlipScreen.GridSize
|
||||||
|
Column.Add(New VoltorbFlip.Tile(_row, _column, VoltorbFlip.Tile.Values.One, False))
|
||||||
|
Next
|
||||||
|
Grid.Add(Column)
|
||||||
|
Next
|
||||||
|
Return Grid
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Public Function GetLevelData(ByVal LevelNumber As Integer) As List(Of Integer)
|
||||||
|
Select Case LevelNumber
|
||||||
|
Case 1
|
||||||
|
Dim chance As Integer = CInt(Random.Next(0, 5))
|
||||||
|
Select Case chance
|
||||||
|
Case 0
|
||||||
|
Return {5, 0, 6}.ToList
|
||||||
|
Case 1
|
||||||
|
Return {4, 1, 6}.ToList
|
||||||
|
Case 2
|
||||||
|
Return {3, 1, 6}.ToList
|
||||||
|
Case 3
|
||||||
|
Return {2, 2, 6}.ToList
|
||||||
|
Case 4
|
||||||
|
Return {0, 3, 6}.ToList
|
||||||
|
End Select
|
||||||
|
Case 2
|
||||||
|
Dim chance As Integer = CInt(Random.Next(0, 5))
|
||||||
|
Select Case chance
|
||||||
|
Case 0
|
||||||
|
Return {6, 0, 7}.ToList
|
||||||
|
Case 1
|
||||||
|
Return {5, 1, 7}.ToList
|
||||||
|
Case 2
|
||||||
|
Return {3, 2, 7}.ToList
|
||||||
|
Case 3
|
||||||
|
Return {1, 3, 7}.ToList
|
||||||
|
Case 4
|
||||||
|
Return {0, 4, 7}.ToList
|
||||||
|
End Select
|
||||||
|
Case 3
|
||||||
|
Dim chance As Integer = CInt(Random.Next(0, 5))
|
||||||
|
Select Case chance
|
||||||
|
Case 0
|
||||||
|
Return {7, 0, 8}.ToList
|
||||||
|
Case 1
|
||||||
|
Return {6, 1, 8}.ToList
|
||||||
|
Case 2
|
||||||
|
Return {4, 2, 8}.ToList
|
||||||
|
Case 3
|
||||||
|
Return {2, 3, 8}.ToList
|
||||||
|
Case 4
|
||||||
|
Return {1, 4, 8}.ToList
|
||||||
|
End Select
|
||||||
|
Case 4
|
||||||
|
Dim chance As Integer = CInt(Random.Next(0, 5))
|
||||||
|
Select Case chance
|
||||||
|
Case 0
|
||||||
|
Return {8, 0, 10}.ToList
|
||||||
|
Case 1
|
||||||
|
Return {5, 2, 10}.ToList
|
||||||
|
Case 2
|
||||||
|
Return {3, 3, 8}.ToList
|
||||||
|
Case 3
|
||||||
|
Return {2, 4, 10}.ToList
|
||||||
|
Case 4
|
||||||
|
Return {0, 5, 8}.ToList
|
||||||
|
End Select
|
||||||
|
Case 5
|
||||||
|
Dim chance As Integer = CInt(Random.Next(0, 5))
|
||||||
|
Select Case chance
|
||||||
|
Case 0
|
||||||
|
Return {9, 0, 10}.ToList
|
||||||
|
Case 1
|
||||||
|
Return {7, 1, 10}.ToList
|
||||||
|
Case 2
|
||||||
|
Return {6, 2, 10}.ToList
|
||||||
|
Case 3
|
||||||
|
Return {4, 3, 10}.ToList
|
||||||
|
Case 4
|
||||||
|
Return {1, 5, 10}.ToList
|
||||||
|
End Select
|
||||||
|
Case 6
|
||||||
|
Dim chance As Integer = CInt(Random.Next(0, 5))
|
||||||
|
Select Case chance
|
||||||
|
Case 0
|
||||||
|
Return {8, 1, 10}.ToList
|
||||||
|
Case 1
|
||||||
|
Return {5, 3, 10}.ToList
|
||||||
|
Case 2
|
||||||
|
Return {3, 4, 10}.ToList
|
||||||
|
Case 3
|
||||||
|
Return {2, 5, 10}.ToList
|
||||||
|
Case 4
|
||||||
|
Return {0, 6, 10}.ToList
|
||||||
|
End Select
|
||||||
|
Case 7
|
||||||
|
Dim chance As Integer = CInt(Random.Next(0, 5))
|
||||||
|
Select Case chance
|
||||||
|
Case 0
|
||||||
|
Return {9, 1, 13}.ToList
|
||||||
|
Case 1
|
||||||
|
Return {7, 2, 10}.ToList
|
||||||
|
Case 2
|
||||||
|
Return {6, 3, 10}.ToList
|
||||||
|
Case 3
|
||||||
|
Return {4, 4, 10}.ToList
|
||||||
|
Case 4
|
||||||
|
Return {1, 6, 13}.ToList
|
||||||
|
End Select
|
||||||
|
Case Else
|
||||||
|
Return Nothing
|
||||||
|
End Select
|
||||||
|
|
||||||
|
Return Nothing
|
||||||
|
End Function
|
||||||
|
|
||||||
|
Protected Overrides Function GetFontRenderer() As SpriteBatch
|
||||||
|
If IsCurrentScreen() And _interfaceFade + 0.01F >= 1.0F Then
|
||||||
|
Return FontRenderer
|
||||||
|
Else
|
||||||
|
Return SpriteBatch
|
||||||
|
End If
|
||||||
|
End Function
|
||||||
|
|
||||||
|
|
||||||
|
Public Overrides Sub Update()
|
||||||
|
|
||||||
|
If KeyBoardHandler.KeyPressed(KeyBindings.BackKey1) = True Then
|
||||||
|
SetScreen(Me.PreScreen)
|
||||||
|
End If
|
||||||
|
If _closing Then
|
||||||
|
If _interfaceFade > 0F Then
|
||||||
|
_interfaceFade = MathHelper.Lerp(0, _interfaceFade, 0.8F)
|
||||||
|
If _interfaceFade < 0F Then
|
||||||
|
_interfaceFade = 0F
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
If _enrollY > 0 Then
|
||||||
|
_enrollY = MathHelper.Lerp(0, _enrollY, 0.8F)
|
||||||
|
If _enrollY <= 0 Then
|
||||||
|
_enrollY = 0
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
If _enrollY <= 2.0F Then
|
||||||
|
SetScreen(PreScreen)
|
||||||
|
End If
|
||||||
|
Else
|
||||||
|
|
||||||
|
Dim maxWindowHeight As Integer = 400
|
||||||
|
If _enrollY < maxWindowHeight Then
|
||||||
|
_enrollY = MathHelper.Lerp(maxWindowHeight, _enrollY, 0.8F)
|
||||||
|
If _enrollY >= maxWindowHeight Then
|
||||||
|
_enrollY = maxWindowHeight
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
If _interfaceFade < 1.0F Then
|
||||||
|
_interfaceFade = MathHelper.Lerp(1, _interfaceFade, 0.95F)
|
||||||
|
If _interfaceFade > 1.0F Then
|
||||||
|
_interfaceFade = 1.0F
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
|
||||||
|
|
||||||
|
End If
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
End Class
|
||||||
|
|
||||||
|
Public Class Tile
|
||||||
|
Public Enum Values
|
||||||
|
Voltorb
|
||||||
|
One
|
||||||
|
Two
|
||||||
|
Three
|
||||||
|
End Enum
|
||||||
|
Public Property Row As Integer = 0
|
||||||
|
Public Property Column As Integer = 0
|
||||||
|
Public Property Value As Integer = Tile.Values.Voltorb
|
||||||
|
Public Property Flipped As Boolean = False
|
||||||
|
Private Property Memo1 As Boolean = False
|
||||||
|
Private Property Memo2 As Boolean = False
|
||||||
|
Private Property Memo3 As Boolean = False
|
||||||
|
Private Property Memo4 As Boolean = False
|
||||||
|
|
||||||
|
Public Sub Flip()
|
||||||
|
If Flipped = False Then
|
||||||
|
Flipped = True
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
Public Sub Reset()
|
||||||
|
Row = 0
|
||||||
|
Column = 0
|
||||||
|
Value = Tile.Values.Voltorb
|
||||||
|
Flipped = False
|
||||||
|
End Sub
|
||||||
|
Public Function GetMemo(ByVal MemoNumber As Integer) As Boolean
|
||||||
|
Select Case MemoNumber
|
||||||
|
Case 1
|
||||||
|
Return Memo1
|
||||||
|
Case 2
|
||||||
|
Return Memo2
|
||||||
|
Case 3
|
||||||
|
Return Memo3
|
||||||
|
Case 3
|
||||||
|
Return Memo4
|
||||||
|
Case Else
|
||||||
|
Return Nothing
|
||||||
|
End Select
|
||||||
|
End Function
|
||||||
|
Public Sub SetMemo(ByVal MemoNumber As Integer, ByVal Value As Boolean)
|
||||||
|
Select Case MemoNumber
|
||||||
|
Case Tile.Values.Voltorb
|
||||||
|
Memo1 = Value
|
||||||
|
Case Tile.Values.One
|
||||||
|
Memo2 = Value
|
||||||
|
Case Tile.Values.Two
|
||||||
|
Memo3 = Value
|
||||||
|
Case Tile.Values.Three
|
||||||
|
Memo4 = Value
|
||||||
|
End Select
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Public Sub New(ByVal Row As Integer, ByVal Column As Integer, ByVal Value As Integer, ByVal Flipped As Boolean)
|
||||||
|
Me.Row = Row
|
||||||
|
Me.Column = Column
|
||||||
|
Me.Value = Value
|
||||||
|
Me.Flipped = Flipped
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
End Class
|
||||||
|
|
||||||
|
End Namespace
|
Loading…
x
Reference in New Issue
Block a user