Home » Archimedes archive » Archimedes World » AW-1994-05-Disc1.adf » Disk1May94 » !AWMay94/Goodies/CompDraw/!CompDraw/!RunImage0
!AWMay94/Goodies/CompDraw/!CompDraw/!RunImage0
This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.
Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.
Tape/disk: | Home » Archimedes archive » Archimedes World » AW-1994-05-Disc1.adf » Disk1May94 |
Filename: | !AWMay94/Goodies/CompDraw/!CompDraw/!RunImage0 |
Read OK: | ✔ |
File size: | C6A8 bytes |
Load address: | 0000 |
Exec address: | 0000 |
File contents
10REM > ":0.$.!CompDraw.!RunImage" 20REM > ":4.$.Usefuls.CompDraw.!CompDraw.!RunImage" 30: 40*KEY12 MODE 12|M|NFOR N=1TOtotnames%:P.N" : "FNname(FNiconfromname(totnames%,N)-4)" : "names$(N):NEXT|M 50*KEY11 MODE 12|M|NFOR N=1TOtotnames%:P.N" : "selected%?N:NEXT|M 60*KEY4 SAVE|MRUN|M 70*FX12,3 80: 90MainX%=1232: REM width of main window 100MainY%=1612: REM height of main window 110totnames%=0: REM number of names in list 120maxicon%=0: REM highest no. icon used in list 130totseeds%=0: REM number of seeds in list 140names_sel%=0: REM number of names selected 150seeds_sel%=0: REM number of seeds selected 160draw_made%=FALSE: REM TRUE if a draw has been made 170doubles%=FALSE: REM TRUE if draw is for doubles 180teams%=0: REM number of teams 190per_team%=0: REM players per team: 0 => draw 200quarters%=0: REM quarters in the draw 210filetype%=&AAA: REM file type for saved files 220printit%=FALSE: REM flag for print/load 230altered%=FALSE: REM flag for altered - used when exiting 240drawfile_open%=FALSE: REM flag for error handler indicating draw file open 250error%=FALSE: REM flag for error occured in error handler 260: 270PROCinit 280: 290PROCread_load_filename(printit%) 300IF printit% THEN 310 PROCprint_direct 320 SYS "Wimp_CloseDown" 330ENDIF 340PROCset_up_menus 350: 360WHILE NOT quit% 370 PROCpoll 380ENDWHILE 390SYS "Wimp_CloseDown" 400END 410: 420END 430: 440REM **************** procs start here ********************** 450: 460DEF PROCpoll 470SYS "Wimp_Poll",%110001,block% TO reason% 480CASE reason% OF 490 WHEN 0:v%+=1:PRINTTAB(0,0)v% 500 WHEN 1:PROCredraw 510 WHEN 2:SYS "Wimp_OpenWindow",,block% 520 WHEN 3:SYS "Wimp_CloseWindow",,block% 530 WHEN 4: :REM pointer leaving window 540 WHEN 5: :REM pointer entering window 550 WHEN 6:PROCclick :REM mouse click 560 WHEN 7:PROCstartsave(drag_from%) :REM user drag box 570 WHEN 8:PROCkeypressed :REM key pressed 580 WHEN 9:PROCmenu_option :REM menu item selected 590 WHEN 10:PROCforce_redraw :REM request to re-draw window 600 WHEN 11 :REM lose caret 610 WHEN 12 :REM gain caret 620 WHEN 17,18:PROCreceive 630 WHEN 19:REM PROCreport("Transfer failed - receiver died",1) 640 OTHERWISE:PROCreport("reason%= "+STR$reason%,1) 650ENDCASE 660ENDPROC 670: 680DEF PROCmenu_option 690mainoption%=!block% 700subopt1%=block%!4 710subopt2%=block%!8 720SYS "Wimp_GetPointerInfo",,block% 730button%=block%!8 740CASE menuopen% OF 750 WHEN icon_menu%:PROCiconbarmenu_option 760 WHEN main_menu%:PROCmainmenu_option 770ENDCASE 780ENDPROC 790: 800DEF PROCforce_redraw 810LOCAL window% 820window%=!block% 830CASE window% OF 840 WHEN draw_window% 850 SYS "Wimp_ForceRedraw",window%,0,-height%,width%,0 860ENDCASE 870ENDPROC 880: 890DEF PROCiconbarmenu_option 900CASE mainoption% OF 910 WHEN 1:IF button%<>2 THEN PROCquit 920ENDCASE 930IF button%=1 THEN PROCshowmenu(icon_menu%,0,0) 940ENDPROC 950: 960DEF PROCclose_menus 970SYS "Wimp_CreateMenu",,-1 980ENDPROC 990: 1000DEF PROCinit 1010: 1020ON ERROR PROCerror(REPORT$):GOTO 360 1030: 1040LOCAL flag% 1050DIM scale% 16 1060?scale%=1 1070scale%?4=1 1080scale%?8=2 1090scale%?12=2 1100DIM area% 6500 1110PROCsload("<Obey$Dir>.sprites",area%) 1120DIM drawfile% 255 1130DIM base% 3000 1140DIM lens% 40 1150title%=base% 1160names%=base%+45 1170seeds%=base%+2500 1180drawpos%=base%+2810 1190DIM drawn 128,rect% 16,trans% 16,plotat% 8 1200seed_exists%=base%+2962 1210DIM block% 255 1220DIM names$(128),seeds$(16),draw$(256),seedpos%(16),double$(128) 1230DIM double%(128) 1240DIM selected% 128,sel_seeds% 16 1250DIM seed_menu% 412,select_menu% 124,main_menu% 196 1260DIM icon_menu% 76,make_menu% 148,draw_menu% 148,print_menu% 148 1270DIM save_menu% 100,file% 256,file2% 256 1280REM variables for draw files 1290maxlev%=32 1300bigx%=&00040000 1310bigy%=&00080000 1320DIM l%(maxlev%),r%(maxlev%),t%(maxlev%),b%(maxlev%),box%(maxlev%),start%(maxlev%) 1330inch%=&B400 1340black%=FNcolour(7) 1350white%=FNcolour(0) 1360xscale%=200:REM x scale for draw files of teams 1370xscale2%=280:REM x scale for draw files of knockout competitions 1380yscale%=260:REM y scale for both 1390DIM buf% 20 1400: 1410REM sprite pixel translation table 1420DIM trans_table% 16 1430: 1440LOCAL n%,text$,a%,t% 1450FOR n%=0TO16 1460 seed_exists%?n%=0 1470 sel_seeds%?n%=0 1480NEXT 1490FOR n%=0TO128 1500 drawpos%?n%=0 1510 selected%?n%=0 1520NEXT 1530app$="CompDraw" 1540quit%=FALSE 1550SYS "Wimp_Initialise",200,&4B534154,app$ 1560: 1570REM set up main window 1580: 1590mainx%=800:REM initial window size 1600mainy%=600 1610main_window%=FNcreate_window(640-mainx%/2,260,mainx%,mainy%,MainX%-mainx%,MainY%-mainy%,&FF000012,app$,2,0) 1620draw_window%=FNcreate_window(0,1024,mainx%,mainy%,MainX%-mainx%,MainY%-mainy%,&FF000012,app$,2,0) 1630: 1640a%=FNcreate_icon(main_window%,0,-64,100,48,&8000211,"TITLE",0,0,0) 1650$title%="CompDraw : Competition Title" 1660title_icon%=FNcreate_icon(main_window%,108,-64,656,48,&700F13D,"",title%,-1,40) 1670: 1680a%=FNcreate_icon(main_window%,8,-1608,1216,1188,&700003D,"",0,0,0) 1690: 1700a%=FNcreate_icon(main_window%,8,-400,1216,324,&700003D,"",0,0,0) 1710: 1720FOR m%=0TO31 1730 FOR n%=0TO3 1740 num%=m%*4+n% 1750 point%=names%+num%*19 1760 $point%="" 1770 x%=(n%*18+n%+2)*16-8 1780 y%=-m%*36-472 1790 a%=FNcreate_icon(main_window%,x%,y%,280,36,&7003131,"",point%,-1,18) 1800 NEXT 1810NEXT 1820: 1830FOR n%=0TO1 1840 FOR m%=0TO7 1850 num%=n%*8+m% 1860 point%=seeds%+num%*19 1870 $point%="" 1880 x%=n%*18*32+240 1890 y%=-m%*36-124 1900 a%=FNcreate_icon(main_window%,x%,y%,280,36,&7003131,"",point%,-1,18) 1910 CASE num% OF 1920 WHEN 0,8:seed$="SEED " 1930 OTHERWISE:seed$="" 1940 ENDCASE 1950 seed$+=STR$(num%+1) 1960 a%=FNcreate_icon(main_window%,x%-320,y%,18*16+8,36,&8000211,seed$,0,0,0) 1970 NEXT 1980NEXT 1990: 2000REM set up file info window 2010: 2020DIM file_info% 20 2030$file_info%="About this program" 2040fileinfo_window%=FNcreate_window(0,0,400,200,0,0,&84000012,"File Info",1,0) 2050RESTORE +0 2060DATA Non seeds:,Seeds:,Draw made: 2070FOR n%=1TO3 2080 READ text$ 2090 a%=FNcreate_icon(fileinfo_window%,0,-n%*56-12,220,52,&17000211,text$,0,0,0) 2100NEXT 2110DIM info1% 4,info2% 4,info3% 4 2120a%=FNcreate_icon(fileinfo_window%,240,-68,80,52,&700013D,"",info1%,-1,3) 2130a%=FNcreate_icon(fileinfo_window%,240,-124,80,52,&700013D,"",info2%,-1,3) 2140a%=FNcreate_icon(fileinfo_window%,240,-180,80,52,&700013D,"",info3%,-1,3) 2150: 2160DIM cd% 10 2170$cd%="compdraw" 2180a%=FNcreate_icon(main_window%,932,-72,288,64,&11A,"",cd%,area%,10) 2190REM set up info window 2200: 2210info_window%=FNcreate_window(0,0,640,272,0,0,&84000012,"Prog Info",1,0) 2220RESTORE +0 2230DATA Name:,Purpose:,Author:,Version:,Copyright: 2240DATA CompDraw,Makes Competition Draw,"Peter R.Kingsbury","2.00 (20-Sep-93)",LEN ARCHIMEDES WORLD 1993 2250DIM t1% 150 2260FOR n%=1TO5 2270 READ text$ 2280 a%=FNcreate_icon(info_window%,0,-n%*52-4,192,48,&17000211,text$,0,0,0) 2290NEXT 2300FOR n%=1TO5 2310 READ text$ 2320 T%=t1%+(n%-1)*30 2330 $T%=text$ 2340 IF n%<5 THEN flag%=&700013D:ELSE flag%=&71000139 2350 a%=FNcreate_icon(info_window%,196,-n%*52-4,424,48,flag%,"",T%,-1,30) 2360NEXT 2370: 2380REM set up new name window 2390: 2400newname_window%=FNcreate_window(0,0,320,60,0,0,&84000012,"New Name",1,0) 2410DIM new_name% 20 2420$new_name%="" 2430a%=FNcreate_icon(newname_window%,10,-52,300,48,&700F13D,"",new_name%,-1,18) 2440: 2450REM set up save window 2460: 2470path$="":type$="":obj$="" 2480DIM sbspr% 8,sbval% 3 2490$sbspr%="file_aaa":$file%="CompDraw":$sbval%="A~ " 2500save_window%=FNcreate_window(0,0,264,164,0,0,&84000012,"Save as:",1,0) 2510drag%=FNcreate_icon(save_window%,100,-92,68,68,&6102,"",sbspr%,1,9) 2520a%=FNcreate_icon(save_window%,8,-156,192,48,&700F12D,"",file%,sbval%,256) 2530ok%=FNcreate_icon(save_window%,208,-156,48,48,&C701903D,"OK",0,0,0) 2540: 2550DIM sbspr2% 8,sbval2% 3 2560$sbspr2%="directory":$file2%="Draw_File":$sbval2%="A~ " 2570save_window2%=FNcreate_window(0,0,264,164,0,0,&84000012,"Save as:",1,-1) 2580drag2%=FNcreate_icon(save_window2%,100,-92,68,68,&6102,"",sbspr2%,1,9) 2590a%=FNcreate_icon(save_window2%,8,-156,192,48,&700F12D,"",file2%,sbval2%,256) 2600ok2%=FNcreate_icon(save_window2%,208,-156,48,48,&C701903D,"OK",0,0,0) 2610: 2620REM set up icon bar icon 2630ibhandle%=FNcreate_icon(-1,0,0,68,68,&3002,"!CompDraw",0,0,0) 2640: 2650REM set up merge window 2660: 2670merge_window%=FNcreate_window(340,400,600,240,0,0,&84000010,"CompDraw",1,0) 2680loa%=FNcreate_icon(merge_window%,20,-200,160,56,&C701903D,"load",0,0,0) 2690mer%=FNcreate_icon(merge_window%,220,-200,160,56,&C701903D,"merge",0,0,0) 2700can%=FNcreate_icon(merge_window%,420,-200,160,56,&C701903D,"cancel",0,0,0) 2710DIM merge% 20 2720$merge%="File already loaded." 2730a%=FNcreate_icon(merge_window%,0,-100,600,56,&7000119,"",merge%,-1,20) 2740: 2750REM set up teams window 2760: 2770DIM pl% 20,players% 2 2780$pl%="Players per team" 2790$players%="6" 2800team_window%=FNcreate_window(0,0,380,64,0,0,&84000012,"Teams",1,0) 2810a%=FNcreate_icon(team_window%,16,-54,320,40,&17000111,"",pl%,-1,20) 2820per_t%=FNcreate_icon(team_window%,300,-54,64,48,&700F13D,"",players%,-1,3) 2830: 2840ENDPROC 2850: 2860DEF FNcreate_window(x%,y%,w%,h%,extx%,exty%,flags%,title$,bgcol%,spr_area%) 2870LOCAL handle% 2880: 2890REM visible work area 2900!block%=x% 2910block%!4=y% 2920block%!8=x%+w% 2930block%!12=y%+h% 2940: 2950REM scroll offsets 2960block%!16=0 2970block%!20=0 2980: 2990REM handle behind and window flags 3000block%!24=-1 3010block%!28=flags% 3020: 3030REM window colours 3040block%!32=7 3050block%!33=2:REM border background 3060block%!34=7 3070block%!35=bgcol%:REM main window background 3080block%!36=3 3090block%!37=1 3100block%!38=12 3110: 3120REM work area extent 3130block%!40=0 3140block%!44=-h%-exty% 3150block%!48=w%+extx% 3160block%!52=0 3170: 3180REM title bar and work area flags 3190block%!56=&19 3200block%!60=3<<12 3210: 3220REM sprite area pointer and minimum size 3230block%!64=spr_area% 3240block%!68=0 3250: 3260REM window title 3270IF title$<>"Prog Info" THEN 3280 $(block%+72)=LEFT$(title$,11) 3290ELSE 3300 block%!56=&119:REM indirected data 3310 block%!72=file_info% 3320 block%!76=-1 3330 block%!80=20 3340ENDIF 3350: 3360REM number of icons 3370block%!84=0 3380: 3390SYS "Wimp_CreateWindow",,block% TO handle% 3400=handle% 3410: 3420DEF PROCreport(err$,flag%) 3430LOCAL name$ 3440name$=app$ 3450IF flag% AND 16 THEN name$="Message from "+app$ 3460!block%=255 3470$(block%+4)=err$+CHR$0 3480SYS "Wimp_ReportError",block%,flag%,name$ TO ,errclick% 3490ENDPROC 3500: 3510DEF PROCerror(err$) 3520IF error% THEN PROCreport(REPORT$+" in error handler",17):END 3530error%=TRUE 3540SYS "Hourglass_Off" 3550IF drawfile_open% THEN 3560 CLOSE#c% 3570 SYS "OS_File",6,drawfile% 3580 drawfile_open%=FALSE 3590ENDIF 3600REM err$+=" : "+STR$ERL 3610PROCreport(err$,1) 3620IF printit% THEN 3630 SYS "Wimp_CloseDown" 3640 END 3650ENDIF 3660error%=FALSE 3670ENDPROC 3680: 3690DEF FNcreate_icon(whan%,ix%,iy%,iw%,ih%,flag%,text$,ptr1%,ptr2%,ptr3%) 3700LOCAL ihandle% 3710!block%=whan% 3720block%!4=ix% 3730block%!8=iy% 3740block%!12=ix%+iw% 3750block%!16=iy%+ih% 3760IF ptr1%=0 THEN 3770 $(block%+24)=text$ 3780ELSE 3790 block%!24=ptr1% 3800 block%!28=ptr2% 3810 block%!32=ptr3% 3820ENDIF 3830block%!20=flag% 3840SYS "Wimp_CreateIcon",,block% TO ihandle% 3850=ihandle% 3860: 3870DEF PROCclick 3880xpoint%=!block% 3890ypoint%=block%!4 3900button%=block%!8 3910window%=block%!12 3920icon%=block%!16 3930CASE window% OF 3940 WHEN -2:PROCibar(button%) 3950 WHEN main_window%:PROCmain_click(button%) 3960 WHEN merge_window%:PROCmerge_window 3970 WHEN save_window%:PROCsave_file(save_window%) 3980 WHEN save_window2%:PROCsave_file(save_window2%) 3990 WHEN team_window%:PROCteams 4000 WHEN draw_window%: 4010 OTHERWISE:PROCreport("Window "+STR$window%,1) 4020ENDCASE 4030ENDPROC 4040: 4050DEF PROCopen_window(window%) 4060!block%=window% 4070SYS "Wimp_GetWindowState",,block% 4080block%!28=-1 4090SYS "Wimp_OpenWindow",,block% 4100ENDPROC 4110: 4120DEF PROCibar(button%) 4130CASE button% OF 4140 WHEN 1,4: 4150 PROCopen_window(main_window%) 4160 WHEN 2: 4170 PROCshowmenu(icon_menu%,!block%-64,184) 4180ENDCASE 4190ENDPROC 4200: 4210DEF PROCshowmenu(menu%,mx%,my%) 4220menuopen%=menu% 4230SYS "Wimp_CreateMenu",,menu%,mx%,my% 4240ENDPROC 4250: 4260DEF PROCreceive 4270CASE block%!16 OF 4280 WHEN 0:PROCquit 4290 WHEN 2:PROCdatasave 4300 WHEN 3:PROCdataload 4310ENDCASE 4320ENDPROC 4330: 4340DEF PROCquit 4350LOCAL q% 4360IF NOT(altered%) THEN 4370 quit%=TRUE 4380 ENDPROC 4390ENDIF 4400q%=FNyn("WARNING: Unsaved data") 4410IF q% THEN quit%=TRUE 4420ENDPROC 4430: 4440DEF PROCredraw 4450LOCAL more%,window% 4460window%=!block% 4470SYS "Wimp_RedrawWindow",,block% TO more% 4480ox%=block%!4-block%!20 4490oy%=block%!16-block%!24 4500WHILE more% 4510 CASE window% OF 4520 WHEN main_window%: 4530 WHEN draw_window% 4540 IF per_team%=0 THEN 4550 PROCdraw_draw_window 4560 ELSE 4570 PROCdraw_team_window 4580 ENDIF 4590 ENDCASE 4600 SYS "Wimp_GetRectangle",,block% TO more% 4610ENDWHILE 4620ENDPROC 4630: 4640DEF PROCmain_click(button%) 4650icon%=block%!16 4660CASE button% OF 4670 WHEN 1,4: 4680 IF icon%>3 AND icon%<132 THEN PROClist(icon%) 4690 IF icon%>131 AND icon%<163 THEN PROCseed(icon%) 4700 WHEN 2: 4710 PROCmain_menu 4720ENDCASE 4730ENDPROC 4740: 4750DEF FNiconfromseed(seed%) 4760=(seed%+65)*2 4770: 4780DEF FNseedfromicon(icon%) 4790=(icon% DIV 2)-65 4800: 4810DEF PROCnameinicon(name$,icon%) 4820IF icon%<4 THEN ENDPROC 4830LOCAL z% 4840z%=names%+19*(icon%-4) 4850$z%=name$ 4860ENDPROC 4870: 4880DEF PROCseedinicon(name$,seed%) 4890LOCAL z% 4900z%=seeds%+19*(seed%-1) 4910$z%=name$ 4920ENDPROC 4930: 4940DEF PROClist(icon%) 4950LOCAL name%,n% 4960name%=FNnamefromicon(icon%) 4970IF name%>totnames% THEN ENDPROC 4980IF seeds_sel%<>0 THEN 4990 FOR n%=1TO16 5000 IF sel_seeds%?n%=1 THEN 5010 sel_seeds%?n%=0 5020 PROCchoose(FNiconfromseed(n%),FALSE) 5030 ENDIF 5040 NEXT 5050 seeds_sel%=0 5060ENDIF 5070IF selected%?name%=1 THEN 5080 REM already selected 5090 names_sel%-=1 5100 selected%?name%=0 5110 PROCchoose(icon%,FALSE) 5120ELSE 5130 REM not yet selected 5140 names_sel%+=1 5150 selected%?name%=1 5160 PROCchoose(icon%,TRUE) 5170ENDIF 5180ENDPROC 5190: 5200DEF PROCseed(icon%) 5210LOCAL n%,seed% 5220seed%=FNseedfromicon(icon%) 5230IF seed_exists%?seed%=0 THEN ENDPROC 5240IF names_sel%<>0 THEN 5250 FOR n%=1TOtotnames% 5260 IF selected%?n%=1 THEN 5270 PROCchoose(FNiconfromname(totnames%,n%),FALSE) 5280 selected%?n%=0 5290 ENDIF 5300 NEXT 5310 names_sel%=0 5320ENDIF 5330IF sel_seeds%?seed%=0 THEN 5340 sel_seeds%?seed%=1 5350 seeds_sel%+=1 5360 PROCchoose(icon%,TRUE) 5370ELSE 5380 sel_seeds%?seed%=0 5390 seeds_sel%-=1 5400 PROCchoose(icon%,FALSE) 5410ENDIF 5420ENDPROC 5430: 5440DEF FNiconfromname(tot%,name%) 5450IF tot%=0 THEN =0 5460name%-=1 5470LOCAL X%,x%,y% 5480X%=((tot%+3)DIV 4) 5490y%=name% MOD X% 5500x%=name% DIV X% 5510=y%*4+x%+4 5520: 5530DEF FNnamefromicon(icon%) 5540LOCAL X%,x%,y% 5550icon%-=4 5560X%=((totnames%+3)DIV 4) 5570x%=icon% MOD 4 5580y%=icon% DIV 4 5590IF y%>=X% THEN =totnames%+1 5600=x%*X%+y%+1 5610: 5620DEF PROCchoose(icon%,selected%) 5630LOCAL fcol%,bcol%,mask% 5640IF selected% THEN 5650 fcol%=12:bcol%=7 5660ELSE 5670 fcol%=7:bcol%=0 5680ENDIF 5690mask%=(fcol%<<24)+(bcol%<<28) 5700!block%=main_window% 5710block%!4=icon% 5720block%!8=mask% 5730block%!12=&FF<<24 5740SYS "Wimp_SetIconState",,block% 5750ENDPROC 5760: 5770DEF PROCcreate_menu(menu%) 5780LOCAL n%,title$,entries%,entry$,sub%,ptr%,wid% 5790REM set up menu 5800READ title$,entries% 5810$menu%=title$:REM menu title 5820menu%?12=7:REM title and frame foreground colour 5830menu%?13=2:REM title background colour 5840menu%?14=7:REM work area foreground colour 5850menu%?15=0:REM work area background colour 5860menu%!20=44:REM height of each entry 5870menu%!24=0:REM height between each entry 5880wid%=LEN(title$) 5890FOR n%=1TOentries% 5900 ptr%=menu%+4+24*n% 5910 READ entry$,sub% 5920 IF n%=entries% THEN 5930 !ptr%=128 5940 ELSE 5950 !ptr%=0 5960 ENDIF 5970 ptr%!4=sub% 5980 ptr%!8=&7000021 5990 $(ptr%+12)=entry$ 6000 IF LEN(entry$)>wid% THEN wid%=LEN(entry$) 6010NEXT 6020menu%!16=wid%*16+16:REM menu width 6030ENDPROC 6040: 6050DEF PROCset_up_menus 6060RESTORE +0 6070DATA "Make Draw",4,with seedings,-1,without,-1,doubles,-1,teams,team_window% 6080PROCcreate_menu(make_menu%) 6090DATA "Draw",4,make,make_menu%,show,-1,clear,-1,print,print_menu% 6100PROCcreate_menu(draw_menu%) 6110DATA "Seed",16,1,-1,2,-1,3,-1,4,-1,5,-1,6,-1,7,-1,8,-1,9,-1,10,-1,11,-1 6120DATA 12,-1,13,-1,14,-1,15,-1,16,-1 6130PROCcreate_menu(seed_menu%) 6140DATA "Select",4,delete,-1,seed,seed_menu%,un-seed,-1,clear,-1 6150PROCcreate_menu(select_menu%) 6160DATA "Save",2,file,save_window%,draw,save_window2% 6170PROCcreate_menu(save_menu%) 6180DATA"Main Menu",6,draw,draw_menu%,selection,select_menu%,save,save_menu%,new name,newname_window%,file info,fileinfo_window%,clear,-1 6190PROCcreate_menu(main_menu%) 6200DATA"CompDraw",2,Info,info_window%,Quit,-1 6210PROCcreate_menu(icon_menu%) 6220DATA"Print",5,Whole draw,-1,1st part,-1,2nd part,-1,3rd part,-1,4th part,-1 6230PROCcreate_menu(print_menu%) 6240ENDPROC 6250: 6260DEF PROCmenu_option_arrow(menu%,opt%,condition%,sub%) 6270LOCAL point% 6280point%=menu%+32+24*opt% 6290IF condition% THEN 6300 !point%=sub% 6310ELSE 6320 !point%=-1 6330ENDIF 6340ENDPROC 6350: 6360DEF PROCmenu_option_dark(menu%,opt%,condition%) 6370LOCAL point% 6380point%=menu%+36+24*opt% 6390IF condition% THEN 6400 !point%=(!point% OR &400000) 6410ELSE 6420 !point%=(!point% AND &FFBFFFFF) 6430ENDIF 6440ENDPROC 6450: 6460DEF PROCset_draw_menu 6470PROCmenu_option_dark(draw_menu%,0,draw_made%) 6480PROCmenu_option_dark(draw_menu%,1,NOTdraw_made%) 6490PROCmenu_option_dark(draw_menu%,2,NOTdraw_made%) 6500PROCmenu_option_dark(draw_menu%,3,NOTdraw_made%) 6510ENDPROC 6520: 6530DEF PROCmain_menu 6540PROCmenu_option_dark(print_menu%,1,quarters%<2) 6550PROCmenu_option_dark(print_menu%,2,quarters%<2) 6560PROCmenu_option_dark(print_menu%,3,quarters%<4) 6570PROCmenu_option_dark(print_menu%,4,quarters%<4) 6580PROCmenu_option_dark(main_menu%,0,totnames%+totseeds%<3) 6590PROCmenu_option_dark(main_menu%,1,names_sel%=0 AND seeds_sel%=0) 6600PROCmenu_option_dark(select_menu%,0,names_sel%=0) 6610PROCmenu_option_dark(select_menu%,1,names_sel%<>1 OR totseeds%=16) 6620PROCmenu_option_dark(select_menu%,2,seeds_sel%=0) 6630PROCmenu_option_dark(main_menu%,2,totnames%+totseeds%=0) 6640PROCmenu_option_dark(main_menu%,3,totnames%+totseeds%=128) 6650PROCmenu_option_dark(main_menu%,5,totnames%+totseeds%=0) 6660PROCmenu_option_dark(save_menu%,1,NOTdraw_made%) 6670PROCset_draw_menu 6680PROCmenu_option_dark(make_menu%,0,totseeds%=0) 6690PROCmenu_option_dark(make_menu%,1,totseeds%+totnames%<3) 6700PROCmenu_option_dark(make_menu%,2,totseeds%+totnames%<3) 6710FOR n%=1TO16 6720 PROCmenu_option_dark(seed_menu%,n%-1,seed_exists%?n%=1) 6730NEXT 6740$info1%=STR$totnames% 6750$info2%=STR$totseeds% 6760IF quarters%=1 OR per_team%<>0 THEN 6770 $sbspr2%="file_aff" 6780ELSE 6790 $sbspr2%="directory" 6800ENDIF 6810IF draw_made% THEN $info3%="YES" ELSE $info3%="NO" 6820PROCmenu_option_arrow(draw_menu%,3,per_team%=0,print_menu%) 6830PROCshowmenu(main_menu%,xpoint%-96,ypoint%) 6840ENDPROC 6850: 6860DEF PROCmainmenu_option 6870CASE mainoption% OF 6880 WHEN 0:PROCdraw_option :REM draw menu 6890 WHEN 1:PROCselect :REM select menu 6900 WHEN 2 :REM save 6910 WHEN 3 :REM newname 6920 WHEN 4 :REM file info 6930 WHEN 5:PROCclear_all :REM clear loaded file 6940 WHEN 6:quit%=TRUE :REM quit CompDraw 6950ENDCASE 6960IF button%=1 THEN 6970 PROCmain_menu 6980 PROCshowmenu(main_menu%,0,0) 6990ENDIF 7000ENDPROC 7010: 7020DEF PROCclear_all 7030LOCAL n% 7040FOR n%=1TOtotnames% 7050 names$(n%)="" 7060 selected%?n%=0 7070NEXT 7080FOR n%=1TO16 7090 $(seeds%+(n%-1)*19)="" 7100 seed_exists%?n%=0 7110 sel_seeds%?n%=0 7120NEXT 7130totnames%=0 7140totseeds%=0 7150names_sel%=0 7160seeds_sel%=0 7170per_team%=0 7180PROCno_draw 7190$title%="CompDraw : Competition Title" 7200$file%="CompDraw" 7210$file2%="Draw_File" 7220PROCput_names_in_icons 7230PROCshow_seeds 7240PROCchoose(title_icon%,FALSE) 7250altered%=FALSE 7260ENDPROC 7270: 7280DEF PROCselect 7290CASE subopt1% OF 7300 WHEN 0:PROCdelete_selection 7310 WHEN 1:PROCseed_selection 7320 WHEN 2:PROCunseed_selection 7330 WHEN 3:PROCclear_selection 7340ENDCASE 7350ENDPROC 7360: 7370DEF PROCdelete_name(name%) 7380LOCAL m% 7390FOR m%=name% TO totnames%-1 7400 names$(m%)=names$(m%+1) 7410NEXT 7420names$(totnames%)="deleted" 7430totnames%-=1 7440ENDPROC 7450: 7460DEF FNnot_clear_draw 7470IF NOT(draw_made%) THEN =FALSE 7480=NOT(FNyn("WARNING : This will clear the current draw")) 7490: 7500DEF PROCdelete_selection 7510IF FNnot_clear_draw THEN ENDPROC 7520LOCAL name% 7530IF totnames%=1 THEN 7540 names$(1)="" 7550 selected%?1=0 7560 totnames%=0 7570ELSE 7580 FOR name%=totnames%TO1 STEP-1 7590 IF selected%?name%=1 THEN 7600 PROCdelete_name(name%) 7610 selected%?name%=0 7620 ENDIF 7630 NEXT 7640ENDIF 7650names_sel%=0 7660PROCput_names_in_icons 7670PROCno_draw 7680altered%=TRUE 7690ENDPROC 7700: 7710DEF PROCput_names_in_icons 7720LOCAL n%,icon%,newmaxicon% 7730IF maxicon%>3 THEN 7740 FOR n%=4TO maxicon% 7750 IF FNnamefromicon(n%)>totnames% THEN 7760 PROCnameinicon("",n%) 7770 PROCchoose(n%,FALSE) 7780 ENDIF 7790 NEXT 7800ENDIF 7810newmaxicon%=3 7820IF totnames%<>0 THEN 7830 FOR n%=1TOtotnames% 7840 icon%=FNiconfromname(totnames%,n%) 7850 IF icon%>newmaxicon% THEN newmaxicon%=icon% 7860 PROCnameinicon(names$(n%),icon%) 7870 PROCchoose(icon%,FALSE) 7880 NEXT 7890ENDIF 7900maxicon%=newmaxicon% 7910ENDPROC 7920: 7930DEF PROCkeypressed 7940REM see WIMP PROGRAMMING FOR ALL page 48 7950window%=!block% 7960icon%=block%!4 7970key%=block%!24 7980IF key%<32 AND key%<>13 OR key%>&FF THEN 7990 SYS "Wimp_ProcessKey",key% 8000 ENDPROC 8010ENDIF 8020CASE window% OF 8030 WHEN main_window%:PROClose_caret 8040 WHEN newname_window%:PROCnewnamein 8050 WHEN save_window%: 8060 PROCquicksave(save_window%) 8070 PROCclose_menus 8080 WHEN save_window2%: 8090 PROCquicksave(save_window2%) 8100 PROCclose_menus 8110 WHEN team_window%:PROCteams 8120ENDCASE 8130ENDPROC 8140: 8150DEF PROClose_caret 8160SYS "Wimp_SetCaretPosition",-1 8170ENDPROC 8180: 8190DEF PROCnewnamein 8200IF FNnot_clear_draw THEN ENDPROC 8210LOCAL name$ 8220name$=$new_name% 8230$new_name%="" 8240IF name$="" THEN ENDPROC 8250PROCname_in(name$) 8260PROCput_names_in_icons 8270PROCno_draw 8280PROCmain_menu 8290altered%=TRUE 8300ENDPROC 8310: 8320DEF PROCname_in(name$) 8330LOCAL n% 8340n%=0 8350REPEAT 8360 n%+=1 8370UNTIL n%>totnames% OR names$(n%)>name$ 8380PROCinsertname(n%,name$) 8390ENDPROC 8400: 8410DEF PROCinsertname(n%,name$) 8420LOCAL m% 8430totnames%+=1 8440IF n%=totnames% THEN 8450 names$(totnames%)=name$ 8460ELSE 8470 FOR m%=totnames% TO n%+1 STEP-1 8480 names$(m%)=names$(m%-1) 8490 NEXT 8500 names$(n%)=name$ 8510ENDIF 8520ENDPROC 8530: 8540DEF PROCseed_selection 8550IF subopt2%<0 THEN ENDPROC 8560IF FNnot_clear_draw THEN ENDPROC 8570LOCAL name%,name$,seed%,icon% 8580name%=0 8590REPEAT 8600 name%+=1 8610UNTIL selected%?name%<>0 8620name$=names$(name%) 8630seed%=subopt2%+1 8640totseeds%+=1 8650seed_exists%?seed%=1 8660names_sel%=0 8670selected%?name%=0 8680PROCseedinicon(name$,seed%) 8690PROCdelete_name(name%) 8700PROCput_names_in_icons 8710icon%=FNiconfromseed(seed%) 8720PROCchoose(icon%,FALSE) 8730PROCno_draw 8740altered%=TRUE 8750ENDPROC 8760: 8770DEF PROCunseed_selection 8780IF FNnot_clear_draw THEN ENDPROC 8790LOCAL n%,name$ 8800FOR n%=1TO16 8810 IF sel_seeds%?n%=1 THEN 8820 name$=$(seeds%+19*(n%-1)) 8830 sel_seeds%?n%=0 8840 seed_exists%?n%=0 8850 totseeds%-=1 8860 PROCseedinicon("",n%) 8870 PROCname_in(name$) 8880 PROCchoose(FNiconfromseed(n%),FALSE) 8890 ENDIF 8900NEXT 8910seeds_sel%=0 8920PROCput_names_in_icons 8930PROCno_draw 8940altered%=TRUE 8950ENDPROC 8960: 8970DEF PROCclear_selection 8980LOCAL n% 8990IF seeds_sel%<>0 THEN 9000 FOR n%=1TO16 9010 IF sel_seeds%?n%=1 THEN 9020 sel_seeds%?n%=0 9030 PROCchoose(FNiconfromseed(n%),FALSE) 9040 ENDIF 9050 NEXT 9060 seeds_sel%=0 9070 ENDPROC 9080ENDIF 9090FOR n%=1TOtotnames% 9100 IF selected%?n%=1 THEN 9110 selected%?n%=0 9120 PROCchoose(FNiconfromname(totnames%,n%),FALSE) 9130 ENDIF 9140NEXT 9150names_sel%=0 9160ENDPROC 9170: 9180DEF FNstring(point%) 9190LOCAL a$,n% 9200a$="" 9210n%=?point% 9220WHILE n%<>13 AND n%<>0 9230 a$+=CHR$(n%) 9240 point%+=1 9250 n%=?point% 9260ENDWHILE 9270=a$ 9280: 9290DEF PROCset_variables 9300LOCAL n%,icon% 9310totnames%=base%?42 9320totseeds%=base%?43 9330doubles%=(base%?2999=1) 9340per_team%=base%?2998 9350teams%=base%?2997 9360PROCset_quarters 9370FOR n%=1TOtotnames% 9380 icon%=FNiconfromname(totnames%,n%) 9390 names$(n%)=$(names%+19*(icon%-4)) 9400NEXT 9410IF (base%?44=1) THEN 9420 PROCset_draw_names 9430 IF per_team%=0 THEN 9440 PROCshow_draw 9450 ELSE 9460 PROCshow_teams 9470 ENDIF 9480ELSE 9490 PROCno_draw 9500ENDIF 9510ENDPROC 9520: 9530DEF PROCdataload 9540LOCAL type%,action% 9550type%=block%!40 9560path$=FNstring(block%+44) 9570IF type%<>filetype% THEN 9580 CASE type% OF 9590 WHEN &1000:PROCreport("Object is a directory",16) 9600 WHEN &2000:PROCreport("Object is an application",16) 9610 OTHERWISE:PROCreport("Unknown filetype "+STR$~type%,16) 9620 ENDCASE 9630 ENDPROC 9640ENDIF 9650IF totnames%+totseeds%=0 THEN 9660 PROCloadit(path$) 9670ELSE 9680 PROCmerge 9690ENDIF 9700ENDPROC 9710: 9720DEF PROCloadit(file$) 9730$file%=file$ 9740SYS "OS_File",12,file%,base%,0,13 9750PROCno_draw 9760PROCset_variables 9770PROCput_names_in_icons 9780PROCchoose(title_icon%,FALSE) 9790PROCshow_seeds 9800PROCopen_window(main_window%) 9810altered%=FALSE 9820$file2%="Draw_File" 9830ENDPROC 9840: 9850DEF PROCshow_seeds 9860LOCAL n% 9870FOR n%=1TO16 9880 PROCchoose(FNiconfromseed(n%),FALSE) 9890NEXT 9900ENDPROC 9910: 9920DEF PROCmerge 9930PROCopen_window(merge_window%) 9940MOUSE RECTANGLE 340,400,600,240 9950ENDPROC 9960: 9970DEF PROCclose_merge_window 9980!block%=merge_window% 9990SYS "Wimp_CloseWindow",,block% 10000*POINTER 10010ENDPROC 10020: 10030DEF PROCmerge_window 10040LOCAL icon% 10050icon%=block%!16 10060CASE icon% OF 10070 WHEN loa%: 10080 PROCclose_merge_window 10090 PROCloadit(path$) 10100 WHEN mer%: 10110 PROCclose_merge_window 10120 PROCmerge_it 10130 WHEN can%: 10140 PROCclose_merge_window 10150ENDCASE 10160ENDPROC 10170: 10180DEF PROCsload(file$,area%) 10190REM ***** loads sprite file 'file$' to area pointed to by 'area' ***** 10200LOCAL A$,Q%,len% 10210Q%=OPENIN(file$) 10220IF Q%=0 THEN 10230 CLOSE#Q% 10240 VDU 7 10250 ENDPROC 10260ENDIF 10270len%=EXT#(Q%) 10280CLOSE#Q% 10290area%!0=len%+10 10300area%!8=16 10310REM initialise sprite area 10320SYS "OS_SpriteOp",&109,area% 10330REM load sprite file 10340SYS "OS_SpriteOp",&10A,area%,file$ 10350ENDPROC 10360: 10370DEF PROCread_load_filename(RETURN printit%) 10380LOCAL I% 10390SYS "OS_GetEnv" TO file$ 10400IF INSTR(file$," -quit ") THEN 10410 I%=INSTR(file$,"""") 10420 I%=INSTR(file$,"""",I%+1) 10430 REPEAT 10440 I%+=1 10450 UNTIL MID$(file$,I%,1)<>" " 10460 file$=MID$(file$,I%) 10470 printit%=(LEFT$(file$,6)="-Print") 10480 IF printit% THEN file$=MID$(file$,8) 10490 IF file$<>"" THEN PROCloadit(file$) 10500ENDIF 10510ENDPROC 10520: 10530DEF PROCsaveit(window%,RETURN ok%) 10540CASE window% OF 10550 WHEN save_window%:PROCsave_it_file(ok%) 10560 WHEN save_window2%:PROCsave_it_draw(ok%) 10570ENDCASE 10580ENDPROC 10590: 10600DEF PROCfiletype(file%,RETURN type%,RETURN f_type%) 10610SYS "OS_File",5,file% TO type%,,f_type% 10620f_type%=(f_type% >> 8)AND &FFF 10630ENDPROC 10640: 10650DEF PROCsave_it_file(RETURN ok%) 10660ok%=TRUE 10670LOCAL file$,f%,type%,ft% 10680file$=$file% 10690PROCfiletype(file%,type%,ft%) 10700IF type%=2 THEN 10710 PROCreport("Object is a directory",17) 10720 ok%=FALSE 10730 ENDPROC 10740ENDIF 10750IF ft%<>filetype% AND type%=1 THEN 10760 ok%=FNyn("An object of this name already exists (type "+STR$~ft%+"). Continue ?") 10770 IF NOT(ok%) THEN ENDPROC 10780ENDIF 10790base%?42=totnames% 10800base%?43=totseeds% 10810base%?44=-draw_made% 10820base%?2999=-doubles% 10830base%?2998=per_team% 10840base%?2997=teams% 10850SYS "OS_File",10,file%,filetype%,,base%,base%+3000 10860PROCclose_menus 10870altered%=FALSE 10880ENDPROC 10890: 10900DEF PROCdraw_title(v%,y%) 10910IF v%=1 THEN 10920 PROCtext(100*xscale%,1960*yscale%,$title%,15,18,2,black%,white%,1) 10930ELSE 10940 PROCtext(70*xscale2%,1960*yscale%,$title%,15,18,2,black%,white%,1) 10950ENDIF 10960ENDPROC 10970: 10980DEF PROCsub_title(n%,quarters%) 10990LOCAL A$ 11000IF quarters%=4 THEN 11010 CASE n% OF 11020 WHEN 1:A$="1st QUARTER" 11030 WHEN 2:A$="2nd QUARTER" 11040 WHEN 3:A$="3rd QUARTER" 11050 WHEN 4:A$="4th QUARTER" 11060 ENDCASE 11070ELSE 11080 CASE n% OF 11090 WHEN 1:A$="TOP HALF" 11100 WHEN 2:A$="BOTTOM HALF" 11110 ENDCASE 11120ENDIF 11130PROCtext(100*xscale%,1880*yscale%,A$,12,12,2,black%,white%,0) 11140ENDPROC 11150: 11160DEF PROCsave_it_teams(RETURN ok%) 11170REM ZZZ 11180SYS "Hourglass_On" 11190LOCAL n%,bot_y%,f$,type%,ft% 11200PROCfiletype(file2%,type%,ft%) 11210IF type%=2 THEN 11220 PROCreport("Object is a directory",17) 11230 ok%=FALSE 11240 ENDPROC 11250ENDIF 11260IF type%=1 AND ft%<>&AFF THEN 11270 ok%=FNyn("An object of this name already exists (type "+STR$~ft%+"). Continue ?") 11280 IF NOT(ok%) THEN ENDPROC 11290ENDIF 11300f$=$file2% 11310PROCdrawfile_start(f$) 11320PROCfonttable 11330FOR n%=1TO teams% 11340 PROCdrawfile_teams(n%,bot_y%) 11350NEXT 11360PROCdraw_title(1,(bot_y%-160)*yscale%) 11370PROCdrawfile_end 11380SYS "Hourglass_Off" 11390ok%=TRUE 11400ENDPROC 11410: 11420DEF PROCdrawfile_teams(t%,RETURN bot_y%) 11430LOCAL x%,y% 11440t%-=1 11450x%=(t% MOD 4)*400+100 11460y%=1860-36*(per_team%+3.5)*(t% DIV 4) 11470t%+=1 11480a$="TEAM "+STR$t% 11490PROCtext(x%*xscale%,y%*yscale%,a$,12,12,1,black%,black%,1) 11500FOR p%=1TO per_team% 11510 a$=FNplayer(t%,p%) 11520 PROCtext(x%*xscale%,(y%-36*p%-16)*yscale%,a$,8,12,1,black%,black%,0) 11530 bot_y%=(y%-36*p%-16) 11540NEXT 11550ENDPROC 11560: 11570DEF FNspace(A$,l%) 11580WHILE LEN(A$)<l% 11590 A$+=" " 11600ENDWHILE 11610=LEFT$(A$,l%) 11620: 11630DEF PROCquicksave(window%) 11640LOCAL file$,ok% 11650CASE window% OF 11660 WHEN save_window%:file$=$file% 11670 WHEN save_window2%:file$=$file2% 11680ENDCASE 11690IF INSTR(file$,".") THEN 11700 PROCsaveit(window%,ok%) 11710ELSE 11720 PROCreport("To save, drag the icon to a directory viewer",1) 11730ENDIF 11740ENDPROC 11750: 11760DEF PROCsave_file(window%) 11770CASE icon% OF 11780 WHEN ok%,ok2%: 11790 IF block%!8 AND 5 PROCquicksave(window%) 11800 IF button%=4 THEN PROCclose_menus 11810 WHEN drag%,drag2%: 11820 IF block%!8 AND 64 PROCdragbox(window%,icon%) 11830ENDCASE 11840ENDPROC 11850: 11860DEF PROCstartsave(window%) 11870SYS "Wimp_GetPointerInfo",,block% 11880block%!20=block%!12 :REM window handle - message sent to window's creator 11890block%!24=block%!16 :REM icon handle - message sent to icon's creator 11900block%!28=!block% :REM mouse x 11910block%!32=block%!4 :REM mouse y 11920 11930block%!36=LENobj$+LENpath$+LENtype$+3:REM 11940 11950!block%=64 :REM length of block 11960block%!12=0 :REM my ref (0=original message) 11970block%!16=1 :REM message action - data save 11980block%!40=filetype% :REM file type 11990 12000CASE window% OF 12010 WHEN save_window%:$(block%+44)=FNgetleaf($file%) 12020 WHEN save_window2%:$(block%+44)=FNgetleaf($file2%) 12030ENDCASE 12040SYS "Wimp_SendMessage",18,block%,block%!20,block%!24 12050ENDPROC 12060: 12070DEF FNgetleaf(a$) 12080WHILE INSTR(a$,".") 12090 a$=MID$(a$,INSTR(a$,".")+1) 12100ENDWHILE 12110=a$+CHR$0 12120: 12130DEF PROCdragbox(window%,icon%) 12140drag_from%=window% 12150!block%=window% 12160SYS "Wimp_GetWindowState",,block% 12170ox%=block%!4-block%!20 12180oy%=block%!16-block%!24 12190block%!4=icon% :REM icon number 12200SYS "Wimp_GetIconState",,block% 12210block%!4=5 :REM drag type - rotating fixed size box 12220block%!8=ox%+block%!8 :REM minimum x at start 12230block%!12=oy%+block%!12 :REM minimum y at start 12240block%!16=ox%+block%!16 :REM maximum x at start 12250block%!20=oy%+block%!20 :REM maximum y at start 12260block%!24=0 :REM minimum x of parent box 12270block%!28=0 :REM minimum y of parent box 12280block%!32=&7FFFFFFF :REM maximum x of parent box 12290block%!36=&7FFFFFFF :REM maximum y of parent box 12300SYS "Wimp_DragBox",,block% 12310ENDPROC 12320: 12330DEF PROCdatasave 12340LOCAL ok%,a%,b%,c% 12350CASE drag_from% OF 12360 WHEN save_window%:$file%=FNstring(block%+44) 12370 WHEN save_window2%:$file2%=FNstring(block%+44) 12380ENDCASE 12390a%=block%!8 12400b%=block%!20 12410c%=block%!24 12420PROCsaveit(drag_from%,ok%) 12430IF NOT(ok%) THEN ENDPROC 12440block%!12=a% 12450block%!16=3 12460block%!20=b% 12470block%!24=c% 12480!block%=256 12490SYS "Wimp_SendMessage",18,block%,block%!20,block%!24 12500ENDPROC 12510: 12520DEF FNget_name 12530LOCAL n$,n% 12540n$="" 12550n%=BGET#Q% 12560WHILE n%<>13 AND n%<>0 AND LEN(n$)<20 12570 n$+=CHR$(n%) 12580 n%=BGET#Q% 12590ENDWHILE 12600=n$ 12610: 12620DEF PROCmerge_it 12630LOCAL totn%,tots%,n%,Q%,icon%,n$ 12640Q%=OPENIN(path$) 12650PTR#Q%=42 12660totn%=BGET#Q% 12670tots%=BGET#Q% 12680IF totnames%+totseeds%+totn%+tots%>128 THEN 12690 PROCreport("Too many names.",1) 12700 ENDPROC 12710ENDIF 12720IF totn%<>0 THEN 12730 FOR n%=1TOtotn% 12740 icon%=FNiconfromname(totn%,n%) 12750 PTR#Q%=45+(icon%-4)*19 12760 n$=FNget_name 12770 PROCname_in(n$) 12780 NEXT 12790ENDIF 12800FOR n%=1TO16 12810 PTR#Q%=2962+n% 12820 IF BGET#Q%=1 THEN 12830 PTR#Q%=2500+(n%-1)*19 12840 n$=FNget_name 12850 PROCname_in(n$) 12860 ENDIF 12870NEXT 12880PROCput_names_in_icons 12890PROCshow_seeds 12900PROCno_draw 12910PROCset_quarters 12920PROCopen_window(main_window%) 12930altered%=TRUE 12940ENDPROC 12950: 12960DEF PROCadd_extras 12970LOCAL n%,m% 12980extras%=totseeds% 12990IF (totnames%+totseeds%)AND 1 THEN 13000 names$(totnames%+totseeds%+1)="A.N.Other" 13010ENDIF 13020IF totseeds%=0 THEN ENDPROC 13030m%=0 13040FOR n%=1TO16 13050 IF seed_exists%?n%=1 THEN 13060 m%+=1 13070 names$(totnames%+m%)=$(seeds%+19*(n%-1)) 13080 ENDIF 13090NEXT 13100ENDPROC 13110: 13120DEF PROCset_quarters 13130LOCAL n% 13140n%=1 13150WHILE n%<totnames%+totseeds% 13160 n%=n%*2 13170ENDWHILE 13180CASE n% OF 13190 WHEN 128: 13200 quarters%=4 13210 per_quart%=32 13220 WHEN 64: 13230 quarters%=2 13240 per_quart%=32 13250 OTHERWISE 13260 quarters%=1 13270 per_quart%=n% 13280ENDCASE 13290tot_draw%=n% 13300IF doubles% THEN 13310 CASE quarters% OF 13320 WHEN 2,4:quarters%=quarters%/2 13330 WHEN 1:per_quart%=per_quart%/2 13340 ENDCASE 13350ENDIF 13360ENDPROC 13370: 13380DEF PROCshow_draw 13390LOCAL width%,height%,n%,m% 13400width%=quarters%*288+64 13410IF doubles% THEN width%=quarters%*576+64 13420height%=per_quart%*44+64 13430m%=doubles%:n%=per_team% 13440PROCno_draw 13450doubles%=m%:per_team%=n% 13460draw_made%=TRUE 13470draw_window%=FNcreate_window(960,704,320,320,width%-320,height%-320,&BF000002,"Draw",0,0) 13480PROCopen_window(draw_window%) 13490ENDPROC 13500: 13510DEF PROCshow_teams 13520IF teams%>3 THEN 13530 width%=78*16 13540ELSE 13550 width%=teams%*19*16 13560ENDIF 13570height%=((teams%-1) DIV 4+1)*32*(per_team%+3)+32 13580draw_window%=FNcreate_window(960,704,320,320,width%-320,height%-320,&BF000002,"Teams",0,0) 13590PROCopen_window(draw_window%) 13600draw_made%=TRUE 13610ENDPROC 13620: 13630DEF PROCdraw_draw_window 13640LOCAL n%,m%,num%,w% 13650IF doubles% THEN w%=576:ELSE w%=288 13660FOR n%=1TO quarters% 13670 FOR m%=1TO per_quart% 13680 num%=(n%-1)*per_quart%+m% 13690 IF ASC(draw$(num%))<17 THEN 13700 SYS "Wimp_SetColour",11 13710 ELSE 13720 SYS "Wimp_SetColour",7 13730 ENDIF 13740 MOVE ox%+(n%-1)*w%+32,oy%-44*m%-8*(m% AND 1) 13750 PRINT MID$(draw$((n%-1)*per_quart%+m%),2) 13760 IF (m% AND 1)=0 AND m%<>per_quart% THEN 13770 SYS "Wimp_SetColour",8 13780 MOVE ox%+(n%-1)*w%+32,oy%-44*m%-36 13790 PLOT 1,w%-16,0 13800 ENDIF 13810 NEXT 13820NEXT 13830ENDPROC 13840: 13850DEF PROCdraw_option 13860CASEsubopt1% OF 13870 WHEN 0:PROCmake_draw 13880 WHEN 1:PROCopen_window(draw_window%) 13890 WHEN 2: 13900 PROCno_draw 13910 altered%=TRUE 13920 WHEN 3:PROCprint_draw 13930ENDCASE 13940ENDPROC 13950: 13960DEF PROCno_draw 13970IF draw_made% THEN 13980 !block%=draw_window% 13990 SYS "Wimp_DeleteWindow",,block% 14000ENDIF 14010draw_made%=FALSE 14020doubles%=FALSE 14030per_team%=0 14040ENDPROC 14050: 14060DEF FNclear_draw 14070=FNyn("Clear Existing Draw ?") 14080: 14090DEF FNyn(a$) 14100PROCreport(a$,19) 14110=(errclick%=1) 14120: 14130DEF PROCmake_draw 14140LOCAL n% 14150IF subopt2%=-1 THEN ENDPROC 14160IF subopt2%=3 THEN 14170 PROCteams 14180 ENDPROC 14190ENDIF 14200FOR n%=1TO128 14210 draw$(n%)=" bye" 14220 drawn?n%=0 14230NEXT 14240IF subopt2%=2 THEN 14250 PROCdoubles 14260 ENDPROC 14270ENDIF 14280doubles%=FALSE 14290per_team%=0 14300teams%=0 14310PROCset_quarters 14320LOCAL withseeds% 14330withseeds%=(subopt2%=0) 14340IF withseeds% THEN 14350 PROCput_seeds_in 14360ELSE 14370 PROCadd_extras 14380ENDIF 14390FOR n%=1TOtot_draw% STEP 2 14400 IF draw$(n%)=" bye" THEN draw$(n%)=FNname(n%) 14410NEXT 14420IF totnames%<>0 THEN 14430 FOR n%=1TOtotnames%+extras% 14440 IF drawn?n%=0 THEN PROCput_name_in(n%) 14450 NEXT 14460ENDIF 14470FOR n%=1TO128 14480 IF draw$(n%)=" BYE" THEN draw$(n%)=" bye" 14490NEXT 14500PROCshow_draw 14510altered%=TRUE 14520ENDPROC 14530: 14540DEF FNname(pos%) 14550LOCAL n%,a$ 14560REPEAT 14570 n%=RND(totnames%+extras%) 14580UNTIL drawn?n%=0 14590drawn?n%=1 14600drawpos%?n%=pos% 14610IF n%>totnames% THEN 14620 a$=CHR$(n%-totnames%) 14630ELSE 14640 a$=" " 14650ENDIF 14660=a$+names$(n%) 14670: 14680DEF PROCput_name_in(name%) 14690LOCAL n%,a$ 14700REPEAT 14710 n%=RND(tot_draw%) AND %11111110 14720UNTIL draw$(n%)=" bye" 14730drawpos%?name%=n% 14740IF name%>totnames% THEN 14750 a$=CHR$(name%-totnames%) 14760ELSE 14770 a$=" " 14780ENDIF 14790draw$(n%)=a$+names$(name%) 14800ENDPROC 14810: 14820DEF PROCset_draw_names 14830IF doubles% THEN 14840 PROCset_draw_names_doubles 14850ELSE 14860 PROCset_draw_names_singles 14870ENDIF 14880ENDPROC 14890: 14900DEF PROCset_draw_names_doubles 14910LOCAL n% 14920FOR n%=1TO64 14930 draw$(n%)=" bye" 14940NEXT 14950PROCadd_extras 14960FOR n%=1TO64 14970 m%=drawpos%?(n%*2-1) 14980 IF m%<>0 THEN 14990 draw$(n%)=" "+names$(drawpos%?(n%*2-1))+" & "+names$(drawpos%?(n%*2)) 15000 ENDIF 15010NEXT 15020ENDPROC 15030: 15040DEF PROCset_draw_names_singles 15050LOCAL n% 15060FOR n%=1TO128 15070 IF per_team%=0 THEN 15080 draw$(n%)=" bye" 15090 ELSE 15100 draw$(n%)=" -----" 15110 ENDIF 15120NEXT 15130PROCadd_extras 15140IF totnames%<>0 THEN 15150 FOR n%=1TO totnames% 15160 draw$(drawpos%?n%)=" "+names$(n%) 15170 NEXT 15180ENDIF 15190IF totseeds%<>0 THEN 15200 FOR n%=1TOtotseeds% 15210 draw$(drawpos%?(n%+totnames%))=CHR$(n%)+names$(n%+totnames%) 15220 NEXT 15230ENDIF 15240ENDPROC 15250: 15260DEF PROCput_seeds_in 15270LOCAL n%,m%,byes% 15280byes%=tot_draw%-totnames%-totseeds% 15290PROCset_seed_positions 15300extras%=0 15310m%=0 15320FOR n%=1TO16 15330 IF seed_exists%?n%=1 THEN 15340 m%+=1:REM m% in V if seeds to be compressed 15350 PROCput_seed_in(n%,$(seeds%+19*(n%-1))) 15360 ENDIF 15370NEXT 15380ENDPROC 15390: 15400DEF PROCset_seed_positions 15410LOCAL R%,n% 15420seedpos%(1)=0 15430seedpos%(2)=8 15440R%=RND(2) 15450IF R%=1 THEN 15460 seedpos%(3)=4 15470 seedpos%(4)=12 15480ELSE 15490 seedpos%(4)=4 15500 seedpos%(3)=12 15510ENDIF 15520seedpos%(5)=2 15530seedpos%(6)=6 15540seedpos%(7)=10 15550seedpos%(8)=14 15560FOR n%=5TO8 15570 R%=RND(4)+4 15580 SWAP seedpos%(n%),seedpos%(R%) 15590NEXT 15600seedpos%(9)=1 15610seedpos%(10)=3 15620seedpos%(11)=5 15630seedpos%(12)=7 15640seedpos%(13)=9 15650seedpos%(14)=11 15660seedpos%(15)=13 15670seedpos%(16)=15 15680FOR n%=9TO16 15690 R%=RND(8)+8 15700 SWAP seedpos%(n%),seedpos%(R%) 15710NEXT 15720CASE tot_draw% OF 15730 WHEN 4: 15740 FOR n%=1TO4 15750 seedpos%(n%)=seedpos%(n%)/4 15760 NEXT 15770 WHEN 8: 15780 FOR n%=1TO8 15790 seedpos%(n%)=seedpos%(n%)/2 15800 NEXT 15810ENDCASE 15820ENDPROC 15830: 15840DEF PROCput_seed_in(seed%,name$) 15850pos%=FNpos_from_seed(seed%) 15860drawpos%?(seed%+totnames%)=pos% 15870draw$(pos%)=CHR$(seed%)+name$ 15880IF seed%<=byes% THEN draw$(pos%+1)=" BYE" 15890ENDPROC 15900: 15910DEF FNpos_from_seed(seed%) 15920LOCAL s% 15930s%=tot_draw% DIV 16 15940IF s%=0 THEN s%=1 15950=s%*seedpos%(seed%)+1 15960: 15970DEF FNfind_fonts 15980LOCAL ERROR 15990ON ERROR LOCAL:PROCreport("Unable to find font 'Trinity' FILE NOT SAVED",16):=FALSE 16000SYS "Font_FindFont",,"Trinity.Medium",150,180 TO f1% 16010SYS "Font_FindFont",,"Trinity.Bold",240,240 TO f2% 16020SYS "Font_FindFont",,"Trinity.Medium",96,120 TO f3% 16030=TRUE 16040: 16050DEF PROCprint_draw 16060LOCAL fonts% 16070IF subopt2%=-1 AND per_team%=0 THEN ENDPROC 16080LOCAL w%,h%,l%,b%,r%,t%,from%,to%,max_len% 16090OSCLI ("RMEnsure PDriver 0 ERROR 255 No printer driver installed") 16100fonts%=FNfind_fonts 16110IF NOT(fonts%) THEN ENDPROC 16120PROClongest(TRUE) 16130IF max_len%<200 THEN max_len%=200 16140IF max_len%>400 THEN max_len%=400 16150SYS "Hourglass_On" 16160 16170pf%=OPENOUT("PRINTER:") 16180 16190IF pf%=0 THEN 16200 PROCreport("PDriver job= "+STR$pf%,17) 16210 ENDPROC 16220ENDIF 16230SYS "PDriver_SelectJob",pf%,"CompJob" 16240LOCAL ERROR 16250ON ERROR LOCAL:RESTORE ERROR:SYS "PDriver_AbortJob",pf%:CLOSE#pf%:SYS "Hourglass_Off":PROCerror(REPORT$):ENDPROC 16260SYS "PDriver_PageSize" TO ,w%,h%,l%,b%,r%,t% 16270x%=72000 16280 16290!rect%=0 :REM 4 word block containing rectangle to be plotted 16300rect%!4=0 16310rect%!8=1450 :REM max x 16320rect%!12=1900 :REM max y 16330 16340!trans%=1<<16 :REM 4 word block containing transformation table 16350trans%!4=0 16360trans%!8=0 16370trans%!12=1<<16 16380 16390!plotat%=l%:plotat%!4=b%:REM plot position - start at (0,0) 16400 16410REM &FFFFFF00 - background colour in form BBGGRRXX 16420IF per_team%<>0 THEN 16430 from%=1 16440 to%=1 16450ELSE 16460 IF subopt2%=0 THEN 16470 from%=1 16480 to%=quarters% 16490 ELSE 16500 from%=subopt2% 16510 to%=subopt2% 16520 ENDIF 16530ENDIF 16540bx%=25 16550FOR quarts%=from%TOto% 16560 SYS "PDriver_GiveRectangle",0,rect%,trans%,plotat%,&FFFFFF00 16570 SYS "PDriver_DrawPage",1,block%,0,0 TO more% 16580 WHILE more% 16590 IF per_team%=0 THEN 16600 PROCprint_quarter(quarts%) 16610 ELSE 16620 PROCprint_teams 16630 ENDIF 16640 SYS "PDriver_GetRectangle",,block% TO more% 16650 ENDWHILE 16660NEXT quarts% 16670SYS "PDriver_EndJob",pf% 16680SYS "Hourglass_Off" 16690RESTORE ERROR 16700CLOSE#pf% 16710SYS "Font_LoseFont",f1% 16720SYS "Font_LoseFont",f2% 16730SYS "Font_LoseFont",f3% 16740ENDPROC 16750: 16760DEF PROClongest(OS%) 16770REM returns the length of the longest 'name' in points 16780max_len%=0:max$="" 16790FOR n%=1TO128 16800 a%=FNlen(FNseed(n%),f3%) 16810 IF a%>max_len% THEN max_len%=a%:max$=draw$(n%) 16820NEXT n% 16830IF OS% THEN 16840 max_len%=((max_len%*180) DIV 72000)+10: REM millipoints to OS 16850ELSE 16860 max_len%=(max_len%/1.55)+200: REM set up for draw files 16870ENDIF 16880ENDPROC 16890: 16900DEF FNlen(a$,font%) 16910LOCAL len,split% 16920$lens%=a$ 16930SYS "Font_SetFont",font% 16940SYS "Font_StringWidth",,lens%,3<<24,3<<24,-1,255 TO ,,len,,split% 16950IF split%<>LEN(a$) THEN PROCreport(a$+":"+STR$split%,17) 16960=len 16970: 16980DEF PROCcolour(x%) 16990SYS "ColourTrans_SetGCOL",x% 17000ENDPROC 17010: 17020DEF PROCtitle(x%) 17030LOCAL a$ 17040a$=CHR$(25)+CHR$(130)+CHR$(20)+$title%+CHR$(25)+CHR$(130)+CHR$(0) 17050SYS "Font_SetFont",f2% 17060SYS "Font_Paint",,a$,16,x%,1850 17070ENDPROC 17080: 17090DEF PROCprint_quarter(quart%) 17100LOCAL n%,base%,m% 17110base%=(quart%-1)*per_quart% 17120PROCcolour(0) 17130SYS "ColourTrans_SetFontColours",,&FFFFFF00,0,7 17140PROCtitle(bx%) 17150PROCheader(quart%,quarters%) 17160SYS "Font_SetFont",f3% 17170FOR n%=base%+1TObase%+per_quart% STEP 2 17180 IF draw$(n%+1)<>" bye" THEN 17190 FOR m%=0TO1 17200 SYS "Font_Paint",,FNseed(n%+m%),16,bx%,1700-(n%+m%-base%)*50+sy%+4 17210 MOVE bx%,1695-(n%+m%-base%)*50+sy% 17220 PLOT 1,max_len%,0 17230 NEXT 17240 PLOT 1,0,50 17250 MOVE max_len%+bx%,1670-(n%-base%)*50+sy% 17260 PLOT 1,200,0 17270 ELSE 17280 SYS "Font_Paint",,FNseed(n%),16,200+bx%,1675-(n%-base%)*50+sy%+4 17290 MOVE 200+bx%,1670-(n%-base%)*50+sy% 17300 PLOT 1,max_len%,0 17310 ENDIF 17320NEXT 17330m%=1:n%=1 17340WHILE m%<per_quart% 17350 m%=m%*2 17360 n%+=1 17370ENDWHILE 17380IF n%>1 THEN 17390 PROClines(n%*200+max_len%+bx%-200,1670-25*per_quart%+sy%,per_quart%) 17400ENDIF 17410ENDPROC 17420: 17430DEF FNseed(x%) 17440=FNseed_string(draw$(x%)) 17450: 17460DEF FNseed_string(s$) 17470LOCAL seed% 17480seed%=ASC(s$) 17490s$=MID$(s$,2) 17500IF seed%<17 THEN s$+=" ("+STR$seed%+")" 17510=s$ 17520: 17530DEF PROClines(x%,y%,z%) 17540MOVE x%,y%:PLOT 1,-200,0 17550x%-=200 17560MOVE x%,y%-z%/2*25 17570PLOT 1,0,z%*25 17580IF z%>4 THEN 17590 PROClines(x%,y%-z%/2*25,z%/2) 17600 PROClines(x%,y%+z%/2*25,z%/2) 17610ENDIF 17620ENDPROC 17630: 17640DEF FNword(point%) 17650IF point%<>0 THEN 17660 =area%!(point%*4-4) 17670ELSE 17680 v%=!i% 17690 i%+=4 17700 =v% 17710ENDIF 17720 : 17730DEF PROCheader(quart%,quarters%) 17740LOCAL a$ 17750IF quarters%=1 THEN 17760 sy%=100 17770 ENDPROC 17780ENDIF 17790sy%=0 17800CASE quarters% OF 17810 WHEN 2: 17820 IF quart%=1 THEN a$="TOP HALF" ELSE a$="BOTTOM HALF" 17830 WHEN 4: 17840 CASE quart% OF 17850 WHEN 1:a$="1st" 17860 WHEN 2:a$="2nd" 17870 WHEN 3:a$="3rd" 17880 WHEN 4:a$="4th" 17890 ENDCASE 17900 a$+=" QUARTER" 17910ENDCASE 17920SYS "Font_SetFont",f2% 17930SYS "Font_Paint",,a$,16,bx%,1750 17940ENDPROC 17950: 17960DEF PROCdoubles 17970LOCAL n%,m%,tot% 17980FOR n%=1TO128 17990 drawpos%?n%=0 18000NEXT 18010PROCadd_extras 18020FOR n%=1TOtotnames%+totseeds% 18030 double$(n%)=names$(n%) 18040 double%(n%)=n% 18050NEXT 18060tot%=totnames%+totseeds% 18070IF (tot% AND 1)=1 THEN 18080 double$(tot%+1)="A.N.Other" 18090 double%(tot%+1)=tot%+1 18100 tot%+=1 18110ENDIF 18120FOR n%=1TOtot% 18130 m%=RND(tot%) 18140 SWAP double$(n%),double$(m%) 18150 SWAP double%(n%),double%(m%) 18160NEXT 18170FOR n%=1TOtot%/2 18180 double$(n%)=" "+double$(n%*2-1)+" & "+double$(n%*2) 18190 double%(n%)=double%(n%*2-1)*256+double%(n%*2) 18200NEXT 18210doubles%=TRUE 18220per_team%=0 18230teams%=0 18240PROCset_quarters 18250tot_draw%=quarters%*per_quart% 18260tot%=tot%/2 18270FOR n%=1TOtot_draw%STEP 2 18280 REPEAT 18290 m%=RND(tot%) 18300 UNTIL double$(m%)<>"" 18310 draw$(n%)=double$(m%) 18320 drawpos%?(n%*2-1)=double%(m%)DIV 256 18330 drawpos%?(n%*2)=double%(m%)MOD 256 18340 double$(m%)="" 18350NEXT 18360FOR n%=1TOtot% 18370 IF double$(n%)<>"" THEN 18380 REPEAT 18390 m%=RND(tot_draw%) AND %11111110 18400 UNTIL draw$(m%)=" bye" 18410 draw$(m%)=double$(n%) 18420 drawpos%?(m%*2-1)=double%(n%)DIV 256 18430 drawpos%?(m%*2)=double%(n%)MOD 256 18440 double$(n%)="" 18450 ENDIF 18460NEXT 18470PROCshow_draw 18480altered%=TRUE 18490ENDPROC 18500: 18510DEF PROCdraw_team_window 18520LOCAL n% 18530FOR n%=1TO teams% 18540 PROCdraw_team(n%) 18550NEXT 18560ENDPROC 18570: 18580DEF PROCdraw_team(t%) 18590LOCAL x%,y%,p% 18600x%=ox%+19*16*((t%-1)MOD 4)+16 18610y%=oy%-32*((t%-1)DIV 4)*(per_team%+3)-32 18620SYS "Wimp_SetColour",7 18630MOVE x%,y%:PRINT "TEAM "STR$n% 18640MOVE x%,y%-32:PLOT 1,16*(5+LEN(STR$(n%))),0 18650FOR p%=1TOper_team% 18660 MOVE x%,y%-32*(p%+1) 18670 PRINT FNplayer(t%,p%) 18680NEXT 18690ENDPROC 18700: 18710DEF FNplayer(team%,player%) 18720LOCAL n% 18730n%=(team%-1)*per_team%+player% 18740IF n%<=(teams%*per_team%) THEN 18750 IF ASC(draw$(n%))<32 THEN 18760 SYS "Wimp_SetColour",11 18770 ELSE 18780 SYS "Wimp_SetColour",7 18790 ENDIF 18800 =MID$(draw$(n%),2) 18810ELSE 18820 ="" 18830ENDIF 18840: 18850DEF PROCteams 18860LOCAL p%,t% 18870p%=VAL($players%) 18880IF p%=0 THEN ENDPROC 18890t%=((totnames%+totseeds%-1) DIV p%)+1 18900IF p%>(totnames%+totseeds%) THEN p%=(totnames%+totseeds%) 18910IF t%>16 THEN 18920 PROCreport("Too many teams (maximum 16)",16) 18930 ENDPROC 18940ENDIF 18950IF p%>32 THEN 18960 PROCreport("Too many players per team (maximum 32)",16) 18970 ENDPROC 18980ENDIF 18990IF p%=0 THEN ENDPROC 19000PROCclose_menus 19010per_team%=p% 19020teams%=t% 19030doubles%=FALSE 19040PROCmake_teams_draw 19050draw_made%=TRUE 19060PROCshow_teams 19070ENDPROC 19080: 19090DEF PROCput_seeds_in_teams 19100IF totseeds%=0 THEN ENDPROC 19110REM PROCadd_extras 19120LOCAL n%,m%,dir%,p% 19130m%=1 19140dir%=1 19150p%=0 19160FOR n%=1TO 16 19170 IF seed_exists%?n%=1 THEN 19180 p%+=1 19190 PROCput_seed_in_team(n%,m%,p%) 19200 m%+=per_team%*dir% 19210 IF (m%>teams%*per_team%) OR (m%<0) THEN 19220 dir%=-dir% 19230 m%+=per_team%*dir%+1 19240 ENDIF 19250 ENDIF 19260NEXT 19270ENDPROC 19280: 19290DEF PROCput_seed_in_team(n%,m%,p%) 19300drawpos%?(p%+totnames%)=m% 19310draw$(m%)=CHR$(1)+FNnospace($(seeds%+19*(n%-1))) 19320ENDPROC 19330: 19340DEF PROCmake_teams_draw 19350LOCAL n%,tot%,t%,p%,pos%,sop%,min_per_team%,full_teams% 19360FOR n%=1TO128 19370 draw$(n%)="-----" 19380 draw$(n%+128)="-----" 19390 drawpos%?n%=0 19400NEXT 19410tot%=totnames%+totseeds% 19420min_per_team%=tot% DIV teams% 19430full_teams%=(tot%-min_per_team%*teams%) 19440PROCput_seeds_in_teams 19450FOR p%=1TOper_team% 19460 FOR t%=1TOteams% 19470 pos%=(t%-1)*per_team%+p% 19480 IF (p%<=min_per_team% OR t%<=full_teams% AND p%<=min_per_team%+1) AND draw$(pos%)="-----" THEN 19490 n%=FNrandom_draw 19500 drawpos%?n%=pos% 19510 draw$(pos%)=" "+FNnospace(names$(n%)) 19520 ENDIF 19530 NEXT 19540NEXT 19550altered%=TRUE 19560ENDPROC 19570: 19580DEF FNrandom_draw 19590LOCAL n%,m% 19600n%=RND(totnames%) 19610m%=n% 19620REPEAT 19630 m%+=1 19640 IF m%>tot% THEN m%=1 19650UNTIL drawpos%?m%=0 OR m%=n% 19660IF m%=n% THEN ERROR 1234 Can't Find A Name 19670=m% 19680: 19690DEF FNnospace(a$) 19700WHILE ASC(a$)<33 AND a$<>"" 19710 a$=MID$(a$,2) 19720ENDWHILE 19730WHILE ASC(RIGHT$(a$,1))<33 AND a$<>"" 19740 a$=LEFT$(a$) 19750ENDWHILE 19760=a$ 19770: 19780DEF PROCprint_teams 19790LOCAL t%,p% 19800SYS "ColourTrans_SetGCOL",0 19810SYS "ColourTrans_SetFontColours",,&FFFFFF00,0,7 19820PROCtitle(100) 19830FOR t%=1TOteams% 19840 PROCprint_team(t%,logy%) 19850NEXT 19860ENDPROC 19870: 19880DEF PROCprint_team(t%,RETURN logy%) 19890LOCAL x%,y%,a$,p% 19900t%-=1 19910x%=(t% MOD 4)*300+100 19920y%=1730-32*(per_team%+3)*(t% DIV 4) 19930t%+=1 19940a$="TEAM "+STR$t% 19950SYS "Font_SetFont",f2% 19960SYS "Font_Paint",,a$,16,x%,y% 19970SYS "Font_SetFont",f1% 19980FOR p%=1TO per_team% 19990 a$=FNplayer(t%,p%) 20000 SYS "Font_Paint",,a$,16,x%,y%-32*p%-16 20010 logy%=y%-36*p%-16 20020NEXT 20030ENDPROC 20040: 20050DEF PROCprint_direct 20060IF draw_made%=FALSE THEN 20070 PROCreport("No draw to print",16) 20080 ENDPROC 20090ENDIF 20100IF per_team%<>0 THEN 20110 subopt2%=0 20120 PROCprint_draw 20130 ENDPROC 20140ENDIF 20150subopt2%=0 20160PROCprint_draw 20170ENDPROC 20180: 20190 DEF PROCdrawfile_start(D$) 20200 c%=OPENOUT(D$) 20210 $drawfile%=D$ 20220 drawfile_open%=TRUE 20230 IF c%=0 THEN ERROR 1234,"Can't open output file" 20240 drawfile$=D$ 20250 PROCputw(&77617244):PROCputw(201):PROCputw(0) 20260 PROCputs12("CompDraw") 20270 lev%=-1 20280 PROChead_here(TRUE) 20290 ENDPROC 20300 : 20310 DEF PROCdrawfile_end 20320 PROChead_now 20330 CLOSE#c%:c%=0 20340 drawfile_open%=FALSE 20350 OSCLI("SetType "+drawfile$+" AFF") 20360 ENDPROC 20370 : 20380 DEF PROCpath_start(x%,y%,width%,lcol%,fcol%) 20390 PROCputw(2) 20400 PROChead_here(TRUE) 20410 PROCputw(fcol%):REM fill 20420 PROCputw(lcol%):REM line colour 20430 PROCputw(width%):REM line width 20440 PROCputw(0):REM path style 20450 PROCpath_move(x%,y%) 20460 ENDPROC 20470 : 20480 DEF PROCpath_move(x%,y%) 20490 PROCputw(2) 20500 PROCputxy(x%,y%) 20510 ENDPROC 20520 : 20530 DEF PROCpath_draw(x%,y%) 20540 PROCputw(8) 20550 PROCputxy(x%,y%) 20560 ENDPROC 20570 : 20580 : 20590 DEF PROCpath_end 20600 PROCputw(0) 20610 PROChead_now 20620 ENDPROC 20630 : 20640 DEF PROCgroup_start 20650 REM groups cannot be nested in this version 20660 PROCputw(6) 20670 PROChead_here(TRUE) 20680 PROCputs12("group") 20690 ENDPROC 20700 : 20710 DEF PROCgroup_end 20720 PROChead_now 20730 ENDPROC 20740 : 20750 DEF PROCfonttable 20760 LOCAL font%,font$ 20770 RESTORE +0 20780 DATA 1,Trinity.Medium 20790 DATA 2,Trinity.Bold 20800 DATA 0,END 20810 READ font%,font$ 20820 IF font$="END" THEN ENDPROC 20830 PROCputw(0) 20840 PROChead_here(FALSE) 20850 REPEAT 20860 PROCputs(CHR$(font%)+font$) 20870 READ font%,font$ 20880 UNTIL font$="END" 20890 PROCalign 20900 PROChead_now 20910 ENDPROC 20920 : 20930 DEF PROCtext(x%,y%,text$,xsize,ysize,font%,col%,bcol%,uline%) 20940 text$=FNnospace(text$) 20950 IF text$="" THEN ENDPROC 20960 LOCAL len,scx 20970 PROCputw(1) 20980 PROChead_here(FALSE) 20990 PROCputxy(x%,y%-ysize*.5) 21000 PROCputxy(x%+LEN(text$)*xsize,y%+ysize) 21010 PROCputw(col%) 21020 PROCputw(bcol%) 21030 PROCputw(font%) 21040 PROCputw(xsize*640):PROCputw(ysize*640) 21050 PROCputxy(x%,y%) 21060 PROCputs(text$):PROCalign 21070 PROChead_now 21080 IF uline%<>0 THEN 21090 CASE font% OF 21100 WHEN 1: 21110 SYS "Font_SetFont",f1% 21120 scx=xsize/15*1.025 21130 len=FNlen(text$,f1%)*scx 21140 WHEN 2: 21150 SYS "Font_SetFont",f2% 21160 scx=xsize/24*1.025 21170 len=FNlen(text$,f2%)*scx 21180 OTHERWISE:PROCreport("Unknown Font In PROCtext",17):ENDPROC 21190 ENDCASE 21200 y%-=ysize*160 21210 PROCpath_start(x%,y%,uline%*640,black%,black%) 21220 PROCpath_draw(x%+len,y%) 21230 PROCpath_end 21240 ENDIF 21250 ENDPROC 21260 : 21270 DEF FNcol(R%,G%,B%) 21280 =(R%<<8)+(G%<<16)+(B%<<24) 21290 : 21300 DEF PROCputw(A%) 21310 BPUT#c%,A% AND &FF 21320 BPUT#c%,(A%>>8) AND &FF 21330 BPUT#c%,(A%>>16) AND &FF 21340 BPUT#c%,(A%>>24) AND &FF 21350 ENDPROC 21360 : 21370 DEF PROCputs12(A$) 21380 LOCAL A% 21390 A$=A$+STRING$(12," ") 21400 FOR A%=1TO12:BPUT#c%,ASC(MID$(A$,A%,1)):NEXT 21410 ENDPROC 21420 : 21430 DEF PROCputs(A$) 21440 LOCAL A% 21450 FOR A%=1TOLEN(A$):BPUT#c%,ASC(MID$(A$,A%,1)):NEXT 21460 BPUT#c%,0 21470 ENDPROC 21480 : 21490 DEF PROChead_here(box%) 21500 IF lev%=maxlev% THEN ERROR 1234,"Too many nested groups. Edit program to increase limit." 21510 lev%+=1 21520 box%(lev%)=box% 21530 start%(lev%)=PTR#c% 21540 IF lev%>0 THEN PROCputw(0) 21550 IF box% THEN 21560 PROCputw(0):PROCputw(0) 21570 PROCputw(0):PROCputw(0) 21580 ENDIF 21590 l%(lev%)=bigx%:b%(lev%)=bigy% 21600 r%(lev%)=bigx%:t%(lev%)=bigy% 21610 ENDPROC 21620 : 21630 DEF PROChead_now 21640 LOCAL end% 21650 IF lev%<0 THEN PRINT"Warning: attempt to end more objects than were started.":ENDPROC 21660 end%=PTR#c% 21670 PTR#c%=start%(lev%) 21680 IF lev%>0 THEN PROCputw(end%-start%(lev%)+4) 21690 IF box%(lev%) THEN 21700 PROCputw(l%(lev%)):PROCputw(b%(lev%)) 21710 PROCputw(r%(lev%)):PROCputw(t%(lev%)) 21720 ENDIF 21730 IF lev%>0 THEN 21740 lev%-=1 21750 IF l%(lev%+1)<l%(lev%) THEN l%(lev%)=l%(lev%+1) 21760 IF b%(lev%+1)<b%(lev%) THEN b%(lev%)=b%(lev%+1) 21770 IF r%(lev%+1)<r%(lev%) THEN r%(lev%)=r%(lev%+1) 21780 IF t%(lev%+1)<t%(lev%) THEN t%(lev%)=t%(lev%+1) 21790 ENDIF 21800 PTR#c%=end% 21810 ENDPROC 21820 : 21830 DEF PROCputxy(x%,y%) 21840 PROCputw(x%):PROCputw(y%) 21850 IF x%<l%(lev%) THEN l%(lev%)=x% 21860 IF y%<b%(lev%) THEN b%(lev%)=y% 21870 IF x%>r%(lev%) THEN r%(lev%)=x% 21880 IF y%>t%(lev%) THEN t%(lev%)=y% 21890 ENDPROC 21900 : 21910 DEF PROCalign 21920 WHILE PTR#c% AND 3:BPUT#c%,0:ENDWHILE 21930 ENDPROC 21940 : 21950 DEF PROCsave_it_draw(RETURN ok%) 21960 LOCAL fonts%,ft%,type%,cont% 21970 fonts%=FNfind_fonts 21980 IF NOT(fonts%) THEN ENDPROC 21990 LOCAL ERROR 22000 ok%=TRUE 22010 IF quarters%<>1 AND per_team%=0 THEN 22020 PROCfiletype(file2%,type%,ft%) 22030 CASE type% OF 22040 WHEN 1: 22050 PROCreport("An object of this name already exists. Unable to open directory.",16) 22060 ok%=FALSE 22070 ENDPROC 22080 WHEN 2: 22090 cont%=FNyn("A directory of this name already exists. Continue ?") 22100 IF NOT(cont%) THEN 22110 ok%=FALSE 22120 ENDPROC 22130 ENDIF 22140 ENDCASE 22150 ON ERROR LOCAL:RESTORE ERROR:PROCreport("Unable to open directory. FILES�NOT�SAVED",17):ok%=FALSE:ENDPROC 22160 SYS "OS_File",8,file2% 22170 RESTORE ERROR 22180 ENDIF 22190 IF per_team%<>0 THEN 22200 PROCsave_it_teams(ok%) 22210 PROCclose_menus 22220 ENDPROC 22230 ENDIF 22240 IF quarters%=1 THEN 22250 ok%=FNcont 22260 IF NOT(ok%) THEN ENDPROC 22270 ENDIF 22280 SYS "Hourglass_On" 22290 FOR n%=1TO quarters% 22300 PROCdrawfile_quarter(n%,quarters%,ok%) 22310 NEXT 22320 SYS "Hourglass_Off" 22330 PROCclose_menus 22340 ok%=TRUE 22350 ENDPROC 22360 : 22370 DEF FNcont 22380 LOCAL type%,ft%,ok% 22390 PROCfiletype(file2%,type%,ft%) 22400 CASE type% OF 22410 WHEN 2: 22420 PROCreport("Object is a directory",17) 22430 =FALSE 22440 WHEN 1: 22450 IF ft%=&AFF THEN 22460 =TRUE 22470 ELSE 22480 =FNyn("An object of this name already exists (type "+STR$~ft%+"). Continue ?") 22490 ENDIF 22500 WHEN 0: 22510 =TRUE 22520 OTHERWISE: 22530 PROCreport("type%= "+STR$type%" in FNcont",16) 22540 =FALSE 22550 ENDCASE 22560 : 22570 DEF FNcol(R%,G%,B%) 22580 =(R%<<8)+(G%<<16)+(B%<<24) 22590 : 22600 DEF FNcolour(X) 22610 LOCAL c 22620 IF X=7 THEN =0 22630 IF X<7 THEN 22640 c=255-24*X 22650 =FNcol(c,c,c) 22660 ENDIF 22670 =FNcol(RND(255),RND(255),RND(255)) 22680 : 22690 DEF PROCdrawfile_quarter(n%,quarters%,RETURN ok%) 22700 LOCAL f$,y% 22710 f$=$file2% 22720 IF quarters%<>1 THEN f$+="."+STR$(n%) 22730 PROCdrawfile_start(f$) 22740 PROCfonttable 22750 PROCdraw_title(2,0) 22760 IF quarters%<>1 THEN 22770 PROCsub_title(n%,quarters%) 22780 y%=1800 22790 ELSE 22800 y%=1880 22810 ENDIF 22820 PROCdraw_quarter(n%,y%) 22830 PROCdrawfile_end 22840 ENDPROC 22850 : 22860DEF PROCdraw_quarter(quart%,y%) 22870LOCAL n%,m%,yy%,bx%,base%,thick%,th% 22880PROClongest(FALSE) 22890IF max_len%<200*xscale2% THEN max_len%=200*xscale2% 22900REM IF max_len%>400*xscale2% THEN max_len%=400*xscale2% 22910base%=(quart%-1)*per_quart% 22920bx%=70 22930thick%=320 22940th%=thick%/2 22950PROCcolour(0) 22960FOR n%=base%+1TObase%+per_quart% STEP 2 22970 IF draw$(n%+1)<>" bye" THEN 22980 FOR m%=0TO1 22990 yy%=y%-(n%+m%-base%)*50 23000 PROCtext(bx%*xscale2%,(yy%+5)*yscale%,FNseed(n%+m%),6,8,1,black%,black%,0) 23010 PROCpath_start(bx%*xscale2%,yy%*yscale%,thick%,black%,white%) 23020 PROCpath_draw(bx%*xscale2%+max_len%+th%,yy%*yscale%) 23030 PROCpath_end 23040 NEXT 23050 PROCpath_start(bx%*xscale2%+max_len%,yy%*yscale%,thick%,black%,white%) 23060 PROCpath_draw(bx%*xscale2%+max_len%,(yy%+50)*yscale%) 23070 PROCpath_end 23080 PROCpath_start(bx%*xscale2%+max_len%,(yy%+25)*yscale%,thick%,black%,white%) 23090 PROCpath_draw((bx%+200)*xscale2%+max_len%+th%,(yy%+25)*yscale%) 23100 PROCpath_end 23110 ELSE 23120 yy%=y%-(n%-base%)*50-25 23130 PROCtext((200+bx%)*xscale2%,(yy%+5)*yscale%,FNseed(n%),6,8,1,black%,black%,0) 23140 yy%-=25 23150 PROCpath_start((bx%+200)*xscale2%,(yy%+25)*yscale%,thick%,black%,white%) 23160 PROCpath_draw((bx%+200)*xscale2%+max_len%+th%,(yy%+25)*yscale%) 23170 PROCpath_end 23180 ENDIF 23190NEXT 23200m%=1:n%=1 23210WHILE m%<per_quart% 23220 m%=m%*2 23230 n%+=1 23240ENDWHILE 23250PROCdraw_lines(n%*200+bx%-200,y%-25*per_quart%-25,per_quart%) 23260ENDPROC 23270: 23280DEF PROCdraw_lines(x%,y%,z%) 23290PROCpath_start(x%*xscale2%+max_len%+th%,y%*yscale%,thick%,black%,white%) 23300PROCpath_draw((x%-200)*xscale2%+max_len%+th%,y%*yscale%) 23310PROCpath_end 23320x%-=200 23330PROCpath_start(x%*xscale2%+max_len%,(y%-z%/2*25)*yscale%,thick%,black%,white%) 23340PROCpath_draw(x%*xscale2%+max_len%,(y%+z%/2*25)*yscale%) 23350PROCpath_end 23360IF z%>4 THEN 23370 PROCdraw_lines(x%,y%-z%/2*25,z%/2) 23380 PROCdraw_lines(x%,y%+z%/2*25,z%/2) 23390ENDIF 23400ENDPROC 23410: 23420DEF PROCp(X) 23430PRINTTAB(0,0)X 23440VDU 7:REPEAT UNTIL GET=32 23450ENDPROC
"� > ":0.$.!CompDraw.!RunImage" 3� > ":4.$.Usefuls.CompDraw.!CompDraw.!RunImage" : (k*KEY12 MODE 12|M|NFOR N=1TOtotnames%:P.N" : "FNname(FNiconfromname(totnames%,N)-4)" : "names$(N):NEXT|M 2C*KEY11 MODE 12|M|NFOR N=1TOtotnames%:P.N" : "selected%?N:NEXT|M <*KEY4 SAVE|MRUN|M F*FX12,3 P: Z1MainX%=1232: � width of main window d2MainY%=1612: � height of main window n4totnames%=0: � number of names in list x:maxicon%=0: � highest no. icon used in list �4totseeds%=0: � number of seeds in list �5names_sel%=0: � number of names selected �5seeds_sel%=0: � number of seeds selected �5draw_made%=�: � TRUE if a draw has been made �4doubles%=�: � TRUE if draw is for doubles �,teams%=0: � number of teams �8per_team%=0: � players per team: 0 => draw �1quarters%=0: � quarters in the draw �6filetype%=&AAA: � file type for saved files �,printit%=�: � flag for print/load �=altered%=�: � flag for altered - used when exiting �Idrawfile_open%=�: � flag for error handler indicating draw file open �@error%=�: � flag for error occured in error handler : �init : "!�read_load_filename(printit%) ,� printit% � 6 �print_direct @ ș "Wimp_CloseDown" J� T�set_up_menus ^: hȕ � quit% r �poll |� �ș "Wimp_CloseDown" �� �: �� �: �>� **************** procs start here ********************** �: �� �poll �+ș "Wimp_Poll",%110001,block% � reason% �Ȏ reason% � � � 0:v%+=1:�0,0)v% � � 1:�redraw �& � 2:ș "Wimp_OpenWindow",,block% ' � 3:ș "Wimp_CloseWindow",,block% C � 4: :� pointer leaving window D � 5: :� pointer entering window &5 � 6:�click :� mouse click 07 � 7:�startsave(drag_from%) :� user drag box :5 � 8:�keypressed :� key pressed D< � 9:�menu_option :� menu item selected NC � 10:�force_redraw :� request to re-draw window X7 � 11 :� lose caret b7 � 12 :� gain caret l � 17,18:�receive v< � 19:� PROCreport("Transfer failed - receiver died",1) �' :�report("reason%= "+�reason%,1) �� �� �: �� �menu_option �mainoption%=!block% �subopt1%=block%!4 �subopt2%=block%!8 �$ș "Wimp_GetPointerInfo",,block% �button%=block%!8 �Ȏ menuopen% � �& � icon_menu%:�iconbarmenu_option �# � main_menu%:�mainmenu_option � � : � �force_redraw * � window% 4window%=!block% >Ȏ window% � H � draw_window% R9 ș "Wimp_ForceRedraw",window%,0,-height%,width%,0 \� f� p: z� �iconbarmenu_option �Ȏ mainoption% � � � 1:� button%<>2 � �quit �� �+� button%=1 � �showmenu(icon_menu%,0,0) �� �: �� �close_menus �ș "Wimp_CreateMenu",,-1 �� �: �� �init �: �� � �error(�$):� �DhA : � flag% � scale% 16 $ ?scale%=1 .scale%?4=1 8scale%?8=2 Bscale%?12=2 L� area% 6500 V&�sload("<Obey$Dir>.sprites",area%) `� drawfile% 255 j� base% 3000 t� lens% 40 ~title%=base% �names%=base%+45 �seeds%=base%+2500 �drawpos%=base%+2810 �,� drawn 128,rect% 16,trans% 16,plotat% 8 �seed_exists%=base%+2962 �� block% 255 �A� names$(128),seeds$(16),draw$(256),seedpos%(16),double$(128) �� double%(128) �!� selected% 128,sel_seeds% 16 �4� seed_menu% 412,select_menu% 124,main_menu% 196 �A� icon_menu% 76,make_menu% 148,draw_menu% 148,print_menu% 148 �)� save_menu% 100,file% 256,file2% 256 � variables for draw files maxlev%=32 bigx%=&00040000 bigy%=&00080000 (S� l%(maxlev%),r%(maxlev%),t%(maxlev%),b%(maxlev%),box%(maxlev%),start%(maxlev%) 2inch%=&B400 <black%=�colour(7) Fwhite%=�colour(0) P2xscale%=200:� x scale for draw files of teams ZBxscale2%=280:� x scale for draw files of knockout competitions d#yscale%=260:� y scale for both n � buf% 20 x: �$� sprite pixel translation table �� trans_table% 16 �: �� n%,text$,a%,t% � � n%=0�16 � seed_exists%?n%=0 � sel_seeds%?n%=0 �� �� n%=0�128 � drawpos%?n%=0 � selected%?n%=0 �� �app$="CompDraw" quit%=� +ș "Wimp_Initialise",200,&4B534154,app$ : "� set up main window ,: 6$mainx%=800:� initial window size @mainy%=600 Jnmain_window%=�create_window(640-mainx%/2,260,mainx%,mainy%,MainX%-mainx%,MainY%-mainy%,&FF000012,app$,2,0) Tddraw_window%=�create_window(0,1024,mainx%,mainy%,MainX%-mainx%,MainY%-mainy%,&FF000012,app$,2,0) ^: hEa%=�create_icon(main_window%,0,-64,100,48,&8000211,"TITLE",0,0,0) r*$title%="CompDraw : Competition Title" |Rtitle_icon%=�create_icon(main_window%,108,-64,656,48,&700F13D,"",title%,-1,40) �: �Ea%=�create_icon(main_window%,8,-1608,1216,1188,&700003D,"",0,0,0) �: �Ca%=�create_icon(main_window%,8,-400,1216,324,&700003D,"",0,0,0) �: � � m%=0�31 � � n%=0�3 � num%=m%*4+n% � point%=names%+num%*19 � $point%="" � x%=(n%*18+n%+2)*16-8 � y%=-m%*36-472 �K a%=�create_icon(main_window%,x%,y%,280,36,&7003131,"",point%,-1,18) � � : &� n%=0�1 0 � m%=0�7 : num%=n%*8+m% D point%=seeds%+num%*19 N $point%="" X x%=n%*18*32+240 b y%=-m%*36-124 lK a%=�create_icon(main_window%,x%,y%,280,36,&7003131,"",point%,-1,18) v Ȏ num% � � � 0,8:seed$="SEED " � :seed$="" � � � seed$+=�(num%+1) �O a%=�create_icon(main_window%,x%-320,y%,18*16+8,36,&8000211,seed$,0,0,0) � � �� �: �� set up file info window �: �� file_info% 20 �$$file_info%="About this program" �Nfileinfo_window%=�create_window(0,0,400,200,0,0,&84000012,"File Info",1,0) � +0 "� Non seeds:,Seeds:,Draw made: � n%=1�3 � text$ *P a%=�create_icon(fileinfo_window%,0,-n%*56-12,220,52,&17000211,text$,0,0,0) 4� > � info1% 4,info2% 4,info3% 4 HKa%=�create_icon(fileinfo_window%,240,-68,80,52,&700013D,"",info1%,-1,3) RLa%=�create_icon(fileinfo_window%,240,-124,80,52,&700013D,"",info2%,-1,3) \La%=�create_icon(fileinfo_window%,240,-180,80,52,&700013D,"",info3%,-1,3) f: p� cd% 10 z$cd%="compdraw" �Ea%=�create_icon(main_window%,932,-72,288,64,&11A,"",cd%,area%,10) �� set up info window �: �Jinfo_window%=�create_window(0,0,640,272,0,0,&84000012,"Prog Info",1,0) �� +0 �0� Name:,Purpose:,Author:,Version:,Copyright: �d� CompDraw,Makes Competition Draw,"Peter R.Kingsbury","2.00 (20-Sep-93)",� ARCHIMEDES WORLD 1993 � � t1% 150 �� n%=1�5 � � text$ �K a%=�create_icon(info_window%,0,-n%*52-4,192,48,&17000211,text$,0,0,0) �� �� n%=1�5 � text$ T%=t1%+(n%-1)*30 $T%=text$ $/ � n%<5 � flag%=&700013D:� flag%=&71000139 .I a%=�create_icon(info_window%,196,-n%*52-4,424,48,flag%,"",T%,-1,30) 8� B: L� set up new name window V: `Knewname_window%=�create_window(0,0,320,60,0,0,&84000012,"New Name",1,0) j� new_name% 20 t$new_name%="" ~Na%=�create_icon(newname_window%,10,-52,300,48,&700F13D,"",new_name%,-1,18) �: �� set up save window �: �path$="":type$="":obj$="" �� sbspr% 8,sbval% 3 �6$sbspr%="file_aaa":$file%="CompDraw":$sbval%="A~ " �Isave_window%=�create_window(0,0,264,164,0,0,&84000012,"Save as:",1,0) �Fdrag%=�create_icon(save_window%,100,-92,68,68,&6102,"",sbspr%,1,9) �La%=�create_icon(save_window%,8,-156,192,48,&700F12D,"",file%,sbval%,256) �Fok%=�create_icon(save_window%,208,-156,48,48,&C701903D,"OK",0,0,0) �: �� sbspr2% 8,sbval2% 3 ;$sbspr2%="directory":$file2%="Draw_File":$sbval2%="A~ " Ksave_window2%=�create_window(0,0,264,164,0,0,&84000012,"Save as:",1,-1) Idrag2%=�create_icon(save_window2%,100,-92,68,68,&6102,"",sbspr2%,1,9) Oa%=�create_icon(save_window2%,8,-156,192,48,&700F12D,"",file2%,sbval2%,256) (Hok2%=�create_icon(save_window2%,208,-156,48,48,&C701903D,"OK",0,0,0) 2: <� set up icon bar icon F@ibhandle%=�create_icon(-1,0,0,68,68,&3002,"!CompDraw",0,0,0) P: Z� set up merge window d: nNmerge_window%=�create_window(340,400,600,240,0,0,&84000010,"CompDraw",1,0) xJloa%=�create_icon(merge_window%,20,-200,160,56,&C701903D,"load",0,0,0) �Lmer%=�create_icon(merge_window%,220,-200,160,56,&C701903D,"merge",0,0,0) �Mcan%=�create_icon(merge_window%,420,-200,160,56,&C701903D,"cancel",0,0,0) �� merge% 20 �"$merge%="File already loaded." �Ia%=�create_icon(merge_window%,0,-100,600,56,&7000119,"",merge%,-1,20) �: �� set up teams window �: �� pl% 20,players% 2 �$pl%="Players per team" �$players%="6" �Eteam_window%=�create_window(0,0,380,64,0,0,&84000012,"Teams",1,0) �Fa%=�create_icon(team_window%,16,-54,320,40,&17000111,"",pl%,-1,20) Mper_t%=�create_icon(team_window%,300,-54,64,48,&700F13D,"",players%,-1,3) : � ": ,L� �create_window(x%,y%,w%,h%,extx%,exty%,flags%,title$,bgcol%,spr_area%) 6 � handle% @: J� visible work area T!block%=x% ^block%!4=y% hblock%!8=x%+w% rblock%!12=y%+h% |: �� scroll offsets �block%!16=0 �block%!20=0 �: �$� handle behind and window flags �block%!24=-1 �block%!28=flags% �: �� window colours �block%!32=7 �#block%!33=2:� border background �block%!34=7 �-block%!35=bgcol%:� main window background block%!36=3 block%!37=1 block%!38=12 &: 0� work area extent :block%!40=0 Dblock%!44=-h%-exty% Nblock%!48=w%+extx% Xblock%!52=0 b: l#� title bar and work area flags vblock%!56=&19 �block%!60=3<<12 �: �*� sprite area pointer and minimum size �block%!64=spr_area% �block%!68=0 �: �� window title �� title$<>"Prog Info" � � $(block%+72)=�title$,11) �� �& block%!56=&119:� indirected data � block%!72=file_info% � block%!76=-1 block%!80=20 � : � number of icons *block%!84=0 4: >,ș "Wimp_CreateWindow",,block% � handle% H=handle% R: \� �report(err$,flag%) f� name$ pname$=app$ z-� flag% � 16 � name$="Message from "+app$ �!block%=255 �$(block%+4)=err$+�0 �9ș "Wimp_ReportError",block%,flag%,name$ � ,errclick% �� �: �� �error(err$) �3� error% � �report(�$+" in error handler",17):� �error%=� �ș "Hourglass_Off" �� drawfile_open% � � �#c% � ș "OS_File",6,drawfile% � drawfile_open%=� � � err$+=" : "+STR$ERL �report(err$,1) $� printit% � . ș "Wimp_CloseDown" 8 � B� Lerror%=� V� `: jG� �create_icon(whan%,ix%,iy%,iw%,ih%,flag%,text$,ptr1%,ptr2%,ptr3%) t� ihandle% ~!block%=whan% �block%!4=ix% �block%!8=iy% �block%!12=ix%+iw% �block%!16=iy%+ih% �� ptr1%=0 � � $(block%+24)=text$ �� � block%!24=ptr1% � block%!28=ptr2% � block%!32=ptr3% �� �block%!20=flag% +ș "Wimp_CreateIcon",,block% � ihandle% =ihandle% : � �click (xpoint%=!block% 2ypoint%=block%!4 <button%=block%!8 Fwindow%=block%!12 Picon%=block%!16 ZȎ window% � d � -2:�ibar(button%) n) � main_window%:�main_click(button%) x# � merge_window%:�merge_window �- � save_window%:�save_file(save_window%) �/ � save_window2%:�save_file(save_window2%) � � team_window%:�teams � � draw_window%: �% :�report("Window "+�window%,1) �� �� �: �� �open_window(window%) �!block%=window% �$ș "Wimp_GetWindowState",,block% �block%!28=-1 � ș "Wimp_OpenWindow",,block% � : � �ibar(button%) "Ȏ button% � , � 1,4: 6" �open_window(main_window%) @ � 2: J, �showmenu(icon_menu%,!block%-64,184) T� ^� h: r� �showmenu(menu%,mx%,my%) |menuopen%=menu% �'ș "Wimp_CreateMenu",,menu%,mx%,my% �� �: �� �receive �Ȏ block%!16 � � � 0:�quit � � 2:�datasave � � 3:�dataload �� �� �: �� �quit �� q% � �(altered%) � quit%=� � &� 0#q%=�yn("WARNING: Unsaved data") :� q% � quit%=� D� N: X � �redraw b� more%,window% lwindow%=!block% v*ș "Wimp_RedrawWindow",,block% � more% �ox%=block%!4-block%!20 �oy%=block%!16-block%!24 �ȕ more% � Ȏ window% � � � main_window%: � � draw_window% � � per_team%=0 � � �draw_draw_window � � � �draw_team_window � � � � �, ș "Wimp_GetRectangle",,block% � more% � � : � �main_click(button%) *icon%=block%!16 4Ȏ button% � > � 1,4: H, � icon%>3 � icon%<132 � �list(icon%) R. � icon%>131 � icon%<163 � �seed(icon%) \ � 2: f �main_menu p� z� �: �� �iconfromseed(seed%) �=(seed%+65)*2 �: �� �seedfromicon(icon%) �=(icon% � 2)-65 �: �� �nameinicon(name$,icon%) �� icon%<4 � � �� z% �z%=names%+19*(icon%-4) � $z%=name$ �� : � �seedinicon(name$,seed%) � z% $z%=seeds%+19*(seed%-1) . $z%=name$ 8� B: L� �list(icon%) V� name%,n% `name%=�namefromicon(icon%) j� name%>totnames% � � t� seeds_sel%<>0 � ~ � n%=1�16 � � sel_seeds%?n%=1 � � sel_seeds%?n%=0 �& �choose(�iconfromseed(n%),�) � � � � � seeds_sel%=0 �� �� selected%?name%=1 � � � already selected � names_sel%-=1 � selected%?name%=0 � �choose(icon%,�) � � not yet selected names_sel%+=1 selected%?name%=1 ( �choose(icon%,�) 2� <� F: P� �seed(icon%) Z� n%,seed% dseed%=�seedfromicon(icon%) n� seed_exists%?seed%=0 � � x� names_sel%<>0 � � � n%=1�totnames% � � selected%?n%=1 � �0 �choose(�iconfromname(totnames%,n%),�) � selected%?n%=0 � � � � � names_sel%=0 �� �� sel_seeds%?seed%=0 � � sel_seeds%?seed%=1 � seeds_sel%+=1 � �choose(icon%,�) �� sel_seeds%?seed%=0 seeds_sel%-=1 �choose(icon%,�) "� ,� 6: @� �iconfromname(tot%,name%) J� tot%=0 � =0 Tname%-=1 ^� X%,x%,y% hX%=((tot%+3)� 4) ry%=name% � X% |x%=name% � X% �=y%*4+x%+4 �: �� �namefromicon(icon%) �� X%,x%,y% �icon%-=4 �X%=((totnames%+3)� 4) �x%=icon% � 4 �y%=icon% � 4 �� y%>=X% � =totnames%+1 �=x%*X%+y%+1 �: �� �choose(icon%,selected%) �� fcol%,bcol%,mask% � selected% � fcol%=12:bcol%=7 � & fcol%=7:bcol%=0 0� :!mask%=(fcol%<<24)+(bcol%<<28) D!block%=main_window% Nblock%!4=icon% Xblock%!8=mask% bblock%!12=&FF<<24 l"ș "Wimp_SetIconState",,block% v� �: �� �create_menu(menu%) �.� n%,title$,entries%,entry$,sub%,ptr%,wid% �!� set up menu �� title$,entries% � $menu%=title$:� menu title �7menu%?12=7:� title and frame foreground colour �-menu%?13=2:� title background colour �1menu%?14=7:� work area foreground colour �1menu%?15=0:� work area background colour �*menu%!20=44:� height of each entry �/menu%!24=0:� height between each entry �wid%=�(title$) � n%=1�entries% ptr%=menu%+4+24*n% � entry$,sub% � n%=entries% � * !ptr%=128 4 � > !ptr%=0 H � R ptr%!4=sub% \ ptr%!8=&7000021 f $(ptr%+12)=entry$ p' � �(entry$)>wid% � wid%=�(entry$) z� �(menu%!16=wid%*16+16:� menu width �� �: �� �set_up_menus �� +0 �M� "Make Draw",4,with seedings,-1,without,-1,doubles,-1,teams,team_window% ��create_menu(make_menu%) �A� "Draw",4,make,make_menu%,show,-1,clear,-1,print,print_menu% ��create_menu(draw_menu%) �H� "Seed",16,1,-1,2,-1,3,-1,4,-1,5,-1,6,-1,7,-1,8,-1,9,-1,10,-1,11,-1 �#� 12,-1,13,-1,14,-1,15,-1,16,-1 ��create_menu(seed_menu%) �>� "Select",4,delete,-1,seed,seed_menu%,un-seed,-1,clear,-1 �create_menu(select_menu%) 3� "Save",2,file,save_window%,draw,save_window2% �create_menu(save_menu%) $��"Main Menu",6,draw,draw_menu%,selection,select_menu%,save,save_menu%,new name,newname_window%,file info,fileinfo_window%,clear,-1 .�create_menu(main_menu%) 8+�"CompDraw",2,Info,info_window%,Quit,-1 B�create_menu(icon_menu%) LL�"Print",5,Whole draw,-1,1st part,-1,2nd part,-1,3rd part,-1,4th part,-1 V�create_menu(print_menu%) `� j: t4� �menu_option_arrow(menu%,opt%,condition%,sub%) ~� point% �point%=menu%+32+24*opt% �� condition% � � !point%=sub% �� � !point%=-1 �� �� �: �.� �menu_option_dark(menu%,opt%,condition%) �� point% �point%=menu%+36+24*opt% �� condition% � ! !point%=(!point% � &400000) � # !point%=(!point% � &FFBFFFFF) � (� 2: <� �set_draw_menu F.�menu_option_dark(draw_menu%,0,draw_made%) P/�menu_option_dark(draw_menu%,1,�draw_made%) Z/�menu_option_dark(draw_menu%,2,�draw_made%) d/�menu_option_dark(draw_menu%,3,�draw_made%) n� x: �� �main_menu �0�menu_option_dark(print_menu%,1,quarters%<2) �0�menu_option_dark(print_menu%,2,quarters%<2) �0�menu_option_dark(print_menu%,3,quarters%<4) �0�menu_option_dark(print_menu%,4,quarters%<4) �9�menu_option_dark(main_menu%,0,totnames%+totseeds%<3) �?�menu_option_dark(main_menu%,1,names_sel%=0 � seeds_sel%=0) �2�menu_option_dark(select_menu%,0,names_sel%=0) �B�menu_option_dark(select_menu%,1,names_sel%<>1 � totseeds%=16) �2�menu_option_dark(select_menu%,2,seeds_sel%=0) �9�menu_option_dark(main_menu%,2,totnames%+totseeds%=0) �;�menu_option_dark(main_menu%,3,totnames%+totseeds%=128) �9�menu_option_dark(main_menu%,5,totnames%+totseeds%=0) /�menu_option_dark(save_menu%,1,�draw_made%) �set_draw_menu /�menu_option_dark(make_menu%,0,totseeds%=0) "9�menu_option_dark(make_menu%,1,totseeds%+totnames%<3) ,9�menu_option_dark(make_menu%,2,totseeds%+totnames%<3) 6 � n%=1�16 @: �menu_option_dark(seed_menu%,n%-1,seed_exists%?n%=1) J� T$info1%=�totnames% ^$info2%=�totseeds% h"� quarters%=1 � per_team%<>0 � r $sbspr2%="file_aff" |� � $sbspr2%="directory" �� �/� draw_made% � $info3%="YES" � $info3%="NO" �<�menu_option_arrow(draw_menu%,3,per_team%=0,print_menu%) �,�showmenu(main_menu%,xpoint%-96,ypoint%) �� �: �� �mainmenu_option �Ȏ mainoption% � �. � 0:�draw_option :� draw menu �0 � 1:�select :� select menu �, � 2 :� save �/ � 3 :� newname 1 � 4 :� file info 6 � 5:�clear_all :� clear loaded file 2 � 6:quit%=� :� quit CompDraw &� 0� button%=1 � : �main_menu D �showmenu(main_menu%,0,0) N� X� b: l� �clear_all v� n% �� n%=1�totnames% � names$(n%)="" � selected%?n%=0 �� � � n%=1�16 � $(seeds%+(n%-1)*19)="" � seed_exists%?n%=0 � sel_seeds%?n%=0 �� �totnames%=0 �totseeds%=0 �names_sel%=0 �seeds_sel%=0 per_team%=0 �no_draw *$title%="CompDraw : Competition Title" $file%="CompDraw" *$file2%="Draw_File" 4�put_names_in_icons >�show_seeds H�choose(title_icon%,�) Raltered%=� \� f: p � �select zȎ subopt1% � � � 0:�delete_selection � � 1:�seed_selection � � 2:�unseed_selection � � 3:�clear_selection �� �� �: �� �delete_name(name%) �� m% �� m%=name% � totnames%-1 � names$(m%)=names$(m%+1) �� �names$(totnames%)="deleted" totnames%-=1 � : $� �not_clear_draw .� �(draw_made%) � =� 89=�(�yn("WARNING : This will clear the current draw")) B: L� �delete_selection V� �not_clear_draw � � `� name% j� totnames%=1 � t names$(1)="" ~ selected%?1=0 � totnames%=0 �� � � name%=totnames%�1 �-1 � � selected%?name%=1 � � �delete_name(name%) � selected%?name%=0 � � � � �� �names_sel%=0 ��put_names_in_icons ��no_draw altered%=� � : � �put_names_in_icons (� n%,icon%,newmaxicon% 2� maxicon%>3 � < � n%=4� maxicon% F' � �namefromicon(n%)>totnames% � P �nameinicon("",n%) Z �choose(n%,�) d � n � x� �newmaxicon%=3 �� totnames%<>0 � � � n%=1�totnames% �) icon%=�iconfromname(totnames%,n%) �/ � icon%>newmaxicon% � newmaxicon%=icon% �% �nameinicon(names$(n%),icon%) � �choose(icon%,�) � � �� �maxicon%=newmaxicon% �� �: �� �keypressed <� see WIMP PROGRAMMING FOR ALL page 48 window%=!block% icon%=block%!4 "key%=block%!24 ,%� key%<32 � key%<>13 � key%>&FF � 6 ș "Wimp_ProcessKey",key% @ � J� TȎ window% � ^ � main_window%:�lose_caret h" � newname_window%:�newnamein r � save_window%: | �quicksave(save_window%) � �close_menus � � save_window2%: �! �quicksave(save_window2%) � �close_menus � � team_window%:�teams �� �� �: �� �lose_caret �!ș "Wimp_SetCaretPosition",-1 �� �: �� �newnamein � �not_clear_draw � � � name$ name$=$new_name% &$new_name%="" 0� name$="" � � :�name_in(name$) D�put_names_in_icons N�no_draw X�main_menu baltered%=� l� v: �� �name_in(name$) �� n% �n%=0 �� � n%+=1 �%� n%>totnames% � names$(n%)>name$ ��insertname(n%,name$) �� �: �� �insertname(n%,name$) �� m% �totnames%+=1 �� n%=totnames% � ! names$(totnames%)=name$ !� ! � m%=totnames% � n%+1 �-1 ! names$(m%)=names$(m%-1) !* � !4 names$(n%)=name$ !>� !H� !R: !\� �seed_selection !f� subopt2%<0 � � !p� �not_clear_draw � � !z� name%,name$,seed%,icon% !�name%=0 !�� !� name%+=1 !�� selected%?name%<>0 !�name$=names$(name%) !�seed%=subopt2%+1 !�totseeds%+=1 !�seed_exists%?seed%=1 !�names_sel%=0 !�selected%?name%=0 !��seedinicon(name$,seed%) !��delete_name(name%) !��put_names_in_icons "icon%=�iconfromseed(seed%) "�choose(icon%,�) "�no_draw "$altered%=� ".� "8: "B� �unseed_selection "L� �not_clear_draw � � "V� n%,name$ "` � n%=1�16 "j � sel_seeds%?n%=1 � "t! name$=$(seeds%+19*(n%-1)) "~ sel_seeds%?n%=0 "� seed_exists%?n%=0 "� totseeds%-=1 "� �seedinicon("",n%) "� �name_in(name$) "�$ �choose(�iconfromseed(n%),�) "� � "�� "�seeds_sel%=0 "��put_names_in_icons "��no_draw "�altered%=� "�� # : # � �clear_selection #� n% #� seeds_sel%<>0 � #( � n%=1�16 #2 � sel_seeds%?n%=1 � #< sel_seeds%?n%=0 #F& �choose(�iconfromseed(n%),�) #P � #Z � #d seeds_sel%=0 #n � #x� #�� n%=1�totnames% #� � selected%?n%=1 � #� selected%?n%=0 #�. �choose(�iconfromname(totnames%,n%),�) #� � #�� #�names_sel%=0 #�� #�: #�� �string(point%) #�� a$,n% #� a$="" #�n%=?point% $ȕ n%<>13 � n%<>0 $ a$+=�(n%) $ point%+=1 $" n%=?point% $,� $6=a$ $@: $J� �set_variables $T� n%,icon% $^totnames%=base%?42 $htotseeds%=base%?43 $rdoubles%=(base%?2999=1) $|per_team%=base%?2998 $�teams%=base%?2997 $��set_quarters $�� n%=1�totnames% $�' icon%=�iconfromname(totnames%,n%) $�' names$(n%)=$(names%+19*(icon%-4)) $�� $�� (base%?44=1) � $� �set_draw_names $� � per_team%=0 � $� �show_draw $� � $� �show_teams $� � %� % �no_draw %� %&� %0: %:� �dataload %D� type%,action% %Ntype%=block%!40 %Xpath$=�string(block%+44) %b� type%<>filetype% � %l Ȏ type% � %v3 � &1000:�report("Object is a directory",16) %�6 � &2000:�report("Object is an application",16) %�1 :�report("Unknown filetype "+�~type%,16) %� � %� � %�� %�� totnames%+totseeds%=0 � %� �loadit(path$) %�� %� �merge %�� %�� %�: %�� �loadit(file$) &$file%=file$ &$ș "OS_File",12,file%,base%,0,13 &�no_draw & �set_variables &*�put_names_in_icons &4�choose(title_icon%,�) &>�show_seeds &H�open_window(main_window%) &Raltered%=� &\$file2%="Draw_File" &f� &p: &z� �show_seeds &�� n% &� � n%=1�16 &�" �choose(�iconfromseed(n%),�) &�� &�� &�: &�� �merge &��open_window(merge_window%) &�ȗ ȓ 340,400,600,240 &�� &�: &�� �close_merge_window &�!block%=merge_window% '!ș "Wimp_CloseWindow",,block% '*POINTER '� '$: '.� �merge_window '8� icon% 'Bicon%=block%!16 'LȎ icon% � 'V � loa%: '` �close_merge_window 'j �loadit(path$) 't � mer%: '~ �close_merge_window '� �merge_it '� � can%: '� �close_merge_window '�� '�� '�: '�� �sload(file$,area%) '�H� ***** loads sprite file 'file$' to area pointed to by 'area' ***** '�� A$,Q%,len% '�Q%=�(file$) '�� Q%=0 � '� �#Q% ( � 7 ( � (� (len%=�#(Q%) ((�#Q% (2area%!0=len%+10 (<area%!8=16 (F>� initialise sprite area (Pș "OS_SpriteOp",&109,area% (Z8� load sprite file (d%ș "OS_SpriteOp",&10A,area%,file$ (n� (x: (�%� �read_load_filename(� printit%) (�� I% (�ș "OS_GetEnv" � file$ (�� �file$," -quit ") � (� I%=�file$,"""") (� I%=�file$,"""",I%+1) (� � (� I%+=1 (� � �file$,I%,1)<>" " (� file$=�file$,I%) (�# printit%=(�file$,6)="-Print") (�" � printit% � file$=�file$,8) (�" � file$<>"" � �loadit(file$) )� )� ): )"� �saveit(window%,� ok%) ),Ȏ window% � )6' � save_window%:�save_it_file(ok%) )@( � save_window2%:�save_it_draw(ok%) )J� )T� )^: )h(� �filetype(file%,� type%,� f_type%) )r)ș "OS_File",5,file% � type%,,f_type% )| f_type%=(f_type% >> 8)� &FFF )�� )�: )�� �save_it_file(� ok%) )� ok%=� )�� file$,f%,type%,ft% )�file$=$file% )��filetype(file%,type%,ft%) )�� type%=2 � )�) �report("Object is a directory",17) )� ok%=� )� � )�� )� � ft%<>filetype% � type%=1 � *T ok%=�yn("An object of this name already exists (type "+�~ft%+"). Continue ?") * � �(ok%) � � *� *&base%?42=totnames% *0base%?43=totseeds% *:base%?44=-draw_made% *Dbase%?2999=-doubles% *Nbase%?2998=per_team% *Xbase%?2997=teams% *b5ș "OS_File",10,file%,filetype%,,base%,base%+3000 *l�close_menus *valtered%=� *�� *�: *�� �draw_title(v%,y%) *�� v%=1 � *�E �text(100*xscale%,1960*yscale%,$title%,15,18,2,black%,white%,1) *�� *�E �text(70*xscale2%,1960*yscale%,$title%,15,18,2,black%,white%,1) *�� *�� *�: *�� �sub_title(n%,quarters%) *�� A$ *�� quarters%=4 � + Ȏ n% � + � 1:A$="1st QUARTER" + � 2:A$="2nd QUARTER" + � 3:A$="3rd QUARTER" +* � 4:A$="4th QUARTER" +4 � +>� +H Ȏ n% � +R � 1:A$="TOP HALF" +\ � 2:A$="BOTTOM HALF" +f � +p� +z>�text(100*xscale%,1880*yscale%,A$,12,12,2,black%,white%,0) +�� +�: +�� �save_it_teams(� ok%) +� � ZZZ +�ș "Hourglass_On" +�� n%,bot_y%,f$,type%,ft% +��filetype(file2%,type%,ft%) +�� type%=2 � +�) �report("Object is a directory",17) +� ok%=� +� � +�� +�� type%=1 � ft%<>&AFF � ,S ok%=�yn("An object of this name already exists (type "+�~ft%+"). Continue ?") , � �(ok%) � � ,� ,$f$=$file2% ,.�drawfile_start(f$) ,8�fonttable ,B� n%=1� teams% ,L �drawfile_teams(n%,bot_y%) ,V� ,`'�draw_title(1,(bot_y%-160)*yscale%) ,j�drawfile_end ,tș "Hourglass_Off" ,~ ok%=� ,�� ,�: ,�"� �drawfile_teams(t%,� bot_y%) ,�� x%,y% ,� t%-=1 ,�x%=(t% � 4)*400+100 ,�'y%=1860-36*(per_team%+3.5)*(t% � 4) ,� t%+=1 ,�a$="TEAM "+�t% ,�;�text(x%*xscale%,y%*yscale%,a$,12,12,1,black%,black%,1) ,�� p%=1� per_team% ,� a$=�player(t%,p%) - G �text(x%*xscale%,(y%-36*p%-16)*yscale%,a$,8,12,1,black%,black%,0) - bot_y%=(y%-36*p%-16) -� -� -(: -2� �space(A$,l%) -<ȕ �(A$)<l% -F A$+=" " -P� -Z=�A$,l%) -d: -n� �quicksave(window%) -x� file$,ok% -�Ȏ window% � -�! � save_window%:file$=$file% -�# � save_window2%:file$=$file2% -�� -�� �file$,".") � -� �saveit(window%,ok%) -�� -�? �report("To save, drag the icon to a directory viewer",1) -�� -�� -�: -�� �save_file(window%) -�Ȏ icon% � . � ok%,ok2%: .* � block%!8 � 5 �quicksave(window%) ." � button%=4 � �close_menus ." � drag%,drag2%: .,/ � block%!8 � 64 �dragbox(window%,icon%) .6� .@� .J: .T� �startsave(window%) .^$ș "Wimp_GetPointerInfo",,block% .hKblock%!20=block%!12 :� window handle - message sent to window's creator .rGblock%!24=block%!16 :� icon handle - message sent to icon's creator .|"block%!28=!block% :� mouse x .�"block%!32=block%!4 :� mouse y .� .�%block%!36=�obj$+�path$+�type$+3:� .� .�*!block%=64 :� length of block .�6block%!12=0 :� my ref (0=original message) .�5block%!16=1 :� message action - data save .�)block%!40=filetype% :� file type .� .�Ȏ window% � .�2 � save_window%:$(block%+44)=�getleaf($file%) .�4 � save_window2%:$(block%+44)=�getleaf($file2%) .�� /7ș "Wimp_SendMessage",18,block%,block%!20,block%!24 /� /: /&� �getleaf(a$) /0ȕ �a$,".") /: a$=�a$,�a$,".")+1) /D� /N =a$+�0 /X: /b� �dragbox(window%,icon%) /ldrag_from%=window% /v!block%=window% /�$ș "Wimp_GetWindowState",,block% /�ox%=block%!4-block%!20 /�oy%=block%!16-block%!24 /�.block%!4=icon% :� icon number /�"ș "Wimp_GetIconState",,block% /�Fblock%!4=5 :� drag type - rotating fixed size box /�5block%!8=ox%+block%!8 :� minimum x at start /�5block%!12=oy%+block%!12 :� minimum y at start /�5block%!16=ox%+block%!16 :� maximum x at start /�5block%!20=oy%+block%!20 :� maximum y at start /�:block%!24=0 :� minimum x of parent box /�:block%!28=0 :� minimum y of parent box /�:block%!32=&7FFFFFFF :� maximum x of parent box 0:block%!36=&7FFFFFFF :� maximum y of parent box 0ș "Wimp_DragBox",,block% 0� 0 : 0*� �datasave 04� ok%,a%,b%,c% 0>Ȏ drag_from% � 0H. � save_window%:$file%=�string(block%+44) 0R0 � save_window2%:$file2%=�string(block%+44) 0\� 0fa%=block%!8 0pb%=block%!20 0zc%=block%!24 0��saveit(drag_from%,ok%) 0�� �(ok%) � � 0�block%!12=a% 0�block%!16=3 0�block%!20=b% 0�block%!24=c% 0�!block%=256 0�7ș "Wimp_SendMessage",18,block%,block%!20,block%!24 0�� 0�: 0�� �get_name 0�� n$,n% 0� n$="" 1n%=�#Q% 1 ȕ n%<>13 � n%<>0 � �(n$)<20 1 n$+=�(n%) 1$ n%=�#Q% 1.� 18=n$ 1B: 1L� �merge_it 1V � totn%,tots%,n%,Q%,icon%,n$ 1`Q%=�(path$) 1j�#Q%=42 1ttotn%=�#Q% 1~tots%=�#Q% 1�+� totnames%+totseeds%+totn%+tots%>128 � 1�" �report("Too many names.",1) 1� � 1�� 1�� totn%<>0 � 1� � n%=1�totn% 1�% icon%=�iconfromname(totn%,n%) 1� �#Q%=45+(icon%-4)*19 1� n$=�get_name 1� �name_in(n$) 1� � 1�� 2 � n%=1�16 2 �#Q%=2962+n% 2 � �#Q%=1 � 2 �#Q%=2500+(n%-1)*19 2( n$=�get_name 22 �name_in(n$) 2< � 2F� 2P�put_names_in_icons 2Z�show_seeds 2d�no_draw 2n�set_quarters 2x�open_window(main_window%) 2�altered%=� 2�� 2�: 2�� �add_extras 2�� n%,m% 2�extras%=totseeds% 2� � (totnames%+totseeds%)� 1 � 2�/ names$(totnames%+totseeds%+1)="A.N.Other" 2�� 2�� totseeds%=0 � � 2�m%=0 2� � n%=1�16 2� � seed_exists%?n%=1 � 3 m%+=1 30 names$(totnames%+m%)=$(seeds%+19*(n%-1)) 3 � 3"� 3,� 36: 3@� �set_quarters 3J� n% 3Tn%=1 3^ȕ n%<totnames%+totseeds% 3h n%=n%*2 3r� 3|Ȏ n% � 3� � 128: 3� quarters%=4 3� per_quart%=32 3� � 64: 3� quarters%=2 3� per_quart%=32 3� 3� quarters%=1 3� per_quart%=n% 3�� 3�tot_draw%=n% 3�� doubles% � 3� Ȏ quarters% � 4# � 2,4:quarters%=quarters%/2 4# � 1:per_quart%=per_quart%/2 4 � 4&� 40� 4:: 4D� �show_draw 4N� width%,height%,n%,m% 4Xwidth%=quarters%*288+64 4b(� doubles% � width%=quarters%*576+64 4lheight%=per_quart%*44+64 4vm%=doubles%:n%=per_team% 4��no_draw 4�doubles%=m%:per_team%=n% 4�draw_made%=� 4�\draw_window%=�create_window(960,704,320,320,width%-320,height%-320,&BF000002,"Draw",0,0) 4��open_window(draw_window%) 4�� 4�: 4�� �show_teams 4�� teams%>3 � 4� width%=78*16 4�� 4� width%=teams%*19*16 4�� 52height%=((teams%-1) � 4+1)*32*(per_team%+3)+32 5]draw_window%=�create_window(960,704,320,320,width%-320,height%-320,&BF000002,"Teams",0,0) 5�open_window(draw_window%) 5 draw_made%=� 5*� 54: 5>� �draw_draw_window 5H� n%,m%,num%,w% 5R � doubles% � w%=576:� w%=288 5\� n%=1� quarters% 5f � m%=1� per_quart% 5p! num%=(n%-1)*per_quart%+m% 5z � �(draw$(num%))<17 � 5� ș "Wimp_SetColour",11 5� � 5� ș "Wimp_SetColour",7 5� � 5�/ � ox%+(n%-1)*w%+32,oy%-44*m%-8*(m% � 1) 5�) � �draw$((n%-1)*per_quart%+m%),2) 5�' � (m% � 1)=0 � m%<>per_quart% � 5� ș "Wimp_SetColour",8 5�) � ox%+(n%-1)*w%+32,oy%-44*m%-36 5� � 1,w%-16,0 5� � 5� � 5�� 6� 6: 6� �draw_option 6$Ȏsubopt1% � 6. � 0:�make_draw 68$ � 1:�open_window(draw_window%) 6B � 2: 6L �no_draw 6V altered%=� 6` � 3:�print_draw 6j� 6t� 6~: 6�� �no_draw 6�� draw_made% � 6� !block%=draw_window% 6�$ ș "Wimp_DeleteWindow",,block% 6�� 6�draw_made%=� 6�doubles%=� 6�per_team%=0 6�� 6�: 6�� �clear_draw 6�!=�yn("Clear Existing Draw ?") 7 : 7 � �yn(a$) 7�report(a$,19) 7=(errclick%=1) 7(: 72� �make_draw 7<� n% 7F� subopt2%=-1 � � 7P� subopt2%=3 � 7Z �teams 7d � 7n� 7x� n%=1�128 7� draw$(n%)=" bye" 7� drawn?n%=0 7�� 7�� subopt2%=2 � 7� �doubles 7� � 7�� 7�doubles%=� 7�per_team%=0 7�teams%=0 7��set_quarters 7�� withseeds% 7�withseeds%=(subopt2%=0) 8� withseeds% � 8 �put_seeds_in 8� 8" �add_extras 8,� 86� n%=1�tot_draw% � 2 8@. � draw$(n%)=" bye" � draw$(n%)=�name(n%) 8J� 8T� totnames%<>0 � 8^ � n%=1�totnames%+extras% 8h' � drawn?n%=0 � �put_name_in(n%) 8r � 8|� 8�� n%=1�128 8�+ � draw$(n%)=" BYE" � draw$(n%)=" bye" 8�� 8��show_draw 8�altered%=� 8�� 8�: 8�� �name(pos%) 8�� n%,a$ 8�� 8� n%=�(totnames%+extras%) 8�� drawn?n%=0 8�drawn?n%=1 9drawpos%?n%=pos% 9� n%>totnames% � 9 a$=�(n%-totnames%) 9&� 90 a$=" " 9:� 9D=a$+names$(n%) 9N: 9X� �put_name_in(name%) 9b� n%,a$ 9l� 9v! n%=�(tot_draw%) � %11111110 9�� draw$(n%)=" bye" 9�drawpos%?name%=n% 9�� name%>totnames% � 9� a$=�(name%-totnames%) 9�� 9� a$=" " 9�� 9�draw$(n%)=a$+names$(name%) 9�� 9�: 9�� �set_draw_names 9�� doubles% � 9� �set_draw_names_doubles :� : �set_draw_names_singles :� : � :*: :4� �set_draw_names_doubles :>� n% :H � n%=1�64 :R draw$(n%)=" bye" :\� :f�add_extras :p � n%=1�64 :z m%=drawpos%?(n%*2-1) :� � m%<>0 � :�M draw$(n%)=" "+names$(drawpos%?(n%*2-1))+" & "+names$(drawpos%?(n%*2)) :� � :�� :�� :�: :�� �set_draw_names_singles :�� n% :�� n%=1�128 :� � per_team%=0 � :� draw$(n%)=" bye" :� � :� draw$(n%)=" -----" ; � ;� ;�add_extras ;$� totnames%<>0 � ;. � n%=1� totnames% ;8) draw$(drawpos%?n%)=" "+names$(n%) ;B � ;L� ;V� totseeds%<>0 � ;` � n%=1�totseeds% ;jA draw$(drawpos%?(n%+totnames%))=�(n%)+names$(n%+totnames%) ;t � ;~� ;�� ;�: ;�� �put_seeds_in ;�� n%,m%,byes% ;�'byes%=tot_draw%-totnames%-totseeds% ;��set_seed_positions ;� extras%=0 ;�m%=0 ;� � n%=1�16 ;� � seed_exists%?n%=1 � ;�1 m%+=1:� m% in V if seeds to be compressed ;�, �put_seed_in(n%,$(seeds%+19*(n%-1))) <