X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=Source%2FGameTick.cpp;h=ef7598485386444b5a3476c33efc27419acb6818;hb=d5ff767196019eeb0001f921365bb1e4060eee5b;hp=b8c4eeebf199e294ded5a6441ab229dab76cc3e7;hpb=0cca0c495c7dc29d134a10d7eed5de1f377c99bf;p=lugaru.git diff --git a/Source/GameTick.cpp b/Source/GameTick.cpp index b8c4eee..ef75984 100644 --- a/Source/GameTick.cpp +++ b/Source/GameTick.cpp @@ -1,17 +1,54 @@ +/* +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. +*/ + +#if PLATFORM_UNIX +#include +#include +#include +#else #include +#endif + #include #include "Game.h" +#include "openal_wrapper.h" +#include "Settings.h" +#include "Input.h" +#include "Animation.h" using namespace std; +// Added more evilness needed for MSVC +#ifdef _MSC_VER + #define strncasecmp(s1, s2, n) _strnicmp(s1, s2, n) + #define snprintf(buf, size, format, ...) _sprintf_p(buf, size, format) +#endif + + extern float multiplier; extern XYZ viewer; extern int environment; extern float texscale; extern Terrain terrain; -extern FSOUND_SAMPLE *samp[100]; extern int channels[100]; -extern Sprites sprites; extern int kTextureSize; extern float screenwidth,screenheight; extern float gravity; @@ -22,7 +59,6 @@ extern int slomo; extern float slomodelay; extern bool floatjump; extern float volume; -extern Animation animation[animation_count]; extern Light light; extern float texdetail; extern GLubyte bloodText[512*512*3]; @@ -34,9 +70,6 @@ extern float blackout; extern bool cellophane; extern bool musictoggle; extern int difficulty; -extern Weapons weapons; -extern Person player[maxplayers]; -extern int numplayers; extern int bloodtoggle; extern bool invertmouse; extern float windvar; @@ -47,14 +80,11 @@ extern bool mousejump; extern float viewdistance; extern bool freeze; extern bool autoslomo; -extern int newnetmessages; -extern char netmessages[256]; extern bool keyboardfrozen; extern int netdatanew; extern bool loadingstuff; extern char mapname[256]; extern XYZ windvector; -extern bool buttons[3]; extern bool debugmode; static int music1; extern int mainmenu; @@ -73,6 +103,7 @@ extern bool foliage; extern bool trilinear; extern bool damageeffects; extern bool showpoints; +extern bool showdamagebar; // (des)activate the damage bar extern bool texttoggle; extern bool alwaysblur; extern float gamespeed; @@ -113,7 +144,6 @@ extern float damagetaken; extern int maptype; extern int editoractive; extern int editorpathtype; -extern bool oldbuttons[3]; extern float hostiletime; @@ -132,16 +162,6 @@ extern int currenthotspot; extern int kBitsPerPixel; extern int hostile; -extern int numaccounts; -extern int accountactive; -extern int accountdifficulty[10]; -extern int accountprogress[10]; -extern float accountpoints[10]; -extern float accounthighscore[10][50]; -extern float accountfasttime[10][50]; -extern bool accountunlocked[10][60]; -extern char accountname[10][256]; - extern bool stillloading; extern bool winfreeze; @@ -188,5422 +208,2837 @@ extern bool campaign; extern float oldgamespeed; -extern float accountcampaignhighscore[10]; -extern float accountcampaignfasttime[10]; -extern float accountcampaignscore[10]; -extern float accountcampaigntime[10]; - -extern int accountcampaignchoicesmade[10]; -extern int accountcampaignchoices[10][5000]; -/********************> Tick() <*****/ -extern FSOUND_STREAM * strm[10]; -extern "C" void PlaySoundEx(int channel, FSOUND_SAMPLE *sptr, FSOUND_DSPUNIT *dsp, signed char startpaused); -extern "C" void PlayStreamEx(int chan, FSOUND_STREAM *sptr, FSOUND_DSPUNIT *dsp, signed char startpaused); - -extern void ScreenShot(const char * fname); -void Screenshot (void) +static const char *rabbitskin[] = { +":Data:Textures:Fur3.jpg", +":Data:Textures:Fur.jpg", +":Data:Textures:Fur2.jpg", +":Data:Textures:Lynx.jpg", +":Data:Textures:Otter.jpg", +":Data:Textures:Opal.jpg", +":Data:Textures:Sable.jpg", +":Data:Textures:Chocolate.jpg", +":Data:Textures:BW2.jpg", +":Data:Textures:WB2.jpg" +}; + +static const char *wolfskin[] = { +":Data:Textures:Wolf.jpg", +":Data:Textures:Darkwolf.jpg", +":Data:Textures:Snowwolf.jpg" +}; + +#define STATIC_ASSERT(x) extern int s_a_dummy[2 * (!!(x)) - 1]; +STATIC_ASSERT (rabbittype == 0 && wolftype == 1) + +static const char **creatureskin[] = {rabbitskin, wolfskin}; + +/* Return true if PFX is a prefix of STR (case-insensitive). */ +static bool stripfx(const char *str, const char *pfx) { - char temp[1024]; - time_t t = time(NULL); - struct tm *tme = localtime(&t); - sprintf(temp, "Screenshots\\Screenshot_%04d_%02d_%02d--%02d_%02d_%02d.png", tme->tm_year + 1900, tme->tm_mon + 1, tme->tm_mday, tme->tm_hour, tme->tm_min, tme->tm_sec); + return !strncasecmp(str, pfx, strlen(pfx)); +} - mkdir("Screenshots"); - ScreenShot(temp/*"Screenshots\\Screenshot.png"*/); - - /*FSSpec MAC_file; - GraphicsExportComponent QT_exporter; - OSErr MAC_error_code; - CGrafPtr MAC_currentPort; - GDHandle MAC_currentDevice; - unsigned char* MAC_pixels; - Rect MAC_picture_rectangle; - GWorldPtr MAC_offscreen_graphics_port; - - static int numscreenshots=0; - - // Make an FSSpec - static char buf[256]; - if(numscreenshots==0){ - buf[0]=26; - buf[1]=':'; - buf[2]='S'; - buf[3]='c'; - buf[4]='r'; - buf[5]='e'; - buf[6]='e'; - buf[7]='n'; - buf[8]='s'; - buf[9]='h'; - buf[10]='o'; - buf[11]='t'; - buf[12]='s'; - buf[13]=':'; - buf[14]='S'; - buf[15]='c'; - buf[16]='r'; - buf[17]='e'; - buf[18]='e'; - buf[19]='n'; - buf[20]='s'; - buf[21]='h'; - buf[22]='o'; - buf[23]='t'; - buf[24]='0'; - buf[25]='0'; - buf[26]='0'; - } +extern "C" void PlaySoundEx(int channel, OPENAL_SAMPLE *sptr, OPENAL_DSPUNIT *dsp, signed char startpaused); +extern "C" void PlayStreamEx(int chan, OPENAL_STREAM *sptr, OPENAL_DSPUNIT *dsp, signed char startpaused); - FInfo *fndrInfo; - FSMakeFSSpec(0, 0, (unsigned char*)buf, &MAC_file); - while(!FSpGetFInfo (&MAC_file, fndrInfo)){ - FSMakeFSSpec(0, 0, (unsigned char*)buf, &MAC_file); - if(!FSpGetFInfo (&MAC_file, fndrInfo)){ - numscreenshots++; - buf[26]++; - if(buf[26]==':'){ - buf[26]='0'; - buf[25]++; - if(buf[25]==':'){ - buf[25]='0'; - buf[24]++; - if(buf[24]==':'){ - buf[24]='9'; - buf[25]='9'; - buf[26]='9'; - } - } - } - } - } +static const char *cmd_names[] = { +#define DECLARE_COMMAND(cmd) #cmd " ", +#include "ConsoleCmds.h" +#undef DECLARE_COMMAND +}; - // Get the GWorld - GWorldPtr MAC_gWorld = (CGrafPtr) FrontWindow(); - //assert(MAC_gWorld != NULL); +typedef void (*console_handler)(Game *game, const char *args); - // Allocate memory for loading image - MAC_pixels = new unsigned char[(int)(screenheight * screenwidth * 4)]; - if (MAC_pixels == NULL) { - //UTIL_Error("Could not create Texture data."); - return; - } +#define DECLARE_COMMAND(cmd) static void ch_##cmd(Game *game, const char *args); +#include "ConsoleCmds.h" +#undef DECLARE_COMMAND - // Get GWorld - ::GetGWorld(&MAC_currentPort, &MAC_currentDevice); +static console_handler cmd_handlers[] = { +#define DECLARE_COMMAND(cmd) ch_##cmd, +#include "ConsoleCmds.h" +#undef DECLARE_COMMAND +}; - // Make a picture Rectangle - MAC_picture_rectangle.left = 0; - MAC_picture_rectangle.right = screenwidth; - MAC_picture_rectangle.top = 0; - MAC_picture_rectangle.bottom = screenheight; +static void ch_quit(Game *game, const char *args) +{ + game->tryquit = 1; +} - // Create new offscreen GWorld - MAC_error_code = ::QTNewGWorldFromPtr (&MAC_offscreen_graphics_port, k32ARGBPixelFormat, &MAC_picture_rectangle, NULL, NULL, 0, (char *) MAC_pixels, screenwidth * 4); - if (MAC_error_code) { - ::SetGWorld(MAC_currentPort, MAC_currentDevice); - delete MAC_pixels; - //UTIL_Error("Could not create offscreen GWorld. "); - return; +static void ch_map(Game *game, const char *args) +{ + char buf[64]; + snprintf(buf, 63, ":Data:Maps:%s", args); + game->Loadlevel(buf); + game->whichlevel = -2; + campaign = 0; +} - } +static void ch_save(Game *game, const char *args) +{ + char buf[64]; + int i, j, k, l, m, templength; + float headprop, bodyprop, armprop, legprop; + snprintf(buf, 63, ":Data:Maps:%s", args); + + + int mapvers = 12;; + + FILE *tfile; + tfile=fopen( ConvertFileName(buf), "wb" ); + fpackf(tfile, "Bi", mapvers); + fpackf(tfile, "Bi", maptype); + fpackf(tfile, "Bi", hostile); + fpackf(tfile, "Bf Bf", viewdistance, fadestart); + fpackf(tfile, "Bb Bf Bf Bf", skyboxtexture, skyboxr, skyboxg, skyboxb); + fpackf(tfile, "Bf Bf Bf", skyboxlightr, skyboxlightg, skyboxlightb); + fpackf(tfile, "Bf Bf Bf Bf Bf Bi", player[0].coords.x, player[0].coords.y, player[0].coords.z, player[0].rotation, player[0].targetrotation, player[0].num_weapons); + if(player[0].num_weapons>0&&player[0].num_weapons<5) + for(j=0;jendpoint.x)minx=endpoint.x; - miny=startpoint.y; - if(miny>endpoint.y)miny=endpoint.y; - minz=startpoint.z; - if(minz>endpoint.z)minz=endpoint.z; - maxx=startpoint.x; - if(maxxminx-objects.model[i].boundingsphereradius&&objects.position[i].xminy-objects.model[i].boundingsphereradius&&objects.position[i].yminz-objects.model[i].boundingsphereradius&&objects.position[i].znumpathpoints); + for(j=0;jnumpathpoints;j++){ + fpackf(tfile, "Bf Bf Bf Bi", game->pathpoint[j].x, game->pathpoint[j].y, game->pathpoint[j].z, game->numpathpointconnect[j]); + for(k=0;knumpathpointconnect[j];k++){ + fpackf(tfile, "Bi", game->pathpointconnect[j][k]); } } - //if(terrain.lineTerrain(startpoint,endpoint,&colpoint)!=-1)return 1000; + fpackf(tfile, "Bf Bf Bf Bf", game->mapcenter.x, game->mapcenter.y, game->mapcenter.z, game->mapradius); - return -1; + fclose(tfile); } -int Game::checkcollide(XYZ startpoint,XYZ endpoint,int what){ - static XYZ colpoint,colviewer,coltarget; - static float minx,minz,maxx,maxz,miny,maxy; - static int i; +static void ch_cellar(Game *game, const char *args) +{ + game->LoadTextureSave(":Data:Textures:Furdarko.jpg",&player[0].skeleton.drawmodel.textureptr,1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize); +} - //startpoint.y+=.7; - //endpoint.y+=.7; - //startpoint.y-=.1; - //endpoint.y-=.1; +static void ch_tint(Game *game, const char *args) +{ + sscanf(args, "%f%f%f", &tintr, &tintg, &tintb); +} - minx=startpoint.x; - if(minx>endpoint.x)minx=endpoint.x; - miny=startpoint.y; - if(miny>endpoint.y)miny=endpoint.y; - minz=startpoint.z; - if(minz>endpoint.z)minz=endpoint.z; +static void ch_tintr(Game *game, const char *args) +{ + tintr = atof(args); +} - maxx=startpoint.x; - if(maxxminx-objects.model[what].boundingsphereradius&&objects.position[what].xminy-objects.model[what].boundingsphereradius&&objects.position[what].yminz-objects.model[what].boundingsphereradius&&objects.position[what].z1)texdetail=4; - skybox.load( ":Data:Textures:Skybox(snow):Front.jpg", - ":Data:Textures:Skybox(snow):Left.jpg", - ":Data:Textures:Skybox(snow):Back.jpg", - ":Data:Textures:Skybox(snow):Right.jpg", - ":Data:Textures:Skybox(snow):Up.jpg", - ":Data:Textures:Skybox(snow):Down.jpg", - ":Data:Textures:Skybox(snow):Cloud.jpg", - ":Data:Textures:Skybox(snow):Reflect.jpg"); +static void ch_armor(Game *game, const char *args) +{ + set_armor(0, args); +} +static void ch_armornear(Game *game, const char *args) +{ + int closest = find_closest(); + if (closest) + set_armor(closest, args); +} +static void ch_protectionreset(Game *game, const char *args) +{ + set_protection(0, "1 1 1"); + set_armor(0, "1 1 1"); +} +static void set_metal(int pnum, const char *args) +{ + float head, high, low; + sscanf(args, "%f%f%f", &head, &high, &low); - texdetail=temptexdetail; - } - if(environment==desertenvironment){ - windvector=0; - windvector.z=2; - LoadTexture(":Data:Textures:deserttree.png",&objects.treetextureptr,0,1); - LoadTexture(":Data:Textures:bushdesert.png",&objects.bushtextureptr,0,1); - LoadTexture(":Data:Textures:boulderdesert.jpg",&objects.rocktextureptr,1,0); - LoadTexture(":Data:Textures:desertbox.jpg",&objects.boxtextureptr,1,0); + player[pnum].metalhead = head; + player[pnum].metalhigh = high; + player[pnum].metallow = low; +} +static void ch_metal(Game *game, const char *args) +{ + set_metal(0, args); +} - if(ambientsound){ - //PlaySoundEx( desertambient, samp[desertambient], NULL, TRUE); - PlayStreamEx( stream_desertambient, strm[stream_desertambient], NULL, TRUE); - FSOUND_SetPaused(channels[stream_desertambient], FALSE); - FSOUND_SetVolume(channels[stream_desertambient], 256); - } +static void set_noclothes(int pnum, Game *game, const char *args) +{ + player[pnum].numclothes = 0; + game->LoadTextureSave(creatureskin[player[pnum].creature][player[pnum].whichskin], + &player[pnum].skeleton.drawmodel.textureptr,1, + &player[pnum].skeleton.skinText[0],&player[pnum].skeleton.skinsize); +} - FSOUND_Sample_Free(samp[footstepsound]); - FSOUND_Sample_Free(samp[footstepsound2]); - FSOUND_Sample_Free(samp[footstepsound3]); - FSOUND_Sample_Free(samp[footstepsound4]); - samp[footstepsound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:footstepsnow1.ogg", FSOUND_HW3D, 0); - samp[footstepsound2] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:footstepsnow2.ogg", FSOUND_HW3D, 0); - samp[footstepsound3] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:footstepsnow1.ogg", FSOUND_HW3D, 0); - samp[footstepsound4] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:footstepsnow2.ogg", FSOUND_HW3D, 0); - FSOUND_Sample_SetMinMaxDistance(samp[footstepsound], 4.0f, 1000.0f); - FSOUND_Sample_SetMinMaxDistance(samp[footstepsound2], 4.0f, 1000.0f); - FSOUND_Sample_SetMinMaxDistance(samp[footstepsound3], 4.0f, 1000.0f); - FSOUND_Sample_SetMinMaxDistance(samp[footstepsound4], 4.0f, 1000.0f); +static void ch_noclothes(Game *game, const char *args) +{ + set_noclothes(0, game, args); +} - LoadTexture(":Data:Textures:sand.jpg",&terraintexture,1,0); +static void ch_noclothesnear(Game *game, const char *args) +{ + int closest = find_closest(); + if (closest) + set_noclothes(closest, game, args); +} - LoadTexture(":Data:Textures:sandslope.jpg",&terraintexture2,1,0); - //LoadTexture(":Data:Textures:detailgrain.png",&terraintexture3,1); +static void set_clothes(int pnum, Game *game, const char *args) +{ + char buf[64]; + snprintf(buf, 63, ":Data:Textures:%s.png", args); + + if (!game->AddClothes(buf,0,1,&player[pnum].skeleton.skinText[pnum],&player[pnum].skeleton.skinsize)) + return; + + player[pnum].DoMipmaps(5,0,0,player[pnum].skeleton.skinsize,player[pnum].skeleton.skinsize); + strcpy(player[pnum].clothes[player[pnum].numclothes],buf); + player[pnum].clothestintr[player[pnum].numclothes]=tintr; + player[pnum].clothestintg[player[pnum].numclothes]=tintg; + player[pnum].clothestintb[player[pnum].numclothes]=tintb; + player[pnum].numclothes++; +} +static void ch_clothes(Game *game, const char *args) +{ + set_clothes(0, game, args); +} +static void ch_clothesnear(Game *game, const char *args) +{ + int closest = find_closest(); + if (closest) + set_clothes(closest, game, args); +} - temptexdetail=texdetail; - if(texdetail>1)texdetail=4; - skybox.load( ":Data:Textures:Skybox(sand):Front.jpg", - ":Data:Textures:Skybox(sand):Left.jpg", - ":Data:Textures:Skybox(sand):Back.jpg", - ":Data:Textures:Skybox(sand):Right.jpg", - ":Data:Textures:Skybox(sand):Up.jpg", - ":Data:Textures:Skybox(sand):Down.jpg", - ":Data:Textures:Skybox(sand):Cloud.jpg", - ":Data:Textures:Skybox(sand):Reflect.jpg"); +static void ch_belt(Game *game, const char *args) +{ + player[0].skeleton.clothes = !player[0].skeleton.clothes; +} +static void ch_cellophane(Game *game, const char *args) +{ + cellophane = !cellophane; + float mul = cellophane ? 0 : 1; + + for (int i = 0; i < numplayers; i++) { + player[i].proportionhead.z = player[i].proportionhead.x * mul; + player[i].proportionbody.z = player[i].proportionbody.x * mul; + player[i].proportionarms.z = player[i].proportionarms.x * mul; + player[i].proportionlegs.z = player[i].proportionlegs.x * mul; + } +} +static void ch_funnybunny(Game *game, const char *args) +{ + player[0].skeleton.id=0; + player[0].skeleton.Load(":Data:Skeleton:Basic Figure",":Data:Skeleton:Basic Figurelow", + ":Data:Skeleton:Rabbitbelt",":Data:Models:Body.solid", + ":Data:Models:Body2.solid",":Data:Models:Body3.solid", + ":Data:Models:Body4.solid",":Data:Models:Body5.solid", + ":Data:Models:Body6.solid",":Data:Models:Body7.solid", + ":Data:Models:Bodylow.solid",":Data:Models:Belt.solid",1); + game->LoadTextureSave(":Data:Textures:fur3.jpg",&player[0].skeleton.drawmodel.textureptr,1, + &player[0].skeleton.skinText[0],&player[0].skeleton.skinsize); + player[0].creature=rabbittype; + player[0].scale=.2; + player[0].headless=0; + player[0].damagetolerance=200; + set_proportion(0, "1 1 1 1"); +} - texdetail=temptexdetail; - } - if(environment==grassyenvironment){ - windvector=0; - windvector.z=2; - LoadTexture(":Data:Textures:tree.png",&objects.treetextureptr,0,1); - LoadTexture(":Data:Textures:bush.png",&objects.bushtextureptr,0,1); - LoadTexture(":Data:Textures:boulder.jpg",&objects.rocktextureptr,1,0); - LoadTexture(":Data:Textures:grassbox.jpg",&objects.boxtextureptr,1,0); +static void ch_wolfie(Game *game, const char *args) +{ + player[0].skeleton.id=0; + player[0].skeleton.Load(":Data:Skeleton:Basic Figure Wolf",":Data:Skeleton:Basic Figure Wolf Low", + ":Data:Skeleton:Rabbitbelt",":Data:Models:Wolf.solid", + ":Data:Models:Wolf2.solid",":Data:Models:Wolf3.solid", + ":Data:Models:Wolf4.solid",":Data:Models:Wolf5.solid", + ":Data:Models:Wolf6.solid",":Data:Models:Wolf7.solid", + ":Data:Models:Wolflow.solid",":Data:Models:Belt.solid",0); + game->LoadTextureSave(":Data:Textures:Wolf.jpg",&player[0].skeleton.drawmodel.textureptr,1, + &player[0].skeleton.skinText[0],&player[0].skeleton.skinsize); + player[0].creature=wolftype; + player[0].damagetolerance=300; + set_proportion(0, "1 1 1 1"); +} - if(ambientsound){ - PlayStreamEx( stream_wind, strm[stream_wind], NULL, TRUE); - FSOUND_SetPaused(channels[stream_wind], FALSE); - FSOUND_SetVolume(channels[stream_wind], 100); - } +static void ch_wolfieisgod(Game *game, const char *args) +{ + ch_wolfie(game, args); +} - FSOUND_Sample_Free(samp[footstepsound]); - FSOUND_Sample_Free(samp[footstepsound2]); - FSOUND_Sample_Free(samp[footstepsound3]); - FSOUND_Sample_Free(samp[footstepsound4]); - samp[footstepsound] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:footstepgrass1.ogg", FSOUND_HW3D, 0); - samp[footstepsound2] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:footstepgrass2.ogg", FSOUND_HW3D, 0); - samp[footstepsound3] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:footstepstone1.ogg", FSOUND_HW3D, 0); - samp[footstepsound4] = FSOUND_Sample_Load(FSOUND_FREE, ":Data:Sounds:footstepstone2.ogg", FSOUND_HW3D, 0); - FSOUND_Sample_SetMinMaxDistance(samp[footstepsound], 4.0f, 1000.0f); - FSOUND_Sample_SetMinMaxDistance(samp[footstepsound2], 4.0f, 1000.0f); - FSOUND_Sample_SetMinMaxDistance(samp[footstepsound3], 4.0f, 1000.0f); - FSOUND_Sample_SetMinMaxDistance(samp[footstepsound4], 4.0f, 1000.0f); +static void ch_wolf(Game *game, const char *args) +{ + game->LoadTextureSave(":Data:Textures:Wolf.jpg",&player[0].skeleton.drawmodel.textureptr,1, + &player[0].skeleton.skinText[0],&player[0].skeleton.skinsize); +} - LoadTexture(":Data:Textures:grassdirt.jpg",&terraintexture,1,0); +static void ch_snowwolf(Game *game, const char *args) +{ + game->LoadTextureSave(":Data:Textures:SnowWolf.jpg",&player[0].skeleton.drawmodel.textureptr,1, + &player[0].skeleton.skinText[0],&player[0].skeleton.skinsize); +} - LoadTexture(":Data:Textures:mossrock.jpg",&terraintexture2,1,0); +static void ch_darkwolf(Game *game, const char *args) +{ + game->LoadTextureSave(":Data:Textures:DarkWolf.jpg",&player[0].skeleton.drawmodel.textureptr,1, + &player[0].skeleton.skinText[0],&player[0].skeleton.skinsize); +} - //LoadTexture(":Data:Textures:detail.png",&terraintexture3,1); +static void ch_lizardwolf(Game *game, const char *args) +{ + game->LoadTextureSave(":Data:Textures:Lizardwolf.jpg",&player[0].skeleton.drawmodel.textureptr,1, + &player[0].skeleton.skinText[0],&player[0].skeleton.skinsize); +} +static void ch_white(Game *game, const char *args) +{ + game->LoadTextureSave(":Data:Textures:fur.jpg",&player[0].skeleton.drawmodel.textureptr,1, + &player[0].skeleton.skinText[0],&player[0].skeleton.skinsize); +} +static void ch_brown(Game *game, const char *args) +{ + game->LoadTextureSave(":Data:Textures:fur3.jpg",&player[0].skeleton.drawmodel.textureptr,1, + &player[0].skeleton.skinText[0],&player[0].skeleton.skinsize); +} - temptexdetail=texdetail; - if(texdetail>1)texdetail=4; - skybox.load( ":Data:Textures:Skybox(grass):Front.jpg", - ":Data:Textures:Skybox(grass):Left.jpg", - ":Data:Textures:Skybox(grass):Back.jpg", - ":Data:Textures:Skybox(grass):Right.jpg", - ":Data:Textures:Skybox(grass):Up.jpg", - ":Data:Textures:Skybox(grass):Down.jpg", - ":Data:Textures:Skybox(grass):Cloud.jpg", - ":Data:Textures:Skybox(grass):Reflect.jpg"); +static void ch_black(Game *game, const char *args) +{ + game->LoadTextureSave(":Data:Textures:fur2.jpg",&player[0].skeleton.drawmodel.textureptr,1, + &player[0].skeleton.skinText[0],&player[0].skeleton.skinsize); +} +static void ch_sizemin(Game *game, const char *args) +{ + int i; + for (i = 1; i < numplayers; i++) + if (player[i].scale < 0.8 * 0.2) + player[i].scale = 0.8 * 0.2; +} +static void ch_tutorial(Game *game, const char *args) +{ + tutoriallevel = atoi(args); +} - texdetail=temptexdetail; - } - temptexdetail=texdetail; - texdetail=1; - terrain.load(":Data:Textures:heightmap.png"); +static void ch_hostile(Game *game, const char *args) +{ + hostile = atoi(args); +} - texdetail=temptexdetail; +static void ch_indemo(Game *game, const char *args) +{ + game->indemo=1; + hotspot[numhotspots]=player[0].coords; + hotspotsize[numhotspots]=0; + hotspottype[numhotspots]=-111; + strcpy(hotspottext[numhotspots],"mapname"); + numhotspots++; } +static void ch_notindemo(Game *game, const char *args) +{ + game->indemo=0; + numhotspots--; +} -void Game::Loadlevel(int which){ - stealthloading=0; +static void ch_type(Game *game, const char *args) +{ + int i, n = sizeof(editortypenames) / sizeof(editortypenames[0]); + for (i = 0; i < n; i++) + if (stripfx(args, editortypenames[i])) { + editoractive = i; + break; + } +} - if(which==0)Loadlevel((char *)":Data:Maps:map1"); - else if(which==1)Loadlevel((char *)":Data:Maps:map2"); - else if(which==2)Loadlevel((char *)":Data:Maps:map3"); - else if(which==3)Loadlevel((char *)":Data:Maps:map4"); - else if(which==4)Loadlevel((char *)":Data:Maps:map5"); - else if(which==5)Loadlevel((char *)":Data:Maps:map6"); - else if(which==6)Loadlevel((char *)":Data:Maps:map7"); - else if(which==7)Loadlevel((char *)":Data:Maps:map8"); - else if(which==8)Loadlevel((char *)":Data:Maps:map9"); - else if(which==9)Loadlevel((char *)":Data:Maps:map10"); - else if(which==10)Loadlevel((char *)":Data:Maps:map11"); - else if(which==11)Loadlevel((char *)":Data:Maps:map12"); - else if(which==12)Loadlevel((char *)":Data:Maps:map13"); - else if(which==13)Loadlevel((char *)":Data:Maps:map14"); - else if(which==14)Loadlevel((char *)":Data:Maps:map15"); - else if(which==15)Loadlevel((char *)":Data:Maps:map16"); - else if(which==-1){tutoriallevel=-1;Loadlevel((char *)":Data:Maps:tutorial");} - else Loadlevel((char *)":Data:Maps:mapsave"); +static void ch_path(Game *game, const char *args) +{ + int i, n = sizeof(pathtypenames) / sizeof(pathtypenames[0]); + for (i = 0; i < n; i++) + if (stripfx(args, pathtypenames[i])) { + editorpathtype = i; + break; + } +} - whichlevel=which; +static void ch_hs(Game *game, const char *args) +{ + hotspot[numhotspots]=player[0].coords; + + float size; + int type, shift; + sscanf(args, "%f%d %n", &size, &type, &shift); + + hotspotsize[numhotspots] = size; + hotspottype[numhotspots] = type; + + strcpy(hotspottext[numhotspots], args + shift); + strcat(hotspottext[numhotspots], "\n"); + + numhotspots++; } -/*char * Game::MD5_string (unsigned char *string){ -char temp[50]; -char temp2[100]; +static void ch_dialogue(Game *game, const char *args) +{ + int dlg, i, j; + char buf1[32], buf2[64]; + + sscanf(args, "%d %31s", &dlg, buf1); + snprintf(buf2, 63, ":Data:Dialogues:%s.txt", buf1); + + dialoguetype[numdialogues] = dlg; + + memset(dialoguetext[numdialogues], 0, sizeof(dialoguetext[numdialogues])); + memset(dialoguename[numdialogues], 0, sizeof(dialoguename[numdialogues])); + + ifstream ipstream(ConvertFileName(buf2)); + ipstream.ignore(256,':'); + ipstream >> numdialogueboxes[numdialogues]; + for(i=0;i> dialogueboxlocation[numdialogues][i]; + ipstream.ignore(256,':'); + ipstream >> dialogueboxcolor[numdialogues][i][0]; + ipstream >> dialogueboxcolor[numdialogues][i][1]; + ipstream >> dialogueboxcolor[numdialogues][i][2]; + ipstream.ignore(256,':'); + ipstream.getline(dialoguename[numdialogues][i],64); + ipstream.ignore(256,':'); + ipstream.ignore(256,' '); + ipstream.getline(dialoguetext[numdialogues][i],128); + for(j=0;j<128;j++){ + if(dialoguetext[numdialogues][i][j]=='\\')dialoguetext[numdialogues][i][j]='\n'; + } + ipstream.ignore(256,':'); + ipstream >> dialogueboxsound[numdialogues][i]; + } + + for(i=0;i> numdialogueboxes[whichdi]; + for(i=0;i> dialogueboxlocation[whichdi][i]; + ipstream.ignore(256,':'); + ipstream >> dialogueboxcolor[whichdi][i][0]; + ipstream >> dialogueboxcolor[whichdi][i][1]; + ipstream >> dialogueboxcolor[whichdi][i][2]; + ipstream.ignore(256,':'); + ipstream.getline(dialoguename[whichdi][i],64); + ipstream.ignore(256,':'); + ipstream.ignore(256,' '); + ipstream.getline(dialoguetext[whichdi][i],128); + for(j=0;j<128;j++){ + if(dialoguetext[whichdi][i][j]=='\\')dialoguetext[whichdi][i][j]='\n'; + } + ipstream.ignore(256,':'); + ipstream >> dialogueboxsound[whichdi][i]; + } + + ipstream.close(); +} -MD5 context; -unsigned int len = strlen ( (char *)temp2); +static void ch_fixtype(Game *game, const char *args) +{ + int dlg; + sscanf(args, "%d", &dlg); + dialoguetype[0] = dlg; +} -context.update ((unsigned char *)temp2, len); -context.finalize (); +static void ch_fixrotation(Game *game, const char *args) +{ + participantrotation[whichdialogue][participantfocus[whichdialogue][indialogue]]=player[participantfocus[whichdialogue][indialogue]].rotation; +} -return context.hex_digest(); -}*/ +static void ch_ddialogue(Game *game, const char *args) +{ + if (numdialogues) + numdialogues--; +} +static void ch_dhs(Game *game, const char *args) +{ + if (numhotspots) + numhotspots--; +} +static void ch_immobile(Game *game, const char *args) +{ + player[0].immobile = 1; +} -void Game::Loadlevel(char *name){ - int i,j,k,l,m; - static int oldlevel; - int templength; - float lamefloat; - int lameint; +static void ch_allimmobile(Game *game, const char *args) +{ + for (int i = 1; i < numplayers; i++) + player[i].immobile = 1; +} - float headprop,legprop,armprop,bodyprop; +static void ch_mobile(Game *game, const char *args) +{ + player[0].immobile = 0; +} - LOGFUNC; +static void ch_default(Game *game, const char *args) +{ + player[0].armorhead=1; + player[0].armorhigh=1; + player[0].armorlow=1; + player[0].protectionhead=1; + player[0].protectionhigh=1; + player[0].protectionlow=1; + player[0].metalhead=1; + player[0].metalhigh=1; + player[0].metallow=1; + player[0].power=1; + player[0].speedmult=1; + player[0].scale=1; + + if(player[0].creature==wolftype){ + player[0].proportionhead=1.1; + player[0].proportionbody=1.1; + player[0].proportionarms=1.1; + player[0].proportionlegs=1.1; + } else if(player[0].creature==rabbittype){ + player[0].proportionhead=1.2; + player[0].proportionbody=1.05; + player[0].proportionarms=1.00; + player[0].proportionlegs=1.1; + player[0].proportionlegs.y=1.05; + } + + player[0].numclothes=0; + game->LoadTextureSave(creatureskin[player[0].creature][player[0].whichskin], + &player[0].skeleton.drawmodel.textureptr,1,&player[0].skeleton.skinText[0], + &player[0].skeleton.skinsize); + + editoractive=typeactive; + player[0].immobile=0; +} - LOG(std::string("Loading level...") + name); +static void ch_play(Game *game, const char *args) +{ + int dlg, i; + sscanf(args, "%d", &dlg); + whichdialogue = dlg; + + if (whichdialogue >= numdialogues) + return; + + for(i=0;iSetUpLighting(); - numdialogues=0; + terrain.DoShadows(); + objects.DoShadows(); +} - for(i=0;i<20;i++) - { - dialoguegonethrough[i]=0; - } +static void ch_skylight(Game *game, const char *args) +{ + sscanf(args, "%f%f%f", &skyboxlightr, &skyboxlightg, &skyboxlightb); - indialogue=-1; - cameramode=0; + game->SetUpLighting(); - damagedealt=0; - damagetaken=0; + terrain.DoShadows(); + objects.DoShadows(); +} - if(accountactive!=-1)difficulty=accountdifficulty[accountactive]; +static void ch_skybox(Game *game, const char *args) +{ + skyboxtexture = !skyboxtexture; - if(difficulty!=2)minimap=1; - else minimap=0; + game->SetUpLighting(); - numhotspots=0; - currenthotspot=-1; - bonustime=1; + terrain.DoShadows(); + objects.DoShadows(); +} - skyboxtexture=1; - skyboxr=1; - skyboxg=1; - skyboxb=1; +static void cmd_dispatch(Game *game, const char *cmd) +{ + int i, n_cmds = sizeof(cmd_names) / sizeof(cmd_names[0]); + + for (i = 0; i < n_cmds; i++) + if (stripfx(cmd, cmd_names[i])) + { + cmd_handlers[i](game, cmd + strlen(cmd_names[i])); + break; + } + if (i < n_cmds) + { + PlaySoundEx(consolesuccesssound, samp[consolesuccesssound], NULL, true); + OPENAL_SetVolume(channels[consolesuccesssound], 256); + OPENAL_SetPaused(channels[consolesuccesssound], false); + } + else + { + PlaySoundEx(consolefailsound, samp[consolefailsound], NULL, true); + OPENAL_SetVolume(channels[consolefailsound], 256); + OPENAL_SetPaused(channels[consolefailsound], false); + } +} - freeze=0; - winfreeze=0; +/********************> Tick() <*****/ +extern bool save_image(const char * fname); +void Screenshot (void) +{ + char temp[1024]; + time_t t = time(NULL); + struct tm *tme = localtime(&t); + sprintf(temp, "Screenshots/Screenshot_%04d_%02d_%02d--%02d_%02d_%02d.png", tme->tm_year + 1900, tme->tm_mon + 1, tme->tm_mday, tme->tm_hour, tme->tm_min, tme->tm_sec); - for(i=0;i<100;i++) - { - bonusnum[i]=0; - } + #if defined(_WIN32) + mkdir("Screenshots"); + #else + mkdir("Screenshots", S_IRWXU); + #endif + + save_image(temp); +} - numfalls=0; - numflipfail=0; - numseen=0; - numstaffattack=0; - numswordattack=0; - numknifeattack=0; - numunarmedattack=0; - numescaped=0; - numflipped=0; - numwallflipped=0; - numthrowkill=0; - numafterkill=0; - numreversals=0; - numattacks=0; - maxalarmed=0; - numresponded=0; - - bonustotal=startbonustotal; - bonus=0; - gameon=1; - changedelay=0; - if(console) - { - PlaySoundEx( consolesuccesssound, samp[consolesuccesssound], NULL, TRUE); - FSOUND_SetVolume(channels[consolesuccesssound], 256); - FSOUND_SetPaused(channels[consolesuccesssound], FALSE); - freeze=0; - console=0; - } - - if(!stealthloading) - { - terrain.numdecals=0; - sprites.numsprites=0; - for(i=0;i=15)funpackf(tfile, "Bi", &indemo); - else indemo=0; - if(mapvers>=5)funpackf(tfile, "Bi", &maptype); - else maptype=mapkilleveryone; - if(mapvers>=6)funpackf(tfile, "Bi", &hostile); - else hostile=1; - if(mapvers>=4)funpackf(tfile, "Bf Bf", &viewdistance, &fadestart); - else - { - viewdistance=100; - fadestart=.6; - } - if(mapvers>=2)funpackf(tfile, "Bb Bf Bf Bf", &skyboxtexture, &skyboxr, &skyboxg, &skyboxb); - else - { - skyboxtexture=1; - skyboxr=1; - skyboxg=1; - skyboxb=1; - } - if(mapvers>=10)funpackf(tfile, "Bf Bf Bf", &skyboxlightr, &skyboxlightg, &skyboxlightb); - else - { - skyboxlightr=skyboxr; - skyboxlightg=skyboxg; - skyboxlightb=skyboxb; - } - if(!stealthloading)funpackf(tfile, "Bf Bf Bf Bf Bf Bi", &player[0].coords.x,&player[0].coords.y,&player[0].coords.z,&player[0].rotation,&player[0].targetrotation, &player[0].num_weapons); - if(stealthloading)funpackf(tfile, "Bf Bf Bf Bf Bf Bi", &lamefloat,&lamefloat,&lamefloat,&lamefloat,&lamefloat, &player[0].num_weapons); - player[0].originalcoords=player[0].coords; - if(player[0].num_weapons>0&&player[0].num_weapons<5) - { - for(j=0;j=9) - { - funpackf(tfile, "Bi Bi", &player[0].whichskin, &player[0].creature); - } - else - { - player[0].whichskin=0; - player[0].creature=rabbittype; - } - - for(i=0;i=8) - { - funpackf(tfile, "Bi", &numdialogues); - if(numdialogues) - { - for(k=0;k128||templength<=0)templength=128; - for(m=0;m64||templength<=0)templength=64; - for(m=0;m=7) - { - funpackf(tfile, "Bi", &numhotspots); - if(numhotspots) - { - for(i=0;imaxdistance) - { - whichclosest=i; - maxdistance=tempdist; - } - } - objects.radius=fast_sqrt(maxdistance); - } - - if(visibleloading){loadscreencolor=4; LoadingScreen();} - //mapcenter=objects.center; - //mapradius=objects.radius; - - funpackf(tfile, "Bi", &numplayers); - int howmanyremoved=0; - bool removeanother=0; - if(numplayers>1&&numplayers=5)funpackf(tfile, "Bi", &player[i-howmanyremoved].howactive); - else player[i-howmanyremoved].howactive=typeactive; - if(mapvers>=3)funpackf(tfile, "Bf",&player[i-howmanyremoved].scale); - else player[i-howmanyremoved].scale=-1; - if(mapvers>=11)funpackf(tfile, "Bb",&player[i-howmanyremoved].immobile); - else player[i-howmanyremoved].immobile=0; - if(mapvers>=12)funpackf(tfile, "Bf",&player[i-howmanyremoved].rotation); - else player[i-howmanyremoved].rotation=0; - player[i-howmanyremoved].targetrotation=player[i-howmanyremoved].rotation; - if(player[i-howmanyremoved].num_weapons<0||player[i-howmanyremoved].num_weapons>5){ - removeanother=1; - howmanyremoved++; - } - if(!removeanother) - { - if(player[i-howmanyremoved].num_weapons>0&&player[i-howmanyremoved].num_weapons<5) - { - for(j=0;j=5)funpackf(tfile, "Bi", &player[i-howmanyremoved].waypointtype[j]); - else player[i-howmanyremoved].waypointtype[j] = wpkeepwalking; - } - - funpackf(tfile, "Bi", &player[i-howmanyremoved].waypoint); - if(player[i-howmanyremoved].waypoint>player[i-howmanyremoved].numwaypoints-1)player[i-howmanyremoved].waypoint=0; - - funpackf(tfile, "Bf Bf Bf", &player[i-howmanyremoved].armorhead, &player[i-howmanyremoved].armorhigh, &player[i-howmanyremoved].armorlow); - funpackf(tfile, "Bf Bf Bf", &player[i-howmanyremoved].protectionhead, &player[i-howmanyremoved].protectionhigh, &player[i-howmanyremoved].protectionlow); - funpackf(tfile, "Bf Bf Bf", &player[i-howmanyremoved].metalhead, &player[i-howmanyremoved].metalhigh, &player[i-howmanyremoved].metallow); - funpackf(tfile, "Bf Bf", &player[i-howmanyremoved].power, &player[i-howmanyremoved].speedmult); - - if(mapvers>=4)funpackf(tfile, "Bf Bf Bf Bf", &headprop, &bodyprop, &armprop, &legprop); - else - { - headprop=1; - bodyprop=1; - armprop=1; - legprop=1; - } - if(player[i-howmanyremoved].creature==wolftype) - { - player[i-howmanyremoved].proportionhead=1.1*headprop; - player[i-howmanyremoved].proportionbody=1.1*bodyprop; - player[i-howmanyremoved].proportionarms=1.1*armprop; - player[i-howmanyremoved].proportionlegs=1.1*legprop; - } - - if(player[i-howmanyremoved].creature==rabbittype) - { - player[i-howmanyremoved].proportionhead=1.2*headprop; - player[i-howmanyremoved].proportionbody=1.05*bodyprop; - player[i-howmanyremoved].proportionarms=1.00*armprop; - player[i-howmanyremoved].proportionlegs=1.1*legprop; - player[i-howmanyremoved].proportionlegs.y=1.05*legprop; - } - - funpackf(tfile, "Bi", &player[i-howmanyremoved].numclothes); - if(player[i-howmanyremoved].numclothes) - { - for(k=0;k30||numpathpoints<0) - numpathpoints=0; - if(numpathpoints) - { - for(j=0;jmaxplayers-1)numplayers=maxplayers-1; - for(i=0;i20) - FSOUND_StopSound(i); - } -*/ - LOG("Starting background music..."); - - FSOUND_StopSound(FSOUND_ALL); - if(environment==snowyenvironment) - { - if(ambientsound) - { - PlayStreamEx(stream_wind, strm[stream_wind], NULL, TRUE); - FSOUND_SetPaused(channels[stream_wind], FALSE); - FSOUND_SetVolume(channels[stream_wind], 256); - } - } - else if(environment==desertenvironment) - { - if(ambientsound) - { - //PlaySoundEx(desertambient, - // samp[desertambient], NULL, TRUE); - PlayStreamEx(stream_desertambient, - strm[stream_desertambient], NULL, TRUE); - FSOUND_SetPaused(channels[stream_desertambient], FALSE); - FSOUND_SetVolume(channels[stream_desertambient], 256); - } - } - else if(environment==grassyenvironment) - { - if(ambientsound) - { - //PlaySoundEx(wind, samp[wind], NULL, TRUE); - PlayStreamEx(stream_wind, strm[stream_wind], NULL, TRUE); - FSOUND_SetPaused(channels[stream_wind], FALSE); - FSOUND_SetVolume(channels[stream_wind], 100); - } - } - oldmusicvolume[0]=0; - oldmusicvolume[1]=0; - oldmusicvolume[2]=0; - oldmusicvolume[3]=0; - - - /*LoadTexture(":Data:Textures:cloud.png",&sprites.cloudtexture,1,1); - LoadTexture(":Data:Textures:cloudimpact.png",&sprites.cloudimpacttexture,1,1); - LoadTexture(":Data:Textures:bloodparticle.png",&sprites.bloodtexture,1,1); - LoadTexture(":Data:Textures:snowflake.png",&sprites.snowflaketexture,1,1); - LoadTexture(":Data:Textures:flame.png",&sprites.flametexture,1,1); - LoadTexture(":Data:Textures:bloodflame.png",&sprites.bloodflametexture,1,1); - LoadTexture(":Data:Textures:smoke.png",&sprites.smoketexture,1,1); - LoadTexture(":Data:Textures:shine.png",&sprites.shinetexture,1,0); - */ - - if(!firstload) - { - firstload=1; - } - } - leveltime=0; - loadingstuff=0; - visibleloading=0; -} - -void Game::Tick() -{ - static int i,k,j,l,m; - static XYZ facing,flatfacing,absflatfacing; - static XYZ rotatetarget; - static bool oldkey; - static float oldtargetrotation; - static int target, numgood; - static XYZ tempcoords1,tempcoords2; - static XYZ test; - static XYZ test2; - static XYZ lowpoint,lowpointtarget,lowpoint2,lowpointtarget2,lowpoint3,lowpointtarget3,lowpoint4,lowpointtarget4,lowpoint5,lowpointtarget5,lowpoint6,lowpointtarget6,lowpoint7,lowpointtarget7,colpoint,colpoint2; - static int whichhit; - static bool donesomething; - static bool oldjumpkeydown; - - int templength; - - float headprop,bodyprop,armprop,legprop; - - if(newnetmessages){ - newnetmessages=0; - PlaySoundEx( consolesuccesssound, samp[consolesuccesssound], NULL, TRUE); - FSOUND_SetVolume(channels[consolesuccesssound], 256); - FSOUND_SetPaused(channels[consolesuccesssound], FALSE); - - for(k=14;k>=2;k--){ - for(j=0;j<255;j++){ - consoletext[k][j]=consoletext[k-1][j]; - } - consolechars[k]=consolechars[k-1]; - } - for(k=14;k>=2;k--){ - for(j=0;j<255;j++){ - displaytext[k][j]=displaytext[k-1][j]; - } - displaychars[k]=displaychars[k-1]; - displaytime[k]=displaytime[k-1]; - } - for(j=0;j<255;j++){ - consoletext[1][j]=' '; - displaytext[1][j]=' '; - } - sprintf (consoletext[1], netmessages); - sprintf (displaytext[1], netmessages); - consolechars[1]=255; - displaychars[1]=255; - displaytime[1]=0; - } - - for(i=0;i<15;i++){ - displaytime[i]+=multiplier; - } - - static unsigned char theKeyMap[16]; - GetKeys( theKeyMap ); - - keyboardfrozen=0; - - - static bool mainmenutogglekeydown; - if(!console){ - if(mainmenu&&endgame==1)mainmenu=10; - if(IsKeyDown(theKeyMap, MAC_ESCAPE_KEY)&&!mainmenutogglekeydown&&(mainmenu==7&&entername)){ - for(j=0;j<255;j++){ - displaytext[0][j]=' '; - } - displaychars[0]=0; - displayselected=0; - entername=0; - mainmenutogglekeydown=1; - } - if((IsKeyDown(theKeyMap, MAC_ESCAPE_KEY)||(mainmenu==0&&((IsKeyDown(theKeyMap, jumpkey)||IsKeyDown(theKeyMap, MAC_SPACE_KEY)||(campaign)))&&!oldjumpkeydown&&campaign&&winfreeze))&&!mainmenutogglekeydown&&(!mainmenu||gameon||mainmenu==3||mainmenu==4||mainmenu==5||mainmenu==6||(mainmenu==7&&!entername)||mainmenu==9||mainmenu==11||(mainmenu==12&&!tryquit)||mainmenu==13||mainmenu==14||mainmenu==15||mainmenu==16||mainmenu==17||mainmenu==10)){ - selected=-1; - if(mainmenu==1||mainmenu==2||mainmenu==0){ - if(mainmenu==0&&!winfreeze)mainmenu=2; - else if(mainmenu==0&&winfreeze&&(campaignchoosenext[campaignchoicewhich[whichchoice]])==1)mainmenu=100; - else if(mainmenu==0&&winfreeze){ - /* if(campaignchoosenext[campaignchoicewhich[whichchoice]]==2) - stealthloading=1; - else stealthloading=0; - - if(!stealthloading){ - float gLoc[3]={0,0,0}; - float vel[3]={0,0,0}; - FSOUND_Sample_SetMinMaxDistance(samp[firestartsound], 9999.0f, 99999.0f); - PlaySoundEx( firestartsound, samp[firestartsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[firestartsound], gLoc, vel); - FSOUND_SetVolume(channels[firestartsound], 256); - FSOUND_SetPaused(channels[firestartsound], FALSE); - FSOUND_Sample_SetMinMaxDistance(samp[firestartsound], 8.0f, 2000.0f); - - flashr=1; - flashg=0; - flashb=0; - flashamount=1; - flashdelay=1; - } - - startbonustotal=0; - - for(i=0;i2)newdetail=detail; - if(newdetail<0)newdetail=detail; - if(newscreenwidth>3000)newscreenwidth=screenwidth; - if(newscreenwidth<0)newscreenwidth=screenwidth; - if(newscreenheight>3000)newscreenheight=screenheight; - if(newscreenheight<0)newscreenheight=screenheight; - - //ofstream opstream(":Data:config.txt"); - ofstream opstream("./Data/config.txt"); - opstream << "Screenwidth:\n"; - opstream << newscreenwidth; - opstream << "\nScreenheight:\n"; - opstream << newscreenheight; - opstream << "\nMouse sensitivity:\n"; - opstream << usermousesensitivity; - opstream << "\nBlur(0,1):\n"; - opstream << ismotionblur; - opstream << "\nOverall Detail(0,1,2) higher=better:\n"; - opstream << newdetail; - opstream << "\nFloating jump:\n"; - opstream << floatjump; - opstream << "\nMouse jump:\n"; - opstream << mousejump; - opstream << "\nAmbient sound:\n"; - opstream << ambientsound; - opstream << "\nBlood (0,1,2):\n"; - opstream << bloodtoggle; - opstream << "\nAuto slomo:\n"; - opstream << autoslomo; - opstream << "\nFoliage:\n"; - opstream << foliage; - opstream << "\nMusic:\n"; - opstream << musictoggle; - opstream << "\nTrilinear:\n"; - opstream << trilinear; - opstream << "\nDecals(shadows,blood puddles,etc):\n"; - opstream << decals; - opstream << "\nInvert mouse:\n"; - opstream << invertmouse; - opstream << "\nGamespeed:\n"; - if(oldgamespeed==0)oldgamespeed=1; - opstream << oldgamespeed; - opstream << "\nDifficulty(0,1,2) higher=harder:\n"; - opstream << difficulty; - opstream << "\nDamage effects(blackout, doublevision):\n"; - opstream << damageeffects; - opstream << "\nText:\n"; - opstream << texttoggle; - opstream << "\nDebug:\n"; - opstream << debugmode; - opstream << "\nVBL Sync:\n"; - opstream << vblsync; - opstream << "\nShow Points:\n"; - opstream << showpoints; - opstream << "\nAlways Blur:\n"; - opstream << alwaysblur; - opstream << "\nImmediate mode (turn on on G5):\n"; - opstream << immediate; - opstream << "\nVelocity blur:\n"; - opstream << velocityblur; - opstream << "\nVolume:\n"; - opstream << volume; - opstream << "\nForward key:\n"; - opstream << KeyToChar(forwardkey); - opstream << "\nBack key:\n"; - opstream << KeyToChar(backkey); - opstream << "\nLeft key:\n"; - opstream << KeyToChar(leftkey); - opstream << "\nRight key:\n"; - opstream << KeyToChar(rightkey); - opstream << "\nJump key:\n"; - opstream << KeyToChar(jumpkey); - opstream << "\nCrouch key:\n"; - opstream << KeyToChar(crouchkey); - opstream << "\nDraw key:\n"; - opstream << KeyToChar(drawkey); - opstream << "\nThrow key:\n"; - opstream << KeyToChar(throwkey); - opstream << "\nAttack key:\n"; - opstream << KeyToChar(attackkey); - opstream << "\nChat key:\n"; - opstream << KeyToChar(chatkey); - opstream.close(); - } - if(mainmenu==4||mainmenu==5||mainmenu==6||mainmenu==7||mainmenu==9||mainmenu==12||mainmenu==13||mainmenu==14||mainmenu==10||mainmenu==11||mainmenu==100){ - float gLoc[3]={0,0,0}; - float vel[3]={0,0,0}; - FSOUND_Sample_SetMinMaxDistance(samp[fireendsound], 9999.0f, 99999.0f); - PlaySoundEx( fireendsound, samp[fireendsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[fireendsound], gLoc, vel); - FSOUND_SetVolume(channels[fireendsound], 256); - FSOUND_SetPaused(channels[fireendsound], FALSE); - FSOUND_Sample_SetMinMaxDistance(samp[fireendsound], 8.0f, 2000.0f); - - flashr=1; - flashg=0; - flashb=0; - flashamount=1; - flashdelay=1; - } - if(mainmenu==3&&gameon)mainmenu=2; - if(mainmenu==3&&!gameon)mainmenu=1; - if(mainmenu==5&&gameon)mainmenu=2; - if(mainmenu==5&&!gameon)mainmenu=1; - if(mainmenu==4)mainmenu=3; - if(mainmenu==6)mainmenu=5; - if(mainmenu==7)mainmenu=1; - if(mainmenu==9)mainmenu=5; - if(mainmenu==11)mainmenu=5; - if(mainmenu==12)mainmenu=5; - if(mainmenu==13)mainmenu=12; - if(mainmenu==14)mainmenu=13; - if(mainmenu==10)mainmenu=5; - if(mainmenu==100){ - mainmenu=5; - gameon=0; - winfreeze=0; - } - mainmenutogglekeydown=1; - } - if(!IsKeyDown(theKeyMap, MAC_ESCAPE_KEY)){ - mainmenutogglekeydown=0; - } - } - - /*static bool minimaptogglekeydown; - if(IsKeyDown(theKeyMap, MAC_TAB_KEY)&&!minimaptogglekeydown){ - minimap=1-minimap; - minimaptogglekeydown=1; - } - if(!IsKeyDown(theKeyMap, MAC_TAB_KEY)){ - minimaptogglekeydown=0; - } - */ - - static bool minimaptogglekeydown; - if(IsKeyDown(theKeyMap, MAC_TAB_KEY)&&!minimaptogglekeydown&&tutoriallevel){ - if(tutorialstage!=51) - tutorialstagetime=tutorialmaxtime; - PlaySoundEx( consolefailsound, samp[consolefailsound], NULL, TRUE); - FSOUND_SetVolume(channels[consolefailsound], 128); - FSOUND_SetPaused(channels[consolefailsound], FALSE); - minimaptogglekeydown=1; - } - if(!IsKeyDown(theKeyMap, MAC_TAB_KEY)){ - minimaptogglekeydown=0; - } - - if(mainmenu){ - //menu buttons - if(mainmenu==1||mainmenu==2){ - if(Button()&&!oldbutton&&selected==1){ - if(!gameon){ - float gLoc[3]={0,0,0}; - float vel[3]={0,0,0}; - FSOUND_Sample_SetMinMaxDistance(samp[firestartsound], 9999.0f, 99999.0f); - PlaySoundEx( firestartsound, samp[firestartsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[firestartsound], gLoc, vel); - FSOUND_SetVolume(channels[firestartsound], 256); - FSOUND_SetPaused(channels[firestartsound], FALSE); - FSOUND_Sample_SetMinMaxDistance(samp[firestartsound], 8.0f, 2000.0f); - - flashr=1; - flashg=0; - flashb=0; - flashamount=1; - flashdelay=1; - - //new game - if(accountactive!=-1)mainmenu=5; - else mainmenu=7; - /* - startbonustotal=0; - - loading=2; - loadtime=0; - if(firstload)TickOnceAfter(); - if(!firstload)LoadStuff(); - else { - Loadlevel(0); - } - mainmenu=0; - gameon=1; - FSOUND_SetPaused(channels[music3], TRUE); */ - } - else - { - //resume - mainmenu=0; - FSOUND_SetPaused(channels[stream_music3], TRUE); - FSOUND_SetPaused(channels[music1], FALSE); - } - } - - if(Button()&&!oldbutton&&selected==2){ - float gLoc[3]={0,0,0}; - float vel[3]={0,0,0}; - FSOUND_Sample_SetMinMaxDistance(samp[firestartsound], 9999.0f, 99999.0f); - PlaySoundEx( firestartsound, samp[firestartsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[firestartsound], gLoc, vel); - FSOUND_SetVolume(channels[firestartsound], 256); - FSOUND_SetPaused(channels[firestartsound], FALSE); - FSOUND_Sample_SetMinMaxDistance(samp[firestartsound], 8.0f, 2000.0f); - - flashr=1; - flashg=0; - flashb=0; - flashamount=1; - flashdelay=1; - - //options - - mainmenu=3; - - if(newdetail>2)newdetail=detail; - if(newdetail<0)newdetail=detail; - if(newscreenwidth>3000)newscreenwidth=screenwidth; - if(newscreenwidth<0)newscreenwidth=screenwidth; - if(newscreenheight>3000)newscreenheight=screenheight; - if(newscreenheight<0)newscreenheight=screenheight; - } - - if(Button()&&!oldbutton&&selected==3){ - float gLoc[3]={0,0,0}; - float vel[3]={0,0,0}; - FSOUND_Sample_SetMinMaxDistance(samp[fireendsound], 9999.0f, 99999.0f); - PlaySoundEx( fireendsound, samp[fireendsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[fireendsound], gLoc, vel); - FSOUND_SetVolume(channels[fireendsound], 256); - FSOUND_SetPaused(channels[fireendsound], FALSE); - FSOUND_Sample_SetMinMaxDistance(samp[fireendsound], 8.0f, 2000.0f); - - flashr=1; - flashg=0; - flashb=0; - flashamount=1; - flashdelay=1; - - if(!gameon){ - //quit - tryquit=1; - if(registered)FSOUND_SetPaused(channels[stream_music3], TRUE); - } - else{ - //end game - gameon=0; - mainmenu=1; - } - } - if(Button())oldbutton=1; - else oldbutton=0; - } - - if(mainmenu==3){ - if(Button()&&!oldbutton&&selected!=-1){ - float gLoc[3]={0,0,0}; - float vel[3]={0,0,0}; - FSOUND_Sample_SetMinMaxDistance(samp[firestartsound], 9999.0f, 99999.0f); - PlaySoundEx( firestartsound, samp[firestartsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[firestartsound], gLoc, vel); - FSOUND_SetVolume(channels[firestartsound], 256); - FSOUND_SetPaused(channels[firestartsound], FALSE); - FSOUND_Sample_SetMinMaxDistance(samp[firestartsound], 8.0f, 2000.0f); - } - if(Button()&&!oldbutton&&selected==0){ - int whichres; - whichres=-1; - if(newscreenwidth==640&&newscreenheight==480)whichres=0; - if(newscreenwidth==800&&newscreenheight==600)whichres=1; - if(newscreenwidth==1024&&newscreenheight==768)whichres=2; - if(newscreenwidth==1280&&newscreenheight==1024)whichres=3; - if(newscreenwidth==1600&&newscreenheight==1200)whichres=4; - if(newscreenwidth==840&&newscreenheight==524)whichres=5; - if(newscreenwidth==1024&&newscreenheight==640)whichres=6; - if(newscreenwidth==1344&&newscreenheight==840)whichres=7; - - if(whichres==-1||whichres==7){ - newscreenwidth=640; - newscreenheight=480; - } - if(whichres==0){ - newscreenwidth=800; - newscreenheight=600; - } - if(whichres==1){ - newscreenwidth=1024; - newscreenheight=768; - } - if(whichres==2){ - newscreenwidth=1280; - newscreenheight=1024; - } - if(whichres==3){ - newscreenwidth=1600; - newscreenheight=1200; - } - if(whichres==4){ - newscreenwidth=840; - newscreenheight=524; - } - if(whichres==5){ - newscreenwidth=1024; - newscreenheight=640; - } - if(whichres==6){ - newscreenwidth=1344; - newscreenheight=840; - } - } - if(Button()&&!oldbutton&&selected==1){ - newdetail++; - if(newdetail>2)newdetail=0; - } - if(Button()&&!oldbutton&&selected==2){ - bloodtoggle++; - if(bloodtoggle>2)bloodtoggle=0; - } - if(Button()&&!oldbutton&&selected==3){ - difficulty++; - if(difficulty>2)difficulty=0; - } - if(Button()&&!oldbutton&&selected==4){ - ismotionblur=1-ismotionblur; - } - if(Button()&&!oldbutton&&selected==5){ - decals=1-decals; - } - if(Button()&&!oldbutton&&selected==6){ - musictoggle=1-musictoggle; - - if(!musictoggle){ - FSOUND_SetPaused(channels[music1], TRUE); - FSOUND_SetPaused(channels[stream_music2], TRUE); - FSOUND_SetPaused(channels[stream_music3], TRUE); - - for(i=0;i<4;i++){ - oldmusicvolume[i]=0; - musicvolume[i]=0; - } - } - - if(musictoggle){ - PlayStreamEx( stream_music3, strm[stream_music3], NULL, TRUE); - FSOUND_SetPaused(channels[stream_music3], FALSE); - FSOUND_SetVolume(channels[stream_music3], 256); - } - } - if(Button()&&!oldbutton&&selected==9){ - invertmouse=1-invertmouse; - } - if(Button()&&!oldbutton&&selected==10){ - usermousesensitivity+=.2; - if(usermousesensitivity>2)usermousesensitivity=.2; - } - if(Button()&&!oldbutton&&selected==11){ - volume+=.1f; - if(volume>1.0001f)volume=0; - FSOUND_SetSFXMasterVolume((int)(volume*255)); - } - if(Button()&&!oldbutton&&selected==7){ - /*float gLoc[3]={0,0,0}; - float vel[3]={0,0,0}; - FSOUND_Sample_SetMinMaxDistance(samp[firestartsound], 9999.0f, 99999.0f); - PlaySoundEx( firestartsound, samp[firestartsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[firestartsound], gLoc, vel); - FSOUND_SetVolume(channels[firestartsound], 256); - FSOUND_SetPaused(channels[firestartsound], FALSE); - FSOUND_Sample_SetMinMaxDistance(samp[firestartsound], 8.0f, 2000.0f); - */ - flashr=1; - flashg=0; - flashb=0; - flashamount=1; - flashdelay=1; - - //options - - mainmenu=4; - keyselect=-1; - } - if(Button()&&!oldbutton&&selected==8){ - float gLoc[3]={0,0,0}; - float vel[3]={0,0,0}; - FSOUND_Sample_SetMinMaxDistance(samp[fireendsound], 9999.0f, 99999.0f); - PlaySoundEx( fireendsound, samp[fireendsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[fireendsound], gLoc, vel); - FSOUND_SetVolume(channels[fireendsound], 256); - FSOUND_SetPaused(channels[fireendsound], FALSE); - FSOUND_Sample_SetMinMaxDistance(samp[fireendsound], 8.0f, 2000.0f); - - flashr=1; - flashg=0; - flashb=0; - flashamount=1; - flashdelay=1; - - if(newdetail>2)newdetail=detail; - if(newdetail<0)newdetail=detail; - if(newscreenwidth>3000)newscreenwidth=screenwidth; - if(newscreenwidth<0)newscreenwidth=screenwidth; - if(newscreenheight>3000)newscreenheight=screenheight; - if(newscreenheight<0)newscreenheight=screenheight; - - - //ofstream opstream(":Data:config.txt"); - ofstream opstream("./Data/config.txt"); - opstream << "Screenwidth:\n"; - opstream << newscreenwidth; - opstream << "\nScreenheight:\n"; - opstream << newscreenheight; - opstream << "\nMouse sensitivity:\n"; - opstream << usermousesensitivity; - opstream << "\nBlur(0,1):\n"; - opstream << ismotionblur; - opstream << "\nOverall Detail(0,1,2) higher=better:\n"; - opstream << newdetail; - opstream << "\nFloating jump:\n"; - opstream << floatjump; - opstream << "\nMouse jump:\n"; - opstream << mousejump; - opstream << "\nAmbient sound:\n"; - opstream << ambientsound; - opstream << "\nBlood (0,1,2):\n"; - opstream << bloodtoggle; - opstream << "\nAuto slomo:\n"; - opstream << autoslomo; - opstream << "\nFoliage:\n"; - opstream << foliage; - opstream << "\nMusic:\n"; - opstream << musictoggle; - opstream << "\nTrilinear:\n"; - opstream << trilinear; - opstream << "\nDecals(shadows,blood puddles,etc):\n"; - opstream << decals; - opstream << "\nInvert mouse:\n"; - opstream << invertmouse; - opstream << "\nGamespeed:\n"; - if(oldgamespeed==0)oldgamespeed=1; - opstream << oldgamespeed; - opstream << "\nDifficulty(0,1,2) higher=harder:\n"; - opstream << difficulty; - opstream << "\nDamage effects(blackout, doublevision):\n"; - opstream << damageeffects; - opstream << "\nText:\n"; - opstream << texttoggle; - opstream << "\nDebug:\n"; - opstream << debugmode; - opstream << "\nVBL Sync:\n"; - opstream << vblsync; - opstream << "\nShow Points:\n"; - opstream << showpoints; - opstream << "\nAlways Blur:\n"; - opstream << alwaysblur; - opstream << "\nImmediate mode (turn on on G5):\n"; - opstream << immediate; - opstream << "\nVelocity blur:\n"; - opstream << velocityblur; - opstream << "\nVolume:\n"; - opstream << volume; - opstream << "\nForward key:\n"; - opstream << KeyToChar(forwardkey); - opstream << "\nBack key:\n"; - opstream << KeyToChar(backkey); - opstream << "\nLeft key:\n"; - opstream << KeyToChar(leftkey); - opstream << "\nRight key:\n"; - opstream << KeyToChar(rightkey); - opstream << "\nJump key:\n"; - opstream << KeyToChar(jumpkey); - opstream << "\nCrouch key:\n"; - opstream << KeyToChar(crouchkey); - opstream << "\nDraw key:\n"; - opstream << KeyToChar(drawkey); - opstream << "\nThrow key:\n"; - opstream << KeyToChar(throwkey); - opstream << "\nAttack key:\n"; - opstream << KeyToChar(attackkey); - opstream << "\nChat key:\n"; - opstream << KeyToChar(chatkey); - opstream.close(); - - if(mainmenu==3&&gameon)mainmenu=2; - if(mainmenu==3&&!gameon)mainmenu=1; - } - if(Button())oldbutton=1; - else oldbutton=0; - } - if(mainmenu==4){ - if(Button()&&!oldbutton&&selected!=-1&&keyselect==-1){ - float gLoc[3]={0,0,0}; - float vel[3]={0,0,0}; - FSOUND_Sample_SetMinMaxDistance(samp[firestartsound], 9999.0f, 99999.0f); - PlaySoundEx( firestartsound, samp[firestartsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[firestartsound], gLoc, vel); - FSOUND_SetVolume(channels[firestartsound], 256); - FSOUND_SetPaused(channels[firestartsound], FALSE); - FSOUND_Sample_SetMinMaxDistance(samp[firestartsound], 8.0f, 2000.0f); - } - if(Button()&&!oldbutton&&selected<9&&keyselect==-1){ - keyselect=selected; - oldbuttons[0]=1; - oldbuttons[1]=1; - oldbuttons[2]=1; - } - if(keyselect!=-1){ - for(i=0;i<3;i++) - if(!buttons[i]&&!oldbutton&&!Button())oldbuttons[i]=0; - for(i=0;i<140;i++){ - if((IsKeyDown(theKeyMap, i)||(buttons[0]&&!oldbuttons[0]&&!oldbutton)||(buttons[1]&&!oldbuttons[1]&&!oldbutton))&&keyselect!=-1){ - if(i!=MAC_ESCAPE_KEY&&(strcmp(KeyToChar(i),"unknown")||(buttons[0]&&!oldbuttons[0]&&!oldbutton)||(buttons[1]&&!oldbuttons[1]&&!oldbutton))){ - float gLoc[3]={0,0,0}; - float vel[3]={0,0,0}; - FSOUND_Sample_SetMinMaxDistance(samp[fireendsound], 9999.0f, 99999.0f); - PlaySoundEx( fireendsound, samp[fireendsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[fireendsound], gLoc, vel); - FSOUND_SetVolume(channels[fireendsound], 256); - FSOUND_SetPaused(channels[fireendsound], FALSE); - FSOUND_Sample_SetMinMaxDistance(samp[fireendsound], 8.0f, 2000.0f); - - int keynum; - keynum=i; - if(buttons[0]&&!oldbuttons[0])keynum=MAC_MOUSEBUTTON1; - if(buttons[1]&&!oldbuttons[1])keynum=MAC_MOUSEBUTTON2; - - - - if(keyselect==0)forwardkey=keynum; - if(keyselect==1)backkey=keynum; - if(keyselect==2)leftkey=keynum; - if(keyselect==3)rightkey=keynum; - if(keyselect==4)crouchkey=keynum; - if(keyselect==5)jumpkey=keynum; - if(keyselect==6)drawkey=keynum; - if(keyselect==7)throwkey=keynum; - if(keyselect==8)attackkey=keynum; - keyselect=-1; - } - } - }} - if(Button()&&!oldbutton&&selected==9){ - float gLoc[3]={0,0,0}; - float vel[3]={0,0,0}; - FSOUND_Sample_SetMinMaxDistance(samp[fireendsound], 9999.0f, 99999.0f); - PlaySoundEx( fireendsound, samp[fireendsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[fireendsound], gLoc, vel); - FSOUND_SetVolume(channels[fireendsound], 256); - FSOUND_SetPaused(channels[fireendsound], FALSE); - FSOUND_Sample_SetMinMaxDistance(samp[fireendsound], 8.0f, 2000.0f); - - flashr=1; - flashg=0; - flashb=0; - flashamount=1; - flashdelay=1; - - mainmenu=3; - - if(newdetail>2)newdetail=detail; - if(newdetail<0)newdetail=detail; - if(newscreenwidth>3000)newscreenwidth=screenwidth; - if(newscreenwidth<0)newscreenwidth=screenwidth; - if(newscreenheight>3000)newscreenheight=screenheight; - if(newscreenheight<0)newscreenheight=screenheight; - } - } - - if(mainmenu==5){ - if(accountcampaignchoicesmade[accountactive]>8&&!registered){ - FSOUND_SetFrequency(FSOUND_ALL, 0.001); - PlayStreamEx( stream_music3, strm[stream_music3], NULL, TRUE); - FSOUND_SetPaused(channels[stream_music3], FALSE); - FSOUND_SetVolume(channels[stream_music3], 256); - - gameon=0; - mainmenu=12; - accountcampaignchoicesmade[accountactive]=0; - accountcampaignscore[accountactive]=0; - accountcampaigntime[accountactive]=0; - - float gLoc[3]={0,0,0}; - float vel[3]={0,0,0}; - FSOUND_Sample_SetMinMaxDistance(samp[fireendsound], 9999.0f, 99999.0f); - PlaySoundEx( fireendsound, samp[fireendsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[fireendsound], gLoc, vel); - FSOUND_SetVolume(channels[fireendsound], 256); - FSOUND_SetPaused(channels[fireendsound], FALSE); - FSOUND_Sample_SetMinMaxDistance(samp[fireendsound], 8.0f, 2000.0f); - - flashr=1; - flashg=0; - flashb=0; - flashamount=1; - flashdelay=1; - } - - if(endgame==2){ - accountcampaignchoicesmade[accountactive]=0; - accountcampaignscore[accountactive]=0; - accountcampaigntime[accountactive]=0; - endgame=0; - } - - if(Button()&&!oldbutton&&selected==1){ - float gLoc[3]={0,0,0}; - float vel[3]={0,0,0}; - FSOUND_Sample_SetMinMaxDistance(samp[firestartsound], 9999.0f, 99999.0f); - PlaySoundEx( firestartsound, samp[firestartsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[firestartsound], gLoc, vel); - FSOUND_SetVolume(channels[firestartsound], 256); - FSOUND_SetPaused(channels[firestartsound], FALSE); - FSOUND_Sample_SetMinMaxDistance(samp[firestartsound], 8.0f, 2000.0f); - - flashr=1; - flashg=0; - flashb=0; - flashamount=1; - flashdelay=1; - - startbonustotal=0; - - loading=2; - loadtime=0; - targetlevel=-1; - if(firstload)TickOnceAfter(); - if(!firstload)LoadStuff(); - else { - Loadlevel(-1); - } - - mainmenu=0; - gameon=1; - FSOUND_SetPaused(channels[stream_music3], TRUE); - } - if(Button()&&!oldbutton&&selected-7>=accountcampaignchoicesmade[accountactive]){//selected>=7&&(selected-7<=campaignnumchoices)){ - float gLoc[3]={0,0,0}; - float vel[3]={0,0,0}; - FSOUND_Sample_SetMinMaxDistance(samp[firestartsound], 9999.0f, 99999.0f); - PlaySoundEx( firestartsound, samp[firestartsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[firestartsound], gLoc, vel); - FSOUND_SetVolume(channels[firestartsound], 256); - FSOUND_SetPaused(channels[firestartsound], FALSE); - FSOUND_Sample_SetMinMaxDistance(samp[firestartsound], 8.0f, 2000.0f); - - flashr=1; - flashg=0; - flashb=0; - flashamount=1; - flashdelay=1; - - startbonustotal=0; - - loading=2; - loadtime=0; - targetlevel=7; - if(firstload)TickOnceAfter(); - if(!firstload)LoadStuff(); - //else { - for(i=0;i<255;i++){ - mapname[i]='\0'; - } - mapname[0]=':'; - mapname[1]='D'; - mapname[2]='a'; - mapname[3]='t'; - mapname[4]='a'; - mapname[5]=':'; - mapname[6]='M'; - mapname[7]='a'; - mapname[8]='p'; - mapname[9]='s'; - mapname[10]=':'; - strcat(mapname,campaignmapname[campaignchoicewhich[selected-7-accountcampaignchoicesmade[accountactive]]]); - whichchoice=selected-7-accountcampaignchoicesmade[accountactive]; - visibleloading=1; - stillloading=1; - Loadlevel(mapname); - //Loadlevel(campaignmapname[levelorder[selected-7]]); - //} - campaign=1; - mainmenu=0; - gameon=1; - FSOUND_SetPaused(channels[stream_music3], TRUE); - } - if(Button()&&!oldbutton&&selected==4){ - float gLoc[3]={0,0,0}; - float vel[3]={0,0,0}; - FSOUND_Sample_SetMinMaxDistance(samp[fireendsound], 9999.0f, 99999.0f); - PlaySoundEx( fireendsound, samp[fireendsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[fireendsound], gLoc, vel); - FSOUND_SetVolume(channels[fireendsound], 256); - FSOUND_SetPaused(channels[fireendsound], FALSE); - FSOUND_Sample_SetMinMaxDistance(samp[fireendsound], 8.0f, 2000.0f); - - flashr=1; - flashg=0; - flashb=0; - flashamount=1; - flashdelay=1; - - if(mainmenu==5&&gameon)mainmenu=2; - if(mainmenu==5&&!gameon)mainmenu=1; - } - if(Button()&&!oldbutton&&selected==5){ - float gLoc[3]={0,0,0}; - float vel[3]={0,0,0}; - FSOUND_Sample_SetMinMaxDistance(samp[fireendsound], 9999.0f, 99999.0f); - PlaySoundEx( fireendsound, samp[fireendsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[fireendsound], gLoc, vel); - FSOUND_SetVolume(channels[fireendsound], 256); - FSOUND_SetPaused(channels[fireendsound], FALSE); - FSOUND_Sample_SetMinMaxDistance(samp[fireendsound], 8.0f, 2000.0f); - - flashr=1; - flashg=0; - flashb=0; - flashamount=1; - flashdelay=1; - - mainmenu=7; - } - if(Button()&&!oldbutton&&selected==3){ - float gLoc[3]={0,0,0}; - float vel[3]={0,0,0}; - FSOUND_Sample_SetMinMaxDistance(samp[firestartsound], 9999.0f, 99999.0f); - PlaySoundEx( firestartsound, samp[firestartsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[firestartsound], gLoc, vel); - FSOUND_SetVolume(channels[firestartsound], 256); - FSOUND_SetPaused(channels[firestartsound], FALSE); - FSOUND_Sample_SetMinMaxDistance(samp[firestartsound], 8.0f, 2000.0f); - - flashr=1; - flashg=0; - flashb=0; - flashamount=1; - flashdelay=1; - - mainmenu=6; - } - if(Button()&&!oldbutton&&selected==2){ - float gLoc[3]={0,0,0}; - float vel[3]={0,0,0}; - FSOUND_Sample_SetMinMaxDistance(samp[firestartsound], 9999.0f, 99999.0f); - PlaySoundEx( firestartsound, samp[firestartsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[firestartsound], gLoc, vel); - FSOUND_SetVolume(channels[firestartsound], 256); - FSOUND_SetPaused(channels[firestartsound], FALSE); - FSOUND_Sample_SetMinMaxDistance(samp[firestartsound], 8.0f, 2000.0f); - - flashr=1; - flashg=0; - flashb=0; - flashamount=1; - flashdelay=1; - - mainmenu=9; - } - if(Button())oldbutton=1; - else oldbutton=0; - } - if(mainmenu==9){ - if(Button()&&!oldbutton&&selected=0&&selected<=accountprogress[accountactive]){ - float gLoc[3]={0,0,0}; - float vel[3]={0,0,0}; - FSOUND_Sample_SetMinMaxDistance(samp[firestartsound], 9999.0f, 99999.0f); - PlaySoundEx( firestartsound, samp[firestartsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[firestartsound], gLoc, vel); - FSOUND_SetVolume(channels[firestartsound], 256); - FSOUND_SetPaused(channels[firestartsound], FALSE); - FSOUND_Sample_SetMinMaxDistance(samp[firestartsound], 8.0f, 2000.0f); - - flashr=1; - flashg=0; - flashb=0; - flashamount=1; - flashdelay=1; - - startbonustotal=0; - - loading=2; - loadtime=0; - targetlevel=selected; - if(firstload)TickOnceAfter(); - if(!firstload)LoadStuff(); - else { - Loadlevel(selected); - } - campaign=0; - - mainmenu=0; - gameon=1; - FSOUND_SetPaused(channels[stream_music3], TRUE); - } - if(Button()&&!oldbutton&&selected==numchallengelevels){ - float gLoc[3]={0,0,0}; - float vel[3]={0,0,0}; - FSOUND_Sample_SetMinMaxDistance(samp[fireendsound], 9999.0f, 99999.0f); - PlaySoundEx( fireendsound, samp[fireendsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[fireendsound], gLoc, vel); - FSOUND_SetVolume(channels[fireendsound], 256); - FSOUND_SetPaused(channels[fireendsound], FALSE); - FSOUND_Sample_SetMinMaxDistance(samp[fireendsound], 8.0f, 2000.0f); - - flashr=1; - flashg=0; - flashb=0; - flashamount=1; - flashdelay=1; - - mainmenu=5; - } - if(Button())oldbutton=1; - else oldbutton=0; - } - if(mainmenu==11){ - if(Button()&&!oldbutton&&selected=0&&selected<=accountprogress[accountactive]){ - float gLoc[3]={0,0,0}; - float vel[3]={0,0,0}; - FSOUND_Sample_SetMinMaxDistance(samp[firestartsound], 9999.0f, 99999.0f); - PlaySoundEx( firestartsound, samp[firestartsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[firestartsound], gLoc, vel); - FSOUND_SetVolume(channels[firestartsound], 256); - FSOUND_SetPaused(channels[firestartsound], FALSE); - FSOUND_Sample_SetMinMaxDistance(samp[firestartsound], 8.0f, 2000.0f); - - flashr=1; - flashg=0; - flashb=0; - flashamount=1; - flashdelay=1; - - startbonustotal=0; - - loading=2; - loadtime=0; - targetlevel=selected; - if(firstload)TickOnceAfter(); - if(!firstload)LoadStuff(); - else { - Loadlevel(selected); - } - campaign=0; - - mainmenu=0; - gameon=1; - FSOUND_SetPaused(channels[stream_music3], TRUE); - } - if(Button()&&!oldbutton&&selected==numchallengelevels){ - float gLoc[3]={0,0,0}; - float vel[3]={0,0,0}; - FSOUND_Sample_SetMinMaxDistance(samp[fireendsound], 9999.0f, 99999.0f); - PlaySoundEx( fireendsound, samp[fireendsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[fireendsound], gLoc, vel); - FSOUND_SetVolume(channels[fireendsound], 256); - FSOUND_SetPaused(channels[fireendsound], FALSE); - FSOUND_Sample_SetMinMaxDistance(samp[fireendsound], 8.0f, 2000.0f); - - flashr=1; - flashg=0; - flashb=0; - flashamount=1; - flashdelay=1; - - mainmenu=5; - } - if(Button())oldbutton=1; - else oldbutton=0; - } - if(mainmenu==10){ - endgame=2; - if(Button()&&!oldbutton&&selected==3){ - float gLoc[3]={0,0,0}; - float vel[3]={0,0,0}; - FSOUND_Sample_SetMinMaxDistance(samp[fireendsound], 9999.0f, 99999.0f); - PlaySoundEx( fireendsound, samp[fireendsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[fireendsound], gLoc, vel); - FSOUND_SetVolume(channels[fireendsound], 256); - FSOUND_SetPaused(channels[fireendsound], FALSE); - FSOUND_Sample_SetMinMaxDistance(samp[fireendsound], 8.0f, 2000.0f); - - flashr=1; - flashg=0; - flashb=0; - flashamount=1; - flashdelay=1; - - mainmenu=5; - } - if(Button())oldbutton=1; - else oldbutton=0; - } - - if(mainmenu==15||mainmenu==16){ - if(Button()&&!oldbutton&&selected==1){ - float gLoc[3]={0,0,0}; - float vel[3]={0,0,0}; - FSOUND_Sample_SetMinMaxDistance(samp[fireendsound], 9999.0f, 99999.0f); - PlaySoundEx( fireendsound, samp[fireendsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[fireendsound], gLoc, vel); - FSOUND_SetVolume(channels[fireendsound], 256); - FSOUND_SetPaused(channels[fireendsound], FALSE); - FSOUND_Sample_SetMinMaxDistance(samp[fireendsound], 8.0f, 2000.0f); - - flashr=1; - flashg=0; - flashb=0; - flashamount=1; - flashdelay=1; - - if(mainmenu==15)mainmenu=5; - else mainmenu=12; - } - if(Button())oldbutton=1; - else oldbutton=0; - } - - if(mainmenu==12){ - endgame=2; - if(Button()&&!oldbutton&&selected==3){ - if(tryquit)quit=1; - float gLoc[3]={0,0,0}; - float vel[3]={0,0,0}; - FSOUND_Sample_SetMinMaxDistance(samp[fireendsound], 9999.0f, 99999.0f); - PlaySoundEx( fireendsound, samp[fireendsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[fireendsound], gLoc, vel); - FSOUND_SetVolume(channels[fireendsound], 256); - FSOUND_SetPaused(channels[fireendsound], FALSE); - FSOUND_Sample_SetMinMaxDistance(samp[fireendsound], 8.0f, 2000.0f); - - flashr=1; - flashg=0; - flashb=0; - flashamount=1; - flashdelay=1; - - mainmenu=5; - } - - if(Button()&&!oldbutton&&selected==4){ - registernow=1; - quit=1; - float gLoc[3]={0,0,0}; - float vel[3]={0,0,0}; - FSOUND_Sample_SetMinMaxDistance(samp[fireendsound], 9999.0f, 99999.0f); - PlaySoundEx( fireendsound, samp[fireendsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[fireendsound], gLoc, vel); - FSOUND_SetVolume(channels[fireendsound], 256); - FSOUND_SetPaused(channels[fireendsound], FALSE); - FSOUND_Sample_SetMinMaxDistance(samp[fireendsound], 8.0f, 2000.0f); - - flashr=1; - flashg=0; - flashb=0; - flashamount=1; - flashdelay=1; - } - - - if(Button()&&!oldbutton&&selected==5){ - tryquit=0; - float gLoc[3]={0,0,0}; - float vel[3]={0,0,0}; - FSOUND_Sample_SetMinMaxDistance(samp[fireendsound], 9999.0f, 99999.0f); - PlaySoundEx( fireendsound, samp[fireendsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[fireendsound], gLoc, vel); - FSOUND_SetVolume(channels[fireendsound], 256); - FSOUND_SetPaused(channels[fireendsound], FALSE); - FSOUND_Sample_SetMinMaxDistance(samp[fireendsound], 8.0f, 2000.0f); - - flashr=1; - flashg=0; - flashb=0; - flashamount=1; - flashdelay=1; - - mainmenu=13; - } - if(Button())oldbutton=1; - else oldbutton=0; - } - if(mainmenu==6){ - if(Button()&&!oldbutton&&selected!=-1){ - float gLoc[3]={0,0,0}; - float vel[3]={0,0,0}; - FSOUND_Sample_SetMinMaxDistance(samp[firestartsound], 9999.0f, 99999.0f); - PlaySoundEx( firestartsound, samp[firestartsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[firestartsound], gLoc, vel); - FSOUND_SetVolume(channels[firestartsound], 256); - FSOUND_SetPaused(channels[firestartsound], FALSE); - FSOUND_Sample_SetMinMaxDistance(samp[firestartsound], 8.0f, 2000.0f); - } - if(Button()&&!oldbutton&&selected==1){ - float gLoc[3]={0,0,0}; - float vel[3]={0,0,0}; - FSOUND_Sample_SetMinMaxDistance(samp[fireendsound], 9999.0f, 99999.0f); - PlaySoundEx( fireendsound, samp[fireendsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[fireendsound], gLoc, vel); - FSOUND_SetVolume(channels[fireendsound], 256); - FSOUND_SetPaused(channels[fireendsound], FALSE); - FSOUND_Sample_SetMinMaxDistance(samp[fireendsound], 8.0f, 2000.0f); - - flashr=1; - flashg=0; - flashb=0; - flashamount=1; - flashdelay=1; - - for(i=accountactive;i0&&selected2)newdetail=detail; - if(newdetail<0)newdetail=detail; - if(newscreenwidth>3000)newscreenwidth=screenwidth; - if(newscreenwidth<0)newscreenwidth=screenwidth; - if(newscreenheight>3000)newscreenheight=screenheight; - if(newscreenheight<0)newscreenheight=screenheight; + if(environment==grassyenvironment){ + light.color[0]=.95; + light.color[1]=.95; + light.color[2]=1; + light.ambient[0]=.4; + light.ambient[1]=.4; + light.ambient[2]=.44; + } + if(!skyboxtexture){ + light.color[0]=1; + light.color[1]=1; + light.color[2]=1; + light.ambient[0]=.4; + light.ambient[1]=.4; + light.ambient[2]=.4; + } + float average; + average=(skyboxlightr+skyboxlightg+skyboxlightb)/3; + light.color[0]*=(skyboxlightr+average)/2; + light.color[1]*=(skyboxlightg+average)/2; + light.color[2]*=(skyboxlightb+average)/2; + light.ambient[0]=light.ambient[0]*(skyboxlightr+average)/2*1; + light.ambient[1]=light.ambient[1]*(skyboxlightg+average)/2*1; + light.ambient[2]=light.ambient[2]*(skyboxlightb+average)/2*1; + /* + light.ambient[0]=0; + light.ambient[1]=0; + light.ambient[2]=0; */ +} - //ofstream opstream(":Data:config.txt"); - ofstream opstream("./Data/config.txt"); - opstream << "Screenwidth:\n"; - opstream << newscreenwidth; - opstream << "\nScreenheight:\n"; - opstream << newscreenheight; - opstream << "\nMouse sensitivity:\n"; - opstream << usermousesensitivity; - opstream << "\nBlur(0,1):\n"; - opstream << ismotionblur; - opstream << "\nOverall Detail(0,1,2) higher=better:\n"; - opstream << newdetail; - opstream << "\nFloating jump:\n"; - opstream << floatjump; - opstream << "\nMouse jump:\n"; - opstream << mousejump; - opstream << "\nAmbient sound:\n"; - opstream << ambientsound; - opstream << "\nBlood (0,1,2):\n"; - opstream << bloodtoggle; - opstream << "\nAuto slomo:\n"; - opstream << autoslomo; - opstream << "\nFoliage:\n"; - opstream << foliage; - opstream << "\nMusic:\n"; - opstream << musictoggle; - opstream << "\nTrilinear:\n"; - opstream << trilinear; - opstream << "\nDecals(shadows,blood puddles,etc):\n"; - opstream << decals; - opstream << "\nInvert mouse:\n"; - opstream << invertmouse; - opstream << "\nGamespeed:\n"; - if(oldgamespeed==0)oldgamespeed=1; - opstream << oldgamespeed; - opstream << "\nDifficulty(0,1,2) higher=harder:\n"; - opstream << difficulty; - opstream << "\nDamage effects(blackout, doublevision):\n"; - opstream << damageeffects; - opstream << "\nText:\n"; - opstream << texttoggle; - opstream << "\nDebug:\n"; - opstream << debugmode; - opstream << "\nVBL Sync:\n"; - opstream << vblsync; - opstream << "\nShow Points:\n"; - opstream << showpoints; - opstream << "\nAlways Blur:\n"; - opstream << alwaysblur; - opstream << "\nImmediate mode (turn on on G5):\n"; - opstream << immediate; - opstream << "\nVelocity blur:\n"; - opstream << velocityblur; - opstream << "\nVolume:\n"; - opstream << volume; - opstream << "\nForward key:\n"; - opstream << KeyToChar(forwardkey); - opstream << "\nBack key:\n"; - opstream << KeyToChar(backkey); - opstream << "\nLeft key:\n"; - opstream << KeyToChar(leftkey); - opstream << "\nRight key:\n"; - opstream << KeyToChar(rightkey); - opstream << "\nJump key:\n"; - opstream << KeyToChar(jumpkey); - opstream << "\nCrouch key:\n"; - opstream << KeyToChar(crouchkey); - opstream << "\nDraw key:\n"; - opstream << KeyToChar(drawkey); - opstream << "\nThrow key:\n"; - opstream << KeyToChar(throwkey); - opstream << "\nAttack key:\n"; - opstream << KeyToChar(attackkey); - opstream << "\nChat key:\n"; - opstream << KeyToChar(chatkey); - opstream.close(); - } - } +int Game::findPathDist(int start,int end){ + int i,j,k,smallestcount,count,connected; + int last,last2,last3,last4; + int closest; - if(mainmenu==1||mainmenu==2){ - if(loaddistrib>4)transition+=multiplier/8; - if(transition>1){ - transition=0; - anim++; - if(anim>4)anim=0; - loaddistrib=0; - } - } - FSOUND_SetFrequency(channels[stream_music3], 22050); - - if(entername||mainmenu==13||mainmenu==14){ - for(i=0;i<140;i++){ - if(IsKeyDown(theKeyMap, i)){ - togglekeydelay[i]+=multiplier; - if(togglekeydelay[i]>.4){ - togglekey[i]=0; - togglekeydelay[i]=.36; - } - if(!togglekey[i]){ - if(KeyToSingleChar(i)!='\0'&&displaychars[0]<60){ - for(j=255;j>=displayselected+1;j--){ - displaytext[0][j]=displaytext[0][j-1]; - } - displaytext[0][displayselected]=KeyToSingleChar(i); - if(IsKeyDown(theKeyMap, MAC_SHIFT_KEY))displaytext[0][displayselected]=Shift(displaytext[0][displayselected]); - displayselected++; - displaychars[0]++; - } - if(i==MAC_DELETE_KEY&&displayselected!=0){ - for(j=displayselected-1;j<255;j++){ - displaytext[0][j]=displaytext[0][j+1]; - } - displaytext[0][255]=' '; - displayselected--; - displaychars[0]--; - } - if(i==MAC_ARROW_LEFT_KEY&&displayselected!=0){ - displayselected--; - } - if(i==MAC_ARROW_RIGHT_KEY&&displayselected999)numchars+=4; - else if(num1/10000>99)numchars+=3; - else if(num1/10000>9)numchars+=2; - else numchars+=1; - if(num1%10000>999)numchars+=4; - else if(num1%10000>99)numchars+=3; - else if(num1%10000>9)numchars+=2; - else numchars+=1; - if(num2/10000>999)numchars+=4; - else if(num2/10000>99)numchars+=3; - else if(num2/10000>9)numchars+=2; - else numchars+=1; - if(num2%10000>999)numchars+=4; - else if(num2%10000>99)numchars+=3; - else if(num2%10000>9)numchars+=2; - else numchars+=1; - - //numchars=12; - - for(j=0;j0) - { - for(j=0;j.4){ - togglekey[i]=0; - togglekeydelay[i]=.36; - } - if(!togglekey[i]){ - if(KeyToSingleChar(i)!='\0'&&displaychars[0]<60){ - for(j=255;j>=displayselected+1;j--){ - displaytext[0][j]=displaytext[0][j-1]; - } - displaytext[0][displayselected]=KeyToSingleChar(i); - if(IsKeyDown(theKeyMap, MAC_SHIFT_KEY))displaytext[0][displayselected]=Shift(displaytext[0][displayselected]); - displayselected++; - displaychars[0]++; - } - if(i==MAC_DELETE_KEY&&displayselected!=0){ - for(j=displayselected-1;j<255;j++){ - displaytext[0][j]=displaytext[0][j+1]; - } - displaytext[0][255]=' '; - displayselected--; - displaychars[0]--; - } - if(i==MAC_ARROW_LEFT_KEY&&displayselected!=0){ - displayselected--; - } - if(i==MAC_ARROW_RIGHT_KEY&&displayselectedendpoint.x)minx=endpoint.x; + miny=startpoint.y; + if(miny>endpoint.y)miny=endpoint.y; + minz=startpoint.z; + if(minz>endpoint.z)minz=endpoint.z; - if(IsKeyDown(theKeyMap, MAC_V_KEY)&&!freezetogglekeydown&&debugmode){ - freeze=1-freeze; - if(freeze){ - FSOUND_SetFrequency(FSOUND_ALL, 0.001); - } - freezetogglekeydown=1; - } + maxx=startpoint.x; + if(maxxminx-objects.model[i].boundingsphereradius&&objects.position[i].xminy-objects.model[i].boundingsphereradius&&objects.position[i].yminz-objects.model[i].boundingsphereradius&&objects.position[i].z.4){ - togglekey[i]=0; - togglekeydelay[i]=.36; - } - if(!togglekey[i]){ - if(KeyToSingleChar(i)!='\0'&&consolechars[0]<255){ - for(j=255;j>=consoleselected+1;j--){ - consoletext[0][j]=consoletext[0][j-1]; - } - consoletext[0][consoleselected]=KeyToSingleChar(i); - if(IsKeyDown(theKeyMap, MAC_SHIFT_KEY))consoletext[0][consoleselected]=Shift(consoletext[0][consoleselected]); - consoleselected++; - consolechars[0]++; - } - else if(i==MAC_ENTER_KEY){ - for(j=255;j>=consoleselected+1;j--){ - consoletext[0][j]=consoletext[0][j-1]; - } - consoletext[0][consoleselected]='\n'; - consoleselected++; - consolechars[0]++; - } - if(i==MAC_DELETE_KEY&&consoleselected!=0){ - for(j=consoleselected-1;j<255;j++){ - consoletext[0][j]=consoletext[0][j+1]; - } - consoletext[0][255]=' '; - consoleselected--; - consolechars[0]--; - } - if(i==MAC_ARROW_UP_KEY){ - if(archiveselected<14)archiveselected++; - for(j=0;j<255;j++){ - consolechars[0]=consolechars[archiveselected]; - consoletext[0][j]=consoletext[archiveselected][j]; - consoleselected=consolechars[0]; - } - } - if(i==MAC_ARROW_DOWN_KEY){ - if(archiveselected>0)archiveselected--; - for(j=0;j<255;j++){ - consolechars[0]=consolechars[archiveselected]; - consoletext[0][j]=consoletext[archiveselected][j]; - consoleselected=consolechars[0]; - } - } - if(i==MAC_ARROW_LEFT_KEY&&consoleselected!=0){ - consoleselected--; - } - if(i==MAC_ARROW_RIGHT_KEY&&consoleselected32)numchars=32; - for(j=5;j0){ - for(k=14;k>=1;k--){ - for(j=0;j<255;j++){ - consoletext[k][j]=consoletext[k-1][j]; - } - consolechars[k]=consolechars[k-1]; - } - for(j=0;j<255;j++){ - consoletext[0][j]=' '; - } - if(v!=-4994)sprintf (consoletext[0], "Error #%d!!!",v); - else sprintf (consoletext[0], "Could not open connection"); - - consolechars[0]=255; - consoleselected=0; - } - } - else - { - donesomething=1; - PlaySoundEx( consolesuccesssound, samp[consolesuccesssound], NULL, TRUE); - FSOUND_SetVolume(channels[consolesuccesssound], 256); - FSOUND_SetPaused(channels[consolesuccesssound], FALSE); - - if(consolechars[0]>0){ - for(k=14;k>=1;k--){ - for(j=0;j<255;j++){ - consoletext[k][j]=consoletext[k-1][j]; - } - consolechars[k]=consolechars[k-1]; - } - for(j=0;j<255;j++){ - consoletext[0][j]=' '; - } - sprintf (consoletext[0], "Connected to %s",theIPAddress); - - consolechars[0]=255; - consoleselected=0; - } - } - } - - if(Compare(consoletext[0],"host ",0,4)){ - unsigned char gameNameStr[32], playerNameStr[32]; - char gameName[32];//, playerName[32]; - NMUInt32 port; - int players; - int v; - - port = 25710; - players =4; - - strcpy(gameName, "Host's game"); - strcpy(playerName, "Host"); - GameC2PStr( gameName, gameNameStr ); - GameC2PStr( playerName, playerNameStr ); - - v=NetworkStartServer( (NMUInt16)port, players, gameNameStr, playerNameStr ); - if(v) - { - if(consolechars[0]>0){ - for(k=14;k>=1;k--){ - for(j=0;j<255;j++){ - consoletext[k][j]=consoletext[k-1][j]; - } - consolechars[k]=consolechars[k-1]; - } - for(j=0;j<255;j++){ - consoletext[0][j]=' '; - } - sprintf (consoletext[0], "Error #%d!!!",v); - - consolechars[0]=255; - consoleselected=0; - } - } - else - { - donesomething=1; - PlaySoundEx( consolesuccesssound, samp[consolesuccesssound], NULL, TRUE); - FSOUND_SetVolume(channels[consolesuccesssound], 256); - FSOUND_SetPaused(channels[consolesuccesssound], FALSE); - - if(consolechars[0]>0){ - for(k=14;k>=1;k--){ - for(j=0;j<255;j++){ - consoletext[k][j]=consoletext[k-1][j]; - } - consolechars[k]=consolechars[k-1]; - } - for(j=0;j<255;j++){ - consoletext[0][j]=' '; - } - sprintf (consoletext[0], "Game hosted"); - - consolechars[0]=255; - consoleselected=0; - } - } - } - */ - if(Compare(consoletext[0],"save ",0,4)){ - mapname[0]=':'; - mapname[1]='D'; - mapname[2]='a'; - mapname[3]='t'; - mapname[4]='a'; - mapname[5]=':'; - mapname[6]='M'; - mapname[7]='a'; - mapname[8]='p'; - mapname[9]='s'; - mapname[10]=':'; - for(j=5;j0&&player[0].num_weapons<5) - for(j=0;jendpoint.x)minx=endpoint.x; + miny=startpoint.y; + if(miny>endpoint.y)miny=endpoint.y; + minz=startpoint.z; + if(minz>endpoint.z)minz=endpoint.z; - if(objects.numobjects) - for(k=0;k1&&numplayers0&&player[j].num_weapons<5) - for(k=0;kminx-objects.model[what].boundingsphereradius&&objects.position[what].xminy-objects.model[what].boundingsphereradius&&objects.position[what].yminz-objects.model[what].boundingsphereradius&&objects.position[what].z0&&player[0].num_weapons<5) - for(j=0;j1&&numplayers0&&player[j].num_weapons<5) - for(k=0;k1)texdetail=4; + skybox.load( ":Data:Textures:Skybox(snow):Front.jpg", + ":Data:Textures:Skybox(snow):Left.jpg", + ":Data:Textures:Skybox(snow):Back.jpg", + ":Data:Textures:Skybox(snow):Right.jpg", + ":Data:Textures:Skybox(snow):Up.jpg", + ":Data:Textures:Skybox(snow):Down.jpg", + ":Data:Textures:Skybox(snow):Cloud.jpg", + ":Data:Textures:Skybox(snow):Reflect.jpg"); - fclose(tfile); - donesomething=1;*/ - } - /* - if(Compare(consoletext[0],"save ",0,4)){ - mapname[0]=':'; - mapname[1]='D'; - mapname[2]='a'; - mapname[3]='t'; - mapname[4]='a'; - mapname[5]=':'; - mapname[6]='M'; - mapname[7]='a'; - mapname[8]='p'; - mapname[9]='s'; - mapname[10]=':'; - for(j=5;j0&&player[0].num_weapons<5) - for(j=0;j1&&numplayers0&&player[j].num_weapons<5) - for(k=0;k1)texdetail=4; + skybox.load( ":Data:Textures:Skybox(sand):Front.jpg", + ":Data:Textures:Skybox(sand):Left.jpg", + ":Data:Textures:Skybox(sand):Back.jpg", + ":Data:Textures:Skybox(sand):Right.jpg", + ":Data:Textures:Skybox(sand):Up.jpg", + ":Data:Textures:Skybox(sand):Down.jpg", + ":Data:Textures:Skybox(sand):Cloud.jpg", + ":Data:Textures:Skybox(sand):Reflect.jpg"); - fadestart=atof(mapname); - donesomething=1; - } - if(Compare(consoletext[0],"power ",0,5)||Compare(consoletext[0],"Power ",0,5)){ - for(j=6;j1)texdetail=4; + skybox.load( ":Data:Textures:Skybox(grass):Front.jpg", + ":Data:Textures:Skybox(grass):Left.jpg", + ":Data:Textures:Skybox(grass):Back.jpg", + ":Data:Textures:Skybox(grass):Right.jpg", + ":Data:Textures:Skybox(grass):Up.jpg", + ":Data:Textures:Skybox(grass):Down.jpg", + ":Data:Textures:Skybox(grass):Cloud.jpg", + ":Data:Textures:Skybox(grass):Reflect.jpg"); - player[0].scale=atof(mapname)*.2; - donesomething=1; - } - if(Compare(consoletext[0],"sizenear ",0,8)||Compare(consoletext[0],"Sizenear ",0,8)){ - int closest=-1; - float closestdist=-1; - float distance; - if(numplayers>1) - for(i=1;i1) - for(i=1;igetDifficulty(); - if(Compare(consoletext[0],"tintb ",0,5)||Compare(consoletext[0],"Tintb ",0,5)){ - for(j=6;j=15)funpackf(tfile, "Bi", &indemo); + else indemo=0; + if(mapvers>=5)funpackf(tfile, "Bi", &maptype); + else maptype=mapkilleveryone; + if(mapvers>=6)funpackf(tfile, "Bi", &hostile); + else hostile=1; + if(mapvers>=4)funpackf(tfile, "Bf Bf", &viewdistance, &fadestart); + else + { + viewdistance=100; + fadestart=.6; + } + if(mapvers>=2)funpackf(tfile, "Bb Bf Bf Bf", &skyboxtexture, &skyboxr, &skyboxg, &skyboxb); + else + { + skyboxtexture=1; + skyboxr=1; + skyboxg=1; + skyboxb=1; + } + if(mapvers>=10)funpackf(tfile, "Bf Bf Bf", &skyboxlightr, &skyboxlightg, &skyboxlightb); + else + { + skyboxlightr=skyboxr; + skyboxlightg=skyboxg; + skyboxlightb=skyboxb; + } + if(!stealthloading)funpackf(tfile, "Bf Bf Bf Bf Bf Bi", &player[0].coords.x,&player[0].coords.y,&player[0].coords.z,&player[0].rotation,&player[0].targetrotation, &player[0].num_weapons); + if(stealthloading)funpackf(tfile, "Bf Bf Bf Bf Bf Bi", &lamefloat,&lamefloat,&lamefloat,&lamefloat,&lamefloat, &player[0].num_weapons); + player[0].originalcoords=player[0].coords; + if(player[0].num_weapons>0&&player[0].num_weapons<5) + { + for(j=0;j=9) + { + funpackf(tfile, "Bi Bi", &player[0].whichskin, &player[0].creature); + } + else + { + player[0].whichskin=0; + player[0].creature=rabbittype; + } - donesomething=1; - } + for(i=0;i=8) + { + funpackf(tfile, "Bi", &numdialogues); + if(numdialogues) + { + for(k=0;k128||templength<=0)templength=128; + for(m=0;m64||templength<=0)templength=64; + for(m=0;m=7) + { + funpackf(tfile, "Bi", &numhotspots); + if(numhotspots) + { + for(i=0;imaxdistance) + { + whichclosest=i; + maxdistance=tempdist; + } + } + objects.radius=fast_sqrt(maxdistance); + } - if(Compare(consoletext[0],"mapkillmost ",0,11)){ - maptype=mapkillmost; + if(visibleloading){loadscreencolor=4; LoadingScreen();} + //mapcenter=objects.center; + //mapradius=objects.radius; - donesomething=1; + funpackf(tfile, "Bi", &numplayers); + int howmanyremoved=0; + bool removeanother=0; + if(numplayers>1&&numplayers=5)funpackf(tfile, "Bi", &player[i-howmanyremoved].howactive); + else player[i-howmanyremoved].howactive=typeactive; + if(mapvers>=3)funpackf(tfile, "Bf",&player[i-howmanyremoved].scale); + else player[i-howmanyremoved].scale=-1; + if(mapvers>=11)funpackf(tfile, "Bb",&player[i-howmanyremoved].immobile); + else player[i-howmanyremoved].immobile=0; + if(mapvers>=12)funpackf(tfile, "Bf",&player[i-howmanyremoved].rotation); + else player[i-howmanyremoved].rotation=0; + player[i-howmanyremoved].targetrotation=player[i-howmanyremoved].rotation; + if(player[i-howmanyremoved].num_weapons<0||player[i-howmanyremoved].num_weapons>5){ + removeanother=1; + howmanyremoved++; + } + if(!removeanother) + { + if(player[i-howmanyremoved].num_weapons>0&&player[i-howmanyremoved].num_weapons<5) + { + for(j=0;j=5)funpackf(tfile, "Bi", &player[i-howmanyremoved].waypointtype[j]); + else player[i-howmanyremoved].waypointtype[j] = wpkeepwalking; + } - if(Compare(consoletext[0],"hs ",0,2)){ - int startpoint; - int alldone; + funpackf(tfile, "Bi", &player[i-howmanyremoved].waypoint); + if(player[i-howmanyremoved].waypoint>player[i-howmanyremoved].numwaypoints-1)player[i-howmanyremoved].waypoint=0; - hotspot[numhotspots]=player[0].coords; + funpackf(tfile, "Bf Bf Bf", &player[i-howmanyremoved].armorhead, &player[i-howmanyremoved].armorhigh, &player[i-howmanyremoved].armorlow); + funpackf(tfile, "Bf Bf Bf", &player[i-howmanyremoved].protectionhead, &player[i-howmanyremoved].protectionhigh, &player[i-howmanyremoved].protectionlow); + funpackf(tfile, "Bf Bf Bf", &player[i-howmanyremoved].metalhead, &player[i-howmanyremoved].metalhigh, &player[i-howmanyremoved].metallow); + funpackf(tfile, "Bf Bf", &player[i-howmanyremoved].power, &player[i-howmanyremoved].speedmult); - alldone=0; - startpoint=3; - j=startpoint; - while(consoletext[0][j]!='\0'&&consoletext[0][j]!=' '&&!alldone&&j<255){ - mapname[j-startpoint]=consoletext[0][j]; - j++; - if(consoletext[0][j]=='\0')alldone=1; - } - mapname[j-startpoint]='\0'; + if(mapvers>=4)funpackf(tfile, "Bf Bf Bf Bf", &headprop, &bodyprop, &armprop, &legprop); + else + { + headprop=1; + bodyprop=1; + armprop=1; + legprop=1; + } + if(player[i-howmanyremoved].creature==wolftype) + { + player[i-howmanyremoved].proportionhead=1.1*headprop; + player[i-howmanyremoved].proportionbody=1.1*bodyprop; + player[i-howmanyremoved].proportionarms=1.1*armprop; + player[i-howmanyremoved].proportionlegs=1.1*legprop; + } - hotspotsize[numhotspots]=atof(mapname); + if(player[i-howmanyremoved].creature==rabbittype) + { + player[i-howmanyremoved].proportionhead=1.2*headprop; + player[i-howmanyremoved].proportionbody=1.05*bodyprop; + player[i-howmanyremoved].proportionarms=1.00*armprop; + player[i-howmanyremoved].proportionlegs=1.1*legprop; + player[i-howmanyremoved].proportionlegs.y=1.05*legprop; + } - j++; - startpoint=j; - while(consoletext[0][j]!='\0'&&consoletext[0][j]!=' '&&!alldone&&j<255){ - mapname[j-startpoint]=consoletext[0][j]; - j++; - if(consoletext[0][j]=='\0')alldone=1; - } - mapname[j-startpoint]='\0'; + funpackf(tfile, "Bi", &player[i-howmanyremoved].numclothes); + if(player[i-howmanyremoved].numclothes) + { + for(k=0;k30||numpathpoints<0) + numpathpoints=0; + if(numpathpoints) + { + for(j=0;j> numdialogueboxes[numdialogues]; - for(i=0;i> dialogueboxlocation[numdialogues][i]; - ipstream.ignore(256,':'); - ipstream >> dialogueboxcolor[numdialogues][i][0]; - ipstream >> dialogueboxcolor[numdialogues][i][1]; - ipstream >> dialogueboxcolor[numdialogues][i][2]; - ipstream.ignore(256,':'); - ipstream.getline(dialoguename[numdialogues][i],64); - ipstream.ignore(256,':'); - ipstream.ignore(256,' '); - ipstream.getline(dialoguetext[numdialogues][i],128); - for(j=0;j<128;j++){ - if(dialoguetext[numdialogues][i][j]=='\\')dialoguetext[numdialogues][i][j]='\n'; - } - ipstream.ignore(256,':'); - ipstream >> dialogueboxsound[numdialogues][i]; - } + oldlevel=whichlevel; - for(i=0;imaxplayers-1)numplayers=maxplayers-1; + for(i=0;i> numdialogueboxes[whichdi]; - for(i=0;i> dialogueboxlocation[whichdi][i]; - ipstream.ignore(256,':'); - ipstream >> dialogueboxcolor[whichdi][i][0]; - ipstream >> dialogueboxcolor[whichdi][i][1]; - ipstream >> dialogueboxcolor[whichdi][i][2]; - ipstream.ignore(256,':'); - ipstream.getline(dialoguename[whichdi][i],64); - ipstream.ignore(256,':'); - ipstream.ignore(256,' '); - ipstream.getline(dialoguetext[whichdi][i],128); - for(j=0;j<128;j++){ - if(dialoguetext[whichdi][i][j]=='\\')dialoguetext[whichdi][i][j]='\n'; - } - ipstream.ignore(256,':'); - ipstream >> dialogueboxsound[whichdi][i]; - } + player[i].currentanimation=bounceidleanim; + player[i].targetanimation=bounceidleanim; + player[i].currentframe=0; + player[i].targetframe=1; + player[i].target=0; + player[i].speed=1+(float)(Random()%100)/1000; + if(difficulty==0)player[i].speed-=.2; + if(difficulty==1)player[i].speed-=.1; - ipstream.close(); + player[i].velocity=0; + player[i].oldcoords=player[i].coords; + player[i].realoldcoords=player[i].coords; - donesomething=1; - } + player[i].id=i; + player[i].skeleton.id=i; + player[i].updatedelay=0; + player[i].normalsupdatedelay=0; - if(Compare(consoletext[0],"fixtype ",0,7)){ - int startpoint; - int alldone; - int whichdi; - - alldone=0; - startpoint=8; - j=startpoint; - while(consoletext[0][j]!='\0'&&consoletext[0][j]!=' '&&!alldone&&j<255){ - mapname[j-startpoint]=consoletext[0][j]; - j++; - if(consoletext[0][j]=='\0')alldone=1; - } - mapname[j-startpoint]='\0'; - dialoguetype[0]=atoi(mapname); + player[i].aitype=passivetype; + player[i].aitarget=0; + player[i].madskills=0; - startpoint=j+1; + if(i==0) + { + player[i].proportionhead=1.2; + player[i].proportionbody=1.05; + player[i].proportionarms=1.00; + player[i].proportionlegs=1.1; + player[i].proportionlegs.y=1.05; + } + player[i].headless=0; + player[i].currentoffset=0; + player[i].targetoffset=0; + /*player[i].armorhead=1; + player[i].armorhigh=1; + player[i].armorlow=1; + player[i].protectionhead=1; + player[i].protectionhigh=1; + player[i].protectionlow=1; + player[i].metalhead=1; + player[i].metalhigh=1; + player[i].metallow=1; + player[i].power=1; + player[i].speedmult=1;*/ - donesomething=1; - } + player[i].damagetolerance=200; + if(player[i].creature==wolftype) + { + /*player[i].proportionhead=1.1; + player[i].proportionbody=1.1; + player[i].proportionarms=1.1; + player[i].proportionlegs=1.1; + player[i].proportionlegs.y=1.1;*/ + if(i==0||player[i].scale<0)player[i].scale=.23; - if(Compare(consoletext[0],"fixrotation ",0,11)){ - participantrotation[whichdialogue][participantfocus[whichdialogue][indialogue]]=player[participantfocus[whichdialogue][indialogue]].rotation; + player[i].damagetolerance=300; + } - donesomething=1; - } + if(visibleloading){loadscreencolor=4; LoadingScreen();} + if(cellophane) + { + player[i].proportionhead.z=0; + player[i].proportionbody.z=0; + player[i].proportionarms.z=0; + player[i].proportionlegs.z=0; + } - if(Compare(consoletext[0],"ddialogue ",0,9)){ - numdialogues--; - if(numdialogues<0)numdialogues=0; + player[i].tempanimation.Load((char *)"Tempanim",0,0); - donesomething=1; - } + player[i].headmorphness=0; + player[i].targetheadmorphness=1; + player[i].headmorphstart=0; + player[i].headmorphend=0; - if(Compare(consoletext[0],"immobile ",0,8)){ - player[0].immobile=1; - donesomething=1; - } + player[i].pausetime=0; - if(Compare(consoletext[0],"mobile ",0,6)){ - player[0].immobile=0; - donesomething=1; - } + player[i].dead=0; + player[i].jumppower=5; + player[i].damage=0; + player[i].permanentdamage=0; + player[i].superpermanentdamage=0; - if(Compare(consoletext[0],"play ",0,4)){ - int startpoint; - int alldone; - - alldone=0; - startpoint=5; - j=startpoint; - while(consoletext[0][j]!='\0'&&consoletext[0][j]!=' '&&!alldone&&j<255){ - mapname[j-startpoint]=consoletext[0][j]; - j++; - if(consoletext[0][j]=='\0')alldone=1; - } - mapname[j-startpoint]='\0'; - startpoint=j+1; - - whichdialogue=atoi(mapname); - - if(numdialogues>whichdialogue){ - for(i=0;i0)player[i].immobile=1; - } - donesomething=1; - } + if(!console){ + if(mainmenu&&endgame==1)mainmenu=10; + if( (Input::isKeyDown(SDLK_ESCAPE)||(mainmenu==0&&((Input::isKeyDown(jumpkey)||Input::isKeyDown(SDLK_SPACE)||(campaign)))&&!oldjumpkeydown&&campaign&&winfreeze)) + && !mainmenutogglekeydown + && (!mainmenu||gameon||mainmenu==3||mainmenu==4||mainmenu==5||mainmenu==6||(mainmenu==7&&!entername)||mainmenu==9||mainmenu==10) + ) { // go back + selected=-1; + if(mainmenu==1||mainmenu==2||mainmenu==0){ + if(mainmenu==0&&!winfreeze)mainmenu=2; + else if(mainmenu==0&&winfreeze&&(campaignchoosenext[campaignchoicewhich[whichchoice]])==1)mainmenu=100; + else if(mainmenu==0&&winfreeze){ + + } + else if(mainmenu==1||mainmenu==2)mainmenu=0; + if(mainmenu&&musictoggle){ + if(mainmenu==1||mainmenu==2||mainmenu==100){ + OPENAL_SetFrequency(OPENAL_ALL, 0.001); + PlayStreamEx( stream_music3, samp[stream_music3], NULL, true); + OPENAL_SetPaused(channels[stream_music3], false); + OPENAL_SetVolume(channels[stream_music3], 256); + OPENAL_SetPaused(channels[music1], true); + } + } + if(!mainmenu){ + OPENAL_SetPaused(channels[stream_music3], true); + OPENAL_SetPaused(channels[music1], false); + } + } + if(mainmenu==3){ + fireSound(); - if(Compare(consoletext[0],"default ",0,7)||Compare(consoletext[0],"Default ",0,7)){ - player[0].armorhead=1; - player[0].armorhigh=1; - player[0].armorlow=1; - player[0].protectionhead=1; - player[0].protectionhigh=1; - player[0].protectionlow=1; - player[0].metalhead=1; - player[0].metalhigh=1; - player[0].metallow=1; - player[0].power=1; - player[0].speedmult=1; - player[0].scale=1; + flash(); - if(player[0].creature==wolftype){ - player[0].proportionhead=1.1; - player[0].proportionbody=1.1; - player[0].proportionarms=1.1; - player[0].proportionlegs=1.1; - } + if(newdetail>2)newdetail=detail; + if(newdetail<0)newdetail=detail; + if(newscreenwidth<0)newscreenwidth=screenwidth; + if(newscreenheight<0)newscreenheight=screenheight; - if(player[0].creature==rabbittype){ - player[0].proportionhead=1.2; - player[0].proportionbody=1.05; - player[0].proportionarms=1.00; - player[0].proportionlegs=1.1; - player[0].proportionlegs.y=1.05; - } + SaveSettings(*this); + } + if(mainmenu==4||mainmenu==5||mainmenu==6||mainmenu==7||mainmenu==9||mainmenu==10||mainmenu==100){ + fireSound(); - player[0].numclothes=0; - if(player[0].whichskin==0){ - LoadTextureSave(":Data:Textures:Fur3.jpg",&player[0].skeleton.drawmodel.textureptr,1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize); - } - else if(player[0].whichskin==1){ - LoadTextureSave(":Data:Textures:Fur.jpg",&player[0].skeleton.drawmodel.textureptr,1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize); - } - else if(player[0].whichskin==2){ - LoadTextureSave(":Data:Textures:Fur2.jpg",&player[0].skeleton.drawmodel.textureptr,1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize); - } - else if(player[0].whichskin==3){ - LoadTextureSave(":Data:Textures:Lynx.jpg",&player[0].skeleton.drawmodel.textureptr,1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize); - } - else if(player[0].whichskin==4){ - LoadTextureSave(":Data:Textures:Otter.jpg",&player[0].skeleton.drawmodel.textureptr,1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize); - } - else if(player[0].whichskin==5){ - LoadTextureSave(":Data:Textures:Opal.jpg",&player[0].skeleton.drawmodel.textureptr,1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize); - } - else if(player[0].whichskin==6){ - LoadTextureSave(":Data:Textures:Sable.jpg",&player[0].skeleton.drawmodel.textureptr,1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize); - } - else if(player[0].whichskin==7){ - LoadTextureSave(":Data:Textures:Chocolate.jpg",&player[0].skeleton.drawmodel.textureptr,1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize); - } - else if(player[0].whichskin==8){ - LoadTextureSave(":Data:Textures:BW2.jpg",&player[0].skeleton.drawmodel.textureptr,1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize); - } - else if(player[0].whichskin==9){ - LoadTextureSave(":Data:Textures:WB2.jpg",&player[0].skeleton.drawmodel.textureptr,1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize); - } + flash(); + } + if(mainmenu==3&&gameon)mainmenu=2; + if(mainmenu==3&&!gameon)mainmenu=1; + if(mainmenu==5&&gameon)mainmenu=2; + if(mainmenu==5&&!gameon)mainmenu=1; + if(mainmenu==4)mainmenu=3; + if(mainmenu==6)mainmenu=5; + if(mainmenu==7)mainmenu=1; + if(mainmenu==9)mainmenu=5; + if(mainmenu==10)mainmenu=5; + if(mainmenu==100){ + mainmenu=5; + gameon=0; + winfreeze=0; + } + mainmenutogglekeydown=1; + } + if(!Input::isKeyDown(SDLK_ESCAPE)){ + mainmenutogglekeydown=0; + } + } - editoractive=typeactive; - player[0].immobile=0; + static bool minimaptogglekeydown; + if(Input::isKeyDown(SDLK_TAB)&&!minimaptogglekeydown&&tutoriallevel){ + if(tutorialstage!=51) + tutorialstagetime=tutorialmaxtime; + PlaySoundEx( consolefailsound, samp[consolefailsound], NULL, true); + OPENAL_SetVolume(channels[consolefailsound], 128); + OPENAL_SetPaused(channels[consolefailsound], false); + minimaptogglekeydown=1; + } + if(!Input::isKeyDown(SDLK_TAB)){ + minimaptogglekeydown=0; + } + if(mainmenu){ + //menu buttons + if(mainmenu==1||mainmenu==2){ + if(Input::Button()&&!oldbutton&&selected==1){ + if(!gameon){ + fireSound(firestartsound); + flash(); - donesomething=1; - } + //new game + if(accountactive) { + mainmenu=5; + } else { + mainmenu=7; + } + selected=-1; + } + else + { + //resume + mainmenu=0; + OPENAL_SetPaused(channels[stream_music3], true); + OPENAL_SetPaused(channels[music1], false); + } + } - if(Compare(consoletext[0],"tint ",0,4)||Compare(consoletext[0],"Tint ",0,4)){ - int startpoint; - int alldone; - alldone=0; - startpoint=5; - j=startpoint; - while(consoletext[0][j]!='\0'&&consoletext[0][j]!=' '&&!alldone&&j<255){ - mapname[j-startpoint]=consoletext[0][j]; - j++; - if(consoletext[0][j]=='\0')alldone=1; - } - mapname[j-startpoint]='\0'; + if(Input::Button()&&!oldbutton&&selected==2){ + fireSound(); - tintr=atof(mapname); + flash(); - j++; - startpoint=j; - while(consoletext[0][j]!='\0'&&consoletext[0][j]!=' '&&!alldone&&j<255){ - mapname[j-startpoint]=consoletext[0][j]; - j++; - if(consoletext[0][j]=='\0')alldone=1; - } - mapname[j-startpoint]='\0'; + //options - tintg=atof(mapname); + mainmenu=3; - j++; - startpoint=j; - while(consoletext[0][j]!='\0'&&consoletext[0][j]!=' '&&!alldone&&j<255){ - mapname[j-startpoint]=consoletext[0][j]; - j++; - if(consoletext[0][j]=='\0')alldone=1; - } - mapname[j-startpoint]='\0'; + if(newdetail>2)newdetail=detail; + if(newdetail<0)newdetail=detail; + if(newscreenwidth>3000)newscreenwidth=screenwidth; + if(newscreenwidth<0)newscreenwidth=screenwidth; + if(newscreenheight>3000)newscreenheight=screenheight; + if(newscreenheight<0)newscreenheight=screenheight; + } - tintb=atof(mapname); + if(Input::Button()&&!oldbutton&&selected==3){ + fireSound(); - donesomething=1; - } + flash(); - if(Compare(consoletext[0],"sky tint ",0,8)||Compare(consoletext[0],"Sky Tint ",0,8)){ - int startpoint; - int alldone; - alldone=0; - startpoint=9; - j=startpoint; - while(consoletext[0][j]!='\0'&&consoletext[0][j]!=' '&&!alldone&&j<255){ - mapname[j-startpoint]=consoletext[0][j]; - j++; - if(consoletext[0][j]=='\0')alldone=1; - } - mapname[j-startpoint]='\0'; + if(!gameon){ + //quit + tryquit=1; + OPENAL_SetPaused(channels[stream_music3], true); + } + else{ + //end game + gameon=0; + mainmenu=1; + } + } + } + if(mainmenu==3){ + if(Input::Button()&&!oldbutton&&selected!=-1){ + fireSound(); + } + if(Input::Button()&&!oldbutton&&selected==0){ + + extern SDL_Rect **resolutions; + bool isCustomResolution = true; + bool found = false; + for (int i = 0; (!found) && (resolutions[i]); i++) + { + if ((resolutions[i]->w == screenwidth) && (resolutions[i]->h == screenwidth)) + isCustomResolution = false; - skyboxr=atof(mapname); + if ((resolutions[i]->w == newscreenwidth) && (resolutions[i]->h == newscreenheight)) + { + i++; + if (resolutions[i] != NULL) + { + newscreenwidth = (int) resolutions[i]->w; + newscreenheight = (int) resolutions[i]->h; + } + else if (isCustomResolution) + { + if ((screenwidth == newscreenwidth) && (screenheight == newscreenheight)) + { + newscreenwidth = (int) resolutions[0]->w; + newscreenheight = (int) resolutions[0]->h; + } + else + { + newscreenwidth = screenwidth; + newscreenheight = screenheight; + } + } + else + { + newscreenwidth = (int) resolutions[0]->w; + newscreenheight = (int) resolutions[0]->h; + } + found = true; + } + } - j++; - startpoint=j; - while(consoletext[0][j]!='\0'&&consoletext[0][j]!=' '&&!alldone&&j<255){ - mapname[j-startpoint]=consoletext[0][j]; - j++; - if(consoletext[0][j]=='\0')alldone=1; - } - mapname[j-startpoint]='\0'; + if (!found) + { + newscreenwidth = (int) resolutions[0]->w; + newscreenheight = (int) resolutions[0]->h; + } - skyboxg=atof(mapname); + + } + if(Input::Button()&&!oldbutton&&selected==1){ + newdetail++; + if(newdetail>2)newdetail=0; + } + if(Input::Button()&&!oldbutton&&selected==2){ + bloodtoggle++; + if(bloodtoggle>2)bloodtoggle=0; + } + if(Input::Button()&&!oldbutton&&selected==3){ + difficulty++; + if(difficulty>2)difficulty=0; + } + if(Input::Button()&&!oldbutton&&selected==4){ + ismotionblur=1-ismotionblur; + } + if(Input::Button()&&!oldbutton&&selected==5){ + decals=1-decals; + } + if(Input::Button()&&!oldbutton&&selected==6){ + musictoggle=1-musictoggle; - j++; - startpoint=j; - while(consoletext[0][j]!='\0'&&consoletext[0][j]!=' '&&!alldone&&j<255){ - mapname[j-startpoint]=consoletext[0][j]; - j++; - if(consoletext[0][j]=='\0')alldone=1; - } - mapname[j-startpoint]='\0'; - - skyboxb=atof(mapname); - - skyboxlightr=skyboxr; - skyboxlightg=skyboxg; - skyboxlightb=skyboxb; - - SetUpLighting(); - - //if(skyboxtexture){ - terrain.DoShadows(); - objects.DoShadows(); - /*} - else terrain.DoLighting(); - */ - donesomething=1; - } - - if(Compare(consoletext[0],"sky light ",0,9)||Compare(consoletext[0],"Sky Light ",0,9)){ - int startpoint; - int alldone; - alldone=0; - startpoint=10; - j=startpoint; - while(consoletext[0][j]!='\0'&&consoletext[0][j]!=' '&&!alldone&&j<255){ - mapname[j-startpoint]=consoletext[0][j]; - j++; - if(consoletext[0][j]=='\0')alldone=1; - } - mapname[j-startpoint]='\0'; + if(!musictoggle){ + OPENAL_SetPaused(channels[music1], true); + OPENAL_SetPaused(channels[stream_music2], true); + OPENAL_SetPaused(channels[stream_music3], true); - skyboxlightr=atof(mapname); + for(i=0;i<4;i++){ + oldmusicvolume[i]=0; + musicvolume[i]=0; + } + } - j++; - startpoint=j; - while(consoletext[0][j]!='\0'&&consoletext[0][j]!=' '&&!alldone&&j<255){ - mapname[j-startpoint]=consoletext[0][j]; - j++; - if(consoletext[0][j]=='\0')alldone=1; - } - mapname[j-startpoint]='\0'; + if(musictoggle){ + PlayStreamEx( stream_music3, samp[stream_music3], NULL, true); + OPENAL_SetPaused(channels[stream_music3], false); + OPENAL_SetVolume(channels[stream_music3], 256); + } + } + if(Input::Button()&&!oldbutton&&selected==9){ + invertmouse=1-invertmouse; + } + if(Input::Button()&&!oldbutton&&selected==10){ + usermousesensitivity+=.2; + if(usermousesensitivity>2)usermousesensitivity=.2; + } + if(Input::Button()&&!oldbutton&&selected==11){ + volume+=.1f; + if(volume>1.0001f)volume=0; + OPENAL_SetSFXMasterVolume((int)(volume*255)); + } + if(Input::Button()&&!oldbutton&&selected==7){ + /*fireSound(); + */ + flash(); - skyboxlightg=atof(mapname); + //options - j++; - startpoint=j; - while(consoletext[0][j]!='\0'&&consoletext[0][j]!=' '&&!alldone&&j<255){ - mapname[j-startpoint]=consoletext[0][j]; - j++; - if(consoletext[0][j]=='\0')alldone=1; - } - mapname[j-startpoint]='\0'; - - skyboxlightb=atof(mapname); - - SetUpLighting(); - - //if(skyboxtexture){ - terrain.DoShadows(); - objects.DoShadows(); - /*} - else terrain.DoLighting(); - */ - donesomething=1; - } - - if(Compare(consoletext[0],"skybox ",0,6)||Compare(consoletext[0],"Skybox ",0,6)){ - skyboxtexture=1-skyboxtexture; - - SetUpLighting(); - //if(skyboxtexture){ - terrain.DoShadows(); - objects.DoShadows(); - /*} - else terrain.DoLighting(); - */ - donesomething=1; - } + mainmenu=4; + selected=-1; + keyselect=-1; + } + if(Input::Button() && !oldbutton && selected == 12) { + flash(); + + newstereomode = stereomode; + mainmenu=18; + keyselect=-1; + } + if(Input::Button() && !oldbutton && selected == 13) { + showdamagebar=!showdamagebar; + } + if(Input::Button()&&!oldbutton&&selected==8){ + fireSound(); - if(Compare(consoletext[0],"protection ",0,10)||Compare(consoletext[0],"Protection ",0,10)){ - int startpoint; - int alldone; - alldone=0; - startpoint=11; - j=startpoint; - while(consoletext[0][j]!='\0'&&consoletext[0][j]!=' '&&!alldone&&j<255){ - mapname[j-startpoint]=consoletext[0][j]; - j++; - if(consoletext[0][j]=='\0')alldone=1; - } - mapname[j-startpoint]='\0'; + flash(); - player[0].protectionhead=atof(mapname); + if(newdetail>2)newdetail=detail; + if(newdetail<0)newdetail=detail; + if(newscreenwidth<0)newscreenwidth=screenwidth; + if(newscreenheight<0)newscreenheight=screenheight; - j++; - startpoint=j; - while(consoletext[0][j]!='\0'&&consoletext[0][j]!=' '&&!alldone&&j<255){ - mapname[j-startpoint]=consoletext[0][j]; - j++; - if(consoletext[0][j]=='\0')alldone=1; - } - mapname[j-startpoint]='\0'; - player[0].protectionhigh=atof(mapname); + SaveSettings(*this); + if(mainmenu==3&&gameon)mainmenu=2; + if(mainmenu==3&&!gameon)mainmenu=1; + } + } + if(mainmenu==4){ + if(Input::Button()&&!oldbutton&&selected!=-1&&!waiting){ + fireSound(); + if(selected<9&&keyselect==-1) + keyselect=selected; + if(keyselect!=-1) + setKeySelected(); + if(selected==9){ + flash(); + + mainmenu=3; + + if(newdetail>2)newdetail=detail; + if(newdetail<0)newdetail=detail; + if(newscreenwidth>3000)newscreenwidth=screenwidth; + if(newscreenwidth<0)newscreenwidth=screenwidth; + if(newscreenheight>3000)newscreenheight=screenheight; + if(newscreenheight<0)newscreenheight=screenheight; + } + } + } - j++; - startpoint=j; - while(consoletext[0][j]!='\0'&&consoletext[0][j]!=' '&&!alldone&&j<255){ - mapname[j-startpoint]=consoletext[0][j]; - j++; - if(consoletext[0][j]=='\0')alldone=1; - } - mapname[j-startpoint]='\0'; + if(mainmenu==5){ - player[0].protectionlow=atof(mapname); + if(endgame==2){ + accountactive->endGame(); + endgame=0; + } - donesomething=1; - } + if(Input::Button()&&!oldbutton&&selected==1){ + fireSound(); - if(Compare(consoletext[0],"armor ",0,5)||Compare(consoletext[0],"Armor ",0,5)){ - int startpoint; - int alldone; - alldone=0; - startpoint=6; - j=startpoint; - while(consoletext[0][j]!='\0'&&consoletext[0][j]!=' '&&!alldone&&j<255){ - mapname[j-startpoint]=consoletext[0][j]; - j++; - if(consoletext[0][j]=='\0')alldone=1; - } - mapname[j-startpoint]='\0'; + flash(); - player[0].armorhead=atof(mapname); + startbonustotal=0; - j++; - startpoint=j; - while(consoletext[0][j]!='\0'&&consoletext[0][j]!=' '&&!alldone&&j<255){ - mapname[j-startpoint]=consoletext[0][j]; - j++; - if(consoletext[0][j]=='\0')alldone=1; - } - mapname[j-startpoint]='\0'; + loading=2; + loadtime=0; + targetlevel=-1; + if(firstload)TickOnceAfter(); + if(!firstload)LoadStuff(); + else { + Loadlevel(-1); + } - player[0].armorhigh=atof(mapname); + mainmenu=0; + gameon=1; + OPENAL_SetPaused(channels[stream_music3], true); + } + if(Input::Button()&&!oldbutton&&(selected-7>=accountactive->getCampaignChoicesMade())){ + fireSound(); - j++; - startpoint=j; - while(consoletext[0][j]!='\0'&&consoletext[0][j]!=' '&&!alldone&&j<255){ - mapname[j-startpoint]=consoletext[0][j]; - j++; - if(consoletext[0][j]=='\0')alldone=1; - } - mapname[j-startpoint]='\0'; + flash(); - player[0].armorlow=atof(mapname); + startbonustotal=0; - donesomething=1; - } + loading=2; + loadtime=0; + targetlevel=7; + if(firstload) TickOnceAfter(); + else LoadStuff(); + for(i=0;i<255;i++){ + mapname[i]='\0'; + } + mapname[0]=':'; + mapname[1]='D'; + mapname[2]='a'; + mapname[3]='t'; + mapname[4]='a'; + mapname[5]=':'; + mapname[6]='M'; + mapname[7]='a'; + mapname[8]='p'; + mapname[9]='s'; + mapname[10]=':'; + strcat(mapname,campaignmapname[campaignchoicewhich[selected-7-accountactive->getCampaignChoicesMade()]]); + whichchoice=selected-7-accountactive->getCampaignChoicesMade(); + visibleloading=1; + stillloading=1; + Loadlevel(mapname); + //Loadlevel(campaignmapname[levelorder[selected-7]]); + campaign=1; + mainmenu=0; + gameon=1; + OPENAL_SetPaused(channels[stream_music3], true); + } + if(Input::Button()&&!oldbutton&&selected==4){ + fireSound(); - if(Compare(consoletext[0],"protectionreset ",0,15)||Compare(consoletext[0],"Protectionreset ",0,15)){ - for(i=0;i1) - for(i=1;i=0&&selected<=accountactive->getProgress()){ + fireSound(); - player[closest].protectionlow=atof(mapname); + flash(); - donesomething=1; - } + startbonustotal=0; - if(Compare(consoletext[0],"armornear ",0,9)||Compare(consoletext[0],"Armornear ",0,9)){ - int closest=-1; - float closestdist=-1; - float distance; - if(numplayers>1) - for(i=1;i-1){ + fireSound(); + if(selected==1) { + flash(); + accountactive = Account::destroy(accountactive); + mainmenu=7; + } else if(selected==2) { + flash(); + mainmenu=5; + } + } + } + } + if(mainmenu==7){ + if(Input::Button()&&!oldbutton) { + if(selected!=-1){ + fireSound(); + if(selected==0&&Account::getNbAccounts()<8){ + entername=1; + } else if (selected-1){ + fireSound(); + if(selected<=2) + accountactive->setDifficulty(selected); - if(Compare(consoletext[0],"metal ",0,5)||Compare(consoletext[0],"Metal ",0,5)){ - int startpoint; - int alldone; - alldone=0; - startpoint=6; - j=startpoint; - while(consoletext[0][j]!='\0'&&consoletext[0][j]!=' '&&!alldone&&j<255){ - mapname[j-startpoint]=consoletext[0][j]; - j++; - if(consoletext[0][j]=='\0')alldone=1; - } - mapname[j-startpoint]='\0'; + mainmenu=5; - player[0].metalhead=atof(mapname); + flash(); - j++; - startpoint=j; - while(consoletext[0][j]!='\0'&&consoletext[0][j]!=' '&&!alldone&&j<255){ - mapname[j-startpoint]=consoletext[0][j]; - j++; - if(consoletext[0][j]=='\0')alldone=1; - } - mapname[j-startpoint]='\0'; + } + } + if (mainmenu==18) { + if(Input::Button()&&!oldbutton&&selected==0) { + newstereomode = (StereoMode)(newstereomode + 1); + while(!CanInitStereo(newstereomode)) { + printf("Failed to initialize mode %s (%i)\n", StereoModeName(newstereomode), newstereomode); + newstereomode = (StereoMode)(newstereomode + 1); + if ( newstereomode >= stereoCount ) { + newstereomode = stereoNone; + } + } + } + + if(Input::isKeyDown(MOUSEBUTTON1)&&!oldbutton&&selected==1) { + stereoseparation+=0.001; + } + if(Input::isKeyDown(MOUSEBUTTON2)&&!oldbutton&&selected==1) { + stereoseparation-=0.001; + } - player[0].metalhigh=atof(mapname); + if(Input::Button()&&!oldbutton&&selected==2) { + stereoreverse =! stereoreverse; + } + + if(Input::Button()&&!oldbutton&&selected==3) { + flash(); - j++; - startpoint=j; - while(consoletext[0][j]!='\0'&&consoletext[0][j]!=' '&&!alldone&&j<255){ - mapname[j-startpoint]=consoletext[0][j]; - j++; - if(consoletext[0][j]=='\0')alldone=1; - } + stereomode = newstereomode; + InitStereo(stereomode); + + mainmenu=3; + } + } - mapname[j-startpoint]='\0'; - player[0].metallow=atof(mapname); + if(Input::Button()||Input::isKeyDown(MOUSEBUTTON2))oldbutton=1; + else oldbutton=0; - donesomething=1; - } + if(Input::isKeyDown(SDLK_q)&&Input::isKeyDown(SDLK_LMETA)){ + tryquit=1; + if(mainmenu==3){ + if(newdetail>2)newdetail=detail; + if(newdetail<0)newdetail=detail; + if(newscreenwidth<0)newscreenwidth=screenwidth; + if(newscreenheight<0)newscreenheight=screenheight; - if(Compare(consoletext[0],"noclothesnear ",0,13)||Compare(consoletext[0],"Noclothesnear ",0,13)){ - int closest=-1; - float closestdist=-1; - float distance; - if(numplayers>1) - for(i=1;i4)transition+=multiplier/8; + if(transition>1){ + transition=0; + anim++; + if(anim>4)anim=0; + loaddistrib=0; + } + } + OPENAL_SetFrequency(channels[stream_music3], 22050); - if(Compare(consoletext[0],"noclothes ",0,9)||Compare(consoletext[0],"Noclothes ",0,9)){ - int closest=0; + if(entername) { + inputText(displaytext[0],&displayselected,&displaychars[0]); + if(!waiting) { // the input as finished + if(displaychars[0]){ // with enter + accountactive = Account::add(string(displaytext[0])); - player[closest].numclothes=0; - if(player[closest].whichskin==0){ - LoadTextureSave(":Data:Textures:Fur3.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize); - } - else if(player[closest].whichskin==1){ - LoadTextureSave(":Data:Textures:Fur.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize); - } - else if(player[closest].whichskin==2){ - LoadTextureSave(":Data:Textures:Fur2.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize); - } - else if(player[closest].whichskin==3){ - LoadTextureSave(":Data:Textures:Lynx.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize); - } - else if(player[closest].whichskin==4){ - LoadTextureSave(":Data:Textures:Otter.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize); - } - else if(player[closest].whichskin==5){ - LoadTextureSave(":Data:Textures:Opal.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize); - } - else if(player[closest].whichskin==6){ - LoadTextureSave(":Data:Textures:Sable.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize); - } - else if(player[closest].whichskin==7){ - LoadTextureSave(":Data:Textures:Chocolate.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize); - } - else if(player[closest].whichskin==8){ - LoadTextureSave(":Data:Textures:BW2.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize); - } - else if(player[closest].whichskin==9){ - LoadTextureSave(":Data:Textures:WB2.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize); - } + mainmenu=8; - donesomething=1; - } + flash(); - if((Compare(consoletext[0],"Clothes ",0,7)||Compare(consoletext[0],"clothes ",0,7))){ - mapname[0]=':'; - mapname[1]='D'; - mapname[2]='a'; - mapname[3]='t'; - mapname[4]='a'; - mapname[5]=':'; - mapname[6]='T'; - mapname[7]='e'; - mapname[8]='x'; - mapname[9]='t'; - mapname[10]='u'; - mapname[11]='r'; - mapname[12]='e'; - mapname[13]='s'; - mapname[14]=':'; - for(j=8;j1) - for(i=1;i0){ - for(k=14;k>=1;k--){ - for(j=0;j<255;j++){ - consoletext[k][j]=consoletext[k-1][j]; - } - consolechars[k]=consolechars[k-1]; - } - for(j=0;j<255;j++){ - consoletext[0][j]=' '; - } - consolechars[0]=0; - consoleselected=0; + if(console&&!Input::isKeyDown(SDLK_LMETA)){ + inputText(consoletext[0],&consoleselected,&consolechars[0]); + if(!waiting) { + archiveselected=0; + cmd_dispatch(this, consoletext[0]); + if(consolechars[0]>0){ - if(!donesomething){ - PlaySoundEx( consolefailsound, samp[consolefailsound], NULL, TRUE); - FSOUND_SetVolume(channels[consolefailsound], 256); - FSOUND_SetPaused(channels[consolefailsound], FALSE); - } - } + for(k=14;k>=1;k--){ + for(j=0;j<255;j++){ + consoletext[k][j]=consoletext[k-1][j]; } + consolechars[k]=consolechars[k-1]; } - togglekey[i]=1; - } - else { - togglekey[i]=0; - togglekeydelay[i]=0; + for(j=0;j<255;j++){ + consoletext[0][j]=' '; + } + consolechars[0]=0; + consoleselected=0; } } @@ -5614,119 +3049,42 @@ void Game::Tick() } } - if(IsKeyDown(theKeyMap, MAC_Q_KEY)&&IsKeyDown(theKeyMap, MAC_COMMAND_KEY)){ + if(Input::isKeyDown(SDLK_q)&&Input::isKeyDown(SDLK_LMETA)){ tryquit=1; if(mainmenu==3){ if(newdetail>2)newdetail=detail; if(newdetail<0)newdetail=detail; - if(newscreenwidth>3000)newscreenwidth=screenwidth; if(newscreenwidth<0)newscreenwidth=screenwidth; - if(newscreenheight>3000)newscreenheight=screenheight; if(newscreenheight<0)newscreenheight=screenheight; - //ofstream opstream(":Data:config.txt"); - ofstream opstream("./Data/config.txt"); - opstream << "Screenwidth:\n"; - opstream << newscreenwidth; - opstream << "\nScreenheight:\n"; - opstream << newscreenheight; - opstream << "\nMouse sensitivity:\n"; - opstream << usermousesensitivity; - opstream << "\nBlur(0,1):\n"; - opstream << ismotionblur; - opstream << "\nOverall Detail(0,1,2) higher=better:\n"; - opstream << newdetail; - opstream << "\nFloating jump:\n"; - opstream << floatjump; - opstream << "\nMouse jump:\n"; - opstream << mousejump; - opstream << "\nAmbient sound:\n"; - opstream << ambientsound; - opstream << "\nBlood (0,1,2):\n"; - opstream << bloodtoggle; - opstream << "\nAuto slomo:\n"; - opstream << autoslomo; - opstream << "\nFoliage:\n"; - opstream << foliage; - opstream << "\nMusic:\n"; - opstream << musictoggle; - opstream << "\nTrilinear:\n"; - opstream << trilinear; - opstream << "\nDecals(shadows,blood puddles,etc):\n"; - opstream << decals; - opstream << "\nInvert mouse:\n"; - opstream << invertmouse; - opstream << "\nGamespeed:\n"; - if(oldgamespeed==0)oldgamespeed=1; - opstream << oldgamespeed; - opstream << "\nDifficulty(0,1,2) higher=harder:\n"; - opstream << difficulty; - opstream << "\nDamage effects(blackout, doublevision):\n"; - opstream << damageeffects; - opstream << "\nText:\n"; - opstream << texttoggle; - opstream << "\nDebug:\n"; - opstream << debugmode; - opstream << "\nVBL Sync:\n"; - opstream << vblsync; - opstream << "\nShow Points:\n"; - opstream << showpoints; - opstream << "\nAlways Blur:\n"; - opstream << alwaysblur; - opstream << "\nImmediate mode (turn on on G5):\n"; - opstream << immediate; - opstream << "\nVelocity blur:\n"; - opstream << velocityblur; - opstream << "\nVolume:\n"; - opstream << volume; - opstream << "\nForward key:\n"; - opstream << KeyToChar(forwardkey); - opstream << "\nBack key:\n"; - opstream << KeyToChar(backkey); - opstream << "\nLeft key:\n"; - opstream << KeyToChar(leftkey); - opstream << "\nRight key:\n"; - opstream << KeyToChar(rightkey); - opstream << "\nJump key:\n"; - opstream << KeyToChar(jumpkey); - opstream << "\nCrouch key:\n"; - opstream << KeyToChar(crouchkey); - opstream << "\nDraw key:\n"; - opstream << KeyToChar(drawkey); - opstream << "\nThrow key:\n"; - opstream << KeyToChar(throwkey); - opstream << "\nAttack key:\n"; - opstream << KeyToChar(attackkey); - opstream << "\nChat key:\n"; - opstream << KeyToChar(chatkey); - opstream.close(); + SaveSettings(*this); } } static int oldwinfreeze; if(winfreeze&&!oldwinfreeze){ - FSOUND_SetFrequency(FSOUND_ALL, 0.001); - PlaySoundEx( consolesuccesssound, samp[consolesuccesssound], NULL, TRUE); - FSOUND_SetVolume(channels[consolesuccesssound], 256); - FSOUND_SetPaused(channels[consolesuccesssound], FALSE); + OPENAL_SetFrequency(OPENAL_ALL, 0.001); + PlaySoundEx( consolesuccesssound, samp[consolesuccesssound], NULL, true); + OPENAL_SetVolume(channels[consolesuccesssound], 256); + OPENAL_SetPaused(channels[consolesuccesssound], false); } if(winfreeze==0)oldwinfreeze=winfreeze; else oldwinfreeze++; - if((IsKeyDown(theKeyMap, jumpkey)||IsKeyDown(theKeyMap, MAC_SPACE_KEY))&&!oldjumpkeydown&&!campaign){ + if((Input::isKeyDown(jumpkey)||Input::isKeyDown(SDLK_SPACE))&&!oldjumpkeydown&&!campaign){ if(winfreeze)winfreeze=0; oldjumpkeydown=1; } - if((IsKeyDown(theKeyMap, MAC_ESCAPE_KEY))&&!campaign&&gameon){ + if((Input::isKeyDown(SDLK_ESCAPE))&&!campaign&&gameon){ if(winfreeze){ mainmenu=9; gameon=0; } } - if((IsKeyDown(theKeyMap, jumpkey)||IsKeyDown(theKeyMap, MAC_SPACE_KEY))){ + if((Input::isKeyDown(jumpkey)||Input::isKeyDown(SDLK_SPACE))){ oldjumpkeydown=1; } - if(!IsKeyDown(theKeyMap, jumpkey)&&!IsKeyDown(theKeyMap, MAC_SPACE_KEY))oldjumpkeydown=0; + if(!Input::isKeyDown(jumpkey)&&!Input::isKeyDown(SDLK_SPACE))oldjumpkeydown=0; if(!freeze&&!winfreeze&&!(mainmenu&&gameon)&&(gameon||!gamestarted)){ @@ -5741,30 +3099,30 @@ void Game::Tick() int realdialoguetype; bool special; if(dialoguetype[i]>49){ - realdialoguetype=dialoguetype[i]-50; + realdialoguetype=dialoguetype[i]-50; special=1; } else if(dialoguetype[i]>39){ - realdialoguetype=dialoguetype[i]-40; + realdialoguetype=dialoguetype[i]-40; special=1; } else if(dialoguetype[i]>29){ - realdialoguetype=dialoguetype[i]-30; + realdialoguetype=dialoguetype[i]-30; special=1; } else if(dialoguetype[i]>19){ - realdialoguetype=dialoguetype[i]-20; + realdialoguetype=dialoguetype[i]-20; special=1; } else if(dialoguetype[i]>9){ - realdialoguetype=dialoguetype[i]-10; + realdialoguetype=dialoguetype[i]-10; special=1; } else { realdialoguetype=dialoguetype[i]; special=0; } - if((!hostile||(dialoguetype[i]>40&&dialoguetype[i]<50))&&realdialoguetype0&&(dialoguegonethrough[i]==0||!special)&&(special||(IsKeyDown(theKeyMap, attackkey)&&!oldbuttondialogue))){ + if((!hostile||(dialoguetype[i]>40&&dialoguetype[i]<50))&&realdialoguetype0&&(dialoguegonethrough[i]==0||!special)&&(special||(Input::isKeyDown(attackkey)&&!oldbuttondialogue))){ if(findDistancefast(&player[0].coords,&player[realdialoguetype].coords)<6||player[realdialoguetype].howactive>=typedead1||(dialoguetype[i]>40&&dialoguetype[i]<50)){ whichdialogue=i; for(j=0;j=1){ @@ -6382,16 +3689,16 @@ void Game::Tick() if(tutoriallevel!=1){ if(bonustime==0&&bonus!=solidhit&&bonus!=spinecrusher&&bonus!=tracheotomy&&bonus!=backstab&&bonusvalue>10){ - PlaySoundEx( consolesuccesssound, samp[consolesuccesssound], NULL, TRUE); - FSOUND_SetVolume(channels[consolesuccesssound], 256); - FSOUND_SetPaused(channels[consolesuccesssound], FALSE); + PlaySoundEx( consolesuccesssound, samp[consolesuccesssound], NULL, true); + OPENAL_SetVolume(channels[consolesuccesssound], 256); + OPENAL_SetPaused(channels[consolesuccesssound], false); } } else if(bonustime==0){ - PlaySoundEx( fireendsound, samp[fireendsound], NULL, TRUE); - FSOUND_SetVolume(channels[fireendsound], 256); - FSOUND_SetPaused(channels[fireendsound], FALSE); + PlaySoundEx( fireendsound, samp[fireendsound], NULL, true); + OPENAL_SetVolume(channels[fireendsound], 256); + OPENAL_SetPaused(channels[fireendsound], false); } if(bonustime==0){ if(bonus!=solidhit&&bonus!=twoxcombo&&bonus!=threexcombo&&bonus!=fourxcombo&&bonus!=megacombo)bonusnum[bonus]++; @@ -6414,7 +3721,7 @@ void Game::Tick() footpoint.y+=((float)abs(Random()%1200))/100-6; footpoint.x+=((float)abs(Random()%1200))/100-6; footpoint.z+=((float)abs(Random()%1200))/100-6; - sprites.MakeSprite(snowsprite, footpoint,footvel, 1,1,1, .1, 1); + Sprite::MakeSprite(snowsprite, footpoint,footvel, 1,1,1, .1, 1); } } for(k=0;k10||!player[k].isRun()){ + if(j>10||!player[k].isRun()){ if(player[k].targetanimation==jumpdownanim||player[k].targetanimation==jumpupanim){ - if(k==0)FSOUND_SetPaused(channels[whooshsound], TRUE); + if(k==0)OPENAL_SetPaused(channels[whooshsound], true); } float gLoc[3]; float vel[3]; @@ -6763,10 +4070,10 @@ void Game::Tick() vel[0]=player[k].velocity.x; vel[1]=player[k].velocity.y; vel[2]=player[k].velocity.z; - PlaySoundEx( jumpsound, samp[jumpsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[jumpsound], gLoc, vel); - FSOUND_SetVolume(channels[jumpsound], 128); - FSOUND_SetPaused(channels[jumpsound], FALSE); + PlaySoundEx( jumpsound, samp[jumpsound], NULL, true); + OPENAL_3D_SetAttributes(channels[jumpsound], gLoc, vel); + OPENAL_SetVolume(channels[jumpsound], 128); + OPENAL_SetPaused(channels[jumpsound], false); lowpointtarget=DoRotation(objects.model[i].facenormals[whichhit],0,objects.rotation[i],0); player[k].rotation=-asin(0-lowpointtarget.x); @@ -6795,7 +4102,7 @@ void Game::Tick() //player[k].currentanimation=hanganim; player[k].targetanimation=hanganim; player[k].jumppower=0; - } + } } j=100; } @@ -6825,10 +4132,10 @@ void Game::Tick() vel[1]=player[k].velocity.y; vel[2]=player[k].velocity.z; if(k==0){ - PlaySoundEx( whooshsound, samp[whooshsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[whooshsound], gLoc, vel); - FSOUND_SetVolume(channels[whooshsound], 128); - FSOUND_SetPaused(channels[whooshsound], FALSE); + PlaySoundEx( whooshsound, samp[whooshsound], NULL, true); + OPENAL_3D_SetAttributes(channels[whooshsound], gLoc, vel); + OPENAL_SetVolume(channels[whooshsound], 128); + OPENAL_SetPaused(channels[whooshsound], false); } } player[k].velocity.y+=gravity; @@ -6842,14 +4149,14 @@ void Game::Tick() static XYZ oldviewer; if(indialogue==-1){ - player[0].forwardkeydown=IsKeyDown(theKeyMap, forwardkey); - player[0].leftkeydown=IsKeyDown(theKeyMap, leftkey); - player[0].backkeydown=IsKeyDown(theKeyMap, backkey); - player[0].rightkeydown=IsKeyDown(theKeyMap, rightkey); - player[0].jumpkeydown=IsKeyDown(theKeyMap, jumpkey); - player[0].crouchkeydown=IsKeyDown(theKeyMap, crouchkey); - player[0].drawkeydown=IsKeyDown(theKeyMap, drawkey); - player[0].throwkeydown=IsKeyDown(theKeyMap, throwkey); + player[0].forwardkeydown=Input::isKeyDown(forwardkey); + player[0].leftkeydown=Input::isKeyDown(leftkey); + player[0].backkeydown=Input::isKeyDown(backkey); + player[0].rightkeydown=Input::isKeyDown(rightkey); + player[0].jumpkeydown=Input::isKeyDown(jumpkey); + player[0].crouchkeydown=Input::isKeyDown(crouchkey); + player[0].drawkeydown=Input::isKeyDown(drawkey); + player[0].throwkeydown=Input::isKeyDown(throwkey); } else { @@ -6869,7 +4176,7 @@ void Game::Tick() static bool endkeydown; if(indialogue!=-1){ cameramode=1; - if(directing){ + if(directing){ facing=0; facing.z=-1; @@ -6881,27 +4188,27 @@ void Game::Tick() flatfacing=DoRotation(flatfacing,0,-rotation,0); - if(IsKeyDown(theKeyMap, forwardkey))viewer+=facing*multiplier*4; - if(IsKeyDown(theKeyMap, backkey))viewer-=facing*multiplier*4; - if(IsKeyDown(theKeyMap, leftkey))viewer+=DoRotation(flatfacing*multiplier,0,90,0)*4; - if(IsKeyDown(theKeyMap, rightkey))viewer+=DoRotation(flatfacing*multiplier,0,-90,0)*4; - if(IsKeyDown(theKeyMap, jumpkey))viewer.y+=multiplier*4; - if(IsKeyDown(theKeyMap, crouchkey))viewer.y-=multiplier*4; - if(!endkeydown&&(IsKeyDown(theKeyMap, MAC_1_KEY)||IsKeyDown(theKeyMap, MAC_2_KEY)||IsKeyDown(theKeyMap, MAC_3_KEY)||IsKeyDown(theKeyMap, MAC_4_KEY)||IsKeyDown(theKeyMap, MAC_5_KEY) - ||IsKeyDown(theKeyMap, MAC_6_KEY)||IsKeyDown(theKeyMap, MAC_7_KEY)||IsKeyDown(theKeyMap, MAC_8_KEY)||IsKeyDown(theKeyMap, MAC_9_KEY)||IsKeyDown(theKeyMap, MAC_0_KEY) - ||IsKeyDown(theKeyMap, MAC_MINUS_KEY))){ + if(Input::isKeyDown(forwardkey))viewer+=facing*multiplier*4; + if(Input::isKeyDown(backkey))viewer-=facing*multiplier*4; + if(Input::isKeyDown(leftkey))viewer+=DoRotation(flatfacing*multiplier,0,90,0)*4; + if(Input::isKeyDown(rightkey))viewer+=DoRotation(flatfacing*multiplier,0,-90,0)*4; + if(Input::isKeyDown(jumpkey))viewer.y+=multiplier*4; + if(Input::isKeyDown(crouchkey))viewer.y-=multiplier*4; + if(!endkeydown&&(Input::isKeyDown(SDLK_1)||Input::isKeyDown(SDLK_2)||Input::isKeyDown(SDLK_3)||Input::isKeyDown(SDLK_4)||Input::isKeyDown(SDLK_5) + ||Input::isKeyDown(SDLK_6)||Input::isKeyDown(SDLK_7)||Input::isKeyDown(SDLK_8)||Input::isKeyDown(SDLK_9)||Input::isKeyDown(SDLK_0) + ||Input::isKeyDown(SDLK_MINUS))){ int whichend; - if(IsKeyDown(theKeyMap, MAC_1_KEY))whichend=1; - if(IsKeyDown(theKeyMap, MAC_2_KEY))whichend=2; - if(IsKeyDown(theKeyMap, MAC_3_KEY))whichend=3; - if(IsKeyDown(theKeyMap, MAC_4_KEY))whichend=4; - if(IsKeyDown(theKeyMap, MAC_5_KEY))whichend=5; - if(IsKeyDown(theKeyMap, MAC_6_KEY))whichend=6; - if(IsKeyDown(theKeyMap, MAC_7_KEY))whichend=7; - if(IsKeyDown(theKeyMap, MAC_8_KEY))whichend=8; - if(IsKeyDown(theKeyMap, MAC_9_KEY))whichend=9; - if(IsKeyDown(theKeyMap, MAC_0_KEY))whichend=0; - if(IsKeyDown(theKeyMap, MAC_MINUS_KEY))whichend=-1; + if(Input::isKeyDown(SDLK_1))whichend=1; + if(Input::isKeyDown(SDLK_2))whichend=2; + if(Input::isKeyDown(SDLK_3))whichend=3; + if(Input::isKeyDown(SDLK_4))whichend=4; + if(Input::isKeyDown(SDLK_5))whichend=5; + if(Input::isKeyDown(SDLK_6))whichend=6; + if(Input::isKeyDown(SDLK_7))whichend=7; + if(Input::isKeyDown(SDLK_8))whichend=8; + if(Input::isKeyDown(SDLK_9))whichend=9; + if(Input::isKeyDown(SDLK_0))whichend=0; + if(Input::isKeyDown(SDLK_MINUS))whichend=-1; if(whichend!=-1){ participantfocus[whichdialogue][indialogue]=whichend; participantlocation[whichdialogue][whichend]=player[whichend].coords; @@ -6955,10 +4262,10 @@ void Game::Tick() if(dialogueboxsound[whichdialogue][indialogue]==-2)whichsoundplay=firestartsound; if(dialogueboxsound[whichdialogue][indialogue]==-3)whichsoundplay=consolesuccesssound; if(dialogueboxsound[whichdialogue][indialogue]==-4)whichsoundplay=consolefailsound; - PlaySoundEx( whichsoundplay, samp[whichsoundplay], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[whichsoundplay], gLoc, vel); - FSOUND_SetVolume(channels[whichsoundplay], 256); - FSOUND_SetPaused(channels[whichsoundplay], FALSE); + PlaySoundEx( whichsoundplay, samp[whichsoundplay], NULL, true); + OPENAL_3D_SetAttributes(channels[whichsoundplay], gLoc, vel); + OPENAL_SetVolume(channels[whichsoundplay], 256); + OPENAL_SetPaused(channels[whichsoundplay], false); } } @@ -6968,25 +4275,25 @@ void Game::Tick() endkeydown=1; } - if((IsKeyDown(theKeyMap, MAC_NUMPAD_1_KEY)||IsKeyDown(theKeyMap, MAC_NUMPAD_2_KEY)||IsKeyDown(theKeyMap, MAC_NUMPAD_3_KEY)||IsKeyDown(theKeyMap, MAC_NUMPAD_4_KEY)||IsKeyDown(theKeyMap, MAC_NUMPAD_5_KEY) - ||IsKeyDown(theKeyMap, MAC_NUMPAD_6_KEY)||IsKeyDown(theKeyMap, MAC_NUMPAD_7_KEY)||IsKeyDown(theKeyMap, MAC_NUMPAD_8_KEY)||IsKeyDown(theKeyMap, MAC_NUMPAD_9_KEY)||IsKeyDown(theKeyMap, MAC_NUMPAD_0_KEY) + if((Input::isKeyDown(SDLK_KP1)||Input::isKeyDown(SDLK_KP2)||Input::isKeyDown(SDLK_KP3)||Input::isKeyDown(SDLK_KP4)||Input::isKeyDown(SDLK_KP5) + ||Input::isKeyDown(SDLK_KP6)||Input::isKeyDown(SDLK_KP7)||Input::isKeyDown(SDLK_KP8)||Input::isKeyDown(SDLK_KP9)||Input::isKeyDown(SDLK_KP0) )){ int whichend; - if(IsKeyDown(theKeyMap, MAC_NUMPAD_1_KEY))whichend=1; - if(IsKeyDown(theKeyMap, MAC_NUMPAD_2_KEY))whichend=2; - if(IsKeyDown(theKeyMap, MAC_NUMPAD_3_KEY))whichend=3; - if(IsKeyDown(theKeyMap, MAC_NUMPAD_4_KEY))whichend=4; - if(IsKeyDown(theKeyMap, MAC_NUMPAD_5_KEY))whichend=5; - if(IsKeyDown(theKeyMap, MAC_NUMPAD_6_KEY))whichend=6; - if(IsKeyDown(theKeyMap, MAC_NUMPAD_7_KEY))whichend=7; - if(IsKeyDown(theKeyMap, MAC_NUMPAD_8_KEY))whichend=8; - if(IsKeyDown(theKeyMap, MAC_NUMPAD_9_KEY))whichend=9; - if(IsKeyDown(theKeyMap, MAC_NUMPAD_0_KEY))whichend=0; + if(Input::isKeyDown(SDLK_KP1))whichend=1; + if(Input::isKeyDown(SDLK_KP2))whichend=2; + if(Input::isKeyDown(SDLK_KP3))whichend=3; + if(Input::isKeyDown(SDLK_KP4))whichend=4; + if(Input::isKeyDown(SDLK_KP5))whichend=5; + if(Input::isKeyDown(SDLK_KP6))whichend=6; + if(Input::isKeyDown(SDLK_KP7))whichend=7; + if(Input::isKeyDown(SDLK_KP8))whichend=8; + if(Input::isKeyDown(SDLK_KP9))whichend=9; + if(Input::isKeyDown(SDLK_KP0))whichend=0; participantfacing[whichdialogue][indialogue][whichend]=facing; } - if(!IsKeyDown(theKeyMap, MAC_1_KEY)&&!IsKeyDown(theKeyMap, MAC_2_KEY)&&!IsKeyDown(theKeyMap, MAC_3_KEY)&&!IsKeyDown(theKeyMap, MAC_4_KEY)&&!IsKeyDown(theKeyMap, MAC_5_KEY) - &&!IsKeyDown(theKeyMap, MAC_6_KEY)&&!IsKeyDown(theKeyMap, MAC_7_KEY)&&!IsKeyDown(theKeyMap, MAC_8_KEY)&&!IsKeyDown(theKeyMap, MAC_9_KEY)&&!IsKeyDown(theKeyMap, MAC_0_KEY) - &&!IsKeyDown(theKeyMap, MAC_MINUS_KEY)){ + if(!Input::isKeyDown(SDLK_1)&&!Input::isKeyDown(SDLK_2)&&!Input::isKeyDown(SDLK_3)&&!Input::isKeyDown(SDLK_4)&&!Input::isKeyDown(SDLK_5) + &&!Input::isKeyDown(SDLK_6)&&!Input::isKeyDown(SDLK_7)&&!Input::isKeyDown(SDLK_8)&&!Input::isKeyDown(SDLK_9)&&!Input::isKeyDown(SDLK_0) + &&!Input::isKeyDown(SDLK_MINUS)){ endkeydown=0; } if(indialogue>=numdialogueboxes[whichdialogue]){ @@ -6995,18 +4302,18 @@ void Game::Tick() cameramode=0; } } - if(!directing){ - FSOUND_SetPaused(channels[whooshsound], TRUE); + if(!directing){ + OPENAL_SetPaused(channels[whooshsound], true); viewer=dialoguecamera[whichdialogue][indialogue]; if(viewer.y0.5) - if((!endkeydown&&(IsKeyDown(theKeyMap, MAC_1_KEY)||IsKeyDown(theKeyMap, MAC_2_KEY)||IsKeyDown(theKeyMap, MAC_3_KEY)||IsKeyDown(theKeyMap, MAC_4_KEY)||IsKeyDown(theKeyMap, MAC_5_KEY) - ||IsKeyDown(theKeyMap, MAC_6_KEY)||IsKeyDown(theKeyMap, MAC_7_KEY)||IsKeyDown(theKeyMap, MAC_8_KEY)||IsKeyDown(theKeyMap, MAC_9_KEY)||IsKeyDown(theKeyMap, MAC_0_KEY) - ||IsKeyDown(theKeyMap, MAC_MINUS_KEY)))||(IsKeyDown(theKeyMap, attackkey)&&!oldbuttondialogue)){ + if((!endkeydown&&(Input::isKeyDown(SDLK_1)||Input::isKeyDown(SDLK_2)||Input::isKeyDown(SDLK_3)||Input::isKeyDown(SDLK_4)||Input::isKeyDown(SDLK_5) + ||Input::isKeyDown(SDLK_6)||Input::isKeyDown(SDLK_7)||Input::isKeyDown(SDLK_8)||Input::isKeyDown(SDLK_9)||Input::isKeyDown(SDLK_0) + ||Input::isKeyDown(SDLK_MINUS)))||(Input::isKeyDown(attackkey)&&!oldbuttondialogue)){ indialogue++; endkeydown=1; if(indialogue=numdialogueboxes[whichdialogue]){ @@ -7096,120 +4403,11 @@ void Game::Tick() } } - if(!IsKeyDown(theKeyMap, attackkey))oldbuttondialogue=0; + if(!Input::isKeyDown(attackkey))oldbuttondialogue=0; else oldbuttondialogue=1; static float keyrefreshdelay=0,bigrefreshdelay=0; - //Net updates - - /*keyrefreshdelay-=multiplier; - bigrefreshdelay-=multiplier; - - if(keyrefreshdelay<=0){ - static int concat[4]; - - concat[0]=player[0].forwardkeydown; - concat[0]=concat[0]*2+player[0].forwardstogglekeydown; - concat[0]=concat[0]*2+player[0].rightkeydown; - concat[0]=concat[0]*2+player[0].leftkeydown; - concat[0]=concat[0]*2+player[0].backkeydown; - concat[0]=concat[0]*2+player[0].jumpkeydown; - concat[0]=concat[0]*2+player[0].jumptogglekeydown; - concat[0]=concat[0]*2+player[0].crouchkeydown; - - concat[1]=player[0].crouchtogglekeydown; - concat[1]=concat[1]*2+player[0].drawkeydown; - concat[1]=concat[1]*2+player[0].drawtogglekeydown; - concat[1]=concat[1]*2+player[0].throwkeydown; - concat[1]=concat[1]*2+player[0].throwtogglekeydown; - concat[1]=concat[1]*2+player[0].attackkeydown; - - //concat[2]=(char)((int)(rotation/2)%180); - - //concat[3]=(char)((int)(rotation2/2)%180); - - chatname[0]=concat[0]-128; - chatname[1]=concat[1]-128; - //chatname[2]=concat[2]-128; - //chatname[3]=concat[3]-128; - int temppoint=2; - memcpy(chatname+temppoint,&rotation,sizeof(float)); - temppoint+=sizeof(float); - memcpy(chatname+temppoint,&rotation2,sizeof(float)); - temppoint+=sizeof(float); - - chatname[temppoint]='\0'; - - //if(!ishost)NetworkSendPlayerMessage( chatname, kMessageType_Keys ); - //if(ishost)NetworkSendPlayerRelayMessage( chatname, kMessageType_Keys ); - //keyrefreshdelay=.01; - keyrefreshdelay=.03; - } - - if(bigrefreshdelay<=0){ - for(i=0;i<1;i++){ - /*int temppoint=0; - memcpy(chatname+temppoint,&i,sizeof(int)); - temppoint+=sizeof(int); - memcpy(chatname+temppoint,&player[i].coords.x,sizeof(float)); - temppoint+=sizeof(float); - memcpy(chatname+temppoint,&player[i].coords.y,sizeof(float)); - temppoint+=sizeof(float); - memcpy(chatname+temppoint,&player[i].coords.z,sizeof(float)); - temppoint+=sizeof(float); - memcpy(chatname+temppoint,&player[i].damage,sizeof(float)); - temppoint+=sizeof(float); - memcpy(chatname+temppoint,&player[i].target,sizeof(float)); - temppoint+=sizeof(float); - memcpy(chatname+temppoint,&player[i].targetanimation,sizeof(int)); - temppoint+=sizeof(int); - memcpy(chatname+temppoint,&player[i].currentanimation,sizeof(int)); - temppoint+=sizeof(int); - memcpy(chatname+temppoint,&player[i].velocity.x,sizeof(float)); - temppoint+=sizeof(float); - memcpy(chatname+temppoint,&player[i].velocity.y,sizeof(float)); - temppoint+=sizeof(float); - memcpy(chatname+temppoint,&player[i].velocity.z,sizeof(float)); - temppoint+=sizeof(float); - memcpy(chatname+temppoint,&player[i].targetframe,sizeof(int)); - temppoint+=sizeof(int); - memcpy(chatname+temppoint,&player[i].currentframe,sizeof(int)); - temppoint+=sizeof(int); - memcpy(chatname+temppoint,&player[i].rotation,sizeof(float)); - temppoint+=sizeof(float); - memcpy(chatname+temppoint,&player[i].targetrotation,sizeof(float)); - temppoint+=sizeof(float); - memcpy(chatname+temppoint,&player[i].bloodloss,sizeof(float)); - temppoint+=sizeof(float); - memcpy(chatname+temppoint,&player[i].weaponactive,sizeof(int)); - temppoint+=sizeof(int); - memcpy(chatname+temppoint,&player[i].num_weapons,sizeof(int)); - temppoint+=sizeof(int); - memcpy(chatname+temppoint,&player[i].weaponids[0],sizeof(int)); - temppoint+=sizeof(int); - memcpy(chatname+temppoint,&player[i].weaponids[1],sizeof(int)); - temppoint+=sizeof(int); - memcpy(chatname+temppoint,&player[i].weaponids[2],sizeof(int)); - temppoint+=sizeof(int); - memcpy(chatname+temppoint,&player[i].weaponids[3],sizeof(int)); - temppoint+=sizeof(int); - chatname[temppoint]='\0'; - - sprintf (chatname, "%d %f %f %f %f %f %d %d %f %f %f %d %d %f %f %f",i,player[i].coords.x,player[i].coords.y,player[i].coords.z,player[i].damage,player[i].target, player[i].targetanimation, player[i].currentanimation, player[i].velocity.x, player[i].velocity.y, player[i].velocity.z, player[i].targetframe, player[i].currentframe, player[i].rotation, player[i].targetrotation); - //if(ishost)NetworkSendPlayerRelayMessage( chatname, kMessageType_PlayerState ); - //else NetworkSendPlayerMessage( chatname, kMessageType_PlayerState ); - - sprintf (chatname, "%d %f %d %d %d %d %d %d %d %d %f",i,player[i].bloodloss, player[i].weaponactive, player[i].num_weapons, player[i].weaponids[0], player[i].weaponids[1], player[i].weaponids[2], player[i].weaponids[3],player[i].dead,player[i].skeleton.free,player[i].permanentdamage); - - //if(ishost)NetworkSendPlayerRelayMessage( chatname, kMessageType_PlayerStateMisc ); - //else NetworkSendPlayerMessage( chatname, kMessageType_PlayerStateMisc ); - } - //bigrefreshdelay=.02; - bigrefreshdelay=.1; - } - }*/ - if(!player[0].jumpkeydown){ player[0].jumptogglekeydown=0; } @@ -7234,30 +4432,25 @@ void Game::Tick() vel[0]=0; vel[1]=0; vel[2]=0; - PlaySoundEx( hawksound, samp[hawksound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[hawksound], gLoc, vel); - FSOUND_SetVolume(channels[hawksound], 128); - FSOUND_SetPaused(channels[hawksound], FALSE); + PlaySoundEx( hawksound, samp[hawksound], NULL, true); + OPENAL_3D_SetAttributes(channels[hawksound], gLoc, vel); + OPENAL_SetVolume(channels[hawksound], 128); + OPENAL_SetPaused(channels[hawksound], false); hawkcalldelay=16+abs(Random()%8); } static float temptexdetail; - if(IsKeyDown(theKeyMap, MAC_H_KEY)&&debugmode){ + if(Input::isKeyDown(SDLK_h)&&debugmode){ player[0].damagetolerance=200000; player[0].damage=0; player[0].burnt=0; player[0].permanentdamage=0; player[0].superpermanentdamage=0; - /* - int whichchar; - whichchar = abs(Random()%7); - registrationname[whichchar]+=1; - */ } - if(IsKeyDown(theKeyMap, MAC_J_KEY)&&!envtogglekeydown&&debugmode){ + if(Input::isKeyDown(SDLK_j)&&!envtogglekeydown&&debugmode){ environment++; if(environment>2)environment=0; Setenvironment(environment); @@ -7266,20 +4459,20 @@ void Game::Tick() } - if(!IsKeyDown(theKeyMap, MAC_J_KEY)){ + if(!Input::isKeyDown(SDLK_j)){ envtogglekeydown=0; } - if(IsKeyDown(theKeyMap, MAC_C_KEY)&&!cameratogglekeydown&&debugmode){ + if(Input::isKeyDown(SDLK_c)&&!cameratogglekeydown&&debugmode){ cameramode=1-cameramode; cameratogglekeydown=1; } - if(!IsKeyDown(theKeyMap, MAC_C_KEY)){ + if(!Input::isKeyDown(SDLK_c)){ cameratogglekeydown=0; } - if(IsKeyDown(theKeyMap, MAC_X_KEY)&&!IsKeyDown(theKeyMap, MAC_SHIFT_KEY)&&!detailtogglekeydown&&debugmode){ + if(Input::isKeyDown(SDLK_x)&&!Input::isKeyDown(SDLK_LSHIFT)&&!detailtogglekeydown&&debugmode){ if(player[0].num_weapons>0){ if(weapons.type[player[0].weaponids[0]]==sword)weapons.type[player[0].weaponids[0]]=staff; else if(weapons.type[player[0].weaponids[0]]==staff)weapons.type[player[0].weaponids[0]]=knife; @@ -7301,20 +4494,10 @@ void Game::Tick() weapons.length[player[0].weaponids[0]]=.25; } } - - /*for(i=0;i9)player[closest].whichskin=0; if(player[closest].whichskin>2&&player[closest].creature==wolftype)player[closest].whichskin=0; - if(player[closest].creature==rabbittype){ - if(player[closest].whichskin==0){ - LoadTextureSave(":Data:Textures:Fur3.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize); - } - else if(player[closest].whichskin==1){ - LoadTextureSave(":Data:Textures:Fur.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize); - } - else if(player[closest].whichskin==2){ - LoadTextureSave(":Data:Textures:Fur2.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize); - } - else if(player[closest].whichskin==3){ - LoadTextureSave(":Data:Textures:Lynx.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize); - } - else if(player[closest].whichskin==4){ - LoadTextureSave(":Data:Textures:Otter.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize); - } - else if(player[closest].whichskin==5){ - LoadTextureSave(":Data:Textures:Opal.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize); - } - else if(player[closest].whichskin==6){ - LoadTextureSave(":Data:Textures:Sable.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize); - } - else if(player[closest].whichskin==7){ - LoadTextureSave(":Data:Textures:Chocolate.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize); - } - else if(player[closest].whichskin==8){ - LoadTextureSave(":Data:Textures:BW2.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize); - } - else if(player[closest].whichskin==9){ - LoadTextureSave(":Data:Textures:WB2.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize); - } - } - if(player[closest].creature==wolftype){ - k=abs(Random()%3); - if(player[closest].whichskin==0){ - LoadTextureSave(":Data:Textures:Wolf.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize); - } - else if(player[closest].whichskin==1){ - LoadTextureSave(":Data:Textures:Darkwolf.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize); - } - else if(player[closest].whichskin==2){ - LoadTextureSave(":Data:Textures:Snowwolf.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize); - } - } + LoadTextureSave(creatureskin[player[closest].creature][player[closest].whichskin], + &player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize); } if(player[closest].numclothes){ @@ -7467,7 +4608,7 @@ void Game::Tick() detailtogglekeydown=1; } - if(IsKeyDown(theKeyMap, MAC_O_KEY)&&IsKeyDown(theKeyMap, MAC_SHIFT_KEY)&&debugmode){ + if(Input::isKeyDown(SDLK_o)&&Input::isKeyDown(SDLK_LSHIFT)&&debugmode){ int closest=-1; float closestdist=-1; float distance; @@ -7548,18 +4689,18 @@ void Game::Tick() detailtogglekeydown=1; } - if(!IsKeyDown(theKeyMap, MAC_X_KEY)){ + if(!Input::isKeyDown(SDLK_x)){ detailtogglekeydown=0; } - if(IsKeyDown(theKeyMap, MAC_B_KEY)&&!slomotogglekeydown&&!IsKeyDown(theKeyMap, MAC_SHIFT_KEY)&&debugmode){ + if(Input::isKeyDown(SDLK_b)&&!slomotogglekeydown&&!Input::isKeyDown(SDLK_LSHIFT)&&debugmode){ slomo=1-slomo; slomodelay=1000; slomotogglekeydown=1; } - if(((IsKeyDown(theKeyMap, MAC_I_KEY)&&!IsKeyDown(theKeyMap, MAC_SHIFT_KEY))/*||buttons[1]*/)&&!explodetogglekeydown&&debugmode){ + if(((Input::isKeyDown(SDLK_i)&&!Input::isKeyDown(SDLK_LSHIFT)))&&!explodetogglekeydown&&debugmode){ int closest=-1; float closestdist=-1; float distance; @@ -7576,7 +4717,7 @@ void Game::Tick() } } - if(closest!=-1){ + if(closest!=-1){ XYZ headspurtdirection; int i = player[closest].skeleton.jointlabels[head]; for(k=0;k1&&numplayers2)drawmode=0; - if(objects.numobjects=numpathpoints)pathpointselected=-1; drawmodetogglekeydown=1; } - if(IsKeyDown(theKeyMap, MAC_COMMA_KEY)&&!IsKeyDown(theKeyMap, MAC_SHIFT_KEY)&&!drawmodetogglekeydown&&editorenabled){ + if(Input::isKeyDown(SDLK_COMMA)&&!Input::isKeyDown(SDLK_LSHIFT)&&!drawmodetogglekeydown&&editorenabled){ pathpointselected--; - if(pathpointselected<=-2)pathpointselected=numpathpoints-1; + if(pathpointselected<=-2) + pathpointselected=numpathpoints-1; drawmodetogglekeydown=1; } - if(IsKeyDown(theKeyMap, MAC_COMMA_KEY)&&IsKeyDown(theKeyMap, MAC_SHIFT_KEY)&&!drawmodetogglekeydown&&editorenabled){ + if(Input::isKeyDown(SDLK_COMMA)&&Input::isKeyDown(SDLK_LSHIFT)&&!drawmodetogglekeydown&&editorenabled){ if(pathpointselected!=-1){ numpathpoints--; pathpoint[pathpointselected]=pathpoint[numpathpoints]; @@ -8122,96 +5204,74 @@ void Game::Tick() drawmodetogglekeydown=1; } - if(IsKeyDown(theKeyMap, MAC_M_KEY)&&!drawmodetogglekeydown&&IsKeyDown(theKeyMap, MAC_SHIFT_KEY)&&debugmode){ + if(Input::isKeyDown(SDLK_m)&&!drawmodetogglekeydown&&Input::isKeyDown(SDLK_LSHIFT)&&debugmode){ editorenabled=1-editorenabled; if(editorenabled){ player[0].damagetolerance=100000; - player[0].damage=0; - player[0].superpermanentdamage=0; - player[0].bloodloss=0; - player[0].deathbleeding=0; - } - if(!editorenabled){ + } else { player[0].damagetolerance=200; - player[0].damage=0; - player[0].permanentdamage=0; - player[0].superpermanentdamage=0; - player[0].bloodloss=0; - player[0].deathbleeding=0; } + player[0].damage=0; // these lines were in both if and else, but I think they would better fit in the if + player[0].permanentdamage=0; + player[0].superpermanentdamage=0; + player[0].bloodloss=0; + player[0].deathbleeding=0; drawmodetogglekeydown=1; } - if(IsKeyDown(theKeyMap, MAC_ARROW_LEFT_KEY)&&!drawmodetogglekeydown&&editorenabled&&IsKeyDown(theKeyMap, MAC_SHIFT_KEY)&&!IsKeyDown(theKeyMap, MAC_CONTROL_KEY)){ + if(Input::isKeyDown(SDLK_LEFT)&&!drawmodetogglekeydown&&editorenabled&&Input::isKeyDown(SDLK_LSHIFT)&&!Input::isKeyDown(SDLK_LCTRL)){ editortype--; if(editortype==treeleavestype||editortype==10)editortype--; if(editortype<0)editortype=firetype; drawmodetogglekeydown=1; } - if(IsKeyDown(theKeyMap, MAC_ARROW_RIGHT_KEY)&&!drawmodetogglekeydown&&editorenabled&&IsKeyDown(theKeyMap, MAC_SHIFT_KEY)&&!IsKeyDown(theKeyMap, MAC_CONTROL_KEY)){ + if(Input::isKeyDown(SDLK_RIGHT)&&!drawmodetogglekeydown&&editorenabled&&Input::isKeyDown(SDLK_LSHIFT)&&!Input::isKeyDown(SDLK_LCTRL)){ editortype++; if(editortype==treeleavestype||editortype==10)editortype++; if(editortype>firetype)editortype=0; drawmodetogglekeydown=1; } - if(IsKeyDown(theKeyMap, MAC_ARROW_LEFT_KEY)&&editorenabled&&!IsKeyDown(theKeyMap, MAC_SHIFT_KEY)&&!IsKeyDown(theKeyMap, MAC_CONTROL_KEY)){ + if(Input::isKeyDown(SDLK_LEFT)&&editorenabled&&!Input::isKeyDown(SDLK_LSHIFT)&&!Input::isKeyDown(SDLK_LCTRL)){ editorrotation-=multiplier*100; if(editorrotation<-.01)editorrotation=-.01; drawmodetogglekeydown=1; } - if(IsKeyDown(theKeyMap, MAC_ARROW_RIGHT_KEY)&&editorenabled&&!IsKeyDown(theKeyMap, MAC_SHIFT_KEY)&&!IsKeyDown(theKeyMap, MAC_CONTROL_KEY)){ + if(Input::isKeyDown(SDLK_RIGHT)&&editorenabled&&!Input::isKeyDown(SDLK_LSHIFT)&&!Input::isKeyDown(SDLK_LCTRL)){ editorrotation+=multiplier*100; drawmodetogglekeydown=1; } - if(IsKeyDown(theKeyMap, MAC_ARROW_UP_KEY)&&editorenabled&&!IsKeyDown(theKeyMap, MAC_CONTROL_KEY)){ + if(Input::isKeyDown(SDLK_UP)&&editorenabled&&!Input::isKeyDown(SDLK_LCTRL)){ editorsize+=multiplier; drawmodetogglekeydown=1; } - if(IsKeyDown(theKeyMap, MAC_ARROW_DOWN_KEY)&&editorenabled&&!IsKeyDown(theKeyMap, MAC_CONTROL_KEY)){ + if(Input::isKeyDown(SDLK_DOWN)&&editorenabled&&!Input::isKeyDown(SDLK_LCTRL)){ editorsize-=multiplier; if(editorsize<.1)editorsize=.1; drawmodetogglekeydown=1; } - if(IsKeyDown(theKeyMap, MAC_ARROW_LEFT_KEY)&&!drawmodetogglekeydown&&editorenabled&&IsKeyDown(theKeyMap, MAC_SHIFT_KEY)&&IsKeyDown(theKeyMap, MAC_CONTROL_KEY)){ + if(Input::isKeyDown(SDLK_LEFT)&&!drawmodetogglekeydown&&editorenabled&&Input::isKeyDown(SDLK_LSHIFT)&&Input::isKeyDown(SDLK_LCTRL)){ mapradius-=multiplier*10; } - if(IsKeyDown(theKeyMap, MAC_ARROW_RIGHT_KEY)&&!drawmodetogglekeydown&&editorenabled&&IsKeyDown(theKeyMap, MAC_SHIFT_KEY)&&IsKeyDown(theKeyMap, MAC_CONTROL_KEY)){ + if(Input::isKeyDown(SDLK_RIGHT)&&!drawmodetogglekeydown&&editorenabled&&Input::isKeyDown(SDLK_LSHIFT)&&Input::isKeyDown(SDLK_LCTRL)){ mapradius+=multiplier*10; } - /* - if(IsKeyDown(theKeyMap, MAC_ARROW_LEFT_KEY)&&editorenabled&&!IsKeyDown(theKeyMap, MAC_SHIFT_KEY)&&IsKeyDown(theKeyMap, MAC_CONTROL_KEY)){ - mapcenter.x+=multiplier*20; - } - - if(IsKeyDown(theKeyMap, MAC_ARROW_RIGHT_KEY)&&editorenabled&&!IsKeyDown(theKeyMap, MAC_SHIFT_KEY)&&IsKeyDown(theKeyMap, MAC_CONTROL_KEY)){ - mapcenter.x-=multiplier*20; - } - - if(IsKeyDown(theKeyMap, MAC_ARROW_UP_KEY)&&editorenabled&&IsKeyDown(theKeyMap, MAC_CONTROL_KEY)){ - mapcenter.z+=multiplier*20; - } - - if(IsKeyDown(theKeyMap, MAC_ARROW_DOWN_KEY)&&editorenabled&&IsKeyDown(theKeyMap, MAC_CONTROL_KEY)){ - mapcenter.z-=multiplier*20; - } - */ - if(IsKeyDown(theKeyMap, MAC_ARROW_UP_KEY)&&editorenabled&&IsKeyDown(theKeyMap, MAC_CONTROL_KEY)){ + if(Input::isKeyDown(SDLK_UP)&&editorenabled&&Input::isKeyDown(SDLK_LCTRL)){ editorrotation2+=multiplier*100; } - if(IsKeyDown(theKeyMap, MAC_ARROW_DOWN_KEY)&&editorenabled&&IsKeyDown(theKeyMap, MAC_CONTROL_KEY)){ + if(Input::isKeyDown(SDLK_DOWN)&&editorenabled&&Input::isKeyDown(SDLK_LCTRL)){ editorrotation2-=multiplier*100; if(editorrotation2<-.01)editorrotation2=-.01; } - if(IsKeyDown(theKeyMap, MAC_DELETE_KEY)&&editorenabled&&objects.numobjects&&!drawmodetogglekeydown&&!IsKeyDown(theKeyMap, MAC_SHIFT_KEY)){ + if(Input::isKeyDown(SDLK_DELETE)&&editorenabled&&objects.numobjects&&!drawmodetogglekeydown&&!Input::isKeyDown(SDLK_LSHIFT)){ int closest=-1; float closestdist=-1; float distance; @@ -8222,16 +5282,16 @@ void Game::Tick() closest=i; } } - if(closestdist>0&&closest>=0)objects.DeleteObject(closest); + if(closestdist>0&&closest>=0)objects.DeleteObject(closest); drawmodetogglekeydown=1; } - if(!IsKeyDown(theKeyMap, MAC_M_KEY)&&!IsKeyDown(theKeyMap, MAC_ARROW_LEFT_KEY)&&!IsKeyDown(theKeyMap, MAC_COMMA_KEY)&&!IsKeyDown(theKeyMap, MAC_PERIOD_KEY)&&!IsKeyDown(theKeyMap, MAC_ARROW_RIGHT_KEY)&&!IsKeyDown(theKeyMap, MAC_DELETE_KEY)&&!IsKeyDown(theKeyMap, MAC_P_KEY)){ + if(!Input::isKeyDown(SDLK_m)&&!Input::isKeyDown(SDLK_LEFT)&&!Input::isKeyDown(SDLK_COMMA)&&!Input::isKeyDown(SDLK_PERIOD)&&!Input::isKeyDown(SDLK_RIGHT)&&!Input::isKeyDown(SDLK_DELETE)&&!Input::isKeyDown(SDLK_p)){ drawmodetogglekeydown=0; } - if(IsKeyDown(theKeyMap, MAC_N_KEY)&&!IsKeyDown(theKeyMap, MAC_CONTROL_KEY)&&!texturesizetogglekeydown&&debugmode){ + if(Input::isKeyDown(SDLK_n)&&!Input::isKeyDown(SDLK_LCTRL)&&!texturesizetogglekeydown&&debugmode){ //if(!player[0].skeleton.free)player[0].damage+=500; player[0].RagDoll(0); //player[0].spurt=1; @@ -8245,16 +5305,16 @@ void Game::Tick() vel[0]=player[0].velocity.x; vel[1]=player[0].velocity.y; vel[2]=player[0].velocity.z; - PlaySoundEx( whooshsound, samp[whooshsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[whooshsound], gLoc, vel); - FSOUND_SetVolume(channels[whooshsound], 128); - FSOUND_SetPaused(channels[whooshsound], FALSE); - //FSOUND_SetPaused(channels[whooshsound], TRUE); + PlaySoundEx( whooshsound, samp[whooshsound], NULL, true); + OPENAL_3D_SetAttributes(channels[whooshsound], gLoc, vel); + OPENAL_SetVolume(channels[whooshsound], 128); + OPENAL_SetPaused(channels[whooshsound], false); + //OPENAL_SetPaused(channels[whooshsound], true); texturesizetogglekeydown=1; } - if(IsKeyDown(theKeyMap, MAC_N_KEY)&&IsKeyDown(theKeyMap, MAC_CONTROL_KEY)&&!texturesizetogglekeydown&&debugmode){ + if(Input::isKeyDown(SDLK_n)&&Input::isKeyDown(SDLK_LCTRL)&&!texturesizetogglekeydown&&debugmode){ int closest=-1; float closestdist=-1; @@ -8272,13 +5332,13 @@ void Game::Tick() //Attack static bool playerrealattackkeydown=0; - if(!buttons[0])oldbutton=0; - if(!IsKeyDown(theKeyMap, attackkey))oldattackkey=0; + if(!Input::isKeyDown(MOUSEBUTTON1)&&!Input::isKeyDown(MOUSEBUTTON2))oldbutton=0; + if(!Input::isKeyDown(attackkey))oldattackkey=0; if(oldattackkey)player[0].attackkeydown=0; if(oldattackkey)playerrealattackkeydown=0; - if(!oldattackkey)playerrealattackkeydown=IsKeyDown(theKeyMap, attackkey); - if((player[0].parriedrecently<=0||player[0].weaponactive==-1)&&(!oldattackkey||(realthreat&&player[0].lastattack!=swordslashanim&&player[0].lastattack!=knifeslashstartanim&&player[0].lastattack!=staffhitanim&&player[0].lastattack!=staffspinhitanim)))player[0].attackkeydown=IsKeyDown(theKeyMap, attackkey); - if(IsKeyDown(theKeyMap, attackkey)&&!oldattackkey&&!player[0].backkeydown){ + if(!oldattackkey)playerrealattackkeydown=Input::isKeyDown(attackkey); + if((player[0].parriedrecently<=0||player[0].weaponactive==-1)&&(!oldattackkey||(realthreat&&player[0].lastattack!=swordslashanim&&player[0].lastattack!=knifeslashstartanim&&player[0].lastattack!=staffhitanim&&player[0].lastattack!=staffspinhitanim)))player[0].attackkeydown=Input::isKeyDown(attackkey); + if(Input::isKeyDown(attackkey)&&!oldattackkey&&!player[0].backkeydown){ for(k=0;k1) for(i=0;i1000||player[k].isRun()||(hasstaff)||(player[k].weaponactive!=-1&&player[i].skeleton.free&&(player[i].skeleton.longdead>2000||player[i].damage>player[i].damagetolerance/8||player[i].bloodloss>player[i].damagetolerance/2)&&findDistancefast(&player[k].coords,&player[i].coords)<1.5*(player[k].scale*5)*(player[k].scale*5)))){ @@ -8618,7 +5678,7 @@ void Game::Tick() if(player[i].onfire||player[k].onfire){ if(!player[i].onfire)player[i].CatchFire(); if(!player[k].onfire)player[k].CatchFire(); - } + } } tempcoords1=player[i].coords; @@ -8628,7 +5688,7 @@ void Game::Tick() collisionradius=1.2*((player[i].scale+player[k].scale)*2.5)*((player[i].scale+player[k].scale)*2.5); if(player[0].hasvictim) if(player[0].targetanimation==rabbitkickanim&&(k==0||i==0)&&!player[0].victim->skeleton.free)collisionradius=3; - if((!player[i].skeleton.oldfree||!player[k].skeleton.oldfree)&&(findDistancefast(&tempcoords1,&tempcoords2)1)||(player[k].skeleton.oldfree==1&&findLengthfast(&player[k].velocity)>1)||(player[i].skeleton.oldfree==0&&player[k].skeleton.oldfree==0)){ + if((player[i].skeleton.oldfree==1&&findLengthfast(&player[i].velocity)>1)||(player[k].skeleton.oldfree==1&&findLengthfast(&player[k].velocity)>1)||(player[i].skeleton.oldfree==0&&player[k].skeleton.oldfree==0)){ rotatetarget=player[k].velocity-player[i].velocity; if(((player[i].targetanimation!=getupfrombackanim&&player[i].targetanimation!=getupfromfrontanim)||player[i].skeleton.free)&&((player[k].targetanimation!=getupfrombackanim&&player[k].targetanimation!=getupfromfrontanim)||player[k].skeleton.free)) if(((((findLengthfast(&rotatetarget)>150&&(i!=0&&k!=0))||(findLengthfast(&rotatetarget)>50&&player[0].rabbitkickragdoll/*currentanimation==rabbitkickanim*/&&(i==0||k==0)))&&normaldotproduct(rotatetarget,player[k].coords-player[i].coords)>0)&&((i==0||k==0)||((player[i].skeleton.oldfree==1&&k!=0&&animation[player[k].currentanimation].attack==neutral)||(player[k].skeleton.oldfree==1&&i!=0&&animation[player[i].currentanimation].attack==neutral)||(player[i].isFlip()&&!player[i].skeleton.oldfree&&(i==0||k==0))||(player[k].isFlip()&&!player[k].skeleton.oldfree&&(i==0||k==0))||(i==0||k==0))))||((player[i].targetanimation==jumpupanim||player[i].targetanimation==jumpdownanim||player[i].isFlip())&&(player[k].targetanimation==jumpupanim||player[k].targetanimation==jumpdownanim||player[k].isFlip())&&(i==0||k==0)&&(!player[i].skeleton.oldfree&&!player[k].skeleton.oldfree))){ @@ -8669,10 +5729,10 @@ void Game::Tick() vel[1]=player[i].velocity.y; vel[2]=player[i].velocity.z; if(tutoriallevel!=1){ - PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel); - FSOUND_SetVolume(channels[heavyimpactsound], 256); - FSOUND_SetPaused(channels[heavyimpactsound], FALSE); + PlaySoundEx( heavyimpactsound, samp[heavyimpactsound], NULL, true); + OPENAL_3D_SetAttributes(channels[heavyimpactsound], gLoc, vel); + OPENAL_SetVolume(channels[heavyimpactsound], 256); + OPENAL_SetPaused(channels[heavyimpactsound], false); } //player[i].velocity=player[k].velocity; //player[k].velocity=player[i].velocity; @@ -8753,7 +5813,7 @@ void Game::Tick() player[k].velocity.y=player[i].velocity.y; player[i].DoDamage(20); player[i].RagDoll(0); - player[k].lastcollide=1; + player[k].lastcollide=1; if(k==0){ bonus=AboveBonus; bonustime=0; @@ -8766,8 +5826,8 @@ void Game::Tick() //player[k].velocity.y-=10; player[i].velocity.y=player[k].velocity.y; player[k].DoDamage(20); - player[k].RagDoll(0); - player[i].lastcollide=1; + player[k].RagDoll(0); + player[i].lastcollide=1; if(i==0){ bonus=AboveBonus; bonustime=0; @@ -8864,78 +5924,7 @@ void Game::Tick() //pile - /* - XYZ tempdiff; - XYZ tempoldpos; - XYZ temp1,temp2; - bool isgood; - static float checkdelay; - checkdelay-=multiplier; - int m; - static bool checkedcoll[maxplayers][maxplayers]; - static bool above[maxplayers]; - - for(i=0;i1&&checkdelay<=0){ - checkdelay=.015; - for(k=0;kplayer[k].coords.y-3) - if(player[i].coords.yplayer[k].coords.x-3) - if(player[i].coords.xplayer[k].coords.z-3) - if(player[i].coords.zplayer[k].skeleton.longdead&&player[k].skeleton.free!=2)||player[i].skeleton.free==2){ - stuck=i; - moving=k; - } - else - { - moving=i; - stuck=k; - } - isgood=1; - - if(isgood){ - above[moving]=stuck; - for(l=0;lnumchallengelevels-1)targetlevel=0; loading=1; leveltime=5; slomotogglekeydown=1; } - - /* - if(IsKeyDown(theKeyMap, MAC_Z_KEY)){ - //Respawn - FSOUND_SetPaused(channels[whooshsound], TRUE); - changedelay=0; - for(k=0;kplayer[i].numwaypoints-1)player[i].waypoint=0; } - } + } if(player[i].numwaypoints>1&&player[i].howactive==typeactive&&player[i].pausetime<=0)player[i].forwardkeydown=1; else player[i].forwardkeydown=0; @@ -9316,7 +6280,7 @@ void Game::Tick() else player[i].targetrotation-=90; } } - } + } if(player[i].collided<1||player[i].targetanimation!=jumpupanim)player[i].jumpkeydown=0; if((player[i].collided>.8&&player[i].jumppower>=5))player[i].jumpkeydown=1; @@ -9348,7 +6312,7 @@ void Game::Tick() player[i].howactive=typeactive; } - } + } if(player[i].howactive=0){ if(weapons.owner[player[i].ally]!=-1||findDistancefast(&player[i].coords,&weapons.position[player[i].ally])>16){ @@ -9668,7 +6632,7 @@ void Game::Tick() if(rotatetarget.z<0)player[i].targetrotation=180-player[i].targetrotation; player[i].lookrotation=player[i].targetrotation; player[i].aiupdatedelay=.05; - player[i].forwardkeydown=1; + player[i].forwardkeydown=1; if(player[i].avoidcollided>.8&&!player[i].jumpkeydown&&player[i].collided<.8){ @@ -9684,21 +6648,6 @@ void Game::Tick() else player[i].targetrotation-=90; } } - /*if(findDistancefast(&player[i].coords,&weapons.position[player[i].ally])<3){ - if(abs(Random()%6)){ - player[i].crouchkeydown=1; - if(!findDistancefast(&player[i].coords,&weapons.position[player[i].ally])<1){ - if(player[i].isRun()){ - player[i].targetframe=0; - player[i].target=0; - player[i].targetanimation=sneakanim; - } - } - else player[i].forwardkeydown=0; - } - else player[i].crouchkeydown=0; - } - else player[i].crouchkeydown=0;*/ } player[i].leftkeydown=0; @@ -9706,7 +6655,7 @@ void Game::Tick() player[i].rightkeydown=0; player[i].attackkeydown=0; player[i].throwkeydown=1; - player[i].crouchkeydown=0; + player[i].crouchkeydown=0; if(player[i].targetanimation!=crouchremoveknifeanim&&player[i].targetanimation!=removeknifeanim)player[i].throwtogglekeydown=0; player[i].drawkeydown=0; } @@ -9798,7 +6747,7 @@ void Game::Tick() player[i].lastpathfindpoint2=-1; player[i].lastpathfindpoint3=-1; player[i].lastpathfindpoint4=-1; - } + } if(player[i].aiupdatedelay<0&&!animation[player[i].targetanimation].attack&&player[i].targetanimation!=staggerbackhighanim&&player[i].targetanimation!=staggerbackhardanim&&player[i].targetanimation!=backhandspringanim&&player[i].targetanimation!=dodgebackanim){ if(player[i].weaponactive==-1&&player[i].num_weapons>0)player[i].drawkeydown=Random()%2; else player[i].drawkeydown=0; @@ -9840,21 +6789,9 @@ void Game::Tick() player[i].throwkeydown=0; if(player[i].avoidcollided>.8&&!player[i].jumpkeydown&&player[i].collided<.8)player[i].targetrotation+=90*(player[i].whichdirection*2-1); - /*for(j=0;jid==i&&(player[j].targetanimation==spinkickanim&&player[j].targetframe<3)){ - player[i].crouchkeydown=1; - } - }*/ if(Random()%2==0/*||player[0].weaponactive!=-1*/||player[i].weaponactive!=-1||player[i].creature==wolftype)player[i].attackkeydown=1; else player[i].attackkeydown=0; if((player[i].isRun())&&Random()%6&&findDistancefast(&player[i].coords,&player[0].coords)>7)player[i].attackkeydown=0; - //if(player[i].attackkeydown&&findDistancefast(&player[i].coords,&player[0].coords)<3&&player[i].targetanimation!=runanim&&!player[0].skeleton.free)player[i].crouchkeydown=1; - /*if(player[0].targetanimation==rabbitkickanim&&!player[0].skeleton.free){ - player[i].attackkeydown=0; - if(player[i].isIdle())player[i].crouchkeydown=1; - player[i].forwardkeydown=0; - player[i].aiupdatedelay=.02; - }*/ if(player[i].aitype!=playercontrolled&&(player[i].isIdle()||player[i].isCrouch()||player[i].isRun())){ target=-2; @@ -10043,10 +6980,10 @@ void Game::Tick() vel[1]=player[i].velocity.y; vel[2]=player[i].velocity.z; if(weapons.type[j]!=staff){ - PlaySoundEx( knifedrawsound, samp[knifedrawsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[knifedrawsound], gLoc, vel); - FSOUND_SetVolume(channels[knifedrawsound], 128); - FSOUND_SetPaused(channels[knifedrawsound], FALSE); + PlaySoundEx( knifedrawsound, samp[knifedrawsound], NULL, true); + OPENAL_3D_SetAttributes(channels[knifedrawsound], gLoc, vel); + OPENAL_SetVolume(channels[knifedrawsound], 128); + OPENAL_SetPaused(channels[knifedrawsound], false); } player[i].weaponactive=0; @@ -10090,10 +7027,10 @@ void Game::Tick() vel[1]=player[i].velocity.y; vel[2]=player[i].velocity.z; if(weapons.type[k]!=staff){ - PlaySoundEx( knifedrawsound, samp[knifedrawsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[knifedrawsound], gLoc, vel); - FSOUND_SetVolume(channels[knifedrawsound], 128); - FSOUND_SetPaused(channels[knifedrawsound], FALSE); + PlaySoundEx( knifedrawsound, samp[knifedrawsound], NULL, true); + OPENAL_3D_SetAttributes(channels[knifedrawsound], gLoc, vel); + OPENAL_SetVolume(channels[knifedrawsound], 128); + OPENAL_SetPaused(channels[knifedrawsound], false); } player[i].weaponactive=0; @@ -10151,17 +7088,17 @@ void Game::Tick() } if(!fleshstuck){ if(weapons.type[k]!=staff){ - PlaySoundEx( knifedrawsound, samp[knifedrawsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[knifedrawsound], gLoc, vel); - FSOUND_SetVolume(channels[knifedrawsound], 128); - FSOUND_SetPaused(channels[knifedrawsound], FALSE); + PlaySoundEx( knifedrawsound, samp[knifedrawsound], NULL, true); + OPENAL_3D_SetAttributes(channels[knifedrawsound], gLoc, vel); + OPENAL_SetVolume(channels[knifedrawsound], 128); + OPENAL_SetPaused(channels[knifedrawsound], false); } } if(fleshstuck){ - PlaySoundEx( fleshstabremovesound, samp[fleshstabremovesound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[fleshstabremovesound], gLoc, vel); - FSOUND_SetVolume(channels[fleshstabremovesound], 128); - FSOUND_SetPaused(channels[fleshstabremovesound], FALSE); + PlaySoundEx( fleshstabremovesound, samp[fleshstabremovesound], NULL, true); + OPENAL_3D_SetAttributes(channels[fleshstabremovesound], gLoc, vel); + OPENAL_SetVolume(channels[fleshstabremovesound], 128); + OPENAL_SetPaused(channels[fleshstabremovesound], false); } player[i].weaponactive=0; @@ -10187,7 +7124,7 @@ void Game::Tick() footpoint=weapons.position[k]; if(player[i].victim->weaponstuck!=-1){ if(player[i].victim->weaponids[player[i].victim->weaponstuck]==k){ - if(bloodtoggle)sprites.MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .8, .3); + if(bloodtoggle)Sprite::MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .8, .3); weapons.bloody[k]=2; weapons.blooddrip[k]=5; player[i].victim->weaponstuck=-1; @@ -10249,7 +7186,7 @@ void Game::Tick() player[i].victim=&player[j]; XYZ aim; weapons.owner[player[i].weaponids[0]]=-1; - aim=player[i].victim->coords+DoRotation(player[i].victim->skeleton.joints[player[i].victim->skeleton.jointlabels[abdomen]].position,0,player[i].victim->rotation,0)*player[i].victim->scale+player[i].victim->velocity*findDistance(&player[i].victim->coords,&player[i].coords)/50-(player[i].coords+DoRotation(player[i].skeleton.joints[player[i].skeleton.jointlabels[righthand]].position,0,player[i].rotation,0)*player[i].scale); + aim=player[i].victim->coords+DoRotation(player[i].victim->skeleton.joints[player[i].victim->skeleton.jointlabels[abdomen]].position,0,player[i].victim->rotation,0)*player[i].victim->scale+player[i].victim->velocity*findDistance(&player[i].victim->coords,&player[i].coords)/50-(player[i].coords+DoRotation(player[i].skeleton.joints[player[i].skeleton.jointlabels[righthand]].position,0,player[i].rotation,0)*player[i].scale); Normalise(&aim); aim=DoRotation(aim,(float)abs(Random()%30)-15,(float)abs(Random()%30)-15,0); @@ -10265,7 +7202,7 @@ void Game::Tick() player[i].weaponids[0]=player[i].weaponids[player[i].num_weapons]; } player[i].weaponactive=-1; - } + } } } } @@ -10325,7 +7262,7 @@ void Game::Tick() player[i].target=0; player[i].drawtogglekeydown=1; } - } + } } if(player[i].isCrouch()&&weapons.bloody[player[i].weaponids[player[i].weaponactive]]&&bloodtoggle&&player[i].onterrain&&player[i].num_weapons&&player[i].weaponactive!=-1&&player[i].attackkeydown){ if(weapons.bloody[player[i].weaponids[player[i].weaponactive]]&&player[i].onterrain&&bloodtoggle&&musictype!=stream_music2){ @@ -10423,7 +7360,7 @@ void Game::Tick() if(target>=0)player[target].Reverse(); player[i].highreversaldelay=.5; - if(player[i].isCrouch()){ + if(player[i].isCrouch()){ if(!player[i].wasCrouch()){ player[i].currentanimation=player[i].getCrouch(); player[i].currentframe=0; @@ -10586,17 +7523,17 @@ void Game::Tick() vel[2]=player[i].velocity.z; if(i==0){ - PlaySoundEx( whooshsound, samp[whooshsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[whooshsound], gLoc, vel); - FSOUND_SetVolume(channels[whooshsound], 128); - FSOUND_SetPaused(channels[whooshsound], FALSE); + PlaySoundEx( whooshsound, samp[whooshsound], NULL, true); + OPENAL_3D_SetAttributes(channels[whooshsound], gLoc, vel); + OPENAL_SetVolume(channels[whooshsound], 128); + OPENAL_SetPaused(channels[whooshsound], false); } - PlaySoundEx( jumpsound, samp[jumpsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[jumpsound], gLoc, vel); - FSOUND_SetVolume(channels[jumpsound], 128); - FSOUND_SetPaused(channels[jumpsound], FALSE); - } + PlaySoundEx( jumpsound, samp[jumpsound], NULL, true); + OPENAL_3D_SetAttributes(channels[jumpsound], gLoc, vel); + OPENAL_SetVolume(channels[jumpsound], 128); + OPENAL_SetPaused(channels[jumpsound], false); + } if((player[i].isIdle())&&player[i].jumppower>1){ player[i].targetanimation=player[i].getLanding(); player[i].landhard=0; @@ -10604,7 +7541,7 @@ void Game::Tick() player[i].targetframe=2; player[i].jumpstart=1; player[i].tempdeltav=deltav; - } + } if(player[i].targetanimation==jumpupanim&&(((!floatjump&&!editorenabled)||!debugmode)||player[i].aitype!=playercontrolled)){ if(player[i].jumppower>multiplier*6){ player[i].velocity.y+=multiplier*6; @@ -10615,7 +7552,7 @@ void Game::Tick() player[i].jumppower=0; } } - if(((floatjump||editorenabled)&&debugmode)&&i==0)player[i].velocity.y+=multiplier*30; + if(((floatjump||editorenabled)&&debugmode)&&i==0)player[i].velocity.y+=multiplier*30; } if(!movekey){ @@ -10692,270 +7629,170 @@ void Game::Tick() } objects.DoStuff(); - /* - player[0].righthandmorphstart=0; - player[0].righthandmorphend=1; - player[0].lefthandmorphstart=0; - player[0].lefthandmorphend=1; - player[0].headmorphstart=0; - player[0].headmorphend=2;*/ - - /* - if(IsKeyDown( theKeyMap, MAC_P_KEY )){ - if(player[0].righthandmorphend!=1)player[0].righthandmorphness=0; - player[0].righthandmorphend=1; - player[0].targetrighthandmorphness=1; - - if(player[0].lefthandmorphend!=0)player[0].lefthandmorphness=0; - player[0].lefthandmorphend=0; - player[0].targetlefthandmorphness=1; - - if(player[0].headmorphend!=2)player[0].headmorphness=0; - player[0].headmorphend=2; - player[0].targetheadmorphness=1; - } - if(IsKeyDown( theKeyMap, MAC_L_KEY )){ - if(player[0].righthandmorphend!=0)player[0].righthandmorphness=0; - player[0].righthandmorphend=0; - player[0].targetrighthandmorphness=1; - - if(player[0].lefthandmorphend!=1)player[0].lefthandmorphness=0; - player[0].lefthandmorphend=1; - player[0].targetlefthandmorphness=1; - - if(player[0].headmorphend!=0)player[0].headmorphness=0; - player[0].headmorphend=0; - player[0].targetheadmorphness=1; - } - */ - if(numenvsounds!=0) - for(j=numenvsounds-1;j>=0;j--){ - envsoundlife[j]-=multiplier; - if(envsoundlife[j]<0){ - numenvsounds--; - envsoundlife[j]=envsoundlife[numenvsounds]; - envsound[j]=envsound[numenvsounds]; + + for(j=numenvsounds-1;j>=0;j--){ + envsoundlife[j]-=multiplier; + if(envsoundlife[j]<0){ + numenvsounds--; + envsoundlife[j]=envsoundlife[numenvsounds]; + envsound[j]=envsound[numenvsounds]; + } + } + if(slomo) OPENAL_SetFrequency(OPENAL_ALL, slomofreq); + else OPENAL_SetFrequency(OPENAL_ALL, 22050); + + if(tutoriallevel==1){ + XYZ temp; + XYZ temp2; + XYZ temp3; + XYZ oldtemp; + XYZ oldtemp2; + temp.x=1011; + temp.y=84; + temp.z=491; + temp2.x=1025; + temp2.y=75; + temp2.z=447; + temp3.x=1038; + temp3.y=76; + temp3.z=453; + oldtemp=temp; + oldtemp2=temp2; + if(tutorialstage>=51) + if(findDistancefast(&temp,&player[0].coords)>=findDistancefast(&temp,&temp2)-1||findDistancefast(&temp3,&player[0].coords)<4){ + OPENAL_StopSound(OPENAL_ALL); // hack...OpenAL renderer isn't stopping music after tutorial goes to level menu... + OPENAL_SetFrequency(OPENAL_ALL, 0.001); + + PlayStreamEx( stream_music3, samp[stream_music3], NULL, true); + OPENAL_SetPaused(channels[stream_music3], false); + OPENAL_SetVolume(channels[stream_music3], 256); + + gameon=0; + mainmenu=5; + + fireSound(); + + flash(); } - } - if(!slomo)FSOUND_SetFrequency(FSOUND_ALL, 22050); - if(slomo)FSOUND_SetFrequency(FSOUND_ALL, slomofreq); - - if(tutoriallevel==1){ - XYZ temp; - XYZ temp2; - XYZ temp3; - XYZ oldtemp; - XYZ oldtemp2; - temp.x=1011; - temp.y=84; - temp.z=491; - temp2.x=1025; - temp2.y=75; - temp2.z=447; - temp3.x=1038; - temp3.y=76; - temp3.z=453; - oldtemp=temp; - oldtemp2=temp2; - if(tutorialstage>=51) + if(tutorialstage<51) if(findDistancefast(&temp,&player[0].coords)>=findDistancefast(&temp,&temp2)-1||findDistancefast(&temp3,&player[0].coords)<4){ - FSOUND_SetFrequency(FSOUND_ALL, 0.001); - - PlayStreamEx( stream_music3, strm[stream_music3], NULL, TRUE); - FSOUND_SetPaused(channels[stream_music3], FALSE); - FSOUND_SetVolume(channels[stream_music3], 256); - - gameon=0; - mainmenu=5; - - float gLoc[3]={0,0,0}; - float vel[3]={0,0,0}; - FSOUND_Sample_SetMinMaxDistance(samp[fireendsound], 9999.0f, 99999.0f); - PlaySoundEx( fireendsound, samp[fireendsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[fireendsound], gLoc, vel); - FSOUND_SetVolume(channels[fireendsound], 256); - FSOUND_SetPaused(channels[fireendsound], FALSE); - FSOUND_Sample_SetMinMaxDistance(samp[fireendsound], 8.0f, 2000.0f); - - flashr=1; - flashg=0; - flashb=0; - flashamount=1; - flashdelay=1; + float gLoc[3]; + float vel[3]; + gLoc[0]=player[0].coords.x; + gLoc[1]=player[0].coords.y; + gLoc[2]=player[0].coords.z; + vel[0]=0; + vel[1]=0; + vel[2]=0; + PlaySoundEx( fireendsound, samp[fireendsound], NULL, true); + OPENAL_3D_SetAttributes(channels[fireendsound], gLoc, vel); + OPENAL_SetVolume(channels[fireendsound], 256); + OPENAL_SetPaused(channels[fireendsound], false); + + player[0].coords=(oldtemp+oldtemp2)/2; + + flash(); } - if(tutorialstage<51) - if(findDistancefast(&temp,&player[0].coords)>=findDistancefast(&temp,&temp2)-1||findDistancefast(&temp3,&player[0].coords)<4){ + if(tutorialstage>=14&&tutorialstage<50) + if(findDistancefast(&temp,&player[1].coords)>=findDistancefast(&temp,&temp2)-1||findDistancefast(&temp3,&player[1].coords)<4){ float gLoc[3]; float vel[3]; - gLoc[0]=player[0].coords.x; - gLoc[1]=player[0].coords.y; - gLoc[2]=player[0].coords.z; + gLoc[0]=player[1].coords.x; + gLoc[1]=player[1].coords.y; + gLoc[2]=player[1].coords.z; vel[0]=0; vel[1]=0; vel[2]=0; - PlaySoundEx( fireendsound, samp[fireendsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[fireendsound], gLoc, vel); - FSOUND_SetVolume(channels[fireendsound], 256); - FSOUND_SetPaused(channels[fireendsound], FALSE); - - player[0].coords=(oldtemp+oldtemp2)/2; - - flashr=1; - flashg=1; - flashb=1; - flashamount=1; - flashdelay=1; - } - if(tutorialstage>=14&&tutorialstage<50) - if(findDistancefast(&temp,&player[1].coords)>=findDistancefast(&temp,&temp2)-1||findDistancefast(&temp3,&player[1].coords)<4){ - float gLoc[3]; - float vel[3]; - gLoc[0]=player[1].coords.x; - gLoc[1]=player[1].coords.y; - gLoc[2]=player[1].coords.z; - vel[0]=0; - vel[1]=0; - vel[2]=0; - PlaySoundEx( fireendsound, samp[fireendsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[fireendsound], gLoc, vel); - FSOUND_SetVolume(channels[fireendsound], 256); - FSOUND_SetPaused(channels[fireendsound], FALSE); - - for(int i=0;i90)rotation2=90; if(rotation2<-70)rotation2=-70; } - if(mainmenu)rotation+=multiplier*5; - if(!mainmenu&&!indemo&&!registered){ - FSOUND_SetFrequency(FSOUND_ALL, 0.001); - PlayStreamEx( stream_music3, strm[stream_music3], NULL, TRUE); - FSOUND_SetPaused(channels[stream_music3], FALSE); - FSOUND_SetVolume(channels[stream_music3], 256); - - gameon=0; - mainmenu=12; - - float gLoc[3]={0,0,0}; - float vel[3]={0,0,0}; - FSOUND_Sample_SetMinMaxDistance(samp[fireendsound], 9999.0f, 99999.0f); - PlaySoundEx( fireendsound, samp[fireendsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[fireendsound], gLoc, vel); - FSOUND_SetVolume(channels[fireendsound], 256); - FSOUND_SetPaused(channels[fireendsound], FALSE); - FSOUND_Sample_SetMinMaxDistance(samp[fireendsound], 8.0f, 2000.0f); - - flashr=1; - flashg=0; - flashb=0; - flashamount=1; - flashdelay=1; - } - - if(tryquit==1&&!registered&&mainmenu!=12){ - FSOUND_SetFrequency(FSOUND_ALL, 0.001); - PlayStreamEx( stream_music3, strm[stream_music3], NULL, TRUE); - FSOUND_SetPaused(channels[stream_music3], FALSE); - FSOUND_SetVolume(channels[stream_music3], 256); - - gameon=0; - mainmenu=12; - - float gLoc[3]={0,0,0}; - float vel[3]={0,0,0}; - FSOUND_Sample_SetMinMaxDistance(samp[fireendsound], 9999.0f, 99999.0f); - PlaySoundEx( fireendsound, samp[fireendsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[fireendsound], gLoc, vel); - FSOUND_SetVolume(channels[fireendsound], 256); - FSOUND_SetPaused(channels[fireendsound], FALSE); - FSOUND_Sample_SetMinMaxDistance(samp[fireendsound], 8.0f, 2000.0f); - - flashr=1; - flashg=0; - flashb=0; - flashamount=1; - flashdelay=1; - } - //} } -void Game::TickOnceAfter(){ +void Game::TickOnceAfter(){ static XYZ colviewer; static XYZ coltarget; static XYZ target; @@ -11004,9 +7841,9 @@ void Game::TickOnceAfter(){ musicvolume[0]=0; musicvolume[1]=0; musicvolume[3]=0; - } + } - if(musictoggle){ + if(musictoggle){ if(musictype!=oldmusictype&&musictype==stream_music2){ static float gLoc[3]; static float vel[3]; @@ -11016,9 +7853,9 @@ void Game::TickOnceAfter(){ vel[0]=0; vel[1]=0; vel[2]=0; - PlaySoundEx( alarmsound, samp[alarmsound], NULL, TRUE); - FSOUND_SetVolume(channels[alarmsound], 512); - FSOUND_SetPaused(channels[alarmsound], FALSE); + PlaySoundEx( alarmsound, samp[alarmsound], NULL, true); + OPENAL_SetVolume(channels[alarmsound], 512); + OPENAL_SetPaused(channels[alarmsound], false); } } @@ -11030,14 +7867,6 @@ void Game::TickOnceAfter(){ else musicvolume[1]-=multiplier*450; if(musicselected==stream_music3)musicvolume[2]+=multiplier*450; else musicvolume[2]-=multiplier*450; - /* - if(musicselected==music1)musicvolume[0]+=multiplier*100; - else musicvolume[0]-=multiplier*450; - if(musicselected==music2)musicvolume[1]+=multiplier*150; - else if(player[0].dead)musicvolume[1]-=multiplier*450; - else musicvolume[1]-=multiplier*100; - if(musicselected==music3)musicvolume[2]+=multiplier*450; - else musicvolume[2]-=multiplier*450;*/ for(i=0;i<3;i++){ if(musicvolume[i]<0)musicvolume[i]=0; @@ -11046,410 +7875,312 @@ void Game::TickOnceAfter(){ if(musicvolume[2]>128&&!loading&&!mainmenu)musicvolume[2]=128; - if(musictoggle){ + if(musictoggle){ if(musicvolume[0]>0&&oldmusicvolume[0]<=0){ - PlayStreamEx( music1, strm[music1], NULL, TRUE); - FSOUND_SetPaused(channels[music1], FALSE); + PlayStreamEx( music1, samp[music1], NULL, true); + OPENAL_SetPaused(channels[music1], false); } if(musicvolume[1]>0&&oldmusicvolume[1]<=0){ - PlayStreamEx( stream_music2, strm[stream_music2], NULL, TRUE); - FSOUND_SetPaused(channels[stream_music2], FALSE); + PlayStreamEx( stream_music2, samp[stream_music2], NULL, true); + OPENAL_SetPaused(channels[stream_music2], false); } if(musicvolume[2]>0&&oldmusicvolume[2]<=0){ - PlayStreamEx( stream_music3, strm[stream_music3], NULL, TRUE); - FSOUND_SetPaused(channels[stream_music3], FALSE); - } - } - - if(!musictoggle){ - FSOUND_SetPaused(channels[music1], TRUE); - FSOUND_SetPaused(channels[stream_music2], TRUE); - FSOUND_SetPaused(channels[stream_music3], TRUE); - - for(i=0;i<4;i++){ - oldmusicvolume[i]=0; - musicvolume[i]=0; + PlayStreamEx( stream_music3, samp[stream_music3], NULL, true); + OPENAL_SetPaused(channels[stream_music3], false); } - } - - if(musictoggle){ if(musicvolume[0]<=0&&oldmusicvolume[0]>0){ - FSOUND_SetPaused(channels[music1], TRUE); + OPENAL_SetPaused(channels[music1], true); } if(musicvolume[1]<=0&&oldmusicvolume[1]>0){ - FSOUND_SetPaused(channels[stream_music2], TRUE); + OPENAL_SetPaused(channels[stream_music2], true); } if(musicvolume[2]<=0&&oldmusicvolume[2]>0){ - FSOUND_SetPaused(channels[stream_music3], TRUE); + OPENAL_SetPaused(channels[stream_music3], true); } if(musicvolume[0]!=oldmusicvolume[0]){ - FSOUND_SetVolume(channels[music1], musicvolume[0]); + OPENAL_SetVolume(channels[music1], musicvolume[0]); } if(musicvolume[1]!=oldmusicvolume[1]){ - FSOUND_SetVolume(channels[stream_music2], musicvolume[1]); + OPENAL_SetVolume(channels[stream_music2], musicvolume[1]); } if(musicvolume[2]!=oldmusicvolume[2]){ - FSOUND_SetVolume(channels[stream_music3], musicvolume[2]); + OPENAL_SetVolume(channels[stream_music3], musicvolume[2]); } for(i=0;i<3;i++){ oldmusicvolume[i]=musicvolume[i]; } + } else { + OPENAL_SetPaused(channels[music1], true); + OPENAL_SetPaused(channels[stream_music2], true); + OPENAL_SetPaused(channels[stream_music3], true); + + for(i=0;i<4;i++){ + oldmusicvolume[i]=0; + musicvolume[i]=0; + } } killhotspot=2; - if(numhotspots) - for(i=0;i10&&hotspottype[i]<20){ - if(player[hotspottype[i]-10].dead==0){ - killhotspot=0; - } - else if(killhotspot==2) - killhotspot=1; + for(i=0;i10&&hotspottype[i]<20){ + if(player[hotspottype[i]-10].dead==0){ + killhotspot=0; } + else if(killhotspot==2) + killhotspot=1; } - if(killhotspot==2)killhotspot=0; + } + if(killhotspot==2)killhotspot=0; - winhotspot=0; - if(numhotspots) - for(i=0;i1) - for(i=1;imaxalarmed)maxalarmed=numalarmed; + int numalarmed=0; + for(i=1;imaxalarmed)maxalarmed=numalarmed; - if(changedelay<=0&&!loading&&!editorenabled&&gameon&&!tutoriallevel&&changedelay!=-999&&!won){ - if(player[0].dead&&changedelay<=0){ - changedelay=1; - targetlevel=whichlevel; - } - alldead=1; - if(numplayers>1) - for(i=1;inumchallengelevels-1)targetlevel=0; - } - if(winhotspot||windialogue){ - changedelay=0.1; - targetlevel=whichlevel+1; - if(targetlevel>numchallengelevels-1)targetlevel=0; - } + if(alldead&&!player[0].dead&&maptype==mapkilleveryone){ + changedelay=1; + targetlevel=whichlevel+1; + if(targetlevel>numchallengelevels-1)targetlevel=0; + } + if(winhotspot||windialogue){ + changedelay=0.1; + targetlevel=whichlevel+1; + if(targetlevel>numchallengelevels-1)targetlevel=0; + } - if(killhotspot){ - changedelay=1; - targetlevel=whichlevel+1; - if(targetlevel>numchallengelevels-1)targetlevel=0; - } + if(killhotspot){ + changedelay=1; + targetlevel=whichlevel+1; + if(targetlevel>numchallengelevels-1)targetlevel=0; + } - if(changedelay>0&&!player[0].dead&&!won){ - //high scores, awards, win - if(campaign){ - won=1; - accountcampaignchoices[accountactive][accountcampaignchoicesmade[accountactive]]=whichchoice; - accountcampaignchoicesmade[accountactive]++; - accountcampaignscore[accountactive]+=bonustotal; - scoreadded=1; - accountcampaigntime[accountactive]+=leveltime; - if(accountcampaignscore[accountactive]>accountcampaignhighscore[accountactive])accountcampaignhighscore[accountactive]=accountcampaignscore[accountactive]; - - //if(accountprogress[accountactive]accounthighscore[accountactive][whichlevel])accounthighscore[accountactive][whichlevel]=bonustotal-startbonustotal; - if(accountfasttime[accountactive][whichlevel]==0||leveltime0&&!player[0].dead&&!won){ + //high scores, awards, win + if(campaign){ + accountactive->winCampaignLevel(whichchoice, bonustotal, leveltime); + scoreadded=1; + } + else + { + accountactive->winLevel(whichlevel,bonustotal-startbonustotal,leveltime); + } + won=1; + } + } - } - } + if(!winfreeze){ + + if(leveltime<1){ + loading=0; + changedelay=.1; + alldead=0; + winhotspot=0; + killhotspot=0; + } + + if(!editorenabled&&gameon&&!mainmenu){ + if(changedelay!=-999)changedelay-=multiplier/7; + if(player[0].dead)targetlevel=whichlevel; + if(loading==2&&!campaign){ + flash(); + + fireSound(firestartsound); + + if(!player[0].dead&&targetlevel!=whichlevel){ + startbonustotal=bonustotal; } + if(player[0].dead) Loadlevel(whichlevel); + else Loadlevel(targetlevel); - if(!winfreeze){ + fireSound(); - if(leveltime<1){ - loading=0; - changedelay=.1; - alldead=0; - winhotspot=0; - killhotspot=0; - } + loading=3; + } + if(loading==2&&targetlevel==whichlevel){ + flash(); + loadtime=0; - if(!editorenabled&&gameon&&!mainmenu){ - if(changedelay!=-999)changedelay-=multiplier/7; - if(player[0].dead)targetlevel=whichlevel; - if(loading==2&&!campaign){ - flashr=1; - flashg=0; - flashb=0; - flashamount=1; - flashdelay=1; - loadtime=0; - - float gLoc[3]={0,0,0}; - float vel[3]={0,0,0}; - FSOUND_Sample_SetMinMaxDistance(samp[firestartsound], 9999.0f, 99999.0f); - PlaySoundEx( firestartsound, samp[firestartsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[firestartsound], gLoc, vel); - FSOUND_SetVolume(channels[firestartsound], 256); - FSOUND_SetPaused(channels[firestartsound], FALSE); - FSOUND_Sample_SetMinMaxDistance(samp[firestartsound], 8.0f, 2000.0f); - - if(!player[0].dead&&targetlevel!=whichlevel){ - startbonustotal=bonustotal; - } - if(!player[0].dead)Loadlevel(targetlevel); - if(player[0].dead)Loadlevel(whichlevel); + fireSound(firestartsound); + + for(i=0;i<255;i++){ + mapname[i]='\0'; + } + mapname[0]=':'; + mapname[1]='D'; + mapname[2]='a'; + mapname[3]='t'; + mapname[4]='a'; + mapname[5]=':'; + mapname[6]='M'; + mapname[7]='a'; + mapname[8]='p'; + mapname[9]='s'; + mapname[10]=':'; + strcat(mapname,campaignmapname[levelorder[accountactive->getCampaignChoicesMade()]]);//[campaignchoicewhich[whichchoice]]); + Loadlevel(mapname); - FSOUND_Sample_SetMinMaxDistance(samp[fireendsound], 9999.0f, 99999.0f); - PlaySoundEx( fireendsound, samp[fireendsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[fireendsound], gLoc, vel); - FSOUND_SetVolume(channels[fireendsound], 256); - FSOUND_SetPaused(channels[fireendsound], FALSE); - FSOUND_Sample_SetMinMaxDistance(samp[fireendsound], 8.0f, 2000.0f); + fireSound(); - loading=3; - } - if(loading==2&&targetlevel==whichlevel){ - flashr=1; - flashg=0; - flashb=0; - flashamount=1; - flashdelay=1; - loadtime=0; - - float gLoc[3]={0,0,0}; - float vel[3]={0,0,0}; - FSOUND_Sample_SetMinMaxDistance(samp[firestartsound], 9999.0f, 99999.0f); - PlaySoundEx( firestartsound, samp[firestartsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[firestartsound], gLoc, vel); - FSOUND_SetVolume(channels[firestartsound], 256); - FSOUND_SetPaused(channels[firestartsound], FALSE); - FSOUND_Sample_SetMinMaxDistance(samp[firestartsound], 8.0f, 2000.0f); - - for(i=0;i<255;i++){ - mapname[i]='\0'; - } - mapname[0]=':'; - mapname[1]='D'; - mapname[2]='a'; - mapname[3]='t'; - mapname[4]='a'; - mapname[5]=':'; - mapname[6]='M'; - mapname[7]='a'; - mapname[8]='p'; - mapname[9]='s'; - mapname[10]=':'; - strcat(mapname,campaignmapname[levelorder[accountcampaignchoicesmade[accountactive]]]);//[campaignchoicewhich[whichchoice]]); - Loadlevel(mapname); - - FSOUND_Sample_SetMinMaxDistance(samp[fireendsound], 9999.0f, 99999.0f); - PlaySoundEx( fireendsound, samp[fireendsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[fireendsound], gLoc, vel); - FSOUND_SetVolume(channels[fireendsound], 256); - FSOUND_SetPaused(channels[fireendsound], FALSE); - FSOUND_Sample_SetMinMaxDistance(samp[fireendsound], 8.0f, 2000.0f); - - loading=3; - } - if(changedelay<=-999&&whichlevel!=-2&&!loading&&(player[0].dead||(alldead&&maptype==mapkilleveryone)||(winhotspot)||(killhotspot))&&!winfreeze)loading=1; - if((player[0].dead||(alldead&&maptype==mapkilleveryone)||(winhotspot)||(windialogue)||(killhotspot))&&changedelay<=0){ - if(accountprogress[accountactive]>3&&!registered){ - FSOUND_SetFrequency(FSOUND_ALL, 0.001); - PlayStreamEx( stream_music3, strm[stream_music3], NULL, TRUE); - FSOUND_SetPaused(channels[stream_music3], FALSE); - FSOUND_SetVolume(channels[stream_music3], 256); - - gameon=0; - mainmenu=12; - accountprogress[accountactive]=3; - - float gLoc[3]={0,0,0}; - float vel[3]={0,0,0}; - FSOUND_Sample_SetMinMaxDistance(samp[fireendsound], 9999.0f, 99999.0f); - PlaySoundEx( fireendsound, samp[fireendsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[fireendsound], gLoc, vel); - FSOUND_SetVolume(channels[fireendsound], 256); - FSOUND_SetPaused(channels[fireendsound], FALSE); - FSOUND_Sample_SetMinMaxDistance(samp[fireendsound], 8.0f, 2000.0f); - - flashr=1; - flashg=0; - flashb=0; - flashamount=1; - flashdelay=1; - } - else{ - if(whichlevel!=-2&&!loading&&!player[0].dead){ - winfreeze=1; - changedelay=-999; - } - if(player[0].dead)loading=1; - } - } + loading=3; + } + if(changedelay<=-999&&whichlevel!=-2&&!loading&&(player[0].dead||(alldead&&maptype==mapkilleveryone)||(winhotspot)||(killhotspot))&&!winfreeze)loading=1; + if((player[0].dead||(alldead&&maptype==mapkilleveryone)||(winhotspot)||(windialogue)||(killhotspot))&&changedelay<=0){ + { + if(whichlevel!=-2&&!loading&&!player[0].dead){ + winfreeze=1; + changedelay=-999; } + if(player[0].dead)loading=1; + } + } + } - if(campaign) - if(mainmenu==0&&winfreeze&&(campaignchoosenext[campaignchoicewhich[whichchoice]])==1){ - if(campaignnumnext[campaignchoicewhich[whichchoice]]==0){ - endgame=1; - } - } - else if(mainmenu==0&&winfreeze){ - if(campaignchoosenext[campaignchoicewhich[whichchoice]]==2) - stealthloading=1; - else stealthloading=0; - - if(!stealthloading){ - float gLoc[3]={0,0,0}; - float vel[3]={0,0,0}; - FSOUND_Sample_SetMinMaxDistance(samp[firestartsound], 9999.0f, 99999.0f); - PlaySoundEx( firestartsound, samp[firestartsound], NULL, TRUE); - FSOUND_3D_SetAttributes(channels[firestartsound], gLoc, vel); - FSOUND_SetVolume(channels[firestartsound], 256); - FSOUND_SetPaused(channels[firestartsound], FALSE); - FSOUND_Sample_SetMinMaxDistance(samp[firestartsound], 8.0f, 2000.0f); - - flashr=1; - flashg=0; - flashb=0; - flashamount=1; - flashdelay=1; - } + if(campaign) + if(mainmenu==0&&winfreeze&&(campaignchoosenext[campaignchoicewhich[whichchoice]])==1){ + if(campaignnumnext[campaignchoicewhich[whichchoice]]==0){ + endgame=1; + } + } + else if(mainmenu==0&&winfreeze){ + if(campaignchoosenext[campaignchoicewhich[whichchoice]]==2) + stealthloading=1; + else stealthloading=0; - startbonustotal=0; - - // ifstream ipstream(":Data:Campaigns:main.txt"); - ifstream ipstream("./Data/Campaigns/main.txt"); - //campaignnumlevels=0; - //accountcampaignchoicesmade[accountactive]=0; - ipstream.ignore(256,':'); - ipstream >> campaignnumlevels; - for(i=0;i> campaignmapname[i]; - ipstream.ignore(256,':'); - ipstream >> campaigndescription[i]; - for(j=0;j<256;j++){ - if(campaigndescription[i][j]=='_')campaigndescription[i][j]=' '; - } - ipstream.ignore(256,':'); - ipstream >> campaignchoosenext[i]; - ipstream.ignore(256,':'); - ipstream >> campaignnumnext[i]; - if(campaignnumnext[i]) - for(j=0;j> campaignnextlevel[i][j]; - campaignnextlevel[i][j]-=1; - } - ipstream.ignore(256,':'); - ipstream >> campaignlocationx[i]; - ipstream.ignore(256,':'); - ipstream >> campaignlocationy[i]; - } - ipstream.close(); + if(!stealthloading){ + float gLoc[3]={0,0,0}; + float vel[3]={0,0,0}; + fireSound(firestartsound); - for(i=0;i> campaignnumlevels; + for(i=0;i> campaignmapname[i]; + ipstream.ignore(256,':'); + ipstream >> campaigndescription[i]; + for(j=0;j<256;j++){ + if(campaigndescription[i][j]=='_')campaigndescription[i][j]=' '; + } + ipstream.ignore(256,':'); + ipstream >> campaignchoosenext[i]; + ipstream.ignore(256,':'); + ipstream >> campaignnumnext[i]; + for(j=0;j> campaignnextlevel[i][j]; + campaignnextlevel[i][j]-=1; + } + ipstream.ignore(256,':'); + ipstream >> campaignlocationx[i]; + ipstream.ignore(256,':'); + ipstream >> campaignlocationy[i]; + } + ipstream.close(); - levelorder[0]=0; - levelvisible[0]=1; - if(accountcampaignchoicesmade[accountactive]) - for(i=0;igetCampaignChoicesMade();i++){ + levelorder[i+1]=campaignnextlevel[levelorder[i]][accountactive->getCampaignChoice(i)]; + levelvisible[levelorder[i+1]]=1; + } + int whichlevelstart; + whichlevelstart=accountactive->getCampaignChoicesMade()-1; + if(whichlevelstart<0){ + campaignchoicenum=1; + campaignchoicewhich[0]=0; + } + else + { + campaignchoicenum=campaignnumnext[levelorder[whichlevelstart]]; + for(i=0;itarget.y) + if(player[0].skeleton.joints[i].position.y*player[0].scale+player[0].coords.y>target.y) target.y=player[0].skeleton.joints[i].position.y*player[0].scale+player[0].coords.y; } target.y+=.1; @@ -11496,7 +8227,7 @@ void Game::TickOnceAfter(){ i=terrain.patchobjects[player[0].whichpatchx][player[0].whichpatchz][j]; colviewer=viewer; coltarget=cameraloc; - if(objects.model[i].LineCheckPossible(&colviewer,&coltarget,&col,&objects.position[i],&objects.rotation[i])!=-1)viewer=col; + if(objects.model[i].LineCheckPossible(&colviewer,&coltarget,&col,&objects.position[i],&objects.rotation[i])!=-1)viewer=col; } if(terrain.patchobjectnum[player[0].whichpatchx][player[0].whichpatchz]) for(j=0;j