画怪物模块.bas
上传用户:pcw2004
上传日期:2022-02-02
资源大小:743k
文件大小:6k
源码类别:

DirextX编程

开发平台:

Visual Basic

  1. Attribute VB_Name = "画怪物模块"
  2. Option Explicit
  3. Public Sub DrawMon(MonNum As Long, XX As Long, YY As Long, Optional mColor As Long = -1)
  4.     On Error GoTo dErr
  5.     Dim TexFileNum As Integer, mNum As Integer, TexNum As Long
  6.     Dim MM As String
  7.     Dim XX1 As Long, YY1 As Long
  8.     XX1 = XX: YY1 = YY
  9.     If Mon(MonNum).DBInfo.Appr_形象代码 >= 10 Then
  10.         TexFileNum = Left(Str(Mon(MonNum).DBInfo.Appr_形象代码), Len(Str(Mon(MonNum).DBInfo.Appr_形象代码) - 1)) + 1
  11.     Else
  12.         TexFileNum = 1
  13.     End If
  14.     mNum = Right(Mon(MonNum).DBInfo.Appr_形象代码, 1)
  15.     If TexFileNum > 24 Or TexFileNum = 18 Then Exit Sub
  16.     If Mon(MonNum).Act = Move_怪移动 Then
  17.         Select Case Mon(MonNum).Face
  18.             Case FaceInfo.UpFace
  19.                 YY1 = YY1 + Mon(MonNum).YOFFECT
  20.             Case FaceInfo.RightUpFace
  21.                 XX1 = XX1 - Mon(MonNum).XOFFECT
  22.                 YY1 = YY1 + Mon(MonNum).YOFFECT
  23.             Case FaceInfo.RightFace
  24.                 XX1 = XX1 - Mon(MonNum).XOFFECT
  25.             Case FaceInfo.RightDownFace
  26.                 XX1 = XX1 - Mon(MonNum).XOFFECT
  27.                 YY1 = YY1 - Mon(MonNum).YOFFECT
  28.             Case FaceInfo.DownFace
  29.                 YY1 = YY1 - Mon(MonNum).YOFFECT
  30.             Case FaceInfo.LeftDownFace
  31.                 XX1 = XX1 + Mon(MonNum).XOFFECT
  32.                 YY1 = YY1 - Mon(MonNum).YOFFECT
  33.             Case FaceInfo.Leftface
  34.                 XX1 = XX1 + Mon(MonNum).XOFFECT
  35.             Case FaceInfo.LeftUpFace
  36.                 XX1 = XX1 + Mon(MonNum).XOFFECT
  37.                 YY1 = YY1 + Mon(MonNum).YOFFECT
  38.         End Select
  39.     End If
  40.     
  41.     Select Case Mon(MonNum).DBInfo.RaceImage_种族图像
  42.         Case 11, 14, 17, 18, 19, 20, 21, 22, 23, 31, 40, 41, 42, 45, 32, 52, 53 '近身物理,配合52(鹿);配合51(鸡)
  43.             Select Case Mon(MonNum).Act
  44.                 Case MonActType.Stand_怪站立
  45.                     TexNum = Mon(MonNum).Face * 10 + Mon(MonNum).Pic
  46.                 Case MonActType.Move_怪移动
  47.                     TexNum = Mon(MonNum).Face * 10 + Mon(MonNum).Pic + 80
  48.                 Case MonActType.AttAck_怪攻击
  49.                     TexNum = Mon(MonNum).Face * 10 + Mon(MonNum).Pic + 160
  50.                 Case MonActType.Bruise_怪受伤
  51.                     TexNum = Mon(MonNum).Face * 10 + Mon(MonNum).Pic + 240
  52.                 Case MonActType.Dead_怪死亡
  53.                     TexNum = Mon(MonNum).Face * 10 + Mon(MonNum).Pic + 260
  54.             End Select
  55.             
  56.             If Mon(MonNum).DBInfo.RaceImage_种族图像 = 42 Then
  57.                 TexNum = TexNum + mNum * 430
  58.             Else
  59.                 If Mon(MonNum).DBInfo.Appr_形象代码 = 218 Then
  60.                     TexNum = TexNum + 2700
  61.                 Else
  62.                     TexNum = TexNum + mNum * 360
  63.                 End If
  64.             End If
  65.         Case 47         '物理攻击,配合101(祖玛卫士),从石像中释放自己
  66.             Select Case Mon(MonNum).Act
  67.                 Case MonActType.Stone_怪石化
  68.                     TexNum = Mon(MonNum).Face * 10 + Mon(MonNum).Pic
  69.                 Case MonActType.Stand_怪站立
  70.                     TexNum = Mon(MonNum).Face * 10 + Mon(MonNum).Pic + 80
  71.                 Case MonActType.Move_怪移动
  72.                     TexNum = Mon(MonNum).Face * 10 + Mon(MonNum).Pic + 160
  73.                 Case MonActType.AttAck_怪攻击
  74.                     TexNum = Mon(MonNum).Face * 10 + Mon(MonNum).Pic + 240
  75.                 Case MonActType.Bruise_怪受伤
  76.                     TexNum = Mon(MonNum).Face * 10 + Mon(MonNum).Pic + 320
  77.                 Case MonActType.Dead_怪死亡
  78.                     TexNum = Mon(MonNum).Face * 10 + Mon(MonNum).Pic + 340
  79.             End Select
  80.             TexNum = TexNum + mNum * 440
  81.     End Select
  82.     
  83.     
  84.     If MonPic(TexFileNum).MonTex(TexNum).Tex Is Nothing Then
  85.         CreateTexture MonPic(TexFileNum).MonTex(TexNum), ResPath & "DataMon" & TexFileNum & ".Wil"
  86.     End If
  87.     GetRect MonPic(TexFileNum).MonTex(TexNum).Wid, MonPic(TexFileNum).MonTex(TexNum).Hei, XX1, YY1, mRECT
  88.     Draw MonPic(TexFileNum).MonTex(TexNum).Tex, XX1 + MonPic(TexFileNum).MonTex(TexNum).PosX, YY1 + MonPic(TexFileNum).MonTex(TexNum).PosY, mRECT, , , , mColor
  89. '    If MsgBox("dkfj", vbYesNo) = vbYes Then End
  90.     mRECT.Left = XX1
  91.     mRECT.Right = mRECT.Left + 48
  92.     mRECT.Top = YY1 - 25
  93.     mRECT.bottom = mRECT.Top + 30
  94. '    D3DX.DrawText D3DFont, D3DColorRGBA(255, 255, 255, 255), Mon(MonNum).ID, mRECT, DT_CENTER
  95.     If Mon(MonNum).Act <> Dead_怪死亡 Then
  96.         If Prguse3Tex(0).Tex Is Nothing Then
  97.             CreateTexture Prguse3Tex(0), ResPath & "DataPrguse3.wil"
  98.         End If
  99.         mRECT.Left = 0
  100.         mRECT.Right = Prguse3Tex(0).Wid
  101.         mRECT.Top = 0
  102.         mRECT.bottom = Prguse3Tex(0).Hei
  103.         Draw Prguse3Tex(0).Tex, XX1 + 8, YY1 - 60, mRECT
  104.         
  105.         
  106.         If Prguse3Tex(1).Tex Is Nothing Then
  107.             CreateTexture Prguse3Tex(1), ResPath & "DataPrguse3.wil"
  108.         End If
  109.         mRECT.Left = 0
  110.         If Mon(MonNum).MaxHP > 0 Then
  111.             mRECT.Right = (Mon(MonNum).HP / Mon(MonNum).MaxHP) * Prguse3Tex(1).Wid
  112.         Else
  113.             mRECT.Right = Prguse3Tex(1).Wid
  114.         End If
  115.         mRECT.Top = 0
  116.         mRECT.bottom = Prguse3Tex(1).Hei
  117.         Draw Prguse3Tex(1).Tex, XX1 + 8, YY1 - 60, mRECT
  118.         
  119.         If Mon(MonNum).MaxHP > 0 Then
  120.             mRECT.Left = XX1 - 10
  121.             mRECT.Right = mRECT.Left + 68
  122.             mRECT.Top = YY1 - 73
  123.             mRECT.bottom = mRECT.Top + 20
  124.             D3DX.DrawText D3DFont, D3DColorRGBA(255, 255, 255, 255), Mon(MonNum).HP & "/" & Mon(MonNum).MaxHP, mRECT, DT_CENTER
  125.         End If
  126.         If Mouse.MSelMonNum = MonNum Then
  127.             mRECT.Left = XX1
  128.             mRECT.Right = mRECT.Left + 48
  129.             mRECT.Top = YY1 - 25
  130.             mRECT.bottom = mRECT.Top + 30
  131.             D3DX.DrawText D3DFont, D3DColorRGBA(255, 255, 255, 255), Mon(MonNum).DBInfo.Name_名称, mRECT, DT_CENTER
  132.         End If
  133.     End If
  134. dErr:
  135. End Sub