📄 program.bas
字号:
Attribute VB_Name = "Program"
Type ProgramDat
UsesSystemMemoryForBackbuffer As Boolean
End Type
Global ProgramData As ProgramDat
Sub LoadVersion()
Open Directory_GameData & GameEngine.GameDataFile$ For Input As #1
Line Input #1, a$
VERSION = MiscFunctions.GetPropertyValue(a$)
Close #1
End Sub
Sub LoadGamePatch()
ProgramData.UsesSystemMemoryForBackbuffer = MiscFunctions.ConvertTrueFalse(FileFunctions.GetPropertyValueFromFile(File_Patch, "UsesSystemMemoryForBackBuffer:"))
End Sub
Sub Initialize_Program()
Call GameEngine.Initialize_GameEngine
Call GameEngine.Initialize_GameWindows
CHARACTER_QOUTE = Chr$(34)
GameEngine.GameDataFile$ = Directory_DefaultGameData
Call Math.InitializeTables
Call ProcessCommandLineArguements
Call LoadGamePatch
Call LoadGameINI
Call GraphicsEngine.OpenGraphicsDevice
Call Sound.InitializeSound
Call LoadJPIData
Call LoadInGameConstants
GameInterface.Mouse.CursorPic = SpriteStuff.GetPicIndex("CURSOR_SELECT")
Call LoadVersion
End Sub
Sub LoadInGameConstants()
InGameConstants(InGameConstant_PICINDEX_FontLib) = SpriteStuff.GetGraphicsLibIndex("Font")
InGameConstants(InGameConstant_PICINDEX_MessageWindowPic) = SpriteStuff.GetPicIndex("MessageWindowPic")
InGameConstants(InGameConstant_PICINDEX_ControlPanelBackground) = SpriteStuff.GetPicIndex("ControlPanelBackground")
InGameConstants(InGameConstant_PICINDEX_ClearBackground) = SpriteStuff.GetPicIndex("ProgramBackground")
InGameConstants(InGameConstant_PICINDEX_RadarBackground) = SpriteStuff.GetPicIndex("RadarBackground")
InGameConstants(InGameConstant_PICINDEX_JPILogoRed) = SpriteStuff.GetPicIndex("JPILogoRed")
InGameConstants(InGameConstant_PICINDEX_ProgramBackground) = SpriteStuff.GetPicIndex("InterfaceBackground")
InGameConstants(InGameConstant_PICINDEX_RadarButtonPic) = SpriteStuff.GetPicIndex("RadarButton")
InGameConstants(InGameConstant_PICINDEX_BuildDisabledPic) = SpriteStuff.GetPicIndex("BuildDisabledPic")
InGameConstants(InGameConstant_PICINDEX_BuildReadyPic) = SpriteStuff.GetPicIndex("BuildReadyPic")
InGameConstants(InGameConstant_PICINDEX_ButtonLarge) = SpriteStuff.GetPicIndex("INTERFACE_BUTTONLARGE")
End Sub
Sub LoadJPIData()
Call SpriteStuff.LoadGraphicLibData
Call SpriteStuff.LoadPictureData
Call SpriteStuff.LoadSpriteData
Call Music.InitializeMusic
Call Entities.LoadMapImprints
Call Sound.LoadSoundData
Call Entities.LoadObjectData
Call Map.LoadSeasonProfiles
End Sub
Sub Main()
Call ProgramScript
End Sub
Sub LaunchAboutScreen()
Call GameInterface.ClearMouseButtons
texty = ResolutionMidY - 100 + 3
Do
TextPos = 0
Call GraphicsEngine.ClearBackBuffer
Call GraphicsEngine.SplashGraphic(InGameConstants(InGameConstant_PICINDEX_ProgramBackground))
TextPos = TextPos + 1
TextPos = TextPos + 1
Call DisplayTextCenter("-xion is-", texty + (TextPos * FONT_SPACINGY), PALLETE_WHITE)
TextPos = TextPos + 1
TextPos = TextPos + 1
Call DisplayTextCenter("Michael " & CHARACTER_QOUTE & "ZBAD" & CHARACTER_QOUTE & " Jennings", texty + (TextPos * FONT_SPACINGY), PALLETE_WHITE)
TextPos = TextPos + 1
Call DisplayTextCenter("Programmer", texty + (TextPos * FONT_SPACINGY), PALLETE_WHITE)
TextPos = TextPos + 1
Call DisplayTextCenter("3D Graphics", texty + (TextPos * FONT_SPACINGY), PALLETE_WHITE)
TextPos = TextPos + 1
TextPos = TextPos + 1
Call DisplayTextCenter("John " & CHARACTER_QOUTE & "DARK" & CHARACTER_QOUTE & " Sampson", texty + (TextPos * FONT_SPACINGY), PALLETE_WHITE)
TextPos = TextPos + 1
Call DisplayTextCenter("Game Design", texty + (TextPos * FONT_SPACINGY), PALLETE_WHITE)
TextPos = TextPos + 1
Call DisplayTextCenter("Storyline", texty + (TextPos * FONT_SPACINGY), PALLETE_WHITE)
TextPos = TextPos + 1
TextPos = TextPos + 1
Call DisplayTextCenter("-EXTREMELY special Thanks to-", texty + (TextPos * FONT_SPACINGY), PALLETE_WHITE)
TextPos = TextPos + 1
Call DisplayTextCenter("Incredible help: Mark Davis", texty + (TextPos * FONT_SPACINGY), PALLETE_WHITE)
TextPos = TextPos + 1
Call DisplayTextCenter("Beta tester: Dave Scouten", texty + (TextPos * FONT_SPACINGY), PALLETE_WHITE)
Call GraphicsEngine.SwapScreen
DoEvents
If Mouse.ButtonStates(1) = True Then
Call GameInterface.ClearMouseButtons
Exit Do
End If
Loop
Do
TextPos = 0
Call GraphicsEngine.ClearBackBuffer
Call GraphicsEngine.SplashGraphic(InGameConstants(InGameConstant_PICINDEX_ProgramBackground))
TextPos = TextPos + 1
TextPos = TextPos + 1
Call DisplayTextCenter("Very very special thanks:", texty + (TextPos * FONT_SPACINGY), PALLETE_WHITE)
TextPos = TextPos + 1
TextPos = TextPos + 1
Call DisplayTextCenter("Dave " & CHARACTER_QOUTE & "ZoneMaster" & CHARACTER_QOUTE & " Scouten", texty + (TextPos * FONT_SPACINGY), PALLETE_YELLOW)
TextPos = TextPos + 1
TextPos = TextPos + 1
Call DisplayTextCenter("You have no idea how many times", texty + (TextPos * FONT_SPACINGY), PALLETE_WHITE)
TextPos = TextPos + 1
Call DisplayTextCenter("he let me crash his computer and", texty + (TextPos * FONT_SPACINGY), PALLETE_WHITE)
TextPos = TextPos + 1
Call DisplayTextCenter("didn't complain he he he", texty + (TextPos * FONT_SPACINGY), PALLETE_WHITE)
TextPos = TextPos + 1
TextPos = TextPos + 1
Call DisplayTextCenter("PATRICE SCRIBE", texty + (TextPos * FONT_SPACINGY), PALLETE_YELLOW)
TextPos = TextPos + 1
Call DisplayTextCenter("for bringing directx", texty + (TextPos * FONT_SPACINGY), PALLETE_WHITE)
TextPos = TextPos + 1
Call DisplayTextCenter("to visual basic", texty + (TextPos * FONT_SPACINGY), PALLETE_WHITE)
TextPos = TextPos + 1
TextPos = TextPos + 1
Call DisplayTextCenter("-Xion-", texty + (TextPos * FONT_SPACINGY), PALLETE_YELLOW)
Call GraphicsEngine.SwapScreen
DoEvents
If Mouse.ButtonStates(1) = True Then
Call GameInterface.ClearMouseButtons
Exit Do
End If
Loop
End Sub
Sub ShowInformation()
WndTxt = ""
WndTxt = WndTxt & " -XION- "
WndTxt = WndTxt & "This is a beta version of "
WndTxt = WndTxt & " Jump-Point: Ion. "
WndTxt = WndTxt & " "
WndTxt = WndTxt & " ICQ: 3565855 "
WndTxt = WndTxt & " digital-zbad@usa.net "
Call PopupMessageWindow("JPI " & VERSION, WndTxt)
End Sub
Sub ProgramScript()
Call Initialize_Program
Call ShowLoadingScreen
Call ShowInformation
ProgScript:
Call GameInterface.ClearMouseButtons
MenuItemPressed = LaunchMainMenu
Select Case MenuItemPressed
Case 3
Call ShowLoadingScreen
Call GameEngine.StartNewGame(1, 1, FACTION_EDF)
GoTo ProgScript:
Case 7
Call Internet.NewInternetGameConsole
GoTo ProgScript:
Case 9
Call LaunchAboutScreen
GoTo ProgScript:
Case 10
Call Program.QuitProgram
Case Else
GoTo ProgScript:
End Select
End Sub
Sub ShowLoadingScreen()
Call GraphicsEngine.SplashGraphic(InGameConstants(InGameConstant_PICINDEX_ProgramBackground))
MessageWindow.Caption = "JPI"
MessageWindow.Text = "Loading..."
Call GraphicsEngine.DisplayMessageWindow
Call SwapScreen
End Sub
Function LaunchMainMenu() As Integer
Dim MenuInterface As GameInterface.InterfaceObj, ReturnedInterface As InterfaceReturnObj
texty = (GameInterface.HALFINTERFACEHEIGHT - 95) + 1
PicY = texty + (1 * FONT_SPACINGY) + (FONT_SPACINGY / 2)
FontX = GameInterface.HALFINTERFACEWIDTH - 58
FontY = (texty) + Pics(InGameConstants(InGameConstant_PICINDEX_JPILogoRed)).Height + 4
BTNSIZE = FONT_SPACINGY - 1
TEXTSPACING = FONT_SPACINGY + 3
MenuInterface.BackgroundPic = InGameConstants(InGameConstant_PICINDEX_ProgramBackground)
MenuInterface.Controls.ControlAmount = 13
ControlNumber = ControlNumber + 1
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))
ControlNumber = ControlNumber + 1: texty = FontY + (linenumber * TEXTSPACING): linenumber = linenumber + 1
Text = "Single player"
MenuInterface.Controls.ControlObjects(ControlNumber) = GameInterface.CreateControl(CONTROLTYPE_LABEL, HALFINTERFACEWIDTH - 70, texty, 140, BTNSIZE, Text)
ControlNumber = ControlNumber + 1: texty = FontY + (linenumber * TEXTSPACING): linenumber = linenumber + 1
Text = "Start New Game"
MenuInterface.Controls.ControlObjects(ControlNumber) = GameInterface.CreateControl(CONTROLTYPE_BUTTONLARGE, HALFINTERFACEWIDTH - 70, texty, 140, BTNSIZE, Text)
ControlNumber = ControlNumber + 1: texty = FontY + (linenumber * TEXTSPACING): linenumber = linenumber + 1
Text = "Save Game"
MenuInterface.Controls.ControlObjects(ControlNumber) = GameInterface.CreateControl(CONTROLTYPE_BUTTONLARGE, HALFINTERFACEWIDTH - 70, texty, 140, BTNSIZE, Text)
ControlNumber = ControlNumber + 1: texty = FontY + (linenumber * TEXTSPACING): linenumber = linenumber + 1
Text = "Load Game"
MenuInterface.Controls.ControlObjects(ControlNumber) = GameInterface.CreateControl(CONTROLTYPE_BUTTONLARGE, HALFINTERFACEWIDTH - 70, texty, 140, BTNSIZE, Text)
linenumber = linenumber + 1
ControlNumber = ControlNumber + 1: texty = FontY + (linenumber * TEXTSPACING): linenumber = linenumber + 1
Text = "Multiplayer"
MenuInterface.Controls.ControlObjects(ControlNumber) = GameInterface.CreateControl(CONTROLTYPE_LABEL, HALFINTERFACEWIDTH - 70, texty, 140, BTNSIZE, Text)
ControlNumber = ControlNumber + 1: texty = FontY + (linenumber * TEXTSPACING): linenumber = linenumber + 1
Text = "Connect To Server"
MenuInterface.Controls.ControlObjects(ControlNumber) = GameInterface.CreateControl(CONTROLTYPE_BUTTONLARGE, HALFINTERFACEWIDTH - 70, texty, 140, BTNSIZE, Text)
ControlNumber = ControlNumber + 1: texty = FontY + (linenumber * TEXTSPACING): linenumber = linenumber + 1
Text = "Host A Game"
MenuInterface.Controls.ControlObjects(ControlNumber) = GameInterface.CreateControl(CONTROLTYPE_BUTTONLARGE, HALFINTERFACEWIDTH - 70, texty, 140, BTNSIZE, Text)
ControlNumber = ControlNumber + 1: texty = FontY + (linenumber * TEXTSPACING): linenumber = linenumber + 1
Text = "About"
MenuInterface.Controls.ControlObjects(ControlNumber) = GameInterface.CreateControl(CONTROLTYPE_BUTTONLARGE, HALFINTERFACEWIDTH - 70, texty, 140, BTNSIZE, Text)
ControlNumber = ControlNumber + 1: texty = FontY + (linenumber * TEXTSPACING): linenumber = linenumber + 1
Text = "Exit"
MenuInterface.Controls.ControlObjects(ControlNumber) = GameInterface.CreateControl(CONTROLTYPE_BUTTONLARGE, HALFINTERFACEWIDTH - 70, texty, 140, BTNSIZE, Text)
MenuInterface.BackgroundSound = "MainMenu"
ReturnedInterface = GameInterface.RunStaticInterface(MenuInterface)
For I = 1 To ReturnedInterface.Controls.ControlAmount
If ReturnedInterface.Controls.ControlObjects(I).ControlProperties.Properties(CONTROLPROPERTY_STATE) = True Then
ButtonPressed = I
Exit For
End If
If ReturnedInterface.Canceled = True Then
ButtonPressed = 10
Exit For
End If
Next I
LaunchMainMenu = ButtonPressed
End Function
Sub ProcessCommandLineArguements()
IsGameDiff = MiscFunctions.GetCommandLineArg("-game")
If IsGameDiff = "NULL" Then
GameEngine.GameDataFile$ = DefaultGameDataFile$ & GameDataFileExtention$
Directory_GameData = Directory_DefaultGameData
Else
Directory_GameData = IsGameDiff
GameEngine.GameDataFile$ = IsGameDiff & GameDataFileExtention$
End If
End Sub
Sub UnInitialize_Program()
Call Sound.UnInitializeSound
Call GraphicsEngine.CloseGraphicsDevice
Call Music.CloseMusicDevice
End Sub
Sub QuitProgram()
Call SaveGameINI
Call UnInitialize_Program
End
End Sub
Sub SaveGameINI()
Close
Open GameINIFile$ For Output As #1
Print #1, "Seed: " & 200 * Rnd
Print #1, "[Player Settings]"
Print #1, "Nickname: " & LocalPlayer.NickName
Print #1, "IP: " & Internet.ServerData.ServerIP
Print #1, "Port: " & Internet.ServerData.ServerPort
Print #1, "MusicOn: " & Music.MusicOn
Print #1, "SoundOn: " & Sound.SoundData.DeviceOn
Print #1, "[ENDOFFILE]"
Close #1
End Sub
Sub LoadGameINI()
On Error GoTo loaderr
'just checks and makes sure that the INI file
'is there. if it isn't, it writes a new one.
Open GameINIFile$ For Input As #1
Close #1
'getts the values from the file
Randomize FileFunctions.GetPropertyValueFromFile(GameINIFile$, "Seed:")
LocalPlayer.NickName = FileFunctions.GetPropertyValueFromFile(GameINIFile$, "Nickname:")
Internet.ServerData.ServerIP = FileFunctions.GetPropertyValueFromFile(GameINIFile$, "IP:")
Internet.ServerData.ServerPort = Val(FileFunctions.GetPropertyValueFromFile(GameINIFile$, "Port:"))
Music.MusicOn = MiscFunctions.ConvertTrueFalse(FileFunctions.GetPropertyValueFromFile(GameINIFile$, "MusicOn:"))
Sound.SoundData.DeviceOn = MiscFunctions.ConvertTrueFalse(FileFunctions.GetPropertyValueFromFile(GameINIFile$, "SoundOn:"))
Exit Sub
loaderr:
Call WriteDefaultINI
End Sub
Sub WriteDefaultINI()
LocalPlayer.NickName = "Player"
Internet.ServerData.ServerIP = ""
Internet.ServerData.ServerPort = Internet.DefaultPort
Music.MusicOn = True
Sound.SoundData.DeviceOn = True
Call SaveGameINI
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -