REM >Explode
REM By Dave Lawrence 26Jun95
REM Bug fix: Treat images as files NCW 18Oct95

ON ERROR PRINT REPORT$;" at line ";ERL:END
DIM buf 512

in$=FNgetargs
SYS "OS_ReadArgs", "dir/k,title/k,sub/k,add/k,do/k", in$, buf, 512
dir$=FNstr0(!buf)
title$=FNstr0(buf!4)
sub$=FNstr0(buf!8)
add$=FNstr0(buf!12)
do$=FNstr0(buf!16)
IF sub$<>"" sub$="-sub ""Dynamic:/"+sub$+" "+dir$+""""

menu=FNswi_number("Director_Menu")
endmenu=FNswi_number("Director_EndMenu")
option=FNswi_number("Director_Option")
command=FNswi_number("Director_Command")
subargs=FNswi_number("OS_SubstituteArgs")
dash=FNswi_number("Director_Dash")

SYS "OS_FSControl",37,dir$,buf,,,512
canon$=FNstr0(buf)
SYS menu,title$+" Explode -temp"
total=0
PROCrecurse(canon$,"")
IF total>0 AND add$<>"" THEN
 SYS dash
 SYS option, add$+" -sub ""Dynamic:/"+do$+" "+dir$+""""
ENDIF
*EndMenu
*Set Director$Menu Explode
END
:
DEF PROCrecurse(from$,pre$)
LOCAL i
i=0
REPEAT
 SYS "OS_GBPB",12,from$,buf,1,i,128,0 TO ,,,read,i
 IF read=1 THEN
  leaf$=FNstr0(buf+24)
  path$=from$+"."+leaf$
  name$=leaf$
  IF pre$<>"" name$=pre$+"."+name$
  CASE buf!16 OF
   WHEN 1,3:
    spr$ = "small_"+RIGHT$("000"+STR$~buf!20,3)
    SYS option, name$+" -sprite "+spr$+" "+sub$
    total+=1
   WHEN 2:
    PROCrecurse(path$, name$)
  ENDCASE
 ENDIF
UNTIL i=-1
ENDPROC

DEF FNswi_number(swi$)
SYS "OS_SWINumberFromString",,swi$ TO swi%
=swi%
:
DEF FNgetargs
SYS "OS_GetEnv" TO A$
quit=INSTR(A$,"-quit")
IF quit=0 quit=INSTR(A$,"-QUIT")
A$=MID$(A$,quit+6)
spc=INSTR(A$," ")
A$=MID$(A$,spc+1)
=A$
:
DEF FNstr0(A)
A$=""
WHILE ?A<>0
 A$+=CHR$?A
 A+=1
ENDWHILE
=A$
