rem Light Showcase

rem Choose better display mode
if check display mode(1024,768,32)=1
 set display mode 1024,768,32
else
 if check display mode(1024,768,16)=1
  set display mode 1024,768,16
 endif
endif

rem Standard Setup Code for all examples
sync on : sync rate 0 : backdrop off
set text font "arial" : set text size 16
set text to bold : set text transparent

rem Load Hero music
load music "music\hero.mp3",1 : loop music 1

rem User prompt
sync : center text screen width()/2,screen height()/2,"LOADING" : sync

rem Load Statue Model
set normalization on
load object "models\statue.x",1
load image "models\bumpmap.bmp",1
xrotate object 1,270 : fix object pivot 1
set light mapping on 1,1
set object specular 1,0
rotate object 1,0,0,0

rem Load room
load object "world\room.x",2
xrotate object 2,270 : fix object pivot 2
set object specular 2,0
rotate object 2,0,0,0

rem Set dynamic light zero
hide light 0

rem Create pixie lights and dots
for l=1 to 7
 make light l
 set point light l,0,0,0
 set light range l,2000
 make object sphere 2+l,50 : ghost object on 2+l
 if l>1 then hide light l : hide object 2+l
next l

rem Main loop
desc$="Pixie Lights (Select keys 1-7)"
do

rem Control light visibility
k$=inkey$()
if k$>="1" and k$<="7"
 if keypress=0
  keypress=1
  li=1+(asc(k$)-asc("1"))
  if light visible(li)=1
   hide light li : hide object 2+li
  else
   show light li : show object 2+li
  endif
  c#=wrapvalue(180+(a#+(li*85)))
 endif
else
 keypress=0
endif

rem Rotate around model
a#=wrapvalue(a#+0.5)
b#=wrapvalue(b#+0.2)
c#=wrapvalue(c#+0.05)
x#=cos(c#)*250.0
z#=sin(c#)*300.0
position light 0,x#,150,z#
position camera x#,100,z#
point camera 0,150,0

rem Rotate lights around model
for l=1 to 7
 x#=cos(a#+(l*85))*300.0
 z#=sin(a#+(l*85))*150.0
 position light l,x#,100+(sin(b#)*100),z#
 position object 2+l,x#,100+(sin(b#)*100),z#
next l

rem Alter light colours over time
leva#=wrapvalue(leva#+0.01)
level#=cos(leva#)
for l=1 to 7
 col=127.0+(127.0*level#)
 rev=col*-1
 if l=1 then color light l,col,rev,rev
 if l=2 then color light l,128,col,128
 if l=3 then color light l,255,255,col*2
 if l=4 then color light l,col,rev,col
 if l=5 then color light l,col,col,col
 if l=6 then color light l,500,500,500
 if l=7 then color light l,rev*3,rev*3,rev*3
next l

rem Show Framerate
text 20,screen height()-40,desc$
fps$="DBPro Fps: "+str$(screen fps())
text screen width()-20-text width(fps$),screen height()-40,fps$

rem Update screen
sync

rem End loop
loop