Added support for animated ItemObjects, and by this, for sparkling items in the floor.
This commit is contained in:
parent
15cd1f3079
commit
3e9706006e
|
@ -2,11 +2,18 @@
|
||||||
|
|
||||||
Inherits Entity
|
Inherits Entity
|
||||||
|
|
||||||
|
Shared AnimationTexturesTemp As New Dictionary(Of String, Texture2D)
|
||||||
|
Dim AnimationName As String = ""
|
||||||
|
Dim Animation As Animation = Nothing
|
||||||
|
|
||||||
Dim Item As Item
|
Dim Item As Item
|
||||||
Dim ItemID As Integer = 0
|
Dim ItemID As Integer = 0
|
||||||
Dim checkedExistence As Boolean = False
|
Dim checkedExistence As Boolean = False
|
||||||
|
Dim AnimationPath As String = ""
|
||||||
|
Dim X, Y, width, height, rows, columns, animationSpeed, startRow, startColumn As Integer
|
||||||
|
Dim CurrentRectangle As New Rectangle(0, 0, 0, 0)
|
||||||
|
|
||||||
Public Overrides Sub Initialize()
|
Public Overloads Sub Initialize(Optional ByVal AnimationData As List(Of List(Of Integer)) = Nothing)
|
||||||
MyBase.Initialize()
|
MyBase.Initialize()
|
||||||
|
|
||||||
Me.Item = Item.GetItemByID(CInt(Me.AdditionalValue.GetSplit(1)))
|
Me.Item = Item.GetItemByID(CInt(Me.AdditionalValue.GetSplit(1)))
|
||||||
|
@ -18,11 +25,57 @@
|
||||||
ElseIf Me.ActionValue = 1 Then
|
ElseIf Me.ActionValue = 1 Then
|
||||||
Me.Visible = False
|
Me.Visible = False
|
||||||
Me.Collision = False
|
Me.Collision = False
|
||||||
|
ElseIf Me.ActionValue = 2 Then
|
||||||
|
Me.Visible = Visible
|
||||||
|
'sparkles
|
||||||
|
If AnimationData IsNot Nothing Then
|
||||||
|
X = AnimationData(0)(0)
|
||||||
|
Y = AnimationData(0)(1)
|
||||||
|
width = AnimationData(0)(2)
|
||||||
|
height = AnimationData(0)(3)
|
||||||
|
rows = AnimationData(0)(4)
|
||||||
|
columns = AnimationData(0)(5)
|
||||||
|
animationSpeed = AnimationData(0)(6)
|
||||||
|
startRow = AnimationData(0)(7)
|
||||||
|
startColumn = AnimationData(0)(8)
|
||||||
|
AnimationPath = "ItemAnimations"
|
||||||
|
Else
|
||||||
|
X = 0
|
||||||
|
Y = 0
|
||||||
|
width = 48
|
||||||
|
height = 48
|
||||||
|
rows = 5
|
||||||
|
columns = 10
|
||||||
|
animationSpeed = 60
|
||||||
|
startRow = 0
|
||||||
|
startColumn = 0
|
||||||
|
AnimationPath = "SparkleAnimation"
|
||||||
|
End If
|
||||||
|
CreateAnimationTextureTemp()
|
||||||
|
|
||||||
|
Me.Animation = New Animation(TextureManager.GetTexture("Textures\Routes"), rows, columns, 16, 16, animationSpeed, startRow, startColumn)
|
||||||
End If
|
End If
|
||||||
|
|
||||||
Me.NeedsUpdate = True
|
Me.NeedsUpdate = True
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
|
Public Shared Sub ClearAnimationResources()
|
||||||
|
AnimationTexturesTemp.Clear()
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub CreateAnimationTextureTemp()
|
||||||
|
'If Core.GameOptions.GraphicStyle = 1 Then
|
||||||
|
Dim r As New Rectangle(X, Y, width, height)
|
||||||
|
Me.AnimationName = AnimationPath & "," & X & "," & Y & "," & height & "," & width
|
||||||
|
If AnimationTexturesTemp.ContainsKey(AnimationName & "_0") = False Then
|
||||||
|
For i = 0 To Me.rows - 1
|
||||||
|
For j = 0 To Me.columns - 1
|
||||||
|
AnimationTexturesTemp.Add(AnimationName & "_" & (j + columns * i).ToString, TextureManager.GetTexture(AnimationPath, New Rectangle(r.X + r.Width * j, r.Y + r.Height * i, r.Width, r.Height)))
|
||||||
|
Next
|
||||||
|
Next
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
Public Overrides Sub Update()
|
Public Overrides Sub Update()
|
||||||
If checkedExistence = False Then
|
If checkedExistence = False Then
|
||||||
checkedExistence = True
|
checkedExistence = True
|
||||||
|
@ -51,9 +104,31 @@
|
||||||
Me.CreatedWorld = False
|
Me.CreatedWorld = False
|
||||||
End If
|
End If
|
||||||
|
|
||||||
|
If Not Animation Is Nothing Then
|
||||||
|
Animation.Update(0.01)
|
||||||
|
If CurrentRectangle <> Animation.TextureRectangle Then
|
||||||
|
ChangeTexture()
|
||||||
|
CurrentRectangle = Animation.TextureRectangle
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
|
||||||
MyBase.UpdateEntity()
|
MyBase.UpdateEntity()
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
|
Private Sub ChangeTexture()
|
||||||
|
'If Core.GameOptions.GraphicStyle = 1 Then
|
||||||
|
|
||||||
|
If AnimationTexturesTemp.Count = 0 Then
|
||||||
|
ClearAnimationResources()
|
||||||
|
CreateAnimationTextureTemp()
|
||||||
|
End If
|
||||||
|
Dim i = Animation.CurrentRow
|
||||||
|
Dim j = Animation.CurrentColumn
|
||||||
|
Me.Textures(0) = ItemObject.AnimationTexturesTemp(AnimationName & "_" & (j + columns * i))
|
||||||
|
|
||||||
|
'End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
Public Overrides Sub ClickFunction()
|
Public Overrides Sub ClickFunction()
|
||||||
RemoveItem(Me)
|
RemoveItem(Me)
|
||||||
SoundManager.PlaySound("item_found", True)
|
SoundManager.PlaySound("item_found", True)
|
||||||
|
|
|
@ -46204,3 +46204,15 @@
|
||||||
/processorParam:TextureFormat=Color
|
/processorParam:TextureFormat=Color
|
||||||
/build:Textures/EmbeddedTower.png
|
/build:Textures/EmbeddedTower.png
|
||||||
|
|
||||||
|
#begin Textures/SparkleAnimation.png
|
||||||
|
/importer:TextureImporter
|
||||||
|
/processor:TextureProcessor
|
||||||
|
/processorParam:ColorKeyColor=255,0,255,255
|
||||||
|
/processorParam:ColorKeyEnabled=True
|
||||||
|
/processorParam:GenerateMipmaps=False
|
||||||
|
/processorParam:PremultiplyAlpha=True
|
||||||
|
/processorParam:ResizeToPowerOfTwo=False
|
||||||
|
/processorParam:MakeSquare=False
|
||||||
|
/processorParam:TextureFormat=Color
|
||||||
|
/build:Textures/SparkleAnimation.png
|
||||||
|
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 3.2 KiB |
Binary file not shown.
Loading…
Reference in New Issue