' Check for animation Anim = 1 If Player(Index).Attacking = 0 Then Select Case GetPlayerDir(Index) Case DIR_UP If (Player(Index).yOffset > 8) Then Anim = Player(Index).Step Case DIR_DOWN If (Player(Index).yOffset < -8) Then Anim = Player(Index).Step Case DIR_LEFT If (Player(Index).xOffset > 8) Then Anim = Player(Index).Step Case DIR_RIGHT If (Player(Index).xOffset < -8) Then Anim = Player(Index).Step End Select Else If Player(Index).AttackTimer + 1000 > GetTickCount Then Anim = 2 End If End If
Sub ProcessMovement(ByVal Index As Long) ' Check if player is walking, and if so process moving them over If Player(Index).Moving = MOVING_WALKING Then Select Case GetPlayerDir(Index) Case DIR_UP Player(Index).YOffset = Player(Index).YOffset - WALK_SPEED Case DIR_DOWN Player(Index).YOffset = Player(Index).YOffset + WALK_SPEED Case DIR_LEFT Player(Index).XOffset = Player(Index).XOffset - WALK_SPEED Case DIR_RIGHT Player(Index).XOffset = Player(Index).XOffset + WALK_SPEED End Select ' Check if completed walking over to the next tile If Player(Index).Dir = DIR_RIGHT Or Player(Index).Dir = DIR_DOWN Then If (Player(Index).XOffset >= 0) And (Player(Index).YOffset >= 0) Then Player(Index).Moving = 0 If Player(Index).Step = 0 Then Player(Index).Step = 2 Else Player(Index).Step = 0 End If End If Else If (Player(Index).XOffset <= 0) And (Player(Index).YOffset <= 0) Then Player(Index).Moving = 0 If Player(Index).Step = 0 Then Player(Index).Step = 2 Else Player(Index).Step = 0 End If End If End If End If ' Check if player is running, and if so process moving them over If Player(Index).Moving = MOVING_RUNNING Then Select Case GetPlayerDir(Index) Case DIR_UP Player(Index).YOffset = Player(Index).YOffset - RUN_SPEED Case DIR_DOWN Player(Index).YOffset = Player(Index).YOffset + RUN_SPEED Case DIR_LEFT Player(Index).XOffset = Player(Index).XOffset - RUN_SPEED Case DIR_RIGHT Player(Index).XOffset = Player(Index).XOffset + RUN_SPEED End Select ' Check if completed walking over to the next tile If Player(Index).Dir = DIR_RIGHT Or Player(Index).Dir = DIR_DOWN Then If (Player(Index).XOffset >= 0) And (Player(Index).YOffset >= 0) Then Player(Index).Moving = 0 If Player(Index).Step = 0 Then Player(Index).Step = 2 Else Player(Index).Step = 0 End If End If Else If (Player(Index).XOffset <= 0) And (Player(Index).YOffset <= 0) Then Player(Index).Moving = 0 If Player(Index).Step = 0 Then Player(Index).Step = 2 Else Player(Index).Step = 0 End If End If End If End If Select Case GetPlayerDir(Index) Case DIR_UP If Player(Index).YOffset <= 0 Then Player(Index).YOffset = 0 End If Case DIR_DOWN If Player(Index).YOffset >= 0 Then Player(Index).YOffset = 0 End If Case DIR_LEFT If Player(Index).XOffset <= 0 Then Player(Index).XOffset = 0 End If Case DIR_RIGHT If Player(Index).XOffset >= 0 Then Player(Index).XOffset = 0 End If End SelectEnd Sub
Step As Byte
Current frame movement is: 1,2,...After code it's: 1,2,3,2,...Basically, they move as intended.I'll have a movie example sometime later today. (24th)