TGC Codebase Backup



box_button.h by Klas Wullt

23rd Jul 2012 16:57
Summary

Class for buttons in darkGDK.A few reusable classes for buttons and pages. With methods for different sorts of click effects. Very simple but very reusable and user friendly.



Description

This darkDgk based, class allows you to create usable generic buttons
with simple understandable methods for click and select.
Intended for game menues, for units in RPG and STRG.



Code
                                    ` This code was downloaded from The Game Creators
                                    ` It is reproduced here with full permission
                                    ` http://www.thegamecreators.com
                                    
                                    #pragma once
#include "DarkGDK.h"
#include "game_timer.h"


//

struct box_type_data
{
int images[10];
};

class box_button
{
public:

game_timer G;
	 

	game_timer T;

 int y_top;
 int y_down;
 int x_right;
 int x_left;

 bool clicked;

 int sprite_id;
 int size_x;
 int size_y;
 int off;
 int on;
 int select;
 int once;
int state;

void create(int sprite_int,int xr,int xl,int yt,int yd,int on_int,int off_int,int select_int)
	{
		sprite_id=sprite_int;

y_top=yt;
y_down=yd;
x_right=xr;
x_left=xl;

off=off_int;
on=on_int;
select=select_int;

clicked=false;
state=on;


size_x=x_right-x_left;
size_y=y_down-y_top;

dbSizeSprite(9,size_x,size_y);

sprite_id=sprite_int;
dbCloneSprite(9,sprite_id);

T.start_clock(0);

 once=0;
dbSetSpriteFrame(sprite_id,on);
dbLoadSound ("click.wav", 1);

		 
	}


 void update()
	{ 
/*
		dbPrint(double(sprite_id));
        dbPrint(double(x_left));
        dbPrint(double(y_top));
	*/
	


int freeze=0;
int test1=0;


	if(T.time_taken <= 20 )
	{T.update();}



		dbPasteSprite(sprite_id,x_left,y_top);



clicked=0;
	


		
		if(T.time_taken <= 10 && T.time_taken!=0 )
{
		//dbSetSpriteFrame(sprite_id,off);
		
}            		     
dbSetSpriteFrame(sprite_id,state);

		if(T.time_taken==0)
		{
		if( dbMouseX()> x_left && dbMouseX()< x_right && dbMouseY()> y_top &&dbMouseY() < y_down )
		{ test1=1;
		

     if( test1==1 && once==0)
			  {dbSetSpriteFrame(sprite_id,select);
			  }
 







		if(dbMouseClick()==1)
		{
			//
			
				

			if(once==0){

			if(T.time_taken==0 )
			{T.start_clock(1);};
            
			dbSetSpriteFrame(sprite_id,off);
			state=off;
			once=1;
			dbPlaySound(1);
			}
			
		}

		}
		};		




if(test1==0 && T.time_taken>=1)
{   clicked=1;
	T.start_clock(0);
	once=0;
         
		dbSetSpriteFrame(sprite_id,on);
		state=on;

};


       }

	box_button(void)
	{
	}

	virtual ~box_button(void)
	{
	}
};