From 41759a7c6f2280ab6895fbee41d616a2864c9a18 Mon Sep 17 00:00:00 2001 From: Holger Schemel Date: Sun, 16 Feb 2020 21:58:41 +0100 Subject: [PATCH] cleanup of some source files and functions for EM engine --- src/Android.mk | 2 +- src/game_em/Makefile | 4 +- src/game_em/{input.c => game.c} | 143 ++++++++++++-------------------- src/game_em/global.h | 2 - src/game_em/init.c | 37 ++++++++- 5 files changed, 89 insertions(+), 99 deletions(-) rename src/game_em/{input.c => game.c} (71%) diff --git a/src/Android.mk b/src/Android.mk index 89a7e34f..7d5c7bdc 100644 --- a/src/Android.mk +++ b/src/Android.mk @@ -55,7 +55,7 @@ LOCAL_SRC_FILES := $(SDL_PATH)/src/main/android/SDL_android_main.c \ game_em/convert.c \ game_em/graphics.c \ game_em/init.c \ - game_em/input.c \ + game_em/game.c \ game_em/logic.c \ game_em/reademc.c \ game_sp/init.c \ diff --git a/src/game_em/Makefile b/src/game_em/Makefile index c8080a51..4c4c9808 100644 --- a/src/game_em/Makefile +++ b/src/game_em/Makefile @@ -20,7 +20,7 @@ SRCS = cave.c \ convert.c \ graphics.c \ init.c \ - input.c \ + game.c \ logic.c \ reademc.c @@ -28,7 +28,7 @@ OBJS = cave.o \ convert.o \ graphics.o \ init.o \ - input.o \ + game.o \ logic.o \ reademc.o diff --git a/src/game_em/input.c b/src/game_em/game.c similarity index 71% rename from src/game_em/input.c rename to src/game_em/game.c index 6eadbbdf..fd344add 100644 --- a/src/game_em/input.c +++ b/src/game_em/game.c @@ -1,6 +1,6 @@ -/* 2000-08-13T15:29:40Z +/* 2007-11-06 03:39:32 * - * handle input from x11 and keyboard and joystick + * handle interaction between screen and cave */ #include "main_em.h" @@ -12,41 +12,59 @@ struct PLAYER ply[MAX_PLAYERS]; struct EngineSnapshotInfo_EM engine_snapshot_em; -void game_init_random(void) -{ - game_em.random = 1684108901; -} +/* handle input actions for players */ -void game_init_cave_buffers(void) +static void readjoy(byte action, struct PLAYER *ply) { - int x, y; - - for (y = 0; y < CAVE_BUFFER_HEIGHT; y++) - for (x = 0; x < CAVE_BUFFER_WIDTH; x++) - lev.cavebuf[x][y] = Zborder; - for (y = 0; y < CAVE_BUFFER_HEIGHT; y++) - for (x = 0; x < CAVE_BUFFER_WIDTH; x++) - lev.nextbuf[x][y] = Zborder; - for (y = 0; y < CAVE_BUFFER_HEIGHT; y++) - for (x = 0; x < CAVE_BUFFER_WIDTH; x++) - lev.drawbuf[x][y] = Zborder; - for (y = 0; y < CAVE_BUFFER_HEIGHT; y++) - for (x = 0; x < CAVE_BUFFER_WIDTH; x++) - lev.boombuf[x][y] = Xblank; - - for (x = 0; x < CAVE_BUFFER_WIDTH; x++) - lev.cavecol[x] = lev.cavebuf[x]; - for (x = 0; x < CAVE_BUFFER_WIDTH; x++) - lev.nextcol[x] = lev.nextbuf[x]; - for (x = 0; x < CAVE_BUFFER_WIDTH; x++) - lev.drawcol[x] = lev.drawbuf[x]; - for (x = 0; x < CAVE_BUFFER_WIDTH; x++) - lev.boomcol[x] = lev.boombuf[x]; - - lev.cave = lev.cavecol; - lev.next = lev.nextcol; - lev.draw = lev.drawcol; - lev.boom = lev.boomcol; + int north = 0, east = 0, south = 0, west = 0; + int snap = 0, drop = 0; + + if (game_em.use_single_button && action & (JOY_BUTTON_1 | JOY_BUTTON_2)) + action |= JOY_BUTTON_1 | JOY_BUTTON_2; + + if (action & JOY_LEFT) + west = 1; + + if (action & JOY_RIGHT) + east = 1; + + if (action & JOY_UP) + north = 1; + + if (action & JOY_DOWN) + south = 1; + + if (action & JOY_BUTTON_1) + snap = 1; + + if (action & JOY_BUTTON_2) + drop = 1; + + /* always update drop action */ + ply->joy_drop = drop; + + if (ply->joy_stick || (north | east | south | west)) /* (no "| snap"!) */ + { + ply->joy_n = north; + ply->joy_e = east; + ply->joy_s = south; + ply->joy_w = west; + + /* when storing last action, only update snap action with direction */ + /* (prevents clearing direction if snapping stopped before frame 7) */ + ply->joy_snap = snap; + } + + /* if no direction was stored before, allow setting snap to current state */ + if (!ply->joy_n && + !ply->joy_e && + !ply->joy_s && + !ply->joy_w) + ply->joy_snap = snap; + + /* use bug with snap key (mainly TAS keys) sometimes moving the player */ + if (game_em.use_snap_key_bug) + ply->joy_snap = snap; } void InitGameEngine_EM(void) @@ -102,61 +120,6 @@ void GameActions_EM(byte action[MAX_PLAYERS], boolean warp_mode) RedrawPlayfield_EM(FALSE); } -/* read input device for players */ - -void readjoy(byte action, struct PLAYER *ply) -{ - int north = 0, east = 0, south = 0, west = 0; - int snap = 0, drop = 0; - - if (game_em.use_single_button && action & (JOY_BUTTON_1 | JOY_BUTTON_2)) - action |= JOY_BUTTON_1 | JOY_BUTTON_2; - - if (action & JOY_LEFT) - west = 1; - - if (action & JOY_RIGHT) - east = 1; - - if (action & JOY_UP) - north = 1; - - if (action & JOY_DOWN) - south = 1; - - if (action & JOY_BUTTON_1) - snap = 1; - - if (action & JOY_BUTTON_2) - drop = 1; - - /* always update drop action */ - ply->joy_drop = drop; - - if (ply->joy_stick || (north | east | south | west)) /* (no "| snap"!) */ - { - ply->joy_n = north; - ply->joy_e = east; - ply->joy_s = south; - ply->joy_w = west; - - /* when storing last action, only update snap action with direction */ - /* (prevents clearing direction if snapping stopped before frame 7) */ - ply->joy_snap = snap; - } - - /* if no direction was stored before, allow setting snap to current state */ - if (!ply->joy_n && - !ply->joy_e && - !ply->joy_s && - !ply->joy_w) - ply->joy_snap = snap; - - /* use bug with snap key (mainly TAS keys) sometimes moving the player */ - if (game_em.use_snap_key_bug) - ply->joy_snap = snap; -} - void SaveEngineSnapshotValues_EM(void) { int i; diff --git a/src/game_em/global.h b/src/game_em/global.h index 00b190c6..34238421 100644 --- a/src/game_em/global.h +++ b/src/game_em/global.h @@ -12,8 +12,6 @@ extern int screen_x, screen_y; /* global function prototypes */ -void readjoy(byte, struct PLAYER *); - void game_initscreen(void); void game_init_random(void); void game_init_cave_buffers(void); diff --git a/src/game_em/init.c b/src/game_em/init.c index 8be34d40..d08d8db1 100644 --- a/src/game_em/init.c +++ b/src/game_em/init.c @@ -1,6 +1,6 @@ -/* 2000-08-10T18:03:54Z +/* 2000-01-06 06:43:39 * - * open X11 display and sound + * set everything up and close everything down */ #include "main_em.h" @@ -18,6 +18,37 @@ void InitGfxBuffers_EM(void) global_em_info.screenbuffer = screenBitmap; } +void game_init_random(void) +{ + game_em.random = 1684108901; /* what a nice seed */ +} + +void game_init_cave_buffers(void) +{ + int x, y; + + for (x = 0; x < CAVE_BUFFER_WIDTH; x++) + { + for (y = 0; y < CAVE_BUFFER_HEIGHT; y++) + { + lev.cavebuf[x][y] = Zborder; + lev.nextbuf[x][y] = Zborder; + lev.drawbuf[x][y] = Zborder; + lev.boombuf[x][y] = Xblank; + } + + lev.cavecol[x] = lev.cavebuf[x]; + lev.nextcol[x] = lev.nextbuf[x]; + lev.drawcol[x] = lev.drawbuf[x]; + lev.boomcol[x] = lev.boombuf[x]; + } + + lev.cave = lev.cavecol; + lev.next = lev.nextcol; + lev.draw = lev.drawcol; + lev.boom = lev.boomcol; +} + void em_open_all(void) { InitGraphicInfo_EM(); @@ -30,8 +61,6 @@ void em_close_all(void) { } -/* ---------------------------------------------------------------------- */ - void play_element_sound(int x, int y, int sample, int element) { PlayLevelSound_EM(x, y, element, sample); -- 2.34.1