128 lines
3.9 KiB
VB.net
128 lines
3.9 KiB
VB.net
Public Class ScriptBlock
|
|
|
|
Inherits Entity
|
|
|
|
Public Shared TriggeredScriptBlock As Boolean = False
|
|
|
|
Dim TriggerID As Integer = 0
|
|
Dim _scriptID As String = "0"
|
|
Dim AcceptedRotations As New List(Of Integer)
|
|
|
|
Dim ActivateScript As Boolean = False
|
|
Dim clickedToActivate As Boolean = False
|
|
|
|
Public Overrides Sub Initialize()
|
|
MyBase.Initialize()
|
|
|
|
Me.TriggerID = Me.ActionValue
|
|
If Me.AdditionalValue.Contains(",") Then
|
|
Dim Data() As String = Me.AdditionalValue.Split(CChar(","))
|
|
For i = 0 To Data.Count - 2
|
|
AcceptedRotations.Add(CInt(Data(i)))
|
|
Next
|
|
Me._scriptID = Data(Data.Count - 1)
|
|
Else
|
|
Me._scriptID = Me.AdditionalValue
|
|
End If
|
|
|
|
Me.NeedsUpdate = True
|
|
|
|
If Me.TriggerID = 0 Then
|
|
Me.Visible = False
|
|
End If
|
|
End Sub
|
|
|
|
Public Overrides Function WalkIntoFunction() As Boolean
|
|
If Me.TriggerID = 0 Or Me.TriggerID = 4 Then
|
|
ActivateScript = True
|
|
TriggeredScriptBlock = True
|
|
If ActionScript.TempInputDirection = -1 Then
|
|
ActionScript.TempInputDirection = Screen.Camera.GetPlayerFacingDirection()
|
|
End If
|
|
|
|
If Screen.Camera.Name = "Overworld" Then
|
|
If CType(Screen.Camera, OverworldCamera).FreeCameraMode = False Then
|
|
CType(Screen.Camera, OverworldCamera).YawLocked = True
|
|
End If
|
|
End If
|
|
|
|
Screen.Level.WalkedSteps = 0
|
|
Screen.Level.PokemonEncounterData.EncounteredPokemon = False
|
|
End If
|
|
|
|
Return False
|
|
End Function
|
|
|
|
Public Overrides Sub ClickFunction()
|
|
If Me.TriggerID = 1 Then
|
|
ActionScript.TempInputDirection = -1
|
|
Me.clickedToActivate = True
|
|
TriggerScript(False)
|
|
End If
|
|
End Sub
|
|
|
|
Public Overrides Sub Update()
|
|
If Me.ActivateScript = True And Screen.Camera.Position.X = Me.Position.X And Screen.Camera.Position.Z = Me.Position.Z And CInt(Screen.Camera.Position.Y) = CInt(Me.Position.Y) Then
|
|
Screen.Camera.StopMovement()
|
|
ActivateScript = False
|
|
TriggerScript(False)
|
|
End If
|
|
|
|
MyBase.Update()
|
|
End Sub
|
|
|
|
Public Sub TriggerScript(ByVal canAttach As Boolean)
|
|
If Core.CurrentScreen.Identification = Screen.Identifications.OverworldScreen Then
|
|
Dim oS As OverworldScreen = CType(Core.CurrentScreen, OverworldScreen)
|
|
|
|
If oS.ActionScript.IsReady = True Or canAttach = True Then
|
|
If Me.CorrectRotation() = True Then
|
|
If Me.clickedToActivate = True Then
|
|
Me.clickedToActivate = False
|
|
SoundManager.PlaySound("select")
|
|
End If
|
|
|
|
oS.ActionScript.StartScript(Me._scriptID, GetActivationID())
|
|
ActionScript.TempSpin = True
|
|
End If
|
|
End If
|
|
End If
|
|
TriggeredScriptBlock = False
|
|
End Sub
|
|
|
|
Public Function GetActivationID() As Integer
|
|
Dim activationID As Integer = 0
|
|
Select Case Me.TriggerID
|
|
Case 0, 1, 4
|
|
activationID = 0
|
|
Case 2
|
|
activationID = 1
|
|
Case 3
|
|
activationID = 2
|
|
End Select
|
|
Return activationID
|
|
End Function
|
|
|
|
Public Function CorrectRotation() As Boolean
|
|
Dim activate As Boolean = False
|
|
If AcceptedRotations.Count > 0 Then
|
|
If AcceptedRotations.Contains(Screen.Camera.GetPlayerFacingDirection()) Then
|
|
activate = True
|
|
End If
|
|
Else
|
|
activate = True
|
|
End If
|
|
Return activate
|
|
End Function
|
|
|
|
Public Overrides Sub Render()
|
|
Me.Draw(Me.Model, Textures, True)
|
|
End Sub
|
|
|
|
Public ReadOnly Property ScriptID() As String
|
|
Get
|
|
Return Me._scriptID
|
|
End Get
|
|
End Property
|
|
|
|
End Class |