+/*
+Copyright (C) 2003, 2010 - Wolfire Games
+
+This file is part of Lugaru.
+
+Lugaru 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 "SDL.h"
+
#include "gamegl.h"
#include "Quaternions.h"
#include "Lights.h"
#include "Skeleton.h"
-#include "fmod.h"
#include "Terrain.h"
-#include "Sprites.h"
-//#include <agl.h>
+#include "Sprite.h"
#include "Frustum.h"
#include "Objects.h"
#include "Weapons.h"
#include "Person.h"
#include "TGALoader.h"
+#include "openal_wrapper.h"
+#include "Stereo.h"
-#include "Constants.h"
-
-#if USE_SDL
-#include "SDL.h"
-#endif
+#include "Animation.h"
bool visibleloading = 0;
-FSOUND_SAMPLE *samp[100] = {0};
-FSOUND_STREAM * strm[20] = {0};
-int channels[100] = {0};
-float volume = 0;bool buttons[3] = {0};
-bool oldbuttons[3] = {0};
+float volume = 0;
bool ismotionblur = 0;
float usermousesensitivity = 0;
bool floatjump = 0;
Skeleton testskeleton;
int numsounds = 0;
Terrain terrain;
-Sprites sprites;
float sps = 0;
-#ifdef WIN32
-HDC hDC;
-#elif USE_SDL
+
SDL_Surface *sdlscreen;
-#elif PLATFORM_MACOSX
-AGLContext gaglContext;
-#else
-#error Define your platform.
-#endif
+
int kTextureSize = 0;
int detail = 0;
FRUSTUM frustum;
float texdetail = 0;
float realtexdetail = 0;
-float terraindetail = 0;
float playerdist = 0;
Objects objects;
int slomo = 0;
bool trilinear;
Weapons weapons;
bool damageeffects = 0;
-//apvector<Person> player(maxplayers);
-Person player[maxplayers];
int numplayers = 0;
bool ambientsound = 0;
bool mousejump = 0;
bool vblsync = 0;
float motionbluramount = 0;
bool keyboardfrozen = 0;
-int newnetmessages = 0;
-char netmessages[256] = {0};
-char mapname[256] = {0};
bool loadingstuff = 0;
bool stillloading = 0;
bool showpoints = 0;
+bool showdamagebar = 0;
bool alwaysblur = 0;
bool immediate = 0;
bool velocityblur = 0;
long dirID = 0;
int mainmenu = 0;
int oldmainmenu = 0;
-GLubyte texturearray[512*512*3] = {0};
-int loadscreencolor = 0;
int whichjointstartarray[26] = {0};
int whichjointendarray[26] = {0};
int kBitsPerPixel = 0;
float menupulse = 0;
-int numdialogues = 0;
-int numdialogueboxes[max_dialogues] = {0};
-int dialoguetype[max_dialogues] = {0};
-int dialogueboxlocation[max_dialogues][max_dialoguelength] = {0};
-float dialogueboxcolor[max_dialogues][max_dialoguelength][3] = {0};
-int dialogueboxsound[max_dialogues][max_dialoguelength] = {0};
-char dialoguetext[max_dialogues][max_dialoguelength][128] = {0};
-char dialoguename[max_dialogues][max_dialoguelength][64] = {0};
-XYZ dialoguecamera[max_dialogues][max_dialoguelength] = {0};
-XYZ participantlocation[max_dialogues][10] = {0};
-int participantfocus[max_dialogues][max_dialoguelength] = {0};
-int participantaction[max_dialogues][max_dialoguelength] = {0};
-float participantrotation[max_dialogues][10] = {0};
-XYZ participantfacing[max_dialogues][max_dialoguelength][10] = {0};
-float dialoguecamerarotation[max_dialogues][max_dialoguelength] = {0};
-float dialoguecamerarotation2[max_dialogues][max_dialoguelength] = {0};
-int indialogue = 0;
-int whichdialogue = 0;
-int directing = 0;
-float dialoguetime = 0;
-int dialoguegonethrough[20] = {0};
-
float smoketex = 0;
float slomospeed = 0;
bool againbonus = 0;
float damagedealt = 0;
-float damagetaken = 0;
int maptype = 0;
float skyboxlightg = 0;
float skyboxlightb = 0;
-float bonusnum[100] = {0};
-
int hostile = 0;
float hostiletime = 0;
-XYZ envsound[30] = {0};
+XYZ envsound[30]; // = {0};
float envsoundvol[30] = {0};
float envsoundlife[30] = {0};
int numenvsounds;
TGAImageRec texture;
bool debugmode = 0;
-int oldbonus = 0;
-int bonus = 0;
-float bonusvalue = 0;
-float bonustotal = 0;
-float startbonustotal = 0;
-float bonustime = 0;
-
-int numaccounts = 0;
-int accountactive = 0;
-int accountdifficulty[10] = {0};
-int accountprogress[10] = {0};
-float accountpoints[10] = {0};
-float accounthighscore[10][50] = {0};
-float accountfasttime[10][50] = {0};
-bool accountunlocked[10][60] = {0};
-char accountname[10][256] = {0};
-float accountcampaignhighscore[10] = {0};
-float accountcampaignfasttime[10] = {0};
-float accountcampaignscore[10] = {0};
-float accountcampaigntime[10] = {0};
-int accountcampaignchoicesmade[10] = {0};int accountcampaignchoices[10][5000] = {0};
bool won = 0;
bool campaign = 0;
-int numfalls = 0;
-int numflipfail = 0;
-int numseen = 0;
-int numresponded = 0;
-int numstaffattack = 0;
-int numswordattack = 0;
-int numknifeattack = 0;
-int numunarmedattack = 0;
-int numescaped = 0;
-int numflipped = 0;
-int numwallflipped = 0;
-int numthrowkill = 0;
-int numafterkill = 0;
-int numreversals = 0;
-int numattacks = 0;
-int maxalarmed = 0;
-
bool gamestarted = 0;
//TextureList textures;
+StereoMode stereomode = stereoNone;
+StereoMode newstereomode = stereoNone;
+float stereoseparation = 0.05;
+bool stereoreverse = false;