@@ -119,6 +119,13 @@ private void Refresh()
119119 CreateExample_PutChars ( ) ;
120120 }
121121 break ;
122+ case ExportTypes . MaskedSprites :
123+ CreateExportPath ( ".bas" ) ;
124+ if ( canExport )
125+ {
126+ CreateExample_MaskedSprites ( ) ;
127+ }
128+ break ;
122129 default :
123130 grdOptions . IsVisible = false ;
124131 break ;
@@ -264,6 +271,143 @@ private void CreateExample_PutChars()
264271 txtCode . Text = sb . ToString ( ) ;
265272 }
266273
274+
275+ private void CreateExample_MaskedSprites ( )
276+ {
277+ if ( sprites == null || sprites . Count ( ) == 0 )
278+ {
279+ txtCode . Text = "" ;
280+ }
281+
282+ var sb = new StringBuilder ( ) ;
283+ switch ( exportConfig . ExportDataType )
284+ {
285+ case ExportDataTypes . DIM :
286+ {
287+ var sprite = sprites . ElementAt ( 0 ) ;
288+ sb . AppendLine ( "'- Includes -----------------------------------------------" ) ;
289+ sb . AppendLine ( "#INCLUDE <retrace.bas>" ) ;
290+ sb . AppendLine ( "#INCLUDE \" maskedsprites.bas\" " ) ;
291+ sb . AppendLine ( "" ) ;
292+ sb . AppendLine ( "'- Sprites definition -------------------------------------" ) ;
293+ sb . AppendLine ( string . Format ( "' Can use: #INCLUDE \" {0}\" " ,
294+ Path . GetFileName ( exportConfig . ExportFilePath ) ) ) ;
295+ sb . AppendLine ( ExportManager . Export_Sprite_MaskedSprites ( exportConfig , sprites ) ) ;
296+ sb . AppendLine ( "' - Init vars ---------------------------------------------" ) ;
297+ sb . AppendLine ( "#define NumberofMaskedSprites 1" ) ;
298+ sb . AppendLine ( "DIM sprDir, sprBackDir AS UInteger" ) ;
299+ sb . AppendLine ( "" ) ;
300+ sb . AppendLine ( "'- Initialise the sprite engine ---------------------------" ) ;
301+ sb . AppendLine ( "InitMaskedSpritesFileSystem()" ) ;
302+ sb . AppendLine ( "' Create sprite" ) ;
303+ sb . AppendLine ( $ "sprDir = RegisterSpriteImageInMSFS(@{ exportConfig . LabelName } { sprite . Name . Replace ( " " , "_" ) } (0))") ;
304+ sb . AppendLine ( "' Save background for first time" ) ;
305+ sb . AppendLine ( "sprBackDir = MaskedSpritesBackground(0)" ) ;
306+ sb . AppendLine ( "" ) ;
307+ sb . AppendLine ( "'- Draw sprite --------------------------------------------" ) ;
308+ sb . AppendLine ( "DIM n AS UByte" ) ;
309+ sb . AppendLine ( "DO" ) ;
310+ sb . AppendLine ( " ' Sync with raytrace" ) ;
311+ sb . AppendLine ( " waitretrace" ) ;
312+ sb . AppendLine ( " ' Restore background" ) ;
313+ sb . AppendLine ( " RestoreBackground(100,52,sprBackDir)" ) ;
314+ sb . AppendLine ( " " ) ;
315+ sb . AppendLine ( " ' Print a number" ) ;
316+ sb . AppendLine ( " PRINT AT 7,12;n;" ) ;
317+ sb . AppendLine ( " n = n + 1" ) ;
318+ sb . AppendLine ( " ' Draw sprite" ) ;
319+ sb . AppendLine ( " SaveBackgroundAndDrawSpriteRegisteredInMSFS(100,52,sprBackDir,sprDir) " ) ;
320+ sb . AppendLine ( "LOOP" ) ;
321+ sb . AppendLine ( "" ) ;
322+ }
323+ break ;
324+
325+ case ExportDataTypes . ASM :
326+ {
327+ var sprite = sprites . ElementAt ( 0 ) ;
328+ sb . AppendLine ( "'- Includes -----------------------------------------------" ) ;
329+ sb . AppendLine ( "#INCLUDE <retrace.bas>" ) ;
330+ sb . AppendLine ( "#INCLUDE \" maskedsprites.bas\" " ) ;
331+ sb . AppendLine ( "" ) ;
332+ sb . AppendLine ( "' - Init vars ---------------------------------------------" ) ;
333+ sb . AppendLine ( "#define NumberofMaskedSprites 1" ) ;
334+ sb . AppendLine ( "DIM sprDir, sprBackDir AS UInteger" ) ;
335+ sb . AppendLine ( "" ) ;
336+ sb . AppendLine ( "'- Initialise the sprite engine ---------------------------" ) ;
337+ sb . AppendLine ( "InitMaskedSpritesFileSystem()" ) ;
338+ sb . AppendLine ( "' Create sprite" ) ;
339+ sb . AppendLine ( $ "sprDir = RegisterSpriteImageInMSFS(@{ exportConfig . LabelName } _{ sprite . Name . Replace ( " " , "_" ) } )") ;
340+ sb . AppendLine ( "' Save background for first time" ) ;
341+ sb . AppendLine ( "sprBackDir = MaskedSpritesBackground(0)" ) ;
342+ sb . AppendLine ( "" ) ;
343+ sb . AppendLine ( "'- Draw sprite --------------------------------------------" ) ;
344+ sb . AppendLine ( "DIM n AS UByte" ) ;
345+ sb . AppendLine ( "DO" ) ;
346+ sb . AppendLine ( " ' Sync with raytrace" ) ;
347+ sb . AppendLine ( " waitretrace" ) ;
348+ sb . AppendLine ( " ' Restore background" ) ;
349+ sb . AppendLine ( " RestoreBackground(100,52,sprBackDir)" ) ;
350+ sb . AppendLine ( " " ) ;
351+ sb . AppendLine ( " ' Print a number" ) ;
352+ sb . AppendLine ( " PRINT AT 7,12;n;" ) ;
353+ sb . AppendLine ( " n = n + 1" ) ;
354+ sb . AppendLine ( " ' Draw sprite" ) ;
355+ sb . AppendLine ( " SaveBackgroundAndDrawSpriteRegisteredInMSFS(100,52,sprBackDir,sprDir) " ) ;
356+ sb . AppendLine ( "LOOP" ) ;
357+ sb . AppendLine ( "" ) ;
358+ sb . AppendLine ( "' - This section must not be executed --------------------" ) ;
359+ sb . AppendLine ( string . Format ( "' Can use: #INCLUDE \" {0}\" " ,
360+ Path . GetFileName ( exportConfig . ExportFilePath ) ) ) ;
361+ sb . AppendLine ( ExportManager . Export_Sprite_MaskedSprites ( exportConfig , sprites ) ) ;
362+ }
363+ break ;
364+
365+ case ExportDataTypes . BIN :
366+ {
367+ sb . AppendLine ( "'- Includes -----------------------------------------------" ) ;
368+ sb . AppendLine ( "#INCLUDE <putchars.bas>" ) ;
369+ sb . AppendLine ( "" ) ;
370+ sb . AppendLine ( "'- Draw sprite --------------------------------------------" ) ;
371+ var sprite = sprites . ElementAt ( 0 ) ;
372+ sb . AppendLine ( string . Format (
373+ "putChars(10,5,{0},{1},@{2})" ,
374+ sprite . Width / 8 ,
375+ sprite . Height / 8 ,
376+ exportConfig . LabelName ) ) ;
377+ sb . AppendLine ( "" ) ;
378+ sb . AppendLine ( "' This section must not be executed" ) ;
379+ sb . AppendLine ( string . Format (
380+ "{0}:" ,
381+ exportConfig . LabelName ) ) ;
382+ sb . AppendLine ( "ASM" ) ;
383+ sb . AppendLine ( string . Format ( "\t INCBIN \" {0}\" " ,
384+ Path . GetFileName ( exportConfig . ExportFilePath ) ) ) ;
385+ sb . AppendLine ( "END ASM" ) ;
386+ }
387+ break ;
388+
389+ case ExportDataTypes . TAP :
390+ {
391+ sb . AppendLine ( "'- Includes -----------------------------------------------" ) ;
392+ sb . AppendLine ( "#INCLUDE <putchars.bas>" ) ;
393+ sb . AppendLine ( "" ) ;
394+ sb . AppendLine ( "' Load .tap data ------------------------------------------" ) ;
395+ sb . AppendLine ( "LOAD \" \" CODE" ) ;
396+ sb . AppendLine ( "" ) ;
397+ sb . AppendLine ( "'- Draw sprite --------------------------------------------" ) ;
398+ var sprite = sprites . ElementAt ( 0 ) ;
399+ sb . AppendLine ( string . Format (
400+ "putChars(10,5,{0},{1},@{2})" ,
401+ sprite . Width / 8 ,
402+ sprite . Height / 8 ,
403+ exportConfig . LabelName ) ) ;
404+ sb . AppendLine ( "" ) ;
405+ }
406+ break ;
407+ }
408+
409+ txtCode . Text = sb . ToString ( ) ;
410+ }
267411 #endregion
268412
269413
0 commit comments