Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
help
#10
Code:
Sub BltPlayer(ByVal Index As Long)
Dim Anim As Byte
Dim x As Long, y As Long

    ' Only used if ever want to switch to blt rather then bltfast
    With rec_pos
        .top = GetPlayerY(Index) * PIC_Y + Player(Index).YOffset
        .Bottom = .top + PIC_Y
        .Left = GetPlayerX(Index) * PIC_X + Player(Index).XOffset
        .Right = .Left + PIC_X
    End With

    ' Check for animation
    Anim = 0
    If Player(Index).Attacking = 0 Then
        Select Case GetPlayerDir(Index)
              Case DIR_UP
                  If (Player(Index).YOffset < PIC_Y / 2) Then Anim = 1
              Case DIR_DOWN
                  If (Player(Index).YOffset < PIC_Y / 2 * -1) Then Anim = 1
              Case DIR_LEFT
                  If (Player(Index).XOffset < PIC_Y / 2) Then Anim = 1
              Case DIR_RIGHT
                  If (Player(Index).XOffset < PIC_Y / 2 * -1) Then Anim = 1
        End Select
    Else
        If Player(Index).AttackTimer + 500 > GetTickCount Then
              Anim = 2
        End If
    End If

    ' Check to see if we want to stop making him attack
    If Player(Index).AttackTimer + 1000 < GetTickCount Then
        Player(Index).Attacking = 0
        Player(Index).AttackTimer = 0
    End If

    rec.Left = (GetPlayerDir(Index) * 3 + Anim) * PIC_X
    rec.Right = rec.Left + PIC_X

    x = GetPlayerX(Index) * PIC_X + Player(Index).XOffset
    y = GetPlayerY(Index) * PIC_Y + Player(Index).YOffset - 4

    ' Check if its out of bounds because of the offset
    If y < 0 Then
        y = 0
        rec.top = rec.top + (y * -1)
    End If

    If GetPlayerDir(Index) = DIR_UP Then
        If Player(Index).Shield > 0 Then
              rec.top = Item(Player(Index).Shield).Pic * PIC_Y
              rec.Bottom = rec.top + PIC_Y
              Call DD_BackBuffer.BltFast(x, y, DD_ItemSurf, rec, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY)
        End If
        If Player(Index).Weapon > 0 Then
              rec.top = Item(Player(Index).Weapon).Pic * PIC_Y
              rec.Bottom = rec.top + PIC_Y
              Call DD_BackBuffer.BltFast(x, y, DD_ItemSurf, rec, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY)
        End If
    End If

    rec.top = GetPlayerSprite(Index) * PIC_Y
    rec.Bottom = rec.top + PIC_Y

    'Call DD_BackBuffer.Blt(rec_pos, DD_SpriteSurf, rec, DDBLT_WAIT Or DDBLT_KEYSRC)
    Call DD_BackBuffer.BltFast(x, y, DD_SpriteSurf, rec, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY)

    If Player(Index).Armor > 0 Then
        rec.top = Item(Player(Index).Armor).Pic * PIC_Y
        rec.Bottom = rec.top + PIC_Y
        Call DD_BackBuffer.BltFast(x, y, DD_ItemSurf, rec, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY)
    End If

    If Player(Index).Helmet > 0 Then
        rec.top = Item(Player(Index).Helmet).Pic * PIC_Y
        rec.Bottom = rec.top + PIC_Y
        Call DD_BackBuffer.BltFast(x, y, DD_ItemSurf, rec, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY)
    End If

    If GetPlayerDir(Index)  DIR_UP Then
        If Player(Index).Shield > 0 Then
            rec.top = Item(Player(Index).Shield).Pic * PIC_Y
            rec.Bottom = rec.top + PIC_Y
            Call DD_BackBuffer.BltFast(x, y, DD_ItemSurf, rec, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY)
        End If
        If Player(Index).Weapon > 0 Then
            rec.top = Item(Player(Index).Weapon).Pic * PIC_Y
            rec.Bottom = rec.top + PIC_Y
            Call DD_BackBuffer.BltFast(x, y, DD_ItemSurf, rec, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY)
        End If
    End If
End Sub

Is that what you needed done?
Reply


Messages In This Thread

Forum Jump:


Users browsing this thread: 1 Guest(s)