Posted: 5th Feb 2003 15:04
I've build a small snippet to make a loader that display a progress image (or progression bar ) a bit like in the game "Dark Age Of Camelot".

That snippet use 3 functions and 1 external file that you can define yourself as follow :
- top part of bitmap contain : origin image ( 0% loaded )
- bottom part of bitmap contain : 100% loaded image.

for example a 192x128 sized bitmap will contain :
- 0,0,192,64 : origin image
- 0,64,192,128 : 100% loaded image

+ Code Snippet
Rem
Rem Custom-Loader Using Sprite Image.
Rem

Rem That program use : Bitmap 1 , Sprite 65535 and Image 65535
Rem

Set Display mode 320,240,16
Sync Rate 75 : Sync On : Sync


Rem We initialize loader by loading the needed image to bitmap #1
_Initialize_Loader("gfx\_Loader_Display.jpg")
Rem beginning of the main loop for that example.
Repeat
  Rem We display percentage from 0.1 up to 100.0 using step 0.1
  _Percent#=_Percent#+0.1 : _Percent=int(_percent#)
  _Display_Loader(_percent)
  Sync
 Until spacekey()=1 or _percent=100

Rem We quit the loader by freeing bitmap , sprite and image used.
_Release_Loader()
End

Rem We initialize loader by loading the needed image to bitmap #1
Function _Initialize_Loader(_file$)
  _INITIALIZED=0
  if _file$="" then file$="gfx\_Loader_Display.jpg"
  if file exist(_file$)=1
    load bitmap _file$,1
    xsize=bitmap width(1) : ysize=bitmap height(1)/2
    _INITIALIZED=1
   Endif
 EndFunction _INITIALIZED

Rem We quit the loader by freeing bitmap , sprite and image used.
Function _Release_Loader()
  if image exist(65535)=1 then delete image 65535
  if bitmap exist(1)=1 then delete bitmap 1
 Endfunction

Rem Display percent using 1 sprite.
 Function _Display_Loader(_pourcentage)
  _SUCCESS=0
  if bitmap exist(1)=1
    _SUCCESS=1
    Set Current Bitmap 1
    xsize=bitmap width(1) : ysize=bitmap height(1)/2
    _1percent#=xsize/100.0 : xget=_1percent#*_pourcentage
    if xgetxsize-1 then xget=xsize-1
    copy bitmap 1,0,ysize,xget,(ysize*2)-1,1,0,0,xget,ysize-1
    get image 65535,0,0,xsize,ysize
    xpos=(bitmap width(0)-xsize)/2
    ypos=(bitmap height(0)-ysize)/2
    Set Current Bitmap 0
    Sprite 65535,xpos,ypos,65535
   Endif
 Endfunction _SUCCESS