X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fmain.c;h=c31ace49ffa462879952156ce24152e67917fbf4;hb=49221e59bff18cdfbef8c877b588280266ae5037;hp=86b7eb179e4668d08a7a03590c041cbd36455783;hpb=36357e8399d0a42ac45a1cd096aee24a9008b5f5;p=rocksndiamonds.git diff --git a/src/main.c b/src/main.c index 86b7eb17..c31ace49 100644 --- a/src/main.c +++ b/src/main.c @@ -11,37 +11,51 @@ * main.c * ***********************************************************/ +#include "libgame/libgame.h" + #include "main.h" #include "init.h" #include "game.h" #include "events.h" -#include "sound.h" #include "joystick.h" -#include "misc.h" -#ifdef MSDOS +#if defined(PLATFORM_MSDOS) #include #endif -Display *display; -Visual *visual; -int screen; -DrawWindow window; -GC gc, clip_gc[NUM_BITMAPS], tile_clip_gc; +#if 0 +DrawWindow window = None; +DrawBuffer backbuffer; +GC gc; +#endif + +#if 0 +GC clip_gc[NUM_BITMAPS]; +#endif +GC tile_clip_gc; Bitmap pix[NUM_BITMAPS]; -Bitmap pix_masked[NUM_BITMAPS], tile_masked[NUM_TILES]; -Pixmap clipmask[NUM_BITMAPS], tile_clipmask[NUM_TILES]; +#if 0 +Bitmap pix_masked[NUM_BITMAPS]; + +Bitmap tile_masked[NUM_TILES]; + +Pixmap clipmask[NUM_BITMAPS]; +#endif +Pixmap tile_clipmask[NUM_TILES]; -#ifdef USE_XPM_LIBRARY -XpmAttributes xpm_att[NUM_PICTURES]; +#if 0 +DrawBuffer drawto; #endif -DrawBuffer drawto, drawto_field, backbuffer, fieldbuffer; +DrawBuffer drawto_field, fieldbuffer; +#if 0 Colormap cmap; +#endif + +#if 0 +char *sound_device_name = AUDIO_DEVICE; +#endif -int sound_pipe[2]; -int sound_device; -char *sound_device_name = SOUND_DEVICE; int joystick_device = 0; char *joystick_device_name[MAX_PLAYERS] = { @@ -56,18 +70,28 @@ char *program_name = NULL; int game_status = MAINMENU; boolean level_editor_test_game = FALSE; boolean network_playing = FALSE; + +#if 0 int button_status = MB_NOT_PRESSED; boolean motion_status = FALSE; +#endif + int key_joystick_mapping = 0; int global_joystick_status = JOYSTICK_STATUS; int joystick_status = JOYSTICK_STATUS; -int sound_status = SOUND_STATUS; -boolean sound_loops_allowed = FALSE; + +#if 0 +boolean fullscreen_available = FULLSCREEN_STATUS; +boolean fullscreen_enabled = FALSE; +#endif boolean redraw[MAX_BUF_XSIZE][MAX_BUF_YSIZE]; int redraw_x1 = 0, redraw_y1 = 0; + +#if 0 int redraw_mask; int redraw_tiles; +#endif short Feld[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; short Ur[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; @@ -99,7 +123,12 @@ int SBX_Left, SBX_Right; int SBY_Upper, SBY_Lower; int ZX,ZY, ExitX,ExitY; int AllPlayersGone; -int FrameCounter, TimeFrames, TimePlayed, TimeLeft; + +#if 0 +int FrameCounter; +#endif + +int TimeFrames, TimePlayed, TimeLeft; boolean network_player_action_received = FALSE; @@ -107,11 +136,21 @@ struct LevelDirInfo *leveldir_first = NULL, *leveldir_current = NULL; struct LevelInfo level; struct PlayerInfo stored_player[MAX_PLAYERS], *local_player = NULL; struct HiScore highscore[MAX_SCORE_ENTRIES]; -struct SoundInfo Sound[NUM_SOUNDS]; +struct SampleInfo Sound[NUM_SOUNDS]; struct TapeInfo tape; + +#if 0 struct OptionInfo options; +#endif + struct SetupInfo setup; struct GameInfo game; + +#if 0 +struct VideoSystemInfo video; +struct AudioSystemInfo audio; +#endif + struct GlobalInfo global; /* data needed for playing sounds */ @@ -563,14 +602,17 @@ char *element_info[] = "-------------------------------", */ }; +int num_element_info = sizeof(element_info)/sizeof(char *); +#if 0 + /* +-----------------------------------------------------------------------+ */ /* | SDL TEST STUFF | */ /* +-----------------------------------------------------------------------+ */ -#ifdef USE_SDL_LIBRARY +#if defined(TARGET_SDL) SDL_Surface *sdl_screen, *sdl_image_tmp, *sdl_image, *sdl_image_masked; SDL_Surface *sdl_image2_tmp, *sdl_image2, *sdl_image2_masked; @@ -747,29 +789,223 @@ void TEST_SDL_EVENT_LOOP() SDL_Quit(); } -#endif /* USE_SDL_LIBRARY */ +#define SCREEN_WIDTH 640 +#define SCREEN_HEIGHT 480 + +void WatchJoysticks() +{ + SDL_Surface *screen; + const char *name; + int i, done; + SDL_Event event; + int x, y, draw; + SDL_Rect axis_area[2]; + int joystick_nr = 0; + SDL_Joystick *joystick = Get_SDL_Joystick(joystick_nr); + + /* Set a video mode to display joystick axis position */ + screen = SDL_SetVideoMode(SCREEN_WIDTH, SCREEN_HEIGHT, 16, 0); + if ( screen == NULL ) { + fprintf(stderr, "Couldn't set video mode: %s\n",SDL_GetError()); + return; + } + + /* Print info about the joysticks we are watching */ + for (i=0; i<2; i++) + { + joystick = Get_SDL_Joystick(i); + + name = SDL_JoystickName(i); + printf("Watching joystick %d: (%s)\n", i, + name ? name : "Unknown Joystick"); + printf("Joystick has %d axes, %d hats, %d balls, and %d buttons\n", + SDL_JoystickNumAxes(joystick), + SDL_JoystickNumHats(joystick), + SDL_JoystickNumBalls(joystick), + SDL_JoystickNumButtons(joystick)); + } + + /* Initialize drawing rectangles */ + memset(axis_area, 0, (sizeof axis_area)); + draw = 0; + + /* Loop, getting joystick events! */ + done = 0; + while ( ! done ) { + while ( SDL_PollEvent(&event) ) { + switch (event.type) { + case SDL_JOYAXISMOTION: + joystick_nr = event.jaxis.which; + printf("Joystick %d axis %d value: %d\n", + event.jaxis.which, + event.jaxis.axis, + event.jaxis.value); + break; + case SDL_JOYHATMOTION: + joystick_nr = event.jaxis.which; + printf("Joystick %d hat %d value:", + event.jhat.which, + event.jhat.hat); + if ( event.jhat.value == SDL_HAT_CENTERED ) + printf(" centered"); + if ( event.jhat.value & SDL_HAT_UP ) + printf(" up"); + if ( event.jhat.value & SDL_HAT_RIGHT ) + printf(" right"); + if ( event.jhat.value & SDL_HAT_DOWN ) + printf(" down"); + if ( event.jhat.value & SDL_HAT_LEFT ) + printf(" left"); + printf("\n"); + break; + case SDL_JOYBALLMOTION: + joystick_nr = event.jaxis.which; + printf("Joystick %d ball %d delta: (%d,%d)\n", + event.jball.which, + event.jball.ball, + event.jball.xrel, + event.jball.yrel); + break; + case SDL_JOYBUTTONDOWN: + joystick_nr = event.jaxis.which; + printf("Joystick %d button %d down\n", + event.jbutton.which, + event.jbutton.button); + break; + case SDL_JOYBUTTONUP: + joystick_nr = event.jaxis.which; + printf("Joystick %d button %d up\n", + event.jbutton.which, + event.jbutton.button); + break; + case SDL_KEYDOWN: + if ( event.key.keysym.sym != SDLK_ESCAPE ) { + break; + } + /* Fall through to signal quit */ + case SDL_QUIT: + done = 1; + break; + default: + break; + } + } + + joystick = Get_SDL_Joystick(joystick_nr); + + /* Update visual joystick state */ + for ( i=0; i (SCREEN_WIDTH-16) ) { + x = SCREEN_WIDTH-16; + } + y = (((int)SDL_JoystickGetAxis(joystick, 1))+32768); + y *= SCREEN_HEIGHT; + y /= 65535; + if ( y < 0 ) { + y = 0; + } else + if ( y > (SCREEN_HEIGHT-16) ) { + y = SCREEN_HEIGHT-16; + } + axis_area[draw].x = (Sint16)x; + axis_area[draw].y = (Sint16)y; + axis_area[draw].w = 16; + axis_area[draw].h = 16; + SDL_FillRect(screen, &axis_area[draw], 0xFFFF); + + SDL_UpdateRects(screen, 2, axis_area); + } +} + +void TEST_SDL_JOYSTICK() +{ + const char *name; + int i; + + /* Initialize SDL (Note: video is required to start event loop) */ + if ( SDL_Init(SDL_INIT_VIDEO|SDL_INIT_JOYSTICK) < 0 ) + { + fprintf(stderr, "Couldn't initialize SDL: %s\n",SDL_GetError()); + exit(1); + } + + /* Print information about the joysticks */ + printf("There are %d joysticks attached\n", SDL_NumJoysticks()); + for ( i=0; i