tuxanci2-engine
Game engine for tuxanci2
Log | Files | Refs | README | LICENSE

keyboard.c (971B)


      1 #include <stddef.h>
      2 #include <stdbool.h>
      3 #include "keyboard.h"
      4 
      5 ta_keyboards ta_keyboard;
      6 
      7 bool ta_keyboard_is_down(ta_keyboard_keys key) {
      8 	if (key == KEY_NONE) {
      9 		return false;
     10 	}
     11 
     12 	for (size_t i = 0; i < TA_KEYBOARD_MAX_KEYS_DOWN; i++) {
     13 		if (ta_keyboard.keys_down[i] == (uint8_t)key) {
     14 			return true;
     15 		}
     16 	}
     17 
     18 	return false;
     19 }
     20 
     21 void ta_keyboard_key_down(ta_keyboard_keys key) {
     22 	if (key == KEY_NONE || ta_keyboard_is_down(key)) {
     23 		return;
     24 	}
     25 
     26 	for (size_t i = 0; i < TA_KEYBOARD_MAX_KEYS_DOWN; i++) {
     27 		if (ta_keyboard.keys_down[i] == KEY_NONE) {
     28 			ta_keyboard.keys_down[i] = (uint8_t)key;
     29 
     30 			return;
     31 		}
     32 	}
     33 }
     34 
     35 void ta_keyboard_key_up(ta_keyboard_keys key) {
     36 	for (size_t i = 0; i < TA_KEYBOARD_MAX_KEYS_DOWN; i++) {
     37 		if (ta_keyboard.keys_down[i] == (uint8_t)key) {
     38 			ta_keyboard.keys_down[i] = KEY_NONE;
     39 
     40 			return;
     41 		}
     42 	}
     43 }
     44 
     45 void ta_keyboard_clear(void) {
     46 	for (size_t i = 0; i < TA_KEYBOARD_MAX_KEYS_DOWN; i++) {
     47 		ta_keyboard.keys_down[i] = KEY_NONE;
     48 	}
     49 }