panthema / 2006 / SDIOS06 / sdios06 / src / supertux / globals.cpp (Download File)
//  $Id: globals.cpp 1025 2004-05-07 13:46:50Z rmcruz $
// 
//  SuperTux
//  Copyright (C) 2004 SuperTux Development Team, see AUTHORS for details
//
//  This program is free software; you can redistribute it and/or
//  modify it under the terms of the GNU General Public License
//  as published by the Free Software Foundation; either version 2
//  of the License, or (at your option) any later version.
//
//  This program is distributed in the hope that it will be useful,
//  but WITHOUT ANY WARRANTY; without even the implied warranty of
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//  GNU General Public License for more details.
// 
//  You should have received a copy of the GNU General Public License
//  along with this program; if not, write to the Free Software
//  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
//  02111-1307, USA.

#include "globals.h"

/** The datadir prefix prepended when loading game data file */
std::string datadir;

JoystickKeymap::JoystickKeymap()
{
  a_button     = 0;
  b_button     = 1;
  start_button = 2;
  
  x_axis = 0;
  y_axis = 1;
    
  dead_zone = 4096;
}

JoystickKeymap joystick_keymap;

SDL_Surface * screen;
Text* black_text;
Text* gold_text;
Text* silver_text;
Text* blue_text;
Text* red_text;
Text* green_text;
Text* yellow_nums;
Text* white_text;
Text* white_small_text;
Text* white_big_text;

MouseCursor * mouse_cursor;

bool use_gl;
bool use_joystick;
bool use_fullscreen;
bool debug_mode;
bool show_fps;
float game_speed = 1.0f;

int joystick_num = 0;
char* level_startup_file = 0;
bool launch_leveleditor_mode = false;

/* SuperTux directory ($HOME/.supertux) and save directory($HOME/.supertux/save) */
char *st_dir, *st_save_dir;

SDL_Joystick * js;

/* Returns 1 for every button event, 2 for a quit event and 0 for no event. */
int wait_for_event(SDL_Event& event,unsigned int min_delay, unsigned int max_delay, bool empty_events)
{
  int i;
  Timer maxdelay;
  Timer mindelay;
  
  maxdelay.init(false);
  mindelay.init(false);

  if(max_delay < min_delay)
    max_delay = min_delay;

  maxdelay.start(max_delay);
  mindelay.start(min_delay);

  if(empty_events)
    while (SDL_PollEvent(&event))
    {}

  /* Handle events: */

  for(i = 0; maxdelay.check() || !i; ++i)
    {
      while (SDL_PollEvent(&event))
        {
          if(!mindelay.check())
            {
              if (event.type == SDL_QUIT)
                {
                  /* Quit event - quit: */
                  return 2;
                }
              else if (event.type == SDL_KEYDOWN)
                {
                  /* Keypress - skip intro: */

                  return 1;
                }
              else if (event.type == SDL_JOYBUTTONDOWN)
                {
                  /* Fire button - skip intro: */

                  return 1;
                }
              else if (event.type == SDL_MOUSEBUTTONDOWN)
                {
                  /* Mouse button - skip intro: */
                  return 1;
                }
            }
        }
      SDL_Delay(10);
    }

  return 0;
}