66 lines
1.4 KiB
C++
Executable File
66 lines
1.4 KiB
C++
Executable File
#include "KeyboardInput.h"
|
|
#include "../../Options.h"
|
|
#include "../../../world/entity/player/Player.h"
|
|
|
|
KeyboardInput::KeyboardInput( Options* options )
|
|
{
|
|
for (int i = 0; i < NumKeys; ++i)
|
|
keys[i] = false;
|
|
this->options = options;
|
|
}
|
|
|
|
void KeyboardInput::setKey( int key, bool state )
|
|
{
|
|
int id = -1;
|
|
if (key == options->keyUp.key) id = KEY_UP;
|
|
if (key == options->keyDown.key) id = KEY_DOWN;
|
|
if (key == options->keyLeft.key) id = KEY_LEFT;
|
|
if (key == options->keyRight.key) id = KEY_RIGHT;
|
|
if (key == options->keyJump.key) id = KEY_JUMP;
|
|
if (key == options->keySneak.key) id = KEY_SNEAK;
|
|
if (key == options->keyCraft.key) id = KEY_CRAFT;
|
|
//printf("key: %d\n", id);
|
|
if (id >= 0) {
|
|
keys[id] = state;
|
|
}
|
|
}
|
|
|
|
void KeyboardInput::releaseAllKeys()
|
|
{
|
|
xa = 0;
|
|
ya = 0;
|
|
|
|
for (int i = 0; i < NumKeys; i++) {
|
|
keys[i] = false;
|
|
}
|
|
wantUp = wantDown = false;
|
|
}
|
|
|
|
void KeyboardInput::tick( Player* player )
|
|
{
|
|
xa = 0;
|
|
ya = 0;
|
|
|
|
if (keys[KEY_UP]) ya++;
|
|
if (keys[KEY_DOWN]) ya--;
|
|
if (keys[KEY_LEFT]) xa++;
|
|
if (keys[KEY_RIGHT]) xa--;
|
|
jumping = keys[KEY_JUMP];
|
|
sneaking = keys[KEY_SNEAK];
|
|
if (sneaking) {
|
|
xa *= 0.3f;
|
|
ya *= 0.3f;
|
|
}
|
|
|
|
#ifdef PLATFORM_DESKTOP
|
|
wantUp = jumping;
|
|
wantDown = sneaking;
|
|
#endif
|
|
|
|
if (keys[KEY_CRAFT])
|
|
player->startCrafting((int)player->x, (int)player->y, (int)player->z, Recipe::SIZE_2X2);
|
|
|
|
//printf("\n>- %f %f\n", xa, ya);
|
|
}
|
|
|