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

View File

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