From ea1947ffcc606d757357398b24e74a3f4ecefa07 Mon Sep 17 00:00:00 2001 From: neonloop Date: Wed, 20 Oct 2021 14:54:27 +0000 Subject: Initial commit from steward-fu release --- modules/mod_key/mod_key.c | 91 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 modules/mod_key/mod_key.c (limited to 'modules/mod_key/mod_key.c') diff --git a/modules/mod_key/mod_key.c b/modules/mod_key/mod_key.c new file mode 100644 index 0000000..2eccc80 --- /dev/null +++ b/modules/mod_key/mod_key.c @@ -0,0 +1,91 @@ +/* + * Copyright © 2006-2016 SplinterGU (Fenix/Bennugd) + * Copyright © 2002-2006 Fenix Team (Fenix) + * Copyright © 1999-2002 José Luis Cebrián Pagüe (Fenix) + * + * This file is part of Bennu - Game Development + * + * This software is provided 'as-is', without any express or implied + * warranty. In no event will the authors be held liable for any damages + * arising from the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software + * in a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * + * 3. This notice may not be removed or altered from any source + * distribution. + * + */ + +#include +#include +#include +#include +#include + +#include "bgddl.h" + +#include "xctype.h" + +#include "libkey.h" + +/* --------------------------------------------------------------------------- */ + +#ifdef __GNUC__ +#define _inline inline +#endif + +/* --------------------------------------------------------------------------- */ +/* + * FUNCTION : _get_key + * + * Returns the current status of a key (pressed or not) + * + * PARAMS : + * key Internal code of the key + * + * RETURN VALUE : + * A non-zero positive value if the key is pressed, 0 otherwise + */ + +static _inline int _get_key( int code ) +{ + key_equiv * curr ; + int found = 0 ; + + if ( !keystate ) return 0; + + curr = &key_table[code] ; + + while ( curr && found == 0 ) + { + found = keystate[curr->sdlk_equiv] ; + curr = curr->next ; + } + + return found ; +} + +/* --------------------------------------------------------------------------- */ + +static int modkey_key( INSTANCE * my, int * params ) +{ + return ( _get_key( params[0] ) ); +} + +/* --------------------------------------------------------------------------- */ +/* exports */ +/* --------------------------------------------------------------------------- */ + +#include "mod_key_exports.h" + +/* --------------------------------------------------------------------------- */ -- cgit v1.2.3