home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Game Hack 1
/
GHM01.ZIP
/
BUTTON.CPP
< prev
next >
Wrap
C/C++ Source or Header
|
1994-11-07
|
3KB
|
144 lines
// Copyright (C) 1994 by Kurt Griffiths. May only be used for implementation into
// software. May not be distibuted as a library or related media for commercial
// gain.
/*-------------------------------------------------------------------------*/
/* Button object */
/*-------------------------------------------------------------------------*/
class button
{
int minx, maxx, miny, maxy;
int ltcolor, dkcolor, fccolor, bdcolor, bdwidth, trans, fpush;
int pdelay;
public:
button();
int bt_setpush(int sp) { do_push = sp; return 1; }
int bt_draw(int x1, int x2, int y1, int y2);
int bt_text(char *str);
int bt_push();
int bt_setcolor(int col) { fccolor = col; return 1; }
int bt_setlcolor(int col2) { ltcolor = col2; return 1; }
int bt_setdcolor(int col3) { dkcolor = col3; return 1; }
int bt_setbcolor(int col4) { bdcolor = col4; return 1; }
int bt_setbwidth(int wid) { bdwidth = wid; return 1; }
int bt_setdelay(int d) { pdelay = d; return 1; }
int bt_mtest(int x, int y, int key)
{
if(x > minx && x < maxx && y > miny && y < maxy && key == 1) return 1;
return 0;
}
};
inline button::button()
{
ltcolor = 28;
dkcolor = 24;
fccolor = 26;
letter = 0;
bdcolor = 26;
bdwidth = 3;
trans = 1;
fpush = 0;
pdelay = 4;
}
int button::bt_draw(int x1, int x2, int y1, int y2)
{
minx = x1;
maxx = x2;
miny = y1;
maxy = y2;
// Draw the base square
if(trans != 0)
{
fg_setcolor(fccolor);
fg_rect(minx + 1, maxx - 1, miny + 1, maxy - 1);
}
// Outline square
fg_setcolor(bdcolor);
fg_box(minx, maxx, miny, maxy);
// Inside border
fg_setcolor(bdcolor);
fg_box(minx + bdwidth, maxx - bdwidth, miny + bdwidth, maxy - bdwidth);
// Border fill
fg_setcolor(ltcolor);
fg_flood(minx + 2, miny + 2);
// Dark border boundary lines
fg_setcolor(dkcolor);
fg_move(minx, maxy);
fg_draw(minx + bdwidth, maxy - bdwidth);
fg_move(maxx, miny);
fg_draw(maxx - bdwidth, miny + bdwidth);
fg_setcolor(dkcolor);
fg_flood(maxx - 2, maxy - 2);
// Erase inner border
fg_setcolor(fccolor);
fg_box(minx + bdwidth, maxx - bdwidth, miny + bdwidth, maxy - bdwidth);
return 1;
}
int button::bt_text(char *str)
{
int x, y;
x = (minx + maxx) / 2 - 4 * strlen(str);
y = (miny + maxy) / 2;
fg_setcolor(0);
fg_move(x + 2, y + 9);
fg_print( str, strlen( str ) );
return 1;
}
int button::bt_push()
{
// Flood the light border
fg_setcolor(dkcolor);
fg_flood(minx + 2, miny + 2);
// Flood the dark border
fg_setcolor(fccolor);
fg_flood(maxx - 2, maxy - 2);
// Delay in clock ticks - 18.2 ticks = 1 second
fg_waitfor(pdelay);
// Restore face
fg_setcolor(fccolor)
fg_flood(minx + 2, miny + 2);
// Inside border
fg_setcolor(bdcolor);
fg_box(minx + bdwidth, maxx - bdwidth, miny + bdwidth, maxy - bdwidth);
// Border fill
fg_setcolor(ltcolor);
fg_flood(minx + 2, miny + 2);
// Dark border boundary lines
fg_setcolor(dkcolor);
fg_move(minx, maxy);
fg_draw(minx + bdwidth, maxy - bdwidth);
fg_move(maxx, miny);
fg_draw(maxx - bdwidth, miny + bdwidth);
fg_setcolor(dkcolor);
fg_flood(maxx - 2, maxy - 2);
// Erase inner border
fg_setcolor(fccolor);
fg_box(minx + bdwidth, maxx - bdwidth, miny + bdwidth, maxy - bdwidth);
return 1;
}