diff --git a/2.5DHero/2.5DHero/Battle/BattleSystemV2/BattleMenu.vb b/2.5DHero/2.5DHero/Battle/BattleSystemV2/BattleMenu.vb index f0781698e..3181bf15a 100644 --- a/2.5DHero/2.5DHero/Battle/BattleSystemV2/BattleMenu.vb +++ b/2.5DHero/2.5DHero/Battle/BattleSystemV2/BattleMenu.vb @@ -699,7 +699,13 @@ Private Sub MainMenuOpenBag(ByVal BattleScreen As BattleScreen) If BattleScreen.CanUseItems = True Then TempBattleScreen = BattleScreen - Core.SetScreen(New InventoryScreen(Core.CurrentScreen, {}, AddressOf SelectedItem)) + Dim selScreen As New NewInventoryScreen(Core.CurrentScreen) + selScreen.Mode = Screens.UI.ISelectionScreen.ScreenMode.Selection + selScreen.CanExit = True + + AddHandler selScreen.SelectedObject, AddressOf SelectedItemHandler + Core.SetScreen(selScreen) + 'Core.SetScreen(New InventoryScreen(Core.CurrentScreen, {}, AddressOf SelectedItem)) End If End Sub @@ -953,6 +959,10 @@ #Region "UseItem" + Private Shared Sub SelectedItemHandler(ByVal params As Object()) + SelectedItem(CInt(params(0))) + End Sub + Private Shared Sub SelectedItem(ByVal itemID As Integer) Dim Item As Item = Item.GetItemByID(itemID) diff --git a/2.5DHero/2.5DHero/Entites/Enviroment/LoamySoil.vb b/2.5DHero/2.5DHero/Entites/Enviroment/LoamySoil.vb index e6e1e02aa..4e53a7725 100644 --- a/2.5DHero/2.5DHero/Entites/Enviroment/LoamySoil.vb +++ b/2.5DHero/2.5DHero/Entites/Enviroment/LoamySoil.vb @@ -25,10 +25,20 @@ Public Overrides Sub ResultFunction(ByVal Result As Integer) If Result = 0 Then - Core.SetScreen(New InventoryScreen(Core.CurrentScreen, {4}, 4, AddressOf Me.PlantBerry)) + Dim selScreen As New NewInventoryScreen(Core.CurrentScreen, {2}, 2, Nothing) + selScreen.Mode = Screens.UI.ISelectionScreen.ScreenMode.Selection + selScreen.CanExit = True + + AddHandler selScreen.SelectedObject, AddressOf PlantBerryHandler + Core.SetScreen(selScreen) + 'Core.SetScreen(New NewInventoryScreen(Core.CurrentScreen, {2}, 2, AddressOf Me.PlantBerry)) End If End Sub + Public Sub PlantBerryHandler(ByVal params As Object()) + PlantBerry(CInt(params(0))) + End Sub + Public Sub PlantBerry(ByVal ChosenBerry As Integer) Dim testItem As Item = Item.GetItemByID(ChosenBerry) If testItem.isBerry = True Then diff --git a/2.5DHero/2.5DHero/Screens/Inventory/NewInventoryScreen.vb b/2.5DHero/2.5DHero/Screens/Inventory/NewInventoryScreen.vb index ce9a220c9..024f09143 100644 --- a/2.5DHero/2.5DHero/Screens/Inventory/NewInventoryScreen.vb +++ b/2.5DHero/2.5DHero/Screens/Inventory/NewInventoryScreen.vb @@ -115,7 +115,17 @@ Public Class NewInventoryScreen Private _messageDelay As Single = 0F Private _messageText As String = "" - Public Sub New(ByVal currentScreen As Screen) + 'experiment + Public Delegate Sub DoStuff(ByVal ItemID As Integer) + Dim ReturnItem As DoStuff + Dim AllowedPages() As Integer + + Public Sub New(ByVal currentScreen As Screen, ByVal AllowedPages As Integer(), ByVal StartPageIndex As Integer, ByVal DoStuff As DoStuff) + + _tabIndex = StartPageIndex + Me.AllowedPages = AllowedPages + ReturnItem = DoStuff + _translation = New Globalization.Classes.LOCAL_InventoryScreen() target_1 = New RenderTarget2D(GraphicsDevice, 816, 400 - 32, False, SurfaceFormat.Color, DepthFormat.None, 0, RenderTargetUsage.PreserveContents) target_2 = New RenderTarget2D(GraphicsDevice, 500, 368) @@ -158,6 +168,14 @@ Public Class NewInventoryScreen LoadItems() End Sub + Public Sub New(ByVal currentScreen As Screen, ByVal AllowedPages() As Integer, ByVal DoStuff As DoStuff) + Me.New(currentScreen, AllowedPages, Player.Temp.BagIndex, DoStuff) + End Sub + + Public Sub New(ByVal currentScreen As Screen) + Me.New(currentScreen, {}, Player.Temp.BagIndex, Nothing) + End Sub + Public Overrides Sub Draw() 'PreScreen.Draw() @@ -532,8 +550,21 @@ Public Class NewInventoryScreen Private Sub UpdateTabs() If Controls.Left(True, True, True, True, True, True) And _tabInControl Or ControllerHandler.ButtonPressed(Buttons.LeftShoulder) Then _tabIndex -= 1 + If AllowedPages.Count > 0 And AllowedPages.Contains(_tabIndex) = False Then + While AllowedPages.Contains(_tabIndex) = False + _tabIndex -= 1 + + If _tabIndex < 0 Then + _tabIndex = 7 + ElseIf _tabIndex > 7 Then + _tabIndex = 0 + End If + End While + End If If _tabIndex < 0 Then _tabIndex = 7 + ElseIf _tabIndex > 7 Then + _tabIndex = 0 End If _itemIntro = 0F ResetAnimation() @@ -541,7 +572,20 @@ Public Class NewInventoryScreen End If If Controls.Right(True, True, True, True, True, True) And _tabInControl Or ControllerHandler.ButtonPressed(Buttons.RightShoulder) Then _tabIndex += 1 - If _tabIndex > 7 Then + If AllowedPages.Count > 0 And AllowedPages.Contains(_tabIndex) = False Then + While AllowedPages.Contains(_tabIndex) = False + _tabIndex += 1 + + If _tabIndex < 0 Then + _tabIndex = 7 + ElseIf _tabIndex > 7 Then + _tabIndex = 0 + End If + End While + End If + If _tabIndex < 0 Then + _tabIndex = 7 + ElseIf _tabIndex > 7 Then _tabIndex = 0 End If _itemIntro = 0F diff --git a/2.5DHero/2.5DHero/Screens/PC/MailSystemScreen.vb b/2.5DHero/2.5DHero/Screens/PC/MailSystemScreen.vb index 872d5ac62..e66966041 100644 --- a/2.5DHero/2.5DHero/Screens/PC/MailSystemScreen.vb +++ b/2.5DHero/2.5DHero/Screens/PC/MailSystemScreen.vb @@ -219,7 +219,13 @@ If Controls.Accept(True, True, True) = True Then If Me.selectIndex = 0 Then - Core.SetScreen(New InventoryScreen(Me, {5}, 5, AddressOf Me.ChosenMail)) + Dim selScreen As New NewInventoryScreen(Core.CurrentScreen, {5}, 5, Nothing) + selScreen.Mode = Screens.UI.ISelectionScreen.ScreenMode.Selection + selScreen.CanExit = True + + AddHandler selScreen.SelectedObject, AddressOf ChosenMailHandler + Core.SetScreen(selScreen) + 'Core.SetScreen(New InventoryScreen(Me, {5}, 5, AddressOf Me.ChosenMail)) Else If Me.index = Me.selectIndex Then Me.index = -1 @@ -288,6 +294,10 @@ End If End Sub + Private Sub ChosenMailHandler(ByVal params As Object()) + ChosenMail(CInt(params(0))) + End Sub + Private Sub ChosenMail(ByVal ItemID As Integer) Me.index = 0 Me.EditMailIndex = 0