Implement Visible Tag for World Map

"0", "always"
Name is always visible

"1", "temporary"
Name is visible when player is currently on one of the maps

"2", "unlock"
Name is always visible if the player has visited one of the maps before
This commit is contained in:
JappaWakka 2024-02-19 18:09:48 +01:00
parent 1d26954eab
commit f56dba35cc
1 changed files with 83 additions and 15 deletions

View File

@ -2,6 +2,11 @@
Inherits Screen
Public Enum VisibleMode As Integer
Always
Temporary
Unlock
End Enum
Public Const RasterSize As Integer = 32
Public Shared mapOffsetX As Integer = 100
Public Shared mapOffsetY As Integer = 75
@ -148,12 +153,23 @@
If Tags.ContainsKey("playerposition") = True Then
PlayerPositionList = Tags("playerposition").Split(CChar(",")).ToList()
End If
Dim Visible As Integer = VisibleMode.Always
If Tags.ContainsKey("visible") = True Then
Select Case Tags("visible")
Case "0", "always"
Visible = VisibleMode.Always
Case "1", "temporary"
Visible = VisibleMode.Temporary
Case "2", "unlock"
Visible = VisibleMode.Unlock
End Select
End If
If Tags.ContainsKey("flyto") = True Then
Dim FlyTo As New List(Of String)
FlyTo = Tags("flyto").Split(CChar(",")).ToList()
cities.Add(New City(Name, MapFiles, CInt(PositionList(0)), CInt(PositionList(1)), CitySize, FlyTo(0), New Vector3(CSng(FlyTo(1)), CSng(FlyTo(2)), CSng(FlyTo(3))), CInt(PlayerPositionList(0)), CInt(PlayerPositionList(1))))
cities.Add(New City(Name, MapFiles, CInt(PositionList(0)), CInt(PositionList(1)), CitySize, FlyTo(0), New Vector3(CSng(FlyTo(1)), CSng(FlyTo(2)), CSng(FlyTo(3))), CInt(PlayerPositionList(0)), CInt(PlayerPositionList(1)), Visible))
Else
cities.Add(New City(Name, MapFiles, CInt(PositionList(0)), CInt(PositionList(1)), CitySize, "", Nothing, CInt(PlayerPositionList(0)), CInt(PlayerPositionList(1))))
cities.Add(New City(Name, MapFiles, CInt(PositionList(0)), CInt(PositionList(1)), CitySize, "", Nothing, CInt(PlayerPositionList(0)), CInt(PlayerPositionList(1)), Visible))
End If
Case "route"
Dim Name As String = Tags("name")
@ -209,12 +225,23 @@
If Tags.ContainsKey("playerposition") = True Then
PlayerPositionList = Tags("playerposition").Split(CChar(",")).ToList()
End If
Dim Visible As Integer = VisibleMode.Always
If Tags.ContainsKey("visible") = True Then
Select Case Tags("visible")
Case "0", "always"
Visible = VisibleMode.Always
Case "1", "temporary"
Visible = VisibleMode.Temporary
Case "2", "unlock"
Visible = VisibleMode.Unlock
End Select
End If
If Tags.ContainsKey("flyto") = True Then
Dim FlyTo As New List(Of String)
FlyTo = Tags("flyto").Split(CChar(",")).ToList()
routes.Add(New Route(Name, MapFiles, CInt(PositionList(0)), CInt(PositionList(1)), RouteDirection, RouteType, FlyTo(0), New Vector3(CSng(FlyTo(1)), CSng(FlyTo(2)), CSng(FlyTo(3))), CInt(PlayerPositionList(0)), CInt(PlayerPositionList(1))))
routes.Add(New Route(Name, MapFiles, CInt(PositionList(0)), CInt(PositionList(1)), RouteDirection, RouteType, FlyTo(0), New Vector3(CSng(FlyTo(1)), CSng(FlyTo(2)), CSng(FlyTo(3))), CInt(PlayerPositionList(0)), CInt(PlayerPositionList(1)), Visible))
Else
routes.Add(New Route(Name, MapFiles, CInt(PositionList(0)), CInt(PositionList(1)), RouteDirection, RouteType, "", Nothing, CInt(PlayerPositionList(0)), CInt(PlayerPositionList(1))))
routes.Add(New Route(Name, MapFiles, CInt(PositionList(0)), CInt(PositionList(1)), RouteDirection, RouteType, "", Nothing, CInt(PlayerPositionList(0)), CInt(PlayerPositionList(1)), Visible))
End If
Case "place"
Dim Name As String = Tags("name")
@ -242,12 +269,23 @@
If Tags.ContainsKey("playerposition") = True Then
PlayerPositionList = Tags("playerposition").Split(CChar(",")).ToList()
End If
Dim Visible As Integer = VisibleMode.Always
If Tags.ContainsKey("visible") = True Then
Select Case Tags("visible")
Case "0", "always"
Visible = VisibleMode.Always
Case "1", "temporary"
Visible = VisibleMode.Temporary
Case "2", "unlock"
Visible = VisibleMode.Unlock
End Select
End If
If Tags.ContainsKey("flyto") = True Then
Dim FlyTo As New List(Of String)
FlyTo = Tags("flyto").Split(CChar(",")).ToList()
places.Add(New Place(Name, MapFiles, CInt(PositionList(0)), CInt(PositionList(1)), PlaceSize, FlyTo(0), New Vector3(CSng(FlyTo(1)), CSng(FlyTo(2)), CSng(FlyTo(3))), CInt(PlayerPositionList(0)), CInt(PlayerPositionList(1))))
places.Add(New Place(Name, MapFiles, CInt(PositionList(0)), CInt(PositionList(1)), PlaceSize, FlyTo(0), New Vector3(CSng(FlyTo(1)), CSng(FlyTo(2)), CSng(FlyTo(3))), CInt(PlayerPositionList(0)), CInt(PlayerPositionList(1)), Visible))
Else
places.Add(New Place(Name, MapFiles, CInt(PositionList(0)), CInt(PositionList(1)), PlaceSize, "", Nothing, CInt(PlayerPositionList(0)), CInt(PlayerPositionList(1))))
places.Add(New Place(Name, MapFiles, CInt(PositionList(0)), CInt(PositionList(1)), PlaceSize, "", Nothing, CInt(PlayerPositionList(0)), CInt(PlayerPositionList(1)), Visible))
End If
End Select
@ -347,7 +385,15 @@
If Controls.Accept(True, True, True) = True Then
Place.Click(flag)
End If
hoverText = Place.Name
If Place.Visible = VisibleMode.Always OrElse Place.Visible = VisibleMode.Temporary AndAlso Place.ContainFiles.Contains(Level.LevelFile.ToLower()) = True Then
hoverText = Place.Name
ElseIf Place.Visible = VisibleMode.Unlock Then
For Each p As String In Place.ContainFiles
If Core.Player.VisitedMaps.ToLower().Split(CChar(",")).Contains(p.ToLower()) = True Then
hoverText = Place.Name
End If
Next
End If
Exit For
End If
Next
@ -358,7 +404,15 @@
If Controls.Accept(True, True, True) = True Then
City.Click(flag)
End If
hoverText = City.Name
If City.Visible = VisibleMode.Always OrElse City.Visible = VisibleMode.Temporary AndAlso City.ContainFiles.Contains(Level.LevelFile.ToLower()) = True Then
hoverText = City.Name
ElseIf City.Visible = VisibleMode.Unlock Then
For Each c As String In City.ContainFiles
If Core.Player.VisitedMaps.ToLower().Split(CChar(",")).Contains(c.ToLower()) = True Then
hoverText = City.Name
End If
Next
End If
Exit For
End If
Next
@ -369,7 +423,15 @@
If Controls.Accept(True, True, True) = True Then
Route.Click(flag)
End If
hoverText = Route.Name
If Route.Visible = VisibleMode.Always OrElse Route.Visible = VisibleMode.Temporary AndAlso Route.ContainFiles.Contains(Level.LevelFile.ToLower()) = True Then
hoverText = Route.Name
ElseIf Route.Visible = VisibleMode.Unlock Then
For Each r As String In Route.ContainFiles
If Core.Player.VisitedMaps.ToLower().Split(CChar(",")).Contains(r.ToLower()) = True Then
hoverText = Route.Name
End If
Next
End If
End If
Next
End If
@ -739,10 +801,11 @@
Public FlyToFile As String = ""
Public FlyToPosition As Vector3 = New Vector3(0)
Public Size As CitySize = CitySize.Small
Public Visible As Integer = VisibleMode.Always
Dim T As Texture2D = Nothing
Public Sub New(ByVal Name As String, ByVal ContainFiles() As String, ByVal PositionX As Integer, ByVal PositionY As Integer, ByVal Size As CitySize, Optional ByVal FlyToFile As String = "", Optional ByVal FlyToPosition As Vector3 = Nothing, Optional PlayerPositionX As Integer = -1, Optional PlayerPositionY As Integer = -1)
Public Sub New(ByVal Name As String, ByVal ContainFiles() As String, ByVal PositionX As Integer, ByVal PositionY As Integer, ByVal Size As CitySize, Optional ByVal FlyToFile As String = "", Optional ByVal FlyToPosition As Vector3 = Nothing, Optional PlayerPositionX As Integer = -1, Optional PlayerPositionY As Integer = -1, Optional Visible As Integer = VisibleMode.Always)
Me.Name = Name
For Each file As String In ContainFiles
@ -765,6 +828,7 @@
Me.FlyToFile = FlyToFile
Me.FlyToPosition = FlyToPosition
Me.Visible = Visible
End Sub
Public Function getPosition() As Vector2
@ -842,7 +906,7 @@
Public Function CanFlyTo(ByVal flag() As Object) As Boolean
If flag(0).ToString().ToLower() = "fly" Then
If FlyToPosition <> Nothing And FlyToFile <> "" Then
If Core.Player.VisitedMaps.Split(CChar(",")).Contains(FlyToFile) = True Or GameController.IS_DEBUG_ACTIVE = True Or Core.Player.SandBoxMode = True Then
If Core.Player.VisitedMaps.ToLower().Split(CChar(",")).Contains(FlyToFile.ToLower()) = True Or GameController.IS_DEBUG_ACTIVE = True Or Core.Player.SandBoxMode = True Then
Return True
End If
End If
@ -894,10 +958,11 @@
Public RouteDirection As RouteDirections = RouteDirections.Horizontal
Public RouteType As RouteTypes = RouteTypes.Land
Public Visible As Integer = VisibleMode.Always
Dim T As Texture2D = Nothing
Public Sub New(ByVal Name As String, ByVal ContainFiles() As String, ByVal PositionX As Integer, ByVal PositionY As Integer, ByVal RouteDirection As RouteDirections, ByVal RouteType As RouteTypes, Optional ByVal FlyToFile As String = "", Optional ByVal FlyToPosition As Vector3 = Nothing, Optional PlayerPositionX As Integer = -1, Optional PlayerPositionY As Integer = -1)
Public Sub New(ByVal Name As String, ByVal ContainFiles() As String, ByVal PositionX As Integer, ByVal PositionY As Integer, ByVal RouteDirection As RouteDirections, ByVal RouteType As RouteTypes, Optional ByVal FlyToFile As String = "", Optional ByVal FlyToPosition As Vector3 = Nothing, Optional PlayerPositionX As Integer = -1, Optional PlayerPositionY As Integer = -1, Optional Visible As Integer = VisibleMode.Always)
Me.Name = Name
Me.PositionX = PositionX
Me.PositionY = PositionY
@ -919,6 +984,7 @@
End If
Me.FlyToFile = FlyToFile
Me.FlyToPosition = FlyToPosition
Me.Visible = Visible
End Sub
Public Function getPosition() As Vector2
@ -1030,7 +1096,7 @@
Public Function CanFlyTo(ByVal flag() As Object) As Boolean
If flag(0).ToString().ToLower() = "fly" Then
If FlyToPosition <> Nothing And FlyToFile <> "" Then
If Core.Player.VisitedMaps.Split(CChar(",")).Contains(FlyToFile) = True Or GameController.IS_DEBUG_ACTIVE = True Or Core.Player.SandBoxMode = True Then
If Core.Player.VisitedMaps.ToLower().Split(CChar(",")).Contains(FlyToFile.ToLower()) = True Or GameController.IS_DEBUG_ACTIVE = True Or Core.Player.SandBoxMode = True Then
Return True
End If
End If
@ -1058,13 +1124,14 @@
Public PlayerPositionX As Integer = -1
Public PlayerPositionY As Integer = -1
Public PlaceSize As PlaceSizes
Public Visible As Integer = VisibleMode.Always
Public FlyToFile As String = ""
Public FlyToPosition As Vector3 = New Vector3(0)
Dim T As Texture2D = Nothing
Public Sub New(ByVal Name As String, ByVal ContainFiles() As String, ByVal PositionX As Integer, ByVal PositionY As Integer, ByVal PlaceSize As PlaceSizes, Optional ByVal FlyToFile As String = "", Optional ByVal FlyToPosition As Vector3 = Nothing, Optional PlayerPositionX As Integer = -1, Optional PlayerPositionY As Integer = -1)
Public Sub New(ByVal Name As String, ByVal ContainFiles() As String, ByVal PositionX As Integer, ByVal PositionY As Integer, ByVal PlaceSize As PlaceSizes, Optional ByVal FlyToFile As String = "", Optional ByVal FlyToPosition As Vector3 = Nothing, Optional PlayerPositionX As Integer = -1, Optional PlayerPositionY As Integer = -1, Optional Visible As Integer = VisibleMode.Always)
Me.Name = Name
Me.PositionX = PositionX
Me.PositionY = PositionY
@ -1086,6 +1153,7 @@
Me.FlyToFile = FlyToFile
Me.FlyToPosition = FlyToPosition
Me.Visible = Visible
End Sub
Public Function getPosition() As Vector2
@ -1175,7 +1243,7 @@
If FlyToPosition <> Nothing And FlyToFile <> "" Then
Dim flytomap As Boolean = False
For Each map In ContainFiles
If Core.Player.VisitedMaps.Split(CChar(",")).Contains(map) = True Then
If Core.Player.VisitedMaps.ToLower().Split(CChar(",")).Contains(map.ToLower()) = True Then
flytomap = True
Exit For
End If