rem Input Showcase

rem Standard Setup Code for all examples
sync on : sync rate 120 : hide mouse
set text font "arial" : set text size 16
set text to bold : set text transparent

rem Prepare Force Feedback (if available)
desc$="Machine Gun Joystick"
ForcePresent=0
empty checklist
PERFORM CHECKLIST FOR CONTROL DEVICES
for c=1 to checklist quantity()
 if checklist value a(c)=1
  SET CONTROL DEVICE checklist string$(c)
  ForcePresent=1
  desc$=desc$+" (with Force)"
 endif
next c

rem Load wall and images
set image colorkey 255,0,255
load bitmap "wall.bmp",1
load image "hole.bmp",1
load image "crosshair.bmp",2
load image "fire.bmp",3

rem Load sound
load sound "gun.wav",1
for t=2 to 10
 clone sound t,1
next t

rem Setup crosshair sprite
set current bitmap 0
set sprite 1,0,1
offset sprite 1,16,16
draw to back

rem Setup bullet sprite
sprite 2,-100,-100,1
set sprite 2,0,1
offset sprite 2,8,8
size sprite 2,16,16
set sprite alpha 2,128

rem Particle effect setup
autocam off : backdrop off
make particles 1,3,50,2.0
rotate particles 1,270,0,0
set particle speed 1,0.02

rem Set start pos
posx#=320
posy#=240

rem Main loop
do

rem Read joystick
posx#=posx#+(joystick x()/500.0)
posy#=posy#+(joystick y()/500.0)
posx=posx# : posy=posy#
fire=joystick fire a()

rem Paste backdrop
copy bitmap 1,0

rem Position crosshair
sprite 1,posx,posy,2

rem Make bullet hole if triggered
if fire=1 and cool=0

 rem Make bullet hole
 set current bitmap 1
 r#=rnd(359)
 rx=cos(r#)*rnd(20)
 ry=sin(r#)*rnd(20)
 paste sprite 2,posx+rx,posy+ry
 paste sprite 2,1000,1000
 set current bitmap 0

 rem Generate some particles
 position particles 1,0,0,5
 position particle emissions 1,(posx-320)/120.0,0,(240-posy)/120.0
 emis=2

 rem Hear machine gun
 cool=10
 for t=1 to 10
  if sound playing(t)=0 then play sound t : t=11
 next t

 rem Gun recoil
 if ForcePresent=1 then force shoot 100,100

endif
if cool>0 then dec cool

rem Control emissions
set particle emissions 1, emis
if emis>0 then dec emis

rem Show Framerate
ink rgb(255,255,255),0 : 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