home *** CD-ROM | disk | FTP | other *** search
/ Planet Source Code Jumbo …e CD Visual Basic 1 to 7 / 1_2002.ISO / Data / Zips / RPG_Engine758034252002.psc / ctlMap.cls < prev    next >
Encoding:
Visual Basic class definition  |  2002-05-27  |  9.4 KB  |  320 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 = "ctlGame"
  10. Attribute VB_GlobalNameSpace = False
  11. Attribute VB_Creatable = True
  12. Attribute VB_PredeclaredId = False
  13. Attribute VB_Exposed = False
  14. '++++++++++++++++
  15. '+RPG Engine... +
  16. '+2002 by       +
  17. '+SmokingFish   ++++++
  18. '+mail@smokingfish.de+
  19. '+++++++++++++++++++++
  20. Private mProgress As Long
  21. Private FLAG(0 To 999) As String
  22. Public APPEND As Boolean
  23. Public FULLSCREEN As Boolean
  24. Public SETFILTER As Integer
  25. Public MAPHEIGHT, MAPWIDTH As Integer
  26. Private SCRIPTTITLE As String
  27. Public Speed As Integer
  28. Public t_PlayerX As Integer, t_PlayerY As Integer
  29. Public OnlyOnLoad As Boolean
  30. Public FACE As Integer
  31. Private TILELINE As New Collection
  32. Private TILELINE2 As New Collection
  33. Public COLLX As New Collection
  34. Public COLLY As New Collection
  35. Private COLL As String
  36. Public SCRIPTS As New Collection
  37. Public SCRIPTNAMES As New Collection
  38. Private TILESET As String
  39. Private PLAYERSPRITE As String
  40. Private PLAYERSMASK As String
  41. Private TILEINFO() As String
  42. Private TILEINFO2() As String
  43. Private MARK As String
  44. Private MARK2 As String
  45. Private SCRIPTTEXT As String
  46. Public NPCIMAGE1 As New Collection
  47. Public NPCIMAGE2 As New Collection
  48. Public NPCX As New Collection
  49. Public NPCY As New Collection
  50.  
  51. Public Sub SetFlag(INDEX As Integer, TEXT As String)
  52. FLAG(INDEX) = TEXT
  53. End Sub
  54.  
  55. Public Function GetFlag(INDEX As Integer) As String
  56. GetFlag = FLAG(INDEX)
  57. End Function
  58.  
  59. Private Sub DrawTile(TileX As Long, TileY As Long, SourceX As Long, SourceY As Long)
  60. BitBlt frmMain.picGame.HDC, TileX * 16, TileY * 16, 16, 16, frmMain.picTILESET.HDC, SourceX * 16, SourceY * 16, vbSrcCopy
  61. 'TransparentBlt frmMain.picGame.HDC, TileX * 16, TileY * 16, 16, 16, frmMain.picTILESET.HDC, SourceX * 16, SourceY * 16, 16, 16, &HFF00FF
  62. End Sub
  63. Private Sub DrawTile2(TileX As Long, TileY As Long, SourceX As Long, SourceY As Long)
  64. 'BitBlt frmMain.picGame.HDC, TileX * 16, TileY * 16, 16, 16, frmMain.picTILESET.HDC, SourceX * 16, SourceY * 16, vbSrcCopy
  65. TransparentBlt frmMain.picGame.HDC, TileX * 16, TileY * 16, 16, 16, frmMain.picTILESET.HDC, SourceX * 16, SourceY * 16, 16, 16, &HFF00FF
  66. End Sub
  67. Private Sub DrawMap()
  68. For I = 1 To TILELINE.Count - 1
  69. TILEINFO = Split(TILELINE.Item(I), ",")
  70. DrawTile SUBS.StringToLong(TILEINFO(0)), SUBS.StringToLong(TILEINFO(1)), SUBS.StringToLong(TILEINFO(2)), SUBS.StringToLong(TILEINFO(3))
  71. Next I
  72. End Sub
  73. Private Sub DrawMapLayer2()
  74. For I = 1 To TILELINE2.Count - 1
  75. TILEINFO2 = Split(TILELINE2.Item(I), ",")
  76. DrawTile2 SUBS.StringToLong(TILEINFO2(0)), SUBS.StringToLong(TILEINFO2(1)), SUBS.StringToLong(TILEINFO2(2)), SUBS.StringToLong(TILEINFO2(3))
  77. Next I
  78. End Sub
  79. Public Sub MSG(TEXT As String)
  80. Hoch = False
  81. Runter = False
  82. Rechts = False
  83. Links = False
  84. frmMain.picGame.Refresh
  85. frmMain.Picture3.Visible = True
  86. frmMain.lblMSG.Caption = TEXT
  87. SUBS.Wait 3
  88. frmMain.Picture3.Visible = False
  89. End Sub
  90. Public Sub StartMap(FileName As String)
  91. frmMain.picGame.Cls
  92. frmMain.picGame2.Cls
  93. Hoch = False
  94. Runter = False
  95. Links = False
  96. Rechts = False
  97. For o = 1 To RPG.COLLX.Count - 1
  98. RPG.COLLX.Remove (RPG.COLLX.Count)
  99. Next o
  100. For o = 1 To RPG.COLLY.Count - 1
  101. RPG.COLLY.Remove (RPG.COLLY.Count)
  102. Next o
  103. For o = 1 To TILELINE.Count - 1
  104. TILELINE.Remove (TILELINE.Count)
  105. Next o
  106. For o = 1 To TILELINE2.Count - 1
  107. TILELINE2.Remove (TILELINE2.Count)
  108. Next o
  109. For o = 1 To RPG.SCRIPTS.Count - 1
  110. RPG.SCRIPTS.Remove (o)
  111. Next o
  112. For o = 1 To RPG.SCRIPTNAMES.Count - 1
  113. RPG.SCRIPTNAMES.Remove (o)
  114. Next o
  115. If RPG.SCRIPTNAMES.Count > 0 Then
  116. RPG.SCRIPTNAMES.Remove 1
  117. End If
  118. If RPG.SCRIPTS.Count > 0 Then
  119. RPG.SCRIPTS.Remove 1
  120. End If
  121. If RPG.COLLX.Count > 0 Then
  122. RPG.COLLX.Remove 1
  123. End If
  124. If RPG.COLLY.Count > 0 Then
  125. RPG.COLLY.Remove 1
  126. End If
  127. RPG.LoadMap FileName
  128. RPG.FACE = 2
  129. RPG.Speed = 4
  130. RPG.PlayerX = 0
  131. RPG.PlayerY = 0
  132. DrawMap
  133. DrawMapLayer2
  134. For I = 1 To RPG.SCRIPTS.Count
  135. CHECK = Left(RPG.SCRIPTS.Item(I), 8)
  136. If CHECK = "'OnLoad'" Then
  137. frmMain.SC.AddCode RPG.SCRIPTS.Item(I)
  138. frmMain.SC.Run RPG.SCRIPTNAMES.Item(I)
  139. End If
  140. Next I
  141. End Sub
  142.  
  143. Public Sub CheckScripts()
  144. Dim CHECK As String
  145. For I = 1 To RPG.SCRIPTS.Count
  146. CHECK = Left(RPG.SCRIPTS.Item(I), 8)
  147. If CHECK = "'OnLoad'" Then GoTo EX
  148. CHECK = Left(RPG.SCRIPTS.Item(I), 7)
  149. If CHECK = "'OnEnd'" Then GoTo EX
  150. CHECK = Left(RPG.SCRIPTS.Item(I), 6)
  151. If CHECK = "'Ever'" Then
  152. frmMain.SC.AddCode RPG.SCRIPTS.Item(I)
  153. frmMain.SC.Run RPG.SCRIPTNAMES(I)
  154. End If
  155. EX:
  156. Next I
  157. End Sub
  158.  
  159. Public Sub LoadMap(FileName As String)
  160. Hoch = False
  161. Runter = False
  162. Links = False
  163. Rechts = False
  164. FileName = App.Path & "\DATA\MAPS\" & FileName
  165. Open FileName For Input As #1
  166. Input #1, TILESET
  167. Input #1, PLAYERSPRITE
  168. Input #1, PLAYERmask
  169. Input #1, MAPHEIGHT, MAPWIDTH
  170. MAPHEIGHT = MAPHEIGHT - 1
  171. MAPWIDTH = MAPWIDTH - 1
  172. Do
  173. DoEvents
  174. Input #1, X2, Y2, SX2, SY2, COLL
  175. If COLL = "1" Then
  176. COLLY.Add Y2 * 16
  177. COLLX.Add X2 * 16
  178. End If
  179. TILELINE.Add X2 & "," & Y2 & "," & SX2 & "," & SY2 & "," & COLL
  180. Loop Until X2 = "END_TILES"
  181. Do
  182. DoEvents
  183. Input #1, X2, Y2, SX2, SY2
  184. TILELINE2.Add X2 & "," & Y2 & "," & SX2 & "," & SY2
  185. Loop Until X2 = "END_TILES2"
  186. Do
  187. DoEvents
  188. Input #1, MARK
  189. If MARK = "END_FILE" Then Exit Do
  190. If MARK = "START_SCRIPT" Then
  191. Input #1, SCRIPTTITLE
  192. Do
  193. DoEvents
  194. Line Input #1, MARK2
  195. If MARK2 = "END_SCRIPT" Then
  196. SCRIPTS.Add SCRIPTTEXT
  197. SCRIPTNAMES.Add SCRIPTTITLE
  198. SCRIPTTEXT = ""
  199. Exit Do
  200. Else
  201. SCRIPTTEXT = SCRIPTTEXT + MARK2 + vbCrLf
  202. End If
  203. Loop
  204. End If
  205. Loop
  206. '---------
  207. frmMain.picTILESET.Picture = LoadPicture(App.Path & "\DATA\IMAGES\TILES\" & TILESET)
  208. frmMain.picPLAYER.Picture = LoadPicture(App.Path & "\DATA\IMAGES\PLAYER\" & PLAYERSPRITE)
  209. frmMain.picPLAYER2.Picture = LoadPicture(App.Path & "\DATA\IMAGES\PLAYER\" & PLAYERmask)
  210. SizePic
  211. Close #1
  212. End Sub
  213.  
  214. Public Sub SizePic()
  215. frmMain.picGame.Move 0, 0, RPG.MAPWIDTH * 16, RPG.MAPHEIGHT * 16
  216. frmMain.picGame.Move frmMain.ScaleWidth / 2 - frmMain.picGame.ScaleWidth / 2, frmMain.ScaleHeight / 2 - frmMain.picGame.ScaleHeight / 2, frmMain.picGame.Width, frmMain.picGame.Height
  217. frmMain.picGame2.Move 0, 0, frmMain.Width, frmMain.Height
  218. End Sub
  219.  
  220. Private Sub DrawPlayer(X As String, Y As String, FACE As String)
  221. If Frame = 0 Then
  222. If FACE = 1 Then
  223. BitBlt frmMain.picGame.HDC, X, Y, 32, 32, frmMain.picPLAYER2.HDC, 0, 0, MERGEPAINT
  224. BitBlt frmMain.picGame.HDC, X, Y, 32, 32, frmMain.picPLAYER.HDC, 0, 0, SRCAND
  225. ElseIf FACE = 2 Then
  226. BitBlt frmMain.picGame.HDC, X, Y, 32, 32, frmMain.picPLAYER2.HDC, 0, 32, MERGEPAINT
  227. BitBlt frmMain.picGame.HDC, X, Y, 32, 32, frmMain.picPLAYER.HDC, 0, 32, SRCAND
  228. ElseIf FACE = 3 Then
  229. BitBlt frmMain.picGame.HDC, X, Y, 32, 32, frmMain.picPLAYER2.HDC, 0, 64, MERGEPAINT
  230. BitBlt frmMain.picGame.HDC, X, Y, 32, 32, frmMain.picPLAYER.HDC, 0, 64, SRCAND
  231. ElseIf FACE = 4 Then
  232. BitBlt frmMain.picGame.HDC, X, Y, 32, 32, frmMain.picPLAYER2.HDC, 0, 96, MERGEPAINT
  233. BitBlt frmMain.picGame.HDC, X, Y, 32, 32, frmMain.picPLAYER.HDC, 0, 96, SRCAND
  234. End If
  235. ElseIf Frame = 1 Then
  236. If FACE = 1 Then
  237. BitBlt frmMain.picGame.HDC, X, Y, 32, 32, frmMain.picPLAYER2.HDC, 32, 0, MERGEPAINT
  238. BitBlt frmMain.picGame.HDC, X, Y, 32, 32, frmMain.picPLAYER.HDC, 32, 0, SRCAND
  239. ElseIf FACE = 2 Then
  240. BitBlt frmMain.picGame.HDC, X, Y, 32, 32, frmMain.picPLAYER2.HDC, 32, 32, MERGEPAINT
  241. BitBlt frmMain.picGame.HDC, X, Y, 32, 32, frmMain.picPLAYER.HDC, 32, 32, SRCAND
  242. ElseIf FACE = 3 Then
  243. BitBlt frmMain.picGame.HDC, X, Y, 32, 32, frmMain.picPLAYER2.HDC, 32, 64, MERGEPAINT
  244. BitBlt frmMain.picGame.HDC, X, Y, 32, 32, frmMain.picPLAYER.HDC, 32, 64, SRCAND
  245. ElseIf FACE = 4 Then
  246. BitBlt frmMain.picGame.HDC, X, Y, 32, 32, frmMain.picPLAYER2.HDC, 32, 96, MERGEPAINT
  247. BitBlt frmMain.picGame.HDC, X, Y, 32, 32, frmMain.picPLAYER.HDC, 32, 96, SRCAND
  248. End If
  249. End If
  250. End Sub
  251.  
  252. Public Sub DrawChar()
  253. DrawPlayer RPG.PlayerX, RPG.PlayerY, RPG.FACE
  254. End Sub
  255.  
  256. Public Sub Render()
  257. Do
  258. DoEvents
  259. DrawMap
  260. DrawMapLayer2
  261. DrawChar
  262. If NPCIMAGE1.Count > 0 Then
  263. For u = 1 To NPCIMAGE1.Count
  264. frmMain.picNPC.Picture = LoadPicture(App.Path & "\DATA\IMAGES\NPC\" & NPCIMAGE1.Item(u))
  265. frmMain.picNPC2.Picture = LoadPicture(App.Path & "\DATA\IMAGES\NPC\" & NPCIMAGE2.Item(u))
  266. BitBlt frmMain.picGame.HDC, NPCX.Item(u), NPCY.Item(u), frmMain.picNPC.ScaleWidth, frmMain.picNPC.ScaleHeight, frmMain.picNPC2.HDC, 0, 0, MERGEPAINT
  267. BitBlt frmMain.picGame.HDC, NPCX.Item(u), NPCY.Item(u), frmMain.picNPC.ScaleWidth, frmMain.picNPC.ScaleHeight, frmMain.picNPC.HDC, 0, 0, SRCAND
  268. Next u
  269. End If
  270. CheckScripts
  271. frmMain.picGame.Refresh
  272. Loop Until RPG.APPEND = True
  273. End Sub
  274.  
  275. Public Sub AddNPC(Picture1 As String, Picture2 As String, X As Integer, Y As Integer)
  276. NPCIMAGE1.Add Picture1
  277. NPCIMAGE2.Add Picture2
  278. NPCX.Add X
  279. NPCY.Add Y
  280. End Sub
  281.  
  282. Public Sub RemoveNPC(INDEX As Integer)
  283. NPCIMAGE1.Remove INDEX
  284. NPCIMAGE2.Remove INDEX
  285. NPCX.Remove INDEX
  286. NPCY.Remove INDEX
  287. End Sub
  288. Public Function DoesCollide(X As Integer, Y As Integer) As Boolean
  289.     
  290.     
  291. For m = 1 To COLLX.Count
  292.     If COLLX(m) = X And COLLY(m) = Y Then
  293.         DoesCollide = True
  294.         Exit Function
  295.     End If
  296.     
  297.     
  298. Next m
  299.     
  300.         DoesCollide = False
  301. End Function
  302.  
  303. Public Property Get PlayerX() As Integer
  304. PlayerX = t_PlayerX
  305. End Property
  306.  
  307. Public Property Let PlayerX(ByVal vNewValue As Integer)
  308. t_PlayerX = vNewValue
  309. End Property
  310.  
  311.  
  312. Public Property Get PlayerY() As Integer
  313. PlayerY = t_PlayerY
  314. End Property
  315.  
  316. Public Property Let PlayerY(ByVal vNewValue As Integer)
  317. t_PlayerY = vNewValue
  318. End Property
  319.  
  320.