home *** CD-ROM | disk | FTP | other *** search
RISC OS BBC BASIC V Source | 1992-09-28 | 6.3 KB | 267 lines |
- >MakeSpGen
- Usage$ = "MakeSpGen <Library> <Out> [-Debug] [-Verbose <n>] [-Size <n>] [-Radius <n>] [-NFrame <n>] [-Mode <n>] [-Prefix <string>] [-Extra <parameters>]"
- use LIBRARY file to create a sprite file
- animations inside a "circle", ie given a MaxR and N frames of animation
- note need to use -Extra "-a -b" so that can read which library to load
- Debug% =
- error:
- "OS_GetEnv"
- getz(p%), "-load")
- Library$ = "MkSqrStar"
- File$ = "$.out"
- Verbose% = 0
- Library$
- _Defaults
- k V$ = "basic,quit/s,/a,Library/a,Out/a,Verbose/e,Debug/s,Size/e,Radius/e,NFrame/e,Mode/e,Prefix,Extra"
- b% 1024
- "XOS_ReadArgs", V$, p%, b%, 512
- 1, "Usage: "+ Usage$
- Library$ =
- getz(b%!12)
- File$ =
- getz(b%!16)
- Verbose% =
- geti(b%!20)
- Debug% =
- getb(b%!24)
- Library$
- _Defaults
- geti(Size, b%!28)
- geti(RMax, b%!32)
- geti(NFrame, b%!36)
- geti(Mode, b%!40)
- getz(Prefix$, b%!44)
- b%!48
- $;
- "XOS_ReadArgs", Param$, b%!48, b%+512, 512
- &:
- "XOS_ReadArgs", Param$,
- (0), b%+512, 512
- 1, "Bad -Extra: "+ Usage$
- _Params(b%+512) :
- external
- _Make_Sprites
- b%!48
- c% 512
- 07
- "XOS_ReadArgs", Param$, b%!48, c%, 512
- 1.
- 1, "Bad -Extra: "+ Usage$
- 2E
- _Params(c%) :
- external
- _Defaults
- Default values for variables
- 8M Size = 100 :
- in KiloBytes for output sprite buffer
- 93 RMax = 60 :
- in OS units
- ;< NFrame = 16 :
- # frames of animation
- <: Mode = 9 :
- of sprites genrated
- >8 NSprite = 5 :
- In demonstration
- ?8 Delay = 7 :
- In demonstration
- A: Prefix$ = "a" :
- Sprite name prefix
- _Define_Constants :
- external
- _Make_Sprites
- X, Y, HalfX, HalfY, Width%, Height%, frame%, name$
- "XHourglass_On"
- "XHourglass_Off":
- error
- screen
- Size = Size * 1024
- Sprites Size
- !Sprites = Size
- Sprites!8 = 16
- "OS_SpriteOp", &109, Sprites :
- Initialise area
- frame%= 1
- NFrame
- U;
- "XHourglass_Percentage", ((frame%-1)/NFrame)*100
- V'
- Verbose%=0
- _Define_Palette
- Verbose%>0
- XZ
- Verbose%>0
- _Draw_Frame(frame%/NFrame, RMax + HalfX + 512, RMax + HalfY + 512)
- Y! name$ = Prefix$+
- (frame%)
- ZH
- "OS_SpriteOp", &10F, Sprites, name$,
- , Width%, Height%, Mode
- [F
- "OS_SpriteOp", &13C, Sprites, name$, 0
- R0%, R1%, R2%, R3%
- ]7
- "XOS_SpriteOp",R0%,R1%,R2%,R3%:
- error
- ^J
- _Draw_Frame(frame%/NFrame,RMax + HalfX, RMax + HalfY):
- external
- `+
- "OS_SpriteOp",R0%, R1%, R2%, R3%
- frame%
- "OS_SpriteOp", &10C, Sprites, File$
- "XHourglass_Off"
- Verbose%>0
- animate
- screen
- Verbose%>0
- Mode:
- _Define_Palette :
- external
- "OS_ReadModeVariable", Mode, 4
- ,, XEigFactor
- "OS_ReadModeVariable", Mode, 5
- ,, YEigFactor
- X = 2^XEigFactor
- Y = 2^YEigFactor
- HalfX = 0.5 * X
- HalfY = 0.5 * Y
- r( Width% = (RMax * 2 / X) + 0.5 + 1
- s( Height% = (RMax * 2 / Y) + 0.5 + 1
- animate
- i%, name$, dx%, dy%, b%
- a%(), c%(), d%(), q%()
- c%(NSprite, 1) :
- current position (x,y)
- d%(NSprite, 1) :
- destination position (x,y)
- a%(NSprite, 2) :
- animation (counter, frame, dir_is_positive)
- "OS_Byte",112,1:
- "OS_Byte",113,1:
- error
- i%= 1
- NSprite
- "
- point(c%(i%,0), c%(i%,1))
- U a%(i%, 0) =
- (Delay) :
- [0, Delay), when 0 change animation frame
- B a%(i%, 1) =
- (NFrame) :
- [0, NFrames), current
- L a%(i%, 2) =
- (2) :
- [0, 1) = direction of animation
- "
- point(d%(i%,0), d%(i%,1))
- b% = 1
- "OS_Byte", 112, b%
- b% = 3-b%
- "OS_Byte", 113, b%
- "OS_Byte", 19
-
-
- i%= 1
- NSprite
- & name$ = Prefix$+
- (a%(i%, 1))
- G
- "OS_SpriteOp", &122, Sprites, name$, c%(i%,0), c%(i%,1), 8
- $ dx% = d%(i%,0) - c%(i%, 0)
- $ dy% = d%(i%,1) - c%(i%, 1)
-
- (dx%)+
- (dy%)<X+Y
- &
- point(d%(i%,0), d%(i%,1))
-
- $
- move(c%(i%, 0), X, dx%)
- $
- move(c%(i%, 1), Y, dy%)
-
- a%(i%, 0) -= 1
-
- a%(i%, 0)<=0
- a%(i%, 0) = Delay
-
- a%(i%, 2)
- ? a%(i%, 1) = ((a%(i%, 1) + NFrame-2)
- NFrame) + 1
-
- 2 a%(i%, 1) = (a%(i%, 1)
- NFrame) + 1
-
-
- ENDPRO
- point(
- x%,
- x% =
- (1024)
- y% =
- (1024)
- move(
- c%, s, d%)
- (d%) < s
- c% += d%
- c% += s *
- *********************************************************************
- error
- report
- report
- Debug%
- rc$=
- $+ " ["+
- )+ "]"
- rc$=
- = rc$
- _Read_Colours(c$,
- Col%(), n_want)
- n, i
- , "Bad Colours parameter ("+
- report+ ")"
- i =
- c$, ":")
- 2
- i<>7
- 1, "format of colour is rrGGbb"
- , Col%(n) =
- eval("&"+
- c$, i-1)) << 8
- n += 1
- ,
- n=n_want
- 1, "too many colours"
- c$ =
- c$, i+1)
- i =
- c$, ":")
- (c$)<>6
- 1, "format of colour is rrGGbb"
- n<>(n_want-1)
- 1, "not enough colours"
- # Col%(n) =
- eval("&"+ c$) << 8
- geti(
- var, p%)
- var =
- geti(p%)
- getr(
- var, p%)
- var =
- eval(
- getz(p%))
- getz(
- var$, p%)
- var$ =
- getz(p%)
- getb(b%)
- getz(b%)
- ?b%:V$+=
- (?b%):b%+=1:
- geti(b%)
- b%=b%!1
- eval(__e$)
- $+ " {EVALuating `"+ __e$+ "'}"
- (__e$)
-