First, add these variables to the global scope of your program:
int DCRecord = 0, DBITriggered = 0;
int DBLastClick = 0;
bool IsDoubleClick = false;
Second, add these functions to your program:
void UpdateDblClick()
{
if(DCRecord == 2)
{
IsDoubleClick = false;
DCRecord = 0;
DBITriggered = 0;
DBLastClick = 0;
}
if(dbMouseClick() && DCRecord == 0 && DBITriggered == 0)
{
DCRecord = 1;
DBITriggered = 1;
DBLastClick = dbTimer();
}
if(dbMouseClick() == 0 && DBITriggered == 1)
DBITriggered = 0;
if(dbMouseClick() && DCRecord == 1 && DBITriggered == 0)
{
if((dbTimer() - DBLastClick) < GetDoubleClickTime())
{
DCRecord = 2;
IsDoubleClick = true;
}
else
{
DCRecord = 1;
DBITriggered = 1;
DBLastClick = dbTimer();
}
}
}
bool dbMouseDblClick()
{
return IsDoubleClick;
}
Third, add the
UpdateDblClick() function in your game loop.
while(LoopGDK())
{
//...
UpdateDblClick();
dbSync();
}
Then enjoy the
dbMouseDblClick() function!
Example program:
#include "DarkGDK.h"
void UpdateDblClick();
void dbMouseDblClick();
int DCRecord = 0, DBITriggered = 0;
int DBLastClick = 0;
bool IsDoubleClick = false;
void DarkGDK()
{
dbSyncOn();
dbSyncRate(60);
while(LoopGDK())
{
if(dbMouseDblClick())
MessageBoxA(NULL, "You just double-clicked the screen!!", "Wow!", NULL);
UpdateDblClick();
dbSync();
}
return 0;
}
void UpdateDblClick()
{
if(DCRecord == 2)
{
IsDoubleClick = false;
DCRecord = 0;
DBITriggered = 0;
DBLastClick = 0;
}
if(dbMouseClick() && DCRecord == 0 && DBITriggered == 0)
{
DCRecord = 1;
DBITriggered = 1;
DBLastClick = dbTimer();
}
if(dbMouseClick() == 0 && DBITriggered == 1)
DBITriggered = 0;
if(dbMouseClick() && DCRecord == 1 && DBITriggered == 0)
{
if((dbTimer() - DBLastClick) < GetDoubleClickTime())
{
DCRecord = 2;
IsDoubleClick = true;
}
else
{
DCRecord = 1;
DBITriggered = 1;
DBLastClick = dbTimer();
}
}
}
bool dbMouseDblClick()
{
return IsDoubleClick;
}
Simple, wasn't it?
[note: actually there's no such function as "mouse dbl click" in the DarkBASIC language. well, just a name]
if(asleep) sheep++;