X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=Source%2FGameTick.cpp;h=8010f4f265d014dec90a00ff7afec107f47f575c;hb=ca0addc190070545ea6204dfb4132f196d7acd1c;hp=5a22e08414398df609904e75c23c83ba44fe1f02;hpb=9b02e6c2c1987b983584afc69e60ae2efa5dccc7;p=lugaru.git diff --git a/Source/GameTick.cpp b/Source/GameTick.cpp index 5a22e08..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; @@ -222,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"); @@ -647,43 +1599,43 @@ void Game::Setenvironment(int which) OPENAL_SetVolume(channels[stream_wind], 256); } - LoadTexture("/Data/Textures/snowtree.png",&objects.treetextureptr,0,1); - LoadTexture("/Data/Textures/bushsnow.png",&objects.bushtextureptr,0,1); - LoadTexture("/Data/Textures/bouldersnow.jpg",&objects.rocktextureptr,1,0); - LoadTexture("/Data/Textures/snowbox.jpg",&objects.boxtextureptr,1,0); + LoadTexture(":Data:Textures:snowtree.png",&objects.treetextureptr,0,1); + LoadTexture(":Data:Textures:bushsnow.png",&objects.bushtextureptr,0,1); + LoadTexture(":Data:Textures:bouldersnow.jpg",&objects.rocktextureptr,1,0); + LoadTexture(":Data:Textures:snowbox.jpg",&objects.boxtextureptr,1,0); OPENAL_Sample_Free(samp[footstepsound]); 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); OPENAL_Sample_SetMinMaxDistance(samp[footstepsound4], 4.0f, 1000.0f); - LoadTexture("/Data/Textures/snow.jpg",&terraintexture,1,0); + LoadTexture(":Data:Textures:snow.jpg",&terraintexture,1,0); - LoadTexture("/Data/Textures/rock.jpg",&terraintexture2,1,0); + LoadTexture(":Data:Textures:rock.jpg",&terraintexture2,1,0); - //LoadTexture("/Data/Textures/detailgrain.png",&terraintexture3,1); + //LoadTexture(":Data:Textures:detailgrain.png",&terraintexture3,1); temptexdetail=texdetail; if(texdetail>1)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"); + 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"); @@ -693,10 +1645,10 @@ void Game::Setenvironment(int which) 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); + 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); if(ambientsound){ @@ -710,33 +1662,33 @@ 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); OPENAL_Sample_SetMinMaxDistance(samp[footstepsound4], 4.0f, 1000.0f); - LoadTexture("/Data/Textures/sand.jpg",&terraintexture,1,0); + LoadTexture(":Data:Textures:sand.jpg",&terraintexture,1,0); - LoadTexture("/Data/Textures/sandslope.jpg",&terraintexture2,1,0); + LoadTexture(":Data:Textures:sandslope.jpg",&terraintexture2,1,0); - //LoadTexture("/Data/Textures/detailgrain.png",&terraintexture3,1); + //LoadTexture(":Data:Textures:detailgrain.png",&terraintexture3,1); 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"); + 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"); @@ -746,10 +1698,10 @@ void Game::Setenvironment(int which) 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); + 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); if(ambientsound){ PlayStreamEx( stream_wind, strm[stream_wind], NULL, true); @@ -761,33 +1713,33 @@ 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); OPENAL_Sample_SetMinMaxDistance(samp[footstepsound4], 4.0f, 1000.0f); - LoadTexture("/Data/Textures/grassdirt.jpg",&terraintexture,1,0); + LoadTexture(":Data:Textures:grassdirt.jpg",&terraintexture,1,0); - LoadTexture("/Data/Textures/mossrock.jpg",&terraintexture2,1,0); + LoadTexture(":Data:Textures:mossrock.jpg",&terraintexture2,1,0); - //LoadTexture("/Data/Textures/detail.png",&terraintexture3,1); + //LoadTexture(":Data:Textures:detail.png",&terraintexture3,1); 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"); + 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"); @@ -795,7 +1747,7 @@ void Game::Setenvironment(int which) } temptexdetail=texdetail; texdetail=1; - terrain.load("/Data/Textures/heightmap.png"); + terrain.load(":Data:Textures:heightmap.png"); texdetail=temptexdetail; } @@ -804,24 +1756,24 @@ void Game::Setenvironment(int which) void Game::Loadlevel(int which){ stealthloading=0; - 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"); + 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"); whichlevel=which; } @@ -883,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); @@ -899,7 +1854,7 @@ void Game::Loadlevel(char *name){ won=0; //campaign=0; - animation[bounceidleanim].Load((char *)"/Data/Animations/Idle",middleheight,neutral); + animation[bounceidleanim].Load((char *)":Data:Animations:Idle",middleheight,neutral); numdialogues=0; @@ -1365,15 +2320,15 @@ void Game::Loadlevel(char *name){ //if(Random()%2==0)player[i].creature=wolftype; //else player[i].creature=rabbittype; if(i==0&&mapvers<9)player[i].creature=rabbittype; - if(player[i].creature!=wolftype)player[i].skeleton.Load((char *)"/Data/Skeleton/Basic Figure",(char *)"/Data/Skeleton/Basic Figurelow",(char *)"/Data/Skeleton/Rabbitbelt",(char *)"/Data/Models/Body.solid",(char *)"/Data/Models/Body2.solid",(char *)"/Data/Models/Body3.solid",(char *)"/Data/Models/Body4.solid",(char *)"/Data/Models/Body5.solid",(char *)"/Data/Models/Body6.solid",(char *)"/Data/Models/Body7.solid",(char *)"/Data/Models/Bodylow.solid",(char *)"/Data/Models/Belt.solid",0); + if(player[i].creature!=wolftype)player[i].skeleton.Load((char *)":Data:Skeleton:Basic Figure",(char *)":Data:Skeleton:Basic Figurelow",(char *)":Data:Skeleton:Rabbitbelt",(char *)":Data:Models:Body.solid",(char *)":Data:Models:Body2.solid",(char *)":Data:Models:Body3.solid",(char *)":Data:Models:Body4.solid",(char *)":Data:Models:Body5.solid",(char *)":Data:Models:Body6.solid",(char *)":Data:Models:Body7.solid",(char *)":Data:Models:Bodylow.solid",(char *)":Data:Models:Belt.solid",0); else { if(player[i].creature!=wolftype){ - player[i].skeleton.Load((char *)"/Data/Skeleton/Basic Figure",(char *)"/Data/Skeleton/Basic Figurelow",(char *)"/Data/Skeleton/Rabbitbelt",(char *)"/Data/Models/Body.solid",(char *)"/Data/Models/Body2.solid",(char *)"/Data/Models/Body3.solid",(char *)"/Data/Models/Body4.solid",(char *)"/Data/Models/Body5.solid",(char *)"/Data/Models/Body6.solid",(char *)"/Data/Models/Body7.solid",(char *)"/Data/Models/Bodylow.solid",(char *)"/Data/Models/Belt.solid",1); - LoadTexture("/Data/Textures/Belt.png",&player[i].skeleton.drawmodelclothes.textureptr,1,1); + player[i].skeleton.Load((char *)":Data:Skeleton:Basic Figure",(char *)":Data:Skeleton:Basic Figurelow",(char *)":Data:Skeleton:Rabbitbelt",(char *)":Data:Models:Body.solid",(char *)":Data:Models:Body2.solid",(char *)":Data:Models:Body3.solid",(char *)":Data:Models:Body4.solid",(char *)":Data:Models:Body5.solid",(char *)":Data:Models:Body6.solid",(char *)":Data:Models:Body7.solid",(char *)":Data:Models:Bodylow.solid",(char *)":Data:Models:Belt.solid",1); + LoadTexture(":Data:Textures:Belt.png",&player[i].skeleton.drawmodelclothes.textureptr,1,1); } if(player[i].creature==wolftype){ - player[i].skeleton.Load((char *)"/Data/Skeleton/Basic Figure Wolf",(char *)"/Data/Skeleton/Basic Figure Wolf Low",(char *)"/Data/Skeleton/Rabbitbelt",(char *)"/Data/Models/Wolf.solid",(char *)"/Data/Models/Wolf2.solid",(char *)"/Data/Models/Wolf3.solid",(char *)"/Data/Models/Wolf4.solid",(char *)"/Data/Models/Wolf5.solid",(char *)"/Data/Models/Wolf6.solid",(char *)"/Data/Models/Wolf7.solid",(char *)"/Data/Models/Wolflow.solid",(char *)"/Data/Models/Belt.solid",0); + player[i].skeleton.Load((char *)":Data:Skeleton:Basic Figure Wolf",(char *)":Data:Skeleton:Basic Figure Wolf Low",(char *)":Data:Skeleton:Rabbitbelt",(char *)":Data:Models:Wolf.solid",(char *)":Data:Models:Wolf2.solid",(char *)":Data:Models:Wolf3.solid",(char *)":Data:Models:Wolf4.solid",(char *)":Data:Models:Wolf5.solid",(char *)":Data:Models:Wolf6.solid",(char *)":Data:Models:Wolf7.solid",(char *)":Data:Models:Wolflow.solid",(char *)":Data:Models:Belt.solid",0); } } @@ -1383,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) { @@ -1510,7 +2420,7 @@ void Game::Loadlevel(char *name){ player[i].proportionlegs.z=0; } - player[i].tempanimation.Load((char *)"/Data/Animations/Tempanim",0,0); + player[i].tempanimation.Load((char *)":Data:Animations:Tempanim",0,0); player[i].headmorphness=0; player[i].targetheadmorphness=1; @@ -1649,14 +2559,14 @@ void Game::Loadlevel(char *name){ 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); + /*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) @@ -1682,7 +2592,6 @@ 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; @@ -1700,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)){ @@ -1842,81 +2788,7 @@ void Game::Tick() 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==13||mainmenu==10||mainmenu==11||mainmenu==100){ float gLoc[3]={0,0,0}; @@ -2237,82 +3109,7 @@ void Game::Tick() 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; } @@ -2865,81 +3662,7 @@ void Game::Tick() 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); } } @@ -3048,2306 +3771,220 @@ void Game::Tick() mainmenu=5; flashr=1; - flashg=0; - flashb=0; - flashamount=1; - flashdelay=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); - - for(j=0;j<255;j++){ - displaytext[0][j]=' '; - } - displaychars[0]=0; - - displayselected=0; - }} - } - togglekey[i]=1; - } - else { - togglekey[i]=0; - togglekeydelay[i]=0; - } - } - - displayblinkdelay-=multiplier; - if(displayblinkdelay<=0){ - displayblinkdelay=.3; - displayblink=1-displayblink; - } - } - } - - if(!mainmenu){ - if(hostile==1)hostiletime+=multiplier; - else hostiletime=0; - if(!winfreeze)leveltime+=multiplier; - if(IsKeyDown(theKeyMap, MAC_ESCAPE_KEY)){ - chatting=0; - console=0; - freeze=0; - displaychars[0]=0; - } - - if(IsKeyDown(theKeyMap, chatkey)&&!chattogglekeydown&&!console&&!chatting&&debugmode){ - chatting=1; - chattogglekeydown=1; - togglekey[chatkey]=1; - togglekeydelay[chatkey]=-20; - } - - if(!IsKeyDown(theKeyMap, chatkey)){ - chattogglekeydown=0; - } - - if(chatting){ - 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&&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]; } - - if(Compare(consoletext[0],"Cellophane ",0,10)||Compare(consoletext[0],"cellophane ",0,10)){ - cellophane=1-cellophane; - - if(cellophane){ - for(i=0;i1) - 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++){ @@ -5360,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); - } } } } @@ -5392,7 +4023,7 @@ void Game::Tick() if(newscreenwidth<0)newscreenwidth=screenwidth; if(newscreenheight<0)newscreenheight=screenheight; - ofstream opstream(ConvertFileName("/Data/config.txt", "w")); + ofstream opstream(ConvertFileName(":Data:config.txt", "w")); opstream << "Screenwidth:\n"; opstream << newscreenwidth; opstream << "\nScreenheight:\n"; @@ -5466,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(); } } @@ -7175,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){ @@ -7264,8 +5859,8 @@ void Game::Tick() if(player[closest].creature==rabbittype){ player[closest].skeleton.id=closest; - player[closest].skeleton.Load((char *)"/Data/Skeleton/Basic Figure Wolf",(char *)"/Data/Skeleton/Basic Figure Wolf Low",(char *)"/Data/Skeleton/Rabbitbelt",(char *)"/Data/Models/Wolf.solid",(char *)"/Data/Models/Wolf2.solid",(char *)"/Data/Models/Wolf3.solid",(char *)"/Data/Models/Wolf4.solid",(char *)"/Data/Models/Wolf5.solid",(char *)"/Data/Models/Wolf6.solid",(char *)"/Data/Models/Wolf7.solid",(char *)"/Data/Models/Wolflow.solid",(char *)"/Data/Models/Belt.solid",0); - LoadTextureSave("/Data/Textures/Wolf.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[closest],&player[closest].skeleton.skinsize); + player[closest].skeleton.Load((char *)":Data:Skeleton:Basic Figure Wolf",(char *)":Data:Skeleton:Basic Figure Wolf Low",(char *)":Data:Skeleton:Rabbitbelt",(char *)":Data:Models:Wolf.solid",(char *)":Data:Models:Wolf2.solid",(char *)":Data:Models:Wolf3.solid",(char *)":Data:Models:Wolf4.solid",(char *)":Data:Models:Wolf5.solid",(char *)":Data:Models:Wolf6.solid",(char *)":Data:Models:Wolf7.solid",(char *)":Data:Models:Wolflow.solid",(char *)":Data:Models:Belt.solid",0); + LoadTextureSave(":Data:Textures:Wolf.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[closest],&player[closest].skeleton.skinsize); player[closest].whichskin=0; player[closest].creature=wolftype; @@ -7281,8 +5876,8 @@ void Game::Tick() else { player[closest].skeleton.id=closest; - player[closest].skeleton.Load((char *)"/Data/Skeleton/Basic Figure",(char *)"/Data/Skeleton/Basic Figurelow",(char *)"/Data/Skeleton/Rabbitbelt",(char *)"/Data/Models/Body.solid",(char *)"/Data/Models/Body2.solid",(char *)"/Data/Models/Body3.solid",(char *)"/Data/Models/Body4.solid",(char *)"/Data/Models/Body5.solid",(char *)"/Data/Models/Body6.solid",(char *)"/Data/Models/Body7.solid",(char *)"/Data/Models/Bodylow.solid",(char *)"/Data/Models/Belt.solid",1); - LoadTextureSave("/Data/Textures/Fur3.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize); + player[closest].skeleton.Load((char *)":Data:Skeleton:Basic Figure",(char *)":Data:Skeleton:Basic Figurelow",(char *)":Data:Skeleton:Rabbitbelt",(char *)":Data:Models:Body.solid",(char *)":Data:Models:Body2.solid",(char *)":Data:Models:Body3.solid",(char *)":Data:Models:Body4.solid",(char *)":Data:Models:Body5.solid",(char *)":Data:Models:Body6.solid",(char *)":Data:Models:Body7.solid",(char *)":Data:Models:Bodylow.solid",(char *)":Data:Models:Belt.solid",1); + LoadTextureSave(":Data:Textures:Fur3.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize); player[closest].whichskin=0; player[closest].creature=rabbittype; @@ -7518,13 +6113,13 @@ void Game::Tick() /* if(IsKeyDown(theKeyMap, MAC_S_KEY)&&IsKeyDown(theKeyMap, MAC_COMMAND_KEY)&&!slomotogglekeydown){ FILE *tfile; - //tfile=fopen( "/Data/Maps/mapsave", "wb" ); - if(whichlevel==0)tfile=fopen( "/Data/Maps/map1", "wb" ); - else if(whichlevel==1)tfile=fopen( "/Data/Maps/map2", "wb" ); - else if(whichlevel==2)tfile=fopen( "/Data/Maps/map3", "wb" ); - else if(whichlevel==3)tfile=fopen( "/Data/Maps/map4", "wb" ); - else if(whichlevel==4)tfile=fopen( "/Data/Maps/map5", "wb" ); - else tfile=fopen( "/Data/Maps/mapsave", "wb" ); + //tfile=fopen( ":Data:Maps:mapsave", "wb" ); + if(whichlevel==0)tfile=fopen( ":Data:Maps:map1", "wb" ); + else if(whichlevel==1)tfile=fopen( ":Data:Maps:map2", "wb" ); + else if(whichlevel==2)tfile=fopen( ":Data:Maps:map3", "wb" ); + else if(whichlevel==3)tfile=fopen( ":Data:Maps:map4", "wb" ); + else if(whichlevel==4)tfile=fopen( ":Data:Maps:map5", "wb" ); + else tfile=fopen( ":Data:Maps:mapsave", "wb" ); fwrite( &player[0].coords, 1, sizeof(XYZ), tfile ); fwrite( &player[0].rotation, 1, sizeof(float), tfile ); @@ -7672,7 +6267,7 @@ void Game::Tick() player[numplayers].creature=rabbittype; player[numplayers].howactive=editoractive; player[numplayers].skeleton.id=numplayers; - player[numplayers].skeleton.Load((char *)"/Data/Skeleton/Basic Figure",(char *)"/Data/Skeleton/Basic Figurelow",(char *)"/Data/Skeleton/Rabbitbelt",(char *)"/Data/Models/Body.solid",(char *)"/Data/Models/Body2.solid",(char *)"/Data/Models/Body3.solid",(char *)"/Data/Models/Body4.solid",(char *)"/Data/Models/Body5.solid",(char *)"/Data/Models/Body6.solid",(char *)"/Data/Models/Body7.solid",(char *)"/Data/Models/Bodylow.solid",(char *)"/Data/Models/Belt.solid",1); + player[numplayers].skeleton.Load((char *)":Data:Skeleton:Basic Figure",(char *)":Data:Skeleton:Basic Figurelow",(char *)":Data:Skeleton:Rabbitbelt",(char *)":Data:Models:Body.solid",(char *)":Data:Models:Body2.solid",(char *)":Data:Models:Body3.solid",(char *)":Data:Models:Body4.solid",(char *)":Data:Models:Body5.solid",(char *)":Data:Models:Body6.solid",(char *)":Data:Models:Body7.solid",(char *)":Data:Models:Bodylow.solid",(char *)":Data:Models:Belt.solid",1); //texsize=512*512*3/texdetail/texdetail; //if(!player[numplayers].loaded)player[numplayers].skeleton.skinText = new GLubyte[texsize]; @@ -7680,19 +6275,19 @@ void Game::Tick() k=abs(Random()%2)+1; if(k==0){ - LoadTextureSave("/Data/Textures/Fur3.jpg",&player[numplayers].skeleton.drawmodel.textureptr,1,&player[numplayers].skeleton.skinText[0],&player[numplayers].skeleton.skinsize); + LoadTextureSave(":Data:Textures:Fur3.jpg",&player[numplayers].skeleton.drawmodel.textureptr,1,&player[numplayers].skeleton.skinText[0],&player[numplayers].skeleton.skinsize); player[numplayers].whichskin=0; } else if(k==1){ - LoadTextureSave("/Data/Textures/Fur.jpg",&player[numplayers].skeleton.drawmodel.textureptr,1,&player[numplayers].skeleton.skinText[0],&player[numplayers].skeleton.skinsize); + LoadTextureSave(":Data:Textures:Fur.jpg",&player[numplayers].skeleton.drawmodel.textureptr,1,&player[numplayers].skeleton.skinText[0],&player[numplayers].skeleton.skinsize); player[numplayers].whichskin=1; } else { - LoadTextureSave("/Data/Textures/Fur2.jpg",&player[numplayers].skeleton.drawmodel.textureptr,1,&player[numplayers].skeleton.skinText[0],&player[numplayers].skeleton.skinsize); + LoadTextureSave(":Data:Textures:Fur2.jpg",&player[numplayers].skeleton.drawmodel.textureptr,1,&player[numplayers].skeleton.skinText[0],&player[numplayers].skeleton.skinsize); player[numplayers].whichskin=2; } - LoadTexture("/Data/Textures/Belt.png",&player[numplayers].skeleton.drawmodelclothes.textureptr,1,1); + LoadTexture(":Data:Textures:Belt.png",&player[numplayers].skeleton.drawmodelclothes.textureptr,1,1); player[numplayers].power=1; player[numplayers].speedmult=1; player[numplayers].currentanimation=bounceidleanim; @@ -7758,7 +6353,7 @@ void Game::Tick() player[numplayers].proportionlegs.z=0; } - player[numplayers].tempanimation.Load((char *)"/Data/Animations/Tempanim",0,0); + player[numplayers].tempanimation.Load((char *)":Data:Animations:Tempanim",0,0); player[numplayers].damagetolerance=200; @@ -11034,7 +9629,7 @@ void Game::TickOnceAfter(){ startbonustotal=0; - ifstream ipstream(ConvertFileName("/Data/Campaigns:main.txt")); + ifstream ipstream(ConvertFileName(":Data:Campaigns:main.txt")); //campaignnumlevels=0; //accountcampaignchoicesmade[accountactive]=0; ipstream.ignore(256,':');