projects
/
rocksndiamonds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'master' into releases
[rocksndiamonds.git]
/
src
/
game_em
/
input.c
diff --git
a/src/game_em/input.c
b/src/game_em/input.c
index 33df9f3fb4a1ff8471fbff2564235bfc316ec07c..0dd2bb3b95f99f1621b0d1c426a09a28c690fcb5 100644
(file)
--- a/
src/game_em/input.c
+++ b/
src/game_em/input.c
@@
-3,33
+3,30
@@
* handle input from x11 and keyboard and joystick
*/
* handle input from x11 and keyboard and joystick
*/
-#include "global.h"
-#include "display.h"
-#include "level.h"
+#include "main_em.h"
-unsigned long Random;
+unsigned long Random
EM
;
-struct PLAYER ply1;
-struct PLAYER ply2;
struct LEVEL lev;
struct LEVEL lev;
+struct PLAYER ply[MAX_PLAYERS];
-
unsigned
short **Boom;
-
unsigned
short **Cave;
-
unsigned
short **Next;
-
unsigned
short **Draw;
+short **Boom;
+short **Cave;
+short **Next;
+short **Draw;
-static
unsigned
short *Index[4][HEIGHT];
-static
unsigned
short Array[4][HEIGHT][WIDTH];
+static short *Index[4][HEIGHT];
+static short Array[4][HEIGHT][WIDTH];
-extern
unsigned
int screen_x;
-extern
unsigned
int screen_y;
+extern int screen_x;
+extern int screen_y;
void game_init_vars(void)
{
int x, y;
void game_init_vars(void)
{
int x, y;
- Random = 1684108901;
+ Random
EM
= 1684108901;
for (y = 0; y < HEIGHT; y++)
for (x = 0; x < WIDTH; x++)
for (y = 0; y < HEIGHT; y++)
for (x = 0; x < WIDTH; x++)
@@
-65,31
+62,49
@@
void InitGameEngine_EM()
game_initscreen();
game_animscreen();
game_initscreen();
game_animscreen();
+
+#if 0
+ /* blit playfield from scroll buffer to normal back buffer for fading in */
+ BlitScreenToBitmap_EM(backbuffer);
+#endif
}
}
-void GameActions_EM(byte action)
+void GameActions_EM(byte action
[MAX_PLAYERS], boolean warp_mode
)
{
{
- static unsigned long game_frame_delay = 0;
-#if 1
- unsigned long game_frame_delay_value = getGameFrameDelay_EM(20);
-#else
- unsigned long game_frame_delay_value = getGameFrameDelay_EM(25);
-#endif
+ int i;
#if 0
#if 0
- /* this is done in screens.c/HandleGameActions() by calling BackToFront() */
- XSync(display, False); /* block until all graphics are drawn */
+ static int foo = -1;
+
+ if (action[0] == 0 && foo != 0)
+ printf("KEY RELEASED @ %05d\n", FrameCounter);
+
+ foo = action[0];
#endif
#endif
- WaitUntilDelayReached(&game_frame_delay, game_frame_delay_value);
+#if 0
+#if 1
+ if (FrameCounter % 10 == 0)
+#endif
+ printf("::: %05d: %lu, %d\n", FrameCounter, RandomEM, frame);
+#endif
game_animscreen();
game_animscreen();
- Random = Random * 129 + 1;
+#if 1
+#if 0
+ SyncDisplay();
+#endif
+
+ blitscreen();
+#endif
+
+ RandomEM = RandomEM * 129 + 1;
frame = (frame - 1) & 7;
frame = (frame - 1) & 7;
- readjoy(action);
+ for (i = 0; i < MAX_PLAYERS; i++)
+ readjoy(action[i], &ply[i]);
UpdateEngineValues(screen_x / TILEX, screen_y / TILEY);
UpdateEngineValues(screen_x / TILEX, screen_y / TILEY);
@@
-104,17
+119,17
@@
void GameActions_EM(byte action)
synchro_3();
sound_play();
synchro_3();
sound_play();
- DrawGameDoorValues_EM(lev.required, ply1.dynamite, lev.score,
-
DISPLAY_TIME(lev.time)
);
+ if (!warp_mode) /* do not redraw values in warp mode */
+
DrawGameDoorValues_EM(
);
}
}
}
}
-
/* read input device for players */
/* read input device for players */
-void readjoy(byte action)
+void readjoy(byte action
, struct PLAYER *ply
)
{
{
- unsigned int north = 0, east = 0, south = 0, west = 0, fire = 0;
+ int north = 0, east = 0, south = 0, west = 0;
+ int snap = 0, drop = 0;
if (action & JOY_LEFT)
west = 1;
if (action & JOY_LEFT)
west = 1;
@@
-129,25
+144,19
@@
void readjoy(byte action)
south = 1;
if (action & JOY_BUTTON_1)
south = 1;
if (action & JOY_BUTTON_1)
-
fire
= 1;
+
snap
= 1;
-#if 1
- ply1.joy_fire = fire;
- if (ply1.joy_stick || (north | east | south | west))
- {
- ply1.joy_n = north;
- ply1.joy_e = east;
- ply1.joy_s = south;
- ply1.joy_w = west;
- }
-#else
- ply2.joy_fire = fire;
- if (ply2.joy_stick || (north | east | south | west))
+ if (action & JOY_BUTTON_2)
+ drop = 1;
+
+ ply->joy_snap = snap;
+ ply->joy_drop = drop;
+
+ if (ply->joy_stick || (north | east | south | west))
{
{
- ply
2.
joy_n = north;
- ply
2.
joy_e = east;
- ply
2.
joy_s = south;
- ply
2.
joy_w = west;
+ ply
->
joy_n = north;
+ ply
->
joy_e = east;
+ ply
->
joy_s = south;
+ ply
->
joy_w = west;
}
}
-#endif
}
}