New BattleAnimation type + Confuse Ray animation..

And some fixes
This commit is contained in:
JappaWakka 2023-06-26 16:36:52 +02:00
parent 9d024c93df
commit af937955b9
13 changed files with 404 additions and 141 deletions

View File

@ -101,12 +101,12 @@
Select Case MovementCurve
Case Curves.EaseIn
If EasedIn = False Then
If InterpolationSpeed < MoveSpeed OrElse InterpolationYSpeed < MoveYSpeed Then
If InterpolationSpeed < MoveSpeed Then
InterpolationSpeed += MoveSpeed / 10
If InterpolationSpeed < MoveSpeed - 0.05F OrElse InterpolationYSpeed < MoveYSpeed - 0.05F Then
If InterpolationSpeed < MoveSpeed - 0.05F Then
InterpolationSpeed = MathHelper.Lerp(InterpolationSpeed, MoveSpeed, 0.9F)
End If
If InterpolationYSpeed < MoveYSpeed Then
InterpolationYSpeed += MoveYSpeed / 10
If InterpolationYSpeed < MoveYSpeed - 0.05F Then
InterpolationYSpeed = MathHelper.Lerp(InterpolationYSpeed, MoveYSpeed, 0.9F)
End If
Else
InterpolationSpeed = MoveSpeed
@ -116,12 +116,12 @@
End If
Case Curves.EaseOut
If EasedOut = False Then
If InterpolationSpeed > 0 OrElse InterpolationYSpeed > 0 Then
If InterpolationSpeed > 0 Then
InterpolationSpeed -= MoveSpeed / 10
If InterpolationSpeed > 0.05F OrElse InterpolationYSpeed > 0.05F Then
If InterpolationSpeed > 0.05F Then
InterpolationSpeed = MathHelper.Lerp(InterpolationSpeed, 0.0F, 0.9F)
End If
If InterpolationYSpeed > 0 Then
InterpolationYSpeed -= MoveYSpeed / 10
If InterpolationYSpeed > 0.05F Then
InterpolationYSpeed = MathHelper.Lerp(InterpolationYSpeed, 0.0F, 0.9F)
End If
Else
InterpolationYSpeed = 0
@ -131,12 +131,12 @@
End If
Case Curves.EaseInAndOut
If EasedIn = False Then
If InterpolationSpeed < MoveSpeed OrElse InterpolationYSpeed < MoveYSpeed Then
If InterpolationSpeed < MoveSpeed Then
InterpolationSpeed += MoveSpeed / 10
If InterpolationSpeed < MoveSpeed - 0.05F OrElse InterpolationYSpeed < MoveYSpeed - 0.05F Then
If InterpolationSpeed < MoveSpeed - 0.05F Then
InterpolationSpeed = MathHelper.Lerp(InterpolationSpeed, MoveSpeed, 0.9F)
End If
If InterpolationYSpeed < MoveYSpeed Then
InterpolationYSpeed += MoveYSpeed / 10
If InterpolationYSpeed < MoveYSpeed - 0.05F Then
InterpolationYSpeed = MathHelper.Lerp(InterpolationYSpeed, MoveYSpeed, 0.9F)
End If
Else
InterpolationSpeed = MoveSpeed
@ -145,12 +145,12 @@
End If
Else
If EasedOut = False Then
If InterpolationSpeed > 0 OrElse InterpolationYSpeed > 0 Then
If InterpolationSpeed > 0 Then
InterpolationSpeed -= MoveSpeed / 10
If InterpolationSpeed > 0.05F OrElse InterpolationYSpeed > 0.05F Then
If InterpolationSpeed > 0.05F Then
InterpolationSpeed = MathHelper.Lerp(InterpolationSpeed, 0.0F, 0.9F)
End If
If InterpolationYSpeed > 0 Then
InterpolationYSpeed -= MoveYSpeed / 10
If InterpolationYSpeed > 0.05F Then
InterpolationYSpeed = MathHelper.Lerp(InterpolationYSpeed, 0.0F, 0.9F)
End If
Else
InterpolationYSpeed = 0
@ -161,114 +161,63 @@
End If
End Select
If MovementCurve = Curves.Linear Then
If MoveDistance.X > 0.05F Then
If StartPosition.X < Me.Destination.X Then
TargetEntity.Position.X += Me.MoveSpeed
If MoveDistance.X > 0.05F Then
If StartPosition.X < Me.Destination.X Then
TargetEntity.Position.X += Me.InterpolationSpeed
If TargetEntity.Position.X >= Me.Destination.X + 0.05 Then
TargetEntity.Position.X = Me.Destination.X
End If
ElseIf StartPosition.X > Me.Destination.X Then
TargetEntity.Position.X -= Me.MoveSpeed
If TargetEntity.Position.X <= Me.Destination.X + 0.05 Then
TargetEntity.Position.X = Me.Destination.X
End If
If TargetEntity.Position.X >= Me.Destination.X + 0.05 Then
TargetEntity.Position.X = Me.Destination.X
End If
MoveDistance.X -= Me.MoveSpeed
Else
ReadyAxis.X = 1.0F
End If
ElseIf StartPosition.X > Me.Destination.X Then
TargetEntity.Position.X -= Me.InterpolationSpeed
If MoveDistance.Y > 0.05F Then
If StartPosition.Y < Me.Destination.Y + DestinationOffset.Y Then
TargetEntity.Position.Y += Me.MoveYSpeed
If TargetEntity.Position.Y >= Me.Destination.Y + DestinationOffset.Y - 0.05 Then
TargetEntity.Position.Y = Me.Destination.Y + DestinationOffset.Y
End If
ElseIf StartPosition.Y > Me.Destination.Y + DestinationOffset.Y Then
TargetEntity.Position.Y -= Me.MoveYSpeed
If TargetEntity.Position.Y <= Me.Destination.Y + DestinationOffset.Y + 0.05 Then
TargetEntity.Position.Y = Me.Destination.Y + DestinationOffset.Y
End If
If TargetEntity.Position.X <= Me.Destination.X + 0.05 Then
TargetEntity.Position.X = Me.Destination.X
End If
MoveDistance.Y -= Me.MoveYSpeed
Else
ReadyAxis.Y = 1.0F
End If
If MoveDistance.Z > 0.05F Then
If StartPosition.Z < Me.Destination.Z Then
TargetEntity.Position.Z += Me.MoveSpeed
If TargetEntity.Position.Z >= Me.Destination.Z - 0.05 Then
TargetEntity.Position.Z = Me.Destination.Z
End If
ElseIf StartPosition.Z > Me.Destination.Z Then
TargetEntity.Position.Z -= Me.MoveSpeed
If TargetEntity.Position.Z <= Me.Destination.Z + 0.05 Then
TargetEntity.Position.Z = Me.Destination.Z
End If
End If
MoveDistance.Z -= Me.MoveYSpeed
Else
ReadyAxis.Z = 1.0F
End If
MoveDistance.X -= Me.InterpolationSpeed
Else
If MoveDistance.X > 0.05F Then
If StartPosition.X < Me.Destination.X Then
TargetEntity.Position.X = MathHelper.Lerp(TargetEntity.Position.X, Me.Destination.X, Me.InterpolationSpeed)
If TargetEntity.Position.X > Me.Destination.X - 0.05 Then
TargetEntity.Position.X = Me.Destination.X
End If
ElseIf StartPosition.X > Me.Destination.X Then
TargetEntity.Position.X = MathHelper.Lerp(TargetEntity.Position.X, Me.Destination.X, Me.InterpolationSpeed)
If TargetEntity.Position.X < Me.Destination.X + 0.05 Then
TargetEntity.Position.X = Me.Destination.X
End If
End If
MoveDistance.X = MathHelper.Lerp(MoveDistance.X, 0.0F, Me.InterpolationSpeed)
Else
ReadyAxis.X = 1.0F
End If
If MoveDistance.Y > 0.05F Then
If StartPosition.Y < Me.Destination.Y + DestinationOffset.Y Then
TargetEntity.Position.Y = MathHelper.Lerp(TargetEntity.Position.Y, Me.Destination.Y + DestinationOffset.Y, Me.InterpolationSpeed)
If TargetEntity.Position.Y > Me.Destination.Y + DestinationOffset.Y - 0.05 Then
TargetEntity.Position.Y = Me.Destination.Y + DestinationOffset.Y
End If
ElseIf StartPosition.Y > Me.Destination.Y + DestinationOffset.Y Then
TargetEntity.Position.Y = MathHelper.Lerp(TargetEntity.Position.Y, Me.Destination.Y + DestinationOffset.Y, Me.InterpolationSpeed)
If TargetEntity.Position.Y < Me.Destination.Y + DestinationOffset.Y + 0.05 Then
TargetEntity.Position.Y = Me.Destination.Y + DestinationOffset.Y
End If
End If
MoveDistance.Y = MathHelper.Lerp(MoveDistance.Y, 0.0F, Me.InterpolationSpeed)
Else
ReadyAxis.Y = 1.0F
End If
If MoveDistance.Z > 0.05F Then
If StartPosition.Z < Me.Destination.Z Then
TargetEntity.Position.Z = MathHelper.Lerp(TargetEntity.Position.Z, Me.Destination.Z, Me.InterpolationSpeed)
If TargetEntity.Position.Z > Me.Destination.Z - 0.05 Then
TargetEntity.Position.Z = Me.Destination.Z
End If
ElseIf StartPosition.Z > Me.Destination.Z Then
TargetEntity.Position.Z = MathHelper.Lerp(TargetEntity.Position.Z, Me.Destination.Z, Me.InterpolationSpeed)
If TargetEntity.Position.Z < Me.Destination.Z + 0.05 Then
TargetEntity.Position.Z = Me.Destination.Z
End If
End If
Else
ReadyAxis.Z = 1.0F
End If
ReadyAxis.X = 1.0F
End If
If MoveDistance.Y > 0.05F Then
If StartPosition.Y < Me.Destination.Y + DestinationOffset.Y Then
TargetEntity.Position.Y += Me.MoveYSpeed
If TargetEntity.Position.Y >= Me.Destination.Y + DestinationOffset.Y - 0.05 Then
TargetEntity.Position.Y = Me.Destination.Y + DestinationOffset.Y
End If
ElseIf StartPosition.Y > Me.Destination.Y + DestinationOffset.Y Then
TargetEntity.Position.Y -= Me.MoveYSpeed
If TargetEntity.Position.Y <= Me.Destination.Y + DestinationOffset.Y + 0.05 Then
TargetEntity.Position.Y = Me.Destination.Y + DestinationOffset.Y
End If
End If
MoveDistance.Y -= Me.MoveYSpeed
Else
ReadyAxis.Y = 1.0F
End If
If MoveDistance.Z > 0.05F Then
If StartPosition.Z < Me.Destination.Z Then
TargetEntity.Position.Z += Me.InterpolationSpeed
If TargetEntity.Position.Z >= Me.Destination.Z - 0.05 Then
TargetEntity.Position.Z = Me.Destination.Z
End If
ElseIf StartPosition.Z > Me.Destination.Z Then
TargetEntity.Position.Z -= Me.InterpolationSpeed
If TargetEntity.Position.Z <= Me.Destination.Z + 0.05 Then
TargetEntity.Position.Z = Me.Destination.Z
End If
End If
MoveDistance.Z -= Me.MoveYSpeed
Else
ReadyAxis.Z = 1.0F
End If
If ReadyAxis.X = 1.0F AndAlso ReadyAxis.Y = 1.0F AndAlso ReadyAxis.Z = 1.0F Then
Me.Ready = True
End If

View File

@ -0,0 +1,259 @@
Public Class BAEntityOscillateMove
Inherits BattleAnimation3D
Public StartPosition As Vector3
Public TargetEntity As Entity
Public HalfDistance As New Vector3(0.0F)
Public DestinationDistance As New Vector3(0.0F)
Public CurrentDistance As New Vector3(0.0F)
Public MoveSpeed As Single
Public MoveBothWays As Boolean = True
Public MovementCurve As Integer = 0
Public RemoveEntityAfter As Boolean
Public Duration As TimeSpan
Public ReadyTime As Date
Public ReadyAxis As New Vector3(0)
Public InterpolationSpeed As Vector3
Public InterpolationDirection As Boolean = True
Public Enum Curves As Integer
Linear
Smooth
End Enum
Public Sub New(ByRef Entity As Entity, ByVal RemoveEntityAfter As Boolean, ByVal Distance As Vector3, ByVal Speed As Single, ByVal BothWays As Boolean, ByVal Duration As TimeSpan, ByVal startDelay As Single, ByVal endDelay As Single, Optional MovementCurve As Integer = 0)
MyBase.New(New Vector3(0.0F), TextureManager.DefaultTexture, New Vector3(1.0F), startDelay, endDelay)
Me.RemoveEntityAfter = RemoveEntityAfter
Me.HalfDistance = Distance
Me.DestinationDistance = Me.HalfDistance
Me.MoveSpeed = Speed
Me.MoveBothWays = BothWays
Me.Duration = Duration
Me.MovementCurve = CType(MovementCurve, Curves)
Me.Visible = False
Me.TargetEntity = Entity
Select Case MovementCurve
Case Curves.Linear
InterpolationSpeed = New Vector3(MoveSpeed)
Case Curves.Smooth
InterpolationSpeed = New Vector3(0.0F)
End Select
Me.AnimationType = AnimationTypes.Move
End Sub
Public Overrides Sub DoActionActive()
Move()
End Sub
Private Sub Move()
If StartPosition = Nothing Then
StartPosition = TargetEntity.Position
End If
If ReadyTime = Nothing Then
ReadyTime = Date.Now + Duration
End If
If MovementCurve = Curves.Smooth Then
If InterpolationDirection = True Then
If InterpolationSpeed.X < MoveSpeed Then
InterpolationSpeed.X += MoveSpeed / 10
Else
InterpolationSpeed.X = MoveSpeed
End If
If InterpolationSpeed.Y < MoveSpeed Then
InterpolationSpeed.Y += MoveSpeed / 10
Else
InterpolationSpeed.Y = MoveSpeed
End If
If InterpolationSpeed.Z < MoveSpeed Then
InterpolationSpeed.Z += MoveSpeed / 10
Else
InterpolationSpeed.Z = MoveSpeed
End If
Else
If Date.Now < ReadyTime Then
If InterpolationSpeed.X > 0 Then
InterpolationSpeed.X -= MoveSpeed / 10
Else
InterpolationSpeed.X = 0
End If
If InterpolationSpeed.Y > 0 Then
InterpolationSpeed.Y -= MoveSpeed / 10
Else
InterpolationSpeed.Y = 0
End If
If InterpolationSpeed.Z > 0 Then
InterpolationSpeed.Z -= MoveSpeed / 10
Else
InterpolationSpeed.Z = 0
End If
Else
If InterpolationSpeed.X > MoveSpeed / 10 * 3 Then
InterpolationSpeed.X -= MoveSpeed / 10
Else
InterpolationSpeed.X = MoveSpeed / 10 * 3
End If
If InterpolationSpeed.Y > MoveSpeed / 10 * 3 Then
InterpolationSpeed.Y -= MoveSpeed / 10
Else
InterpolationSpeed.Y = MoveSpeed / 10 * 3
End If
If InterpolationSpeed.Z > MoveSpeed / 10 * 3 Then
InterpolationSpeed.Z -= MoveSpeed / 10
Else
InterpolationSpeed.Z = MoveSpeed / 10 * 3
End If
End If
End If
End If
If CurrentDistance.X <> DestinationDistance.X Then
If CurrentDistance.X < DestinationDistance.X Then
CurrentDistance.X += InterpolationSpeed.X
Else
CurrentDistance.X -= InterpolationSpeed.X
End If
If Math.Abs(CurrentDistance.X) / Math.Abs(HalfDistance.X) > 0.75F Then
InterpolationDirection = False
End If
If DestinationDistance.X > 0.0F Then
If CurrentDistance.X >= DestinationDistance.X Then
CurrentDistance.X = DestinationDistance.X
End If
Else
If CurrentDistance.X <= DestinationDistance.X Then
CurrentDistance.X = DestinationDistance.X
End If
End If
Else
If Date.Now < ReadyTime Then
If MoveBothWays = True Then
If DestinationDistance.X > 0.0F Then
DestinationDistance.X = 0.0F - Math.Abs(HalfDistance.X) * 2
Else
DestinationDistance.X = 0.0F + Math.Abs(HalfDistance.X) * 2
End If
Else
If DestinationDistance.X > 0.0F Then
DestinationDistance.X = 0.0F
Else
DestinationDistance.X = HalfDistance.X
End If
End If
InterpolationDirection = True
Else
ReadyAxis.X = 1.0F
End If
End If
If CurrentDistance.Y <> DestinationDistance.Y Then
If CurrentDistance.Y < DestinationDistance.Y Then
CurrentDistance.Y += InterpolationSpeed.Y
Else
CurrentDistance.Y -= InterpolationSpeed.Y
End If
If Math.Abs(CurrentDistance.Y) / Math.Abs(HalfDistance.Y) > 0.75F Then
InterpolationDirection = False
End If
If DestinationDistance.Y > 0.0F Then
If CurrentDistance.Y >= DestinationDistance.Y Then
CurrentDistance.Y = DestinationDistance.Y
End If
Else
If CurrentDistance.Y <= DestinationDistance.Y Then
CurrentDistance.Y = DestinationDistance.Y
End If
End If
Else
If Date.Now < ReadyTime Then
If MoveBothWays = True Then
If DestinationDistance.Y > 0.0F Then
DestinationDistance.Y = 0.0F - Math.Abs(HalfDistance.Y) * 2
Else
DestinationDistance.Y = 0.0F + Math.Abs(HalfDistance.Y) * 2
End If
Else
If DestinationDistance.Y > 0.0F Then
DestinationDistance.Y = 0.0F
Else
DestinationDistance.Y = HalfDistance.Y
End If
End If
InterpolationDirection = True
Else
ReadyAxis.Y = 1.0F
End If
End If
If CurrentDistance.Z <> DestinationDistance.Z Then
If CurrentDistance.Z < DestinationDistance.Z Then
CurrentDistance.Z += InterpolationSpeed.Z
Else
CurrentDistance.Z -= InterpolationSpeed.Z
End If
If Math.Abs(CurrentDistance.Y) / Math.Abs(HalfDistance.Y) > 0.75F Then
InterpolationDirection = False
End If
If DestinationDistance.Z > 0.0F Then
If CurrentDistance.Z >= DestinationDistance.Z Then
CurrentDistance.Z = DestinationDistance.Z
End If
Else
If CurrentDistance.Z <= DestinationDistance.Z Then
CurrentDistance.Z = DestinationDistance.Z
End If
End If
Else
If Date.Now < ReadyTime Then
If MoveBothWays = True Then
If DestinationDistance.Z > 0.0F Then
DestinationDistance.Z = 0.0F - Math.Abs(HalfDistance.Z) * 2
Else
DestinationDistance.Z = 0.0F + Math.Abs(HalfDistance.Z) * 2
End If
Else
If DestinationDistance.Z > 0.0F Then
DestinationDistance.Z = 0.0F
Else
DestinationDistance.Z = HalfDistance.Z
End If
End If
InterpolationDirection = True
Else
ReadyAxis.Z = 1.0F
End If
End If
If HalfDistance.X <> 0.0F Then
TargetEntity.Position.X = StartPosition.X + Me.CurrentDistance.X
Else
ReadyAxis.X = 1.0F
End If
If HalfDistance.Y <> 0.0F Then
TargetEntity.Position.Y = StartPosition.Y + Me.CurrentDistance.Y
Else
ReadyAxis.Y = 1.0F
End If
If HalfDistance.Z <> 0.0F Then
TargetEntity.Position.Z = StartPosition.Z + Me.CurrentDistance.Z
Else
ReadyAxis.Z = 1.0F
End If
If Date.Now > ReadyTime AndAlso ReadyAxis.X = 1.0F AndAlso ReadyAxis.Y = 1.0F AndAlso ReadyAxis.Z = 1.0F Then
Me.Ready = True
End If
End Sub
Public Overrides Sub DoRemoveEntity()
If Me.RemoveEntityAfter = True Then
TargetEntity.CanBeRemoved = True
End If
End Sub
End Class

View File

@ -7535,7 +7535,7 @@
BallThrow.AnimationPlaySound("Battle\Pokeball\Throw", 0, 0)
Dim BallThrowEntity As Entity = BallThrow.SpawnEntity(New Vector3(-2, CSng(-0.15 + PositionOffsetY), 0), BattleScreen.OwnPokemon.CatchBall.Texture, New Vector3(0.3F), 1.0F)
BallThrow.AnimationMove(BallThrowEntity, True, 0, CSng(0.35 + PositionOffsetY), 0, 0.1, False, True, 0F, 0.5F,, -0.3,, 0.025F)
BallThrow.AnimationMove(BallThrowEntity, True, 0, CSng(0.35 + PositionOffsetY), 0, 0.1, False, True, 0F, 0.5F,, -0.3, 0.025F)
' Ball Opens
BallThrow.AnimationPlaySound("Battle\Pokeball\Open", 3, 0)
@ -7976,7 +7976,7 @@
BallThrow.AnimationPlaySound("Battle\Pokeball\Throw", 0, 0)
Dim BallThrowEntity = BallThrow.SpawnEntity(New Vector3(2, -0.15, 0), BattleScreen.OppPokemon.CatchBall.Texture, New Vector3(0.3F), 1.0F)
BallThrow.AnimationMove(BallThrowEntity, True, 0, 0.35, 0, 0.1, False, True, 0F, 0.5F,, 0.3,, 0.025F)
BallThrow.AnimationMove(BallThrowEntity, True, 0, 0.35, 0, 0.1, False, True, 0F, 0.5F,, 0.3, 0.025F)
' Ball opens
BallThrow.AnimationPlaySound("Battle\Pokeball\Open", 3, 0)

View File

@ -442,7 +442,7 @@
BallThrowOpp.AnimationPlaySound("Battle\Pokeball\Throw", 0, 0)
BallThrowOpp.AnimationSetPosition(Nothing, False, 15, CSng(0.5 + OppEntityOffsetY), 13, 0, 0)
Dim BallThrowEntity As Entity = BallThrowOpp.SpawnEntity(New Vector3(2, -0.15, 0), Me.OppPokemon.CatchBall.Texture, New Vector3(0.3F), 1.0F)
BallThrowOpp.AnimationMove(BallThrowEntity, True, 0, CSng(0.35 + OppAnimationOffsetY), 0, 0.1, False, True, 0F, 0.5F,, 0.3,, 0.025F)
BallThrowOpp.AnimationMove(BallThrowEntity, True, 0, CSng(0.35 + OppAnimationOffsetY), 0, 0.1, False, True, 0F, 0.5F,, 0.3, 0.025F)
' Ball Opens
BallThrowOpp.AnimationPlaySound("Battle\Pokeball\Open", 3, 0)
@ -493,7 +493,7 @@
BallThrowOwn.AnimationMove(Nothing, False, 0, 0.5, 0, 0.5, False, False, 2, 0,,, 3)
Dim BallThrowEntity As Entity = BallThrowOwn.SpawnEntity(New Vector3(-2, -0.15, 0), Me.OwnPokemon.CatchBall.Texture, New Vector3(0.3F), 1.0F)
BallThrowOwn.AnimationMove(BallThrowEntity, True, 0, CSng(0.35 + OwnAnimationOffsetY), 0, 0.1, False, True, 0F, 0.5F,, 0.3,, 0.025F)
BallThrowOwn.AnimationMove(BallThrowEntity, True, 0, CSng(0.35 + OwnAnimationOffsetY), 0, 0.1, False, True, 0F, 0.5F,, 0.3, 0.025F)
' Ball Opens
BallThrowOwn.AnimationPlaySound("Battle\Pokeball\Open", 3, 0)

View File

@ -153,7 +153,7 @@
End Sub
Public Sub AnimationMove(ByVal Entity As Entity, ByVal RemoveEntityAfter As Boolean, ByVal DestinationX As Single, ByVal DestinationY As Single, ByVal DestinationZ As Single, ByVal Speed As Single, ByVal SpinX As Boolean, ByVal SpinZ As Boolean, ByVal startDelay As Single, ByVal endDelay As Single, Optional ByVal SpinXSpeed As Single = 0.1F, Optional ByVal SpinZSpeed As Single = 0.1F, Optional MovementCurve As Integer = 3, Optional MoveYSpeed As Single = 0.0F)
Public Sub AnimationMove(ByVal Entity As Entity, ByVal RemoveEntityAfter As Boolean, ByVal DestinationX As Single, ByVal DestinationY As Single, ByVal DestinationZ As Single, ByVal Speed As Single, ByVal SpinX As Boolean, ByVal SpinZ As Boolean, ByVal startDelay As Single, ByVal endDelay As Single, Optional ByVal SpinXSpeed As Single = 0.1F, Optional ByVal SpinZSpeed As Single = 0.1F, Optional MoveYSpeed As Single = 0.0F, Optional MovementCurve As Integer = 3)
Dim MoveEntity As Entity
Dim Destination As Vector3
@ -173,15 +173,33 @@
End If
End If
End If
If CurrentEntity Is Nothing Then
Destination = MoveEntity.Position + New Vector3(DestinationX, DestinationY, DestinationZ)
Else
Destination = CurrentEntity.Position + New Vector3(DestinationX, DestinationY, DestinationZ)
End If
Dim baEntityMove As BAEntityMove = New BAEntityMove(MoveEntity, RemoveEntityAfter, Destination, Speed, SpinX, SpinZ, startDelay, endDelay, SpinXSpeed, SpinZSpeed, MovementCurve, MoveYSpeed)
AnimationSequence.Add(baEntityMove)
End Sub
Public Sub AnimationOscillateMove(ByRef Entity As Entity, ByVal RemoveEntityAfter As Boolean, ByVal Distance As Vector3, ByVal Speed As Single, ByVal BothWays As Boolean, ByVal Duration As Single, ByVal startDelay As Single, ByVal endDelay As Single, Optional MovementCurve As Integer = 0)
Dim MoveEntity As Entity
If Entity Is Nothing Then
MoveEntity = CurrentEntity
Else
MoveEntity = Entity
End If
Dim DurationWhole = CSng(Math.Truncate(CDbl(Duration)))
Dim DurationFraction = CSng((Duration - DurationWhole) * 1000)
Dim DurationTime As TimeSpan = New TimeSpan(0, 0, 0, CInt(DurationWhole), CInt(DurationFraction))
Dim baEntityOscillateMove As BAEntityOscillateMove = New BAEntityOscillateMove(MoveEntity, RemoveEntityAfter, Distance, Speed, BothWays, DurationTime, startDelay, endDelay, MovementCurve)
AnimationSequence.Add(baEntityOscillateMove)
End Sub
Public Sub AnimationSetPosition(ByVal Entity As Entity, ByVal RemoveEntityAfter As Boolean, ByVal PositionX As Single, ByVal PositionY As Single, ByVal PositionZ As Single, ByVal startDelay As Single, ByVal endDelay As Single)

View File

@ -268,7 +268,7 @@
BallThrow.AnimationPlaySound("Battle\Pokeball\Throw", 0, 0)
Dim BallThrowEntity = BallThrow.SpawnEntity(New Vector3(2, -0.15, 0), BattleScreen.OppPokemon.CatchBall.Texture, New Vector3(0.3F), 1.0F)
BallThrow.AnimationMove(BallThrowEntity, True, 0, 0.35, 0, 0.1, False, True, 0F, 0.5F,, 0.3,, 0.025F)
BallThrow.AnimationMove(BallThrowEntity, True, 0, 0.35, 0, 0.1, False, True, 0F, 0.5F,, 0.3, 0.025F)
' Ball opens
BallThrow.AnimationPlaySound("Battle\Pokeball\Open", 3, 0)

View File

@ -17945,6 +17945,12 @@
<Content Include="Content\Sounds\Battle\Attacks\Flying\Gust.wav">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Content\Sounds\Battle\Attacks\Ghost\ConfuseRay_End.wav">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Content\Sounds\Battle\Attacks\Ghost\ConfuseRay_Start.wav">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Content\Sounds\Battle\Attacks\Grass\Absorb.wav">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
@ -28377,6 +28383,7 @@
<Compile Include="Battle\BattleAnimations\BAEntityColor.vb" />
<Compile Include="Battle\BattleAnimations\BABackground.vb" />
<Compile Include="Battle\BattleAnimations\BAEntityFaceRotate.vb" />
<Compile Include="Battle\BattleAnimations\BAEntityOscillateMove.vb" />
<Compile Include="Battle\BattleAnimations\BAEntitySetPosition.vb" />
<Compile Include="Battle\BattleAnimations\BAEntityRotate.vb" />
<Compile Include="Battle\BattleAnimations\BAEntityMove.vb" />

View File

@ -62,15 +62,14 @@
End Sub
Public Overrides Sub InternalUserPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal BattleFlip As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC)
Dim MoveAnimation = New AnimationQueryObject(CurrentEntity, BattleFlip)
Dim MoveAnimation = New AnimationQueryObject(Nothing, BattleFlip)
Dim RayEntity = MoveAnimation.SpawnEntity(New Vector3(0), TextureManager.GetTexture("Textures\Battle\Ghost\ConfuseRay", New Rectangle(0, 0, 16, 16), ""), New Vector3(0.5F), 1.0F)
MoveAnimation.AnimationMove(RayEntity, True, 2.0, 0.0, 0.0, 0.025, False, False, 0.0, 0.0,,,, 0.0125)
MoveAnimation.AnimationMove(RayEntity, False, 0.0, 0.2, 0.0, 0.025, False, False, 0.5, 0.0,,,, 0.0125)
MoveAnimation.AnimationMove(RayEntity, False, 0.0, -0.2, 0.0, 0.025, False, False, 1.5, 0.0,,,, 0.0125)
MoveAnimation.AnimationMove(RayEntity, False, 0.0, 0.2, 0.0, 0.025, False, False, 2.5, 0.0,,,, 0.0125)
MoveAnimation.AnimationMove(RayEntity, False, 0.0, -0.2, 0.0, 0.025, False, False, 3.5, 0.0,,,, 0.0125)
MoveAnimation.AnimationMove(RayEntity, False, 0.0, 0, 0.0, 0.025, False, False, 4, 0.0,,,, 0.0125)
MoveAnimation.AnimationPlaySound("Battle\Attacks\Ghost\ConfuseRay_Start", 0.0F, 0)
Dim RayEntity = MoveAnimation.SpawnEntity(CurrentEntity.Position, TextureManager.GetTexture("Textures\Battle\Ghost\ConfuseRay", New Rectangle(0, 0, 16, 16), ""), New Vector3(0.5F), 0.0F)
MoveAnimation.AnimationFade(RayEntity, False, 0.025F, True, 1.0F, 0, 0)
MoveAnimation.AnimationMove(RayEntity, False, 1.5, 0, 0, 0.025, False, False, 0, 0,,, 0.0125)
MoveAnimation.AnimationOscillateMove(RayEntity, True, New Vector3(0, 0.075, 0), 0.02, True, 1, 0, 0, 1)
MoveAnimation.AnimationChangeTexture(RayEntity, False, TextureManager.GetTexture("Textures\Battle\Ghost\ConfuseRay", New Rectangle(16, 0, 16, 16), ""), 0.5, 0)
MoveAnimation.AnimationChangeTexture(RayEntity, False, TextureManager.GetTexture("Textures\Battle\Ghost\ConfuseRay", New Rectangle(0, 0, 16, 16), ""), 1.0, 0)
@ -83,7 +82,38 @@
BattleScreen.BattleQuery.Add(MoveAnimation)
End Sub
Public Overrides Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal BattleFlip As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC)
Dim MoveAnimation = New AnimationQueryObject(Nothing, BattleFlip)
Dim SpawnPosition As Vector3 = CurrentEntity.Position
SpawnPosition.X = CurrentEntity.Position.X - 1.5F
If CurrentEntity.Model IsNot Nothing Then
SpawnPosition.Y = CurrentEntity.Position.Y - 0.5F
End If
MoveAnimation.AnimationPlaySound("Battle\Attacks\Ghost\ConfuseRay_End", 0.0F, 0)
Dim RayEntity = MoveAnimation.SpawnEntity(SpawnPosition, TextureManager.GetTexture("Textures\Battle\Ghost\ConfuseRay", New Rectangle(0, 0, 16, 16), ""), New Vector3(0.5F), 1.0F)
MoveAnimation.AnimationMove(RayEntity, False, 1.5, 0, 0, 0.025, False, False, 0, 0,,, 0.0125)
MoveAnimation.AnimationOscillateMove(RayEntity, False, New Vector3(0, 0.075, 0), 0.02, True, 1, 0, 0, 1)
MoveAnimation.AnimationOscillateMove(RayEntity, False, New Vector3(0, 0, 0.2), 0.075, True, 1.5, 4, 0, 1)
MoveAnimation.AnimationChangeTexture(RayEntity, False, TextureManager.GetTexture("Textures\Battle\Ghost\ConfuseRay", New Rectangle(16, 0, 16, 16), ""), 0.5, 0)
MoveAnimation.AnimationChangeTexture(RayEntity, False, TextureManager.GetTexture("Textures\Battle\Ghost\ConfuseRay", New Rectangle(0, 0, 16, 16), ""), 1.0, 0)
MoveAnimation.AnimationChangeTexture(RayEntity, False, TextureManager.GetTexture("Textures\Battle\Ghost\ConfuseRay", New Rectangle(16, 0, 16, 16), ""), 1.5, 0)
MoveAnimation.AnimationChangeTexture(RayEntity, False, TextureManager.GetTexture("Textures\Battle\Ghost\ConfuseRay", New Rectangle(0, 0, 16, 16), ""), 2.0, 0)
MoveAnimation.AnimationChangeTexture(RayEntity, False, TextureManager.GetTexture("Textures\Battle\Ghost\ConfuseRay", New Rectangle(16, 0, 16, 16), ""), 2.5, 0)
MoveAnimation.AnimationChangeTexture(RayEntity, False, TextureManager.GetTexture("Textures\Battle\Ghost\ConfuseRay", New Rectangle(0, 0, 16, 16), ""), 3, 0)
MoveAnimation.AnimationChangeTexture(RayEntity, False, TextureManager.GetTexture("Textures\Battle\Ghost\ConfuseRay", New Rectangle(16, 0, 16, 16), ""), 3.5, 0)
MoveAnimation.AnimationChangeTexture(RayEntity, False, TextureManager.GetTexture("Textures\Battle\Ghost\ConfuseRay", New Rectangle(0, 0, 16, 16), ""), 4, 0)
MoveAnimation.AnimationChangeTexture(RayEntity, False, TextureManager.GetTexture("Textures\Battle\Ghost\ConfuseRay", New Rectangle(16, 0, 16, 16), ""), 4.5, 0)
MoveAnimation.AnimationChangeTexture(RayEntity, False, TextureManager.GetTexture("Textures\Battle\Ghost\ConfuseRay", New Rectangle(0, 0, 16, 16), ""), 5.0, 0)
MoveAnimation.AnimationChangeTexture(RayEntity, False, TextureManager.GetTexture("Textures\Battle\Ghost\ConfuseRay", New Rectangle(16, 0, 16, 16), ""), 5.5, 0)
MoveAnimation.AnimationChangeTexture(RayEntity, False, TextureManager.GetTexture("Textures\Battle\Ghost\ConfuseRay", New Rectangle(0, 0, 16, 16), ""), 6.0, 0)
MoveAnimation.AnimationChangeTexture(RayEntity, False, TextureManager.GetTexture("Textures\Battle\Ghost\ConfuseRay", New Rectangle(16, 0, 16, 16), ""), 6.5, 0)
MoveAnimation.AnimationChangeTexture(RayEntity, False, TextureManager.GetTexture("Textures\Battle\Ghost\ConfuseRay", New Rectangle(0, 0, 16, 16), ""), 7, 0)
MoveAnimation.AnimationFade(RayEntity, True, 0.035, False, 0, 6.75, 0)
BattleScreen.BattleQuery.Add(MoveAnimation)
End Sub
End Class
End Namespace

View File

@ -101,7 +101,7 @@
Dim yPos As Single = CSng(Random.Next(-1, 3) * 0.15)
Dim zPos As Single = CSng(Random.Next(-3, 3) * 0.15)
Dim AbsorbEntity = MoveAnimation.SpawnEntity(New Vector3(0.0, 0.0, 0.0), TextureManager.GetTexture("Textures\Battle\Grass\Absorb"), New Vector3(0.35F), 1, CSng(currentAmount * 0.8))
MoveAnimation.AnimationMove(AbsorbEntity, True, -1.5, yPos, zPos, 0.03, False, True, CSng(currentAmount * 0.8), 0.0, 0.1, 0.5,, 0.005F)
MoveAnimation.AnimationMove(AbsorbEntity, True, -1.5, yPos, zPos, 0.03, False, True, CSng(currentAmount * 0.8), 0.0, 0.1, 0.5, 0.005F)
Threading.Interlocked.Increment(currentAmount)
End While

View File

@ -55,14 +55,14 @@
Public Overrides Sub InternalUserPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal BattleFlip As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC)
Dim MoveAnimation = New AnimationQueryObject(CurrentEntity, BattleFlip)
Dim WaterEntity = MoveAnimation.SpawnEntity(New Vector3(0), TextureManager.GetTexture("Textures\Battle\Water\WaterGun", New Rectangle(0, 0, 16, 16), ""), New Vector3(0.5F), 0.75F)
MoveAnimation.AnimationMove(WaterEntity, True, 2, 0.5, 0, 0.075, False, False, 0, 0,,,, 0.05)
MoveAnimation.AnimationMove(WaterEntity, True, 2, 0.5, 0, 0.075, False, False, 0, 0,,, 0.05)
MoveAnimation.AnimationPlaySound("Battle\Attacks\Water\Watergun_Start", 0, 0)
BattleScreen.BattleQuery.Add(MoveAnimation)
End Sub
Public Overrides Sub InternalOpponentPokemonMoveAnimation(ByVal BattleScreen As BattleScreen, ByVal BattleFlip As Boolean, ByVal CurrentPokemon As Pokemon, ByVal CurrentEntity As NPC)
Dim MoveAnimation = New AnimationQueryObject(CurrentEntity, BattleFlip)
Dim WaterEntity = MoveAnimation.SpawnEntity(New Vector3(-2, 1, 0), TextureManager.GetTexture("Textures\Battle\Water\WaterGun", New Rectangle(0, 0, 16, 16), ""), New Vector3(0.5F), 0.5F)
MoveAnimation.AnimationMove(WaterEntity, True, 0, 0, 0, 0.075, False, False, 0, 0,,,, 0.035)
MoveAnimation.AnimationMove(WaterEntity, True, 0, 0, 0, 0.075, False, False, 0, 0,,, 0.035)
MoveAnimation.AnimationPlaySound("Battle\Attacks\Water\Watergun_Hit", 3, 0)
Dim HitEntity = MoveAnimation.SpawnEntity(New Vector3(0, -0.2, 0), TextureManager.GetTexture("Textures\Battle\Water\WaterGun", New Rectangle(0, 16, 16, 16), ""), New Vector3(0.5F), 0.5F, 3, 1)

View File

@ -157,13 +157,13 @@ nextIndex:
PokemonScale = BattleScreen.OppPokemonNPC.Scale
'Ball is thrown
Dim CatchAnimation = New BattleSystem.AnimationQueryObject(Nothing, False, Nothing)
Dim CatchAnimation = New BattleSystem.AnimationQueryObject(Nothing, False)
CatchAnimation.AnimationPlaySound("Battle\Pokeball\Throw", 0, 0)
Dim BallPosition As Vector3 = New Vector3(BattleScreen.OppPokemonNPC.Position.X - 3, BattleScreen.OppPokemonNPC.Position.Y + 0.15F, BattleScreen.OppPokemonNPC.Position.Z)
Dim BallEntity As Entity = CatchAnimation.SpawnEntity(BallPosition, Ball.Texture, New Vector3(0.3F), 1.0F, 0, 0)
CatchAnimation.AnimationMove(BallEntity, False, 3, 0.1F, 0, 0.075, False, False, 0F, 0F,,,, 0.025)
CatchAnimation.AnimationMove(BallEntity, False, 3, 0.1F, 0, 0.075, False, False, 0F, 0F,,, 0.025)
CatchAnimation.AnimationRotate(BallEntity, False, 0, 0, -0.5, 0, 0, -6 * MathHelper.Pi, 0, 0, False, False, True, False)
CatchAnimation.AnimationRotate(BallEntity, False, 0, 0, 6 * MathHelper.Pi, 0, 0, 0, 4, 0, False, False, True, False)
@ -206,7 +206,7 @@ nextIndex:
Dim StarPosition As Vector3 = New Vector3(BattleScreen.OppPokemonNPC.Position.X + 0.05F, BattleScreen.OppPokemonNPC.Position.Y, BattleScreen.OppPokemonNPC.Position.Z)
Dim StarDestination As Vector3 = New Vector3(0.05F, 0.65F, 0 - ((1 - i) * 0.4F))
Dim StarEntity As Entity = CatchAnimation.SpawnEntity(StarPosition, TextureManager.GetTexture("Textures\Battle\BallCatchStar"), New Vector3(0.35F), 1.0F, 12 + Shakes.Count * 10)
CatchAnimation.AnimationMove(StarEntity, True, StarDestination.X, StarDestination.Y, StarDestination.Z, 0.01F, False, False, 12 + Shakes.Count * 10, 0.0F,,, 3, 0.015F)
CatchAnimation.AnimationMove(StarEntity, True, StarDestination.X, StarDestination.Y, StarDestination.Z, 0.01F, False, False, 12 + Shakes.Count * 10, 0.0F,,, 0.015F)
CatchAnimation.AnimationPlaySound("Battle\Pokeball\Catch", 12 + Shakes.Count * 10, 4)
CatchAnimation.AnimationFade(BallEntity, True, 0.01F, False, 0.0F, 12 + Shakes.Count * 10 + 3, 2)
Next