AutoWin by Galiem Vaelant30th Dec 2004 20:47
|
---|
Summary Autonomous Win-Based Menus Description This is a script based menu system with automated production of menus media and active range data with customizable colors and fonts, as well as a massive 20x20x20 top, drop, and slide menu dimensions space to work in. Code ` This code was downloaded from The Game Creators ` It is reproduced here with full permission ` http://www.thegamecreators.com `Menu Media and Active Ranges Generator (Script Parser) Rem Project: MenuMaker Rem Created: 12/21/2004 17:26:38 Rem ***** Main Source File ***** Rem Project: S(N) Rem Created: 11/24/2004 13:51:03 Rem ***** Main Source File ***** IF FILE EXIST("menumap_current.txt") DELETE FILE "menumap.txt" COPY FILE "menumap_current.txt","menumap.txt" DELETE FILE "menumap_current.txt" ENDIF SET IMAGE COLORKEY 255,0,255 `----------------------------------------------------------------------------------------------- IF PATH EXIST("Sprites") = 1 DELETE DIRECTORY "Sprites" MAKE DIRECTORY "Sprites" ENDIF OPEN TO READ 1,"menumap.txt" READ STRING 1,font$ READ STRING 1,size$ READ STRING 1,Title$ size = VAL(size$) top_dir$ = GET DIR$() IF PATH EXIST("MenMedia") = 1 DELETE DIRECTORY "MenMedia" MAKE DIRECTORY "MenMedia" SET DIR "MenMedia" ELSE MAKE DIRECTORY "MenMedia" SET DIR "MenMedia" ENDIF prep(font$,size,Title$) ` Use menu_media_count to see if the menu script has had items added or removed ` by counting the media used in displaying the menu and comparing it to the media needed ` according to the value entered in the script text file READ STRING 1,Images$ `Move working directory back to program top directory$ = GET DIR$() clipit = LEN(directory$) DEC clipit,9 directory$ = LEFT$(directory$,clipit) SET DIR directory$ name$ = "begin" tick = 0 tock = 0 tack = 0 INK RGB(0,0,0),RGB(0,0,0) menu_data_bucket() DIM total_items(1) items = 0 WHILE name$ <> "End" SET CURRENT BITMAP 0 CLS RGB(0,0,0) INK RGB(247,247,247),RGB(247,247,247) TEXT 0,0,"Reading Menus Script" TEXT 0,20,STR$(items)+" items read" WAIT 1 INC items READ STRING 1,name$ IF Left$(name$,1) = "+" tock = 0 mode = 0 INC tick clipit = LEN(name$) DEC clipit,1 name$ = RIGHT$(name$,clipit) make_menu_data(name$,mode,tick,tock,tack) ENDIF IF Left$(name$,1) = "-" tack = 0 mode = 1 INC tock clipit = LEN(name$) DEC clipit,1 name$ = RIGHT$(name$,clipit) make_menu_data(name$,mode,tick,tock,tack) ENDIF IF Left$(name$,1) = ":" mode = 2 INC tack clipit = LEN(name$) DEC clipit,1 name$ = RIGHT$(name$,clipit) make_menu_data(name$,mode,tick,tock,tack) ENDIF ENDWHILE total_items(0) = items*3 CLS RGB(0,0,0) SYNC col = 0 WHILE name$ <> "End Colors" READ STRING 1,name$ colors(col) =VAL(name$) INC col ENDWHILE makeskins() cleanup() consolidate() prep2(top_dir$) correct_script(top_dir$) EXIT FUNCTION menu_data_bucket() ` This function creates the arrays necessary to create menu data DIM menu1_filenames(20,2) as string DIM menu2_filenames(20) as string DIM menu2_filenames_selected(20,20) as string DIM menu2_filenames_highlighted(20,20) as string DIM menu3_filenames(20,20) as string DIM menu3_filenames_highlighted(20,20,20) as string DIM menu3_filenames_selected(20,20,20) as string ` Qty of items in top menu DIM menu1_qty(1) ` Qty of items in each submenu DIM menu2_qty(20) ` Qty of items in each slide out menu DIM menu3_qty(20,20) ` Name of each item in top menu where leftmost = 0 DIM menu1_name(20) as string ` Name of each item in each submenu ` Dimensions = top menu item number where leftmost = 0, slave menu item number where topmost = 0 DIM menu2_name(20,20) as string ` Name of each item in each drop down menu ` First two dimensions work the same as above ` Third dimension = position number for slide out menu item, where leftmost = 0 DIM menu3_name(20,20,20) as string ` Width of top menu buttons DIM menu1_width(1) ` Height of top menu DIM menu1_height(1) ` Width of each submenu ` Reference by tick DIM menu2_width(20) ` Width of each submenu ` Reference by tick DIM menu2_height(20) ` Height of each slide out menu ` Reference by tick, tock DIM menu3_height(20,20) ` Width of each slide out menu ` Reference by tick,tock DIM menu3_width(20,20) DIM colors(12) ENDFUNCTION FUNCTION make_menu_data(name as string,mode,tick,tock,tack) SELECT mode CASE 0: a = TEXT WIDTH(name) + 4 b = TEXT HEIGHT(name) + 2 menu1_qty(0) = tick menu1_name(menu1_qty(0)-1) = name `Menu 1 Width is used to determine size of top menu buttons, but not top menu media width IF a > menu1_width(0) menu1_width(0) = a + 4 ENDIF IF b > menu1_height(0) menu1_height(0) = b + 2 ENDIF ENDCASE CASE 1: a = TEXT WIDTH(name) + 4 b = TEXT HEIGHT(name) + 2 menu2_qty(tick-1) = tock menu2_name(tick-1,tock-1) = name IF a > menu2_width(tick-1) + 4 menu2_width(tick-1) = a + 4 ENDIF IF b > menu2_height(tick-1) + 2 menu2_height(tick-1) = b + 2 ENDIF ENDCASE CASE 2: a = TEXT WIDTH(name) + 4 b = TEXT HEIGHT(name) + 2 menu3_qty(tick-1,tock-1) = tack menu3_name(tick-1,tock-1,tack-1) = name IF a > menu3_width(tick-1,tock-1) + 4 menu3_width(tick-1,tock-1) = a + 4 ENDIF IF b > menu3_height(tick-1,tock-1) + 2 menu3_height(tick-1,tock-1) = b + 2 ENDIF ENDCASE ENDSELECT ENDFUNCTION FUNCTION prep(font as string, size,Title as string) EMPTY CHECKLIST PERFORM CHECKLIST FOR DISPLAY MODES sssx =0 sssy = 0 sssz = 0 FOR T = 1 TO CHECKLIST QUANTITY() IF CHECKLIST VALUE A(T) > sssx sssx = CHECKLIST VALUE A(T) ENDIF IF CHECKLIST VALUE B(T) > sssy sssy = CHECKLIST VALUE B(T) ENDIF IF CHECKLIST VALUE C(T) > sssz sssz = CHECKLIST VALUE C(T) ENDIF NEXT T SET WINDOW ON SET DISPLAY MODE sssx,sssy,sssz SET WINDOW TITLE "MenSys Resources" SET WINDOW LAYOUT 1,1,0 `HIDE WINDOW MAXIMIZE WINDOW SET TEXT FONT font SET TEXT SIZE size SET TEXT TRANSPARENT `CLS RGB(255,0,255) ENDFUNCTION FUNCTION makeskins() IF PATH EXIST("MenMedia") = 1 SET DIR "MenMedia" PERFORM CHECKLIST FOR FILES FOR T = 1 TO CHECKLIST QUANTITY() file$ = CHECKLIST STRING$(T) IF file$ <> "." AND file$ <> ".." AND file$ <> "to screen" DELETE FILE file$ ENDIF NEXT T ELSE MAKE DIRECTORY "MenMedia" SET DIR "MenMedia" ENDIF `Top bar media `----------------------------------------------------------------------------------------------- barwidth = SCREEN WIDTH() barheight = menu1_height(0) CREATE BITMAP 1,barwidth,barheight CLS RGB(colors(0),colors(1),colors(2)) Images = 1 a = menu1_width(0) b = menu1_height(0) ` Create top bar normal state bitmap FOR T = 1 TO menu1_qty(0) SET CURRENT BITMAP 0 CLS RGB(0,0,0) INK RGB(247,247,247),RGB(247,247,247) percentage# = (Images * 100.0)/total_items(0) TEXT 0,0,"Creating Initial Media, Percent Done: " SET CURSOR TEXT WIDTH("Creating Initial Media, Percent Done: "),0 PRINT percentage# TEXT 0,20,STR$(Images)+" Images Created Out Of "+STR$(total_items(0)) WAIT 1 SET CURRENT BITMAP 1 INK RGB(0,0,1),RGB(colors(0),colors(1),colors(2)) c = (a * (T - 1)) + a/2 d = (a * T) - 1 CENTER TEXT c,3,menu1_name(T-1) INK RGB(colors(3)-80,colors(4)-80,colors(5))-30,RGB(colors(0),colors(1),colors(2)) INK RGB(0,0,0),RGB(0,0,0) NEXT T GET IMAGE 1,0,0,barwidth,barheight,1 MAKE MEMBLOCK FROM image 1,Images OPEN TO WRITE 2,"1" WRITE MEMBLOCK 2,1 CLOSE FILE 2 DELETE MEMBLOCK 1 DELETE BITMAP 1 Images = 1 ` Create Highlighted State Bitmaps for Each Button in the Top Bar FOR T = 1 TO menu1_qty(0) SET CURRENT BITMAP 0 CLS RGB(0,0,0) INK RGB(247,247,247),RGB(247,247,247) percentage# = (Images * 100.0)/total_items(0) TEXT 0,0,"Creating Initial Media, Percent Done: " SET CURSOR TEXT WIDTH("Creating Initial Media, Percent Done: "),0 PRINT percentage# TEXT 0,20,STR$(Images)+" Images Created Out Of "+STR$(total_items(0)) WAIT 1 CREATE BITMAP 1,a,b SET CURRENT BITMAP 1 CLS RGB(colors(3),colors(4),colors(5)) INK RGB(0,0,1),RGB(colors(0),colors(1),colors(2)) c = a/2 - 1 CENTER TEXT c,2,menu1_name(T-1) INK RGB(colors(6),colors(7),colors(8)),RGB(colors(0),colors(1),colors(2)) LINE 0,b-1,a-1,b-1 LINE a-1,0,a-1,b-1 INC Images GET IMAGE Images,0,0,a,b,1 name$ = Str$(T) MAKE MEMBLOCK FROM Image 1,Images menu1_filenames(T-1,1) = ("H " + name$) OPEN TO WRITE 2,("H " + name$) WRITE MEMBLOCK 2,1 CLOSE FILE 2 DELETE MEMBLOCK 1 SET CURRENT BITMAP 0 d = a*(T-1) DELETE BITMAP 1 NEXT T ` Create Selected State Bitmaps for Each Button in the Top Bar FOR T = 1 TO menu1_qty(0) SET CURRENT BITMAP 0 CLS RGB(0,0,0) INK RGB(247,247,247),RGB(247,247,247) percentage# = (Images * 100.0)/total_items(0) TEXT 0,0,"Creating Initial Media, Percent Done: " SET CURSOR TEXT WIDTH("Creating Initial Media, Percent Done: "),0 PRINT percentage# TEXT 0,20,STR$(Images)+" Images Created Out Of "+STR$(total_items(0)) WAIT 1 CREATE BITMAP 1,a,b SET CURRENT BITMAP 1 CLS RGB(colors(9),colors(10),colors(11)) INK RGB(0,0,1),RGB(colors(0),colors(1),colors(2)) c = a/2 + 1 CENTER TEXT c,4,menu1_name(T-1) INK RGB(0,0,1),RGB(colors(0),colors(1),colors(2)) LINE 0,0,a,0 LINE 0,0,0,b INC Images GET IMAGE Images,0,0,a,b,1 name$ = STR$(T) MAKE MEMBLOCK FROM Image 1,Images menu1_filenames(T-1,2) = ("S " + name$) OPEN TO WRITE 2,("S " + name$) WRITE MEMBLOCK 2,1 CLOSE FILE 2 DELETE MEMBLOCK 1 SET CURRENT BITMAP 0 d = a*(T-1) DELETE BITMAP 1 NEXT T `Other Menus `----------------------------------------------------------------------------------------------- T = 1 W = menu1_qty(0) Drop = 1 Drophi = 1 DropSel = 1 Slide = 1 Slidehi = 1 SlideSel = 1 WHILE T <= (W) name$ = "NULL" Tub = 0 barheight = menu2_height(T-1) barwidth = menu2_width(T-1) f = barheight * menu2_qty(T-1) CREATE BITMAP 1,barwidth,f CLS RGB(colors(0),colors(1),colors(2)) U = 0 SET CURRENT BITMAP 0 CLS RGB(0,0,0) INK RGB(247,247,247),RGB(247,247,247) percentage# = (Images * 100.0)/total_items(0) TEXT 0,0,"Creating Initial Media, Percent Done: " SET CURSOR TEXT WIDTH("Creating Initial Media, Percent Done: "),0 PRINT percentage# TEXT 0,20,STR$(Images)+" Images Created Out Of "+STR$(total_items(0)) WAIT 1 SET CURRENT BITMAP 1 WHILE U <= menu2_qty(T-1) INC Tub Bob = 0 INK RGB(0,0,1),RGB(colors(0),colors(1),colors(2)) c = 2 + barheight * (U) d = (barheight * U) - 1 k = barwidth/2 CENTER TEXT k,c,menu2_name(T-1,U) INK RGB(colors(3)-80,colors(4)-80,colors(5))-30,RGB(colors(0),colors(1),colors(2)) LINE 0,d,barwidth,d INK RGB(0,0,0),RGB(0,0,0) LINE 0,d-1,barwidth,d-1 IF Tub <= menu2_qty(T-1) INC Drophi CREATE BITMAP 2,barwidth,barheight CLS RGB(colors(3),colors(4),colors(5)) INK RGB(0,0,1),RGB(colors(0),colors(1),colors(2)) CENTER TEXT k-1,2,menu2_name(T-1,U) INK RGB(colors(6),colors(7),colors(8)),RGB(colors(0),colors(1),colors(2)) LINE 0,barheight-1,barwidth-1,barheight-1 LINE barwidth-1,0,barwidth-1,barheight-1 INC Images GET IMAGE Images,0,0,barwidth,barheight,1 name$ = ("DH "+Str$(T)+" "+Str$(U)+" "+Str$(Drophi)) menu2_filenames_highlighted(T-1,U) = name$ MAKE MEMBLOCK FROM Image 2,Images OPEN TO WRITE 2,name$ WRITE MEMBLOCK 2,2 CLOSE FILE 2 DELETE MEMBLOCK 2 SET CURRENT BITMAP 0 DELETE BITMAP 2 SET CURRENT BITMAP 1 INC DropSel CREATE BITMAP 2,barwidth,barheight CLS RGB(colors(9),colors(10),colors(11)) INK RGB(0,0,1),RGB(colors(0),colors(1),colors(2)) CENTER TEXT k-1,2,menu2_name(T-1,U) INK RGB(0,0,1),RGB(colors(0),colors(1),colors(2)) LINE 0,0,barwidth-1,0 LINE 0,0,0,barheight-1 INC Images GET IMAGE Images,0,0,barwidth,barheight,1 name$ = ("DS "+Str$(T)+" "+Str$(U)+" "+Str$(Dropsel)) menu2_filenames_selected(T-1,U) = name$ MAKE MEMBLOCK FROM IMAGE 2,Images OPEN TO WRITE 2,name$ WRITE MEMBLOCK 2,2 CLOSE FILE 2 DELETE MEMBLOCK 2 SET CURRENT BITMAP 0 DELETE BITMAP 2 SET CURRENT BITMAP 1 ENDIF IF menu3_qty(T-1,U) > 0 V = 0 slideheight = menu3_height(T-1,U) slidewidth = menu3_width(T-1,U) i = slideheight * menu3_qty(T-1,U) CREATE BITMAP 2,slidewidth,i CLS RGB(colors(0),colors(1),colors(2)) WHILE V <= menu3_qty(T-1,U) SET CURRENT BITMAP 0 CLS RGB(0,0,0) INK RGB(247,247,247),RGB(247,247,247) percentage# = (Images * 100.0)/total_items(0) TEXT 0,0,"Creating Initial Media, Percent Done: " SET CURSOR TEXT WIDTH("Creating Initial Media, Percent Done: "),0 PRINT percentage# TEXT 0,20,STR$(Images)+" Images Created Out Of "+STR$(total_items(0)) WAIT 1 SET CURRENT BITMAP 2 INK RGB(0,0,1),RGB(colors(0),colors(1),colors(2)) INC Bob cc = 2 + slideheight * (V) dd = (slideheight * V) - 1 kk = slidewidth/2 CENTER TEXT kk,cc,menu3_name(T-1,U,V) INK RGB(colors(3)-80,colors(4)-80,colors(5))-30,RGB(colors(0),colors(1),colors(2)) LINE 0,dd,slidewidth,dd INK RGB(0,0,0),RGB(0,0,0) LINE 0,dd-1,slidewidth,dd-1 IF Bob <= menu3_qty(T-1,U) INC Slidehi CREATE BITMAP 3,slidewidth,slideheight CLS RGB(colors(3),colors(4),colors(5)) INK RGB(0,0,1),RGB(colors(0),colors(1),colors(2)) CENTER TEXT kk-1,2,menu3_name(T-1,U,V) INK RGB(colors(6),colors(7),colors(8)),RGB(colors(0),colors(1),colors(2)) LINE 0,slideheight-1,slidewidth-1,slideheight-1 LINE slidewidth-1,0,slidewidth-1,slideheight-1 INC Images GET IMAGE Images,0,0,slidewidth,slideheight,1 name$ = ("SH "+Str$(T)+" "+Str$(U)+" "+Str$(V)+" "+Str$(Slidehi)) menu3_filenames_highlighted(T-1,U,V) = name$ MAKE MEMBLOCK FROM Image 2,Images OPEN TO WRITE 2,name$ WRITE MEMBLOCK 2,2 CLOSE FILE 2 DELETE MEMBLOCK 2 SET CURRENT BITMAP 0 DELETE BITMAP 3, SET CURRENT BITMAP 2 INC SlideSel CREATE BITMAP 3,slidewidth,slideheight CLS RGB(colors(9),colors(10),colors(11)) INK RGB(0,0,1),RGB(colors(0),colors(1),colors(2)) CENTER TEXT kk-1,2,menu3_name(T-1,U,V) INK RGB(0,0,1),RGB(colors(0),colors(1),colors(2)) LINE 0,0,slidewidth-1,0 LINE 0,0,0,slideheight-1 INC Images GET IMAGE Images,0,0,slidewidth,slideheight,1 name$ = ("SS "+Str$(T)+" "+Str$(U)+" "+Str$(V)+" "+Str$(Slidesel)) menu3_filenames_selected(T-1,U,V) = name$ MAKE MEMBLOCK FROM Image 2,Images OPEN TO WRITE 2,name$ WRITE MEMBLOCK 2,2 CLOSE FILE 2 DELETE MEMBLOCK 2 SET CURRENT BITMAP 0 DELETE BITMAP 3 SET CURRENT BITMAP 2 ENDIF INC V ENDWHILE INC slide_out name$ = ("Sl "+Str$(T)+" "+Str$(U)+" "+STR$(V)) menu3_filenames(T-1,U) = name$ INC Images GET IMAGE Images,0,0,slidewidth,i,1 MAKE MEMBLOCK FROM Image 1,Images OPEN TO WRITE 2,name$ WRITE MEMBLOCK 2,1 CLOSE FILE 2 DELETE MEMBLOCK 1 DELETE BITMAP 2 SYNC SET CURRENT BITMAP 1 ENDIF INC U ENDWHILE LINE 0,0,barwidth-1,0 LINE 0,f,barwidth-1,f LINE 0,0,0,f-1 LINE barwidth-1,0,barwidth-1,f-1 INC Images GET IMAGE Images,0,0,barwidth,f,1 name$ = ("D "+Str$(T)) menu2_filenames(T-1) = name$ MAKE MEMBLOCK FROM Image 1,Images OPEN TO WRITE 2,name$ WRITE MEMBLOCK 2,1 CLOSE FILE 2 DELETE MEMBLOCK 1 DELETE BITMAP 1 SET CURRENT BITMAP 0 SYNC INC Drop INC T ENDWHILE directory$ = GET DIR$() clipit = LEN(directory$) DEC clipit,9 directory$ = LEFT$(directory$,clipit) SET DIR directory$ CLOSE FILE 1 EMPTY CHECKLIST ` The code below calculates and stores the values representing the left, upper, right, and lower ` boundaries of a menu item onscreen to be retrieved by a function in the main process of the ` application. These ranges are compared to mouse cursor coordinates onscreen to determine if ` the user has placed their cursor in an area that will trigger the display of a menu item as ` highlighted, selected (upon click) or activation (upon click and release). IF PATH EXIST("Ranges") = 1 SET DIR "Ranges" PERFORM CHECKLIST FOR FILES FOR T = 1 TO CHECKLIST QUANTITY() file$ = CHECKLIST STRING$(T) IF file$ <> "." AND file$ <> ".." AND file$ <> "to screen" DELETE FILE file$ ENDIF NEXT T ELSE MAKE DIRECTORY "Ranges" SET DIR "Ranges" ENDIF `------------------------- DIM menu1_ranges(20,4) DIM menu2_ranges(20,20,4) DIM menu3_ranges(20,20,20,4) a = menu1_width(0) b = menu1_height(0) done = 0 ` Menu Bar Ranges FOR S = 1 TO menu1_qty(0) SET CURRENT BITMAP 0 CLS RGB(0,0,0) INK RGB(247,247,247),RGB(247,247,247) percentage# = (done*100.0)/(total_items(0)/3) TEXT 0,0,"Creating Range Data, Percent Done: " SET CURSOR TEXT WIDTH("Creating Range Data, Percent Done: "),0 PRINT percentage# TEXT 0,20,STR$(done)+" Items Ranges" WAIT 1 `First top menu item = 1, second = 2, and so on Sbuff = S IF Sbuff < 10 S$ = "0"+STR$(Sbuff) ELSE S$ = STR$(Sbuff) ENDIF OPEN TO WRITE 2,S$ c = menu2_width(S-1) d = menu2_height(S-1) menu1_ranges(S-1,0) = (S - 1) * a `left WRITE STRING 2,STR$(menu1_ranges(S-1,0)) menu1_ranges(S-1,1) = 0 `top WRITE STRING 2,STR$(menu1_ranges(S-1,1)) menu1_ranges(S-1,2) = S*a `right WRITE STRING 2,STR$(menu1_ranges(S-1,2)) menu1_ranges(S-1,3) = b `bottom WRITE STRING 2,STR$(menu1_ranges(S-1,3)) WRITE STRING 2,"1" WRITE STRING 2,menu1_filenames(S-1,1) WRITE STRING 2,menu1_filenames(S-1,2) CLOSE FILE 2 INC done ` Drop down menu ranges FOR T = 1 TO menu2_qty(S-1) SET CURRENT BITMAP 0 CLS RGB(0,0,0) INK RGB(247,247,247),RGB(247,247,247) percentage# = (done*100.0)/(total_items(0)/3) TEXT 0,0,"Creating Range Data, Percent Done: " SET CURSOR TEXT WIDTH("Creating Range Data, Percent Done: "),0 PRINT percentage# TEXT 0,20,STR$(done)+" Items Ranges" WAIT 1 `First top menu item, first drop down menu item = 101 `Second top menu item, first drop down menu item = 202 `Fiftieth top menu item, fiftieth drop down menu item = 2020 `= 1,01; 2,02; 20,20 `The leading value in a set, and thus the leading character in a file, cannot be zero V = (S*100 + T) Sbuff = S IF Sbuff < 10 T$ = "0"+STR$(V) ELSE T$ = STR$(V) ENDIF OPEN TO WRITE 2,T$ e = menu3_width(S-1,T-1) f = menu3_height(S-1,T-1) menu2_ranges(S-1,T-1,0) = (S - 1) * a WRITE STRING 2,STR$(menu2_ranges(S-1,T-1,0)) menu2_ranges(S-1,T-1,1) = (b + 1) + (d * (T-1)) WRITE STRING 2,STR$(menu2_ranges(S-1,T-1,1)) menu2_ranges(S-1,T-1,2) = menu2_ranges(S-1,T-1,0) + c WRITE STRING 2,STR$(menu2_ranges(S-1,T-1,2)) menu2_ranges(S-1,T-1,3) = (b + 1) + (d * T) WRITE STRING 2,STR$(menu2_ranges(S-1,T-1,3)) WRITE STRING 2,menu2_filenames(S-1) WRITE STRING 2,menu2_filenames_highlighted(S-1,T-1) WRITE STRING 2,menu2_filenames_selected(S-1,T-1) CLOSE FILE 2 INC done ` Slide out menu ranges FOR U = 1 TO menu3_qty(S-1,T-1) SET CURRENT BITMAP 0 CLS RGB(0,0,0) INK RGB(247,247,247),RGB(247,247,247) percentage# = (done*100.0)/(total_items(0)/3) TEXT 0,0,"Creating Range Data, Percent Done: " SET CURSOR TEXT WIDTH("Creating Range Data, Percent Done: "),0 PRINT percentage# TEXT 0,20,STR$(done)+" Items Ranges" WAIT 1 `First top menu item, first drop down menu item, first slide out menu item = 10101 `Second top menu item, second drop down menu item, second slide out menu item = 20202 `Fiftieth top menu item, fiftieth drop down menu item, fiftieth slide out menu item = 202020 `= 1,01,01; 2,02,02; 20,20,20... Remove the commas for the actual value of the file name `The leading value in a set, and thus the leading character in a file, cannot be zero W = (S * 10000 + T * 100 + U) Sbuff = S IF Sbuff < 10 U$ = "0"+STR$(W) ELSE U$ = STR$(W) ENDIF OPEN TO WRITE 2,U$ menu3_ranges(S-1,T-1,U-1,0) = menu2_ranges(S-1,T-1,2) + 1 WRITE STRING 2,STR$(menu3_ranges(S-1,T-1,U-1,0)) menu3_ranges(S-1,T-1,U-1,1) = menu2_ranges(S-1,T-1,1) + (f * (U - 1)) WRITE STRING 2,STR$(menu3_ranges(S-1,T-1,U-1,1)) menu3_ranges(S-1,T-1,U-1,2) = menu3_ranges(S-1,T-1,U-1,0) + e WRITE STRING 2,STR$(menu3_ranges(S-1,T-1,U-1,2)) menu3_ranges(S-1,T-1,U-1,3) = menu2_ranges(S-1,T-1,1) + (f * U) WRITE STRING 2,STR$(menu3_ranges(S-1,T-1,U-1,3)) WRITE STRING 2,menu3_filenames(S-1,T-1) WRITE STRING 2,menu3_filenames_highlighted(S-1,T-1,U-1) WRITE STRING 2,menu3_filenames_selected(S-1,T-1,U-1) CLOSE FILE 2 INC done NEXT U NEXT T NEXT S directory$ = GET DIR$() clipit = LEN(directory$) DEC clipit,7 directory$ = LEFT$(directory$,clipit) SET DIR directory$ ENDFUNCTION FUNCTION cleanup() UNDIM menu3_ranges() UNDIM menu2_ranges() UNDIM menu1_ranges() UNDIM menu1_qty() UNDIM menu2_qty() UNDIM menu3_qty() UNDIM menu1_filenames() UNDIM menu2_filenames() UNDIM menu3_filenames() UNDIM menu2_filenames_selected() UNDIM menu3_filenames_selected() UNDIM menu2_filenames_highlighted() UNDIM menu3_filenames_highlighted() UNDIM menu1_name() UNDIM menu2_name() UNDIM menu3_name() UNDIM menu1_height() UNDIM menu2_height() UNDIM menu3_height() UNDIM menu1_width() UNDIM menu2_width() UNDIM menu3_width() UNDIM total_items() ENDFUNCTION FUNCTION consolidate() current$ = GET DIR$() SET DIR "MenMedia" MAKE DIRECTORY "to screen" PERFORM CHECKLIST FOR FILES FOR T = 1 TO CHECKLIST QUANTITY() file$ = CHECKLIST STRING$(T) COPY FILE file$,"to screen\"+file$ DELETE FILE file$ NEXT T EMPTY CHECKLIST SET DIR current$ SET DIR "Ranges" PERFORM CHECKLIST FOR FILES SET DIR current$ FOR T = 1 TO CHECKLIST QUANTITY() file$ = CHECKLIST STRING$(T) COPY FILE "Ranges\"+file$,"MenMedia\"+file$ DELETE FILE "Ranges\"+file$ NEXT T DELETE DIRECTORY "Ranges" ENDFUNCTION FUNCTION prep2(top_dir$) SET DIR "MenMedia" PERFORM CHECKLIST FOR FILES DIM menu1_ranges(20,10) DIM menu2_ranges(20,20,10) DIM menu3_ranges(20,20,20,10) DIM menu1_names(20,3) as string DIM menu2_names(20,20,3) as string DIM menu3_names(20,20,20,3) as string framecount = 0 image = 1 FOR T = 1 TO CHECKLIST QUANTITY() - 1 SET DIR top_dir$ SET DIR "MenMedia" IF (T > 2) file$ = CHECKLIST STRING$(T) OPEN TO READ 1,file$ READ STRING 1,left_bound$ READ STRING 1,top_bound$ READ STRING 1,right_bound$ READ STRING 1,bottom_bound$ READ STRING 1,normal_state$ READ STRING 1,highlighted_state$ READ STRING 1,selected_state$ digits = LEN(file$) SELECT digits CASE 2: CLS RGB(255,0,255) x = VAL(file$) menu1_ranges(x-1,0) = VAL(left_bound$) menu1_ranges(x-1,1) = VAL(top_bound$) menu1_ranges(x-1,2) = VAL(right_bound$) menu1_ranges(x-1,3) = VAL(bottom_bound$) menu1_names(x-1,0) = normal_state$ menu1_names(x-1,1) = highlighted_state$ menu1_names(x-1,2) = selected_state$ IF (x-1) = 0 menu1_ranges(x-1,4) = image OPEN TO READ 2,"to screen\"+normal_state$ READ MEMBLOCK 2,1 MAKE IMAGE FROM MEMBLOCK image,1 CLOSE FILE 2 DELETE MEMBLOCK 1 PASTE IMAGE image,menu1_ranges(x-1,0),menu1_ranges(x-1,1) INK RGB(255,0,0),RGB(255,0,0) INK RGB(0,0,0),RGB(0,0,0) SYNC WAIT 10 INC image cur_dir$ = GET DIR$() SET DIR top_dir$ SELECT PATH EXIST("Sprite Data") CASE 0: MAKE DIRECTORY "Sprite Data" SET DIR "Sprite Data" INC framecount menu1_ranges(x-1,8) = framecount CREATE BITMAP 2, SCREEN WIDTH(), SCREEN HEIGHT() SET CURRENT BITMAP 0 COPY BITMAP 0,2 OPEN TO WRITE 2,Str$(framecount) MAKE MEMBLOCK FROM BITMAP 2,2 WRITE MEMBLOCK 2,2 CLOSE FILE 2 DELETE MEMBLOCK 2 DELETE BITMAP 2 SET DIR cur_dir$ ENDCASE CASE 1: SET DIR "Sprite Data" INC framecount menu1_ranges(x-1,8) = framecount CREATE BITMAP 2, SCREEN WIDTH(), SCREEN HEIGHT() SET CURRENT BITMAP 0 COPY BITMAP 0,2 IF PATH EXIST(Str$(framecount)) = 1 DELETE FILE Str$(framecount) ENDIF IF FILE OPEN(2) = 1 CLOSE FILE 2 ENDIF OPEN TO WRITE 2,Str$(framecount) MAKE MEMBLOCK FROM BITMAP 2,2 WRITE MEMBLOCK 2,2 CLOSE FILE 2 DELETE MEMBLOCK 2 DELETE BITMAP 2 SET DIR cur_dir$ ENDCASE ENDSELECT ELSE menu1_ranges(x-1,4) = image OPEN TO READ 2,"to screen\"+normal_state$ READ MEMBLOCK 2,1 MAKE IMAGE FROM MEMBLOCK image,1 CLOSE FILE 2 DELETE MEMBLOCK 1 PASTE IMAGE image,menu1_ranges(0,0),menu1_ranges(0,1) INK RGB(255,0,0),RGB(255,0,0) INK RGB(0,0,0),RGB(0,0,0) SYNC WAIT 10 INC image ENDIF cur_dir$ = GET DIR$() SET DIR top_dir$ SELECT PATH EXIST("Sprite Data") CASE 0: MAKE DIRECTORY "Sprite Data" SET DIR "Sprite Data" INC framecount menu1_ranges(x-1,8) = framecount CREATE BITMAP 2, SCREEN WIDTH(), SCREEN HEIGHT() SET CURRENT BITMAP 0 COPY BITMAP 0,2 IF PATH EXIST(Str$(framecount)) = 1 DELETE FILE Str$(framecount) ENDIF IF FILE OPEN(2) = 1 CLOSE FILE 2 ENDIF OPEN TO WRITE 2,Str$(framecount) MAKE MEMBLOCK FROM BITMAP 2,2 WRITE MEMBLOCK 2,2 CLOSE FILE 2 DELETE MEMBLOCK 2 DELETE BITMAP 2 SET DIR cur_dir$ ENDCASE CASE 1: SET DIR "Sprite Data" INC framecount menu1_ranges(x-1,8) = framecount CREATE BITMAP 2, SCREEN WIDTH(), SCREEN HEIGHT() SET CURRENT BITMAP 0 COPY BITMAP 0,2 IF PATH EXIST(Str$(framecount)) = 1 DELETE FILE Str$(framecount) ENDIF IF FILE OPEN(2) = 1 CLOSE FILE 2 ENDIF OPEN TO WRITE 2,Str$(framecount) MAKE MEMBLOCK FROM BITMAP 2,2 WRITE MEMBLOCK 2,2 CLOSE FILE 2 DELETE MEMBLOCK 2 DELETE BITMAP 2 SET DIR cur_dir$ ENDCASE ENDSELECT menu1_ranges(x-1,5) = image OPEN TO READ 2,"to screen\" + highlighted_state$ READ MEMBLOCK 2,1 MAKE IMAGE FROM MEMBLOCK image,1 CLOSE FILE 2 DELETE MEMBLOCK 1 PASTE IMAGE image,menu1_ranges(x-1,0),menu1_ranges(x-1,1) INK RGB(255,0,0),RGB(255,0,0) INK RGB(0,0,0),RGB(0,0,0) SYNC WAIT 10 INC image cur_dir$ = GET DIR$() SET DIR top_dir$ SELECT PATH EXIST("Sprite Data") CASE 0: MAKE DIRECTORY "Sprite Data" SET DIR "Sprite Data" INC framecount menu1_ranges(x-1,9) = framecount CREATE BITMAP 2, SCREEN WIDTH(), SCREEN HEIGHT() SET CURRENT BITMAP 0 COPY BITMAP 0,2 IF PATH EXIST(Str$(framecount)) = 1 DELETE FILE Str$(framecount) ENDIF IF FILE OPEN(2) = 1 CLOSE FILE 2 ENDIF OPEN TO WRITE 2,Str$(framecount) MAKE MEMBLOCK FROM BITMAP 2,2 WRITE MEMBLOCK 2,2 CLOSE FILE 2 DELETE MEMBLOCK 2 DELETE BITMAP 2 SET DIR cur_dir$ ENDCASE CASE 1: SET DIR "Sprite Data" INC framecount menu1_ranges(x-1,9) = framecount CREATE BITMAP 2, SCREEN WIDTH(), SCREEN HEIGHT() SET CURRENT BITMAP 0 COPY BITMAP 0,2 IF PATH EXIST(Str$(framecount)) = 1 DELETE FILE Str$(framecount) ENDIF IF FILE OPEN(2) = 1 CLOSE FILE 2 ENDIF OPEN TO WRITE 2,Str$(framecount) MAKE MEMBLOCK FROM BITMAP 2,2 WRITE MEMBLOCK 2,2 CLOSE FILE 2 DELETE MEMBLOCK 2 DELETE BITMAP 2 SET DIR cur_dir$ ENDCASE ENDSELECT menu1_ranges(x-1,6) = image OPEN TO READ 2,"to screen\"+selected_state$ READ MEMBLOCK 2,1 MAKE IMAGE FROM MEMBLOCK image,1 CLOSE FILE 2 DELETE MEMBLOCK 1 PASTE IMAGE image,menu1_ranges(x-1,0),menu1_ranges(x-1,1) INK RGB(255,0,0),RGB(255,0,0) INK RGB(0,0,0),RGB(0,0,0) SYNC WAIT 10 INC image cur_dir$ = GET DIR$() SET DIR top_dir$ SELECT PATH EXIST("Sprite Data") CASE 0: MAKE DIRECTORY "Sprite Data" SET DIR "Sprite Data" INC framecount menu1_ranges(x-1,10) = framecount CREATE BITMAP 2, SCREEN WIDTH(), SCREEN HEIGHT() SET CURRENT BITMAP 0 COPY BITMAP 0,2 IF PATH EXIST(Str$(framecount)) = 1 DELETE FILE Str$(framecount) ENDIF IF FILE OPEN(2) = 1 CLOSE FILE 2 ENDIF OPEN TO WRITE 2,Str$(framecount) MAKE MEMBLOCK FROM BITMAP 2,2 WRITE MEMBLOCK 2,2 CLOSE FILE 2 DELETE MEMBLOCK 2 DELETE BITMAP 2 SET DIR cur_dir$ ENDCASE CASE 1: SET DIR "Sprite Data" INC framecount menu1_ranges(x-1,10) = framecount CREATE BITMAP 2, SCREEN WIDTH(), SCREEN HEIGHT() SET CURRENT BITMAP 0 COPY BITMAP 0,2 IF PATH EXIST(Str$(framecount)) = 1 DELETE FILE Str$(framecount) ENDIF IF FILE OPEN(2) = 1 CLOSE FILE 2 ENDIF OPEN TO WRITE 2,Str$(framecount) MAKE MEMBLOCK FROM BITMAP 2,2 WRITE MEMBLOCK 2,2 CLOSE FILE 2 DELETE MEMBLOCK 2 DELETE BITMAP 2 SET DIR cur_dir$ ENDCASE ENDSELECT SET DIR top_dir$ SET DIR "Sprite Data" CREATE BITMAP 2,SCREEN WIDTH(),SCREEN HEIGHT() filename$ = file$ OPEN TO READ 2,str$(framecount - 2) READ MEMBLOCK 2,2 MAKE BITMAP FROM MEMBLOCK 3,2 COPY BITMAP 3,0,0,SCREEN WIDTH(),SCREEN HEIGHT(),2,0,0,SCREEN WIDTH(),SCREEN HEIGHT() DELETE MEMBLOCK 2 DELETE BITMAP 3 CLOSE FILE 2 CREATE BITMAP 3,SCREEN WIDTH(),SCREEN HEIGHT() OPEN TO READ 2,str$(framecount - 1) READ MEMBLOCK 2,2 MAKE BITMAP FROM MEMBLOCK 4,2 COPY BITMAP 4,0,0,SCREEN WIDTH(),SCREEN HEIGHT(),3,0,0,SCREEN WIDTH(),SCREEN HEIGHT() DELETE MEMBLOCK 2 DELETE BITMAP 4 CLOSE FILE 2 CREATE BITMAP 4,SCREEN WIDTH(),SCREEN HEIGHT() OPEN TO READ 2,str$(framecount) READ MEMBLOCK 2,2 MAKE BITMAP FROM MEMBLOCK 5,2 COPY BITMAP 5,0,0,SCREEN WIDTH(),SCREEN HEIGHT(),4,0,0,SCREEN WIDTH(),SCREEN HEIGHT() DELETE MEMBLOCK 2 DELETE BITMAP 5 CLOSE FILE 2 SET DIR top_dir$ IF PATH EXIST("Sprites") = 1 SET DIR "Sprites" SET CURRENT BITMAP 2 GET IMAGE image+1,0,0,1280,SCREEN HEIGHT(),1 SAVE IMAGE filename$+".bmp",image+1 CLOSE FILE 2 DELETE BITMAP 2 DELETE IMAGE image+1 SET CURRENT BITMAP 3 GET IMAGE image+2,0,0,1280,SCREEN HEIGHT(),1 SAVE IMAGE "H"+filename$+".bmp",image+2 CLOSE FILE 2 DELETE BITMAP 3 DELETE IMAGE image+2 SET CURRENT BITMAP 4 GET IMAGE image+3,0,0,1280,SCREEN HEIGHT(),1 SAVE IMAGE "S"+filename$+".bmp",image+3 CLOSE FILE 2 DELETE BITMAP 4 DELETE IMAGE image+3 ELSE MAKE DIRECTORY "Sprites" SET DIR "Sprites" SET CURRENT BITMAP 2 GET IMAGE image+1,0,0,1280,SCREEN HEIGHT(),1 SAVE IMAGE filename$+".bmp",image+1 CLOSE FILE 2 DELETE BITMAP 2 DELETE IMAGE image+1 SET CURRENT BITMAP 3 GET IMAGE image+2,0,0,1280,SCREEN HEIGHT(),1 SAVE IMAGE "H"+filename$+".bmp",image+2 CLOSE FILE 2 DELETE BITMAP 3 DELETE IMAGE image+2 SET CURRENT BITMAP 4 GET IMAGE image+3,0,0,1280,SCREEN HEIGHT(),1 SAVE IMAGE "S"+filename$+".bmp",image+3 CLOSE FILE 2 DELETE BITMAP 4 DELETE IMAGE image+3 ENDIF SET DIR cur_dir$ ENDCASE CASE 4: CLS RGB(255,0,255) x$ = LEFT$(file$,2) y$ = RIGHT$(file$,2) x = VAL(x$) - 1 y = VAL(y$) - 1 PASTE IMAGE 1,0,0 PASTE IMAGE menu1_ranges(x,6),menu1_ranges(x,0),menu1_ranges(x,1) menu2_ranges(x,y,0) = VAL(left_bound$) menu2_ranges(x,y,1) = VAL(top_bound$) menu2_ranges(x,y,2) = VAL(right_bound$) menu2_ranges(x,y,3) = VAL(bottom_bound$) menu2_names(x,y,0) = normal_state$ menu2_names(x,y,1) = highlighted_state$ menu2_names(x,y,2) = selected_state$ menu2_ranges(x,y,4) = image OPEN TO READ 2,"to screen\" + normal_state$ READ MEMBLOCK 2,1 MAKE IMAGE FROM MEMBLOCK image,1 CLOSE FILE 2 DELETE MEMBLOCK 1 PASTE IMAGE image,menu2_ranges(x,y,0),menu2_ranges(0,0,1) INK RGB(255,0,0),RGB(255,0,0) INK RGB(0,0,0),RGB(0,0,0) SYNC WAIT 10 INC image cur_dir$ = GET DIR$() SET DIR top_dir$ SELECT PATH EXIST("Sprite Data") CASE 0: MAKE DIRECTORY "Sprite Data" SET DIR "Sprite Data" INC framecount menu2_ranges(x,y,8) = framecount CREATE BITMAP 2, SCREEN WIDTH(), SCREEN HEIGHT() SET CURRENT BITMAP 0 COPY BITMAP 0,2 IF PATH EXIST(Str$(framecount)) = 1 DELETE FILE Str$(framecount) ENDIF IF FILE OPEN(2) = 1 CLOSE FILE 2 ENDIF OPEN TO WRITE 2,Str$(framecount) MAKE MEMBLOCK FROM BITMAP 2,2 WRITE MEMBLOCK 2,2 CLOSE FILE 2 DELETE MEMBLOCK 2 DELETE BITMAP 2 SET DIR cur_dir$ ENDCASE CASE 1: SET DIR "Sprite Data" INC framecount menu2_ranges(x,y,8) = framecount CREATE BITMAP 2, SCREEN WIDTH(), SCREEN HEIGHT() SET CURRENT BITMAP 0 COPY BITMAP 0,2 IF PATH EXIST(Str$(framecount)) = 1 DELETE FILE Str$(framecount) ENDIF IF FILE OPEN(2) = 1 CLOSE FILE 2 ENDIF OPEN TO WRITE 2,Str$(framecount) MAKE MEMBLOCK FROM BITMAP 2,2 WRITE MEMBLOCK 2,2 CLOSE FILE 2 DELETE MEMBLOCK 2 DELETE BITMAP 2 SET DIR cur_dir$ ENDCASE ENDSELECT menu2_ranges(x,y,5) = image OPEN TO READ 2,"to screen\"+highlighted_state$ READ MEMBLOCK 2,1 MAKE IMAGE FROM MEMBLOCK image,1 CLOSE FILE 2 PASTE IMAGE image,menu2_ranges(x,y,0),menu2_ranges(x,y,1) INK RGB(255,0,0),RGB(255,0,0) INK RGB(0,0,0),RGB(0,0,0) SYNC WAIT 10 INC image cur_dir$ = GET DIR$() SET DIR top_dir$ SELECT PATH EXIST("Sprite Data") CASE 0: MAKE DIRECTORY "Sprite Data" SET DIR "Sprite Data" INC framecount menu2_ranges(x,y,9) = framecount CREATE BITMAP 2, SCREEN WIDTH(), SCREEN HEIGHT() SET CURRENT BITMAP 0 COPY BITMAP 0,2 IF PATH EXIST(Str$(framecount)) = 1 DELETE FILE Str$(framecount) ENDIF IF FILE OPEN(2) = 1 CLOSE FILE 2 ENDIF OPEN TO WRITE 2,Str$(framecount) MAKE MEMBLOCK FROM BITMAP 2,2 WRITE MEMBLOCK 2,2 CLOSE FILE 2 DELETE MEMBLOCK 2 DELETE BITMAP 2 SET DIR cur_dir$ ENDCASE CASE 1: SET DIR "Sprite Data" INC framecount menu2_ranges(x,y,9) = framecount CREATE BITMAP 2, SCREEN WIDTH(), SCREEN HEIGHT() SET CURRENT BITMAP 0 COPY BITMAP 0,2 IF PATH EXIST(Str$(framecount)) = 1 DELETE FILE Str$(framecount) ENDIF IF FILE OPEN(2) = 1 CLOSE FILE 2 ENDIF OPEN TO WRITE 2,Str$(framecount) MAKE MEMBLOCK FROM BITMAP 2,2 WRITE MEMBLOCK 2,2 CLOSE FILE 2 DELETE MEMBLOCK 2 DELETE BITMAP 2 SET DIR cur_dir$ ENDCASE ENDSELECT menu2_ranges(x,y,6) = image OPEN TO READ 2,"to screen\"+selected_state$ READ MEMBLOCK 2,1 MAKE IMAGE FROM MEMBLOCK image,1 CLOSE FILE 2 DELETE MEMBLOCK 1 PASTE IMAGE image,menu2_ranges(x,y,0),menu2_ranges(x,y,1) INK RGB(255,0,0),RGB(255,0,0) INK RGB(0,0,0),RGB(0,0,0) SYNC WAIT 10 INC image cur_dir$ = GET DIR$() SET DIR top_dir$ SELECT PATH EXIST("Sprite Data") CASE 0: MAKE DIRECTORY "Sprite Data" SET DIR "Sprite Data" INC framecount menu2_ranges(x,y,10) = framecount CREATE BITMAP 2, SCREEN WIDTH(), SCREEN HEIGHT() SET CURRENT BITMAP 0 COPY BITMAP 0,2 IF PATH EXIST(Str$(framecount)) = 1 DELETE FILE Str$(framecount) ENDIF IF FILE OPEN(2) = 1 CLOSE FILE 2 ENDIF OPEN TO WRITE 2,Str$(framecount) MAKE MEMBLOCK FROM BITMAP 2,2 WRITE MEMBLOCK 2,2 DELETE MEMBLOCK 2 DELETE BITMAP 2 CLOSE FILE 2 SET DIR cur_dir$ ENDCASE CASE 1: SET DIR "Sprite Data" INC framecount menu2_ranges(x,y,10) = framecount CREATE BITMAP 2, SCREEN WIDTH(), SCREEN HEIGHT() SET CURRENT BITMAP 0 COPY BITMAP 0,2 IF PATH EXIST(Str$(framecount)) = 1 DELETE FILE Str$(framecount) ENDIF IF FILE OPEN(2) = 1 CLOSE FILE 2 ENDIF OPEN TO WRITE 2,Str$(framecount) MAKE MEMBLOCK FROM BITMAP 2,2 WRITE MEMBLOCK 2,2 CLOSE FILE 2 DELETE MEMBLOCK 2 DELETE BITMAP 2 SET DIR cur_dir$ ENDCASE ENDSELECT SET DIR top_dir$ SET DIR "Sprite Data" CREATE BITMAP 2,SCREEN WIDTH(),SCREEN HEIGHT() filename$ = file$ OPEN TO READ 2,str$(framecount - 2) READ MEMBLOCK 2,2 MAKE BITMAP FROM MEMBLOCK 3,2 COPY BITMAP 3,0,0,SCREEN WIDTH(),SCREEN HEIGHT(),2,0,0,SCREEN WIDTH(),SCREEN HEIGHT() DELETE MEMBLOCK 2 DELETE BITMAP 3 CLOSE FILE 2 CREATE BITMAP 3,SCREEN WIDTH(),SCREEN HEIGHT() OPEN TO READ 2,str$(framecount - 1) READ MEMBLOCK 2,2 MAKE BITMAP FROM MEMBLOCK 4,2 COPY BITMAP 4,0,0,SCREEN WIDTH(),SCREEN HEIGHT(),3,0,0,SCREEN WIDTH(),SCREEN HEIGHT() DELETE MEMBLOCK 2 DELETE BITMAP 4 CLOSE FILE 2 CREATE BITMAP 4,SCREEN WIDTH(),SCREEN HEIGHT() OPEN TO READ 2,str$(framecount) READ MEMBLOCK 2,2 MAKE BITMAP FROM MEMBLOCK 5,2 COPY BITMAP 5,0,0,SCREEN WIDTH(),SCREEN HEIGHT(),4,0,0,SCREEN WIDTH(),SCREEN HEIGHT() DELETE MEMBLOCK 2 DELETE BITMAP 5 CLOSE FILE 2 SET DIR top_dir$ IF PATH EXIST("Sprites") = 1 SET DIR "Sprites" SET CURRENT BITMAP 2 GET IMAGE image+1,0,0,1280,SCREEN HEIGHT(),1 SAVE IMAGE filename$+".bmp",image+1 CLOSE FILE 2 DELETE BITMAP 2 DELETE IMAGE image+1 SET CURRENT BITMAP 3 GET IMAGE image+2,0,0,1280,SCREEN HEIGHT(),1 SAVE IMAGE "H"+filename$+".bmp",image+2 CLOSE FILE 2 DELETE BITMAP 3 DELETE IMAGE image+2 SET CURRENT BITMAP 4 GET IMAGE image+3,0,0,1280,SCREEN HEIGHT(),1 SAVE IMAGE "S"+filename$+".bmp",image+3 CLOSE FILE 2 DELETE BITMAP 4 DELETE IMAGE image+3 ELSE MAKE DIRECTORY "Sprites" SET DIR "Sprites" SET CURRENT BITMAP 2 GET IMAGE image+1,0,0,1280,SCREEN HEIGHT(),1 SAVE IMAGE filename$+".bmp",image+1 CLOSE FILE 2 DELETE BITMAP 2 DELETE IMAGE image+1 SET CURRENT BITMAP 3 GET IMAGE image+2,0,0,1280,SCREEN HEIGHT(),1 SAVE IMAGE "H"+filename$+".bmp",image+2 CLOSE FILE 2 DELETE BITMAP 3 DELETE IMAGE image+2 SET CURRENT BITMAP 4 GET IMAGE image+3,0,0,1280,SCREEN HEIGHT(),1 SAVE IMAGE "S"+filename$+".bmp",image+3 CLOSE FILE 2 DELETE BITMAP 4 DELETE IMAGE image+3 ENDIF SET DIR cur_dir$ ENDCASE CASE 6: x$ = LEFT$(file$,2) z$ = RIGHT$(file$,2) x2$ = LEFT$(file$,4) y$ = RIGHT$(file$,2) x = VAL(x$) - 1 y = VAL(y$) - 1 z = VAL(z$) - 1 menu3_ranges(x,y,z,0) = VAL(left_bound$) menu3_ranges(x,y,z,1) = VAL(top_bound$) menu3_ranges(x,y,z,2) = VAL(right_bound$) menu3_ranges(x,y,z,3) = VAL(bottom_bound$) menu3_names(x,y,z,0) = normal_state$ menu3_names(x,y,z,1) = highlighted_state$ menu3_names(x,y,z,2) = selected_state$ menu3_ranges(x,y,z,4) = image OPEN TO READ 2,"to screen\"+normal_state$ READ MEMBLOCK 2,1 MAKE IMAGE FROM MEMBLOCK image,1 CLOSE FILE 2 DELETE MEMBLOCK 1 PASTE IMAGE image,menu3_ranges(x,y,z,0),menu3_ranges(x,0,0,1) INK RGB(255,0,0),RGB(255,0,0) INK RGB(0,0,0),RGB(0,0,0) SYNC WAIT 10 INC image cur_dir$ = GET DIR$() SET DIR top_dir$ SELECT PATH EXIST("Sprite Data") CASE 0: MAKE DIRECTORY "Sprite Data" SET DIR "Sprite Data" INC framecount menu3_ranges(x,y,z,8) = framecount CREATE BITMAP 2, SCREEN WIDTH(), SCREEN HEIGHT() SET CURRENT BITMAP 0 COPY BITMAP 0,2 IF PATH EXIST(Str$(framecount)) = 1 DELETE FILE Str$(framecount) ENDIF IF FILE OPEN(2) = 1 CLOSE FILE 2 ENDIF OPEN TO WRITE 2,Str$(framecount) MAKE MEMBLOCK FROM BITMAP 2,2 WRITE MEMBLOCK 2,2 CLOSE FILE 2 DELETE MEMBLOCK 2 DELETE BITMAP 2 SET DIR cur_dir$ ENDCASE CASE 1: SET DIR "Sprite Data" INC framecount menu3_ranges(x,y,z,8) = framecount CREATE BITMAP 2, SCREEN WIDTH(), SCREEN HEIGHT() SET CURRENT BITMAP 0 COPY BITMAP 0,2 IF PATH EXIST(Str$(framecount)) = 1 DELETE FILE Str$(framecount) ENDIF IF FILE OPEN(2) = 1 CLOSE FILE 2 ENDIF OPEN TO WRITE 2,Str$(framecount) MAKE MEMBLOCK FROM BITMAP 2,2 WRITE MEMBLOCK 2,2 CLOSE FILE 2 DELETE MEMBLOCK 2 DELETE BITMAP 2 SET DIR cur_dir$ ENDCASE ENDSELECT menu3_ranges(x,y,z,5) = image OPEN TO READ 2,"to screen\"+highlighted_state$ READ MEMBLOCK 2,1 MAKE IMAGE FROM MEMBLOCK image,1 CLOSE FILE 2 DELETE MEMBLOCK 1 PASTE IMAGE image,menu3_ranges(x,y,z,0),menu3_ranges(x,y,z,1) INK RGB(255,0,0),RGB(255,0,0) INK RGB(0,0,0),RGB(0,0,0) SYNC WAIT 10 INC image cur_dir$ = GET DIR$() SET DIR top_dir$ SELECT PATH EXIST("Sprite Data") CASE 0: MAKE DIRECTORY "Sprite Data" SET DIR "Sprite Data" INC framecount menu3_ranges(x,y,z,9) = framecount CREATE BITMAP 2, SCREEN WIDTH(), SCREEN HEIGHT() SET CURRENT BITMAP 0 COPY BITMAP 0,2 IF PATH EXIST(Str$(framecount)) = 1 DELETE FILE Str$(framecount) ENDIF IF FILE OPEN(2) = 1 CLOSE FILE 2 ENDIF OPEN TO WRITE 2,Str$(framecount) MAKE MEMBLOCK FROM BITMAP 2,2 WRITE MEMBLOCK 2,2 CLOSE FILE 2 DELETE MEMBLOCK 2 DELETE BITMAP 2 SET DIR cur_dir$ ENDCASE CASE 1: SET DIR "Sprite Data" INC framecount menu3_ranges(x,y,z,9) = framecount CREATE BITMAP 2, SCREEN WIDTH(), SCREEN HEIGHT() SET CURRENT BITMAP 0 COPY BITMAP 0,2 IF PATH EXIST(Str$(framecount)) = 1 DELETE FILE Str$(framecount) ENDIF IF FILE OPEN(2) = 1 CLOSE FILE 2 ENDIF OPEN TO WRITE 2,Str$(framecount) MAKE MEMBLOCK FROM BITMAP 2,2 WRITE MEMBLOCK 2,2 CLOSE FILE 2 DELETE MEMBLOCK 2 DELETE BITMAP 2 SET DIR cur_dir$ ENDCASE ENDSELECT menu3_ranges(x,y,z,6) = image OPEN TO READ 2,"to screen\"+selected_state$ READ MEMBLOCK 2,1 MAKE IMAGE FROM MEMBLOCK image,1 CLOSE FILE 2 DELETE MEMBLOCK 1 PASTE IMAGE image,menu3_ranges(x,y,z,0),menu3_ranges(x,y,z,1) INK RGB(255,0,0),RGB(255,0,0) INK RGB(0,0,0),RGB(0,0,0) SYNC WAIT 10 INC image cur_dir$ = GET DIR$() SET DIR top_dir$ SELECT PATH EXIST("Sprite Data") CASE 0: MAKE DIRECTORY "Sprite Data" SET DIR "Sprite Data" INC framecount menu3_ranges(x,y,z,10) = framecount CREATE BITMAP 2, SCREEN WIDTH(), SCREEN HEIGHT() SET CURRENT BITMAP 0 COPY BITMAP 0,2 IF PATH EXIST(Str$(framecount)) = 1 DELETE FILE Str$(framecount) ENDIF IF FILE OPEN(2) = 1 CLOSE FILE 2 ENDIF OPEN TO WRITE 2,Str$(framecount) MAKE MEMBLOCK FROM BITMAP 2,2 WRITE MEMBLOCK 2,2 CLOSE FILE 2 DELETE MEMBLOCK 2 DELETE BITMAP 2 SET DIR cur_dir$ ENDCASE CASE 1: SET DIR "Sprite Data" INC framecount menu3_ranges(x,y,z,10) = framecount CREATE BITMAP 2, SCREEN WIDTH(), SCREEN HEIGHT() SET CURRENT BITMAP 0 COPY BITMAP 0,2 IF PATH EXIST(Str$(framecount)) = 1 DELETE FILE Str$(framecount) ENDIF IF FILE OPEN(2) = 1 CLOSE FILE 2 ENDIF OPEN TO WRITE 2,Str$(framecount) MAKE MEMBLOCK FROM BITMAP 2,2 WRITE MEMBLOCK 2,2 CLOSE FILE 2 DELETE MEMBLOCK 2 DELETE BITMAP 2 SET DIR cur_dir$ ENDCASE ENDSELECT SET DIR top_dir$ SET DIR "Sprite Data" CREATE BITMAP 2,SCREEN WIDTH(),SCREEN HEIGHT() filename$ = file$ OPEN TO READ 2,str$(framecount - 2) READ MEMBLOCK 2,2 MAKE BITMAP FROM MEMBLOCK 3,2 COPY BITMAP 3,0,0,SCREEN WIDTH(),SCREEN HEIGHT(),2,0,0,SCREEN WIDTH(),SCREEN HEIGHT() DELETE MEMBLOCK 2 DELETE BITMAP 3 CLOSE FILE 2 CREATE BITMAP 3,SCREEN WIDTH(),SCREEN HEIGHT() OPEN TO READ 2,str$(framecount - 1) READ MEMBLOCK 2,2 MAKE BITMAP FROM MEMBLOCK 4,2 COPY BITMAP 4,0,0,SCREEN WIDTH(),SCREEN HEIGHT(),3,0,0,SCREEN WIDTH(),SCREEN HEIGHT() DELETE MEMBLOCK 2 DELETE BITMAP 4 CLOSE FILE 2 CREATE BITMAP 4,SCREEN WIDTH(),SCREEN HEIGHT() OPEN TO READ 2,str$(framecount) READ MEMBLOCK 2,2 MAKE BITMAP FROM MEMBLOCK 5,2 COPY BITMAP 5,0,0,SCREEN WIDTH(),SCREEN HEIGHT(),4,0,0,SCREEN WIDTH(),SCREEN HEIGHT() DELETE MEMBLOCK 2 DELETE BITMAP 5 CLOSE FILE 2 SET DIR top_dir$ IF PATH EXIST("Sprites") = 1 SET DIR "Sprites" SET CURRENT BITMAP 2 GET IMAGE image+1,0,0,1280,SCREEN HEIGHT(),1 SAVE IMAGE filename$+".bmp",image+1 CLOSE FILE 2 DELETE BITMAP 2 DELETE IMAGE image+1 SET CURRENT BITMAP 3 GET IMAGE image+2,0,0,1280,SCREEN HEIGHT(),1 SAVE IMAGE "H"+filename$+".bmp",image+2 CLOSE FILE 2 DELETE BITMAP 3 DELETE IMAGE image+2 SET CURRENT BITMAP 4 GET IMAGE image+3,0,0,1280,SCREEN HEIGHT(),1 SAVE IMAGE "S"+filename$+".bmp",image+3 CLOSE FILE 2 DELETE BITMAP 4 DELETE IMAGE image+3 ELSE MAKE DIRECTORY "Sprites" SET DIR "Sprites" SET CURRENT BITMAP 2 GET IMAGE image+1,0,0,1280,SCREEN HEIGHT(),1 SAVE IMAGE filename$+".bmp",image+1 CLOSE FILE 2 DELETE BITMAP 2 DELETE IMAGE image+1 SET CURRENT BITMAP 3 GET IMAGE image+2,0,0,1280,SCREEN HEIGHT(),1 SAVE IMAGE "H"+filename$+".bmp",image+2 CLOSE FILE 2 DELETE BITMAP 3 DELETE IMAGE image+2 SET CURRENT BITMAP 4 GET IMAGE image+3,0,0,1280,SCREEN HEIGHT(),1 SAVE IMAGE "S"+filename$+".bmp",image+3 CLOSE FILE 2 DELETE BITMAP 4 DELETE IMAGE image+3 ENDIF ENDCASE ENDSELECT CLOSE FILE 1 ENDIF NEXT T SET DIR top_dir$ DELETE DIRECTORY "Sprite Data" ENDFUNCTION FUNCTION correct_script(top_dir$) SET DIR top_dir$ SET DIR "Sprites" PERFORM CHECKLIST FOR FILES Images = (CHECKLIST QUANTITY() - 2) SET DIR top_dir$ OPEN TO READ 1,"menumap.txt" READ STRING 1,font$ READ STRING 1,size$ READ STRING 1,title$ CLOSE FILE 1 COPY FILE "menumap.txt", "menumap_current.txt" DELETE FILE "menumap.txt" OPEN TO WRITE 1,"menumap.txt" WRITE STRING 1,font$ WRITE STRING 1,size$ WRITE STRING 1,title$ WRITE STRING 1,Str$(Images) CLOSE FILE 1 SET DIR top_dir$ SET DIR "MenMedia" DELETE DIRECTORY "to screen" ENDFUNCTION `///////////////////////////////////////////////////////////////////////////////////////// `Menu Display / Main Application Rem Project: S(N) Rem Created: 11/24/2004 13:51:03 Rem ***** Main Source File ***** SYNC OFF SET IMAGE COLORKEY 255,0,255 `----------------------------------------------------------------------------------------------- top_dir$ = GET DIR$() OPEN TO READ 1,"menumap.txt" : READ STRING 1,font$ : READ STRING 1,size$ : READ STRING 1,Title$ : size = VAL(size$) IF PATH EXIST("Sprites")=1 SET DIR "Sprites" ELSE MAKE DIRECTORY "Sprites" SET DIR "Sprites" ENDIF PERFORM CHECKLIST FOR FILES Images = (CHECKLIST QUANTITY() - 2) prep(font$,size,Title$) READ STRING 1,Images$ make_menus = 0 menu_media_count = VAL(Images$) IF Images$ = "!!" make_menus = 1 ENDIF IF menu_media_count <> Images make_menus = 1 ENDIF EMPTY CHECKLIST CLOSE FILE 1 SET DIR top_dir$ IF make_menus = 1 SET DIR top_dir$ IF PATH EXIST("MenMedia") DELETE DIRECTORY "MenMedia" ENDIF IF PATH EXIST("Sprites") DELETE DIRECTORY "Sprites" ENDIF IF PATH EXIST("Sprite data") DELETE DIRECTORY "Sprite data" ENDIF TEXT 0,0,"Run Menu Maker" TEXT 0,100,"Press Any Key To Continue With Quitting OR Any Other Key To Quit" WAIT KEY EXIT ENDIF return$ = loadmen(top_dir$) do INC loops(0) IF TIMER() - system_time(0) >= 1000 time_thus_far = TIMER() - system_time(0) hertz(0) = loops(0)/(time_thus_far/1000) ENDIF CLS RGB(247,247,247) SELECT IMAGE EXIST(1) CASE 1: PASTE IMAGE 1,0,0,1 : DELETE IMAGE 1 : ENDCASE ENDSELECT SELECT return$ CASE "M0": mode = 0 : ENDCASE CASE "M1": mode = 1 : ENDCASE CASE "M2": mode = 2 : ENDCASE CASE "M3": mode = 3 : ENDCASE CASE "M4": mode = 4 : ENDCASE CASE "COMMAND" : mode = 0 : return$ = commandFinder() : ENDCASE CASE "EXIT": EXIT : ENDCASE ENDSELECT return$ = main(top_dir$,mode) loop FUNCTION prep(font as string, size,Title as string) EMPTY CHECKLIST PERFORM CHECKLIST FOR DISPLAY MODES sx =0 sy = 0 sz = 0 FOR T = 1 TO CHECKLIST QUANTITY() IF CHECKLIST VALUE A(T) > sx sx = CHECKLIST VALUE A(T) ENDIF IF CHECKLIST VALUE B(T) > sy sy = CHECKLIST VALUE B(T) ENDIF IF CHECKLIST VALUE C(T) > sz sz = CHECKLIST VALUE C(T) ENDIF NEXT T SET WINDOW ON SET DISPLAY MODE sx,sy,sz MAXIMIZE WINDOW SET TEXT FONT font SET TEXT SIZE size SET TEXT TRANSPARENT CLS RGB(247,247,247) INK RGB(0,0,0),RGB(0,0,0) ENDFUNCTION FUNCTION loadmen(top_dir$) SET DIR top_dir$ SET DIR "MenMedia" dat_dir$ = GET DIR$() SET DIR top_dir$ SET DIR "Sprites" men_dir$ = GET DIR$() SET DIR dat_dir$ EMPTY CHECKLIST PERFORM CHECKLIST FOR FILES DIM drop_triggers(20,20,1) AS STRING DIM slide_triggers(20,20,20,1) AS STRING DIM menu1_data(20,7) DIM menu2_data(20,20,7) DIM menu3_data(20,20,20,7) top = 0 drop = 0 slide = 0 spr = 1 FOR T = 3 to CHECKLIST QUANTITY() CLS RGB(0,0,0) INK RGB(247,247,247),RGB(247,247,247) percent = ((T-3) * 100)/(CHECKLIST QUANTITY() - 4) TEXT 0,0,"Loading Menu Data: "+STR$(percent)+"%" WAIT 1 IF FILE OPEN(2) = 1 CLOSE FILE 2 ENDIF SET DIR dat_dir$ file$ = CHECKLIST STRING$(T) OPEN TO READ 2,file$ digits = LEN(CHECKLIST STRING$(T)) READ STRING 2,left_bound$ : READ STRING 2,top_bound$ : READ STRING 2,right_bound$ : READ STRING 2,bottom_bound$ SELECT digits CASE 2: SET DIR men_dir$ top2 = VAL(file$) - 1 menu1_data(top2,0) = VAL(left_bound$) menu1_data(top2,1) = VAL(top_bound$) menu1_data(top2,2) = VAL(right_bound$) menu1_data(top2,3) = VAL(bottom_bound$) INC spr LOAD IMAGE file$+".bmp",spr,1 menu1_data(top2,4) = spr INC spr LOAD IMAGE "H"+file$+".bmp",spr,1 menu1_data(top2,5) = spr INC spr LOAD IMAGE "S"+file$+".bmp",spr,1 menu1_data(top2,6) = spr INC top CLOSE FILE 2 ENDCASE `----------------------------------------------------------------------------------------------- CASE 4: SET DIR men_dir$ boob$ = LEFT$(file$,2) top3 = VAL(boob$) - 1 boob2$ = RIGHT$(file$,2) drop2 = VAL(boob2$) - 1 menu2_data(top3,drop2,0) = VAL(left_bound$) menu2_data(top3,drop2,1) = VAL(top_bound$) menu2_data(top3,drop2,2) = VAL(right_bound$) menu2_data(top3,drop2,3) = VAL(bottom_bound$) spr = spr + 1 LOAD IMAGE file$+".bmp",spr,1 menu2_data(top3,drop2,4) = spr INC spr LOAD IMAGE "H"+file$+".bmp",spr,1 menu2_data(top3,drop2,5) = spr INC spr LOAD IMAGE "S"+file$+".bmp",spr,1 menu2_data(top3,drop2,6) = spr drop_triggers(top3,drop2,0) = file$ INC drop CLOSE FILE 2 ENDCASE `----------------------------------------------------------------------------------------------- CASE 6: SET DIR men_dir$ boob$ = LEFT$(file$,2) boob2a$ = RIGHT$(file$,4) boob2$ = LEFT$(boob2a$,2) boob3$ = RIGHT$(file$,2) top4 = VAL(boob$) - 1 drop3 = VAL(boob2$) - 1 slide2 = VAL(boob3$) - 1 menu3_data(top4,drop3,slide2,0) = VAL(left_bound$) menu3_data(top4,drop3,slide2,1) = VAL(top_bound$) menu3_data(top4,drop3,slide2,2) = VAL(right_bound$) menu3_data(top4,drop3,slide2,3) = VAL(bottom_bound$) INC spr LOAD IMAGE file$+".bmp",spr,1 menu3_data(top4,drop3,slide2,4) = spr INC spr LOAD IMAGE "H"+file$+".bmp",spr,1 menu3_data(top4,drop3,slide2,5) = spr INC spr LOAD IMAGE "S"+file$+".bmp",spr,1 menu3_data(top4,drop3,slide2,6) = spr slide_triggers(top4,drop3,slide2,0) = file$ INC slide CLOSE FILE 2 ENDCASE ENDSELECT NEXT T `Control Arrays DIM mouses(1) DIM bottomsOFdrop(50) DIM bottomsOFslide(50,50) DIM current_array1(1) DIM current_array2(1) DIM current_array3(1) DIM time(1) DIM drop_hi(1) DIM slide_hi(1) DIM trigger(1) AS STRING `Program Statistics Arrays DIM loops(1) : loops(0) = 0 DIM top(1) : top(0) = top DIM drop(1) : drop(0) = drop DIM slide(1) : slide(0) = slide DIM system_time(1) : system_time(0) = TIMER() DIM hertz(0) : hertz(0) = 0 FOR arr = 0 TO top a = 0 a2 = menu2_data(arr,a,3) WHILE a2 > 0 a2 = menu2_data(arr,a,3) INC a ENDWHILE bottomsOFdrop(arr) = a - 2 NEXT arr FOR arr = 0 TO top FOR ass = 0 TO drop a = 0 a2 = menu3_data(arr,ass,a,3) WHILE a2 > 0 a2 = menu3_data(arr,ass,a,3) INC a ENDWHILE bottomsOFslide(arr,ass) = a - 2 NEXT ass NEXT arr SPRITE 1,0,0,2 SET SPRITE 1,0,1 ENDFUNCTION return$ FUNCTION main(top_dir$,mode) INK RGB(0,0,0),RGB(0,0,0) my = MOUSEY() mx = MOUSEX() IF RETURNKEY() = 1 mc = 1 ELSE mc = MOUSECLICK() ENDIF ack = current_array2(1) arr = current_array1(0) arr2 = current_array2(0) arr3 = current_array3(0) smb = bottomsOFslide(arr,arr2) dmb = bottomsOFdrop(arr) m1: SELECT mode CASE 0: current_array1(0) = 0 current_array2(0) = 0 current_array2(1) = 0 current_array3(0) = 0 ack = 0 arr = 0 arr2 = 0 arr3 = 0 mouses(0) = 0 TEXT SCREEN WIDTH() - TEXT WIDTH(STR$(MOUSEX())+", ") - TEXT WIDTH(STR$(MOUSEY())),SCREEN HEIGHT() - TEXT HEIGHT(STR$(MOUSEX())),str$(MOUSEX())+", " TEXT SCREEN WIDTH() - TEXT WIDTH(STR$(MOUSEY())),SCREEN HEIGHT() - TEXT HEIGHT(STR$(MOUSEY())),str$(MOUSEY()) TEXT 0,SCREEN HEIGHT() - TEXT HEIGHT(STR$(hertz(0))),"PC@"+STR$(hertz(0))+"Hz" INC time(0) SELECT mouses(0) <> 3 CASE 1: SELECT my <= menu1_data(0,3) AND mx < menu1_data(top(0)-1,2) CASE 1: FOR T = 0 TO top(0) SELECT mx < menu1_data(T,2) AND mx >= menu1_data(T,0) CASE 1: SET SPRITE IMAGE 1,menu1_data(T,5) current_array1(0) = T return$ = "M1" T = top(0) ENDCASE ENDSELECT NEXT T ENDCASE CASE 0: current_array1(0) = 0 SET SPRITE IMAGE 1,2 return$ = "M0" ENDCASE ENDSELECT ENDCASE CASE 0: IF time(0) > 3 mouses(0) = 0 ENDIF ENDCASE ENDSELECT ENDCASE CASE 1: TEXT SCREEN WIDTH() - TEXT WIDTH(STR$(MOUSEX())+", ") - TEXT WIDTH(STR$(MOUSEY())),SCREEN HEIGHT() - TEXT HEIGHT(STR$(MOUSEX())),str$(MOUSEX())+", " TEXT SCREEN WIDTH() - TEXT WIDTH(STR$(MOUSEY())),SCREEN HEIGHT() - TEXT HEIGHT(STR$(MOUSEY())),str$(MOUSEY()) TEXT 0,SCREEN HEIGHT() - TEXT HEIGHT(STR$(hertz(0))),"PC@"+STR$(hertz(0))+"Hz" SELECT my > menu1_data(0,3) OR mx > menu1_data(arr,2) OR mx < menu1_data(arr,0) CASE 1: current_array1(0) = 0 return$ = "M0" ENDCASE CASE 0: SELECT mc = 1 OR mouses(0) = 1 CASE 1: SET SPRITE IMAGE 1,menu2_data(arr,0,4) return$ = "M2" time(0) = 0 ENDCASE CASE 0: SET SPRITE IMAGE 1,menu1_data(arr,5) return$ = "M1" ENDCASE ENDSELECT ENDCASE ENDSELECT ENDCASE CASE 2: TEXT SCREEN WIDTH() - TEXT WIDTH(STR$(MOUSEX())+", ") - TEXT WIDTH(STR$(MOUSEY())),SCREEN HEIGHT() - TEXT HEIGHT(STR$(MOUSEX())),str$(MOUSEX())+", " TEXT SCREEN WIDTH() - TEXT WIDTH(STR$(MOUSEY())),SCREEN HEIGHT() - TEXT HEIGHT(STR$(MOUSEY())),str$(MOUSEY()) TEXT 0,SCREEN HEIGHT() - TEXT HEIGHT(STR$(hertz(0))),"PC@"+STR$(hertz(0))+"Hz" INC time(0) mouses(0) = 0 SELECT MOUSECLICK() = 1 AND time(0) > 10 CASE 1: SELECT my < menu1_data(arr,3) CASE 1: return$ = "M0" mouses(0) = 3 time(0) = 0 drop_hi(0) = 0 slide_hi(0) = 0 current_array1(0) = 0 current_array2(0) = 0 current_array2(1) = 0 current_array3(0) = 0 ack = 0 arr = 0 arr2 = 0 arr3 = 0 trigger(0) = " " ENDCASE ENDSELECT ENDCASE ENDSELECT SELECT my < menu1_data(0,3) AND mc = 0 AND time(0) > 10 CASE 1: SELECT mx < menu1_data(arr,0) OR mx > menu1_data(arr,2) CASE 1: return$ = "M1" mouses(0) = 1 drop_hi(0) = 0 ENDCASE ENDSELECT ENDCASE ENDSELECT SELECT my > menu2_data(arr,dmb,3) OR mx > menu2_data(arr,dmb,2) OR MOUSEX() < menu2_data(arr,dmb,0) CASE 1: SELECT mc = 1 AND time(0) > 10 CASE 1: return$ = "M0" drop_hi(0) = 0 ENDCASE ENDSELECT ENDCASE ENDSELECT SELECT my < menu2_data(arr,dmb,3) AND my > menu1_data(0,3) CASE 1: FOR T = 0 TO dmb SELECT mx < menu2_data(arr,T,2) AND my < menu2_data(arr,T,3) AND my > menu2_data(arr,T,1) AND mx > menu2_data(arr,T,0) CASE 1: SET SPRITE IMAGE 1,menu2_data(arr,T,5) current_array2(0) = T T = dmb drop_hi(0) = 1 ENDCASE ENDSELECT NEXT T ENDCASE ENDSELECT SELECT drop_hi(0) = 1 CASE 1: SELECT my > menu2_data(arr,arr2,3) OR mx > menu2_data(arr,arr2,2) OR mx < menu2_data(arr,arr2,0) OR my < menu2_data(arr,arr2,1) CASE 1: SET SPRITE IMAGE 1,menu2_data(arr,0,4) drop_hi(0) = 0 ENDCASE ENDSELECT SELECT mx < menu2_data(arr,arr2,2) AND my < menu2_data(arr,arr2,3) AND my > menu2_data(arr,arr2,1) AND mx > menu2_data(arr,arr2,0) AND mc = 1 CASE 1: SET SPRITE IMAGE 1,menu2_data(arr,current_array2(0),6) return$ = "M3" drop_hi(0) = 0 ENDCASE ENDSELECT ENDCASE ENDSELECT ENDCASE CASE 3: TEXT SCREEN WIDTH() - TEXT WIDTH(STR$(MOUSEX())+", ") - TEXT WIDTH(STR$(MOUSEY())),SCREEN HEIGHT() - TEXT HEIGHT(STR$(MOUSEX())),str$(MOUSEX())+", " TEXT SCREEN WIDTH() - TEXT WIDTH(STR$(MOUSEY())),SCREEN HEIGHT() - TEXT HEIGHT(STR$(MOUSEY())),str$(MOUSEY()) TEXT 0,SCREEN HEIGHT() - TEXT HEIGHT(STR$(hertz(0))),"PC@"+STR$(hertz(0))+"Hz" SELECT my > menu2_data(arr,arr2,3) OR mx > menu2_data(arr,arr2,2) OR mx < menu2_data(arr,arr2,0) OR my < menu2_data(arr,arr2,1) CASE 1: SET SPRITE IMAGE 1,menu2_data(arr,0,4) drop_hi(0) = 0 return$ = "M2" ENDCASE ENDSELECT SELECT menu3_data(arr,arr2,0,3) <> 0 CASE 1: SET SPRITE IMAGE 1,menu3_data(arr,arr2,0,4) return$ = "M4" ENDCASE CASE 0: drop_hi(0) = 0 trigger(0) = drop_triggers(arr,arr2,0) return$ = "COMMAND" ENDCASE ENDSELECT ENDCASE CASE 4: TEXT SCREEN WIDTH() - TEXT WIDTH(STR$(MOUSEX())+", ") - TEXT WIDTH(STR$(MOUSEY())),SCREEN HEIGHT() - TEXT HEIGHT(STR$(MOUSEX())),str$(MOUSEX())+", " TEXT SCREEN WIDTH() - TEXT WIDTH(STR$(MOUSEY())),SCREEN HEIGHT() - TEXT HEIGHT(STR$(MOUSEY())),str$(MOUSEY()) TEXT 0,SCREEN HEIGHT() - TEXT HEIGHT(STR$(hertz(0))),"PC@"+STR$(hertz(0))+"Hz" SELECT my < menu3_data(arr,arr2,smb,3) AND my > menu3_data(arr,arr2,0,1) CASE 1: FOR T = 0 TO smb SELECT mx < menu3_data(arr,arr2,T,2) AND my < menu3_data(arr,arr2,T,3) AND my > menu3_data(arr,arr2,T,1) AND mx > menu3_data(arr,arr2,T,0) CASE 1: SET SPRITE IMAGE 1,menu3_data(arr,arr2,T,5) current_array3(0) = T T = smb slide_hi(0) = 1 ENDCASE ENDSELECT NEXT T ENDCASE CASE 0: SET SPRITE IMAGE 1,menu3_data(arr,arr2,0,4) ENDCASE ENDSELECT SELECT mx < menu3_data(arr,arr2,arr3,0) CASE 1: SELECT my < menu2_data(arr,arr2,1) OR my > menu2_data(arr,arr2,3) CASE 1: SELECT mx < menu2_data(arr,arr2,2) CASE 1: current_array3(0) = 0 slide_hi(0) = 0 drop_hi(0) = 0 time(0) = 0 mouses(0) = 0 return$ = "M2" ENDCASE ENDSELECT ENDCASE ENDSELECT ENDCASE ENDSELECT SELECT slide_hi(0) = 1 AND mc = 1 CASE 1: SET SPRITE IMAGE 1,menu3_data(arr,arr2,arr3,6) slide_hi(0) = 0 return$ = "M0" trigger(0) = slide_triggers(arr,arr2,arr3,0) return$ = "COMMAND" ENDCASE ENDSELECT ENDCASE ENDSELECT IF ESCAPEKEY() = 1 EXIT ENDIF ENDFUNCTION return$ EXIT FUNCTION commandFinder() SELECT trigger(0) ` CASE "0101" : 0101() : ENDCASE ` CASE "0102" : 0102() : ENDCASE ` CASE "0103" : 0103() : ENDCASE ` CASE "0104" : 0104() : ENDCASE ` CASE "0105" : 0105() : ENDCASE ` CASE "0106" : 0106() : ENDCASE ` CASE "0107" : 0107() : ENDCASE ` CASE "0108" : 0108() : ENDCASE ` CASE "0109" : 0109() : ENDCASE ` CASE "0110" : 0110() : ENDCASE ` CASE "0111" : 0111() : ENDCASE ` CASE "0112" : 0112() : ENDCASE ` CASE "0113" : 0113() : ENDCASE ` CASE "0114" : 0114() : ENDCASE ` CASE "0115" : 0115() : ENDCASE ` CASE "0116" : 0116() : ENDCASE ` CASE "0117" : 0117() : ENDCASE ` CASE "0118" : 0118() : ENDCASE ` CASE "0119" : 0119() : ENDCASE ` CASE "0120" : 0120() : ENDCASE ` CASE "0201" : 0201() : ENDCASE ` CASE "0202" : 0202() : ENDCASE ` CASE "0203" : 0203() : ENDCASE ` CASE "0204" : 0204() : ENDCASE ` CASE "0205" : 0205() : ENDCASE ` CASE "0206" : 0206() : ENDCASE ` CASE "0207" : 0207() : ENDCASE ` CASE "0208" : 0208() : ENDCASE ` CASE "0209" : 0209() : ENDCASE ` CASE "0210" : 0210() : ENDCASE ` CASE "0211" : 0211() : ENDCASE ` CASE "0212" : 0212() : ENDCASE ` CASE "0213" : 0213() : ENDCASE ` CASE "0214" : 0214() : ENDCASE ` CASE "0215" : 0215() : ENDCASE ` CASE "0216" : 0216() : ENDCASE ` CASE "0217" : 0217() : ENDCASE ` CASE "0218" : 0218() : ENDCASE ` CASE "0219" : 0219() : ENDCASE ` CASE "0220" : 0220() : ENDCASE ` CASE "0301" : 0301() : ENDCASE ` CASE "0302" : 0302() : ENDCASE ` CASE "0303" : 0303() : ENDCASE ` CASE "0304" : 0304() : ENDCASE ` CASE "0305" : 0305() : ENDCASE ` CASE "0306" : 0306() : ENDCASE ` CASE "0307" : 0307() : ENDCASE ` CASE "0308" : 0308() : ENDCASE ` CASE "0309" : 0309() : ENDCASE ` CASE "0310" : 0310() : ENDCASE ` CASE "0311" : 0311() : ENDCASE ` CASE "0312" : 0312() : ENDCASE ` CASE "0313" : 0313() : ENDCASE ` CASE "0314" : 0314() : ENDCASE ` CASE "0315" : 0315() : ENDCASE ` CASE "0316" : 0316() : ENDCASE ` CASE "0317" : 0317() : ENDCASE ` CASE "0318" : 0318() : ENDCASE ` CASE "0319" : 0319() : ENDCASE ` CASE "0320" : 0320() : ENDCASE ` CASE "0401" : 0401() : ENDCASE ` CASE "0402" : 0402() : ENDCASE ` CASE "0403" : 0403() : ENDCASE ` CASE "0404" : 0404() : ENDCASE ` CASE "0405" : 0405() : ENDCASE ` CASE "0406" : 0406() : ENDCASE ` CASE "0407" : 0407() : ENDCASE ` CASE "0408" : 0408() : ENDCASE ` CASE "0409" : 0409() : ENDCASE ` CASE "0410" : 0410() : ENDCASE ` CASE "0411" : 0411() : ENDCASE ` CASE "0412" : 0412() : ENDCASE ` CASE "0413" : 0413() : ENDCASE ` CASE "0414" : 0414() : ENDCASE ` CASE "0415" : 0415() : ENDCASE ` CASE "0416" : 0416() : ENDCASE ` CASE "0417" : 0417() : ENDCASE ` CASE "0418" : 0418() : ENDCASE ` CASE |