home *** CD-ROM | disk | FTP | other *** search
/ APDL Public Domain 1 / APDL_PD1A.iso / program / spritegen / MakeSpGen (.txt) < prev    next >
Encoding:
RISC OS BBC BASIC V Source  |  1992-09-28  |  6.3 KB  |  267 lines

  1.   >MakeSpGen
  2. Usage$ = "MakeSpGen <Library> <Out> [-Debug] [-Verbose <n>] [-Size <n>] [-Radius <n>] [-NFrame <n>] [-Mode <n>] [-Prefix <string>] [-Extra <parameters>]"
  3.      use LIBRARY file to create a sprite file
  4.      animations inside a "circle", ie given a MaxR and N frames of animation
  5.      note need to use -Extra "-a -b" so that can read which library to load
  6. Debug% = 
  7. error:
  8.  "OS_GetEnv" 
  9. getz(p%), "-load") 
  10.   Library$  = "MkSqrStar"
  11.   File$     = "$.out"
  12.   Verbose%  = 0
  13.  Library$
  14. _Defaults
  15. k  V$ = "basic,quit/s,/a,Library/a,Out/a,Verbose/e,Debug/s,Size/e,Radius/e,NFrame/e,Mode/e,Prefix,Extra"
  16.  b% 1024
  17.  "XOS_ReadArgs", V$, p%, b%, 512 
  18.  1, "Usage: "+ Usage$
  19.   Library$ = 
  20. getz(b%!12)
  21.   File$    = 
  22. getz(b%!16)
  23.   Verbose% = 
  24. geti(b%!20)
  25.   Debug%   = 
  26. getb(b%!24)
  27.  Library$
  28. _Defaults
  29. geti(Size,    b%!28)
  30. geti(RMax,    b%!32)
  31. geti(NFrame,  b%!36)
  32. geti(Mode,    b%!40)
  33. getz(Prefix$, b%!44)
  34.  b%!48 
  35. $;    
  36.  "XOS_ReadArgs", Param$, b%!48, b%+512, 512 
  37. &:    
  38.  "XOS_ReadArgs", Param$, 
  39. (0), b%+512, 512 
  40.  1, "Bad -Extra: "+ Usage$
  41. _Params(b%+512)                                 :
  42.   external
  43. _Make_Sprites
  44.  b%!48 
  45.  c% 512
  46. 07    
  47.  "XOS_ReadArgs", Param$, b%!48, c%, 512 
  48. 1.    
  49.  1, "Bad -Extra: "+ Usage$
  50. 2E    
  51. _Params(c%)                                     :
  52.   external
  53. _Defaults
  54.   Default values for variables
  55. 8M  Size      = 100               :
  56.   in KiloBytes for output sprite buffer
  57. 93  RMax      = 60                :
  58.   in OS units
  59. ;<  NFrame    = 16                :
  60.  # frames of animation
  61. <:  Mode      = 9                 :
  62.  of sprites genrated
  63. >8  NSprite   = 5                 :
  64.   In demonstration
  65. ?8  Delay     = 7                 :
  66.   In demonstration
  67. A:  Prefix$ = "a"                 :
  68.   Sprite name prefix
  69. _Define_Constants         :
  70.   external
  71. _Make_Sprites
  72.  X, Y, HalfX, HalfY, Width%, Height%, frame%, name$
  73.  "XHourglass_On"
  74.  "XHourglass_Off":
  75. error
  76. screen
  77.   Size = Size * 1024
  78.  Sprites Size
  79.   !Sprites = Size
  80.   Sprites!8 = 16
  81.  "OS_SpriteOp", &109, Sprites      :
  82.   Initialise area
  83.  frame%= 1 
  84.  NFrame
  85. U;    
  86.  "XHourglass_Percentage", ((frame%-1)/NFrame)*100
  87. V'    
  88.  Verbose%=0 
  89. _Define_Palette
  90.  Verbose%>0 
  91. XZ    
  92.  Verbose%>0 
  93. _Draw_Frame(frame%/NFrame, RMax + HalfX + 512, RMax + HalfY + 512)
  94. Y!    name$ = Prefix$+
  95. (frame%)
  96. ZH    
  97.  "OS_SpriteOp", &10F, Sprites, name$, 
  98. , Width%, Height%, Mode
  99. [F    
  100.  "OS_SpriteOp", &13C, Sprites, name$, 0 
  101.  R0%, R1%, R2%, R3%
  102. ]7    
  103. "XOS_SpriteOp",R0%,R1%,R2%,R3%:
  104. error
  105. ^J    
  106. _Draw_Frame(frame%/NFrame,RMax + HalfX, RMax + HalfY):
  107.   external
  108. `+    
  109.  "OS_SpriteOp",R0%, R1%, R2%, R3%
  110.  frame%
  111.  "OS_SpriteOp", &10C, Sprites, File$
  112.  "XHourglass_Off"
  113.  Verbose%>0 
  114. animate
  115. screen
  116.  Verbose%>0 
  117.  Mode:
  118. _Define_Palette  :
  119.   external
  120.  "OS_ReadModeVariable", Mode, 4 
  121.  ,, XEigFactor
  122.  "OS_ReadModeVariable", Mode, 5 
  123.  ,, YEigFactor
  124.   X     = 2^XEigFactor
  125.   Y     = 2^YEigFactor
  126.   HalfX = 0.5 * X
  127.   HalfY = 0.5 * Y
  128. r(  Width%  = (RMax * 2 / X) + 0.5 + 1
  129. s(  Height% = (RMax * 2 / Y) + 0.5 + 1
  130. animate
  131.  i%, name$, dx%, dy%, b%
  132.  a%(), c%(), d%(), q%()
  133.  c%(NSprite, 1)     :
  134.   current position     (x,y)
  135.  d%(NSprite, 1)     :
  136.   destination position (x,y)
  137.  a%(NSprite, 2)     :
  138.   animation            (counter, frame, dir_is_positive)
  139. "OS_Byte",112,1:
  140. "OS_Byte",113,1:
  141. error
  142.  i%= 1 
  143.  NSprite
  144. "    
  145. point(c%(i%,0), c%(i%,1))
  146. U    a%(i%, 0) = 
  147. (Delay)             :
  148.  [0, Delay), when 0 change animation frame
  149. B    a%(i%, 1) = 
  150. (NFrame)             :
  151.  [0, NFrames), current
  152. L    a%(i%, 2) = 
  153. (2)                  :
  154.  [0, 1) = direction of animation
  155. "    
  156. point(d%(i%,0), d%(i%,1))
  157.   b% = 1
  158.  "OS_Byte", 112, b%
  159.     b% = 3-b%
  160.  "OS_Byte", 113, b%
  161.  "OS_Byte", 19
  162.         
  163.         
  164.  i%= 1 
  165.  NSprite
  166. &      name$ = Prefix$+
  167. (a%(i%, 1))
  168. G      
  169.  "OS_SpriteOp", &122, Sprites, name$, c%(i%,0), c%(i%,1), 8
  170. $      dx% = d%(i%,0) - c%(i%, 0)
  171. $      dy% = d%(i%,1) - c%(i%, 1)
  172.       
  173. (dx%)+
  174. (dy%)<X+Y 
  175. &        
  176. point(d%(i%,0), d%(i%,1))
  177.       
  178. $        
  179. move(c%(i%, 0), X, dx%)
  180. $        
  181. move(c%(i%, 1), Y, dy%)
  182.       
  183.       a%(i%, 0) -= 1
  184.       
  185.  a%(i%, 0)<=0 
  186.         a%(i%, 0) = Delay
  187.         
  188.  a%(i%, 2) 
  189. ?          a%(i%, 1) = ((a%(i%, 1) + NFrame-2) 
  190.  NFrame) + 1
  191.         
  192. 2          a%(i%, 1) = (a%(i%, 1) 
  193.  NFrame) + 1
  194.         
  195.       
  196. ENDPRO
  197. point(
  198.  x%, 
  199.   x% = 
  200. (1024)
  201.   y% = 
  202. (1024)
  203. move(
  204.  c%, s, d%)
  205. (d%) < s 
  206.      c% += d%
  207.      c% += s * 
  208.  *********************************************************************
  209. error
  210. report
  211. report
  212.  Debug% 
  213.      rc$= 
  214. $+ " ["+ 
  215. )+ "]"
  216.     rc$= 
  217.     = rc$
  218. _Read_Colours(c$, 
  219.  Col%(), n_want)
  220.  n, i
  221. , "Bad Colours parameter ("+ 
  222. report+ ")"
  223.   i = 
  224. c$, ":")
  225. 2    
  226.  i<>7 
  227.  1, "format of colour is rrGGbb"
  228. ,    Col%(n) = 
  229. eval("&"+ 
  230. c$, i-1)) << 8
  231.     n += 1
  232. ,    
  233.  n=n_want 
  234.  1, "too many colours"
  235.     c$ = 
  236. c$, i+1)
  237.     i = 
  238. c$, ":")
  239. (c$)<>6 
  240.  1, "format of colour is rrGGbb"
  241.  n<>(n_want-1) 
  242.  1, "not enough colours"
  243. #  Col%(n) = 
  244. eval("&"+ c$) << 8
  245. geti(
  246.  var, p%)
  247.     var = 
  248. geti(p%)
  249. getr(
  250.  var, p%)
  251.     var = 
  252. eval(
  253. getz(p%))
  254. getz(
  255.  var$, p%)
  256.     var$ = 
  257. getz(p%)
  258. getb(b%)
  259. getz(b%)
  260. ?b%:V$+=
  261. (?b%):b%+=1:
  262. geti(b%)
  263.  b%=b%!1
  264. eval(__e$)
  265. $+ " {EVALuating `"+ __e$+ "'}"
  266. (__e$)
  267.