CONST SL_VISIBLE
= -32763 CONST SL_INVISIBLE
= -32762 CONST SL_CENTERX
= -32757 CONST SL_CENTERY
= -32756 CONST SL_UPRIGHT
= -32749 CONST SL_DOWNRIGHT
= -32748 CONST SL_DOWNLEFT
= -32747
TYPE SL_RECT
' RECTANGULAR OBJECT PROPERTIES
TYPE SL_LAYERS
' ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ LAYER DATABASE ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ image
AS LONG ' software image of screen layer visible
AS INTEGER ' -1 (TRUE) if layer is visible dest
AS INTEGER ' -1 (TRUE) if layer is destination ** needed? ** source
AS INTEGER ' -1 (TRUE) if layer is source ** needed? **END TYPE ' ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
TYPE SL_GLOBAL
' ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ GLOBALS DATABASE ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ screen AS SL_RECT
' screen coordinate properties source
AS INTEGER ' current source layer 0 - x, 0 for main screen, -1 if no layer is a source destination
AS INTEGER ' current destination layer 0 - x, 0 for main screen, -1 if no layer is a destinationEND TYPE ' ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
REDIM SL_layer
(1) AS SL_LAYERS
' master layer array DIM SL_global
AS SL_GLOBAL
' common globals
' main program (for testing)
SL_WINDOW 960, 540, 7
SL_SET_LAYER 7, SL_DEST
SL_SET_LAYER 6, SL_DEST
SL_SET_LAYER 5, SL_DEST
SL_SET_LAYER 4, SL_DEST
SL_SET_LAYER 3, SL_DEST
SL_SET_LAYER 2, SL_DEST
SL_SET_LAYER 1, SL_DEST
IF _MOUSEX < SL_GET_SCREEN
(SL_CENTERX
) THEN direction
= SL_RIGHT
ELSE direction
= SL_LEFT
SL_SHIFT_LAYER layer, direction, 8 - layer
SL_DISPLAY
SL_QUIT
'ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
' ----------========== ==========----------
' ----------========== LIBARY CONTROL ROUTINES ==========----------
' ----------========== ==========----------
'ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
' ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
SHARED SL_layer
() AS SL_LAYERS
' master layer array SHARED SL_global
AS SL_GLOBAL
' common globals
IF layers
< 1 THEN ' creating at least one layer? SL_error "SL_WINDOW", 1, "" ' no, report error to programmer
IF swidth
< 1 OR sheight
< 1 THEN ' window width and/or height greater than zero? SL_error "SL_WINDOW", 2, "" ' no, report error to programmer
REDIM SL_layer
(layers
) AS SL_LAYERS
' increase layer array to match requested number of layers SL_global.
screen.
width = swidth
' save screen dimensions SL_global.
screen.height
= sheight
SL_global.
screen.right
= swidth
- 1 SL_global.
screen.bottom
= sheight
- 1 SL_global.
screen.centerx
= swidth \
2 - 1 SL_global.
screen.centery
= sheight \
2 - 1 layer = 0 ' reset layer counter
DO ' cycle through layers layer = layer + 1 ' increment layer counter
SL_layer
(layer
).image
= _NEWIMAGE(swidth
, sheight
, 32) ' create layer software image SL_layer(layer).visible = -1 ' (TRUE) layer is visible
SL_SET_LAYER 1, SL_DEST ' set layer 1 as the destination
SL_SET_LAYER 1, SL_SOURCE ' set layer 1 as the source
' ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
SUB SL_DISPLAY
() ' SL_DISPLAY 'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
SHARED SL_layer
() AS SL_LAYERS
' master layer array SHARED SL_global
AS SL_GLOBAL
' common globals array DIM merge
AS LONG ' software image to merge all layers onto DIM hwimage
AS LONG ' final hardware image of merged layers
layer
= UBOUND(SL_layer
) ' start with the highest numbered layer
DO ' cycle through layers backwards (high to low) IF SL_layer
(layer
).visible
THEN ' is this layer visible? _PUTIMAGE , SL_layer
(layer
).image
, merge
' place this layer onto merge image layer = layer - 1 ' decrement layer counter
LOOP UNTIL layer
= 0 ' leave when all layers merged hwimage
= _COPYIMAGE(merge
, 33) ' create hardware image of merged layers _PUTIMAGE , hwimage
, 0 ' place hardware image on main screen _FREEIMAGE merge
' merged software image no longer needed _FREEIMAGE hwimage
' merged hardware image no longer needed
'*
'* SL_draw_sprites ' draw all sprites in use <---------------------------------------------------- LOOK
'*
_DISPLAY ' update display screen with changes
' ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
SHARED SL_layer
() AS SL_LAYERS
' master layer array
SCREEN 0, 0, 0, 0 ' go to a text screen DO ' cycle through layers count = count + 1 ' increment layer counter
_FREEIMAGE SL_layer
(count
).image
' remove layer image from meory
' ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
SHARED SL_layer
() AS SL_LAYERS
' master layer array SHARED SL_global
AS SL_GLOBAL
' common globals array DIM temp
AS LONG ' temporary screen and layer image DIM current
AS LONG ' current screen and layer image DIM destination
AS INTEGER ' -1 (TRUE) if layer is the destination
IF (x
< 1) OR (y
< 1) THEN SL_error
"SL_SET_SCREEN", 9, "" ' report error to programmer
' change the screen's dimensions
osource
= _SOURCE ' save current source odest
= _DEST ' save current destination _SOURCE 0 ' set screen as the source _DEST 0 ' set screen as the destination current
= _SOURCE ' get current screen source handle temp
= _COPYIMAGE(current
, 32) ' make a copy of the screen SCREEN temp
' make the copy the current screen _FREEIMAGE current
' remove the old screen from memory 'currentscreen = _NEWIMAGE(x, y, 32)
'SCREEN currentscreen
'_PUTIMAGE (0, 0), tempscreen, currentscreen
_PUTIMAGE , temp
' put the old screen image back on top _FREEIMAGE temp
' remove the temporary image from memory _DEST odest
' restore the original destination _SOURCE osource
' restore the original source SL_global.
screen.right
= x
- 1 SL_global.
screen.bottom
= y
- 1 SL_global.
screen.centerx
= x \
2 - 1 SL_global.
screen.centery
= y \
2 - 1
' change each layer's dimensions to match new screen dimensions
layer = 0 ' reset layer counter
DO ' cycle through all layers layer = layer + 1 ' increment layer counter
source = 0 ' reset source indicator
destination = 0 ' reset destination indicator
temp
= _NEWIMAGE(1, 1, 32) ' create a tempory source and destination place holder IF _SOURCE = SL_layer
(layer
).image
THEN _SOURCE temp: source
= -1 ' remember that this layer is the source IF _DEST = SL_layer
(layer
).image
THEN _DEST temp: destination
= -1 ' remember that this layer is the destination current
= _COPYIMAGE(SL_layer
(layer
).image
, 32) ' make a copy of the layer's image _FREEIMAGE SL_layer
(layer
).image
' remove current layer from memory _PUTIMAGE (0, 0), current
, SL_layer
(layer
).image
' put the old layer image back on top _FREEIMAGE current
' remove old layer image from memory _FREEIMAGE temp
' remove temporary image from memory IF source
THEN _SOURCE SL_layer
(layer
).image
' this was source, set it back IF destination
THEN _DEST SL_layer
(layer
).image
' this was destination, set it back
' ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
' sl_get_screen(sl_width)
' sl_get_screen(sl_height)
' sl_get_screen(sl_centerx)
' sl_get_screen(sl_centery)
' sl_get_screen(sl_top)
' sl_get_screen(sl_left)
' sl_get_screen(sl_bottom)
' sl_get_screen(sl_right)
SHARED SL_global
AS SL_GLOBAL
' common globals array
CASE SL_WIDTH
' screen width SL_GET_SCREEN
= SL_global.
screen.
width ' return the screen width CASE SL_HEIGHT
' screen height SL_GET_SCREEN
= SL_global.
screen.height
' return the screen height CASE SL_CENTERX
' screen x center location SL_GET_SCREEN
= SL_global.
screen.centerx
' return x center location CASE SL_CENTERY
' screen y center location SL_GET_SCREEN
= SL_global.
screen.centery
' return y center location CASE SL_TOP
' upper y location SL_GET_SCREEN
= SL_global.
screen.top
' return upper y location CASE SL_LEFT
' left x location SL_GET_SCREEN
= SL_global.
screen.left
' return left x location CASE SL_BOTTOM
' bottom y location SL_GET_SCREEN
= SL_global.
screen.bottom
' return bottom y location CASE SL_RIGHT
' right x location SL_GET_SCREEN
= SL_global.
screen.right
' return right x location SL_error "SL_GET_SCREEN", 10, "" ' report error to programmer
'ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
' ----------========== ==========----------
' ----------========== LAYER ROUTINES ==========----------
' ----------========== ==========----------
'ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
' ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
' usage:
' value = SL_GET_LAYER(SL_GET, SL_DEST) return the value of current destination layer returns the value of the destination layer, 0 if no destination exists
' value = SL_GET_LAYER(SL_GET, SL_SOURCE) return the value of the current source layer returns the value of the source layer, 0 if no source exists
' value = SL_GET_LAYER(SL_GET, SL_TOTAL) return the total number of layers available returns the total number of layers
' value = SL_GET_LAYER(x, SL_DEST) test if the specified layer is the destination returns -1 if layer is destination, 0 otherwise
' value = SL_GET_LAYER(x, SL_SOURCE) test if the specified layer is the source returns -1 if layer is source, otherwise 0
' value = SL_GET_LAYER(x, SL_VALID) return either -1 or 0 depending on layer x being valid returns -1 if layer is valid, 0 if layer is invalid
SHARED SL_layer
() AS SL_LAYERS
' master layer array SHARED SL_global
AS SL_GLOBAL
' common globals array
CASE SL_VALID
' check for valid layer IF layer
= SL_GET
THEN SL_error
"SL_GET_LAYER", 3, "" ' report error to programmer IF (layer
> 0) AND (layer
<= UBOUND(SL_layer
)) THEN SL_GET_LAYER
= -1 ' if layer valid then return -1 CASE SL_DEST
' get destination layer IF layer
= SL_GET
THEN ' getting the destination layer? IF SL_global.destination
<> -1 THEN ' yes, are one of the layers set as a destination? IF _DEST = SL_layer
(SL_global.destination
).image
THEN ' yes, is this layer actually still the destination? SL_GET_LAYER = SL_global.destination ' yes, report current destination layer
ELSE ' no, the programmer changed the destination to something else SL_layer(SL_global.destination).dest = 0 ' mark this layer as not the destination layer any longer
SL_global.destination = -1 ' set that there are currently no layers set to destination
ELSE ' no, checking one layer for destination IF NOT SL_GET_LAYER
(layer
, SL_VALID
) THEN SL_error
"SL_GET_LAYER", 6, "" ' report error to programmer (function recursion) IF SL_GET_LAYER
(SL_GET
, SL_DEST
) = layer
THEN SL_GET_LAYER
= -1 ' report this layer is the current destination (function recursion) CASE SL_SOURCE
' get source layer IF layer
= SL_GET
THEN ' getting the source layer? IF SL_global.source
<> -1 THEN ' yes, are one of the layers set as a source? IF _SOURCE = SL_layer
(SL_global.source
).image
THEN ' yes, is this layer actually still the source? SL_GET_LAYER = SL_global.source ' yes, report current source layer
ELSE ' no, the programmer changed the source to something else SL_layer(SL_global.source).source = 0 ' mark this layer as not the source layer any longer
SL_global.source = -1 ' set that there are currently no layers set to source
ELSE ' no, checking one layer for source IF NOT SL_GET_LAYER
(layer
, SL_VALID
) THEN SL_error
"SL_GET_LAYER", 6, "" ' report error to programmer (function recursion) IF SL_GET_LAYER
(SL_GET
, SL_SOURCE
) = layer
THEN SL_GET_LAYER
= -1 ' report this layer is the current source (function recursion) IF layer
<> SL_GET
THEN SL_error
"SL_GET_LAYER", 11, "" ' report error to programmer SL_GET_LAYER
= UBOUND(SL_layer
) ' return total number of layers present CASE ELSE ' command not formatted properly SL_error "SL_GET_LAYER", 5, "" ' report error to programmer
' ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
' usage:
' SL_CLEAR_LAYER x clear layer x
' SL_CLEAR_LAYER SL_ALL clear all layers
SHARED SL_layer
() AS SL_LAYERS
' master layer array SHARED SL_global
AS SL_GLOBAL
' common globals array DIM temp
AS LONG ' temp source/destination image DIM source
AS INTEGER ' -1 (TRUE) if current layer is the source DIM destination
AS INTEGER ' -1 (TRUE) if current layer is the destination
IF layer
<> SL_ALL
THEN ' clear all layers? IF NOT SL_GET_LAYER
(layer
, SL_VALID
) THEN SL_error
"SL_CLEAR_LAYER", 6, "" ' report error to programmer count = layer ' no, just clear this one layer
ELSE ' yes, clear all layers count = 1 ' start with first layer
temp
= _NEWIMAGE(1, 1, 32) ' great a temp image for source / destination DO ' cycle through layer(s) source = 0 ' reset source indicator
destination = 0 ' reset destination indicator
IF _SOURCE = SL_layer
(count
).image
THEN _SOURCE temp: source
= -1 ' remember that this layer is the source IF _DEST = SL_layer
(count
).image
THEN _DEST temp: destination
= -1 ' remember that this layer is the destination _FREEIMAGE SL_layer
(count
).image
' remove current layer from memory IF source
THEN _SOURCE SL_layer
(count
).image
' this was source, set it back IF destination
THEN _DEST SL_layer
(count
).image
' this was destination, set it back count = count + 1 ' increment layer counter
LOOP UNTIL count
= UBOUND(SL_layer
) + 1 OR layer
<> SL_ALL
' leave when layer(s) cleared
' ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
' usage:
' SL_SET_LAYER(x, SL_DEST) set layer x as destination
' SL_SET_LAYER(x, SL_SOURCE) set layer x as the source
' SL_SET_LAYER(x, SL_VISBILE) set layer x as visible
' SL_SET_LAYER(SL_ALL, SL_VISIBLE) set all layers as visible
' SL_SET_LAYER(x, SL_INVISIBLE) set layer x as invisible
' SL_SET_LAYER(SL_ALL, SL_INVISIBLE) set all layers as invisible
SHARED SL_layer
() AS SL_LAYERS
' master layer array SHARED SL_global
AS SL_GLOBAL
' common globals array
IF layer
<> SL_ALL
THEN IF NOT SL_GET_LAYER
(layer
, SL_VALID
) THEN SL_error
"SL_SET_LAYER", 6, "" ' report error to programmer CASE SL_DEST
' set destination layer IF layer
= SL_ALL
THEN SL_error
"SL_SET_LAYER", 7, "" ' report error to programmer _DEST SL_layer
(layer
).image
' set layer software image as destination SL_global.destination = layer ' save destination layer in global settings
SL_layer(layer).dest = -1 ' mark this layer as the destination
CASE SL_SOURCE
' set source layer IF layer
= SL_ALL
THEN SL_error
"SL_SET_LAYER", 7, "" ' report error to programmer _SOURCE SL_layer
(layer
).image
' set layer software image as source SL_global.source = layer ' save source layer in global settings
SL_layer(layer).source = -1 ' mark this layer as the source
CASE SL_VISIBLE
, SL_INVISIBLE
' make layer(s) (in)visible IF action
= SL_VISIBLE
THEN visibility
= -1 ' determine visibility setting IF layer
= SL_ALL
THEN ' change visibility of all layers? DO ' cycle through all layers count = count + 1 ' increment layer counter
SL_layer(count).visible = visibility ' change visibility of layer
ELSE ' no, change visibility of one layer SL_layer(layer).visible = visibility ' change visibility of layer
SL_error "SL_SET_LAYER", 8, "" ' report error to programmer
' ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
' SL_SHIFT_LAYER(x, 90, 5) SL_UP, SL_RIGHT, SL_DOWN, SL_LEFT
' SL_SHIFT_LAYER(SL_ALL, 90, 5) SL_UPRIGHT, SL_DOWNRIGHT, SL_DOWNLEFT, SL_UPLEFT
SHARED SL_layer
() AS SL_LAYERS
' master layer array SHARED SL_global
AS SL_GLOBAL
' common globals array DIM source
AS INTEGER ' -1 (TRUE) if layer is current source DIM destination
AS INTEGER ' -1 (TRUE) if layer is current destination DIM temp
AS LONG ' temp image for source and destination holding
IF NOT SL_GET_LAYER
(layer
, SL_VALID
) THEN ' valid layer requested? SL_error "SL_SHIFT_LAYER", 6, "" ' no, report error to programmer
CASE SL_UP
' straight up (0 use pixel movement) xdir = 0 ' pixels in x direction
ydir = -speed ' pixels in y direction
CASE SL_UPRIGHT
' up and to the right (45) xdir = speed
ydir = -speed
CASE SL_RIGHT
' to the right (90) xdir = speed
ydir = 0
CASE SL_DOWNRIGHT
' to the right and down (135) xdir = speed
ydir = speed
CASE SL_DOWN
' straight down (180) xdir = 0
ydir = speed
CASE SL_DOWNLEFT
' to the left and down (225) xdir = -speed
ydir = speed
CASE SL_LEFT
' to the left (270) xdir = -speed
ydir = 0
CASE SL_UPLEFT
' up and to the right (315) xdir = -speed
ydir = -speed
degrees = SL_FIX_DEGREES(angle) ' correct angle if needed
xdir
= SIN(degrees
* .017453292) * speed
' calculate x distance given angle and speed ydir
= -COS(degrees
* .017453292) * speed
' calculate y distance given angle and speed temp
= _NEWIMAGE(1, 1, 32) ' create temp image to make source and destination current
= _COPYIMAGE(SL_layer
(layer
).image
, 32) ' get current layer image
'xdir = _CEIL(xdir)
'ydir = _CEIL(ydir)
IF SL_GET_LAYER
(layer
, SL_SOURCE
) THEN _SOURCE temp: source
= -1 ' remember that this layer is the current source IF SL_GET_LAYER
(layer
, SL_DEST
) THEN _DEST temp: destination
= -1 ' remember that this layer is the currnt destination _FREEIMAGE SL_layer
(layer
).image
' free the old layer image from memory _PUTIMAGE (xdir
, ydir
), current
, SL_layer
(layer
).image
' place old layer image in new spot _PUTIMAGE (xdir
- SGN(xdir
) * SL_global.
screen.
width, ydir
), current
, SL_layer
(layer
).image
' place old layer image to fill gap left or right _PUTIMAGE (xdir
, ydir
- SGN(ydir
) * SL_global.
screen.height
), current
, SL_layer
(layer
).image
' place old layer image to fill gap top or bottom _PUTIMAGE (xdir
- SGN(xdir
) * SL_global.
screen.
width, ydir
- SGN(ydir
) * SL_global.
screen.height
), current
, SL_layer
(layer
).image
' place old layer image to fill diagonal gap IF source
THEN _SOURCE SL_layer
(layer
).image
' return layer as source if necessary IF destination
THEN _DEST SL_layer
(layer
).image
' return layer as destination if necessary _FREEIMAGE temp
' free temporary images from memory
' ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
SHARED SL_layer
() AS SL_LAYERS
' master layer array DIM source
AS INTEGER ' -1 (TRUE) if layer is current source DIM destination
AS INTEGER ' -1 (TRUE) if layer is current destination DIM temp
AS LONG ' source/destination place holder image
IF (NOT SL_GET_LAYER
(layer1
, SL_VALID
)) OR (NOT SL_GET_LAYER
(layer2
, SL_VALID
)) THEN ' valid layers requested? SL_error "SL_SWAP_LAYER", 6, "" ' no, report error to programmer
current1
= _COPYIMAGE(SL_layer
(layer1
).image
, 32) ' get first layer image current2
= _COPYIMAGE(SL_layer
(layer2
).image
, 32) ' get second layer image temp
= _NEWIMAGE(1, 1, 32) ' image to act as source/destination place holder IF SL_GET_LAYER
(layer1
, SL_SOURCE
) THEN _SOURCE temp: source
= -1 ' remember that this layer is the current source IF SL_GET_LAYER
(layer1
, SL_DEST
) THEN _DEST temp: destination
= -1 ' remember that this layer is the currnt destination _FREEIMAGE SL_layer
(layer1
).image
' remove layer image from memory SL_layer
(layer1
).image
= _COPYIMAGE(current2
, 32) ' this layer now contains the other layer's image IF source
THEN _SOURCE SL_layer
(layer1
).image
' return layer as source if necessary IF destination
THEN _DEST SL_layer
(layer1
).image
' return layer as destination if necessary source = 0 ' reset source indicator
destination = 0 ' reset destination indicator
IF SL_GET_LAYER
(layer2
, SL_SOURCE
) THEN _SOURCE temp: source
= -1 ' remember that this layer is the current source IF SL_GET_LAYER
(layer2
, SL_DEST
) THEN _DEST temp: destination
= -1 ' remember that this layer is the currnt destination _FREEIMAGE SL_layer
(layer2
).image
' remove layer image from memory SL_layer
(layer2
).image
= _COPYIMAGE(current1
, 32) ' this layer now contains the other layer's image IF source
THEN _SOURCE SL_layer
(layer2
).image
' return layer as source if necessary IF destination
THEN _DEST SL_layer
(layer2
).image
' return layer as destination if necessary _FREEIMAGE temp
' remove temporary image from memory _FREEIMAGE current2
' remove current images from memory
' ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
SHARED SL_layer
() AS SL_LAYERS
' master layer array SHARED SL_global
AS SL_GLOBAL
' common globals array
IF UBOUND(SL_layer
) = 1 THEN SL_error
"SL_KILL_LAYER", 4, "" ' report error to programmer IF NOT SL_GET_LAYER
(layer
, SL_VALID
) THEN SL_error
"SL_KILL_LAYER", 6, "" ' report error to programmer count = layer ' start with layer being deleted
IF count
<> 1 THEN ' is layer 1 being deleted? IF _DEST = SL_layer
(count
).image
THEN ' no, is this layer the curent destination? _DEST SL_layer
(count
- 1).image
' yes, make previous layer the new destination SL_global.destination = count - 1 ' set previous layer as the new destination
SL_layer(count - 1).dest = -1 ' mark previous layer as the destination
SL_layer(count).dest = 0 ' set this layer as no longer the destination
IF _SOURCE = SL_layer
(count
).image
THEN ' is this layer the current source? _SOURCE SL_layer
(count
- 1).image
' yes, make previous layer the new source SL_global.source = count - 1 ' set previous layer as the new source
SL_layer(count - 1).source = -1 ' mark previous layer as the source
SL_layer(count).source = 0 ' set this layer as no longer the source
SL_SWAP_LAYER count, count + 1 ' swap the layer images
'*
'* add code to update sprite layers <--------------------------------------------------------------------------------------------------------------------------------------------------- LOOK
'*
count = count + 1 ' increment layer counter
' ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
SHARED SL_layer
() AS SL_LAYERS
' master layer array SHARED SL_global
AS SL_GLOBAL
' common globals array
newlayer
= UBOUND(SL_layer
) + 1 ' start of new layer(s) SL_ADD_LAYER = newlayer ' return where new layer(s) start
DO ' cycle through new layers SL_layer(newlayer).visible = -1 ' (TRUE) new layer is visible
newlayer = newlayer + 1 ' increment new layer counter
LOOP UNTIL newlayer
= UBOUND(SL_layer
) + 1 ' leave when all new layers created
' ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
' Credits: this function uses code contriibuted by codeguy
' https://www.qb64.org/forum/index.php?topic=537.15
degree
= degrees
MOD 360 ' get -359 to 359 IF degree
< 0 THEN ' need to make positive? SL_FIX_DEGREES = degree + 360 ' yes, correct value and return degree angle
SL_FIX_DEGREES = degree ' no correction needed, return degree angle
' ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
'ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
PLAY "o2l8eeel2c" ' duh, duh, duh, dooooh PLAY "o2l8gl16ddl8ed" ' shave and a hair cut
SCREEN 0, 0, 0, 0 ' go to a pure text screen _FONT 16 ' set the standard screen 0 font PRINT " **************************************" ' print error header PRINT " ** Sprite Library Error Encountered **" PRINT " **************************************" PRINT " has reported error";
SELECT CASE errno
' which error number is being reported?
' general purpose errors for all subs/functions
PRINT " You must create at least one layer to work in." PRINT " You must specify a window width and height greater than zero (0)." PRINT " SL_GET can't be used with SL_VALID." PRINT "result = SL_GET_LAYER(x, SL_VALID)" PRINT " x = the layer being checked for validity" PRINT " result = -1 if the layer is valid, 0 if the layer is invalid" PRINT " Only one layer remains. Unable to delete last remaining layer." PRINT " SL_DEST, SL_SOURCE, and SL_VALID are the only second parameter values allowed." PRINT "result = SL_GET_LAYER(SL_GET, SL_DEST)" PRINT " result = SL_GET_LAYER(SL_GET, SL_SOURCE)" PRINT " result = SL_GET_LAYER(x, SL_DEST)" PRINT " result = SL_GET_LAYER(x, SL_SOURCE" PRINT " result = SL_GET_LAYER(x, SL_VALID)" PRINT "- The specified layer(s) does not exist." PRINT " SL_ALL can't be used with SL_DEST or SL_SOURCE." PRINT " SL_SET_LAYER x, SL_DEST" PRINT " SL_SET_LAYER x, SL_SOURCE" PRINT " x = the layer being set as source or destination" PRINT " SL_DEST, SL_SOURCE, SL_VISIBLE, and SL_INVISIBLE are the only second" PRINT " parameter values allowed." PRINT "SL_SET_LAYER x, SL_DEST" PRINT " SL_SET_LAYER x, SL_SOURCE" PRINT " SL_SET_LAYER x, SL_VISIBLE" PRINT " SL_SET_LAYER SL_ALL, SL_VISIBLE" PRINT " SL_SET_LAYER x, SL_INVISIBLE" PRINT " SL_SET_LAYER SL_ALL, SL_INVISIBLE" PRINT " You must specify a screen width and height greater than zero (0)." PRINT " Incorrect parameter given." PRINT "result = SL_SCREEN(SL_WIDTH)" PRINT " result = SL_SCREEN(SL_HEIGHT)" PRINT " result = SL_SCREEN(SL_CENTERX)" PRINT " result = SL_SCREEN(SL_CENTERY)" PRINT " result = SL_SCREEN(SL_TOP)" PRINT " result = SL_SCREEN(SL_LEFT)" PRINT " result = SL_SCREEN(SL_BOTTOM)" PRINT " result = SL_SCREEN(SL_RIGHT)" PRINT "SL_GET must be used with SL_TOTAL." PRINT "result = SL_GET_LAYER(SL_GET, SL_TOTAL)" PRINT "result = the total number of layers availabel"
PRINT " See sprite library doumentation for further explanation." PLAY "o2l8dddl2o1b" ' duh duh duh dum PLAY "o2p8l8f#g" ' two bits