Mail system progress

Made it possible to attach already written mail to a pokémon
Added a taken item message if the pokémon that the mail gets attached to already has an item
Replaced the MiniFont and InGameFont on the mail screen with MainFont
Working on mouse support
This commit is contained in:
JappaWakka 2023-07-23 20:53:21 +02:00
parent a1b1df55c6
commit 5ed44da99b
8 changed files with 232 additions and 81 deletions

View File

@ -7,10 +7,10 @@ version=2
:if:<register.registered(pokemongot)>=true :if:<register.registered(pokemongot)>=true
@storage.set(int,canind,2) @storage.set(int,canind,2)
@storage.set(str,computer_options,<storage.get(str,billspcname)>,Inbox) @storage.set(str,computer_options,<storage.get(str,billspcname)>,Mailbox)
:else :else
@storage.set(int,canind,1) @storage.set(int,canind,1)
@storage.set(str,computer_options,Inbox) @storage.set(str,computer_options,Mailbox)
:endif :endif
:if:<player.haspokedex>=true :if:<player.haspokedex>=true
@ -43,7 +43,7 @@ version=2
@sound.play(PC\LogOn) @sound.play(PC\LogOn)
@screen.mysteryevent @screen.mysteryevent
@script.start(computer_choose) @script.start(computer_choose)
:when:Inbox :when:Mailbox
@sound.play(PC\LogOn) @sound.play(PC\LogOn)
@screen.mailsystem @screen.mailsystem
@script.start(computer_choose) @script.start(computer_choose)

View File

@ -79,7 +79,7 @@
If op.Item.OriginalName.ToLower().EndsWith(" drive") = True AndAlso op.Number = 649 Then If op.Item.OriginalName.ToLower().EndsWith(" drive") = True AndAlso op.Number = 649 Then
Return Power Return Power
End If End If
If op.Item.OriginalName.ToLower().EndsWith(" mail") = True Then If op.Item.IsMail = True Then
Return Power Return Power
End If End If
@ -113,7 +113,7 @@
If op.Item.OriginalName.ToLower().EndsWith(" drive") = True AndAlso p.Number = 649 Then If op.Item.OriginalName.ToLower().EndsWith(" drive") = True AndAlso p.Number = 649 Then
Exit Sub Exit Sub
End If End If
If op.Item.OriginalName.ToLower().EndsWith(" mail") = True Then If op.Item.IsMail = True Then
Exit Sub Exit Sub
End If End If

View File

@ -93,10 +93,10 @@ Namespace BattleSystem.Moves.Dark
If Not op.Item Is Nothing AndAlso op.Item.OriginalName.ToLower().EndsWith(" memory") = True AndAlso op.Number = 773 Then If Not op.Item Is Nothing AndAlso op.Item.OriginalName.ToLower().EndsWith(" memory") = True AndAlso op.Number = 773 Then
CanSwitchItems = False CanSwitchItems = False
End If End If
If Not p.Item Is Nothing AndAlso p.Item.OriginalName.ToLower().EndsWith(" mail") = True Then If Not p.Item Is Nothing AndAlso p.Item.IsMail = True Then
CanSwitchItems = False CanSwitchItems = False
End If End If
If Not op.Item Is Nothing AndAlso op.Item.OriginalName.ToLower().EndsWith(" mail") = True Then If Not op.Item Is Nothing AndAlso op.Item.IsMail = True Then
CanSwitchItems = False CanSwitchItems = False
End If End If
If (p.Item IsNot Nothing AndAlso p.Item.IsMegaStone) OrElse (op.Item IsNot Nothing AndAlso op.Item.IsMegaStone) Then If (p.Item IsNot Nothing AndAlso p.Item.IsMegaStone) OrElse (op.Item IsNot Nothing AndAlso op.Item.IsMegaStone) Then

View File

@ -79,7 +79,7 @@
If op.Item.OriginalName.ToLower().EndsWith(" drive") = True AndAlso op.Number = 649 Then If op.Item.OriginalName.ToLower().EndsWith(" drive") = True AndAlso op.Number = 649 Then
Exit Sub Exit Sub
End If End If
If op.Item.OriginalName.ToLower().EndsWith(" mail") = True Then If op.Item.IsMail = True Then
Exit Sub Exit Sub
End If End If

View File

@ -86,7 +86,7 @@
If p.Item.OriginalName.ToLower().EndsWith(" drive") = True AndAlso p.Number = 649 Then If p.Item.OriginalName.ToLower().EndsWith(" drive") = True AndAlso p.Number = 649 Then
b = True b = True
End If End If
If p.Item.OriginalName.ToLower().EndsWith(" mail") = True Then If p.Item.IsMail = True Then
b = True b = True
End If End If
Else Else

View File

@ -82,7 +82,7 @@ Namespace BattleSystem.Moves.Normal
If op.Item.OriginalName.ToLower().EndsWith(" drive") = True AndAlso op.Number = 649 Then If op.Item.OriginalName.ToLower().EndsWith(" drive") = True AndAlso op.Number = 649 Then
Exit Sub Exit Sub
End If End If
If op.Item.OriginalName.ToLower().EndsWith(" mail") = True Then If op.Item.IsMail = True Then
Exit Sub Exit Sub
End If End If

View File

@ -93,10 +93,10 @@ Namespace BattleSystem.Moves.Psychic
If Not op.Item Is Nothing AndAlso op.Item.OriginalName.ToLower().EndsWith(" memory") = True AndAlso op.Number = 773 Then If Not op.Item Is Nothing AndAlso op.Item.OriginalName.ToLower().EndsWith(" memory") = True AndAlso op.Number = 773 Then
CanSwitchItems = False CanSwitchItems = False
End If End If
If Not p.Item Is Nothing AndAlso p.Item.OriginalName.ToLower().EndsWith(" mail") = True Then If Not p.Item Is Nothing AndAlso p.Item.IsMail = True Then
CanSwitchItems = False CanSwitchItems = False
End If End If
If Not op.Item Is Nothing AndAlso op.Item.OriginalName.ToLower().EndsWith(" mail") = True Then If Not op.Item Is Nothing AndAlso op.Item.IsMail = True Then
CanSwitchItems = False CanSwitchItems = False
End If End If
If (p.Item IsNot Nothing AndAlso p.Item.IsMegaStone) OrElse (op.Item IsNot Nothing AndAlso op.Item.IsMegaStone) Then If (p.Item IsNot Nothing AndAlso p.Item.IsMegaStone) OrElse (op.Item IsNot Nothing AndAlso op.Item.IsMegaStone) Then

View File

@ -12,7 +12,7 @@
Me.PreScreen = currentScreen Me.PreScreen = currentScreen
Me.Identification = Identifications.MailSystemScreen Me.Identification = Identifications.MailSystemScreen
Me.MouseVisible = False Me.MouseVisible = True
Me.CanBePaused = True Me.CanBePaused = True
Me.CanMuteAudio = False Me.CanMuteAudio = False
Me.CanChat = False Me.CanChat = False
@ -21,7 +21,7 @@
Public Overrides Sub Draw() Public Overrides Sub Draw()
Canvas.DrawRectangle(Core.windowSize, Color.White) Canvas.DrawRectangle(Core.windowSize, Color.White)
Core.SpriteBatch.DrawString(FontManager.InGameFont, "Inbox", New Vector2(42, 28), Color.Black) Core.SpriteBatch.DrawString(FontManager.MainFont, "Mailbox", New Vector2(42, 28), Color.Black)
Canvas.DrawImageBorder(TextureManager.GetTexture("GUI\Menus\Menu", New Rectangle(0, 0, 48, 48), ""), 2, New Rectangle(32, 64, 320, 576)) Canvas.DrawImageBorder(TextureManager.GetTexture("GUI\Menus\Menu", New Rectangle(0, 0, 48, 48), ""), 2, New Rectangle(32, 64, 320, 576))
Canvas.DrawImageBorder(TextureManager.GetTexture("GUI\Menus\Menu", New Rectangle(0, 0, 48, 48), ""), 2, New Rectangle(400, 64, 672, 576)) Canvas.DrawImageBorder(TextureManager.GetTexture("GUI\Menus\Menu", New Rectangle(0, 0, 48, 48), ""), 2, New Rectangle(400, 64, 672, 576))
@ -44,9 +44,9 @@
If message <> "" Then If message <> "" Then
Canvas.DrawRectangle(Core.windowSize, New Color(0, 0, 0, 150)) Canvas.DrawRectangle(Core.windowSize, New Color(0, 0, 0, 150))
Dim t As String = message.CropStringToWidth(FontManager.InGameFont, 800) Dim t As String = message.CropStringToWidth(FontManager.MainFont, 800)
Core.SpriteBatch.DrawString(FontManager.InGameFont, t, New Vector2(CSng(Core.windowSize.Width / 2 - FontManager.InGameFont.MeasureString(t).X / 2), 340), Color.White) Core.SpriteBatch.DrawString(FontManager.MainFont, t, New Vector2(CSng(Core.windowSize.Width / 2 - FontManager.MainFont.MeasureString(t).X / 2), 340), Color.White)
End If End If
End Sub End Sub
@ -64,7 +64,7 @@
End If End If
Canvas.DrawImageBorder(TextureManager.GetTexture("GUI\Menus\Menu", New Rectangle(x, y, 48, 48), ""), 1, New Rectangle(CInt(P.X), CInt(P.Y), 288, 32)) Canvas.DrawImageBorder(TextureManager.GetTexture("GUI\Menus\Menu", New Rectangle(x, y, 48, 48), ""), 1, New Rectangle(CInt(P.X), CInt(P.Y), 288, 32))
Core.SpriteBatch.DrawString(FontManager.MiniFont, "Write new mail.", New Vector2(CInt(P.X) + 13, CInt(P.Y) + 14), Color.Black) Core.SpriteBatch.DrawString(FontManager.MainFont, "Write new mail.", New Vector2(CInt(P.X) + 13, CInt(P.Y) + 14), Color.Black)
Else Else
Dim item As Item = Item.GetItemByID(mail.MailID.ToString) Dim item As Item = Item.GetItemByID(mail.MailID.ToString)
@ -82,7 +82,7 @@
Canvas.DrawImageBorder(TextureManager.GetTexture("GUI\Menus\Menu", New Rectangle(x, y, 48, 48), ""), 1, New Rectangle(CInt(P.X), CInt(P.Y), 288, 32)) Canvas.DrawImageBorder(TextureManager.GetTexture("GUI\Menus\Menu", New Rectangle(x, y, 48, 48), ""), 1, New Rectangle(CInt(P.X), CInt(P.Y), 288, 32))
Core.SpriteBatch.Draw(item.Texture, New Rectangle(CInt(P.X), CInt(P.Y), 48, 48), Color.White) Core.SpriteBatch.Draw(item.Texture, New Rectangle(CInt(P.X), CInt(P.Y), 48, 48), Color.White)
Core.SpriteBatch.DrawString(FontManager.MiniFont, mail.MailHeader, New Vector2(CInt(P.X) + 52, CInt(P.Y) + 14), Color.Black) Core.SpriteBatch.DrawString(FontManager.MainFont, mail.MailHeader, New Vector2(CInt(P.X) + 52, CInt(P.Y) + 14), Color.Black)
If mail.MailAttachment > -1 Then If mail.MailAttachment > -1 Then
Dim t As TrophyInformation = GetTrophyInformation(mail.MailAttachment) Dim t As TrophyInformation = GetTrophyInformation(mail.MailAttachment)
@ -113,74 +113,88 @@
c = Color.Gray c = Color.Gray
End If End If
Core.SpriteBatch.DrawString(FontManager.InGameFont, "Header: " & mail.MailHeader, New Vector2(480, 92), c) Core.SpriteBatch.DrawString(FontManager.MainFont, "Header: " & mail.MailHeader, New Vector2(480, 92), c)
Canvas.DrawRectangle(New Rectangle(420, 140, 660, 2), Color.DarkGray) Canvas.DrawRectangle(New Rectangle(420, 140, 660, 2), Color.DarkGray)
Dim text As String = ("Text: (" & mail.MailText.Length & "/" & 200 & ")" & Environment.NewLine & Environment.NewLine & mail.MailText.Replace("<br>", Environment.NewLine)).CropStringToWidth(FontManager.MiniFont, 600) Dim text As String = ("Text: (" & mail.MailText.Length & "/" & 200 & ")" & Environment.NewLine & Environment.NewLine & mail.MailText.Replace("<br>", Environment.NewLine)).CropStringToWidth(FontManager.MainFont, 600)
If EditMailIndex = 1 Then If EditMailIndex = 1 Then
c = Color.Blue c = Color.Blue
text &= "_" text &= "_"
Else Else
c = Color.Gray c = Color.Gray
End If End If
Core.SpriteBatch.DrawString(FontManager.MiniFont, text, New Vector2(430, 160), c) Core.SpriteBatch.DrawString(FontManager.MainFont, text, New Vector2(430, 160), c)
Dim yPlus As Integer = CInt(FontManager.MiniFont.MeasureString(text).Y) Dim yPlus As Integer = CInt(FontManager.MainFont.MeasureString(text).Y)
If EditMailIndex = 2 Then If EditMailIndex = 2 Then
c = Color.Blue c = Color.Blue
Else Else
c = Color.Gray c = Color.Gray
End If End If
Core.SpriteBatch.DrawString(FontManager.MiniFont, "Signature: " & mail.MailSignature, New Vector2(430, yPlus + 200), c) Core.SpriteBatch.DrawString(FontManager.MainFont, "Signature: " & mail.MailSignature, New Vector2(430, yPlus + 200), c)
Canvas.DrawRectangle(New Rectangle(420, yPlus + 240, 660, 2), Color.DarkGray) Canvas.DrawRectangle(New Rectangle(420, yPlus + 240, 660, 2), Color.DarkGray)
Core.SpriteBatch.DrawString(FontManager.MiniFont, "Mail OT: " & mail.MailSender & " (" & mail.MailOriginalTrainerOT & ")", New Vector2(430, yPlus + 260), Color.Black) Core.SpriteBatch.DrawString(FontManager.MainFont, "Mail OT: " & mail.MailSender & " (" & mail.MailOriginalTrainerOT & ")", New Vector2(430, yPlus + 260), Color.Black)
If EditMailIndex = 3 Then If EditMailIndex = 3 Then
Canvas.DrawImageBorder(TextureManager.GetTexture("GUI\Menus\Menu", New Rectangle(0, 48, 48, 48), ""), 1, New Rectangle(440, yPlus + 320, 160, 32)) Canvas.DrawImageBorder(TextureManager.GetTexture("GUI\Menus\Menu", New Rectangle(0, 48, 48, 48), ""), 1, New Rectangle(440, yPlus + 320, 160, 32))
Else Else
Canvas.DrawImageBorder(TextureManager.GetTexture("GUI\Menus\Menu", New Rectangle(0, 0, 48, 48), ""), 1, New Rectangle(440, yPlus + 320, 160, 32)) Canvas.DrawImageBorder(TextureManager.GetTexture("GUI\Menus\Menu", New Rectangle(0, 0, 48, 48), ""), 1, New Rectangle(440, yPlus + 320, 160, 32))
End If End If
Core.SpriteBatch.DrawString(FontManager.MiniFont, "Attach", New Vector2(496, yPlus + 334), Color.Black) Core.SpriteBatch.DrawString(FontManager.MainFont, "Attach", New Vector2(CInt(524 - FontManager.MainFont.MeasureString("Attach").X / 2), yPlus + CInt(344 - FontManager.MainFont.MeasureString("Attach").Y / 2)), Color.Black)
If EditMailIndex = 4 Then If EditMailIndex = 4 Then
Canvas.DrawImageBorder(TextureManager.GetTexture("GUI\Menus\Menu", New Rectangle(0, 48, 48, 48), ""), 1, New Rectangle(640, yPlus + 320, 160, 32)) Canvas.DrawImageBorder(TextureManager.GetTexture("GUI\Menus\Menu", New Rectangle(0, 48, 48, 48), ""), 1, New Rectangle(640, yPlus + 320, 160, 32))
Else Else
Canvas.DrawImageBorder(TextureManager.GetTexture("GUI\Menus\Menu", New Rectangle(0, 0, 48, 48), ""), 1, New Rectangle(640, yPlus + 320, 160, 32)) Canvas.DrawImageBorder(TextureManager.GetTexture("GUI\Menus\Menu", New Rectangle(0, 0, 48, 48), ""), 1, New Rectangle(640, yPlus + 320, 160, 32))
End If End If
Core.SpriteBatch.DrawString(FontManager.MiniFont, "Cancel", New Vector2(696, yPlus + 334), Color.Black) Core.SpriteBatch.DrawString(FontManager.MainFont, "Cancel", New Vector2(CInt(724 - FontManager.MainFont.MeasureString("Cancel").X / 2), yPlus + CInt(344 - FontManager.MainFont.MeasureString("Cancel").Y / 2)), Color.Black)
Else Else
Dim mail As Items.MailItem.MailData = Core.Player.Mails(index - 1) Dim mail As Items.MailItem.MailData = Core.Player.Mails(index - 1)
Dim item As Item = Item.GetItemByID(mail.MailID.ToString) Dim item As Item = Item.GetItemByID(mail.MailID.ToString)
Core.SpriteBatch.Draw(item.Texture, New Rectangle(420, 84, 48, 48), Color.White) Core.SpriteBatch.Draw(item.Texture, New Rectangle(420, 84, 48, 48), Color.White)
Core.SpriteBatch.DrawString(FontManager.InGameFont, mail.MailHeader, New Vector2(480, 92), Color.Black) Core.SpriteBatch.DrawString(FontManager.MainFont, mail.MailHeader, New Vector2(480, 92), Color.Black)
Canvas.DrawRectangle(New Rectangle(420, 140, 660, 2), Color.DarkGray) Canvas.DrawRectangle(New Rectangle(420, 140, 660, 2), Color.DarkGray)
Dim text As String = ("Text: " & Environment.NewLine & Environment.NewLine & mail.MailText).CropStringToWidth(FontManager.MiniFont, 600) Dim text As String = ("Text: " & Environment.NewLine & Environment.NewLine & mail.MailText).CropStringToWidth(FontManager.MainFont, 600)
Core.SpriteBatch.DrawString(FontManager.MiniFont, text, New Vector2(430, 160), Color.Black) Core.SpriteBatch.DrawString(FontManager.MainFont, text, New Vector2(430, 160), Color.Black)
Dim yPlus As Integer = CInt(FontManager.MiniFont.MeasureString(text).Y) Dim yPlus As Integer = CInt(FontManager.MainFont.MeasureString(text).Y)
Core.SpriteBatch.DrawString(FontManager.MiniFont, mail.MailSignature, New Vector2(430, yPlus + 200), Color.Black) Core.SpriteBatch.DrawString(FontManager.MainFont, mail.MailSignature, New Vector2(430, yPlus + 200), Color.Black)
Canvas.DrawRectangle(New Rectangle(420, yPlus + 240, 660, 2), Color.DarkGray) Canvas.DrawRectangle(New Rectangle(420, yPlus + 240, 660, 2), Color.DarkGray)
Core.SpriteBatch.DrawString(FontManager.MiniFont, "Mail OT: " & mail.MailSender & " (" & mail.MailOriginalTrainerOT & ")", New Vector2(430, yPlus + 260), Color.Black) Core.SpriteBatch.DrawString(FontManager.MainFont, "Mail OT: " & mail.MailSender & " (" & mail.MailOriginalTrainerOT & ")", New Vector2(430, yPlus + 260), Color.Black)
If mail.MailAttachment > -1 Then If mail.MailAttachment > -1 Then
Canvas.DrawRectangle(New Rectangle(420, yPlus + 300, 660, 2), Color.DarkGray) Canvas.DrawRectangle(New Rectangle(420, yPlus + 300, 660, 2), Color.DarkGray)
Dim t As TrophyInformation = GetTrophyInformation(mail.MailAttachment) Dim t As TrophyInformation = GetTrophyInformation(mail.MailAttachment)
Core.SpriteBatch.DrawString(FontManager.MiniFont, "Trophy:", New Vector2(430, yPlus + 320), Color.Black) Core.SpriteBatch.DrawString(FontManager.MainFont, "Trophy:", New Vector2(430, yPlus + 320), Color.Black)
Core.SpriteBatch.Draw(t.Texture, New Rectangle(430, yPlus + 340, 64, 64), Color.White) Core.SpriteBatch.Draw(t.Texture, New Rectangle(430, yPlus + 340, 64, 64), Color.White)
Core.SpriteBatch.DrawString(FontManager.MiniFont, (t.Name & Environment.NewLine & Environment.NewLine & t.Description).CropStringToWidth(FontManager.MiniFont, 500), New Vector2(510, yPlus + 340), Color.Black) Core.SpriteBatch.DrawString(FontManager.MainFont, (t.Name & Environment.NewLine & Environment.NewLine & t.Description).CropStringToWidth(FontManager.MainFont, 500), New Vector2(510, yPlus + 340), Color.Black)
End If End If
If EditMailIndex = 0 Then
Canvas.DrawImageBorder(TextureManager.GetTexture("GUI\Menus\Menu", New Rectangle(0, 48, 48, 48), ""), 1, New Rectangle(440, yPlus + 320, 160, 32))
Else
Canvas.DrawImageBorder(TextureManager.GetTexture("GUI\Menus\Menu", New Rectangle(0, 0, 48, 48), ""), 1, New Rectangle(440, yPlus + 320, 160, 32))
End If
Core.SpriteBatch.DrawString(FontManager.MainFont, "Attach", New Vector2(CInt(524 - FontManager.MainFont.MeasureString("Attach").X / 2), yPlus + CInt(344 - FontManager.MainFont.MeasureString("Attach").Y / 2)), Color.Black)
If EditMailIndex = 1 Then
Canvas.DrawImageBorder(TextureManager.GetTexture("GUI\Menus\Menu", New Rectangle(0, 48, 48, 48), ""), 1, New Rectangle(640, yPlus + 320, 160, 32))
Else
Canvas.DrawImageBorder(TextureManager.GetTexture("GUI\Menus\Menu", New Rectangle(0, 0, 48, 48), ""), 1, New Rectangle(640, yPlus + 320, 160, 32))
End If
Core.SpriteBatch.DrawString(FontManager.MainFont, "Cancel", New Vector2(CInt(724 - FontManager.MainFont.MeasureString("Cancel").X / 2), yPlus + CInt(344 - FontManager.MainFont.MeasureString("Cancel").Y / 2)), Color.Black)
End If End If
End Sub End Sub
@ -194,54 +208,123 @@
End If End If
If index <> 0 Then If index <> 0 Then
If Controls.Down(True, True, True, True, True) = True Then If index > -1 Then
Me.selectIndex += 1
If Me.selectIndex = Me.index And Me.selectIndex < Core.Player.Mails.Count Then Dim pressedSystemKey As Boolean = False
Me.selectIndex += 1 If Controls.Down(True, True, True, False, True) = True Or KeyBoardHandler.KeyPressed(Keys.Tab) = True And Controls.ShiftDown() = False Then
EditMailIndex += 1
End If End If
End If If Controls.Up(True, True, True, False, True) = True Or KeyBoardHandler.KeyPressed(Keys.Tab) = True And Controls.ShiftDown() = True Then
If Controls.Up(True, True, True, True, True) = True Then EditMailIndex -= 1
Me.selectIndex -= 1
If Me.selectIndex = Me.index And Me.selectIndex > 0 Then
Me.selectIndex -= 1
End If End If
End If If Controls.Left(True, True, False, False, False) = True Then
If EditMailIndex = 1 Then
selectIndex = selectIndex.Clamp(0, Core.Player.Mails.Count) EditMailIndex -= 1
End If
While selectIndex - scrollIndex > 8 End If
scrollIndex += 1 If Controls.Right(True, True, False, False, False) = True Then
End While If EditMailIndex = 0 Then
EditMailIndex += 1
While selectIndex - scrollIndex < 0
scrollIndex -= 1
End While
If Controls.Accept(True, True, True) = True Then
If Me.selectIndex = 0 Then
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
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
End If
If Controls.Dismiss(True, True, True) = True Then EditMailIndex = EditMailIndex.Clamp(0, 1)
SoundManager.PlaySound("select")
If Me.index <> -1 Then If Controls.Accept(False, True, True) = True Then
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
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 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
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
If Controls.Dismiss(True, True, True) = True Then
SoundManager.PlaySound("select")
Me.index = -1 Me.index = -1
Else
End If
Else
If Controls.Down(True, True, True, True, True) = True Then
Me.selectIndex += 1
If Me.selectIndex = Me.index And Me.selectIndex < Core.Player.Mails.Count Then
Me.selectIndex += 1
End If
End If
If Controls.Up(True, True, True, True, True) = True Then
Me.selectIndex -= 1
If Me.selectIndex = Me.index And Me.selectIndex > 0 Then
Me.selectIndex -= 1
End If
End If
selectIndex = selectIndex.Clamp(0, Core.Player.Mails.Count)
While selectIndex - scrollIndex > 8
scrollIndex += 1
End While
While selectIndex - scrollIndex < 0
scrollIndex -= 1
End While
If Controls.Accept(True, True, True) = True Then
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
If Controls.Dismiss(True, True, True) = True Then
SoundManager.PlaySound("select")
Core.SetScreen(New TransitionScreen(Me, Me.PreScreen, Color.White, False)) Core.SetScreen(New TransitionScreen(Me, Me.PreScreen, Color.White, False))
End If End If
End If End If
@ -255,8 +338,27 @@
EditMailIndex -= 1 EditMailIndex -= 1
pressedSystemKey = True pressedSystemKey = True
End If End If
If Controls.Left(True, True, False, False, False) = True Or Controls.Right(True, True, False, False, False) = True Then If Controls.Left(True, True, False, False, False) = True Then
pressedSystemKey = True pressedSystemKey = True
If EditMailIndex = 4 Then
EditMailIndex -= 1
End If
End If
If Controls.Right(True, True, False, False, False) = True Then
pressedSystemKey = True
If EditMailIndex = 3 Then
EditMailIndex += 1
End If
End If
If Controls.Left(False, False, True, True, True) = True Then
If EditMailIndex = 1 Then
EditMailIndex -= 1
End If
End If
If Controls.Right(False, False, True, True, True) = True Then
If EditMailIndex = 0 Then
EditMailIndex += 1
End If
End If End If
EditMailIndex = EditMailIndex.Clamp(0, 4) EditMailIndex = EditMailIndex.Clamp(0, 4)
@ -275,9 +377,10 @@
End Select End Select
End If End If
If Controls.Accept(True, True, True) = True Then If Controls.Accept(False, True, True) = True Then
Select Case EditMailIndex Select Case EditMailIndex
Case 3 Case 3
SoundManager.PlaySound("select")
If TempNewMail.MailHeader = "" Or TempNewMail.MailText = "" Or TempNewMail.MailSignature = "" Then If TempNewMail.MailHeader = "" Or TempNewMail.MailText = "" Or TempNewMail.MailSignature = "" Then
message = "Please fill in the Header, the Message and the Signature." message = "Please fill in the Header, the Message and the Signature."
Else Else
@ -287,7 +390,48 @@
Core.SetScreen(selScreen) Core.SetScreen(selScreen)
End If End If
Case 4 Case 4
SoundManager.PlaySound("select")
Me.index = -1 Me.index = -1
EditMailIndex = 0
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
If New Rectangle(420, 92, 660, 40).Contains(MouseHandler.MousePosition) Then
EditMailIndex = 0
End If
If New Rectangle(420, 140, 660, yPlus + 20).Contains(MouseHandler.MousePosition) Then
EditMailIndex = 1
End If
If New Rectangle(420, yPlus + 200, 660, 40).Contains(MouseHandler.MousePosition) Then
EditMailIndex = 2
End If
If New Rectangle(440, yPlus + 320, 160, 32).Contains(MouseHandler.MousePosition) Then
EditMailIndex = 3
End If
If New Rectangle(640, yPlus + 320, 160, 32).Contains(MouseHandler.MousePosition) Then
EditMailIndex = 4
End If
Select Case EditMailIndex
Case 3
SoundManager.PlaySound("select")
If TempNewMail.MailHeader = "" Or TempNewMail.MailText = "" Or TempNewMail.MailSignature = "" Then
message = "Please fill in the Header, the Message and the Signature."
Else
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)
End If
Case 4
SoundManager.PlaySound("select")
Me.index = -1
EditMailIndex = 0
End Select End Select
End If End If
@ -321,22 +465,29 @@
End Sub End Sub
Private Sub ChosenPokemon(ByVal PokeIndex As Integer) Private Sub ChosenPokemon(ByVal PokeIndex As Integer)
Dim text As String = "Attached the Mail to " & Core.Player.Pokemons(PokeIndex).GetDisplayName() & "."
If Not Core.Player.Pokemons(PokeIndex).Item Is Nothing Then If Not Core.Player.Pokemons(PokeIndex).Item Is Nothing Then
If Core.Player.Pokemons(PokeIndex).Item.IsGameModeItem Then If Core.Player.Pokemons(PokeIndex).Item.IsGameModeItem Then
Core.Player.Inventory.AddItem(Core.Player.Pokemons(PokeIndex).Item.gmID, 1) Core.Player.Inventory.AddItem(Core.Player.Pokemons(PokeIndex).Item.gmID, 1)
Else Else
Core.Player.Inventory.AddItem(Core.Player.Pokemons(PokeIndex).Item.ID.ToString, 1) Core.Player.Inventory.AddItem(Core.Player.Pokemons(PokeIndex).Item.ID.ToString, 1)
End If End If
text = "Taken " & Core.Player.Pokemons(PokeIndex).Item.Name & " from " & Core.Player.Pokemons(PokeIndex).GetDisplayName() & ", and attached the Mail to " & Core.Player.Pokemons(PokeIndex).GetDisplayName() & "."
End If End If
Core.Player.Pokemons(PokeIndex).Item = Item.GetItemByID(TempNewMail.MailID.ToString) Core.Player.Pokemons(PokeIndex).Item = Item.GetItemByID(TempNewMail.MailID.ToString)
Core.Player.Pokemons(PokeIndex).Item.AdditionalData = Items.MailItem.GetStringFromMail(TempNewMail) Core.Player.Pokemons(PokeIndex).Item.AdditionalData = Items.MailItem.GetStringFromMail(TempNewMail)
Core.Player.Inventory.RemoveItem(TempNewMail.MailID.ToString, 1) If index = 0 Then
Core.Player.Inventory.RemoveItem(TempNewMail.MailID.ToString, 1)
Else
Core.Player.Mails.RemoveAt(Me.index - 1)
selectIndex -= 1
selectIndex = selectIndex.Clamp(0, Core.Player.Mails.Count)
End If
Me.index = -1 Me.index = -1
Me.message = "Attached the Mail to " & Core.Player.Pokemons(PokeIndex).GetDisplayName() & "." Me.message = text
End Sub End Sub
#Region "Trophies" #Region "Trophies"