void detect_keys(void)
{
static float buff1 = 0.0f;
static float buff2 = 0.1f;
static float buff3;
static BYTE keystate[256]; // create a static storage for the key-states
dinkeyboard->Acquire(); // get access if we don't have it already
dinkeyboard->GetDeviceState(256, (LPVOID)keystate); // fill keystate with values
if(keystate[DIK_W])
{
buff1 = tan(direction * PI / 180.0f);
buff1 /= 10.0f;
buff2 -= buff1;
if(buff1 == 0.0f && buff2 == 0.1f)
{
buff1 = 0.05f;
buff2 = 0.05f;
}
if(quater == POS_POS)
{
indexZcp += buff1;
indexZla += buff1;
indexXcp += buff2;
indexXla += buff2;
}
else if(quater == NEG_POS)
{
indexZcp += buff1;
indexZla += buff1;
indexXcp -= buff2;
indexXla -= buff2;
}
else if(quater == POS_NEG)
{
indexZcp -= buff1;
indexZla -= buff1;
indexXcp += buff2;
indexXla += buff2;
}
else if(quater == NEG_NEG)
{
indexZcp -= buff1;
indexZla -= buff1;
indexXcp -= buff2;
indexXla -= buff2;
}
}
else if(keystate[DIK_S])
{
buff1 = tan(direction * PI / 180.0f);
buff1 /= 10.0f;
buff2 -= buff1;
if(buff1 == 0.0f && buff2 == 0.1f)
{
buff1 = 0.05f;
buff2 = 0.05f;
}
if(quater == POS_POS)
{
indexZcp -= buff1;
indexZla -= buff1;
indexXcp -= buff2;
indexXla -= buff2;
}
else if(quater == NEG_POS)
{
indexZcp -= buff1;
indexZla -= buff1;
indexXcp += buff2;
indexXla += buff2;
}
else if(quater == POS_NEG)
{
indexZcp += buff1;
indexZla += buff1;
indexXcp -= buff2;
indexXla -= buff2;
}
else if(quater == NEG_NEG)
{
indexZcp += buff1;
indexZla += buff1;
indexXcp += buff2;
indexXla += buff2;
}
}
if(keystate[DIK_A])
{
direction -= 0.1f;
indexXcp -= 0.1f;
indexZcp -= 0.1f;
indexXla -= 0.1f;
indexZla -= 0.1f;
if(direction < -180.0f)
direction = -180.0f;
else if(direction > 180.0f)
direction = 180.0f;
if(direction < -90.0f)
quater = NEG_NEG;
else if(direction > -90.0f && direction < 0.0f)
quater = NEG_POS;
else if(direction > 0.0f && direction < 90.0f)
quater = POS_POS;
else if(direction > 90.0f)
quater = POS_NEG;
}
else if(keystate[DIK_D])
{
direction += 0.1f;
indexXcp += 0.1f;
indexZcp += 0.1f;
indexXla += 0.1f;
indexZla += 0.1f;
if(direction < -180.0f)
direction = -180.0f;
else if(direction > 180.0f)
direction = 180.0f;
if(direction < -90.0f)
quater = NEG_NEG;
else if(direction > -90.0f && direction < 0.0f)
quater = NEG_POS;
else if(direction > 0.0f && direction < 90.0f)
quater = POS_POS;
else if(direction > 90.0f)
quater = POS_NEG;
}
if(keystate[DIK_SPACE])
{
//jump();
}
return;
}