home *** CD-ROM | disk | FTP | other *** search
/ Planet Source Code Jumbo …e CD Visual Basic 1 to 7 / 7_2009-2012.ISO / data / zips / EVO_Battle22156611292011.psc / clsHuman.cls < prev    next >
Text File  |  2011-11-29  |  9KB  |  350 lines

  1. VERSION 1.0 CLASS
  2. BEGIN
  3.   MultiUse = -1  'True
  4.   Persistable = 0  'NotPersistable
  5.   DataBindingBehavior = 0  'vbNone
  6.   DataSourceBehavior  = 0  'vbNone
  7.   MTSTransactionMode  = 0  'NotAnMTSObject
  8. END
  9. Attribute VB_Name = "clsHuman"
  10. Attribute VB_GlobalNameSpace = False
  11. Attribute VB_Creatable = True
  12. Attribute VB_PredeclaredId = False
  13. Attribute VB_Exposed = False
  14. Option Explicit
  15.  
  16. Public Name        As String
  17. Public SurName     As String
  18. Public Gender      As Boolean
  19.  
  20.  
  21.  
  22. Public PosX        As Single
  23. Public PosY        As Single
  24. Public vX          As Single
  25. Public vY          As Single
  26.  
  27. Public ANG         As Single
  28. Public ANGVel      As Single
  29. Public R           As Single
  30.  
  31. Public ACCLeft         As Single
  32. Public ACCRight         As Single
  33.  
  34. Public VxHit       As Single
  35. Public VyHit       As Single
  36.  
  37. Public Walked      As Single
  38.  
  39.  
  40. Public EnemyAng    As Single
  41. 'Public EnemyDist As Single
  42.  
  43. Public ReChaAng    As Single
  44. Public ReChaDist   As Single
  45.  
  46. Public EnemyShotAng As Single
  47. Public EnemyShotDist As Single
  48.  
  49.  
  50. Public LastShotTime As Long
  51. Public AvailShots  As Long
  52.  
  53. Public HitTIME     As Long
  54. Public CantShot    As Boolean
  55.  
  56. Public EnemyToAttack As Long
  57.  
  58. Public Hitten      As Boolean
  59.  
  60.  
  61. Private SciaX(0 To SciaLen) As Single
  62. Private SciaY(0 To SciaLen) As Single
  63. Private SciaI(0 To SciaLen) As Single
  64. Private SciaC1(0 To SciaLen) As Long
  65. Private SciaC2(0 To SciaLen) As Long
  66.  
  67. Public SciaPos     As Long
  68.  
  69. Public BRtoRUN     As Long
  70.  
  71.  
  72. Public Function SPEED() As Single
  73.     SPEED = Sqr(vX * vX + vY * vY)
  74. End Function
  75. Public Function DirMoving() As Single
  76.     DirMoving = Atan2(vX, vY)
  77. End Function
  78.  
  79. Public Sub Move(ByRef Scia As Boolean)
  80.     Dim A          As Single
  81.     Dim A2         As Single
  82.     Dim D          As Single
  83.     Dim I          As Long
  84.     Dim cosA       As Single
  85.     Dim SinA       As Single
  86.  
  87.     Dim xL         As Single
  88.     Dim xR         As Single
  89.     Dim yL         As Single
  90.     Dim yR         As Single
  91.  
  92.     Dim NewPosX    As Single
  93.     Dim NewposY    As Single
  94.  
  95.     Dim InvSciaLenPuls1 As Single
  96.     
  97. InvSciaLenPuls1 = 1 / (SciaLen + 1)
  98.     If Scia Then
  99.         'If CurTime Mod 8 = 0 Then
  100.         For I = 0 To SciaLen
  101.             SciaI(I) = SciaI(I) - (150 * InvSciaLenPuls1)
  102.             If SciaI(I) < 0 Then SciaI(I) = 0
  103.             SciaC1(I) = RGB(SciaI(I), 0, 0)
  104.             SciaC2(I) = RGB(0, SciaI(I), SciaI(I))
  105.         Next
  106.         SciaPos = (SciaPos + 1) Mod (SciaLen + 1)
  107.         SciaX(SciaPos) = PosX
  108.         SciaY(SciaPos) = PosY
  109.         SciaI(SciaPos) = 255
  110.         SciaC1(SciaPos) = RGB(255, 0, 0)
  111.         SciaC2(SciaPos) = RGB(0, 255, 255)
  112.         'End If
  113.     End If
  114.  
  115.  
  116.     If CurTime - HitTIME < FrozenTime Then
  117.         CantShot = True
  118.         'Exit Sub
  119.         'ACC = -ACC
  120.         ACCLeft = ACCLeft * 0.25
  121.         ACCRight = ACCRight * 0.25
  122.     Else
  123.         CantShot = False
  124.     End If
  125.  
  126.  
  127.  
  128.     'PosX = PosX + Cos(ANG) * Vel + VxHit
  129.     'PosY = PosY + Sin(ANG) * Vel + VyHit
  130.     '**********************************************************
  131.     '    If CurTime - HitTIME >= InvisibleTime Then
  132.     '        vX = vX + (Cos(ANG) * ACC + VxHit) * 0.1
  133.     '        vY = vY + (Sin(ANG) * ACC + VyHit) * 0.1
  134.     '        Hitten = False
  135.     '    Else
  136.     '        vX = vX + (Cos(ANG) * ACC + VxHit) * 0.05
  137.     '        vY = vY + (Sin(ANG) * ACC + VyHit) * 0.05
  138.     '        Hitten = True
  139.     '    End If
  140.     '**********************************************************
  141.  
  142.  
  143.  
  144.     cosA = Cos(ANG - PIh)
  145.     SinA = Sin(ANG - PIh)
  146.  
  147.     xL = PosX + cosA * R
  148.     yL = PosY + SinA * R
  149.     xR = PosX - cosA * R
  150.     yR = PosY - SinA * R
  151.  
  152.     cosA = Cos(ANG)
  153.     SinA = Sin(ANG)
  154.  
  155.     xL = xL + cosA * ACCLeft
  156.     yL = yL + SinA * ACCLeft
  157.     xR = xR + cosA * ACCRight
  158.     yR = yR + SinA * ACCRight
  159.  
  160.  
  161.  
  162.     ANGVel = ANGVel + AngleDiff(ANG, Atan2(xR - xL, yR - yL) - PIh) * 0.15 '0.125
  163.     NewPosX = (xL + xR) * 0.5
  164.     NewposY = (yL + yR) * 0.5
  165.  
  166.     If CurTime - HitTIME >= InvisibleTime Then
  167.         vX = vX + (NewPosX - PosX) * 0.09 + VxHit
  168.         vY = vY + (NewposY - PosY) * 0.09 + VyHit
  169.         Hitten = False
  170.     Else
  171.         vX = vX + (NewPosX - PosX) * 0.01 + VxHit
  172.         vY = vY + (NewposY - PosY) * 0.01 + VyHit
  173.         Hitten = True
  174.     End If
  175.  
  176.     
  177.     If CurTime - HitTIME >= FrozenTime Then
  178.         ANG = ANG + ANGVel
  179.     Else
  180.         ANG = ANG + ANGVel * 0.25
  181.     End If
  182.     
  183.     If ANG > PI2 Then ANG = ANG - PI2
  184.     If ANG < -PI2 Then ANG = ANG + PI2
  185.     
  186.     ANGVel = ANGVel * 0.95 '0.95 '0.8
  187.     '**********************************************************
  188.  
  189.     PosX = PosX + vX
  190.     PosY = PosY + vY
  191.     vX = vX * 0.98 ' 0.99
  192.     vY = vY * 0.98 + Gravity
  193.  
  194.     D = vX * vX + vY * vY
  195.     
  196.     If D > MaxHSpeedSq Then
  197.     
  198.         D = Sqr(D)
  199.         vX = (vX / D) * MaxHSpeed
  200.         vY = (vY / D) * MaxHSpeed
  201.     End If
  202.  
  203.  
  204.  
  205.     VxHit = VxHit * 0 '.75
  206.     VyHit = VyHit * 0 '.75
  207.  
  208.  
  209.     If PosX < 0 Then PosX = MaxX
  210.     'If PosX < 0 Then PosX = 1: vX = -vX    ': ANG = ANG - PI
  211.  
  212.     'If PosY < 0 Then PosY = MaxY
  213.     If PosY < 0 Then PosY = 1: vY = -vY    ': ANG = ANG - PI
  214.  
  215.     If PosX > MaxX Then PosX = 0
  216.     'If PosX > MaxX Then PosX = MaxX - 1: vX = -vX    ': ANG = ANG - PI
  217.  
  218.     'If PosY > MaxY Then PosY = 0
  219.     If PosY > MaxY Then PosY = MaxY - 1: vY = -vY    ': ANG = ANG - PI
  220.  
  221.  
  222. End Sub
  223.  
  224. Public Sub DRAW(ByVal pHDC As Long, fit As Single, Team As Long, ByRef Scia As Boolean, Optional IsTheBest As Boolean = False)
  225.  
  226.     Dim I          As Long
  227.     Dim SciaRad    As Long
  228.     Dim SciaRad2   As Long
  229.  
  230.     Dim A          As Single
  231.     Dim C          As Long
  232.     Dim C2         As Long
  233.     Dim S          As Integer
  234.  
  235.     Dim cosA       As Single
  236.     Dim SinA       As Single
  237.     Dim CosA1      As Single
  238.     Dim SinA1      As Single
  239.     Dim CosA2      As Single
  240.     Dim SinA2      As Single
  241.  
  242.     Dim X0         As Long
  243.     Dim Y0         As Long
  244.     Dim x1         As Long
  245.     Dim y1         As Long
  246.     Dim x2         As Long
  247.     Dim y2         As Long
  248.  
  249.     Dim pa(0 To 2) As POINTAPI
  250.  
  251.     Dim ScreenX    As Long
  252.     Dim ScreenY    As Long
  253.  
  254.     Dim XX         As Single
  255.     Dim YY         As Single
  256.  
  257.  
  258.     ScreenX = XtoScreen(PosX)
  259.     ScreenY = YtoScreen(PosY)
  260.  
  261.     If IsInsideScreen(ScreenX, ScreenY) Then
  262.     
  263.               S = IIf(Team = 1, 1, -1)
  264.               
  265.         If Scia Then
  266.             SciaRad = SciaR * ZOOM
  267.             SciaRad2 = SciaRad * 2
  268.             If S = 1 Then
  269.                 For I = SciaLen To 0 Step -1
  270.                     MyCircle pHDC, XtoScreen(SciaX(I)), YtoScreen(SciaY(I)), SciaRad, SciaRad2, SciaC1(I)
  271.                 Next
  272.             Else
  273.                 For I = SciaLen To 0 Step -1
  274.                     MyCircle pHDC, XtoScreen(SciaX(I)), YtoScreen(SciaY(I)), SciaRad, SciaRad2, SciaC2(I)
  275.                 Next
  276.             End If
  277.         End If
  278.  
  279.         If IsTheBest Then
  280.             C2 = IIf(Team = 1, RGB(255, 200, 100), RGB(0, 255, 100))
  281.         Else
  282.             C2 = IIf(Team = 1, vbRed, vbCyan)
  283.             'C2 = IIf(team = 1, RGB(255, 0, 0), RGB(0, 255, 255))
  284.         End If
  285.  
  286.   
  287.  
  288.  
  289.         cosA = Cos(ANG)
  290.         SinA = Sin(ANG)
  291.         CosA1 = -Cos(ANG - 1)
  292.         SinA1 = -Sin(ANG - 1)
  293.         CosA2 = -Cos(ANG + 1)
  294.         SinA2 = -Sin(ANG + 1)
  295.  
  296.         'Stop
  297.  
  298.         '    pa(0).x = ZOOM * (PosX + cosA * r * 2)
  299.         '    pa(0).y = ZOOM * (PosY + SinA * r * 2)
  300.         '    pa(1).x = ZOOM * (PosX + CosA1 * r)
  301.         '    pa(1).y = ZOOM * (PosY + SinA1 * r)
  302.         '    pa(2).x = ZOOM * (PosX + CosA2 * r)
  303.         '    pa(2).y = ZOOM * (PosY + SinA2 * r)
  304.  
  305.         pa(0).X = XtoScreen(PosX + cosA * R * 2)
  306.         pa(0).Y = YtoScreen(PosY + SinA * R * 2)
  307.         pa(1).X = XtoScreen(PosX + CosA1 * R)
  308.         pa(1).Y = YtoScreen(PosY + SinA1 * R)
  309.         pa(2).X = XtoScreen(PosX + CosA2 * R)
  310.         pa(2).Y = YtoScreen(PosY + SinA2 * R)
  311.  
  312.  
  313.         'FastLine pHDC, X0, Y0, X1, Y1, 1, C2
  314.         'FastLine pHDC, X1, Y1, X2, Y2, 1, C2
  315.         'FastLine pHDC, X2, Y2, X0, Y0, 1, C2
  316.  
  317.         'bec
  318.         'FastLine pHDC, PosX * Zoom, PosY * Zoom, (PosX + CosA * r * 2) * Zoom, (PosY + SinA * r * 2) * Zoom, 1, C2
  319.         'fit
  320.         FastLine pHDC, XtoScreen(PosX), YtoScreen(PosY + 25), XtoScreen(PosX + S * fit * 0.15), YtoScreen(PosY + 25), 1, C2
  321.         frmM.PIC.FillColor = C2
  322.         Polygon pHDC, pa(0), 3
  323.         'acc
  324.  
  325.         '        FastLine pHDC, XtoScreen(PosX), YtoScreen(PosY), XtoScreen(PosX - 25 * CosA * ACC), YtoScreen(PosY - 25 * SinA * ACC), 2, RGB(255, 180, 0)
  326.         XX = PosX + CosA2 * R
  327.         YY = PosY + SinA2 * R
  328.         FastLine pHDC, XtoScreen(XX), YtoScreen(YY), _
  329.                  XtoScreen(XX - 50 * cosA * ACCLeft), YtoScreen(YY - 50 * SinA * ACCLeft), 2, RGB(255, 180, 0)
  330.         XX = PosX + CosA1 * R
  331.         YY = PosY + SinA1 * R
  332.         FastLine pHDC, XtoScreen(XX), YtoScreen(YY), _
  333.                  XtoScreen(XX - 50 * cosA * ACCRight), YtoScreen(YY - 50 * SinA * ACCRight), 2, RGB(255, 180, 0)
  334.  
  335.  
  336.         If CantShot Then
  337.             FastLine pHDC, XtoScreen(PosX - 12), YtoScreen(PosY - 12), XtoScreen(PosX + 12), YtoScreen(PosY + 12), 1, C2
  338.             FastLine pHDC, XtoScreen(PosX - 12), YtoScreen(PosY + 12), XtoScreen(PosX + 12), YtoScreen(PosY - 12), 1, C2
  339.         End If
  340.  
  341.  
  342.  
  343.  
  344.     End If
  345.  
  346. End Sub
  347.  
  348.  
  349.  
  350.