diff --git a/P3D/Screens/PC/MailSystemScreen.vb b/P3D/Screens/PC/MailSystemScreen.vb index ce797bbc5..36bbc6585 100644 --- a/P3D/Screens/PC/MailSystemScreen.vb +++ b/P3D/Screens/PC/MailSystemScreen.vb @@ -162,7 +162,7 @@ Canvas.DrawRectangle(New Rectangle(420, 140, 660, 2), Color.DarkGray) - Dim text As String = ("Text: " & Environment.NewLine & Environment.NewLine & mail.MailText).CropStringToWidth(FontManager.MainFont, 600) + Dim text As String = mail.MailText.CropStringToWidth(FontManager.MainFont, 600) Core.SpriteBatch.DrawString(FontManager.MainFont, text, New Vector2(430, 160), Color.Black) Dim yPlus As Integer = CInt(FontManager.MainFont.MeasureString(text).Y) @@ -246,28 +246,67 @@ End If End If - Dim text As String = ("Text: (" & Core.Player.Mails(Me.index - 1).MailText.Length & "/" & 200 & ")" & Environment.NewLine & Environment.NewLine & Core.Player.Mails(Me.index - 1).MailText.Replace("<br>", Environment.NewLine)).CropStringToWidth(FontManager.MainFont, 600) + Dim text As String = Core.Player.Mails(index - 1).MailText.CropStringToWidth(FontManager.MainFont, 600) Dim yPlus As Integer = CInt(FontManager.MainFont.MeasureString(text).Y) If Controls.Accept(True, False, False) = True Then - If New Rectangle(440, yPlus + 320, 160, 32).Contains(MouseHandler.MousePosition) Then - EditMailIndex = 0 - End If - If New Rectangle(640, yPlus + 320, 160, 32).Contains(MouseHandler.MousePosition) Then - EditMailIndex = 1 - End If + Dim MailIndex As Integer = -1 + For i = 0 To 8 + If i < Core.Player.Mails.Count + 1 Then + If New Rectangle(46, 82 + 64 * i, 288, 64).Contains(MouseHandler.MousePosition) Then + MailIndex = scrollIndex + i + Exit For + End If + Else + If New Rectangle(46, 82 + 64 * i, 288, 64).Contains(MouseHandler.MousePosition) Then + EditMailIndex = 1 + Exit For + End If + End If + Next + If MailIndex <> -1 Then + selectIndex = MailIndex + If Me.selectIndex = 0 Then + Me.index = -1 + SoundManager.PlaySound("select") + Dim selScreen As New NewInventoryScreen(Core.CurrentScreen, {5}, 5, Nothing) + selScreen.Mode = Screens.UI.ISelectionScreen.ScreenMode.Selection + selScreen.CanExit = True - If EditMailIndex = 0 Then - Me.TempNewMail = Core.Player.Mails(Me.index - 1) - SoundManager.PlaySound("select") - Dim selScreen = New PartyScreen(Me, Item.GetItemByID(TempNewMail.MailID.ToString), AddressOf Me.ChosenPokemon, "Give mail to:", True) With {.Mode = Screens.UI.ISelectionScreen.ScreenMode.Selection, .CanExit = True} - AddHandler selScreen.SelectedObject, AddressOf ChosenPokemonHandler + AddHandler selScreen.SelectedObject, AddressOf ChosenMailHandler + Core.SetScreen(selScreen) + Else + SoundManager.PlaySound("select") + If Me.index = Me.selectIndex Then + Me.index = -1 + Else + Me.index = Me.selectIndex - Core.SetScreen(selScreen) + Dim m As Items.MailItem.MailData = Core.Player.Mails(Me.index - 1) + Core.Player.Mails(Me.index - 1) = New Items.MailItem.MailData With {.MailHeader = m.MailHeader, .MailID = m.MailID, .MailOriginalTrainerOT = m.MailOriginalTrainerOT, .MailAttachment = m.MailAttachment, .MailRead = True, .MailSender = m.MailSender, .MailSignature = m.MailSignature, .MailText = m.MailText} + End If + End If Else - Me.index = -1 - EditMailIndex = 0 + If New Rectangle(440, yPlus + 320, 160, 32).Contains(MouseHandler.MousePosition) Then + EditMailIndex = 0 + End If + If New Rectangle(640, yPlus + 320, 160, 32).Contains(MouseHandler.MousePosition) Then + EditMailIndex = 1 + End If + + If EditMailIndex = 0 Then + Me.TempNewMail = Core.Player.Mails(Me.index - 1) + SoundManager.PlaySound("select") + Dim selScreen = New PartyScreen(Me, Item.GetItemByID(TempNewMail.MailID.ToString), AddressOf Me.ChosenPokemon, "Give mail to:", True) With {.Mode = Screens.UI.ISelectionScreen.ScreenMode.Selection, .CanExit = True} + AddHandler selScreen.SelectedObject, AddressOf ChosenPokemonHandler + + Core.SetScreen(selScreen) + Else + Me.index = -1 + EditMailIndex = 0 + + End If End If End If @@ -301,7 +340,7 @@ scrollIndex -= 1 End While - If Controls.Accept(True, True, True) = True Then + If Controls.Accept(False, True, True) = True Then If Me.selectIndex = 0 Then SoundManager.PlaySound("select") Dim selScreen As New NewInventoryScreen(Core.CurrentScreen, {5}, 5, Nothing) @@ -322,6 +361,40 @@ End If End If End If + If Controls.Accept(True, False, False) Then + Dim MailIndex As Integer = -1 + For i = 0 To 8 + If i < Core.Player.Mails.Count + 1 Then + If New Rectangle(46, 82 + 64 * i, 288, 64).Contains(MouseHandler.MousePosition) Then + MailIndex = scrollIndex + i + Exit For + End If + End If + Next + If MailIndex <> -1 Then + selectIndex = MailIndex + If Me.selectIndex = 0 Then + SoundManager.PlaySound("select") + 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) + Else + SoundManager.PlaySound("select") + If Me.index = Me.selectIndex Then + Me.index = -1 + Else + Me.index = Me.selectIndex + + Dim m As Items.MailItem.MailData = Core.Player.Mails(Me.index - 1) + Core.Player.Mails(Me.index - 1) = New Items.MailItem.MailData With {.MailHeader = m.MailHeader, .MailID = m.MailID, .MailOriginalTrainerOT = m.MailOriginalTrainerOT, .MailAttachment = m.MailAttachment, .MailRead = True, .MailSender = m.MailSender, .MailSignature = m.MailSignature, .MailText = m.MailText} + End If + End If + End If + + End If If Controls.Dismiss(True, True, True) = True Then SoundManager.PlaySound("select") @@ -396,11 +469,36 @@ End Select End If - Dim rect As Rectangle = New Rectangle(400, 64, 672, 576) Dim text As String = ("Text: (" & TempNewMail.MailText.Length & "/" & 200 & ")" & Environment.NewLine & Environment.NewLine & TempNewMail.MailText.Replace("<br>", Environment.NewLine)).CropStringToWidth(FontManager.MainFont, 600) Dim yPlus As Integer = CInt(FontManager.MainFont.MeasureString(text).Y) If Controls.Accept(True, False, False) = True Then + Dim MailIndex As Integer = -1 + For i = 0 To 8 + If i < Core.Player.Mails.Count + 1 Then + If New Rectangle(46, 82 + 64 * i, 288, 64).Contains(MouseHandler.MousePosition) Then + MailIndex = scrollIndex + i + Exit For + End If + Else + If New Rectangle(46, 82 + 64 * i, 288, 64).Contains(MouseHandler.MousePosition) Then + EditMailIndex = 4 + Exit For + End If + End If + Next + If MailIndex <> -1 Then + selectIndex = MailIndex + SoundManager.PlaySound("select") + If Me.selectIndex = 0 Then + Me.index = -1 + Else + Me.index = Me.selectIndex + + Dim m As Items.MailItem.MailData = Core.Player.Mails(Me.index - 1) + Core.Player.Mails(Me.index - 1) = New Items.MailItem.MailData With {.MailHeader = m.MailHeader, .MailID = m.MailID, .MailOriginalTrainerOT = m.MailOriginalTrainerOT, .MailAttachment = m.MailAttachment, .MailRead = True, .MailSender = m.MailSender, .MailSignature = m.MailSignature, .MailText = m.MailText} + End If + End If If New Rectangle(420, 92, 660, 40).Contains(MouseHandler.MousePosition) Then EditMailIndex = 0 End If