;this module handles the game match setup window..... XIncludeFile "MatchWin.pb" XIncludeFile "IniFile.pb" XIncludeFile "MatchGlob.pb" Procedure SetDefaults() ;not sure what goes here, but here goes nothing ClearGadgetItemList(#Options) ;lets start with host flags... AddGadgetItem(#Options,-1,"Host Flags") OpenTreeGadgetNode(#Options) AddGadgetItem(#Options,-1,"/h = identifies host") AddGadgetItem(#Options,-1,"/c = identifies client") AddGadgetItem(#Options,-1,"/s = using client server directplay") AddGadgetItem(#Options,-1,"/p = using pier to pier directplay") AddGadgetItem(#Options,-1,"/t = using client server TCP") AddGadgetItem(#Options,-1,"/u = using client server UDP") AddGadgetItem(#Options,-1,"/x = using remoter server proxy") CloseTreeGadgetNode(#Options) AddGadgetItem(#Options,-1,"Specs") OpenTreeGadgetNode(#Options) AddGadgetItem(#Options,-1,"Players = 4") AddGadgetItem(#Options,-1,"Observer = NO") AddGadgetItem(#Options,-1,"Version = 1") AddGadgetItem(#Options,-1,"EXE = Game.exe") AddGadgetItem(#Options,-1,"Save = Save.ini") CloseTreeGadgetNode(#Options) AddGadgetItem(#Options,-1,"Maps") OpenTreeGadgetNode(#Options) AddGadgetItem(#Options,-1,"1 = 10x10 1v1") AddGadgetItem(#Options,-1,"2 = 20x20 2v2") AddGadgetItem(#Options,-1,"3 = 99x99 4v4") CloseTreeGadgetNode(#Options) AddGadgetItem(#Options,-1,"Types") OpenTreeGadgetNode(#Options) AddGadgetItem(#Options,-1,"1 = Free for all") AddGadgetItem(#Options,-1,"2 = Team death match") AddGadgetItem(#Options,-1,"3 = Free for all with respawn") CloseTreeGadgetNode(#Options) AddGadgetItem(#Options,-1,"Display Options") OpenTreeGadgetNode(#Options) AddGadgetItem(#Options,-1,"1 = 600x800") AddGadgetItem(#Options,-1,"2 = 480x640") CloseTreeGadgetNode(#Options) EndProcedure Procedure SaveSetup() ;first scan list and expand all nodes... p.l=0 IniFile=NewGameIni section.s="default" msg.s="" ml.l=0 Repeat If CountTreeGadgetNodeItems(#Options,p) SetGadgetItemState(#Options,p,#PB_Tree_Expanded) section=GetGadgetItemText(#Options,p,0) Else msg=GetGadgetItemText(#Options,p,0) ml=FindString(msg,"=",1) If ml>2 WriteIniString(section,Trim(Left(msg,ml-1)),Trim(Right(msg,Len(msg)-ml))) EndIf EndIf p+1 Until p>CountGadgetItems(#Options) EndProcedure Procedure LoadGameSetup() ClearGadgetItemList(#Options) IniFile=NewGameIni ;file needs to be read line by line.... If FileSize(IniFile)>0 If ReadFile(1,IniFile) While Eof(1)=0 msg.s=ReadString() If Left(msg,1)="[" CloseTreeGadgetNode(#Options) AddGadgetItem(#Options,-1,Mid(msg,2,Len(msg)-2)) OpenTreeGadgetNode(#Options) Else AddGadgetItem(#Options,-1,msg) EndIf Wend CloseTreeGadgetNode(#Options) CloseFile(1) EndIf EndIf EndProcedure Procedure.l HandleGameEvent(GID.l) reply.l=0 P.l=0 msg.s="" Select GID Case #Add_Type CloseTreeGadgetNode(#Options) ;P=GetGadgetState(#Options) msg=Trim(GetGadgetText(#Flag)) If Len(msg)>2 AddGadgetItem(#Options,-1,msg) SetGadgetText(#Flag,"") ;OpenTreeGadgetNode(#Options,p) Else MessageRequester("Game setup error","Invalid Type description",#MB_ICONEXCLAMATION) EndIf Case #Add_Flag P=GetGadgetState(#Options) If P>-1 msg=Trim(GetGadgetText(#Flag)) If Len(msg)>2 AddGadgetItem(#Options,P,msg) SetGadgetText(#Flag,"") Else MessageRequester("Game setup error","Invalid flag description",#MB_ICONEXCLAMATION) EndIf Else MessageRequester("Game setup error","You have not specified a location",#MB_ICONSTOP) EndIf Case #Del_Item P=GetGadgetState(#Options) If P>-1 RemoveGadgetItem(#Options,P) Else MessageRequester("Game Setup Error","No item selected",#MB_ICONINFORMATION) EndIf Case #Save If Len(NewGameINI)<5 NewGameINI=SaveFileRequester("Save Game Setup",MainPath+"game.ini","Ini file|*.ini|text file|*.txt|Any file|*.*",0) EndIf If Len(NewGameINI)>4 SaveSetup() setwindowtext_(WindowID(),"New Game setup - "+NewGameINI) EndIf Case #SaveAs msg=SaveFileRequester("Save Game Setup",MainPath+"game.ini","Ini file|*.ini|text file|*.txt|Any file|*.*",0) If Len(msg)>4 NewGameINI=msg SaveSetup() setwindowtext_(WindowID(),"New Game setup - "+NewGameINI) EndIf Case #Load If Len(NewGameINI)>5 msg=OpenFileRequester("Load a Game Setup File",NewGameINI,"Ini file|*.ini|text file|*.txt|Any file|*.*",0) Else msg=OpenFileRequester("Load a Game Setup File",MainPath+"game.ini","Ini file|*.ini|text file|*.txt|Any file|*.*",0) EndIf If Len(msg)>5 NewGameINI=msg LoadGameSetup() setwindowtext_(WindowID(),"New Game setup - "+NewGameINI) EndIf Case #Exit reply=1 CloseWindow(#Window_Opts) Case #GLoad SetDefaults() Case #Help ;MessageRequester("Help","oops, not yet done",0) n=RunProgram("Notepad.exe","Setup.txt","") Case #About MessageRequester("Norm's MatchMaker","New game setup created 30sept2003 by Norm Perry",#MB_ICONINFORMATION) EndSelect ProcedureReturn reply EndProcedure ProcedureDLL NewGameSetup() ;setup the main windows loop for options display Open_Window_Opts() SetDefaults() SetForground() GetCurrentpath() quit.l=0 Repeat SetForground() Select WaitWindowEvent() Case #PB_EVENT_CLOSEWINDOW quit=1 Case #PB_EVENT_GADGET quit=HandleGameEvent(EventGadgetID()) EndSelect Until quit EndProcedure ; ExecutableFormat=Windows ; EOF