home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / jpi / program.bas < prev    next >
Encoding:
BASIC Source File  |  1998-01-29  |  13.0 KB  |  299 lines

  1. Attribute VB_Name = "Program"
  2. Type ProgramDat
  3.   UsesSystemMemoryForBackbuffer As Boolean
  4. End Type
  5. Global ProgramData As ProgramDat
  6. Sub LoadVersion()
  7. Open Directory_GameData & GameEngine.GameDataFile$ For Input As #1
  8.   Line Input #1, a$
  9.   VERSION = MiscFunctions.GetPropertyValue(a$)
  10. Close #1
  11. End Sub
  12. Sub LoadGamePatch()
  13. ProgramData.UsesSystemMemoryForBackbuffer = MiscFunctions.ConvertTrueFalse(FileFunctions.GetPropertyValueFromFile(File_Patch, "UsesSystemMemoryForBackBuffer:"))
  14. End Sub
  15. Sub Initialize_Program()
  16. Call GameEngine.Initialize_GameEngine
  17. Call GameEngine.Initialize_GameWindows
  18. CHARACTER_QOUTE = Chr$(34)
  19. GameEngine.GameDataFile$ = Directory_DefaultGameData
  20. Call Math.InitializeTables
  21. Call ProcessCommandLineArguements
  22. Call LoadGamePatch
  23. Call LoadGameINI
  24. Call GraphicsEngine.OpenGraphicsDevice
  25. Call Sound.InitializeSound
  26. Call LoadJPIData
  27. Call LoadInGameConstants
  28. GameInterface.Mouse.CursorPic = SpriteStuff.GetPicIndex("CURSOR_SELECT")
  29. Call LoadVersion
  30. End Sub
  31. Sub LoadInGameConstants()
  32. InGameConstants(InGameConstant_PICINDEX_FontLib) = SpriteStuff.GetGraphicsLibIndex("Font")
  33. InGameConstants(InGameConstant_PICINDEX_MessageWindowPic) = SpriteStuff.GetPicIndex("MessageWindowPic")
  34. InGameConstants(InGameConstant_PICINDEX_ControlPanelBackground) = SpriteStuff.GetPicIndex("ControlPanelBackground")
  35. InGameConstants(InGameConstant_PICINDEX_ClearBackground) = SpriteStuff.GetPicIndex("ProgramBackground")
  36. InGameConstants(InGameConstant_PICINDEX_RadarBackground) = SpriteStuff.GetPicIndex("RadarBackground")
  37. InGameConstants(InGameConstant_PICINDEX_JPILogoRed) = SpriteStuff.GetPicIndex("JPILogoRed")
  38. InGameConstants(InGameConstant_PICINDEX_ProgramBackground) = SpriteStuff.GetPicIndex("InterfaceBackground")
  39. InGameConstants(InGameConstant_PICINDEX_RadarButtonPic) = SpriteStuff.GetPicIndex("RadarButton")
  40. InGameConstants(InGameConstant_PICINDEX_BuildDisabledPic) = SpriteStuff.GetPicIndex("BuildDisabledPic")
  41. InGameConstants(InGameConstant_PICINDEX_BuildReadyPic) = SpriteStuff.GetPicIndex("BuildReadyPic")
  42. InGameConstants(InGameConstant_PICINDEX_ButtonLarge) = SpriteStuff.GetPicIndex("INTERFACE_BUTTONLARGE")
  43. End Sub
  44. Sub LoadJPIData()
  45. Call SpriteStuff.LoadGraphicLibData
  46. Call SpriteStuff.LoadPictureData
  47. Call SpriteStuff.LoadSpriteData
  48. Call Music.InitializeMusic
  49. Call Entities.LoadMapImprints
  50. Call Sound.LoadSoundData
  51. Call Entities.LoadObjectData
  52. Call Map.LoadSeasonProfiles
  53. End Sub
  54. Sub Main()
  55. Call ProgramScript
  56. End Sub
  57. Sub LaunchAboutScreen()
  58. Call GameInterface.ClearMouseButtons
  59. texty = ResolutionMidY - 100 + 3
  60. Do
  61.   TextPos = 0
  62.   Call GraphicsEngine.ClearBackBuffer
  63.   Call GraphicsEngine.SplashGraphic(InGameConstants(InGameConstant_PICINDEX_ProgramBackground))
  64.   TextPos = TextPos + 1
  65.   TextPos = TextPos + 1
  66.   Call DisplayTextCenter("-xion is-", texty + (TextPos * FONT_SPACINGY), PALLETE_WHITE)
  67.   TextPos = TextPos + 1
  68.   TextPos = TextPos + 1
  69.   Call DisplayTextCenter("Michael " & CHARACTER_QOUTE & "ZBAD" & CHARACTER_QOUTE & " Jennings", texty + (TextPos * FONT_SPACINGY), PALLETE_WHITE)
  70.   TextPos = TextPos + 1
  71.   Call DisplayTextCenter("Programmer", texty + (TextPos * FONT_SPACINGY), PALLETE_WHITE)
  72.   TextPos = TextPos + 1
  73.   Call DisplayTextCenter("3D Graphics", texty + (TextPos * FONT_SPACINGY), PALLETE_WHITE)
  74.   TextPos = TextPos + 1
  75.   TextPos = TextPos + 1
  76.   Call DisplayTextCenter("John " & CHARACTER_QOUTE & "DARK" & CHARACTER_QOUTE & " Sampson", texty + (TextPos * FONT_SPACINGY), PALLETE_WHITE)
  77.   TextPos = TextPos + 1
  78.   Call DisplayTextCenter("Game Design", texty + (TextPos * FONT_SPACINGY), PALLETE_WHITE)
  79.   TextPos = TextPos + 1
  80.   Call DisplayTextCenter("Storyline", texty + (TextPos * FONT_SPACINGY), PALLETE_WHITE)
  81.   TextPos = TextPos + 1
  82.   TextPos = TextPos + 1
  83.   Call DisplayTextCenter("-EXTREMELY special Thanks to-", texty + (TextPos * FONT_SPACINGY), PALLETE_WHITE)
  84.   TextPos = TextPos + 1
  85.   Call DisplayTextCenter("Incredible help: Mark Davis", texty + (TextPos * FONT_SPACINGY), PALLETE_WHITE)
  86.   TextPos = TextPos + 1
  87.   Call DisplayTextCenter("Beta tester: Dave Scouten", texty + (TextPos * FONT_SPACINGY), PALLETE_WHITE)
  88.   Call GraphicsEngine.SwapScreen
  89.   DoEvents
  90.   If Mouse.ButtonStates(1) = True Then
  91.     Call GameInterface.ClearMouseButtons
  92.     Exit Do
  93.   End If
  94. Loop
  95.  
  96. Do
  97.   TextPos = 0
  98.   Call GraphicsEngine.ClearBackBuffer
  99.   Call GraphicsEngine.SplashGraphic(InGameConstants(InGameConstant_PICINDEX_ProgramBackground))
  100.   TextPos = TextPos + 1
  101.   TextPos = TextPos + 1
  102.   Call DisplayTextCenter("Very very special thanks:", texty + (TextPos * FONT_SPACINGY), PALLETE_WHITE)
  103.   TextPos = TextPos + 1
  104.   TextPos = TextPos + 1
  105.   Call DisplayTextCenter("Dave " & CHARACTER_QOUTE & "ZoneMaster" & CHARACTER_QOUTE & " Scouten", texty + (TextPos * FONT_SPACINGY), PALLETE_YELLOW)
  106.   TextPos = TextPos + 1
  107.   TextPos = TextPos + 1
  108.   Call DisplayTextCenter("You have no idea how many times", texty + (TextPos * FONT_SPACINGY), PALLETE_WHITE)
  109.   TextPos = TextPos + 1
  110.   Call DisplayTextCenter("he let me crash his computer and", texty + (TextPos * FONT_SPACINGY), PALLETE_WHITE)
  111.   TextPos = TextPos + 1
  112.   Call DisplayTextCenter("didn't complain he he he", texty + (TextPos * FONT_SPACINGY), PALLETE_WHITE)
  113.   TextPos = TextPos + 1
  114.   TextPos = TextPos + 1
  115.   Call DisplayTextCenter("PATRICE SCRIBE", texty + (TextPos * FONT_SPACINGY), PALLETE_YELLOW)
  116.   TextPos = TextPos + 1
  117.   Call DisplayTextCenter("for bringing directx", texty + (TextPos * FONT_SPACINGY), PALLETE_WHITE)
  118.   TextPos = TextPos + 1
  119.   Call DisplayTextCenter("to visual basic", texty + (TextPos * FONT_SPACINGY), PALLETE_WHITE)
  120.   TextPos = TextPos + 1
  121.   TextPos = TextPos + 1
  122.   Call DisplayTextCenter("-Xion-", texty + (TextPos * FONT_SPACINGY), PALLETE_YELLOW)
  123.   
  124.   
  125.   Call GraphicsEngine.SwapScreen
  126.   DoEvents
  127.   If Mouse.ButtonStates(1) = True Then
  128.     Call GameInterface.ClearMouseButtons
  129.     Exit Do
  130.   End If
  131. Loop
  132.  
  133. End Sub
  134. Sub ShowInformation()
  135. WndTxt = ""
  136. WndTxt = WndTxt & "          -XION-          "
  137. WndTxt = WndTxt & "This is a beta version of "
  138. WndTxt = WndTxt & "     Jump-Point: Ion.     "
  139. WndTxt = WndTxt & "                          "
  140. WndTxt = WndTxt & "       ICQ: 3565855       "
  141. WndTxt = WndTxt & "   digital-zbad@usa.net   "
  142. Call PopupMessageWindow("JPI " & VERSION, WndTxt)
  143. End Sub
  144. Sub ProgramScript()
  145. Call Initialize_Program
  146. Call ShowLoadingScreen
  147. Call ShowInformation
  148. ProgScript:
  149. Call GameInterface.ClearMouseButtons
  150. MenuItemPressed = LaunchMainMenu
  151. Select Case MenuItemPressed
  152. Case 3
  153.   Call ShowLoadingScreen
  154.   Call GameEngine.StartNewGame(1, 1, FACTION_EDF)
  155.   GoTo ProgScript:
  156. Case 7
  157.   Call Internet.NewInternetGameConsole
  158.   GoTo ProgScript:
  159. Case 9
  160.   Call LaunchAboutScreen
  161.   GoTo ProgScript:
  162. Case 10
  163.   Call Program.QuitProgram
  164. Case Else
  165.   GoTo ProgScript:
  166. End Select
  167. End Sub
  168. Sub ShowLoadingScreen()
  169. Call GraphicsEngine.SplashGraphic(InGameConstants(InGameConstant_PICINDEX_ProgramBackground))
  170. MessageWindow.Caption = "JPI"
  171. MessageWindow.Text = "Loading..."
  172. Call GraphicsEngine.DisplayMessageWindow
  173. Call SwapScreen
  174. End Sub
  175.  
  176. Function LaunchMainMenu() As Integer
  177. Dim MenuInterface As GameInterface.InterfaceObj, ReturnedInterface As InterfaceReturnObj
  178. texty = (GameInterface.HALFINTERFACEHEIGHT - 95) + 1
  179. PicY = texty + (1 * FONT_SPACINGY) + (FONT_SPACINGY / 2)
  180. FontX = GameInterface.HALFINTERFACEWIDTH - 58
  181. FontY = (texty) + Pics(InGameConstants(InGameConstant_PICINDEX_JPILogoRed)).Height + 4
  182. BTNSIZE = FONT_SPACINGY - 1
  183. TEXTSPACING = FONT_SPACINGY + 3
  184. MenuInterface.BackgroundPic = InGameConstants(InGameConstant_PICINDEX_ProgramBackground)
  185. MenuInterface.Controls.ControlAmount = 13
  186. ControlNumber = ControlNumber + 1
  187. MenuInterface.Controls.ControlObjects(ControlNumber) = GameInterface.CreateControl(GameInterface.CONTROLTYPE_PICTUREBOX, GameInterface.HALFINTERFACEWIDTH, PicY, Pics(InGameConstants(InGameConstant_PICINDEX_JPILogoRed)).Width, Pics(InGameConstants(InGameConstant_PICINDEX_JPILogoRed)).Height, InGameConstants(InGameConstant_PICINDEX_JPILogoRed))
  188. ControlNumber = ControlNumber + 1: texty = FontY + (linenumber * TEXTSPACING): linenumber = linenumber + 1
  189. Text = "Single player"
  190. MenuInterface.Controls.ControlObjects(ControlNumber) = GameInterface.CreateControl(CONTROLTYPE_LABEL, HALFINTERFACEWIDTH - 70, texty, 140, BTNSIZE, Text)
  191.  
  192. ControlNumber = ControlNumber + 1: texty = FontY + (linenumber * TEXTSPACING): linenumber = linenumber + 1
  193. Text = "Start New Game"
  194. MenuInterface.Controls.ControlObjects(ControlNumber) = GameInterface.CreateControl(CONTROLTYPE_BUTTONLARGE, HALFINTERFACEWIDTH - 70, texty, 140, BTNSIZE, Text)
  195.  
  196. ControlNumber = ControlNumber + 1: texty = FontY + (linenumber * TEXTSPACING): linenumber = linenumber + 1
  197. Text = "Save Game"
  198. MenuInterface.Controls.ControlObjects(ControlNumber) = GameInterface.CreateControl(CONTROLTYPE_BUTTONLARGE, HALFINTERFACEWIDTH - 70, texty, 140, BTNSIZE, Text)
  199.  
  200. ControlNumber = ControlNumber + 1: texty = FontY + (linenumber * TEXTSPACING): linenumber = linenumber + 1
  201. Text = "Load Game"
  202. MenuInterface.Controls.ControlObjects(ControlNumber) = GameInterface.CreateControl(CONTROLTYPE_BUTTONLARGE, HALFINTERFACEWIDTH - 70, texty, 140, BTNSIZE, Text)
  203.  
  204. linenumber = linenumber + 1
  205.  
  206. ControlNumber = ControlNumber + 1: texty = FontY + (linenumber * TEXTSPACING): linenumber = linenumber + 1
  207. Text = "Multiplayer"
  208. MenuInterface.Controls.ControlObjects(ControlNumber) = GameInterface.CreateControl(CONTROLTYPE_LABEL, HALFINTERFACEWIDTH - 70, texty, 140, BTNSIZE, Text)
  209.  
  210. ControlNumber = ControlNumber + 1: texty = FontY + (linenumber * TEXTSPACING): linenumber = linenumber + 1
  211. Text = "Connect To Server"
  212. MenuInterface.Controls.ControlObjects(ControlNumber) = GameInterface.CreateControl(CONTROLTYPE_BUTTONLARGE, HALFINTERFACEWIDTH - 70, texty, 140, BTNSIZE, Text)
  213.  
  214. ControlNumber = ControlNumber + 1: texty = FontY + (linenumber * TEXTSPACING): linenumber = linenumber + 1
  215. Text = "Host A Game"
  216. MenuInterface.Controls.ControlObjects(ControlNumber) = GameInterface.CreateControl(CONTROLTYPE_BUTTONLARGE, HALFINTERFACEWIDTH - 70, texty, 140, BTNSIZE, Text)
  217.  
  218. ControlNumber = ControlNumber + 1: texty = FontY + (linenumber * TEXTSPACING): linenumber = linenumber + 1
  219. Text = "About"
  220. MenuInterface.Controls.ControlObjects(ControlNumber) = GameInterface.CreateControl(CONTROLTYPE_BUTTONLARGE, HALFINTERFACEWIDTH - 70, texty, 140, BTNSIZE, Text)
  221.  
  222. ControlNumber = ControlNumber + 1: texty = FontY + (linenumber * TEXTSPACING): linenumber = linenumber + 1
  223. Text = "Exit"
  224. MenuInterface.Controls.ControlObjects(ControlNumber) = GameInterface.CreateControl(CONTROLTYPE_BUTTONLARGE, HALFINTERFACEWIDTH - 70, texty, 140, BTNSIZE, Text)
  225. MenuInterface.BackgroundSound = "MainMenu"
  226. ReturnedInterface = GameInterface.RunStaticInterface(MenuInterface)
  227. For I = 1 To ReturnedInterface.Controls.ControlAmount
  228.   If ReturnedInterface.Controls.ControlObjects(I).ControlProperties.Properties(CONTROLPROPERTY_STATE) = True Then
  229.     ButtonPressed = I
  230.     
  231.     Exit For
  232.   End If
  233.   If ReturnedInterface.Canceled = True Then
  234.     ButtonPressed = 10
  235.     Exit For
  236.   End If
  237. Next I
  238. LaunchMainMenu = ButtonPressed
  239. End Function
  240.  
  241. Sub ProcessCommandLineArguements()
  242. IsGameDiff = MiscFunctions.GetCommandLineArg("-game")
  243. If IsGameDiff = "NULL" Then
  244.   GameEngine.GameDataFile$ = DefaultGameDataFile$ & GameDataFileExtention$
  245.   Directory_GameData = Directory_DefaultGameData
  246. Else
  247.   Directory_GameData = IsGameDiff
  248.   GameEngine.GameDataFile$ = IsGameDiff & GameDataFileExtention$
  249. End If
  250. End Sub
  251. Sub UnInitialize_Program()
  252. Call Sound.UnInitializeSound
  253. Call GraphicsEngine.CloseGraphicsDevice
  254. Call Music.CloseMusicDevice
  255. End Sub
  256. Sub QuitProgram()
  257. Call SaveGameINI
  258. Call UnInitialize_Program
  259. End
  260. End Sub
  261. Sub SaveGameINI()
  262. Close
  263. Open GameINIFile$ For Output As #1
  264. Print #1, "Seed: " & 200 * Rnd
  265. Print #1, "[Player Settings]"
  266. Print #1, "Nickname: " & LocalPlayer.NickName
  267. Print #1, "IP: " & Internet.ServerData.ServerIP
  268. Print #1, "Port: " & Internet.ServerData.ServerPort
  269. Print #1, "MusicOn: " & Music.MusicOn
  270. Print #1, "SoundOn: " & Sound.SoundData.DeviceOn
  271. Print #1, "[ENDOFFILE]"
  272. Close #1
  273. End Sub
  274. Sub LoadGameINI()
  275. On Error GoTo loaderr
  276. 'just checks and makes sure that the INI file
  277. 'is there. if it isn't, it writes a new one.
  278. Open GameINIFile$ For Input As #1
  279. Close #1
  280. 'getts the values from the file
  281. Randomize FileFunctions.GetPropertyValueFromFile(GameINIFile$, "Seed:")
  282. LocalPlayer.NickName = FileFunctions.GetPropertyValueFromFile(GameINIFile$, "Nickname:")
  283. Internet.ServerData.ServerIP = FileFunctions.GetPropertyValueFromFile(GameINIFile$, "IP:")
  284. Internet.ServerData.ServerPort = Val(FileFunctions.GetPropertyValueFromFile(GameINIFile$, "Port:"))
  285. Music.MusicOn = MiscFunctions.ConvertTrueFalse(FileFunctions.GetPropertyValueFromFile(GameINIFile$, "MusicOn:"))
  286. Sound.SoundData.DeviceOn = MiscFunctions.ConvertTrueFalse(FileFunctions.GetPropertyValueFromFile(GameINIFile$, "SoundOn:"))
  287. Exit Sub
  288. loaderr:
  289. Call WriteDefaultINI
  290. End Sub
  291. Sub WriteDefaultINI()
  292. LocalPlayer.NickName = "Player"
  293. Internet.ServerData.ServerIP = ""
  294. Internet.ServerData.ServerPort = Internet.DefaultPort
  295. Music.MusicOn = True
  296. Sound.SoundData.DeviceOn = True
  297. Call SaveGameINI
  298. End Sub
  299.