From 22c7a0abe9e89e17cdc30b6dc9472552c52c0ca8 Mon Sep 17 00:00:00 2001 From: CaptainSegis Date: Sun, 15 Oct 2017 17:08:16 -0500 Subject: [PATCH] Added TM/HM name and Tab name descriptions in InventoryScreen, and other minor changes to the new GUI --- .../Screens/Inventory/NewInventoryScreen.vb | 70 ++++++++++++++---- 2.5DHero/2.5DHero/Screens/NewOptionScreen.vb | 8 +- .../2.5DHero/Screens/Pokemon/PartyScreen.vb | 8 +- .../2.5DHero/Screens/Pokemon/SummaryScreen.vb | 4 +- .../Content/GUI/Menus/General.png | Bin 2517 -> 2515 bytes .../Content/GUI/Menus/PokemonInfo.png | Bin 3054 -> 3094 bytes 6 files changed, 66 insertions(+), 24 deletions(-) diff --git a/2.5DHero/2.5DHero/Screens/Inventory/NewInventoryScreen.vb b/2.5DHero/2.5DHero/Screens/Inventory/NewInventoryScreen.vb index 691b8fde6..f90f2fe3e 100644 --- a/2.5DHero/2.5DHero/Screens/Inventory/NewInventoryScreen.vb +++ b/2.5DHero/2.5DHero/Screens/Inventory/NewInventoryScreen.vb @@ -198,8 +198,9 @@ Public Class NewInventoryScreen End If DrawGradients(CInt(255 * _interfaceFade)) - DrawTabs() + DrawMain() + DrawTabs() DrawMessage() @@ -215,24 +216,16 @@ Public Class NewInventoryScreen Private Sub DrawPrescreen() If _preScreenTexture Is Nothing OrElse _preScreenTexture.IsContentLost Then SpriteBatch.EndBatch() - Dim target As RenderTarget2D = _preScreenTarget GraphicsDevice.SetRenderTarget(target) GraphicsDevice.Clear(BackgroundColor) - SpriteBatch.BeginBatch() - PreScreen.Draw() - SpriteBatch.EndBatch() - GraphicsDevice.SetRenderTarget(Nothing) - SpriteBatch.BeginBatch() - _preScreenTexture = target End If - SpriteBatch.Draw(_blur.Perform(_preScreenTexture), windowSize, Color.White) End Sub @@ -261,6 +254,10 @@ Public Class NewInventoryScreen Private Sub DrawTabs() Dim halfWidth As Integer = CInt(Core.windowSize.Width / 2) Dim halfHeight As Integer = CInt(Core.windowSize.Height / 2) + Dim mainBackgroundColor As Color = Color.White + If _closing = True Then + mainBackgroundColor = New Color(255, 255, 255, CInt(255 * _interfaceFade)) + End If For x = 0 To 368 Step 16 Dim cTabIndex As Integer = CInt(Math.Floor(x / 48)) @@ -282,6 +279,35 @@ Public Class NewInventoryScreen SpriteBatch.Draw(_menuTexture, New Rectangle(halfWidth - 400 + x - 24, halfHeight - 200 + 8, 32, 32), GetTabImageRect(cTabIndex), bgColor) End If Next + + Dim TabDesriptionWidth As Integer = 176 + Dim TbgColor As New Color(128, 128, 128) + If _closing Then + TbgColor = New Color(TbgColor.R, TbgColor.G, TbgColor.B, CInt(CInt(TbgColor.A) * _interfaceFade)) + End If + For x = 0 To TabDesriptionWidth Step 16 + For y = 0 To 32 Step 16 + SpriteBatch.Draw(_menuTexture, New Rectangle(halfWidth - 400 + x + 384, halfHeight - 200 + y, 16, 16), New Rectangle(0, 0, 4, 4), TbgColor) + Next + Next + Canvas.DrawGradient(Core.SpriteBatch, New Rectangle(halfWidth - 400 + 384 + TabDesriptionWidth + 16, halfHeight - 200, 800 - (384 + TabDesriptionWidth), 48), New Color(0, 0, 0, CInt(TbgColor.A * 0.5)), New Color(0, 0, 0, CInt(TbgColor.A * 0.00)), True, -1) + Dim TabName As String = "" + Select Case _tabIndex + Case 0 : TabName = "Standard" + Case 1 : TabName = "Medicine" + Case 2 : TabName = "Plants" + Case 3 : TabName = "Pokéball" + Case 4 : TabName = "TM/HM" + Case 5 : TabName = "Mail" + Case 6 : TabName = "Battle Items" + Case 7 : TabName = "Key Items" + End Select + Dim gColor As New Color(164, 164, 164) + If _closing Then + gColor = New Color(gColor.R, gColor.G, gColor.B, CInt(CInt(gColor.A) * _interfaceFade)) + End If + Dim fontWidth As Integer = CInt(FontManager.ChatFont.MeasureString(TabName).X) + SpriteBatch.DrawString(FontManager.ChatFont, TabName, New Vector2(halfWidth - 400 + 384 + CInt((TabDesriptionWidth - fontWidth) * 0.5), halfHeight - 200 + 12), gColor) End Sub ''' @@ -298,10 +324,17 @@ Public Class NewInventoryScreen mainBackgroundColor = New Color(255, 255, 255, CInt(255 * _interfaceFade)) End If + Canvas.DrawRectangle(New Rectangle(halfWidth - 400, halfHeight - 232, 260, 32), New Color(84, 198, 216, mainBackgroundColor.A)) + Canvas.DrawRectangle(New Rectangle(halfWidth - 140, halfHeight - 216, 16, 16), New Color(84, 198, 216, mainBackgroundColor.A)) + SpriteBatch.Draw(_texture, New Rectangle(halfWidth - 140, halfHeight - 232, 16, 16), New Rectangle(80, 0, 16, 16), mainBackgroundColor) + SpriteBatch.Draw(_texture, New Rectangle(halfWidth - 124, halfHeight - 216, 16, 16), New Rectangle(80, 0, 16, 16), mainBackgroundColor) + + SpriteBatch.DrawString(FontManager.ChatFont, "Inventory", New Vector2(halfWidth - 390, halfHeight - 228), mainBackgroundColor) + 'Draw background pattern: - For y = 48 To CInt(_enrollY) Step 16 + For y = 0 To CInt(_enrollY) Step 16 For x = 0 To 800 Step 16 - SpriteBatch.Draw(_menuTexture, New Rectangle(halfWidth - 400 + x, halfHeight - 200 + y, 16, 16), New Rectangle(0, 0, 4, 4), mainBackgroundColor) + SpriteBatch.Draw(_texture, New Rectangle(halfWidth - 400 + x, halfHeight - 200 + y, 16, 16), New Rectangle(64, 0, 4, 4), mainBackgroundColor) Next Next @@ -309,7 +342,7 @@ Public Class NewInventoryScreen Dim modRes As Integer = CInt(_enrollY) Mod 16 If modRes > 0 Then For x = 0 To 800 Step 16 - SpriteBatch.Draw(_menuTexture, New Rectangle(halfWidth - 400 + x, CInt(_enrollY + (halfHeight - 200)), 16, modRes), New Rectangle(0, 0, 4, 4), mainBackgroundColor) + SpriteBatch.Draw(_texture, New Rectangle(halfWidth - 400 + x, CInt(_enrollY + (halfHeight - 200)), 16, modRes), New Rectangle(64, 0, 4, 4), mainBackgroundColor) Next End If @@ -353,14 +386,23 @@ Public Class NewInventoryScreen itemBatch.Draw(cItem.Texture, New Rectangle(CInt(itemLoc.X) + 48, CInt(itemLoc.Y) + Yoffset, size, size), Nothing, New Color(255, 255, 255, itemPanelAlpha), If(i = ItemIndex, _itemAnimation._shakeV, 0F), New Vector2(cItem.Texture.Width / 2.0F), SpriteEffects.None, 0F) - Canvas.DrawRectangle(itemBatch, New Rectangle(CInt(itemLoc.X) - 16, CInt(itemLoc.Y) + 48, 128, 24), New Color(0, 0, 0, CInt(If(_tabInControl, 64, 128) * _interfaceFade))) + Dim nameTextHeight As Integer = 24 + If _tabIndex = 4 Then + nameTextHeight = 40 + End If + Canvas.DrawRectangle(itemBatch, New Rectangle(CInt(itemLoc.X) - 16, CInt(itemLoc.Y) + 48, 128, nameTextHeight), New Color(0, 0, 0, CInt(If(_tabInControl, 64, 128) * _interfaceFade))) Dim fontWidth As Integer = CInt(FontManager.MiniFont.MeasureString(cItem.Name).X) - itemBatch.DrawString(FontManager.MiniFont, cItem.Name, itemLoc + New Vector2(48 - fontWidth / 2.0F, 51), New Color(255, 255, 255, itemPanelAlpha)) If _tabIndex <> 7 Then itemBatch.DrawString(FontManager.MiniFont, "x" & _items(i + (PageIndex * 10)).Amount.ToString(), itemLoc + New Vector2(84, 26), New Color(40, 40, 40, itemPanelAlpha)) End If + + If _tabIndex = 4 Then + Dim AttackName As String = CType(cItem, Items.TechMachine).Attack.Name + Dim TMfontWidth As Integer = CInt(FontManager.MiniFont.MeasureString(AttackName).X) + itemBatch.DrawString(FontManager.MiniFont, AttackName, itemLoc + New Vector2(48 - TMfontWidth / 2.0F, 51 + 16), New Color(255, 255, 255, itemPanelAlpha)) + End If End If End If Next diff --git a/2.5DHero/2.5DHero/Screens/NewOptionScreen.vb b/2.5DHero/2.5DHero/Screens/NewOptionScreen.vb index bc7902536..f83dda0da 100644 --- a/2.5DHero/2.5DHero/Screens/NewOptionScreen.vb +++ b/2.5DHero/2.5DHero/Screens/NewOptionScreen.vb @@ -120,21 +120,21 @@ Canvas.DrawRectangle(New Rectangle(halfWidth - 400, halfHeight - 232, 260, 32), New Color(84, 198, 216, mainBackgroundColor.A)) Canvas.DrawRectangle(New Rectangle(halfWidth - 140, halfHeight - 216, 16, 16), New Color(84, 198, 216, mainBackgroundColor.A)) - SpriteBatch.Draw(_menuTexture, New Rectangle(halfWidth - 140, halfHeight - 232, 16, 16), New Rectangle(16, 0, 16, 16), mainBackgroundColor) - SpriteBatch.Draw(_menuTexture, New Rectangle(halfWidth - 124, halfHeight - 216, 16, 16), New Rectangle(16, 0, 16, 16), mainBackgroundColor) + SpriteBatch.Draw(_texture, New Rectangle(halfWidth - 140, halfHeight - 232, 16, 16), New Rectangle(80, 0, 16, 16), mainBackgroundColor) + SpriteBatch.Draw(_texture, New Rectangle(halfWidth - 124, halfHeight - 216, 16, 16), New Rectangle(80, 0, 16, 16), mainBackgroundColor) SpriteBatch.DrawString(FontManager.ChatFont, "Options", New Vector2(halfWidth - 390, halfHeight - 228), mainBackgroundColor) For y = 0 To CInt(_enrollY) Step 16 For x = 0 To 800 Step 16 - SpriteBatch.Draw(_menuTexture, New Rectangle(halfWidth - 400 + x, halfHeight - 200 + y, 16, 16), New Rectangle(8, 0, 4, 4), mainBackgroundColor) + SpriteBatch.Draw(_texture, New Rectangle(halfWidth - 400 + x, halfHeight - 200 + y, 16, 16), New Rectangle(64, 0, 4, 4), mainBackgroundColor) Next Next Dim modRes As Integer = CInt(_enrollY) Mod 16 If modRes > 0 Then For x = 0 To 800 Step 16 - SpriteBatch.Draw(_menuTexture, New Rectangle(halfWidth - 400 + x, CInt(_enrollY + (halfHeight - 200)), 16, modRes), New Rectangle(8, 0, 4, 4), mainBackgroundColor) + SpriteBatch.Draw(_texture, New Rectangle(halfWidth - 400 + x, CInt(_enrollY + (halfHeight - 200)), 16, modRes), New Rectangle(64, 0, 4, 4), mainBackgroundColor) Next End If End Sub diff --git a/2.5DHero/2.5DHero/Screens/Pokemon/PartyScreen.vb b/2.5DHero/2.5DHero/Screens/Pokemon/PartyScreen.vb index 6f7ef0c2c..24db2ae64 100644 --- a/2.5DHero/2.5DHero/Screens/Pokemon/PartyScreen.vb +++ b/2.5DHero/2.5DHero/Screens/Pokemon/PartyScreen.vb @@ -227,21 +227,21 @@ Public Class PartyScreen Canvas.DrawRectangle(New Rectangle(halfWidth - 400, halfHeight - 232, 260, 32), New Color(84, 198, 216, mainBackgroundColor.A)) Canvas.DrawRectangle(New Rectangle(halfWidth - 140, halfHeight - 216, 16, 16), New Color(84, 198, 216, mainBackgroundColor.A)) - SpriteBatch.Draw(_menuTexture, New Rectangle(halfWidth - 140, halfHeight - 232, 16, 16), New Rectangle(32, 16, 16, 16), mainBackgroundColor) - SpriteBatch.Draw(_menuTexture, New Rectangle(halfWidth - 124, halfHeight - 216, 16, 16), New Rectangle(32, 16, 16, 16), mainBackgroundColor) + SpriteBatch.Draw(_texture, New Rectangle(halfWidth - 140, halfHeight - 232, 16, 16), New Rectangle(80, 0, 16, 16), mainBackgroundColor) + SpriteBatch.Draw(_texture, New Rectangle(halfWidth - 124, halfHeight - 216, 16, 16), New Rectangle(80, 0, 16, 16), mainBackgroundColor) SpriteBatch.DrawString(FontManager.ChatFont, POKEMON_TITLE, New Vector2(halfWidth - 390, halfHeight - 228), mainBackgroundColor) For y = 0 To CInt(_enrollY) Step 16 For x = 0 To 800 Step 16 - SpriteBatch.Draw(_menuTexture, New Rectangle(halfWidth - 400 + x, halfHeight - 200 + y, 16, 16), New Rectangle(0, 0, 4, 4), mainBackgroundColor) + SpriteBatch.Draw(_texture, New Rectangle(halfWidth - 400 + x, halfHeight - 200 + y, 16, 16), New Rectangle(64, 0, 4, 4), mainBackgroundColor) Next Next Dim modRes As Integer = CInt(_enrollY) Mod 16 If modRes > 0 Then For x = 0 To 800 Step 16 - SpriteBatch.Draw(_menuTexture, New Rectangle(halfWidth - 400 + x, CInt(_enrollY + (halfHeight - 200)), 16, modRes), New Rectangle(0, 0, 4, 4), mainBackgroundColor) + SpriteBatch.Draw(_texture, New Rectangle(halfWidth - 400 + x, CInt(_enrollY + (halfHeight - 200)), 16, modRes), New Rectangle(64, 0, 4, 4), mainBackgroundColor) Next End If End Sub diff --git a/2.5DHero/2.5DHero/Screens/Pokemon/SummaryScreen.vb b/2.5DHero/2.5DHero/Screens/Pokemon/SummaryScreen.vb index 2b0179661..d6a896264 100644 --- a/2.5DHero/2.5DHero/Screens/Pokemon/SummaryScreen.vb +++ b/2.5DHero/2.5DHero/Screens/Pokemon/SummaryScreen.vb @@ -166,14 +166,14 @@ For y = 0 To CInt(_enrollY) Step 16 For x = 0 To Core.windowSize.Width - 100 Step 16 - SpriteBatch.Draw(t, New Rectangle(50 + x, y + 97, 16, 16), New Rectangle(0, 0, 4, 4), mainBackgroundColor) + SpriteBatch.Draw(_texture, New Rectangle(50 + x, y + 97, 16, 16), New Rectangle(64, 0, 4, 4), mainBackgroundColor) Next Next Dim modRes As Integer = CInt(_enrollY) Mod 16 If modRes > 0 Then For x = 0 To Core.windowSize.Width - 100 Step 16 - SpriteBatch.Draw(t, New Rectangle(50 + x, CInt(_enrollY + 97), 16, modRes), New Rectangle(0, 0, 4, 4), mainBackgroundColor) + SpriteBatch.Draw(_texture, New Rectangle(50 + x, CInt(_enrollY + 97), 16, modRes), New Rectangle(64, 0, 4, 4), mainBackgroundColor) Next End If diff --git a/2.5DHero/2.5DHeroContent/Content/GUI/Menus/General.png b/2.5DHero/2.5DHeroContent/Content/GUI/Menus/General.png index 98616ec1b4399f3dcba0807ba4aceba9bf1c33ab..5d841c39cc2bec83fea0e56c102e5172b83ab198 100644 GIT binary patch literal 2515 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 O4nP=PgI5{2MEwsqxyywB delta 3048 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