P3D-Legacy/P3D/Screens/TradeScreen.vb

1305 lines
50 KiB
VB.net
Raw Normal View History

2016-09-19 03:26:44 +02:00
Public Class TradeScreen
2016-09-07 18:50:38 +02:00
Inherits Screen
#Region "Navigation"
Private Enum MenuStates
MainPage
BuyItems
SellItems
BuyItemsCategory
SellItemsCategory
SellItemsConfirmation
End Enum
Private MenuState As MenuStates = MenuStates.MainPage
2016-09-20 02:18:12 +02:00
Private CurrentCategory As Items.ItemTypes = Items.ItemTypes.Medicine
2016-09-07 18:50:38 +02:00
Private MainCursor As Integer = 0
Private CategoryCursor As Integer = 0
Private BuySellCursor As Integer = 0
Private BuySellScroll As Integer = 0
Private CategoryScroll As Integer = 0
Private Property Scroll() As Integer
Get
Select Case Me.MenuState
Case MenuStates.MainPage
Return 0
Case MenuStates.BuyItems, MenuStates.SellItems, MenuStates.SellItemsConfirmation
Return BuySellScroll
Case MenuStates.BuyItemsCategory, MenuStates.SellItemsCategory
Return CategoryScroll
End Select
Return 0
End Get
Set(value As Integer)
Select Case Me.MenuState
Case MenuStates.BuyItems, MenuStates.SellItems, MenuStates.SellItemsConfirmation
Me.BuySellScroll = value
Case MenuStates.BuyItemsCategory, MenuStates.SellItemsCategory
Me.CategoryScroll = value
End Select
End Set
End Property
Private Property Cursor() As Integer
Get
Select Case Me.MenuState
Case MenuStates.MainPage
Return MainCursor
Case MenuStates.BuyItems, MenuStates.SellItems, MenuStates.SellItemsConfirmation
Return BuySellCursor
Case MenuStates.BuyItemsCategory, MenuStates.SellItemsCategory
Return CategoryCursor
End Select
Return 0
End Get
Set(value As Integer)
Select Case Me.MenuState
Case MenuStates.MainPage
MainCursor = value
Case MenuStates.BuyItems, MenuStates.SellItems, MenuStates.SellItemsConfirmation
BuySellCursor = value
Case MenuStates.BuyItemsCategory, MenuStates.SellItemsCategory
CategoryCursor = value
End Select
End Set
End Property
#End Region
Public Enum Currencies
Pokédollar
BattlePoints
End Enum
''' <summary>
''' Contains definitions for an item that can be traded in a store.
''' </summary>
Public Structure TradeItem
''' <summary>
''' Creates a new instance of the TradeItem structure.
''' </summary>
''' <param name="ItemID">The ID of the Item.</param>
''' <param name="Price">The Price of the Item. Leave -1 for automatic Price.</param>
''' <param name="Amount">The Amount of the Item available in the store. Leave -1 for infinite.</param>
Public Sub New(ByVal ItemID As Integer, ByVal Amount As Integer, ByVal Price As Integer, ByVal Currency As Currencies)
Me.ItemID = ItemID
Me.Amount = Amount
If Price = -1 Then
Dim i As Item = Me.GetItem()
If Currency = Currencies.BattlePoints Then
Me.Price = i.BattlePointsPrice
ElseIf Currency = Currencies.Pokédollar Then
2016-09-20 02:18:12 +02:00
Me.Price = i.PokeDollarPrice
2016-09-07 18:50:38 +02:00
End If
Else
Me.Price = Price
End If
End Sub
Public ItemID As Integer
Public Price As Integer
Public Amount As Integer
''' <summary>
''' Returns the Item that is associated with this TradeItem instance.
''' </summary>
Public Function GetItem() As Item
Return Item.GetItemByID(Me.ItemID)
End Function
Public Function SellPrice() As Integer
Return CInt(Math.Ceiling(Me.Price / 2))
End Function
End Structure
Private TradeItems As New List(Of TradeItem)
Private CanBuyItems As Boolean = True
Private CanSellItems As Boolean = True
Private Currency As Currencies = Currencies.Pokédollar
Dim texture As Texture2D
Dim TileOffset As Integer = 0
Dim Title As String = ""
''' <summary>
''' Creates a new instance of the TradeScreen class.
''' </summary>
''' <param name="currentScreen">The screen that is the current active screen.</param>
''' <param name="storeString">The string defining what the store sells. Format: {ItemID|Amount|Price}</param>
Public Sub New(ByVal currentScreen As Screen, ByVal storeString As String, ByVal canBuy As Boolean, ByVal canSell As Boolean, ByVal currencyIndicator As String)
Me.PreScreen = currentScreen
Dim itemArr = storeString.Split({"}"}, StringSplitOptions.RemoveEmptyEntries)
Me.SetCurrency(currencyIndicator)
For Each lItem As String In itemArr
lItem = lItem.Remove(0, 1)
Dim itemData = lItem.Split(CChar("|"))
Me.TradeItems.Add(New TradeItem(ScriptConversion.ToInteger(itemData(0)), ScriptConversion.ToInteger(itemData(1)), ScriptConversion.ToInteger(itemData(2)), Me.Currency))
Next
Me.texture = TextureManager.GetTexture("GUI\Menus\General")
Me.MouseVisible = True
Me.CanMuteMusic = True
Me.CanBePaused = True
Me.CanBuyItems = canBuy
Me.CanSellItems = canSell
Me.Title = "Store"
Me.CreateMainMenuButtons()
End Sub
Private Sub CreateMainMenuButtons()
If mainMenuButtons.Count = 0 Then
If CanBuyItems = True Then
mainMenuButtons.Add("Buy")
End If
If CanSellItems = True Then
mainMenuButtons.Add("Sell")
End If
mainMenuButtons.Add("Exit")
End If
End Sub
''' <summary>
''' Sets the currency from the currency indicator string.
''' </summary>
''' <param name="currencyIndicator">The currency indicator.</param>
Private Sub SetCurrency(ByVal currencyIndicator As String)
Select Case currencyIndicator.ToLower()
Case "p", "pokedollar", "pokédollar", "poke", "poké", "poke dollar", "poké dollar", "money"
Me.Currency = Currencies.Pokédollar
Case "bp", "battlepoints", "battle points"
Me.Currency = Currencies.BattlePoints
End Select
End Sub
Public Overrides Sub Update()
Select Case Me.MenuState
Case MenuStates.MainPage
Me.UpdateMain()
Case MenuStates.BuyItemsCategory
Me.UpdateBuyCategory()
Case MenuStates.BuyItems
Me.UpdateBuyItems()
Case MenuStates.SellItemsCategory
Me.UpdateSellCategory()
Case MenuStates.SellItems
Me.UpdateSellItems()
Case MenuStates.SellItemsConfirmation
Me.UpdateSellConfirmation()
End Select
Me.TileOffset += 1
If Me.TileOffset >= 64 Then
Me.TileOffset = 0
End If
End Sub
Public Overrides Sub Draw()
Canvas.DrawRectangle(Core.windowSize, New Color(84, 198, 216))
For y = -64 To Core.windowSize.Height Step 64
Core.SpriteBatch.Draw(Me.texture, New Rectangle(Core.windowSize.Width - 128, y + Me.TileOffset, 128, 64), New Rectangle(48, 0, 16, 16), Color.White)
Next
Canvas.DrawGradient(New Rectangle(0, 0, CInt(Core.windowSize.Width), 200), New Color(42, 167, 198), New Color(42, 167, 198, 0), False, -1)
Canvas.DrawGradient(New Rectangle(0, CInt(Core.windowSize.Height - 200), CInt(Core.windowSize.Width), 200), New Color(42, 167, 198, 0), New Color(42, 167, 198), False, -1)
Core.SpriteBatch.DrawString(FontManager.MainFont, Me.Title, New Vector2(100, 24), Color.White, 0.0F, Vector2.Zero, 2.0F, SpriteEffects.None, 0.0F)
Select Case Me.MenuState
Case MenuStates.MainPage
Me.DrawMain()
Case MenuStates.BuyItemsCategory
Me.DrawBuyCategory()
Case MenuStates.BuyItems
Me.DrawBuyItems()
Case MenuStates.SellItemsCategory
Me.DrawSellCategory()
Case MenuStates.SellItems
Me.DrawSellItems()
Case MenuStates.SellItemsConfirmation
Me.DrawSellConfirmation()
End Select
End Sub
#Region "Mainscreen"
Dim mainMenuButtons As New List(Of String)
''' <summary>
''' Updates the main screen.
''' </summary>
Private Sub UpdateMain()
Me.Title = "Store"
If Controls.Up(True, True, True, True, True, True) = True Then
Me.Cursor -= 1
If Controls.ShiftDown() = True Then
Me.Cursor -= 4
End If
End If
If Controls.Down(True, True, True, True, True, True) = True Then
Me.Cursor += 1
If Controls.ShiftDown() = True Then
Me.Cursor += 4
End If
End If
Me.Cursor = Me.Cursor.Clamp(0, mainMenuButtons.Count - 1)
If Controls.Accept(True, False, False) = True Then
For i = 0 To mainMenuButtons.Count - 1
If New Rectangle(100, 100 + i * 96, 64 * 7, 64).Contains(MouseHandler.MousePosition) = True Then
If i = Me.Cursor Then
Fix audio engine & contentpacks (#35) * Replaced existing Gen 2 SFX with better sounding ones (no ugly reverb) Replaced MediaPlayer with NAudio(and NAudio.Vorbis) for playing music in order to fix random stopping issues. The game now directly loads .ogg files instead of the .wma/.xnb combination from before. ContentPacks are now able to replace Music and SFX again (I haven't added a menu yet for choosing ContentPacks). To make older GameModes work with current versions, you can add the GameMode property EnterType and set it to "1", this will make the game use the older 2D NewGameScreen. * Delete GameController.vb * Add gamecontroller.vb back * Fix sfx missing * Battleintro doodle now doesn't loop anymore (for no trainer) Changed the shutter sound (aka Large Door sound) to something more large door-y Made the enter sound slightly louder The enter sound now plays when going through any warp to or from an indoor map (including falling through holes) The flying sound effect is played earlier in the animation after selecting a location Changed played sound effect when using the Escape Rope to "teleport" instead of "destroy" The bump noise now also plays when bumping into something in first person Fixed small gap between the end of the intro song and the start of the main song Replaced some songs with better songs * Fixed some more intro issues * Forgot to change a thing * Fixed an error where the main music would play, ignoring the muted musicmanager. * fix indenting in musicmanager * The music player will now only start playback on a new song if the music player is not muted, fixed the end time calculation of the intro of a song after muting, Music can't be unmuted now as long as a sound effect plays that stops the music. * Fixed league restplace position, fixed sound effects sharing the volume slider of the music, sound effects are now also muted when pressing M, changed music on/off popup to audio on/off, removed bump delay in first person, added more control on whether played songs should be looping or not. * Fixed some more scripts that turn on thirdperson mode but don't check if it was on before or set it back to what it was before afterwards, also fixed a small error in creditsscreen.vb. * Fixed indenting error in musicmanager.vb, fixed an error of mine where the loopsong parameter would be seen as the playintro parameter. * Added more music commands, added quite some menu select noises, will add more later * More select sound effects! * Fix music not resuming after soundeffect * Trainer using item now plays the single_heal soundeffect * Pokémon cries now sound louder * Possibly fixing crash when playing Pokémon cry at volume higher than 0.71 * Added better quality Pokémon cries, made random overworld cries slightly less loud, added cries for 719 and 720. * Sound effects now sound louder * Revert "Added better quality Pokémon cries, made random overworld cries slightly less loud, added cries for 719 and 720." This reverts commit 8c9296ed1a82144d17f303a52c3f2e9e65a5bfea. * Fixed the cause of why the title screen music plays even when the game is muted * Tabs to spaces * Revert Co-authored-by: darkfire006 <blazer257@live.com> Co-authored-by: JappaWakkaP3D <66885565+JappaWakkaP3D@users.noreply.github.com> Co-authored-by: JappaWakkaP3D <jasper.speelman@outlook.com> Co-authored-by: Vitaly Mikhailov <personal@aragas.org>
2020-07-09 19:59:42 +02:00
SoundManager.PlaySound("select")
2016-09-07 18:50:38 +02:00
Me.ClickMainButton()
Else
Cursor = i
End If
End If
Next
End If
If Controls.Accept(False, True, True) = True Then
Fix audio engine & contentpacks (#35) * Replaced existing Gen 2 SFX with better sounding ones (no ugly reverb) Replaced MediaPlayer with NAudio(and NAudio.Vorbis) for playing music in order to fix random stopping issues. The game now directly loads .ogg files instead of the .wma/.xnb combination from before. ContentPacks are now able to replace Music and SFX again (I haven't added a menu yet for choosing ContentPacks). To make older GameModes work with current versions, you can add the GameMode property EnterType and set it to "1", this will make the game use the older 2D NewGameScreen. * Delete GameController.vb * Add gamecontroller.vb back * Fix sfx missing * Battleintro doodle now doesn't loop anymore (for no trainer) Changed the shutter sound (aka Large Door sound) to something more large door-y Made the enter sound slightly louder The enter sound now plays when going through any warp to or from an indoor map (including falling through holes) The flying sound effect is played earlier in the animation after selecting a location Changed played sound effect when using the Escape Rope to "teleport" instead of "destroy" The bump noise now also plays when bumping into something in first person Fixed small gap between the end of the intro song and the start of the main song Replaced some songs with better songs * Fixed some more intro issues * Forgot to change a thing * Fixed an error where the main music would play, ignoring the muted musicmanager. * fix indenting in musicmanager * The music player will now only start playback on a new song if the music player is not muted, fixed the end time calculation of the intro of a song after muting, Music can't be unmuted now as long as a sound effect plays that stops the music. * Fixed league restplace position, fixed sound effects sharing the volume slider of the music, sound effects are now also muted when pressing M, changed music on/off popup to audio on/off, removed bump delay in first person, added more control on whether played songs should be looping or not. * Fixed some more scripts that turn on thirdperson mode but don't check if it was on before or set it back to what it was before afterwards, also fixed a small error in creditsscreen.vb. * Fixed indenting error in musicmanager.vb, fixed an error of mine where the loopsong parameter would be seen as the playintro parameter. * Added more music commands, added quite some menu select noises, will add more later * More select sound effects! * Fix music not resuming after soundeffect * Trainer using item now plays the single_heal soundeffect * Pokémon cries now sound louder * Possibly fixing crash when playing Pokémon cry at volume higher than 0.71 * Added better quality Pokémon cries, made random overworld cries slightly less loud, added cries for 719 and 720. * Sound effects now sound louder * Revert "Added better quality Pokémon cries, made random overworld cries slightly less loud, added cries for 719 and 720." This reverts commit 8c9296ed1a82144d17f303a52c3f2e9e65a5bfea. * Fixed the cause of why the title screen music plays even when the game is muted * Tabs to spaces * Revert Co-authored-by: darkfire006 <blazer257@live.com> Co-authored-by: JappaWakkaP3D <66885565+JappaWakkaP3D@users.noreply.github.com> Co-authored-by: JappaWakkaP3D <jasper.speelman@outlook.com> Co-authored-by: Vitaly Mikhailov <personal@aragas.org>
2020-07-09 19:59:42 +02:00
SoundManager.PlaySound("select")
2016-09-07 18:50:38 +02:00
Me.ClickMainButton()
End If
If Controls.Dismiss(True, True, True) = True Then
Fix audio engine & contentpacks (#35) * Replaced existing Gen 2 SFX with better sounding ones (no ugly reverb) Replaced MediaPlayer with NAudio(and NAudio.Vorbis) for playing music in order to fix random stopping issues. The game now directly loads .ogg files instead of the .wma/.xnb combination from before. ContentPacks are now able to replace Music and SFX again (I haven't added a menu yet for choosing ContentPacks). To make older GameModes work with current versions, you can add the GameMode property EnterType and set it to "1", this will make the game use the older 2D NewGameScreen. * Delete GameController.vb * Add gamecontroller.vb back * Fix sfx missing * Battleintro doodle now doesn't loop anymore (for no trainer) Changed the shutter sound (aka Large Door sound) to something more large door-y Made the enter sound slightly louder The enter sound now plays when going through any warp to or from an indoor map (including falling through holes) The flying sound effect is played earlier in the animation after selecting a location Changed played sound effect when using the Escape Rope to "teleport" instead of "destroy" The bump noise now also plays when bumping into something in first person Fixed small gap between the end of the intro song and the start of the main song Replaced some songs with better songs * Fixed some more intro issues * Forgot to change a thing * Fixed an error where the main music would play, ignoring the muted musicmanager. * fix indenting in musicmanager * The music player will now only start playback on a new song if the music player is not muted, fixed the end time calculation of the intro of a song after muting, Music can't be unmuted now as long as a sound effect plays that stops the music. * Fixed league restplace position, fixed sound effects sharing the volume slider of the music, sound effects are now also muted when pressing M, changed music on/off popup to audio on/off, removed bump delay in first person, added more control on whether played songs should be looping or not. * Fixed some more scripts that turn on thirdperson mode but don't check if it was on before or set it back to what it was before afterwards, also fixed a small error in creditsscreen.vb. * Fixed indenting error in musicmanager.vb, fixed an error of mine where the loopsong parameter would be seen as the playintro parameter. * Added more music commands, added quite some menu select noises, will add more later * More select sound effects! * Fix music not resuming after soundeffect * Trainer using item now plays the single_heal soundeffect * Pokémon cries now sound louder * Possibly fixing crash when playing Pokémon cry at volume higher than 0.71 * Added better quality Pokémon cries, made random overworld cries slightly less loud, added cries for 719 and 720. * Sound effects now sound louder * Revert "Added better quality Pokémon cries, made random overworld cries slightly less loud, added cries for 719 and 720." This reverts commit 8c9296ed1a82144d17f303a52c3f2e9e65a5bfea. * Fixed the cause of why the title screen music plays even when the game is muted * Tabs to spaces * Revert Co-authored-by: darkfire006 <blazer257@live.com> Co-authored-by: JappaWakkaP3D <66885565+JappaWakkaP3D@users.noreply.github.com> Co-authored-by: JappaWakkaP3D <jasper.speelman@outlook.com> Co-authored-by: Vitaly Mikhailov <personal@aragas.org>
2020-07-09 19:59:42 +02:00
SoundManager.PlaySound("select")
2016-09-07 18:50:38 +02:00
Me.ButtonMainExit()
End If
End Sub
Private Sub ClickMainButton()
Select Case mainMenuButtons(Me.Cursor)
Case "Buy"
Me.ButtonMainBuy()
Case "Sell"
Me.ButtonMainSell()
Case "Exit"
Me.ButtonMainExit()
End Select
End Sub
''' <summary>
''' Event when clicking on the Buy button.
''' </summary>
Private Sub ButtonMainBuy()
Me.MenuState = MenuStates.BuyItemsCategory
Me.Cursor = 0
Me.Scroll = 0
Me.LoadBuyCategoriesItems()
End Sub
''' <summary>
''' Event when clicking on the Sell button.
''' </summary>
Private Sub ButtonMainSell()
Me.MenuState = MenuStates.SellItemsCategory
Me.Cursor = 0
Me.Scroll = 0
Me.LoadSellCategoryItems()
End Sub
''' <summary>
''' Event when clicking on the Exit button.
''' </summary>
Private Sub ButtonMainExit()
Core.SetScreen(New TransitionScreen(Core.CurrentScreen, Me.PreScreen, Color.White, False))
End Sub
''' <summary>
''' Draw the main screen.
''' </summary>
Private Sub DrawMain()
Dim y As Integer = 100
For Each b As String In mainMenuButtons
DrawButton(New Vector2(100, y), 5, b, 16)
y += 96
Next
Me.DrawMainCursor()
End Sub
''' <summary>
''' Draw the cursor on the main screen.
''' </summary>
Private Sub DrawMainCursor()
Dim cPosition As Vector2 = New Vector2(380, 100 + Me.Cursor * 96 - 42)
Dim t As Texture2D = TextureManager.GetTexture("GUI\Menus\General", New Rectangle(0, 0, 16, 16), "")
Core.SpriteBatch.Draw(t, New Rectangle(CInt(cPosition.X), CInt(cPosition.Y), 64, 64), Color.White)
End Sub
#End Region
#Region "BuyCategoryScreen"
2016-09-20 02:18:12 +02:00
Private loadedBuyCategories As New List(Of Items.ItemTypes)
2016-09-07 18:50:38 +02:00
Private Sub LoadBuyCategoriesItems()
Me.loadedBuyCategories.Clear()
For Each i As TradeItem In Me.TradeItems
Dim item As Item = i.GetItem()
If loadedBuyCategories.Contains(item.ItemType) = False And item.CanBeTraded = True Then
loadedBuyCategories.Add(item.ItemType)
End If
Next
2016-09-20 02:18:12 +02:00
Me.loadedBuyCategories = (From c As Items.ItemTypes In Me.loadedBuyCategories Order By CInt(c)).ToList()
2016-09-07 18:50:38 +02:00
End Sub
Private Sub UpdateBuyCategory()
Me.Title = "Buy Items"
If loadedBuyCategories.Count > 0 Then
If Controls.Down(True, True, True, True, True, True) = True Then
Me.Cursor += 1
If Controls.ShiftDown() = True Then
Me.Cursor += 4
End If
End If
If Controls.Up(True, True, True, True, True, True) = True Then
Me.Cursor -= 1
If Controls.ShiftDown() = True Then
Me.Cursor -= 4
End If
End If
While Me.Cursor > 5
Me.Cursor -= 1
Me.Scroll += 1
End While
While Me.Cursor < 0
Me.Cursor += 1
Me.Scroll -= 1
End While
If Me.loadedBuyCategories.Count < 7 Then
Me.Scroll = 0
Else
Me.Scroll = Me.Scroll.Clamp(0, Me.loadedBuyCategories.Count - 6)
End If
If Me.loadedBuyCategories.Count < 6 Then
Me.Cursor = Me.Cursor.Clamp(0, Me.loadedBuyCategories.Count - 1)
Else
Me.Cursor = Me.Cursor.Clamp(0, 5)
End If
If Controls.Accept(True, False, False) = True Then
For i = Scroll To Scroll + 5
If i <= Me.loadedBuyCategories.Count - 1 Then
If New Rectangle(100, 100 + (i - Me.Scroll) * 96, 64 * 7, 64).Contains(MouseHandler.MousePosition) = True Then
If i = Scroll + Cursor Then
Fix audio engine & contentpacks (#35) * Replaced existing Gen 2 SFX with better sounding ones (no ugly reverb) Replaced MediaPlayer with NAudio(and NAudio.Vorbis) for playing music in order to fix random stopping issues. The game now directly loads .ogg files instead of the .wma/.xnb combination from before. ContentPacks are now able to replace Music and SFX again (I haven't added a menu yet for choosing ContentPacks). To make older GameModes work with current versions, you can add the GameMode property EnterType and set it to "1", this will make the game use the older 2D NewGameScreen. * Delete GameController.vb * Add gamecontroller.vb back * Fix sfx missing * Battleintro doodle now doesn't loop anymore (for no trainer) Changed the shutter sound (aka Large Door sound) to something more large door-y Made the enter sound slightly louder The enter sound now plays when going through any warp to or from an indoor map (including falling through holes) The flying sound effect is played earlier in the animation after selecting a location Changed played sound effect when using the Escape Rope to "teleport" instead of "destroy" The bump noise now also plays when bumping into something in first person Fixed small gap between the end of the intro song and the start of the main song Replaced some songs with better songs * Fixed some more intro issues * Forgot to change a thing * Fixed an error where the main music would play, ignoring the muted musicmanager. * fix indenting in musicmanager * The music player will now only start playback on a new song if the music player is not muted, fixed the end time calculation of the intro of a song after muting, Music can't be unmuted now as long as a sound effect plays that stops the music. * Fixed league restplace position, fixed sound effects sharing the volume slider of the music, sound effects are now also muted when pressing M, changed music on/off popup to audio on/off, removed bump delay in first person, added more control on whether played songs should be looping or not. * Fixed some more scripts that turn on thirdperson mode but don't check if it was on before or set it back to what it was before afterwards, also fixed a small error in creditsscreen.vb. * Fixed indenting error in musicmanager.vb, fixed an error of mine where the loopsong parameter would be seen as the playintro parameter. * Added more music commands, added quite some menu select noises, will add more later * More select sound effects! * Fix music not resuming after soundeffect * Trainer using item now plays the single_heal soundeffect * Pokémon cries now sound louder * Possibly fixing crash when playing Pokémon cry at volume higher than 0.71 * Added better quality Pokémon cries, made random overworld cries slightly less loud, added cries for 719 and 720. * Sound effects now sound louder * Revert "Added better quality Pokémon cries, made random overworld cries slightly less loud, added cries for 719 and 720." This reverts commit 8c9296ed1a82144d17f303a52c3f2e9e65a5bfea. * Fixed the cause of why the title screen music plays even when the game is muted * Tabs to spaces * Revert Co-authored-by: darkfire006 <blazer257@live.com> Co-authored-by: JappaWakkaP3D <66885565+JappaWakkaP3D@users.noreply.github.com> Co-authored-by: JappaWakkaP3D <jasper.speelman@outlook.com> Co-authored-by: Vitaly Mikhailov <personal@aragas.org>
2020-07-09 19:59:42 +02:00
SoundManager.PlaySound("select")
2016-09-07 18:50:38 +02:00
Me.ButtonBuyCategoriesAccept()
Else
Cursor = i - Scroll
End If
End If
End If
Next
End If
If Controls.Accept(False, True, True) = True Then
Fix audio engine & contentpacks (#35) * Replaced existing Gen 2 SFX with better sounding ones (no ugly reverb) Replaced MediaPlayer with NAudio(and NAudio.Vorbis) for playing music in order to fix random stopping issues. The game now directly loads .ogg files instead of the .wma/.xnb combination from before. ContentPacks are now able to replace Music and SFX again (I haven't added a menu yet for choosing ContentPacks). To make older GameModes work with current versions, you can add the GameMode property EnterType and set it to "1", this will make the game use the older 2D NewGameScreen. * Delete GameController.vb * Add gamecontroller.vb back * Fix sfx missing * Battleintro doodle now doesn't loop anymore (for no trainer) Changed the shutter sound (aka Large Door sound) to something more large door-y Made the enter sound slightly louder The enter sound now plays when going through any warp to or from an indoor map (including falling through holes) The flying sound effect is played earlier in the animation after selecting a location Changed played sound effect when using the Escape Rope to "teleport" instead of "destroy" The bump noise now also plays when bumping into something in first person Fixed small gap between the end of the intro song and the start of the main song Replaced some songs with better songs * Fixed some more intro issues * Forgot to change a thing * Fixed an error where the main music would play, ignoring the muted musicmanager. * fix indenting in musicmanager * The music player will now only start playback on a new song if the music player is not muted, fixed the end time calculation of the intro of a song after muting, Music can't be unmuted now as long as a sound effect plays that stops the music. * Fixed league restplace position, fixed sound effects sharing the volume slider of the music, sound effects are now also muted when pressing M, changed music on/off popup to audio on/off, removed bump delay in first person, added more control on whether played songs should be looping or not. * Fixed some more scripts that turn on thirdperson mode but don't check if it was on before or set it back to what it was before afterwards, also fixed a small error in creditsscreen.vb. * Fixed indenting error in musicmanager.vb, fixed an error of mine where the loopsong parameter would be seen as the playintro parameter. * Added more music commands, added quite some menu select noises, will add more later * More select sound effects! * Fix music not resuming after soundeffect * Trainer using item now plays the single_heal soundeffect * Pokémon cries now sound louder * Possibly fixing crash when playing Pokémon cry at volume higher than 0.71 * Added better quality Pokémon cries, made random overworld cries slightly less loud, added cries for 719 and 720. * Sound effects now sound louder * Revert "Added better quality Pokémon cries, made random overworld cries slightly less loud, added cries for 719 and 720." This reverts commit 8c9296ed1a82144d17f303a52c3f2e9e65a5bfea. * Fixed the cause of why the title screen music plays even when the game is muted * Tabs to spaces * Revert Co-authored-by: darkfire006 <blazer257@live.com> Co-authored-by: JappaWakkaP3D <66885565+JappaWakkaP3D@users.noreply.github.com> Co-authored-by: JappaWakkaP3D <jasper.speelman@outlook.com> Co-authored-by: Vitaly Mikhailov <personal@aragas.org>
2020-07-09 19:59:42 +02:00
SoundManager.PlaySound("select")
2016-09-07 18:50:38 +02:00
Me.ButtonBuyCategoriesAccept()
End If
End If
If Controls.Dismiss(True, True, True) = True Then
Fix audio engine & contentpacks (#35) * Replaced existing Gen 2 SFX with better sounding ones (no ugly reverb) Replaced MediaPlayer with NAudio(and NAudio.Vorbis) for playing music in order to fix random stopping issues. The game now directly loads .ogg files instead of the .wma/.xnb combination from before. ContentPacks are now able to replace Music and SFX again (I haven't added a menu yet for choosing ContentPacks). To make older GameModes work with current versions, you can add the GameMode property EnterType and set it to "1", this will make the game use the older 2D NewGameScreen. * Delete GameController.vb * Add gamecontroller.vb back * Fix sfx missing * Battleintro doodle now doesn't loop anymore (for no trainer) Changed the shutter sound (aka Large Door sound) to something more large door-y Made the enter sound slightly louder The enter sound now plays when going through any warp to or from an indoor map (including falling through holes) The flying sound effect is played earlier in the animation after selecting a location Changed played sound effect when using the Escape Rope to "teleport" instead of "destroy" The bump noise now also plays when bumping into something in first person Fixed small gap between the end of the intro song and the start of the main song Replaced some songs with better songs * Fixed some more intro issues * Forgot to change a thing * Fixed an error where the main music would play, ignoring the muted musicmanager. * fix indenting in musicmanager * The music player will now only start playback on a new song if the music player is not muted, fixed the end time calculation of the intro of a song after muting, Music can't be unmuted now as long as a sound effect plays that stops the music. * Fixed league restplace position, fixed sound effects sharing the volume slider of the music, sound effects are now also muted when pressing M, changed music on/off popup to audio on/off, removed bump delay in first person, added more control on whether played songs should be looping or not. * Fixed some more scripts that turn on thirdperson mode but don't check if it was on before or set it back to what it was before afterwards, also fixed a small error in creditsscreen.vb. * Fixed indenting error in musicmanager.vb, fixed an error of mine where the loopsong parameter would be seen as the playintro parameter. * Added more music commands, added quite some menu select noises, will add more later * More select sound effects! * Fix music not resuming after soundeffect * Trainer using item now plays the single_heal soundeffect * Pokémon cries now sound louder * Possibly fixing crash when playing Pokémon cry at volume higher than 0.71 * Added better quality Pokémon cries, made random overworld cries slightly less loud, added cries for 719 and 720. * Sound effects now sound louder * Revert "Added better quality Pokémon cries, made random overworld cries slightly less loud, added cries for 719 and 720." This reverts commit 8c9296ed1a82144d17f303a52c3f2e9e65a5bfea. * Fixed the cause of why the title screen music plays even when the game is muted * Tabs to spaces * Revert Co-authored-by: darkfire006 <blazer257@live.com> Co-authored-by: JappaWakkaP3D <66885565+JappaWakkaP3D@users.noreply.github.com> Co-authored-by: JappaWakkaP3D <jasper.speelman@outlook.com> Co-authored-by: Vitaly Mikhailov <personal@aragas.org>
2020-07-09 19:59:42 +02:00
SoundManager.PlaySound("select")
2016-09-07 18:50:38 +02:00
Me.MenuState = MenuStates.MainPage
End If
End Sub
Private Sub ButtonBuyCategoriesAccept()
Me.CurrentCategory = Me.loadedBuyCategories(Me.Cursor + Me.Scroll)
Me.MenuState = MenuStates.BuyItems
Me.Cursor = 0
Me.Scroll = 0
Me.LoadBuyItemsList()
End Sub
Private Sub DrawBuyCategory()
If Me.loadedBuyCategories.Count > 0 Then
For i = Scroll To Scroll + 5
If i <= Me.loadedBuyCategories.Count - 1 Then
Dim p As Integer = i - Scroll
DrawButton(New Vector2(100, 100 + p * 96), 5, Me.loadedBuyCategories(i).ToString(), 16, GetItemTypeTexture(Me.loadedBuyCategories(i)))
2016-09-07 18:50:38 +02:00
End If
Next
Canvas.DrawRectangle(New Rectangle(580, 100, 240, 48), New Color(255, 255, 255, 127))
If Me.loadedBuyCategories.Count > 0 Then
Dim x As Integer = 0
Dim y As Integer = 0
For Each i As TradeItem In Me.TradeItems
Dim item As Item = i.GetItem()
If item.ItemType = Me.loadedBuyCategories(Me.Cursor + Me.Scroll) Then
SpriteBatch.Draw(item.Texture, New Rectangle(580 + x * 48, 100 + y * 48, 48, 48), Color.White)
x += 1
If x = 5 Then
x = 0
y += 1
Canvas.DrawRectangle(New Rectangle(580, 100 + y * 48, 240, 48), New Color(255, 255, 255, 127))
End If
End If
Next
End If
Me.DrawMainCursor()
Else
DrawBanner(New Vector2(CSng(Core.windowSize.Width / 2 - 250), CSng(Core.windowSize.Height / 2 - 50)), 100, "There are no items to buy.", FontManager.MainFont, 500)
End If
End Sub
#End Region
#Region "BuyItemsScreen"
Private BuySellSparkleRotation As Single = 0.0F
Private BuySellItemSize As Single = 192.0F
Private BuySellItemShrinking As Boolean = True
Private BuyItemsList As New List(Of TradeItem)
Private BuyItemsAmount As Integer = 1
Private BuyItemsShowDescription As Boolean = False
Private Sub LoadBuyItemsList()
Me.BuyItemsList.Clear()
For Each i As TradeItem In Me.TradeItems
Dim item As Item = i.GetItem()
If item.ItemType = Me.CurrentCategory Then
BuyItemsList.Add(i)
End If
Next
Me.BuyItemsList = (From i As TradeItem In BuyItemsList Order By i.GetItem().Name).ToList()
End Sub
Private Sub UpdateBuyItems()
Me.Title = "Buy " & Me.CurrentCategory.ToString()
If Controls.Down(True, True, True, True, True, True) = True Then
Me.Cursor += 1
If Controls.ShiftDown() = True Then
Me.Cursor += 4
End If
End If
If Controls.Up(True, True, True, True, True, True) = True Then
Me.Cursor -= 1
If Controls.ShiftDown() = True Then
Me.Cursor -= 4
End If
End If
If Controls.Right(True, True, False, True, True, True) = True Then
Me.BuyItemsAmount += 1
If Controls.ShiftDown() = True Then
Me.BuyItemsAmount += 4
End If
End If
If Controls.Left(True, True, False, True, True, True) = True Then
Me.BuyItemsAmount -= 1
If Controls.ShiftDown() = True Then
Me.BuyItemsAmount -= 4
End If
End If
While Me.Cursor > 5
Me.Cursor -= 1
Me.Scroll += 1
End While
While Me.Cursor < 0
Me.Cursor += 1
Me.Scroll -= 1
End While
If Me.BuyItemsList.Count < 7 Then
Me.Scroll = 0
Else
Me.Scroll = Me.Scroll.Clamp(0, Me.BuyItemsList.Count - 6)
End If
If Me.BuyItemsList.Count < 6 Then
Me.Cursor = Me.Cursor.Clamp(0, Me.BuyItemsList.Count - 1)
Else
Me.Cursor = Me.Cursor.Clamp(0, 5)
End If
If Controls.Accept(True, False, False) = True Then
For i = Scroll To Scroll + 5
If i <= Me.BuyItemsList.Count - 1 Then
If New Rectangle(100, 100 + (i - Me.Scroll) * 96, 64 * 7, 64).Contains(MouseHandler.MousePosition) = True Then
Cursor = i - Scroll
End If
End If
Next
' Item description:
2016-09-07 18:50:38 +02:00
If New Rectangle(736, 160, 256, 256).Contains(MouseHandler.MousePosition) = True Then
Me.BuyItemsShowDescription = Not Me.BuyItemsShowDescription
End If
' - button:
2016-09-07 18:50:38 +02:00
If New Rectangle(664, 484, 64, 64).Contains(MouseHandler.MousePosition) = True Then
Me.ButtonBuyItemsMinus()
End If
' + button:
2016-09-07 18:50:38 +02:00
If New Rectangle(856, 484, 64, 64).Contains(MouseHandler.MousePosition) = True Then
Me.ButtonBuyItemsPlus()
End If
' Buy button:
2016-09-07 18:50:38 +02:00
If New Rectangle(664 + 64, 484 + 64 + 22, 64 * 3, 64).Contains(MouseHandler.MousePosition) = True Then
Me.ButtonBuyItemsBuy()
End If
End If
If ControllerHandler.ButtonPressed(Buttons.Y) = True Or KeyBoardHandler.KeyPressed(KeyBindings.SpecialKey) = True Then
Me.BuyItemsShowDescription = Not Me.BuyItemsShowDescription
End If
If Me.BuyItemsList.Count > 0 Then
Me.BuyItemsAmount = Me.BuyItemsAmount.Clamp(0, Me.GetMaxBuyItemAmount(Me.BuyItemsList(Me.Scroll + Me.Cursor)))
End If
If Controls.Accept(False, True, True) = True Then
Me.ButtonBuyItemsBuy()
End If
If Controls.Dismiss(True, True, True) = True Then
If Me.BuyItemsShowDescription = True Then
Fix audio engine & contentpacks (#35) * Replaced existing Gen 2 SFX with better sounding ones (no ugly reverb) Replaced MediaPlayer with NAudio(and NAudio.Vorbis) for playing music in order to fix random stopping issues. The game now directly loads .ogg files instead of the .wma/.xnb combination from before. ContentPacks are now able to replace Music and SFX again (I haven't added a menu yet for choosing ContentPacks). To make older GameModes work with current versions, you can add the GameMode property EnterType and set it to "1", this will make the game use the older 2D NewGameScreen. * Delete GameController.vb * Add gamecontroller.vb back * Fix sfx missing * Battleintro doodle now doesn't loop anymore (for no trainer) Changed the shutter sound (aka Large Door sound) to something more large door-y Made the enter sound slightly louder The enter sound now plays when going through any warp to or from an indoor map (including falling through holes) The flying sound effect is played earlier in the animation after selecting a location Changed played sound effect when using the Escape Rope to "teleport" instead of "destroy" The bump noise now also plays when bumping into something in first person Fixed small gap between the end of the intro song and the start of the main song Replaced some songs with better songs * Fixed some more intro issues * Forgot to change a thing * Fixed an error where the main music would play, ignoring the muted musicmanager. * fix indenting in musicmanager * The music player will now only start playback on a new song if the music player is not muted, fixed the end time calculation of the intro of a song after muting, Music can't be unmuted now as long as a sound effect plays that stops the music. * Fixed league restplace position, fixed sound effects sharing the volume slider of the music, sound effects are now also muted when pressing M, changed music on/off popup to audio on/off, removed bump delay in first person, added more control on whether played songs should be looping or not. * Fixed some more scripts that turn on thirdperson mode but don't check if it was on before or set it back to what it was before afterwards, also fixed a small error in creditsscreen.vb. * Fixed indenting error in musicmanager.vb, fixed an error of mine where the loopsong parameter would be seen as the playintro parameter. * Added more music commands, added quite some menu select noises, will add more later * More select sound effects! * Fix music not resuming after soundeffect * Trainer using item now plays the single_heal soundeffect * Pokémon cries now sound louder * Possibly fixing crash when playing Pokémon cry at volume higher than 0.71 * Added better quality Pokémon cries, made random overworld cries slightly less loud, added cries for 719 and 720. * Sound effects now sound louder * Revert "Added better quality Pokémon cries, made random overworld cries slightly less loud, added cries for 719 and 720." This reverts commit 8c9296ed1a82144d17f303a52c3f2e9e65a5bfea. * Fixed the cause of why the title screen music plays even when the game is muted * Tabs to spaces * Revert Co-authored-by: darkfire006 <blazer257@live.com> Co-authored-by: JappaWakkaP3D <66885565+JappaWakkaP3D@users.noreply.github.com> Co-authored-by: JappaWakkaP3D <jasper.speelman@outlook.com> Co-authored-by: Vitaly Mikhailov <personal@aragas.org>
2020-07-09 19:59:42 +02:00
SoundManager.PlaySound("select")
2016-09-07 18:50:38 +02:00
Me.BuyItemsShowDescription = False
Else
Fix audio engine & contentpacks (#35) * Replaced existing Gen 2 SFX with better sounding ones (no ugly reverb) Replaced MediaPlayer with NAudio(and NAudio.Vorbis) for playing music in order to fix random stopping issues. The game now directly loads .ogg files instead of the .wma/.xnb combination from before. ContentPacks are now able to replace Music and SFX again (I haven't added a menu yet for choosing ContentPacks). To make older GameModes work with current versions, you can add the GameMode property EnterType and set it to "1", this will make the game use the older 2D NewGameScreen. * Delete GameController.vb * Add gamecontroller.vb back * Fix sfx missing * Battleintro doodle now doesn't loop anymore (for no trainer) Changed the shutter sound (aka Large Door sound) to something more large door-y Made the enter sound slightly louder The enter sound now plays when going through any warp to or from an indoor map (including falling through holes) The flying sound effect is played earlier in the animation after selecting a location Changed played sound effect when using the Escape Rope to "teleport" instead of "destroy" The bump noise now also plays when bumping into something in first person Fixed small gap between the end of the intro song and the start of the main song Replaced some songs with better songs * Fixed some more intro issues * Forgot to change a thing * Fixed an error where the main music would play, ignoring the muted musicmanager. * fix indenting in musicmanager * The music player will now only start playback on a new song if the music player is not muted, fixed the end time calculation of the intro of a song after muting, Music can't be unmuted now as long as a sound effect plays that stops the music. * Fixed league restplace position, fixed sound effects sharing the volume slider of the music, sound effects are now also muted when pressing M, changed music on/off popup to audio on/off, removed bump delay in first person, added more control on whether played songs should be looping or not. * Fixed some more scripts that turn on thirdperson mode but don't check if it was on before or set it back to what it was before afterwards, also fixed a small error in creditsscreen.vb. * Fixed indenting error in musicmanager.vb, fixed an error of mine where the loopsong parameter would be seen as the playintro parameter. * Added more music commands, added quite some menu select noises, will add more later * More select sound effects! * Fix music not resuming after soundeffect * Trainer using item now plays the single_heal soundeffect * Pokémon cries now sound louder * Possibly fixing crash when playing Pokémon cry at volume higher than 0.71 * Added better quality Pokémon cries, made random overworld cries slightly less loud, added cries for 719 and 720. * Sound effects now sound louder * Revert "Added better quality Pokémon cries, made random overworld cries slightly less loud, added cries for 719 and 720." This reverts commit 8c9296ed1a82144d17f303a52c3f2e9e65a5bfea. * Fixed the cause of why the title screen music plays even when the game is muted * Tabs to spaces * Revert Co-authored-by: darkfire006 <blazer257@live.com> Co-authored-by: JappaWakkaP3D <66885565+JappaWakkaP3D@users.noreply.github.com> Co-authored-by: JappaWakkaP3D <jasper.speelman@outlook.com> Co-authored-by: Vitaly Mikhailov <personal@aragas.org>
2020-07-09 19:59:42 +02:00
SoundManager.PlaySound("select")
2016-09-07 18:50:38 +02:00
Me.MenuState = MenuStates.BuyItemsCategory
End If
End If
Me.BuySellSparkleRotation += 0.005F
If BuySellItemShrinking = True Then
BuySellItemSize -= 0.5F
If BuySellItemSize <= 160.0F Then
BuySellItemShrinking = False
End If
Else
BuySellItemSize += 0.5F
If BuySellItemSize >= 192.0F Then
BuySellItemShrinking = True
End If
End If
End Sub
Private Sub ButtonBuyItemsMinus()
If Controls.ShiftDown() = True Then
Me.BuyItemsAmount -= 5
Else
Me.BuyItemsAmount -= 1
End If
End Sub
Private Sub ButtonBuyItemsPlus()
If Controls.ShiftDown() = True Then
Me.BuyItemsAmount += 5
Else
Me.BuyItemsAmount += 1
End If
End Sub
Private Sub ButtonBuyItemsBuy()
If BuyItemsAmount > 0 Then
Dim tradeItem As TradeItem = Me.BuyItemsList(Me.Scroll + Me.Cursor)
Me.ChangeCurrencyAmount(-(tradeItem.Price * Me.BuyItemsAmount))
Core.Player.Inventory.AddItem(tradeItem.ItemID, Me.BuyItemsAmount)
' Add a Premier Ball (ID=3) if the player bought 10 or more Poké Balls (ID=5):
2016-09-07 18:50:38 +02:00
If tradeItem.ItemID = 5 And Me.BuyItemsAmount >= 10 Then
Core.Player.Inventory.AddItem(3, 1)
End If
' Remove trade item from seller's side if the rest amount is smaller than 0:
2016-09-07 18:50:38 +02:00
If tradeItem.Amount > -1 Then
For i = 0 To Me.TradeItems.Count - 1
If Me.TradeItems(i).ItemID = tradeItem.ItemID And tradeItem.Amount = Me.TradeItems(i).Amount Then
Dim t As TradeItem = Me.TradeItems(i)
t.Amount -= Me.BuyItemsAmount
If t.Amount < 1 Then
Me.TradeItems.RemoveAt(i)
Else
Me.TradeItems(i) = t
End If
Exit For
End If
Next
End If
Me.LoadBuyItemsList()
SoundManager.PlaySound("buy2")
If Me.BuyItemsList.Count = 0 Then
Me.MenuState = MenuStates.BuyItemsCategory
Me.LoadBuyCategoriesItems()
End If
End If
End Sub
Private Function GetMaxBuyItemAmount(ByVal tradeItem As TradeItem) As Integer
Dim item As Item = tradeItem.GetItem()
Dim maxAmount As Integer = item.MaxStack - Core.Player.Inventory.GetItemAmount(item.ID)
If maxAmount > tradeItem.Amount And tradeItem.Amount > -1 Then
maxAmount = tradeItem.Amount
End If
If tradeItem.Price = 0 Then
Return maxAmount
End If
Dim money As Integer = Me.GetCurrencyAmount()
Dim amount As Integer = CInt(Math.Floor(money / tradeItem.Price))
Return amount.Clamp(0, maxAmount)
End Function
Private Sub DrawBuyItems()
' Item selection menu:
2016-09-07 18:50:38 +02:00
For i = Scroll To Scroll + 5
If i <= Me.BuyItemsList.Count - 1 Then
Dim p As Integer = i - Scroll
DrawButton(New Vector2(100, 100 + p * 96), 5, Me.BuyItemsList(i).GetItem().Name, 16, Me.BuyItemsList(i).GetItem().Texture)
End If
Next
If Me.BuyItemsList.Count > 0 Then
While BuyItemsList.Count <= Scroll + Cursor
Cursor -= 1
End While
2016-09-07 18:50:38 +02:00
Dim selectedItem As TradeItem = Me.BuyItemsList(Scroll + Cursor)
' Item preview:
2016-09-07 18:50:38 +02:00
Core.SpriteBatch.EndBatch()
2018-02-26 00:24:11 +01:00
Core.SpriteBatch.Begin(SpriteSortMode.Deferred, BlendState.NonPremultiplied, SamplerState.PointClamp, DepthStencilState.Default, RasterizerState.CullCounterClockwise)
2016-09-07 18:50:38 +02:00
Core.SpriteBatch.Draw(TextureManager.GetTexture("GUI\Box\Sparkle"), New Rectangle(736 + 128, 160 + 128, 256, 256), Nothing, Color.White, BuySellSparkleRotation, New Vector2(128, 128), SpriteEffects.None, 0.0F)
Core.SpriteBatch.End()
Core.SpriteBatch.BeginBatch()
Dim itemOffset As Single = (256 - BuySellItemSize) / 2.0F
Core.SpriteBatch.Draw(selectedItem.GetItem().Texture, New Rectangle(CInt(736 + itemOffset), CInt(160 + itemOffset), CInt(BuySellItemSize), CInt(BuySellItemSize)), Color.White)
If BuyItemsShowDescription = True Then
Canvas.DrawRectangle(New Rectangle(736 + 28, 160 + 28, 200, 200), New Color(0, 0, 0, 200))
Dim t As String = selectedItem.GetItem().Description.CropStringToWidth(FontManager.MiniFont, 180)
SpriteBatch.DrawString(FontManager.MiniFont, t, New Vector2(736 + 30, 160 + 30), Color.White)
End If
' Amount of the selected item in the player's Bag:
2016-09-07 18:50:38 +02:00
Dim amount As String = Core.Player.Inventory.GetItemAmount(selectedItem.ItemID).ToString()
While amount.Length < 3
amount = "0" & amount
End While
Dim bannerText As String = ""
If selectedItem.Amount > -1 Then
bannerText = " | In Stock: " & selectedItem.Amount
End If
Me.DrawBanner(New Vector2(665, 430), 30, "In Inventory: " & amount & bannerText, FontManager.MiniFont, 400)
' - button:
2016-09-07 18:50:38 +02:00
Core.SpriteBatch.Draw(texture, New Rectangle(664, 484, 64, 64), New Rectangle(16, 32, 16, 16), Color.White)
Core.SpriteBatch.DrawString(FontManager.MainFont, "-", New Vector2(664 + 23, 484 + 2), Color.Black, 0.0F, Vector2.Zero, 2.0F, SpriteEffects.None, 0.0F)
' Amount field:
2016-09-07 18:50:38 +02:00
Canvas.DrawRectangle(New Rectangle(740, 492, 104, 48), New Color(77, 147, 198))
Canvas.DrawRectangle(New Rectangle(744, 496, 96, 40), New Color(232, 240, 248))
Dim amountString As String = Me.BuyItemsAmount.ToString()
While amountString.Length < 3
amountString = "0" & amountString
End While
amountString = "x" & amountString
Core.SpriteBatch.DrawString(FontManager.MainFont, amountString, New Vector2(792 - FontManager.MainFont.MeasureString(amountString).X / 2.0F, 504), Color.Black)
' + button:
2016-09-07 18:50:38 +02:00
Core.SpriteBatch.Draw(texture, New Rectangle(856, 484, 64, 64), New Rectangle(16, 32, 16, 16), Color.White)
Core.SpriteBatch.DrawString(FontManager.MainFont, "+", New Vector2(856 + 19, 484 + 6), Color.Black, 0.0F, Vector2.Zero, 2.0F, SpriteEffects.None, 0.0F)
Core.SpriteBatch.DrawString(FontManager.MainFont, "Per Item: " & selectedItem.Price.ToString() & GetCurrencyShort() & Environment.NewLine &
2016-09-07 18:50:38 +02:00
"Total: " & (BuyItemsAmount * selectedItem.Price).ToString() & GetCurrencyShort(), New Vector2(930, 490), Color.White)
' Buy button:
2016-09-07 18:50:38 +02:00
If Me.BuyItemsAmount > 0 Then
If ControllerHandler.IsConnected() = True Then
Core.SpriteBatch.Draw(TextureManager.GetTexture("GUI\GamePad\xboxControllerButtonA"), New Rectangle(664 + 12, 484 + 64 + 34, 40, 40), Color.White)
End If
Me.DrawButton(New Vector2(664 + 64, 484 + 64 + 22), 1, "Buy", 64)
End If
End If
' Current balance:
2016-09-07 18:50:38 +02:00
Me.DrawBanner(New Vector2(665, 110), 30, "Current balance: " & GetCurrencyDisplay(), FontManager.MiniFont, 400)
' Cursor draw:
2016-09-07 18:50:38 +02:00
Me.DrawMainCursor()
End Sub
#End Region
#Region "SellCatetoryScreen"
2016-09-20 02:18:12 +02:00
Private loadedSellCategories As New List(Of Items.ItemTypes)
2016-09-07 18:50:38 +02:00
Private Sub LoadSellCategoryItems()
Me.loadedSellCategories.Clear()
For Each c In Core.Player.Inventory
Dim i = Item.GetItemByID(c.ItemID)
If loadedSellCategories.Contains(i.ItemType) = False And i.CanBeTraded = True Then
loadedSellCategories.Add(i.ItemType)
End If
Next
2016-09-20 02:18:12 +02:00
Me.loadedSellCategories = (From c As Items.ItemTypes In Me.loadedSellCategories Order By CInt(c)).ToList()
2016-09-07 18:50:38 +02:00
End Sub
Private Sub UpdateSellCategory()
Me.Title = "Sell Items"
If Me.loadedSellCategories.Count > 0 Then
If Controls.Down(True, True, True, True, True, True) = True Then
Me.Cursor += 1
If Controls.ShiftDown() = True Then
Me.Cursor += 4
End If
End If
If Controls.Up(True, True, True, True, True, True) = True Then
Me.Cursor -= 1
If Controls.ShiftDown() = True Then
Me.Cursor -= 4
End If
End If
While Me.Cursor > 5
Me.Cursor -= 1
Me.Scroll += 1
End While
While Me.Cursor < 0
Me.Cursor += 1
Me.Scroll -= 1
End While
If Me.loadedSellCategories.Count < 7 Then
Me.Scroll = 0
Else
Me.Scroll = Me.Scroll.Clamp(0, Me.loadedSellCategories.Count - 6)
End If
If Me.loadedSellCategories.Count < 6 Then
Me.Cursor = Me.Cursor.Clamp(0, Me.loadedSellCategories.Count - 1)
Else
Me.Cursor = Me.Cursor.Clamp(0, 5)
End If
If Controls.Accept(True, False, False) = True Then
For i = Scroll To Scroll + 5
If i <= Me.loadedSellCategories.Count - 1 Then
If New Rectangle(100, 100 + (i - Me.Scroll) * 96, 64 * 7, 64).Contains(MouseHandler.MousePosition) = True Then
If i = Scroll + Cursor Then
Fix audio engine & contentpacks (#35) * Replaced existing Gen 2 SFX with better sounding ones (no ugly reverb) Replaced MediaPlayer with NAudio(and NAudio.Vorbis) for playing music in order to fix random stopping issues. The game now directly loads .ogg files instead of the .wma/.xnb combination from before. ContentPacks are now able to replace Music and SFX again (I haven't added a menu yet for choosing ContentPacks). To make older GameModes work with current versions, you can add the GameMode property EnterType and set it to "1", this will make the game use the older 2D NewGameScreen. * Delete GameController.vb * Add gamecontroller.vb back * Fix sfx missing * Battleintro doodle now doesn't loop anymore (for no trainer) Changed the shutter sound (aka Large Door sound) to something more large door-y Made the enter sound slightly louder The enter sound now plays when going through any warp to or from an indoor map (including falling through holes) The flying sound effect is played earlier in the animation after selecting a location Changed played sound effect when using the Escape Rope to "teleport" instead of "destroy" The bump noise now also plays when bumping into something in first person Fixed small gap between the end of the intro song and the start of the main song Replaced some songs with better songs * Fixed some more intro issues * Forgot to change a thing * Fixed an error where the main music would play, ignoring the muted musicmanager. * fix indenting in musicmanager * The music player will now only start playback on a new song if the music player is not muted, fixed the end time calculation of the intro of a song after muting, Music can't be unmuted now as long as a sound effect plays that stops the music. * Fixed league restplace position, fixed sound effects sharing the volume slider of the music, sound effects are now also muted when pressing M, changed music on/off popup to audio on/off, removed bump delay in first person, added more control on whether played songs should be looping or not. * Fixed some more scripts that turn on thirdperson mode but don't check if it was on before or set it back to what it was before afterwards, also fixed a small error in creditsscreen.vb. * Fixed indenting error in musicmanager.vb, fixed an error of mine where the loopsong parameter would be seen as the playintro parameter. * Added more music commands, added quite some menu select noises, will add more later * More select sound effects! * Fix music not resuming after soundeffect * Trainer using item now plays the single_heal soundeffect * Pokémon cries now sound louder * Possibly fixing crash when playing Pokémon cry at volume higher than 0.71 * Added better quality Pokémon cries, made random overworld cries slightly less loud, added cries for 719 and 720. * Sound effects now sound louder * Revert "Added better quality Pokémon cries, made random overworld cries slightly less loud, added cries for 719 and 720." This reverts commit 8c9296ed1a82144d17f303a52c3f2e9e65a5bfea. * Fixed the cause of why the title screen music plays even when the game is muted * Tabs to spaces * Revert Co-authored-by: darkfire006 <blazer257@live.com> Co-authored-by: JappaWakkaP3D <66885565+JappaWakkaP3D@users.noreply.github.com> Co-authored-by: JappaWakkaP3D <jasper.speelman@outlook.com> Co-authored-by: Vitaly Mikhailov <personal@aragas.org>
2020-07-09 19:59:42 +02:00
SoundManager.PlaySound("select")
2016-09-07 18:50:38 +02:00
Me.ButtonSellCategoriesAccept()
Else
Cursor = i - Scroll
End If
End If
End If
Next
End If
If Controls.Accept(False, True, True) = True Then
Fix audio engine & contentpacks (#35) * Replaced existing Gen 2 SFX with better sounding ones (no ugly reverb) Replaced MediaPlayer with NAudio(and NAudio.Vorbis) for playing music in order to fix random stopping issues. The game now directly loads .ogg files instead of the .wma/.xnb combination from before. ContentPacks are now able to replace Music and SFX again (I haven't added a menu yet for choosing ContentPacks). To make older GameModes work with current versions, you can add the GameMode property EnterType and set it to "1", this will make the game use the older 2D NewGameScreen. * Delete GameController.vb * Add gamecontroller.vb back * Fix sfx missing * Battleintro doodle now doesn't loop anymore (for no trainer) Changed the shutter sound (aka Large Door sound) to something more large door-y Made the enter sound slightly louder The enter sound now plays when going through any warp to or from an indoor map (including falling through holes) The flying sound effect is played earlier in the animation after selecting a location Changed played sound effect when using the Escape Rope to "teleport" instead of "destroy" The bump noise now also plays when bumping into something in first person Fixed small gap between the end of the intro song and the start of the main song Replaced some songs with better songs * Fixed some more intro issues * Forgot to change a thing * Fixed an error where the main music would play, ignoring the muted musicmanager. * fix indenting in musicmanager * The music player will now only start playback on a new song if the music player is not muted, fixed the end time calculation of the intro of a song after muting, Music can't be unmuted now as long as a sound effect plays that stops the music. * Fixed league restplace position, fixed sound effects sharing the volume slider of the music, sound effects are now also muted when pressing M, changed music on/off popup to audio on/off, removed bump delay in first person, added more control on whether played songs should be looping or not. * Fixed some more scripts that turn on thirdperson mode but don't check if it was on before or set it back to what it was before afterwards, also fixed a small error in creditsscreen.vb. * Fixed indenting error in musicmanager.vb, fixed an error of mine where the loopsong parameter would be seen as the playintro parameter. * Added more music commands, added quite some menu select noises, will add more later * More select sound effects! * Fix music not resuming after soundeffect * Trainer using item now plays the single_heal soundeffect * Pokémon cries now sound louder * Possibly fixing crash when playing Pokémon cry at volume higher than 0.71 * Added better quality Pokémon cries, made random overworld cries slightly less loud, added cries for 719 and 720. * Sound effects now sound louder * Revert "Added better quality Pokémon cries, made random overworld cries slightly less loud, added cries for 719 and 720." This reverts commit 8c9296ed1a82144d17f303a52c3f2e9e65a5bfea. * Fixed the cause of why the title screen music plays even when the game is muted * Tabs to spaces * Revert Co-authored-by: darkfire006 <blazer257@live.com> Co-authored-by: JappaWakkaP3D <66885565+JappaWakkaP3D@users.noreply.github.com> Co-authored-by: JappaWakkaP3D <jasper.speelman@outlook.com> Co-authored-by: Vitaly Mikhailov <personal@aragas.org>
2020-07-09 19:59:42 +02:00
SoundManager.PlaySound("select")
2016-09-07 18:50:38 +02:00
Me.ButtonSellCategoriesAccept()
End If
End If
If Controls.Dismiss(True, True, True) = True Then
Fix audio engine & contentpacks (#35) * Replaced existing Gen 2 SFX with better sounding ones (no ugly reverb) Replaced MediaPlayer with NAudio(and NAudio.Vorbis) for playing music in order to fix random stopping issues. The game now directly loads .ogg files instead of the .wma/.xnb combination from before. ContentPacks are now able to replace Music and SFX again (I haven't added a menu yet for choosing ContentPacks). To make older GameModes work with current versions, you can add the GameMode property EnterType and set it to "1", this will make the game use the older 2D NewGameScreen. * Delete GameController.vb * Add gamecontroller.vb back * Fix sfx missing * Battleintro doodle now doesn't loop anymore (for no trainer) Changed the shutter sound (aka Large Door sound) to something more large door-y Made the enter sound slightly louder The enter sound now plays when going through any warp to or from an indoor map (including falling through holes) The flying sound effect is played earlier in the animation after selecting a location Changed played sound effect when using the Escape Rope to "teleport" instead of "destroy" The bump noise now also plays when bumping into something in first person Fixed small gap between the end of the intro song and the start of the main song Replaced some songs with better songs * Fixed some more intro issues * Forgot to change a thing * Fixed an error where the main music would play, ignoring the muted musicmanager. * fix indenting in musicmanager * The music player will now only start playback on a new song if the music player is not muted, fixed the end time calculation of the intro of a song after muting, Music can't be unmuted now as long as a sound effect plays that stops the music. * Fixed league restplace position, fixed sound effects sharing the volume slider of the music, sound effects are now also muted when pressing M, changed music on/off popup to audio on/off, removed bump delay in first person, added more control on whether played songs should be looping or not. * Fixed some more scripts that turn on thirdperson mode but don't check if it was on before or set it back to what it was before afterwards, also fixed a small error in creditsscreen.vb. * Fixed indenting error in musicmanager.vb, fixed an error of mine where the loopsong parameter would be seen as the playintro parameter. * Added more music commands, added quite some menu select noises, will add more later * More select sound effects! * Fix music not resuming after soundeffect * Trainer using item now plays the single_heal soundeffect * Pokémon cries now sound louder * Possibly fixing crash when playing Pokémon cry at volume higher than 0.71 * Added better quality Pokémon cries, made random overworld cries slightly less loud, added cries for 719 and 720. * Sound effects now sound louder * Revert "Added better quality Pokémon cries, made random overworld cries slightly less loud, added cries for 719 and 720." This reverts commit 8c9296ed1a82144d17f303a52c3f2e9e65a5bfea. * Fixed the cause of why the title screen music plays even when the game is muted * Tabs to spaces * Revert Co-authored-by: darkfire006 <blazer257@live.com> Co-authored-by: JappaWakkaP3D <66885565+JappaWakkaP3D@users.noreply.github.com> Co-authored-by: JappaWakkaP3D <jasper.speelman@outlook.com> Co-authored-by: Vitaly Mikhailov <personal@aragas.org>
2020-07-09 19:59:42 +02:00
SoundManager.PlaySound("select")
2016-09-07 18:50:38 +02:00
Me.MenuState = MenuStates.MainPage
End If
End Sub
Private Sub ButtonSellCategoriesAccept()
Me.CurrentCategory = Me.loadedSellCategories(Me.Cursor + Me.Scroll)
Me.MenuState = MenuStates.SellItems
Me.Cursor = 0
Me.Scroll = 0
Me.LoadSellItemsList()
End Sub
Private Sub DrawSellCategory()
If Me.loadedSellCategories.Count > 0 Then
For i = Scroll To Scroll + 5
If i <= Me.loadedSellCategories.Count - 1 Then
Dim p As Integer = i - Scroll
DrawButton(New Vector2(100, 100 + p * 96), 5, Me.loadedSellCategories(i).ToString(), 16, GetItemTypeTexture(Me.loadedSellCategories(i)))
2016-09-07 18:50:38 +02:00
End If
Next
Me.DrawMainCursor()
Else
DrawBanner(New Vector2(CSng(Core.windowSize.Width / 2 - 250), CSng(Core.windowSize.Height / 2 - 50)), 100, "You have no items to sell.", FontManager.MainFont, 500)
End If
End Sub
#End Region
#Region "SellItemsScreen"
Private SellItemsList As New List(Of TradeItem)
Private SellItemsAmount As Integer = 1
Private SellItemsShowDescription As Boolean = False
Private Sub LoadSellItemsList()
Me.SellItemsList.Clear()
For Each c In Core.Player.Inventory
Dim i = Item.GetItemByID(c.ItemID)
If i.CanBeTraded = True Then
If i.ItemType = Me.CurrentCategory Then
SellItemsList.Add(New TradeItem(i.ID, c.Amount, -1, Me.Currency))
End If
End If
Next
Me.SellItemsList = (From i As TradeItem In SellItemsList Order By i.GetItem().Name).ToList()
End Sub
Private Sub UpdateSellItems()
Me.Title = "Sell " & Me.CurrentCategory.ToString()
If Controls.Down(True, True, True, True, True, True) = True Then
Me.Cursor += 1
If Controls.ShiftDown() = True Then
Me.Cursor += 4
End If
End If
If Controls.Up(True, True, True, True, True, True) = True Then
Me.Cursor -= 1
If Controls.ShiftDown() = True Then
Me.Cursor -= 4
End If
End If
If Controls.Right(True, True, False, True, True, True) = True Then
Me.SellItemsAmount += 1
If Controls.ShiftDown() = True Then
Me.SellItemsAmount += 4
End If
End If
If Controls.Left(True, True, False, True, True, True) = True Then
Me.SellItemsAmount -= 1
If Controls.ShiftDown() = True Then
Me.SellItemsAmount -= 4
End If
End If
Me.SellItemsClampCursor()
If Controls.Accept(True, False, False) = True Then
For i = Scroll To Scroll + 5
If i <= Me.SellItemsList.Count - 1 Then
If New Rectangle(100, 100 + (i - Me.Scroll) * 96, 64 * 7, 64).Contains(MouseHandler.MousePosition) = True Then
Cursor = i - Scroll
End If
End If
Next
' Item description:
2016-09-07 18:50:38 +02:00
If New Rectangle(736, 160, 256, 256).Contains(MouseHandler.MousePosition) = True Then
Me.SellItemsShowDescription = Not Me.SellItemsShowDescription
End If
' - button:
2016-09-07 18:50:38 +02:00
If New Rectangle(664, 484, 64, 64).Contains(MouseHandler.MousePosition) = True Then
Me.ButtonSellItemsMinus()
End If
' + button:
2016-09-07 18:50:38 +02:00
If New Rectangle(856, 484, 64, 64).Contains(MouseHandler.MousePosition) = True Then
Me.ButtonSellItemsPlus()
End If
' Buy button:
2016-09-07 18:50:38 +02:00
If New Rectangle(664 + 64, 484 + 64 + 22, 64 * 3, 64).Contains(MouseHandler.MousePosition) = True Then
Fix audio engine & contentpacks (#35) * Replaced existing Gen 2 SFX with better sounding ones (no ugly reverb) Replaced MediaPlayer with NAudio(and NAudio.Vorbis) for playing music in order to fix random stopping issues. The game now directly loads .ogg files instead of the .wma/.xnb combination from before. ContentPacks are now able to replace Music and SFX again (I haven't added a menu yet for choosing ContentPacks). To make older GameModes work with current versions, you can add the GameMode property EnterType and set it to "1", this will make the game use the older 2D NewGameScreen. * Delete GameController.vb * Add gamecontroller.vb back * Fix sfx missing * Battleintro doodle now doesn't loop anymore (for no trainer) Changed the shutter sound (aka Large Door sound) to something more large door-y Made the enter sound slightly louder The enter sound now plays when going through any warp to or from an indoor map (including falling through holes) The flying sound effect is played earlier in the animation after selecting a location Changed played sound effect when using the Escape Rope to "teleport" instead of "destroy" The bump noise now also plays when bumping into something in first person Fixed small gap between the end of the intro song and the start of the main song Replaced some songs with better songs * Fixed some more intro issues * Forgot to change a thing * Fixed an error where the main music would play, ignoring the muted musicmanager. * fix indenting in musicmanager * The music player will now only start playback on a new song if the music player is not muted, fixed the end time calculation of the intro of a song after muting, Music can't be unmuted now as long as a sound effect plays that stops the music. * Fixed league restplace position, fixed sound effects sharing the volume slider of the music, sound effects are now also muted when pressing M, changed music on/off popup to audio on/off, removed bump delay in first person, added more control on whether played songs should be looping or not. * Fixed some more scripts that turn on thirdperson mode but don't check if it was on before or set it back to what it was before afterwards, also fixed a small error in creditsscreen.vb. * Fixed indenting error in musicmanager.vb, fixed an error of mine where the loopsong parameter would be seen as the playintro parameter. * Added more music commands, added quite some menu select noises, will add more later * More select sound effects! * Fix music not resuming after soundeffect * Trainer using item now plays the single_heal soundeffect * Pokémon cries now sound louder * Possibly fixing crash when playing Pokémon cry at volume higher than 0.71 * Added better quality Pokémon cries, made random overworld cries slightly less loud, added cries for 719 and 720. * Sound effects now sound louder * Revert "Added better quality Pokémon cries, made random overworld cries slightly less loud, added cries for 719 and 720." This reverts commit 8c9296ed1a82144d17f303a52c3f2e9e65a5bfea. * Fixed the cause of why the title screen music plays even when the game is muted * Tabs to spaces * Revert Co-authored-by: darkfire006 <blazer257@live.com> Co-authored-by: JappaWakkaP3D <66885565+JappaWakkaP3D@users.noreply.github.com> Co-authored-by: JappaWakkaP3D <jasper.speelman@outlook.com> Co-authored-by: Vitaly Mikhailov <personal@aragas.org>
2020-07-09 19:59:42 +02:00
SoundManager.PlaySound("select")
2016-09-07 18:50:38 +02:00
Me.ButtonSellItemsSell()
End If
End If
If ControllerHandler.ButtonPressed(Buttons.Y) = True Or KeyBoardHandler.KeyPressed(KeyBindings.SpecialKey) = True Then
Me.SellItemsShowDescription = Not Me.SellItemsShowDescription
End If
If Me.SellItemsList.Count > 0 Then
Me.SellItemsAmount = Me.SellItemsAmount.Clamp(0, Me.SellItemsList(Me.Scroll + Me.Cursor).Amount)
End If
If Controls.Accept(False, True, True) = True Then
Fix audio engine & contentpacks (#35) * Replaced existing Gen 2 SFX with better sounding ones (no ugly reverb) Replaced MediaPlayer with NAudio(and NAudio.Vorbis) for playing music in order to fix random stopping issues. The game now directly loads .ogg files instead of the .wma/.xnb combination from before. ContentPacks are now able to replace Music and SFX again (I haven't added a menu yet for choosing ContentPacks). To make older GameModes work with current versions, you can add the GameMode property EnterType and set it to "1", this will make the game use the older 2D NewGameScreen. * Delete GameController.vb * Add gamecontroller.vb back * Fix sfx missing * Battleintro doodle now doesn't loop anymore (for no trainer) Changed the shutter sound (aka Large Door sound) to something more large door-y Made the enter sound slightly louder The enter sound now plays when going through any warp to or from an indoor map (including falling through holes) The flying sound effect is played earlier in the animation after selecting a location Changed played sound effect when using the Escape Rope to "teleport" instead of "destroy" The bump noise now also plays when bumping into something in first person Fixed small gap between the end of the intro song and the start of the main song Replaced some songs with better songs * Fixed some more intro issues * Forgot to change a thing * Fixed an error where the main music would play, ignoring the muted musicmanager. * fix indenting in musicmanager * The music player will now only start playback on a new song if the music player is not muted, fixed the end time calculation of the intro of a song after muting, Music can't be unmuted now as long as a sound effect plays that stops the music. * Fixed league restplace position, fixed sound effects sharing the volume slider of the music, sound effects are now also muted when pressing M, changed music on/off popup to audio on/off, removed bump delay in first person, added more control on whether played songs should be looping or not. * Fixed some more scripts that turn on thirdperson mode but don't check if it was on before or set it back to what it was before afterwards, also fixed a small error in creditsscreen.vb. * Fixed indenting error in musicmanager.vb, fixed an error of mine where the loopsong parameter would be seen as the playintro parameter. * Added more music commands, added quite some menu select noises, will add more later * More select sound effects! * Fix music not resuming after soundeffect * Trainer using item now plays the single_heal soundeffect * Pokémon cries now sound louder * Possibly fixing crash when playing Pokémon cry at volume higher than 0.71 * Added better quality Pokémon cries, made random overworld cries slightly less loud, added cries for 719 and 720. * Sound effects now sound louder * Revert "Added better quality Pokémon cries, made random overworld cries slightly less loud, added cries for 719 and 720." This reverts commit 8c9296ed1a82144d17f303a52c3f2e9e65a5bfea. * Fixed the cause of why the title screen music plays even when the game is muted * Tabs to spaces * Revert Co-authored-by: darkfire006 <blazer257@live.com> Co-authored-by: JappaWakkaP3D <66885565+JappaWakkaP3D@users.noreply.github.com> Co-authored-by: JappaWakkaP3D <jasper.speelman@outlook.com> Co-authored-by: Vitaly Mikhailov <personal@aragas.org>
2020-07-09 19:59:42 +02:00
SoundManager.PlaySound("select")
2016-09-07 18:50:38 +02:00
Me.ButtonSellItemsSell()
End If
If Controls.Dismiss(True, True, True) = True Then
If Me.SellItemsShowDescription = True Then
Me.SellItemsShowDescription = False
Fix audio engine & contentpacks (#35) * Replaced existing Gen 2 SFX with better sounding ones (no ugly reverb) Replaced MediaPlayer with NAudio(and NAudio.Vorbis) for playing music in order to fix random stopping issues. The game now directly loads .ogg files instead of the .wma/.xnb combination from before. ContentPacks are now able to replace Music and SFX again (I haven't added a menu yet for choosing ContentPacks). To make older GameModes work with current versions, you can add the GameMode property EnterType and set it to "1", this will make the game use the older 2D NewGameScreen. * Delete GameController.vb * Add gamecontroller.vb back * Fix sfx missing * Battleintro doodle now doesn't loop anymore (for no trainer) Changed the shutter sound (aka Large Door sound) to something more large door-y Made the enter sound slightly louder The enter sound now plays when going through any warp to or from an indoor map (including falling through holes) The flying sound effect is played earlier in the animation after selecting a location Changed played sound effect when using the Escape Rope to "teleport" instead of "destroy" The bump noise now also plays when bumping into something in first person Fixed small gap between the end of the intro song and the start of the main song Replaced some songs with better songs * Fixed some more intro issues * Forgot to change a thing * Fixed an error where the main music would play, ignoring the muted musicmanager. * fix indenting in musicmanager * The music player will now only start playback on a new song if the music player is not muted, fixed the end time calculation of the intro of a song after muting, Music can't be unmuted now as long as a sound effect plays that stops the music. * Fixed league restplace position, fixed sound effects sharing the volume slider of the music, sound effects are now also muted when pressing M, changed music on/off popup to audio on/off, removed bump delay in first person, added more control on whether played songs should be looping or not. * Fixed some more scripts that turn on thirdperson mode but don't check if it was on before or set it back to what it was before afterwards, also fixed a small error in creditsscreen.vb. * Fixed indenting error in musicmanager.vb, fixed an error of mine where the loopsong parameter would be seen as the playintro parameter. * Added more music commands, added quite some menu select noises, will add more later * More select sound effects! * Fix music not resuming after soundeffect * Trainer using item now plays the single_heal soundeffect * Pokémon cries now sound louder * Possibly fixing crash when playing Pokémon cry at volume higher than 0.71 * Added better quality Pokémon cries, made random overworld cries slightly less loud, added cries for 719 and 720. * Sound effects now sound louder * Revert "Added better quality Pokémon cries, made random overworld cries slightly less loud, added cries for 719 and 720." This reverts commit 8c9296ed1a82144d17f303a52c3f2e9e65a5bfea. * Fixed the cause of why the title screen music plays even when the game is muted * Tabs to spaces * Revert Co-authored-by: darkfire006 <blazer257@live.com> Co-authored-by: JappaWakkaP3D <66885565+JappaWakkaP3D@users.noreply.github.com> Co-authored-by: JappaWakkaP3D <jasper.speelman@outlook.com> Co-authored-by: Vitaly Mikhailov <personal@aragas.org>
2020-07-09 19:59:42 +02:00
SoundManager.PlaySound("select")
2016-09-07 18:50:38 +02:00
Else
Me.MenuState = MenuStates.SellItemsCategory
Fix audio engine & contentpacks (#35) * Replaced existing Gen 2 SFX with better sounding ones (no ugly reverb) Replaced MediaPlayer with NAudio(and NAudio.Vorbis) for playing music in order to fix random stopping issues. The game now directly loads .ogg files instead of the .wma/.xnb combination from before. ContentPacks are now able to replace Music and SFX again (I haven't added a menu yet for choosing ContentPacks). To make older GameModes work with current versions, you can add the GameMode property EnterType and set it to "1", this will make the game use the older 2D NewGameScreen. * Delete GameController.vb * Add gamecontroller.vb back * Fix sfx missing * Battleintro doodle now doesn't loop anymore (for no trainer) Changed the shutter sound (aka Large Door sound) to something more large door-y Made the enter sound slightly louder The enter sound now plays when going through any warp to or from an indoor map (including falling through holes) The flying sound effect is played earlier in the animation after selecting a location Changed played sound effect when using the Escape Rope to "teleport" instead of "destroy" The bump noise now also plays when bumping into something in first person Fixed small gap between the end of the intro song and the start of the main song Replaced some songs with better songs * Fixed some more intro issues * Forgot to change a thing * Fixed an error where the main music would play, ignoring the muted musicmanager. * fix indenting in musicmanager * The music player will now only start playback on a new song if the music player is not muted, fixed the end time calculation of the intro of a song after muting, Music can't be unmuted now as long as a sound effect plays that stops the music. * Fixed league restplace position, fixed sound effects sharing the volume slider of the music, sound effects are now also muted when pressing M, changed music on/off popup to audio on/off, removed bump delay in first person, added more control on whether played songs should be looping or not. * Fixed some more scripts that turn on thirdperson mode but don't check if it was on before or set it back to what it was before afterwards, also fixed a small error in creditsscreen.vb. * Fixed indenting error in musicmanager.vb, fixed an error of mine where the loopsong parameter would be seen as the playintro parameter. * Added more music commands, added quite some menu select noises, will add more later * More select sound effects! * Fix music not resuming after soundeffect * Trainer using item now plays the single_heal soundeffect * Pokémon cries now sound louder * Possibly fixing crash when playing Pokémon cry at volume higher than 0.71 * Added better quality Pokémon cries, made random overworld cries slightly less loud, added cries for 719 and 720. * Sound effects now sound louder * Revert "Added better quality Pokémon cries, made random overworld cries slightly less loud, added cries for 719 and 720." This reverts commit 8c9296ed1a82144d17f303a52c3f2e9e65a5bfea. * Fixed the cause of why the title screen music plays even when the game is muted * Tabs to spaces * Revert Co-authored-by: darkfire006 <blazer257@live.com> Co-authored-by: JappaWakkaP3D <66885565+JappaWakkaP3D@users.noreply.github.com> Co-authored-by: JappaWakkaP3D <jasper.speelman@outlook.com> Co-authored-by: Vitaly Mikhailov <personal@aragas.org>
2020-07-09 19:59:42 +02:00
SoundManager.PlaySound("select")
2016-09-07 18:50:38 +02:00
End If
End If
Me.BuySellSparkleRotation += 0.005F
If BuySellItemShrinking = True Then
BuySellItemSize -= 0.5F
If BuySellItemSize <= 160.0F Then
BuySellItemShrinking = False
End If
Else
BuySellItemSize += 0.5F
If BuySellItemSize >= 192.0F Then
BuySellItemShrinking = True
End If
End If
End Sub
Private Sub SellItemsClampCursor()
While Me.Cursor > 5
Me.Cursor -= 1
Me.Scroll += 1
End While
While Me.Cursor < 0
Me.Cursor += 1
Me.Scroll -= 1
End While
If Me.SellItemsList.Count < 7 Then
Me.Scroll = 0
Else
Me.Scroll = Me.Scroll.Clamp(0, Me.SellItemsList.Count - 6)
End If
If Me.SellItemsList.Count < 6 Then
Me.Cursor = Me.Cursor.Clamp(0, Me.SellItemsList.Count - 1)
Else
Me.Cursor = Me.Cursor.Clamp(0, 5)
End If
End Sub
Private Sub ButtonSellItemsMinus()
If Controls.ShiftDown() = True Then
Me.SellItemsAmount -= 5
Else
Me.SellItemsAmount -= 1
End If
End Sub
Private Sub ButtonSellItemsPlus()
If Controls.ShiftDown() = True Then
Me.SellItemsAmount += 5
Else
Me.SellItemsAmount += 1
End If
End Sub
Private Sub ButtonSellItemsSell()
If SellItemsAmount > 0 Then
sellItemsConfirmationCursor = 0
Me.MenuState = MenuStates.SellItemsConfirmation
End If
End Sub
Private Sub DrawSellItems()
' Item selection menu:
2016-09-07 18:50:38 +02:00
For i = Scroll To Scroll + 5
If i <= Me.SellItemsList.Count - 1 Then
Dim p As Integer = i - Scroll
DrawButton(New Vector2(100, 100 + p * 96), 5, Me.SellItemsList(i).GetItem().Name, 16, Me.SellItemsList(i).GetItem().Texture)
End If
Next
If Me.SellItemsList.Count > 0 Then
Dim selectedItem As TradeItem = Me.SellItemsList(Scroll + Cursor)
' Item preview:
2016-09-07 18:50:38 +02:00
Core.SpriteBatch.EndBatch()
2018-02-26 00:24:11 +01:00
Core.SpriteBatch.Begin(SpriteSortMode.Deferred, BlendState.NonPremultiplied, SamplerState.PointClamp, DepthStencilState.Default, RasterizerState.CullCounterClockwise)
2016-09-07 18:50:38 +02:00
Core.SpriteBatch.Draw(TextureManager.GetTexture("GUI\Box\Sparkle"), New Rectangle(736 + 128, 160 + 128, 256, 256), Nothing, Color.White, BuySellSparkleRotation, New Vector2(128, 128), SpriteEffects.None, 0.0F)
Core.SpriteBatch.End()
Core.SpriteBatch.BeginBatch()
Dim itemOffset As Single = (256 - BuySellItemSize) / 2.0F
Core.SpriteBatch.Draw(selectedItem.GetItem().Texture, New Rectangle(CInt(736 + itemOffset), CInt(160 + itemOffset), CInt(BuySellItemSize), CInt(BuySellItemSize)), Color.White)
If Me.SellItemsShowDescription = True Then
Canvas.DrawRectangle(New Rectangle(736 + 28, 160 + 28, 200, 200), New Color(0, 0, 0, 200))
Dim t As String = selectedItem.GetItem().Description.CropStringToWidth(FontManager.MiniFont, 180)
SpriteBatch.DrawString(FontManager.MiniFont, t, New Vector2(736 + 30, 160 + 30), Color.White)
End If
' Amount of the selected item in the player's Bag:
2016-09-07 18:50:38 +02:00
Dim amount As String = Core.Player.Inventory.GetItemAmount(selectedItem.ItemID).ToString()
While amount.Length < 3
amount = "0" & amount
End While
Me.DrawBanner(New Vector2(665, 430), 30, "In Bag " & amount, FontManager.MiniFont, 400)
2016-09-07 18:50:38 +02:00
' - button:
2016-09-07 18:50:38 +02:00
Core.SpriteBatch.Draw(texture, New Rectangle(664, 484, 64, 64), New Rectangle(16, 32, 16, 16), Color.White)
Core.SpriteBatch.DrawString(FontManager.MainFont, "-", New Vector2(664 + 23, 484 + 2), Color.Black, 0.0F, Vector2.Zero, 2.0F, SpriteEffects.None, 0.0F)
' Amount field:
2016-09-07 18:50:38 +02:00
Canvas.DrawRectangle(New Rectangle(740, 492, 104, 48), New Color(77, 147, 198))
Canvas.DrawRectangle(New Rectangle(744, 496, 96, 40), New Color(232, 240, 248))
Dim amountString As String = Me.SellItemsAmount.ToString()
While amountString.Length < 3
amountString = "0" & amountString
End While
amountString = "x" & amountString
Core.SpriteBatch.DrawString(FontManager.MainFont, amountString, New Vector2(792 - FontManager.MainFont.MeasureString(amountString).X / 2.0F, 504), Color.Black)
' + button:
2016-09-07 18:50:38 +02:00
Core.SpriteBatch.Draw(texture, New Rectangle(856, 484, 64, 64), New Rectangle(16, 32, 16, 16), Color.White)
Core.SpriteBatch.DrawString(FontManager.MainFont, "+", New Vector2(856 + 19, 484 + 6), Color.Black, 0.0F, Vector2.Zero, 2.0F, SpriteEffects.None, 0.0F)
Core.SpriteBatch.DrawString(FontManager.MainFont, "Per Item: " & selectedItem.SellPrice().ToString() & GetCurrencyShort() & Environment.NewLine &
2016-09-07 18:50:38 +02:00
"Total: " & (SellItemsAmount * selectedItem.SellPrice()).ToString() & GetCurrencyShort(), New Vector2(930, 490), Color.White)
' Sell button:
2016-09-07 18:50:38 +02:00
If Me.SellItemsAmount > 0 Then
If ControllerHandler.IsConnected() = True Then
Core.SpriteBatch.Draw(TextureManager.GetTexture("GUI\GamePad\xboxControllerButtonA"), New Rectangle(664 + 12, 484 + 64 + 34, 40, 40), Color.White)
End If
Me.DrawButton(New Vector2(664 + 64, 484 + 64 + 22), 1, "Sell", 64)
End If
End If
' Current balance:
2016-09-07 18:50:38 +02:00
Me.DrawBanner(New Vector2(665, 110), 30, "Current balance: " & GetCurrencyDisplay(), FontManager.MiniFont, 400)
' Cursor draw:
2016-09-07 18:50:38 +02:00
Me.DrawMainCursor()
End Sub
#End Region
#Region "SellItemsConfirmationScreen"
Private sellItemsConfirmationCursor As Integer = 0
Private Sub UpdateSellConfirmation()
If Controls.Down(True, True, True, True, True, True) = True Then
Me.sellItemsConfirmationCursor += 1
End If
If Controls.Up(True, True, True, True, True, True) = True Then
Me.sellItemsConfirmationCursor -= 1
End If
Me.sellItemsConfirmationCursor = Me.sellItemsConfirmationCursor.Clamp(0, 1)
If Controls.Accept(True, False, False) = True Then
For i = 0 To 1
If New Rectangle(CInt(Core.windowSize.Width / 2.0F - 192), CInt(Core.windowSize.Height / 2.0F - 60 + (i * 96)), 64 * 5, 64).Contains(MouseHandler.MousePosition) = True Then
If sellItemsConfirmationCursor = i Then
Select Case i
Case 0
ButtonSellConfirmationSell()
Case 1
ButtonSellConfirmationCancel()
End Select
Else
sellItemsConfirmationCursor = i
End If
End If
Next
End If
If Controls.Accept(False, True, True) = True Then
Select Case sellItemsConfirmationCursor
Case 0
ButtonSellConfirmationSell()
Case 1
ButtonSellConfirmationCancel()
End Select
End If
End Sub
Private Sub DrawSellConfirmation()
Me.DrawSellItems()
Canvas.DrawRectangle(New Rectangle(CInt(Core.windowSize.Width / 2 - 300), CInt(Core.windowSize.Height / 2 - 200), 600, 400), New Color(0, 0, 0, 150))
Dim tradeItem As TradeItem = Me.SellItemsList(Me.Scroll + Me.Cursor)
Dim text As String = "Do you want to sell" & Environment.NewLine & Me.SellItemsAmount & " " & tradeItem.GetItem().Name & "?"
2016-09-07 18:50:38 +02:00
Core.SpriteBatch.DrawString(FontManager.MiniFont,
text,
New Vector2(Core.windowSize.Width / 2.0F - FontManager.MiniFont.MeasureString(text).X, Core.windowSize.Height / 2.0F - 170),
Color.White, 0.0F, Vector2.Zero, 2.0F, SpriteEffects.None, 0.0F)
DrawButton(New Vector2(Core.windowSize.Width / 2.0F - 192, Core.windowSize.Height / 2.0F - 60), 4, "Sell", 16, Nothing)
DrawButton(New Vector2(Core.windowSize.Width / 2.0F - 192, Core.windowSize.Height / 2.0F + 36), 4, "Cancel", 16, Nothing)
' Cursor:
2016-09-07 18:50:38 +02:00
Dim cPosition As Vector2 = New Vector2(Core.windowSize.Width / 2.0F - 192 + 280, Core.windowSize.Height / 2.0F - 60 + Me.sellItemsConfirmationCursor * 96 - 42)
Dim t As Texture2D = TextureManager.GetTexture("GUI\Menus\General", New Rectangle(0, 0, 16, 16), "")
Core.SpriteBatch.Draw(t, New Rectangle(CInt(cPosition.X), CInt(cPosition.Y), 64, 64), Color.White)
End Sub
Private Sub ButtonSellConfirmationSell()
Dim tradeItem As TradeItem = Me.SellItemsList(Me.Scroll + Me.Cursor)
Me.ChangeCurrencyAmount(tradeItem.SellPrice() * Me.SellItemsAmount)
Core.Player.Inventory.RemoveItem(tradeItem.ItemID, Me.SellItemsAmount)
Me.LoadSellItemsList()
Me.SellItemsClampCursor()
SoundManager.PlaySound("buy2")
If Me.SellItemsList.Count = 0 Then
Me.MenuState = MenuStates.SellItemsCategory
Me.LoadSellCategoryItems()
Else
Me.MenuState = MenuStates.SellItems
End If
End Sub
Private Sub ButtonSellConfirmationCancel()
Me.MenuState = MenuStates.SellItems
End Sub
#End Region
''' <summary>
''' Draws a button on the screen.
''' </summary>
''' <param name="Position">The position of the button in absolute screen coordinates.</param>
''' <param name="Width">The width of the button in 64px steps. 5 is default.</param>
''' <param name="Text">The text to be displayed on the button.</param>
''' <param name="TextOffset">The offset on the text on the button. 16 is default.</param>
Private Sub DrawButton(ByVal Position As Vector2, ByVal Width As Integer, ByVal Text As String, ByVal TextOffset As Integer, Optional ByVal Image As Texture2D = Nothing)
Core.SpriteBatch.Draw(Me.texture, New Rectangle(CInt(Position.X), CInt(Position.Y), 64, 64), New Rectangle(16, 16, 16, 16), Color.White)
Core.SpriteBatch.Draw(Me.texture, New Rectangle(CInt(Position.X) + 64, CInt(Position.Y), 64 * Width, 64), New Rectangle(32, 16, 16, 16), Color.White)
Core.SpriteBatch.Draw(Me.texture, New Rectangle(CInt(Position.X) + 64 * (Width + 1), CInt(Position.Y), 64, 64), New Rectangle(16, 16, 16, 16), Color.White, 0.0F, Vector2.Zero, SpriteEffects.FlipHorizontally, 0.0F)
If Image Is Nothing Then
Core.SpriteBatch.DrawString(FontManager.MainFont, Text, New Vector2(TextOffset + CInt(Position.X), CInt(Position.Y) + 16), Color.Black, 0.0F, Vector2.Zero, 1.25F, SpriteEffects.None, 0.0F)
Else
Core.SpriteBatch.DrawString(FontManager.MainFont, Text, New Vector2(4 + 16 + Image.Width + TextOffset + CInt(Position.X), CInt(Position.Y) + 16), Color.Black, 0.0F, Vector2.Zero, 1.25F, SpriteEffects.None, 0.0F)
Core.SpriteBatch.Draw(Image, New Rectangle(CInt(Position.X) + TextOffset + 8, CInt(Position.Y) + 19, Image.Width, Image.Height), Color.White)
End If
End Sub
Private Sub DrawBanner(ByVal Position As Vector2, ByVal Height As Integer, ByVal Text As String, ByVal Font As SpriteFont, Optional ByVal FixedWidth As Integer? = Nothing)
Dim textWidth As Single = Font.MeasureString(Text).X
Dim textHeight As Single = Font.MeasureString(Text).Y
Dim textY As Single = (Height / 2.0F) - (textHeight / 2.0F)
Dim Width As Integer = CInt((Height + 10) * 2 + textWidth)
If FixedWidth.HasValue = True Then
Width = FixedWidth.GetValueOrDefault()
End If
Canvas.DrawGradient(New Rectangle(CInt(Position.X), CInt(Position.Y), Height, Height), New Color(42, 167, 198, 0), New Color(42, 167, 198, 150), True, -1)
Canvas.DrawRectangle(New Rectangle(CInt(Position.X) + Height, CInt(Position.Y), Width - (Height * 2), Height), New Color(42, 167, 198, 150))
Canvas.DrawGradient(New Rectangle(CInt(Position.X) + (Width - Height), CInt(Position.Y), Height, Height), New Color(42, 167, 198, 150), New Color(42, 167, 198, 0), True, -1)
Core.SpriteBatch.DrawString(Font, Text, New Vector2(Position.X + Height + 10, Position.Y + textY), Color.White)
End Sub
2016-09-20 02:18:12 +02:00
Private Function GetItemTypeTexture(ByVal itemType As Items.ItemTypes) As Texture2D
2016-09-07 18:50:38 +02:00
Dim i As Integer = 0
Select Case itemType
2016-09-20 02:18:12 +02:00
Case Items.ItemTypes.Standard
2016-09-07 18:50:38 +02:00
i = 0
2016-09-20 02:18:12 +02:00
Case Items.ItemTypes.Medicine
2016-09-07 18:50:38 +02:00
i = 1
2016-09-20 02:18:12 +02:00
Case Items.ItemTypes.Machines
2016-09-07 18:50:38 +02:00
i = 2
2016-09-20 02:18:12 +02:00
Case Items.ItemTypes.Pokéballs
2016-09-07 18:50:38 +02:00
i = 3
2016-09-20 02:18:12 +02:00
Case Items.ItemTypes.Plants
2016-09-07 18:50:38 +02:00
i = 4
2016-09-20 02:18:12 +02:00
Case Items.ItemTypes.Mail
2016-09-07 18:50:38 +02:00
i = 5
2016-09-20 02:18:12 +02:00
Case Items.ItemTypes.BattleItems
2016-09-07 18:50:38 +02:00
i = 6
2016-09-20 02:18:12 +02:00
Case Items.ItemTypes.KeyItems
2016-09-07 18:50:38 +02:00
i = 7
End Select
Return TextureManager.GetTexture(TextureManager.GetTexture("GUI\Menus\BagPack"), New Rectangle(i * 24, 150, 24, 24))
2016-09-07 18:50:38 +02:00
End Function
Private Function GetCurrencyAmount() As Integer
Select Case Me.Currency
Case Currencies.BattlePoints
Return Core.Player.BP
Case Currencies.Pokédollar
Return Core.Player.Money
End Select
Return 0
End Function
Private Function GetCurrencyDisplay() As String
Select Case Me.Currency
Case Currencies.BattlePoints
Return GetCurrencyAmount().ToString() & " Battle Points"
Case Currencies.Pokédollar
Return GetCurrencyAmount().ToString() & " Pokémon Dollars"
2016-09-07 18:50:38 +02:00
End Select
Return ""
End Function
Private Function GetCurrencyShort() As String
Select Case Me.Currency
Case Currencies.BattlePoints
Return "BP"
Case Currencies.Pokédollar
Return "$"
End Select
Return ""
End Function
Private Sub ChangeCurrencyAmount(ByVal change As Integer)
Select Case Me.Currency
Case Currencies.BattlePoints
Core.Player.BP = (Core.Player.BP + change).Clamp(0, Integer.MaxValue)
Case Currencies.Pokédollar
Core.Player.Money = (Core.Player.Money + change).Clamp(0, Integer.MaxValue)
End Select
End Sub
End Class