TGC Codebase Backup



Raised / Sunk Command Buttons by Codger

9th Oct 2003 18:15
Summary

Uses sprites as command buttons, Raise or Lower using mouseclick()



Description

Demo of user command buttons



Code
                                    ` This code was downloaded from The Game Creators
                                    ` It is reproduced here with full permission
                                    ` http://www.thegamecreators.com
                                    
                                    Rem Project: ButtonMaker
Rem Created: 10/9/2003 10:22:06 AM

Rem ***** Main Source File *****

Rem ***** By Codger

set window on
set window size 1024,768

sync on
sync rate 0
set text font "ariel"
set text size 18

get image 999,1,1,2,2

type Buttons
  x as integer
  y as integer
  w as integer
  h as integer
  pressed as boolean
  Label$ as string
endtype

Global MyTimer
global dim Button(300) as Buttons
Global ActiveButton
randomize Timer()

i = 0
For y = 1 to 14
   For x = 1 to 8
   inc i
      Button(i).x = x * 110
      Button(i).y = y * 33
      Button(i).w = 100
      Button(i).h = 30
      Button(i).Label$ = "Button "+str$(i)
      Button(i).Pressed = 0
      Make_Button(i)
   next x
next y

J = 0
For y = 1 to 3
   For x = 1 to 3
   inc i
   inc j
      Button(i).x = 600+(x * 33)
      Button(i).y = 550+(y * 33)
      Button(i).w = 30
      Button(i).h = 30
      Button(i).Label$ = str$(j)
      Button(i).Pressed = 0
      Make_Button(i)
   next x
next y

   inc i
   inc j
      Button(i).x = 600+(1 * 33)
      Button(i).y = 550+(4 * 33)
      Button(i).w = 63
      Button(i).h = 30
      Button(i).Label$ = str$(j)
      Button(i).Pressed = 0
      Make_Button(i)

do
   if mouseclick() > 0 then CheckButton(0)
      set cursor 100,500
      Print "Screen FPS : ",Screen FPS()
      set cursor 100,530
      Print "Active Button : ",Button(ActiveButton).Label$
   sync
loop


Function Make_button(n)
   x = Button(n).x
   Y = Button(n).y
   W = Button(n).w
   H = Button(n).h
   Label$ = Button(n).Label$
   if sprite exist(n) then delete sprite n
   create bitmap 1,w,h
   set current bitmap 1
   ink RGB(202,202,202),RGB(0,0,0)
   box 0,0,w,h
   if Button(n).Pressed = 0 then ink RGB(249,249,249),rgb(0,0,0) else ink RGB(40,40,40),rgb(0,0,0)
   line 1,1,w,1
   line 0,0,w,0
   line 1,1,1,h
   line 0,0,0,h
   if Button(n).Pressed = 0 then ink RGB(40,40,40),rgb(0,0,0)  else ink RGB(249,249,249),rgb(0,0,0)
   Line w-1,1,w-1,h
   Line w-2,2,w-2,h
   line w-1,h-1,1,h-1
   line w-2,h-2,2,h-2
   ink RGB(0,0,0),RGB(255,255,255)
   center text w/2,h/2-(text height(Label$)/2),label$
   Get image n,0,0,w,h,0
   set current bitmap 0
   delete bitmap 1
   sprite n,x,y,n
endfunction

Function CheckButton(Target)
   ActiveButton = Pick_Sprite(Target)
   if ActiveButton <> 0 and MyTimer < Timer()
      MyTimer = Timer()+ 200
      if Button(ActiveButton).Pressed = 1
         Button(ActiveButton).Pressed = 0
         Make_Button(ActiveButton)
      else
         Button(ActiveButton).Pressed = 1
         Make_Button(ActiveButton)
      endif
   EndIf
EndFunction


Function Pick_Sprite(Target)
  sprite 999,mousex(),Mousey(),999
  hit = sprite collision(999,Target)
EndFunction hit