X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=Source%2FGameTick.cpp;h=8010f4f265d014dec90a00ff7afec107f47f575c;hb=ca0addc190070545ea6204dfb4132f196d7acd1c;hp=b6378d134014e9bb515149b5da05c69797f235fd;hpb=612415ff494c29cf2fc7ea560da9908eaff7d847;p=lugaru.git diff --git a/Source/GameTick.cpp b/Source/GameTick.cpp index b6378d1..8010f4f 100644 --- a/Source/GameTick.cpp +++ b/Source/GameTick.cpp @@ -30,6 +30,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include #include "Game.h" #include "openal_wrapper.h" +#include "Settings.h" using namespace std; @@ -76,8 +77,6 @@ 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; @@ -224,18 +223,969 @@ extern float accountcampaigntime[10]; extern int accountcampaignchoicesmade[10]; extern int accountcampaignchoices[10][5000]; -/********************> Tick() <*****/ + +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) +{ + return !strncasecmp(str, pfx, strlen(pfx)); +} + extern OPENAL_STREAM * strm[20]; 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); + +static const char *cmd_names[] = { +#define DECLARE_COMMAND(cmd) #cmd " ", +#include "ConsoleCmds.h" +#undef DECLARE_COMMAND +}; + +typedef void (*console_handler)(Game *game, const char *args); + +#define DECLARE_COMMAND(cmd) static void ch_##cmd(Game *game, const char *args); +#include "ConsoleCmds.h" +#undef DECLARE_COMMAND + +static console_handler cmd_handlers[] = { +#define DECLARE_COMMAND(cmd) ch_##cmd, +#include "ConsoleCmds.h" +#undef DECLARE_COMMAND +}; + +static void ch_quit(Game *game, const char *args) +{ + game->tryquit = 1; +} + +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;j1&&numplayers0&&player[j].num_weapons<5) + for(k=0;knumpathpoints); + if(game->numpathpoints) + 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]); + } + } + + fpackf(tfile, "Bf Bf Bf Bf", game->mapcenter.x, game->mapcenter.y, game->mapcenter.z, game->mapradius); + + fclose(tfile); +} + +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); +} + +static void ch_tint(Game *game, const char *args) +{ + sscanf(args, "%f%f%f", &tintr, &tintg, &tintb); +} + +static void ch_tintr(Game *game, const char *args) +{ + tintr = atof(args); +} + +static void ch_tintg(Game *game, const char *args) +{ + tintg = atof(args); +} + +static void ch_tintb(Game *game, const char *args) +{ + tintb = atof(args); +} + +static void ch_speed(Game *game, const char *args) +{ + player[0].speedmult = atof(args); +} + +static void ch_strength(Game *game, const char *args) +{ + player[0].power = atof(args); +} + +static void ch_power(Game *game, const char *args) +{ + player[0].power = atof(args); +} + +static void ch_size(Game *game, const char *args) +{ + player[0].scale = atof(args) * .2; +} + +static int find_closest() +{ + int closest = 0; + float closestdist = 1.0/0.0; + + for (int i = 1; i < numplayers; i++) { + float distance; + distance = findDistancefast(&player[i].coords,&player[0].coords); + if (distance < closestdist) { + closestdist = distance; + closest = i; + } + } + return closest; +} + +static void ch_sizenear(Game *game, const char *args) +{ + int closest = find_closest(); + + if (closest) + player[closest].scale = atof(args) * .2; +} + +static void set_proportion(int pnum, const char *args) +{ + float headprop,bodyprop,armprop,legprop; + + sscanf(args, "%f%f%f%f", &headprop, &bodyprop, &armprop, &legprop); + + if(player[pnum].creature==wolftype){ + player[pnum].proportionhead=1.1*headprop; + player[pnum].proportionbody=1.1*bodyprop; + player[pnum].proportionarms=1.1*armprop; + player[pnum].proportionlegs=1.1*legprop; + } + + if(player[pnum].creature==rabbittype){ + player[pnum].proportionhead=1.2*headprop; + player[pnum].proportionbody=1.05*bodyprop; + player[pnum].proportionarms=1.00*armprop; + player[pnum].proportionlegs=1.1*legprop; + player[pnum].proportionlegs.y=1.05*legprop; + } +} + +static void ch_proportion(Game *game, const char *args) +{ + set_proportion(0, args); +} + +static void ch_proportionnear(Game *game, const char *args) +{ + int closest = find_closest(); + if (closest) + set_proportion(closest, args); +} + +static void set_protection(int pnum, const char *args) +{ + float head, high, low; + sscanf(args, "%f%f%f", &head, &high, &low); + + player[pnum].protectionhead = head; + player[pnum].protectionhigh = high; + player[pnum].protectionlow = low; +} + +static void ch_protection(Game *game, const char *args) +{ + set_protection(0, args); +} + +static void ch_protectionnear(Game *game, const char *args) +{ + int closest = find_closest(); + if (closest) + set_protection(closest, args); +} + +static void set_armor(int pnum, const char *args) +{ + float head, high, low; + sscanf(args, "%f%f%f", &head, &high, &low); + + player[pnum].armorhead = head; + player[pnum].armorhigh = high; + player[pnum].armorlow = low; +} + +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); + + 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); +} + +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); +} + +static void ch_noclothes(Game *game, const char *args) +{ + set_noclothes(0, game, args); +} + +static void ch_noclothesnear(Game *game, const char *args) +{ + int closest = find_closest(); + if (closest) + set_noclothes(closest, game, args); +} + + +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); +} + +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"); +} + +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"); +} + +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); +} + +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); +} + +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); +} + +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); +} + +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); +} + +static void ch_hostile(Game *game, const char *args) +{ + hostile = atoi(args); +} + +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--; +} + +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; + } +} + +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; + } +} + +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++; +} + +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(); +} + +static void ch_fixtype(Game *game, const char *args) +{ + int dlg; + sscanf(args, "%d", &dlg); + dialoguetype[0] = dlg; +} + +static void ch_fixrotation(Game *game, const char *args) +{ + participantrotation[whichdialogue][participantfocus[whichdialogue][indialogue]]=player[participantfocus[whichdialogue][indialogue]].rotation; +} + +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; +} + +static void ch_allimmobile(Game *game, const char *args) +{ + for (int i = 1; i < numplayers; i++) + player[i].immobile = 1; +} + +static void ch_mobile(Game *game, const char *args) +{ + player[0].immobile = 0; +} + +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; + } + + 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; +} + +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(); + + terrain.DoShadows(); + objects.DoShadows(); +} + +static void ch_skylight(Game *game, const char *args) +{ + sscanf(args, "%f%f%f", &skyboxlightr, &skyboxlightg, &skyboxlightb); + + game->SetUpLighting(); + + terrain.DoShadows(); + objects.DoShadows(); +} + +static void ch_skybox(Game *game, const char *args) +{ + skyboxtexture = !skyboxtexture; + + game->SetUpLighting(); + + terrain.DoShadows(); + objects.DoShadows(); +} + +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); + } +} + + + +/********************> Tick() <*****/ extern void ScreenShot(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); + 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); #if defined(_WIN32) mkdir("Screenshots"); @@ -658,10 +1608,10 @@ void Game::Setenvironment(int which) OPENAL_Sample_Free(samp[footstepsound2]); OPENAL_Sample_Free(samp[footstepsound3]); OPENAL_Sample_Free(samp[footstepsound4]); - samp[footstepsound] = OPENAL_Sample_Load(OPENAL_FREE, ":Data:Sounds:footstepsnow1.ogg", OPENAL_HW3D, 0, 0); - samp[footstepsound2] = OPENAL_Sample_Load(OPENAL_FREE, ":Data:Sounds:footstepsnow2.ogg", OPENAL_HW3D, 0, 0); - samp[footstepsound3] = OPENAL_Sample_Load(OPENAL_FREE, ":Data:Sounds:footstepstone1.ogg", OPENAL_HW3D, 0, 0); - samp[footstepsound4] = OPENAL_Sample_Load(OPENAL_FREE, ":Data:Sounds:footstepstone2.ogg", OPENAL_HW3D, 0, 0); + samp[footstepsound] = OPENAL_Sample_Load(OPENAL_FREE, ConvertFileName(":Data:Sounds:footstepsnow1.ogg"), OPENAL_HW3D, 0, 0); + samp[footstepsound2] = OPENAL_Sample_Load(OPENAL_FREE, ConvertFileName(":Data:Sounds:footstepsnow2.ogg"), OPENAL_HW3D, 0, 0); + samp[footstepsound3] = OPENAL_Sample_Load(OPENAL_FREE, ConvertFileName(":Data:Sounds:footstepstone1.ogg"), OPENAL_HW3D, 0, 0); + samp[footstepsound4] = OPENAL_Sample_Load(OPENAL_FREE, ConvertFileName(":Data:Sounds:footstepstone2.ogg"), OPENAL_HW3D, 0, 0); OPENAL_Sample_SetMinMaxDistance(samp[footstepsound], 4.0f, 1000.0f); OPENAL_Sample_SetMinMaxDistance(samp[footstepsound2], 4.0f, 1000.0f); OPENAL_Sample_SetMinMaxDistance(samp[footstepsound3], 4.0f, 1000.0f); @@ -712,10 +1662,10 @@ void Game::Setenvironment(int which) OPENAL_Sample_Free(samp[footstepsound2]); OPENAL_Sample_Free(samp[footstepsound3]); OPENAL_Sample_Free(samp[footstepsound4]); - samp[footstepsound] = OPENAL_Sample_Load(OPENAL_FREE, ":Data:Sounds:footstepsnow1.ogg", OPENAL_HW3D, 0, 0); - samp[footstepsound2] = OPENAL_Sample_Load(OPENAL_FREE, ":Data:Sounds:footstepsnow2.ogg", OPENAL_HW3D, 0, 0); - samp[footstepsound3] = OPENAL_Sample_Load(OPENAL_FREE, ":Data:Sounds:footstepsnow1.ogg", OPENAL_HW3D, 0, 0); - samp[footstepsound4] = OPENAL_Sample_Load(OPENAL_FREE, ":Data:Sounds:footstepsnow2.ogg", OPENAL_HW3D, 0, 0); + samp[footstepsound] = OPENAL_Sample_Load(OPENAL_FREE, ConvertFileName(":Data:Sounds:footstepsnow1.ogg"), OPENAL_HW3D, 0, 0); + samp[footstepsound2] = OPENAL_Sample_Load(OPENAL_FREE, ConvertFileName(":Data:Sounds:footstepsnow2.ogg"), OPENAL_HW3D, 0, 0); + samp[footstepsound3] = OPENAL_Sample_Load(OPENAL_FREE, ConvertFileName(":Data:Sounds:footstepsnow1.ogg"), OPENAL_HW3D, 0, 0); + samp[footstepsound4] = OPENAL_Sample_Load(OPENAL_FREE, ConvertFileName(":Data:Sounds:footstepsnow2.ogg"), OPENAL_HW3D, 0, 0); OPENAL_Sample_SetMinMaxDistance(samp[footstepsound], 4.0f, 1000.0f); OPENAL_Sample_SetMinMaxDistance(samp[footstepsound2], 4.0f, 1000.0f); OPENAL_Sample_SetMinMaxDistance(samp[footstepsound3], 4.0f, 1000.0f); @@ -763,10 +1713,10 @@ void Game::Setenvironment(int which) OPENAL_Sample_Free(samp[footstepsound2]); OPENAL_Sample_Free(samp[footstepsound3]); OPENAL_Sample_Free(samp[footstepsound4]); - samp[footstepsound] = OPENAL_Sample_Load(OPENAL_FREE, ":Data:Sounds:footstepgrass1.ogg", OPENAL_HW3D, 0, 0); - samp[footstepsound2] = OPENAL_Sample_Load(OPENAL_FREE, ":Data:Sounds:footstepgrass2.ogg", OPENAL_HW3D, 0, 0); - samp[footstepsound3] = OPENAL_Sample_Load(OPENAL_FREE, ":Data:Sounds:footstepstone1.ogg", OPENAL_HW3D, 0, 0); - samp[footstepsound4] = OPENAL_Sample_Load(OPENAL_FREE, ":Data:Sounds:footstepstone2.ogg", OPENAL_HW3D, 0, 0); + samp[footstepsound] = OPENAL_Sample_Load(OPENAL_FREE, ConvertFileName(":Data:Sounds:footstepgrass1.ogg"), OPENAL_HW3D, 0, 0); + samp[footstepsound2] = OPENAL_Sample_Load(OPENAL_FREE, ConvertFileName(":Data:Sounds:footstepgrass2.ogg"), OPENAL_HW3D, 0, 0); + samp[footstepsound3] = OPENAL_Sample_Load(OPENAL_FREE, ConvertFileName(":Data:Sounds:footstepstone1.ogg"), OPENAL_HW3D, 0, 0); + samp[footstepsound4] = OPENAL_Sample_Load(OPENAL_FREE, ConvertFileName(":Data:Sounds:footstepstone2.ogg"), OPENAL_HW3D, 0, 0); OPENAL_Sample_SetMinMaxDistance(samp[footstepsound], 4.0f, 1000.0f); OPENAL_Sample_SetMinMaxDistance(samp[footstepsound2], 4.0f, 1000.0f); OPENAL_Sample_SetMinMaxDistance(samp[footstepsound3], 4.0f, 1000.0f); @@ -885,9 +1835,12 @@ void Game::Loadlevel(char *name){ OPENAL_SetPaused(channels[whooshsound], true); OPENAL_SetPaused(channels[stream_firesound], true); + // Change the map filename into something that is os specific + char *FixedFN = ConvertFileName(name); + int mapvers; FILE *tfile; - tfile=fopen( name, "rb" ); + tfile=fopen( FixedFN, "rb" ); if(tfile) { OPENAL_SetPaused(channels[stream_firesound], true); @@ -1385,52 +2338,7 @@ void Game::Loadlevel(char *name){ //if(!player[i].loaded)player[i].skeleton.skinText = new GLubyte[texsize]; //player[i].skeleton.skinText.resize(texsize); - if(player[i].creature==rabbittype) - { - if(player[i].whichskin==0){ - LoadTextureSave(":Data:Textures:Fur3.jpg",&player[i].skeleton.drawmodel.textureptr,1,&player[i].skeleton.skinText[0],&player[i].skeleton.skinsize); - } - else if(player[i].whichskin==1){ - LoadTextureSave(":Data:Textures:Fur.jpg",&player[i].skeleton.drawmodel.textureptr,1,&player[i].skeleton.skinText[0],&player[i].skeleton.skinsize); - } - else if(player[i].whichskin==2){ - LoadTextureSave(":Data:Textures:Fur2.jpg",&player[i].skeleton.drawmodel.textureptr,1,&player[i].skeleton.skinText[0],&player[i].skeleton.skinsize); - } - else if(player[i].whichskin==3){ - LoadTextureSave(":Data:Textures:Lynx.jpg",&player[i].skeleton.drawmodel.textureptr,1,&player[i].skeleton.skinText[0],&player[i].skeleton.skinsize); - } - else if(player[i].whichskin==4){ - LoadTextureSave(":Data:Textures:Otter.jpg",&player[i].skeleton.drawmodel.textureptr,1,&player[i].skeleton.skinText[0],&player[i].skeleton.skinsize); - } - else if(player[i].whichskin==5){ - LoadTextureSave(":Data:Textures:Opal.jpg",&player[i].skeleton.drawmodel.textureptr,1,&player[i].skeleton.skinText[0],&player[i].skeleton.skinsize); - } - else if(player[i].whichskin==6){ - LoadTextureSave(":Data:Textures:Sable.jpg",&player[i].skeleton.drawmodel.textureptr,1,&player[i].skeleton.skinText[0],&player[i].skeleton.skinsize); - } - else if(player[i].whichskin==7){ - LoadTextureSave(":Data:Textures:Chocolate.jpg",&player[i].skeleton.drawmodel.textureptr,1,&player[i].skeleton.skinText[0],&player[i].skeleton.skinsize); - } - else if(player[i].whichskin==8){ - LoadTextureSave(":Data:Textures:BW2.jpg",&player[i].skeleton.drawmodel.textureptr,1,&player[i].skeleton.skinText[0],&player[i].skeleton.skinsize); - } - else if(player[i].whichskin==9){ - LoadTextureSave(":Data:Textures:WB2.jpg",&player[i].skeleton.drawmodel.textureptr,1,&player[i].skeleton.skinText[0],&player[i].skeleton.skinsize); - } - } - if(player[i].creature==wolftype) - { - //k=abs(Random()%3); - if(player[i].whichskin==0){ - LoadTextureSave(":Data:Textures:Wolf.jpg",&player[i].skeleton.drawmodel.textureptr,1,&player[i].skeleton.skinText[0],&player[i].skeleton.skinsize); - } - else if(player[i].whichskin==1){ - LoadTextureSave(":Data:Textures:Darkwolf.jpg",&player[i].skeleton.drawmodel.textureptr,1,&player[i].skeleton.skinText[0],&player[i].skeleton.skinsize); - } - else if(player[i].whichskin==2){ - LoadTextureSave(":Data:Textures:Snowwolf.jpg",&player[i].skeleton.drawmodel.textureptr,1,&player[i].skeleton.skinText[0],&player[i].skeleton.skinsize); - } - } + LoadTextureSave(creatureskin[player[i].creature][player[i].whichskin],&player[i].skeleton.drawmodel.textureptr,1,&player[i].skeleton.skinText[0],&player[i].skeleton.skinsize); if(player[i].numclothes) { @@ -1684,43 +2592,12 @@ void Game::Tick() 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); - OPENAL_SetVolume(channels[consolesuccesssound], 256); - OPENAL_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; } @@ -1732,6 +2609,43 @@ void Game::Tick() static bool mainmenutogglekeydown; + + if (IsKeyDown(theKeyMap, MAC_F6_KEY) && !freezetogglekeydown) { + if (IsKeyDown(theKeyMap, MAC_SHIFT_KEY)) { + stereoreverse=true; + } else { + stereoreverse=false; + } + + if (stereoreverse) { + printf("Stereo reversed\n"); + } else { + printf("Stereo unreversed\n"); + } + freezetogglekeydown=1; + } + + if (IsKeyDown(theKeyMap, MAC_F7_KEY)) { + if (IsKeyDown(theKeyMap, MAC_SHIFT_KEY)) { + stereoseparation -= 0.001; + } else { + stereoseparation -= 0.010; + } + + printf("Stereo decreased increased to %f\n", stereoseparation); + } + + if (IsKeyDown(theKeyMap, MAC_F8_KEY)) { + if (IsKeyDown(theKeyMap, MAC_SHIFT_KEY)) { + stereoseparation += 0.001; + } else { + stereoseparation += 0.010; + } + + printf("Stereo separation increased to %f\n", stereoseparation); + } + + if(!console){ if(mainmenu&&endgame==1)mainmenu=10; if(IsKeyDown(theKeyMap, MAC_ESCAPE_KEY)&&!mainmenutogglekeydown&&(mainmenu==7&&entername)){ @@ -1743,7 +2657,7 @@ void Game::Tick() 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)){ + 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==13||mainmenu==17||mainmenu==10)){ selected=-1; if(mainmenu==1||mainmenu==2||mainmenu==0){ if(mainmenu==0&&!winfreeze)mainmenu=2; @@ -1871,90 +2785,12 @@ void Game::Tick() if(newdetail>2)newdetail=detail; if(newdetail<0)newdetail=detail; -#if !USE_SDL // we'll take anything that works. - if(newscreenwidth>3000)newscreenwidth=screenwidth; - if(newscreenheight>3000)newscreenheight=screenheight; -#endif if(newscreenwidth<0)newscreenwidth=screenwidth; if(newscreenheight<0)newscreenheight=screenheight; - ofstream opstream(ConvertFileName(":Data:config.txt", "w")); - 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); } - if(mainmenu==4||mainmenu==5||mainmenu==6||mainmenu==7||mainmenu==9||mainmenu==12||mainmenu==13||mainmenu==14||mainmenu==10||mainmenu==11||mainmenu==100){ + if(mainmenu==4||mainmenu==5||mainmenu==6||mainmenu==7||mainmenu==9||mainmenu==13||mainmenu==10||mainmenu==11||mainmenu==100){ float gLoc[3]={0,0,0}; float vel[3]={0,0,0}; OPENAL_Sample_SetMinMaxDistance(samp[fireendsound], 9999.0f, 99999.0f); @@ -1979,9 +2815,7 @@ void Game::Tick() 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; @@ -2111,7 +2945,7 @@ void Game::Tick() if(!gameon){ //quit tryquit=1; - if(registered)OPENAL_SetPaused(channels[stream_music3], true); + OPENAL_SetPaused(channels[stream_music3], true); } else{ //end game @@ -2135,7 +2969,7 @@ void Game::Tick() OPENAL_Sample_SetMinMaxDistance(samp[firestartsound], 8.0f, 2000.0f); } if(Button()&&!oldbutton&&selected==0){ - #if USE_SDL + extern SDL_Rect **resolutions; bool isCustomResolution = true; bool found = false; @@ -2180,56 +3014,7 @@ void Game::Tick() newscreenheight = (int) resolutions[0]->h; } - #else - 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(newscreenwidth==1920&&newscreenheight==1200)whichres=8; - - if(whichres==-1||whichres==8){ - 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(whichres==7){ - newscreenwidth=1920; - newscreenheight=1200; - } - #endif + } if(Button()&&!oldbutton&&selected==1){ newdetail++; @@ -2320,90 +3105,11 @@ void Game::Tick() if(newdetail>2)newdetail=detail; if(newdetail<0)newdetail=detail; -#if !USE_SDL // we'll take anything that works. - if(newscreenwidth>3000)newscreenwidth=screenwidth; - if(newscreenheight>3000)newscreenheight=screenheight; -#endif if(newscreenwidth<0)newscreenwidth=screenwidth; if(newscreenheight<0)newscreenheight=screenheight; - ofstream opstream(ConvertFileName(":Data:config.txt", "w")); - 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); if(mainmenu==3&&gameon)mainmenu=2; if(mainmenu==3&&!gameon)mainmenu=1; } @@ -2490,33 +3196,6 @@ void Game::Tick() } if(mainmenu==5){ - if(accountcampaignchoicesmade[accountactive]>8&&!registered){ - OPENAL_SetFrequency(OPENAL_ALL, 0.001); - PlayStreamEx( stream_music3, strm[stream_music3], NULL, true); - OPENAL_SetPaused(channels[stream_music3], false); - OPENAL_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}; - OPENAL_Sample_SetMinMaxDistance(samp[fireendsound], 9999.0f, 99999.0f); - PlaySoundEx( fireendsound, samp[fireendsound], NULL, true); - OPENAL_3D_SetAttributes(channels[fireendsound], gLoc, vel); - OPENAL_SetVolume(channels[fireendsound], 256); - OPENAL_SetPaused(channels[fireendsound], false); - OPENAL_Sample_SetMinMaxDistance(samp[fireendsound], 8.0f, 2000.0f); - - flashr=1; - flashg=0; - flashb=0; - flashamount=1; - flashdelay=1; - } if(endgame==2){ accountcampaignchoicesmade[accountactive]=0; @@ -2814,105 +3493,17 @@ void Game::Tick() 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}; - OPENAL_Sample_SetMinMaxDistance(samp[fireendsound], 9999.0f, 99999.0f); - PlaySoundEx( fireendsound, samp[fireendsound], NULL, true); - OPENAL_3D_SetAttributes(channels[fireendsound], gLoc, vel); - OPENAL_SetVolume(channels[fireendsound], 256); - OPENAL_SetPaused(channels[fireendsound], false); - OPENAL_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}; - OPENAL_Sample_SetMinMaxDistance(samp[fireendsound], 9999.0f, 99999.0f); - PlaySoundEx( fireendsound, samp[fireendsound], NULL, true); - OPENAL_3D_SetAttributes(channels[fireendsound], gLoc, vel); - OPENAL_SetVolume(channels[fireendsound], 256); - OPENAL_SetPaused(channels[fireendsound], false); - OPENAL_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}; - OPENAL_Sample_SetMinMaxDistance(samp[fireendsound], 9999.0f, 99999.0f); - PlaySoundEx( fireendsound, samp[fireendsound], NULL, true); - OPENAL_3D_SetAttributes(channels[fireendsound], gLoc, vel); - OPENAL_SetVolume(channels[fireendsound], 256); - OPENAL_SetPaused(channels[fireendsound], false); - OPENAL_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}; - OPENAL_Sample_SetMinMaxDistance(samp[fireendsound], 9999.0f, 99999.0f); - PlaySoundEx( fireendsound, samp[fireendsound], NULL, true); - OPENAL_3D_SetAttributes(channels[fireendsound], gLoc, vel); - OPENAL_SetVolume(channels[fireendsound], 256); - OPENAL_SetPaused(channels[fireendsound], false); - OPENAL_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}; - OPENAL_Sample_SetMinMaxDistance(samp[firestartsound], 9999.0f, 99999.0f); - PlaySoundEx( firestartsound, samp[firestartsound], NULL, true); - OPENAL_3D_SetAttributes(channels[firestartsound], gLoc, vel); - OPENAL_SetVolume(channels[firestartsound], 256); - OPENAL_SetPaused(channels[firestartsound], false); - OPENAL_Sample_SetMinMaxDistance(samp[firestartsound], 8.0f, 2000.0f); - } + if(mainmenu==6){ + if(Button()&&!oldbutton&&selected!=-1){ + float gLoc[3]={0,0,0}; + float vel[3]={0,0,0}; + OPENAL_Sample_SetMinMaxDistance(samp[firestartsound], 9999.0f, 99999.0f); + PlaySoundEx( firestartsound, samp[firestartsound], NULL, true); + OPENAL_3D_SetAttributes(channels[firestartsound], gLoc, vel); + OPENAL_SetVolume(channels[firestartsound], 256); + OPENAL_SetPaused(channels[firestartsound], false); + OPENAL_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}; @@ -3068,88 +3659,10 @@ void Game::Tick() if(mainmenu==3){ if(newdetail>2)newdetail=detail; if(newdetail<0)newdetail=detail; -#if !USE_SDL // we'll take anything that works. - if(newscreenwidth>3000)newscreenwidth=screenwidth; - if(newscreenheight>3000)newscreenheight=screenheight; -#endif if(newscreenwidth<0)newscreenwidth=screenwidth; if(newscreenheight<0)newscreenheight=screenheight; - ofstream opstream(ConvertFileName(":Data:config.txt", "w")); - 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); } } @@ -3164,7 +3677,7 @@ void Game::Tick() } OPENAL_SetFrequency(channels[stream_music3], 22050); - if(entername||mainmenu==13||mainmenu==14){ + if(entername){ for(i=0;i<140;i++){ if(IsKeyDown(theKeyMap, i)){ togglekeydelay[i]+=multiplier; @@ -3250,114 +3763,13 @@ void Game::Tick() displayselected=0; }} - if(i==MAC_RETURN_KEY&&mainmenu==14){ - if(displaychars[0]){ - char serialstring[256]; - char tempstring[256]; - #if defined(__APPLE__) - sprintf (tempstring, "%s", registrationname); - #elif defined(_WIN32) || defined(__linux__) - sprintf (tempstring, "%s-windows", registrationname); - #else - #error Please make sure you have the right registration key stuff here! - #endif - long num1; - long num2; - long num3; - long num4; - long long longnum; - longnum = MD5_string ( tempstring); - //longnum = 1111111111111111; - num1 = longnum/100000000; - num2 = longnum%100000000; - sprintf (tempstring, "%d-%d-%d-%d\0\0\0\0\0", num1/10000, num1%10000, num2/10000, num2%10000); - - int goodcode=3; - int numchars=3; - if(num1/10000>999)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&&displayselected.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); - OPENAL_SetVolume(channels[consolesuccesssound], 256); - OPENAL_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); - OPENAL_SetVolume(channels[consolesuccesssound], 256); - OPENAL_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;j1&&numplayers0&&player[j].num_weapons<5) - for(k=0;k0&&player[0].num_weapons<5) - for(j=0;j1&&numplayers0&&player[j].num_weapons<5) - for(k=0;k0&&player[0].num_weapons<5) - for(j=0;j1&&numplayers0&&player[j].num_weapons<5) - for(k=0;k1) - for(i=1;i1) - for(i=1;i> 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(); - - donesomething=1; - } - - 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); - - startpoint=j+1; - - donesomething=1; - } - - - if(Compare(consoletext[0],"fixrotation ",0,11)){ - participantrotation[whichdialogue][participantfocus[whichdialogue][indialogue]]=player[participantfocus[whichdialogue][indialogue]].rotation; - - donesomething=1; - } - - if(Compare(consoletext[0],"ddialogue ",0,9)){ - numdialogues--; - if(numdialogues<0)numdialogues=0; - - donesomething=1; - } - - if(Compare(consoletext[0],"immobile ",0,8)){ - player[0].immobile=1; - donesomething=1; - } - - if(Compare(consoletext[0],"mobile ",0,6)){ - player[0].immobile=0; - donesomething=1; - } - - 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(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; - - 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(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; - 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); - } - - editoractive=typeactive; - player[0].immobile=0; - - - - donesomething=1; - } - - 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'; - - tintr=atof(mapname); - - 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'; - - tintg=atof(mapname); - - 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'; - - tintb=atof(mapname); - - donesomething=1; - } - - 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'; - - skyboxr=atof(mapname); - - 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'; - - skyboxg=atof(mapname); - - 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'; - - skyboxlightr=atof(mapname); - - 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'; - - skyboxlightg=atof(mapname); - - 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; - } - - 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'; - - player[0].protectionhead=atof(mapname); - - 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); - - 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].protectionlow=atof(mapname); - - donesomething=1; - } - - 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'; - - player[0].armorhead=atof(mapname); - - 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].armorhigh=atof(mapname); - - 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].armorlow=atof(mapname); - - donesomething=1; - } - - if(Compare(consoletext[0],"protectionreset ",0,15)||Compare(consoletext[0],"Protectionreset ",0,15)){ - for(i=0;i1) - for(i=1;i1) - for(i=1;i1) - for(i=1;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&&displayselected1) - for(i=1;i.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]; } - if(Compare(consoletext[0],"darkwolf ",0,8)){ - LoadTextureSave(":Data:Textures:DarkWolf.jpg",&player[0].skeleton.drawmodel.textureptr,1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize); - donesomething=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]; } - if(Compare(consoletext[0],"snowwolf ",0,8)){ - LoadTextureSave(":Data:Textures:Snowwolf.jpg",&player[0].skeleton.drawmodel.textureptr,1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize); - donesomething=1; - }/* - if(Compare(consoletext[0],"lizardwolf ",0,10)){ - LoadTextureSave(":Data:Textures:Lizardwolf.jpg",&player[0].skeleton.drawmodel.textureptr,1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize); - donesomething=1; - }*/ - if(Compare(consoletext[0],"white ",0,5)){ - LoadTextureSave(":Data:Textures:fur.jpg",&player[0].skeleton.drawmodel.textureptr,1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize); - donesomething=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]; } - if(Compare(consoletext[0],"brown ",0,5)){ - LoadTextureSave(":Data:Textures:fur3.jpg",&player[0].skeleton.drawmodel.textureptr,1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize); - donesomething=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(Compare(consoletext[0],"black ",0,5)){ - LoadTextureSave(":Data:Textures:fur2.jpg",&player[0].skeleton.drawmodel.textureptr,1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize); - donesomething=1; + } + 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&&consoleselected0){ for(k=14;k>=1;k--){ for(j=0;j<255;j++){ @@ -5685,12 +3997,6 @@ void Game::Tick() } consolechars[0]=0; consoleselected=0; - - if(!donesomething){ - PlaySoundEx( consolefailsound, samp[consolefailsound], NULL, true); - OPENAL_SetVolume(channels[consolefailsound], 256); - OPENAL_SetPaused(channels[consolefailsound], false); - } } } } @@ -5714,10 +4020,6 @@ void Game::Tick() if(mainmenu==3){ if(newdetail>2)newdetail=detail; if(newdetail<0)newdetail=detail; -#if !USE_SDL // we'll take anything that works. - if(newscreenwidth>3000)newscreenwidth=screenwidth; - if(newscreenheight>3000)newscreenheight=screenheight; -#endif if(newscreenwidth<0)newscreenwidth=screenwidth; if(newscreenheight<0)newscreenheight=screenheight; @@ -5795,6 +4097,12 @@ void Game::Tick() opstream << KeyToChar(attackkey); opstream << "\nChat key:\n"; opstream << KeyToChar(chatkey); + opstream << "\nStereoMode:\n"; + opstream << stereomode; + opstream << "\nStereoSeparation:\n"; + opstream << stereoseparation; + opstream << "\nStereoReverse:\n"; + opstream << stereoreverse; opstream.close(); } } @@ -7504,50 +5812,8 @@ void Game::Tick() if(player[closest].whichskin>9)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){ @@ -11000,55 +9266,7 @@ void Game::TickOnce(){ if(rotation2<-70)rotation2=-70; } if(mainmenu)rotation+=multiplier*5; - if(!mainmenu&&!indemo&&!registered){ - OPENAL_SetFrequency(OPENAL_ALL, 0.001); - PlayStreamEx( stream_music3, strm[stream_music3], NULL, true); - OPENAL_SetPaused(channels[stream_music3], false); - OPENAL_SetVolume(channels[stream_music3], 256); - - gameon=0; - mainmenu=12; - - float gLoc[3]={0,0,0}; - float vel[3]={0,0,0}; - OPENAL_Sample_SetMinMaxDistance(samp[fireendsound], 9999.0f, 99999.0f); - PlaySoundEx( fireendsound, samp[fireendsound], NULL, true); - OPENAL_3D_SetAttributes(channels[fireendsound], gLoc, vel); - OPENAL_SetVolume(channels[fireendsound], 256); - OPENAL_SetPaused(channels[fireendsound], false); - OPENAL_Sample_SetMinMaxDistance(samp[fireendsound], 8.0f, 2000.0f); - - flashr=1; - flashg=0; - flashb=0; - flashamount=1; - flashdelay=1; - } - - if(tryquit==1&&!registered&&mainmenu!=12){ - OPENAL_SetFrequency(OPENAL_ALL, 0.001); - PlayStreamEx( stream_music3, strm[stream_music3], NULL, true); - OPENAL_SetPaused(channels[stream_music3], false); - OPENAL_SetVolume(channels[stream_music3], 256); - - gameon=0; - mainmenu=12; - - float gLoc[3]={0,0,0}; - float vel[3]={0,0,0}; - OPENAL_Sample_SetMinMaxDistance(samp[fireendsound], 9999.0f, 99999.0f); - PlaySoundEx( fireendsound, samp[fireendsound], NULL, true); - OPENAL_3D_SetAttributes(channels[fireendsound], gLoc, vel); - OPENAL_SetVolume(channels[fireendsound], 256); - OPENAL_SetPaused(channels[fireendsound], false); - OPENAL_Sample_SetMinMaxDistance(samp[fireendsound], 8.0f, 2000.0f); - - flashr=1; - flashg=0; - flashb=0; - flashamount=1; - flashdelay=1; - } + //} } @@ -11371,32 +9589,7 @@ void Game::TickOnceAfter(){ } 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){ - OPENAL_SetFrequency(OPENAL_ALL, 0.001); - PlayStreamEx( stream_music3, strm[stream_music3], NULL, true); - OPENAL_SetPaused(channels[stream_music3], false); - OPENAL_SetVolume(channels[stream_music3], 256); - - gameon=0; - mainmenu=12; - accountprogress[accountactive]=3; - - float gLoc[3]={0,0,0}; - float vel[3]={0,0,0}; - OPENAL_Sample_SetMinMaxDistance(samp[fireendsound], 9999.0f, 99999.0f); - PlaySoundEx( fireendsound, samp[fireendsound], NULL, true); - OPENAL_3D_SetAttributes(channels[fireendsound], gLoc, vel); - OPENAL_SetVolume(channels[fireendsound], 256); - OPENAL_SetPaused(channels[fireendsound], false); - OPENAL_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;