; ; ------------------------------------------------------------ ; ; PureBasic - Quake 3 Selector ; ; (c) 2001 - Fantaisie Software ; ; ------------------------------------------------------------ ; ; ; 10/03/2001 ; Added q3config.cfg automatic copy.. ; Listview gadget automatically activate at start (to enable shortcut) ; ; 27/02/2001 ; Done in less than 1 hour ! ; First version ; ; NOTE: This file doesn't compile with the demo version ! InitWindow(0) InitGadget(100) InitFile(100) WindowWidth = 400 WindowHeight = 300 ButtonHeight = 25 Structure Quake3Mods Alias.s NomReel.s Version.s EndStructure NewList Mods.Quake3Mods() If ReadFile(0, "Quake3Launcher.prefs") While eof() = 0 AddElement(Mods()) Mods()\Alias = ReadString() Mods()\NomReel = ReadString() Mods()\Version = ReadString() Wend CloseFile(0) Else MessageRequester("Quake 3 Launcher", "Can't find the 'Quake3Launcher.prefs' file", #MB_ICONERROR) End EndIf If OpenWindow(0, 100, 100, WindowWidth, WindowHeight, #PB_Window_SystemMenu, "Quake 3 Launcher - by AlphaSND & JunIor") If CreateGadgetList(WindowID()) Top = 10 ListViewGadget(5, 10, Top, WindowWidth-20, WindowHeight-ButtonHeight-40, "Test") : Top+WindowHeight-ButtonHeight-40 ResetList(Mods()) While NextElement(Mods()) AddGadgetItem(5, -1, Mods()\Alias) Wend OffsetX = WindowWidth/3-14 ButtonGadget(3, 30+OffsetX*2, Top, OffsetX , ButtonHeight, "Quit") ButtonGadget(4, 83+OffsetX , Top, OffsetX/2, ButtonHeight, "About") ButtonGadget(2, 17+OffsetX , Top, OffsetX/2, ButtonHeight, "Info") ButtonGadget(1, 10 , Top, OffsetX , ButtonHeight, "Launch !") EndIf ActivateGadget(5) SetGadgetState(5, 0) FirstElement(Mods()) Repeat EventID.l = WaitWindowEvent() Select EventID Case #PB_EventGadget Select EventGadgetID() Case 1 Gosub LaunchQuake3 Case 2 Gosub DisplayInfo Case 3 Quit = 1 Case 4 MessageRequester("About", "Quake 3 Arena Launcher"+Chr(10)+Chr(10)+"Switch between 1.17 & 1.27 version automagically"+Chr(10)+Chr(10)+"Coded in 1 hour in PureBasic"+Chr(10)+"Check it at http://www.purebasic.com"+Chr(10), #MB_ICONINFORMATION) Case 5 ActualPosition = GetGadgetState(5) ResetList(Mods()) For k=0 To ActualPosition NextElement(Mods()) Next If DoubleClick() Gosub LaunchQuake3 EndIf EndSelect Case #PB_EventCloseWindow Quit = 1 EndSelect Until Quit = 1 EndIf End LaunchQuake3: If Mods()\Version = "1.27" RenameFile("BaseQ3\pak4.pk3.old", "BaseQ3\pak4.pk3") RenameFile("BaseQ3\pak5.pk3.old", "BaseQ3\pak5.pk3") Command$ = "Quake3.exe" Else RenameFile("BaseQ3\pak4.pk3", "BaseQ3\pak4.pk3.old") RenameFile("BaseQ3\pak5.pk3", "BaseQ3\pak5.pk3.old") Command$ = "Quake3.1.17.exe" EndIf SetFileAttributes_(Mods()\NomReel+"\q3config.cfg", #FILE_ATTRIBUTE_NORMAL) CopyFile_("quake3launcher.cfg", Mods()\NomReel+"\q3config.cfg", 0) RunProgram(Command$, "+set fs_game "+Mods()\NomReel, 0) Return DisplayInfo: If ReadFile(0, Mods()\NomReel+"\"+Mods()\NomReel+".info") Information$ = "" While eof() = 0 Information$ = Information$+ReadString()+Chr(13) Wend CloseFile(0) Else Information$ = "No information available." EndIf MessageRequester("Information - "+Mods()\Alias, Information$, 0) Return ; UseIcon=Quake3.ico ; Executable=C:\Quake3Launcher.exe ; DisableDebugger