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)))
<