#include <ctime>
#include "Game.h"
#include "openal_wrapper.h"
+#include "Settings.h"
+#include "Input.h"
+#include "Animation.h"
using namespace std;
+// Added more evilness needed for MSVC
+#ifdef _MSC_VER
+ #define strncasecmp(s1, s2, n) _strnicmp(s1, s2, n)
+ #define snprintf(buf, size, format, ...) _sprintf_p(buf, size, format)
+#endif
+
+
extern float multiplier;
extern XYZ viewer;
extern int environment;
extern float texscale;
extern Terrain terrain;
-extern OPENAL_SAMPLE *samp[100];
extern int channels[100];
-extern Sprites sprites;
extern int kTextureSize;
extern float screenwidth,screenheight;
extern float gravity;
extern float slomodelay;
extern bool floatjump;
extern float volume;
-extern Animation animation[animation_count];
extern Light light;
extern float texdetail;
extern GLubyte bloodText[512*512*3];
extern float viewdistance;
extern bool freeze;
extern bool autoslomo;
-extern int newnetmessages;
-extern char netmessages[256];
extern bool keyboardfrozen;
extern int netdatanew;
extern bool loadingstuff;
extern char mapname[256];
extern XYZ windvector;
-extern bool buttons[3];
extern bool debugmode;
static int music1;
extern int mainmenu;
extern bool trilinear;
extern bool damageeffects;
extern bool showpoints;
+extern bool showdamagebar; // (des)activate the damage bar
extern bool texttoggle;
extern bool alwaysblur;
extern float gamespeed;
extern int maptype;
extern int editoractive;
extern int editorpathtype;
-extern bool oldbuttons[3];
extern float hostiletime;
extern int kBitsPerPixel;
extern int hostile;
-extern int numaccounts;
-extern int accountactive;
-extern int accountdifficulty[10];
-extern int accountprogress[10];
-extern float accountpoints[10];
-extern float accounthighscore[10][50];
-extern float accountfasttime[10][50];
-extern bool accountunlocked[10][60];
-extern char accountname[10][256];
-
extern bool stillloading;
extern bool winfreeze;
extern float oldgamespeed;
-extern float accountcampaignhighscore[10];
-extern float accountcampaignfasttime[10];
-extern float accountcampaignscore[10];
-extern float accountcampaigntime[10];
+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 int accountcampaignchoicesmade[10];
-extern int accountcampaignchoices[10][5000];
-/********************> Tick() <*****/
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);
-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);
- #if defined(_WIN32)
- mkdir("Screenshots");
- #else
- mkdir("Screenshots", S_IRWXU);
- #endif
+static const char *cmd_names[] = {
+#define DECLARE_COMMAND(cmd) #cmd " ",
+#include "ConsoleCmds.h"
+#undef DECLARE_COMMAND
+};
- ScreenShot(temp/*"Screenshots\\Screenshot.png"*/);
-
- /*FSSpec MAC_file;
- GraphicsExportComponent QT_exporter;
- OSErr MAC_error_code;
- CGrafPtr MAC_currentPort;
- GDHandle MAC_currentDevice;
- unsigned char* MAC_pixels;
- Rect MAC_picture_rectangle;
- GWorldPtr MAC_offscreen_graphics_port;
-
- static int numscreenshots=0;
-
- // Make an FSSpec
- static char buf[256];
- if(numscreenshots==0){
- buf[0]=26;
- buf[1]=':';
- buf[2]='S';
- buf[3]='c';
- buf[4]='r';
- buf[5]='e';
- buf[6]='e';
- buf[7]='n';
- buf[8]='s';
- buf[9]='h';
- buf[10]='o';
- buf[11]='t';
- buf[12]='s';
- buf[13]=':';
- buf[14]='S';
- buf[15]='c';
- buf[16]='r';
- buf[17]='e';
- buf[18]='e';
- buf[19]='n';
- buf[20]='s';
- buf[21]='h';
- buf[22]='o';
- buf[23]='t';
- buf[24]='0';
- buf[25]='0';
- buf[26]='0';
- }
+typedef void (*console_handler)(Game *game, const char *args);
- FInfo *fndrInfo;
- FSMakeFSSpec(0, 0, (unsigned char*)buf, &MAC_file);
- while(!FSpGetFInfo (&MAC_file, fndrInfo)){
- FSMakeFSSpec(0, 0, (unsigned char*)buf, &MAC_file);
- if(!FSpGetFInfo (&MAC_file, fndrInfo)){
- numscreenshots++;
- buf[26]++;
- if(buf[26]==':'){
- buf[26]='0';
- buf[25]++;
- if(buf[25]==':'){
- buf[25]='0';
- buf[24]++;
- if(buf[24]==':'){
- buf[24]='9';
- buf[25]='9';
- buf[26]='9';
- }
- }
- }
- }
- }
+#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;
+}
- // Get the GWorld
- GWorldPtr MAC_gWorld = (CGrafPtr) FrontWindow();
- //assert(MAC_gWorld != NULL);
+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;
+}
- // Allocate memory for loading image
- MAC_pixels = new unsigned char[(int)(screenheight * screenwidth * 4)];
- if (MAC_pixels == NULL) {
- //UTIL_Error("Could not create Texture data.");
- return;
- }
+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;j<player[0].num_weapons;j++){
+ fpackf(tfile, "Bi", weapons.type[player[0].weaponids[j]]);
+ }
+
+ fpackf(tfile, "Bf Bf Bf", player[0].armorhead, player[0].armorhigh, player[0].armorlow);
+ fpackf(tfile, "Bf Bf Bf", player[0].protectionhead, player[0].protectionhigh, player[0].protectionlow);
+ fpackf(tfile, "Bf Bf Bf", player[0].metalhead, player[0].metalhigh, player[0].metallow);
+ fpackf(tfile, "Bf Bf", player[0].power, player[0].speedmult);
+
+ fpackf(tfile, "Bi", player[0].numclothes);
+
+ fpackf(tfile, "Bi Bi", player[0].whichskin, player[0].creature);
+
+ fpackf(tfile, "Bi", numdialogues);
+ for(k=0;k<numdialogues;k++){
+ fpackf(tfile, "Bi", numdialogueboxes[k]);
+ fpackf(tfile, "Bi", dialoguetype[k]);
+ for(l=0;l<10;l++){
+ fpackf(tfile, "Bf Bf Bf", participantlocation[k][l].x, participantlocation[k][l].y, participantlocation[k][l].z);
+ fpackf(tfile, "Bf", participantrotation[k][l]);
+ }
+ for(l=0;l<numdialogueboxes[k];l++){
+ fpackf(tfile, "Bi", dialogueboxlocation[k][l]);
+ fpackf(tfile, "Bf", dialogueboxcolor[k][l][0]);
+ fpackf(tfile, "Bf", dialogueboxcolor[k][l][1]);
+ fpackf(tfile, "Bf", dialogueboxcolor[k][l][2]);
+ fpackf(tfile, "Bi", dialogueboxsound[k][l]);
+
+ templength=strlen(dialoguetext[k][l]);
+ fpackf(tfile, "Bi",(templength));
+ for(m=0;m<templength;m++){
+ fpackf(tfile, "Bb", dialoguetext[k][l][m]);
+ if(dialoguetext[k][l][m]=='\0')break;
+ }
- // Get GWorld
- ::GetGWorld(&MAC_currentPort, &MAC_currentDevice);
+ templength=strlen(dialoguename[k][l]);
+ fpackf(tfile, "Bi",templength);
+ for(m=0;m<templength;m++){
+ fpackf(tfile, "Bb", dialoguename[k][l][m]);
+ if(dialoguename[k][l][m]=='\0')break;
+ }
- // Make a picture Rectangle
- MAC_picture_rectangle.left = 0;
- MAC_picture_rectangle.right = screenwidth;
- MAC_picture_rectangle.top = 0;
- MAC_picture_rectangle.bottom = screenheight;
+ fpackf(tfile, "Bf Bf Bf", dialoguecamera[k][l].x, dialoguecamera[k][l].y, dialoguecamera[k][l].z);
+ fpackf(tfile, "Bi", participantfocus[k][l]);
+ fpackf(tfile, "Bi", participantaction[k][l]);
- // Create new offscreen GWorld
- MAC_error_code = ::QTNewGWorldFromPtr (&MAC_offscreen_graphics_port, k32ARGBPixelFormat, &MAC_picture_rectangle, NULL, NULL, 0, (char *) MAC_pixels, screenwidth * 4);
- if (MAC_error_code) {
- ::SetGWorld(MAC_currentPort, MAC_currentDevice);
- delete MAC_pixels;
- //UTIL_Error("Could not create offscreen GWorld. ");
- return;
+ for(m=0;m<10;m++)
+ fpackf(tfile, "Bf Bf Bf", participantfacing[k][l][m].x, participantfacing[k][l][m].y, participantfacing[k][l][m].z);
+ fpackf(tfile, "Bf Bf",dialoguecamerarotation[k][l],dialoguecamerarotation2[k][l]);
+ }
}
- // Copy OpenGL Context to new GWorld
- glReadBuffer(GL_FRONT);
- glReadPixels(0,0,screenwidth,screenheight,GL_RGBA,GL_UNSIGNED_BYTE,MAC_pixels);
-
- // Swizzle texture
- for (unsigned long byte = 0; byte < screenheight * screenwidth * 4; byte+=4) {
- unsigned char temp = MAC_pixels[byte+0];
- MAC_pixels[byte+0] = MAC_pixels[byte+3];
- MAC_pixels[byte+3] = MAC_pixels[byte+2];
- MAC_pixels[byte+2] = MAC_pixels[byte+1];
- MAC_pixels[byte+1] = temp;
+ for(k=0;k<player[0].numclothes;k++){
+ templength=strlen(player[0].clothes[k]);
+ fpackf(tfile, "Bi", templength);
+ for(l=0;l<templength;l++)
+ fpackf(tfile, "Bb", player[0].clothes[k][l]);
+ fpackf(tfile, "Bf Bf Bf", player[0].clothestintr[k], player[0].clothestintg[k], player[0].clothestintb[k]);
}
- // Flip the image :( This could probably be optimized
- int vert;
- int src_index;
- int dst_index;
- unsigned char temp;
- for (int horz = 0; horz < screenwidth; ++horz)
- for (vert = 0; vert < screenheight / 2; ++vert) {
- src_index = (screenwidth * vert + horz) * 4;
- dst_index = (screenwidth * (screenheight - vert - 1) + horz) * 4;
-
- temp=MAC_pixels[src_index+0];
- MAC_pixels[src_index+0]=MAC_pixels[dst_index+0];
- MAC_pixels[dst_index+0]=temp;
-
- temp=MAC_pixels[src_index+1];
- MAC_pixels[src_index+1]=MAC_pixels[dst_index+1];
- MAC_pixels[dst_index+1]=temp;
-
- temp=MAC_pixels[src_index+2];
- MAC_pixels[src_index+2]=MAC_pixels[dst_index+2];
- MAC_pixels[dst_index+2]=temp;
-
- temp=MAC_pixels[src_index+3];
- MAC_pixels[src_index+3]=MAC_pixels[dst_index+3];
- MAC_pixels[dst_index+3]=temp;
- }
+ fpackf(tfile, "Bi", environment);
+ fpackf(tfile, "Bi", objects.numobjects);
+ for(k=0;k<objects.numobjects;k++){
+ fpackf(tfile, "Bi Bf Bf Bf Bf Bf Bf", objects.type[k], objects.rotation[k], objects.rotation2[k], objects.position[k].x, objects.position[k].y, objects.position[k].z, objects.scale[k]);
+ }
- // Export the Gworld
- MAC_error_code = OpenADefaultComponent(GraphicsExporterComponentType, kQTFileTypeBMP, &QT_exporter);
- if (MAC_error_code) {
- //UTIL_Warning("Unable to export screenshot.");
- ::SetGWorld(MAC_currentPort, MAC_currentDevice);
- ::DisposeGWorld(MAC_offscreen_graphics_port);
- delete MAC_pixels;
- return;
+ fpackf(tfile, "Bi", numhotspots);
+ for(i=0;i<numhotspots;i++){
+ fpackf(tfile, "Bi Bf Bf Bf Bf", hotspottype[i],hotspotsize[i],hotspot[i].x,hotspot[i].y,hotspot[i].z);
+ templength=strlen(hotspottext[i]);
+ fpackf(tfile, "Bi",templength);
+ for(l=0;l<templength;l++)
+ fpackf(tfile, "Bb", hotspottext[i][l]);
}
- MAC_error_code = GraphicsExportSetInputGWorld(QT_exporter,MAC_offscreen_graphics_port);
- if (MAC_error_code) {
- ::CloseComponent(QT_exporter);
- ::SetGWorld(MAC_currentPort, MAC_currentDevice);
- ::DisposeGWorld(MAC_offscreen_graphics_port);
- delete MAC_pixels;
- //UTIL_Warning("Unable to export screenshot.");
- return;
- }
+ fpackf(tfile, "Bi", numplayers);
+ if(numplayers<maxplayers)
+ for(j=1;j<numplayers;j++){
+ fpackf(tfile, "Bi Bi Bf Bf Bf Bi Bi Bf Bb Bf", player[j].whichskin, player[j].creature, player[j].coords.x, player[j].coords.y, player[j].coords.z, player[j].num_weapons, player[j].howactive, player[j].scale, player[j].immobile, player[j].rotation);
+ if(player[j].num_weapons<5)
+ for(k=0;k<player[j].num_weapons;k++){
+ fpackf(tfile, "Bi", weapons.type[player[j].weaponids[k]]);
+ }
+ if(player[j].numwaypoints<30){
+ fpackf(tfile, "Bi", player[j].numwaypoints);
+ for(k=0;k<player[j].numwaypoints;k++){
+ fpackf(tfile, "Bf", player[j].waypoints[k].x);
+ fpackf(tfile, "Bf", player[j].waypoints[k].y);
+ fpackf(tfile, "Bf", player[j].waypoints[k].z);
+ fpackf(tfile, "Bi", player[j].waypointtype[k]);
+ }
+ fpackf(tfile, "Bi", player[j].waypoint);
+ } else {
+ player[j].numwaypoints=0;
+ player[j].waypoint=0;
+ fpackf(tfile, "Bi Bi Bi", player[j].numwaypoints, player[j].waypoint, player[j].waypoint);
+ }
- MAC_error_code = GraphicsExportSetOutputFile(QT_exporter,&MAC_file);
- if (MAC_error_code) {
- ::CloseComponent(QT_exporter);
- ::SetGWorld(MAC_currentPort, MAC_currentDevice);
- ::DisposeGWorld(MAC_offscreen_graphics_port);
- delete MAC_pixels;
- //UTIL_Warning("Unable to export screenshot.");
- return;
- }
+ fpackf(tfile, "Bf Bf Bf", player[j].armorhead, player[j].armorhigh, player[j].armorlow);
+ fpackf(tfile, "Bf Bf Bf", player[j].protectionhead, player[j].protectionhigh, player[j].protectionlow);
+ fpackf(tfile, "Bf Bf Bf", player[j].metalhead, player[j].metalhigh, player[j].metallow);
+ fpackf(tfile, "Bf Bf", player[j].power, player[j].speedmult);
+
+ if(player[j].creature==wolftype) {
+ headprop=player[j].proportionhead.x/1.1;
+ bodyprop=player[j].proportionbody.x/1.1;
+ armprop=player[j].proportionarms.x/1.1;
+ legprop=player[j].proportionlegs.x/1.1;
+ } else if(player[j].creature==rabbittype){
+ headprop=player[j].proportionhead.x/1.2;
+ bodyprop=player[j].proportionbody.x/1.05;
+ armprop=player[j].proportionarms.x/1.00;
+ legprop=player[j].proportionlegs.x/1.1;
+ }
+
+ fpackf(tfile, "Bf Bf Bf Bf", headprop, bodyprop, armprop, legprop);
+
+ fpackf(tfile, "Bi", player[j].numclothes);
+ if(player[j].numclothes)
+ for(k=0;k<player[j].numclothes;k++){
+ int templength;
+ templength=strlen(player[j].clothes[k]);
+ fpackf(tfile, "Bi", templength);
+ for(l=0;l<templength;l++)
+ fpackf(tfile, "Bb", player[j].clothes[k][l]);
+ fpackf(tfile, "Bf Bf Bf", player[j].clothestintr[k], player[j].clothestintg[k], player[j].clothestintb[k]);
+ }
+ }
- MAC_error_code = GraphicsExportDoExport(QT_exporter,NULL);
- if (MAC_error_code) {
- ::CloseComponent(QT_exporter);
- ::SetGWorld(MAC_currentPort, MAC_currentDevice);
- ::DisposeGWorld(MAC_offscreen_graphics_port);
- delete MAC_pixels;
- //UTIL_Warning("Unable to export screenshot.");
- return;
+ fpackf(tfile, "Bi", game->numpathpoints);
+ for(j=0;j<game->numpathpoints;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;k<game->numpathpointconnect[j];k++){
+ fpackf(tfile, "Bi", game->pathpointconnect[j][k]);
+ }
}
- ::CloseComponent(QT_exporter);
- ::SetGWorld(MAC_currentPort, MAC_currentDevice);
- ::DisposeGWorld(MAC_offscreen_graphics_port);
+ fpackf(tfile, "Bf Bf Bf Bf", game->mapcenter.x, game->mapcenter.y, game->mapcenter.z, game->mapradius);
- delete MAC_pixels;*/
+ 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);
+}
-void Game::SetUpLighting(){
- if(environment==snowyenvironment){
- light.color[0]=.65;
- light.color[1]=.65;
- light.color[2]=.7;
- light.ambient[0]=.4;
- light.ambient[1]=.4;
- light.ambient[2]=.44;
- }
- if(environment==desertenvironment){
- light.color[0]=.95;
- light.color[1]=.95;
- light.color[2]=.95;
- light.ambient[0]=.4;
- light.ambient[1]=.35;
- light.ambient[2]=.3;
- }
+static void ch_tintr(Game *game, const char *args)
+{
+ tintr = atof(args);
+}
- if(environment==grassyenvironment){
- light.color[0]=.95;
- light.color[1]=.95;
- light.color[2]=1;
- light.ambient[0]=.4;
- light.ambient[1]=.4;
- light.ambient[2]=.44;
- }
- if(!skyboxtexture){
- light.color[0]=1;
- light.color[1]=1;
- light.color[2]=1;
- light.ambient[0]=.4;
- light.ambient[1]=.4;
- light.ambient[2]=.4;
- }
- float average;
- average=(skyboxlightr+skyboxlightg+skyboxlightb)/3;
- light.color[0]*=(skyboxlightr+average)/2;
- light.color[1]*=(skyboxlightg+average)/2;
- light.color[2]*=(skyboxlightb+average)/2;
- light.ambient[0]=light.ambient[0]*(skyboxlightr+average)/2*1;
- light.ambient[1]=light.ambient[1]*(skyboxlightg+average)/2*1;
- light.ambient[2]=light.ambient[2]*(skyboxlightb+average)/2*1;
- /*
- light.ambient[0]=0;
- light.ambient[1]=0;
- light.ambient[2]=0; */
+static void ch_tintg(Game *game, const char *args)
+{
+ tintg = atof(args);
}
-int Game::findPathDist(int start,int end){
- int i,j,k,smallestcount,count,connected;
- int last,last2,last3,last4;
- int closest;
+static void ch_tintb(Game *game, const char *args)
+{
+ tintb = atof(args);
+}
- smallestcount=1000;
- for(i=0;i<50;i++){
- count=0;
- last=start;
- last2=-1;
- last3=-1;
- last4=-1;
- while(last!=end&&count<30){
- closest=-1;
- for(j=0;j<numpathpoints;j++){
- if(j!=last&&j!=last2&&j!=last3&&j!=last4)
- {
- connected=0;
- if(numpathpointconnect[j])
- for(k=0;k<numpathpointconnect[j];k++){
- if(pathpointconnect[j][k]==last)connected=1;
- }
- if(!connected)
- if(numpathpointconnect[last])
- for(k=0;k<numpathpointconnect[last];k++){
- if(pathpointconnect[last][k]==j)connected=1;
- }
- if(connected)
- if(closest==-1||Random()%2==0){
- closest=j;
- }
- }
- }
- last4=last3;
- last3=last2;
- last2=last;
- last=closest;
- count++;
- }
- if(count<smallestcount)smallestcount=count;
- }
- return smallestcount;
+static void ch_speed(Game *game, const char *args)
+{
+ player[0].speedmult = atof(args);
}
-int Game::checkcollide(XYZ startpoint,XYZ endpoint){
- static XYZ colpoint,colviewer,coltarget;
- static float minx,minz,maxx,maxz,miny,maxy;
- static int i;
+static void ch_strength(Game *game, const char *args)
+{
+ player[0].power = atof(args);
+}
- //startpoint.y+=.7;
- //endpoint.y+=.7;
- //startpoint.y-=.1;
- //endpoint.y-=.1;
+static void ch_power(Game *game, const char *args)
+{
+ player[0].power = atof(args);
+}
- minx=startpoint.x;
- if(minx>endpoint.x)minx=endpoint.x;
- miny=startpoint.y;
- if(miny>endpoint.y)miny=endpoint.y;
- minz=startpoint.z;
- if(minz>endpoint.z)minz=endpoint.z;
+static void ch_size(Game *game, const char *args)
+{
+ player[0].scale = atof(args) * .2;
+}
- maxx=startpoint.x;
- if(maxx<endpoint.x)maxx=endpoint.x;
- maxy=startpoint.y;
- if(maxy<endpoint.y)maxy=endpoint.y;
- maxz=startpoint.z;
- if(maxz<endpoint.z)maxz=endpoint.z;
+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;
+}
- minx-=1;
- miny-=1;
- minz-=1;
- maxx+=1;
- maxy+=1;
- maxz+=1;
+static void ch_sizenear(Game *game, const char *args)
+{
+ int closest = find_closest();
- for(i=0;i<objects.numobjects;i++){
- if(objects.position[i].x>minx-objects.model[i].boundingsphereradius&&objects.position[i].x<maxx+objects.model[i].boundingsphereradius&&objects.position[i].y>miny-objects.model[i].boundingsphereradius&&objects.position[i].y<maxy+objects.model[i].boundingsphereradius&&objects.position[i].z>minz-objects.model[i].boundingsphereradius&&objects.position[i].z<maxz+objects.model[i].boundingsphereradius){
- if(objects.type[i]!=treeleavestype&&objects.type[i]!=bushtype&&objects.type[i]!=firetype){
- colviewer=startpoint;
- coltarget=endpoint;
- if(objects.model[i].LineCheck(&colviewer,&coltarget,&colpoint,&objects.position[i],&objects.rotation[i])!=-1)return i;
- }
- }
- }
+ if (closest)
+ player[closest].scale = atof(args) * .2;
+}
- //if(terrain.lineTerrain(startpoint,endpoint,&colpoint)!=-1)return 1000;
+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;
+ } else 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;
+ }
+}
- return -1;
+static void ch_proportion(Game *game, const char *args)
+{
+ set_proportion(0, args);
}
-int Game::checkcollide(XYZ startpoint,XYZ endpoint,int what){
- static XYZ colpoint,colviewer,coltarget;
- static float minx,minz,maxx,maxz,miny,maxy;
- static int i;
+static void ch_proportionnear(Game *game, const char *args)
+{
+ int closest = find_closest();
+ if (closest)
+ set_proportion(closest, args);
+}
- //startpoint.y+=.7;
- //endpoint.y+=.7;
- //startpoint.y-=.1;
- //endpoint.y-=.1;
+static void set_protection(int pnum, const char *args)
+{
+ float head, high, low;
+ sscanf(args, "%f%f%f", &head, &high, &low);
- minx=startpoint.x;
- if(minx>endpoint.x)minx=endpoint.x;
- miny=startpoint.y;
- if(miny>endpoint.y)miny=endpoint.y;
- minz=startpoint.z;
- if(minz>endpoint.z)minz=endpoint.z;
+ player[pnum].protectionhead = head;
+ player[pnum].protectionhigh = high;
+ player[pnum].protectionlow = low;
+}
- maxx=startpoint.x;
- if(maxx<endpoint.x)maxx=endpoint.x;
- maxy=startpoint.y;
- if(maxy<endpoint.y)maxy=endpoint.y;
- maxz=startpoint.z;
- if(maxz<endpoint.z)maxz=endpoint.z;
+static void ch_protection(Game *game, const char *args)
+{
+ set_protection(0, args);
+}
- minx-=1;
- miny-=1;
- minz-=1;
- maxx+=1;
- maxy+=1;
- maxz+=1;
+static void ch_protectionnear(Game *game, const char *args)
+{
+ int closest = find_closest();
+ if (closest)
+ set_protection(closest, args);
+}
- if(what!=1000){
- if(objects.position[what].x>minx-objects.model[what].boundingsphereradius&&objects.position[what].x<maxx+objects.model[what].boundingsphereradius&&objects.position[what].y>miny-objects.model[what].boundingsphereradius&&objects.position[what].y<maxy+objects.model[what].boundingsphereradius&&objects.position[what].z>minz-objects.model[what].boundingsphereradius&&objects.position[what].z<maxz+objects.model[what].boundingsphereradius){
- if(objects.type[what]!=treeleavestype&&objects.type[what]!=bushtype&&objects.type[what]!=firetype){
- colviewer=startpoint;
- coltarget=endpoint;
- if(objects.model[what].LineCheck(&colviewer,&coltarget,&colpoint,&objects.position[what],&objects.rotation[what])!=-1)return i;
- }
- }
- }
+static void set_armor(int pnum, const char *args)
+{
+ float head, high, low;
+ sscanf(args, "%f%f%f", &head, &high, &low);
- if(what==1000)if(terrain.lineTerrain(startpoint,endpoint,&colpoint)!=-1)return 1000;
+ player[pnum].armorhead = head;
+ player[pnum].armorhigh = high;
+ player[pnum].armorlow = low;
+}
- return -1;
+static void ch_armor(Game *game, const char *args)
+{
+ set_armor(0, args);
}
-void Game::Setenvironment(int which)
+static void ch_armornear(Game *game, const char *args)
{
- LOGFUNC;
+ int closest = find_closest();
+ if (closest)
+ set_armor(closest, args);
+}
- LOG(" Setting environment...");
-
- float temptexdetail;
- environment=which;
-/*
- OPENAL_SetPaused(channels[music1snow], true);
- OPENAL_SetPaused(channels[music1grass], true);
- OPENAL_SetPaused(channels[music1desert], true);
- OPENAL_SetPaused(channels[wind], true);
- OPENAL_SetPaused(channels[desertambient], true);
-*/
- OPENAL_SetPaused(channels[stream_music1snow], true);
- OPENAL_SetPaused(channels[stream_music1grass], true);
- OPENAL_SetPaused(channels[stream_music1desert], true);
- OPENAL_SetPaused(channels[stream_wind], true);
- OPENAL_SetPaused(channels[stream_desertambient], true);
+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);
- if(environment==snowyenvironment){
- windvector=0;
- windvector.z=3;
- if(ambientsound){
- //PlaySoundEx( wind, samp[wind], NULL, true);
- PlayStreamEx(stream_wind, strm[stream_wind], 0, true);
- OPENAL_SetPaused(channels[stream_wind], false);
- OPENAL_SetVolume(channels[stream_wind], 256);
- }
+ player[pnum].metalhead = head;
+ player[pnum].metalhigh = high;
+ player[pnum].metallow = low;
+}
- 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);
+static void ch_metal(Game *game, const char *args)
+{
+ set_metal(0, args);
+}
- 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);
- 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);
+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);
+}
- LoadTexture(":Data:Textures:snow.jpg",&terraintexture,1,0);
+static void ch_noclothes(Game *game, const char *args)
+{
+ set_noclothes(0, game, args);
+}
- LoadTexture(":Data:Textures:rock.jpg",&terraintexture2,1,0);
+static void ch_noclothesnear(Game *game, const char *args)
+{
+ int closest = find_closest();
+ if (closest)
+ set_noclothes(closest, game, args);
+}
- //LoadTexture(":Data:Textures:detailgrain.png",&terraintexture3,1);
+static void set_clothes(int pnum, Game *game, const char *args)
+{
+ char buf[64];
+ snprintf(buf, 63, ":Data:Textures:%s.png", args);
+
+ if (!game->AddClothes(buf,0,1,&player[pnum].skeleton.skinText[pnum],&player[pnum].skeleton.skinsize))
+ return;
+
+ player[pnum].DoMipmaps(5,0,0,player[pnum].skeleton.skinsize,player[pnum].skeleton.skinsize);
+ strcpy(player[pnum].clothes[player[pnum].numclothes],buf);
+ player[pnum].clothestintr[player[pnum].numclothes]=tintr;
+ player[pnum].clothestintg[player[pnum].numclothes]=tintg;
+ player[pnum].clothestintb[player[pnum].numclothes]=tintb;
+ player[pnum].numclothes++;
+}
+static void ch_clothes(Game *game, const char *args)
+{
+ set_clothes(0, game, args);
+}
+static void ch_clothesnear(Game *game, const char *args)
+{
+ int closest = find_closest();
+ if (closest)
+ set_clothes(closest, game, args);
+}
- temptexdetail=texdetail;
- if(texdetail>1)texdetail=4;
- skybox.load( ":Data:Textures:Skybox(snow):Front.jpg",
- ":Data:Textures:Skybox(snow):Left.jpg",
- ":Data:Textures:Skybox(snow):Back.jpg",
- ":Data:Textures:Skybox(snow):Right.jpg",
- ":Data:Textures:Skybox(snow):Up.jpg",
- ":Data:Textures:Skybox(snow):Down.jpg",
- ":Data:Textures:Skybox(snow):Cloud.jpg",
- ":Data:Textures:Skybox(snow):Reflect.jpg");
+static void ch_belt(Game *game, const char *args)
+{
+ player[0].skeleton.clothes = !player[0].skeleton.clothes;
+}
+static void ch_cellophane(Game *game, const char *args)
+{
+ cellophane = !cellophane;
+ float mul = cellophane ? 0 : 1;
+
+ for (int i = 0; i < numplayers; i++) {
+ player[i].proportionhead.z = player[i].proportionhead.x * mul;
+ player[i].proportionbody.z = player[i].proportionbody.x * mul;
+ player[i].proportionarms.z = player[i].proportionarms.x * mul;
+ player[i].proportionlegs.z = player[i].proportionlegs.x * mul;
+ }
+}
+static void ch_funnybunny(Game *game, const char *args)
+{
+ player[0].skeleton.id=0;
+ player[0].skeleton.Load(":Data:Skeleton:Basic Figure",":Data:Skeleton:Basic Figurelow",
+ ":Data:Skeleton:Rabbitbelt",":Data:Models:Body.solid",
+ ":Data:Models:Body2.solid",":Data:Models:Body3.solid",
+ ":Data:Models:Body4.solid",":Data:Models:Body5.solid",
+ ":Data:Models:Body6.solid",":Data:Models:Body7.solid",
+ ":Data:Models:Bodylow.solid",":Data:Models:Belt.solid",1);
+ game->LoadTextureSave(":Data:Textures:fur3.jpg",&player[0].skeleton.drawmodel.textureptr,1,
+ &player[0].skeleton.skinText[0],&player[0].skeleton.skinsize);
+ player[0].creature=rabbittype;
+ player[0].scale=.2;
+ player[0].headless=0;
+ player[0].damagetolerance=200;
+ set_proportion(0, "1 1 1 1");
+}
- texdetail=temptexdetail;
- }
- if(environment==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);
+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_wolfieisgod(Game *game, const char *args)
+{
+ ch_wolfie(game, args);
+}
- if(ambientsound){
- //PlaySoundEx( desertambient, samp[desertambient], NULL, true);
- PlayStreamEx( stream_desertambient, strm[stream_desertambient], NULL, true);
- OPENAL_SetPaused(channels[stream_desertambient], false);
- OPENAL_SetVolume(channels[stream_desertambient], 256);
- }
+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);
+}
- 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:footstepsnow1.ogg", OPENAL_HW3D, 0, 0);
- samp[footstepsound4] = OPENAL_Sample_Load(OPENAL_FREE, ":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);
+static void ch_snowwolf(Game *game, const char *args)
+{
+ game->LoadTextureSave(":Data:Textures:SnowWolf.jpg",&player[0].skeleton.drawmodel.textureptr,1,
+ &player[0].skeleton.skinText[0],&player[0].skeleton.skinsize);
+}
- LoadTexture(":Data:Textures:sand.jpg",&terraintexture,1,0);
+static void ch_darkwolf(Game *game, const char *args)
+{
+ game->LoadTextureSave(":Data:Textures:DarkWolf.jpg",&player[0].skeleton.drawmodel.textureptr,1,
+ &player[0].skeleton.skinText[0],&player[0].skeleton.skinsize);
+}
- LoadTexture(":Data:Textures:sandslope.jpg",&terraintexture2,1,0);
+static void ch_lizardwolf(Game *game, const char *args)
+{
+ game->LoadTextureSave(":Data:Textures:Lizardwolf.jpg",&player[0].skeleton.drawmodel.textureptr,1,
+ &player[0].skeleton.skinText[0],&player[0].skeleton.skinsize);
+}
- //LoadTexture(":Data:Textures:detailgrain.png",&terraintexture3,1);
+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);
+}
- temptexdetail=texdetail;
- if(texdetail>1)texdetail=4;
- skybox.load( ":Data:Textures:Skybox(sand):Front.jpg",
- ":Data:Textures:Skybox(sand):Left.jpg",
- ":Data:Textures:Skybox(sand):Back.jpg",
- ":Data:Textures:Skybox(sand):Right.jpg",
- ":Data:Textures:Skybox(sand):Up.jpg",
- ":Data:Textures:Skybox(sand):Down.jpg",
- ":Data:Textures:Skybox(sand):Cloud.jpg",
- ":Data:Textures:Skybox(sand):Reflect.jpg");
+static void ch_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++;
+}
- texdetail=temptexdetail;
- }
- if(environment==grassyenvironment){
- windvector=0;
- windvector.z=2;
- LoadTexture(":Data:Textures:tree.png",&objects.treetextureptr,0,1);
- LoadTexture(":Data:Textures:bush.png",&objects.bushtextureptr,0,1);
- LoadTexture(":Data:Textures:boulder.jpg",&objects.rocktextureptr,1,0);
- LoadTexture(":Data:Textures:grassbox.jpg",&objects.boxtextureptr,1,0);
+static void ch_notindemo(Game *game, const char *args)
+{
+ game->indemo=0;
+ numhotspots--;
+}
- if(ambientsound){
- PlayStreamEx( stream_wind, strm[stream_wind], NULL, true);
- OPENAL_SetPaused(channels[stream_wind], false);
- OPENAL_SetVolume(channels[stream_wind], 100);
+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;
}
+}
- 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: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);
- 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);
+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;
+ }
+}
- LoadTexture(":Data:Textures:grassdirt.jpg",&terraintexture,1,0);
+static void ch_hs(Game *game, const char *args)
+{
+ hotspot[numhotspots]=player[0].coords;
- LoadTexture(":Data:Textures:mossrock.jpg",&terraintexture2,1,0);
+ float size;
+ int type, shift;
+ sscanf(args, "%f%d %n", &size, &type, &shift);
- //LoadTexture(":Data:Textures:detail.png",&terraintexture3,1);
+ hotspotsize[numhotspots] = size;
+ hotspottype[numhotspots] = type;
+ strcpy(hotspottext[numhotspots], args + shift);
+ strcat(hotspottext[numhotspots], "\n");
+ numhotspots++;
+}
- temptexdetail=texdetail;
- if(texdetail>1)texdetail=4;
- skybox.load( ":Data:Textures:Skybox(grass):Front.jpg",
- ":Data:Textures:Skybox(grass):Left.jpg",
- ":Data:Textures:Skybox(grass):Back.jpg",
- ":Data:Textures:Skybox(grass):Right.jpg",
- ":Data:Textures:Skybox(grass):Up.jpg",
- ":Data:Textures:Skybox(grass):Down.jpg",
- ":Data:Textures:Skybox(grass):Cloud.jpg",
- ":Data:Textures:Skybox(grass):Reflect.jpg");
+static void ch_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<numdialogueboxes[numdialogues];i++){
+ ipstream.ignore(256,':');
+ ipstream.ignore(256,':');
+ ipstream.ignore(256,' ');
+ ipstream >> 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[numdialogues];i++){
+ for(j=0;j<numplayers;j++){
+ participantfacing[numdialogues][i][j]=player[j].facing;
+ }
+ }
+ ipstream.close();
+
+ directing=1;
+ indialogue=0;
+ whichdialogue=numdialogues;
+
+ numdialogues++;
+}
+static void ch_fixdialogue(Game *game, const char *args)
+{
+ char buf1[32], buf2[64];
+ int whichdi, i, j;
+
+ sscanf(args, "%d %31s", &whichdi, buf1);
+ snprintf(buf2, 63, ":Data:Dialogues:%s.txt", buf1);
+
+ memset(dialoguetext[whichdi], 0, sizeof(dialoguetext[whichdi]));
+ memset(dialoguename[whichdi], 0, sizeof(dialoguename[whichdi]));
+
+ ifstream ipstream(ConvertFileName(buf2));
+ ipstream.ignore(256,':');
+ ipstream >> numdialogueboxes[whichdi];
+ for(i=0;i<numdialogueboxes[whichdi];i++){
+ ipstream.ignore(256,':');
+ ipstream.ignore(256,':');
+ ipstream.ignore(256,' ');
+ ipstream >> 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;
+}
- texdetail=temptexdetail;
- }
- temptexdetail=texdetail;
- texdetail=1;
- terrain.load(":Data:Textures:heightmap.png");
+static void ch_fixrotation(Game *game, const char *args)
+{
+ participantrotation[whichdialogue][participantfocus[whichdialogue][indialogue]]=player[participantfocus[whichdialogue][indialogue]].rotation;
+}
- texdetail=temptexdetail;
+static void ch_ddialogue(Game *game, const char *args)
+{
+ if (numdialogues)
+ numdialogues--;
}
+static void ch_dhs(Game *game, const char *args)
+{
+ if (numhotspots)
+ numhotspots--;
+}
-void Game::Loadlevel(int which){
- stealthloading=0;
+static void ch_immobile(Game *game, const char *args)
+{
+ player[0].immobile = 1;
+}
- if(which==0)Loadlevel((char *)":Data:Maps:map1");
- else if(which==1)Loadlevel((char *)":Data:Maps:map2");
- else if(which==2)Loadlevel((char *)":Data:Maps:map3");
- else if(which==3)Loadlevel((char *)":Data:Maps:map4");
- else if(which==4)Loadlevel((char *)":Data:Maps:map5");
- else if(which==5)Loadlevel((char *)":Data:Maps:map6");
- else if(which==6)Loadlevel((char *)":Data:Maps:map7");
- else if(which==7)Loadlevel((char *)":Data:Maps:map8");
- else if(which==8)Loadlevel((char *)":Data:Maps:map9");
- else if(which==9)Loadlevel((char *)":Data:Maps:map10");
- else if(which==10)Loadlevel((char *)":Data:Maps:map11");
- else if(which==11)Loadlevel((char *)":Data:Maps:map12");
- else if(which==12)Loadlevel((char *)":Data:Maps:map13");
- else if(which==13)Loadlevel((char *)":Data:Maps:map14");
- else if(which==14)Loadlevel((char *)":Data:Maps:map15");
- else if(which==15)Loadlevel((char *)":Data:Maps:map16");
- else if(which==-1){tutoriallevel=-1;Loadlevel((char *)":Data:Maps:tutorial");}
- else Loadlevel((char *)":Data:Maps:mapsave");
+static void ch_allimmobile(Game *game, const char *args)
+{
+ for (int i = 1; i < numplayers; i++)
+ player[i].immobile = 1;
+}
- whichlevel=which;
+static void ch_mobile(Game *game, const char *args)
+{
+ player[0].immobile = 0;
}
-/*char * Game::MD5_string (unsigned char *string){
-char temp[50];
-char temp2[100];
+static void ch_default(Game *game, const char *args)
+{
+ player[0].armorhead=1;
+ player[0].armorhigh=1;
+ player[0].armorlow=1;
+ player[0].protectionhead=1;
+ player[0].protectionhigh=1;
+ player[0].protectionlow=1;
+ player[0].metalhead=1;
+ player[0].metalhigh=1;
+ player[0].metallow=1;
+ player[0].power=1;
+ player[0].speedmult=1;
+ player[0].scale=1;
+
+ if(player[0].creature==wolftype){
+ player[0].proportionhead=1.1;
+ player[0].proportionbody=1.1;
+ player[0].proportionarms=1.1;
+ player[0].proportionlegs=1.1;
+ } else if(player[0].creature==rabbittype){
+ player[0].proportionhead=1.2;
+ player[0].proportionbody=1.05;
+ player[0].proportionarms=1.00;
+ player[0].proportionlegs=1.1;
+ player[0].proportionlegs.y=1.05;
+ }
+
+ player[0].numclothes=0;
+ game->LoadTextureSave(creatureskin[player[0].creature][player[0].whichskin],
+ &player[0].skeleton.drawmodel.textureptr,1,&player[0].skeleton.skinText[0],
+ &player[0].skeleton.skinsize);
+
+ editoractive=typeactive;
+ player[0].immobile=0;
+}
-strcpy(temp2,(const char *)string);
-strcat((char *)temp2,(const char *)"Lugaru");
-sprintf (temp, "%d",strlen((char *)temp2));
-strcat((char *)temp2,temp);
+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;i<numdialogueboxes[whichdialogue];i++){
+ player[participantfocus[whichdialogue][i]].coords=participantlocation[whichdialogue][participantfocus[whichdialogue][i]];
+ player[participantfocus[whichdialogue][i]].rotation=participantrotation[whichdialogue][participantfocus[whichdialogue][i]];
+ player[participantfocus[whichdialogue][i]].targetrotation=participantrotation[whichdialogue][participantfocus[whichdialogue][i]];
+ player[participantfocus[whichdialogue][i]].velocity=0;
+ player[participantfocus[whichdialogue][i]].targetanimation=player[participantfocus[whichdialogue][i]].getIdle();
+ player[participantfocus[whichdialogue][i]].targetframe=0;
+ }
+
+ directing=0;
+ indialogue=0;
+
+ float gLoc[3];
+ float vel[3];
+ XYZ temppos;
+ temppos=player[participantfocus[whichdialogue][indialogue]].coords;
+ temppos=temppos-viewer;
+ Normalise(&temppos);
+ temppos+=viewer;
+
+ gLoc[0]=temppos.x;
+ gLoc[1]=temppos.y;
+ gLoc[2]=temppos.z;
+ vel[0]=0;
+ vel[1]=0;
+ vel[2]=0;
+ int whichsoundplay;
+ whichsoundplay=rabbitchitter;
+ if(dialogueboxsound[whichdialogue][indialogue]==2)whichsoundplay=rabbitchitter2;
+ if(dialogueboxsound[whichdialogue][indialogue]==3)whichsoundplay=rabbitpainsound;
+ if(dialogueboxsound[whichdialogue][indialogue]==4)whichsoundplay=rabbitpain1sound;
+ if(dialogueboxsound[whichdialogue][indialogue]==5)whichsoundplay=rabbitattacksound;
+ if(dialogueboxsound[whichdialogue][indialogue]==6)whichsoundplay=rabbitattack2sound;
+ if(dialogueboxsound[whichdialogue][indialogue]==7)whichsoundplay=rabbitattack3sound;
+ if(dialogueboxsound[whichdialogue][indialogue]==8)whichsoundplay=rabbitattack4sound;
+ if(dialogueboxsound[whichdialogue][indialogue]==9)whichsoundplay=growlsound;
+ if(dialogueboxsound[whichdialogue][indialogue]==10)whichsoundplay=growl2sound;
+ if(dialogueboxsound[whichdialogue][indialogue]==11)whichsoundplay=snarlsound;
+ if(dialogueboxsound[whichdialogue][indialogue]==12)whichsoundplay=snarl2sound;
+ if(dialogueboxsound[whichdialogue][indialogue]==13)whichsoundplay=barksound;
+ if(dialogueboxsound[whichdialogue][indialogue]==14)whichsoundplay=bark2sound;
+ if(dialogueboxsound[whichdialogue][indialogue]==15)whichsoundplay=bark3sound;
+ if(dialogueboxsound[whichdialogue][indialogue]==16)whichsoundplay=barkgrowlsound;
+ if(dialogueboxsound[whichdialogue][indialogue]==-1)whichsoundplay=fireendsound;
+ if(dialogueboxsound[whichdialogue][indialogue]==-2)whichsoundplay=firestartsound;
+ if(dialogueboxsound[whichdialogue][indialogue]==-3)whichsoundplay=consolesuccesssound;
+ if(dialogueboxsound[whichdialogue][indialogue]==-4)whichsoundplay=consolefailsound;
+ PlaySoundEx( whichsoundplay, samp[whichsoundplay], NULL, true);
+ OPENAL_3D_SetAttributes(channels[whichsoundplay], gLoc, vel);
+ OPENAL_SetVolume(channels[whichsoundplay], 256);
+ OPENAL_SetPaused(channels[whichsoundplay], false);
+}
-MD5 context;
-unsigned int len = strlen ( (char *)temp2);
+static void ch_mapkilleveryone(Game *game, const char *args)
+{
+ maptype = mapkilleveryone;
+}
-context.update ((unsigned char *)temp2, len);
-context.finalize ();
+static void ch_mapkillmost(Game *game, const char *args)
+{
+ maptype = mapkillmost;
+}
-return context.hex_digest();
-}*/
+static void ch_mapkillsomeone(Game *game, const char *args)
+{
+ maptype = mapkillsomeone;
+}
+static void ch_mapgosomewhere(Game *game, const char *args)
+{
+ maptype = mapgosomewhere;
+}
+static void ch_viewdistance(Game *game, const char *args)
+{
+ viewdistance = atof(args)*100;
+}
-void Game::Loadlevel(char *name){
- int i,j,k,l,m;
- static int oldlevel;
- int templength;
- float lamefloat;
- int lameint;
+static void ch_fadestart(Game *game, const char *args)
+{
+ fadestart = atof(args);
+}
- float headprop,legprop,armprop,bodyprop;
+static void ch_slomo(Game *game, const char *args)
+{
+ slomospeed = atof(args);
+ slomo = !slomo;
+ slomodelay = 1000;
+}
- LOGFUNC;
+static void ch_slofreq(Game *game, const char *args)
+{
+ slomofreq = atof(args);
+}
- LOG(std::string("Loading level...") + name);
+static void ch_skytint(Game *game, const char *args)
+{
+ sscanf(args, "%f%f%f", &skyboxr, &skyboxg, &skyboxb);
- if(!gameon)visibleloading=1;
+ skyboxlightr=skyboxr;
+ skyboxlightg=skyboxg;
+ skyboxlightb=skyboxb;
- if(stealthloading)visibleloading=0;
+ game->SetUpLighting();
- if(!stillloading)loadtime=0;
- gamestarted=1;
+ terrain.DoShadows();
+ objects.DoShadows();
+}
- numenvsounds=0;
- //visibleloading=1;
- if(tutoriallevel!=-1)tutoriallevel=0;
- else tutoriallevel=1;
+static void ch_skylight(Game *game, const char *args)
+{
+ sscanf(args, "%f%f%f", &skyboxlightr, &skyboxlightg, &skyboxlightb);
- if(tutoriallevel==1)tutorialstage=0;
- if(tutorialstage==0){
- tutorialstagetime=0;
- tutorialmaxtime=1;
- }
- loadingstuff=1;
- if(!firstload){
- oldlevel=50;
- }
- OPENAL_SetPaused(channels[whooshsound], true);
- OPENAL_SetPaused(channels[stream_firesound], true);
+ game->SetUpLighting();
- int mapvers;
- FILE *tfile;
- tfile=fopen( name, "rb" );
- if(tfile)
- {
- OPENAL_SetPaused(channels[stream_firesound], true);
+ terrain.DoShadows();
+ objects.DoShadows();
+}
+static void ch_skybox(Game *game, const char *args)
+{
+ skyboxtexture = !skyboxtexture;
- scoreadded=0;
- windialogue=0;
+ game->SetUpLighting();
- hostiletime=0;
+ terrain.DoShadows();
+ objects.DoShadows();
+}
- won=0;
+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);
+ }
+}
- //campaign=0;
- animation[bounceidleanim].Load((char *)":Data:Animations:Idle",middleheight,neutral);
+/********************> Tick() <*****/
+extern bool save_image(const char * fname);
+void Screenshot (void)
+{
+ char temp[1024];
+ time_t t = time(NULL);
+ struct tm *tme = localtime(&t);
+ sprintf(temp, "Screenshots/Screenshot_%04d_%02d_%02d--%02d_%02d_%02d.png", tme->tm_year + 1900, tme->tm_mon + 1, tme->tm_mday, tme->tm_hour, tme->tm_min, tme->tm_sec);
- numdialogues=0;
-
- for(i=0;i<20;i++)
- {
- dialoguegonethrough[i]=0;
- }
-
- indialogue=-1;
- cameramode=0;
-
- damagedealt=0;
- damagetaken=0;
-
- if(accountactive!=-1)difficulty=accountdifficulty[accountactive];
-
- if(difficulty!=2)minimap=1;
- else minimap=0;
-
- numhotspots=0;
- currenthotspot=-1;
- bonustime=1;
-
- skyboxtexture=1;
- skyboxr=1;
- skyboxg=1;
- skyboxb=1;
-
- freeze=0;
- winfreeze=0;
-
- for(i=0;i<100;i++)
- {
- bonusnum[i]=0;
- }
-
- numfalls=0;
- numflipfail=0;
- numseen=0;
- numstaffattack=0;
- numswordattack=0;
- numknifeattack=0;
- numunarmedattack=0;
- numescaped=0;
- numflipped=0;
- numwallflipped=0;
- numthrowkill=0;
- numafterkill=0;
- numreversals=0;
- numattacks=0;
- maxalarmed=0;
- numresponded=0;
-
- bonustotal=startbonustotal;
- bonus=0;
- gameon=1;
- changedelay=0;
- if(console)
- {
- PlaySoundEx( consolesuccesssound, samp[consolesuccesssound], NULL, true);
- OPENAL_SetVolume(channels[consolesuccesssound], 256);
- OPENAL_SetPaused(channels[consolesuccesssound], false);
- freeze=0;
- console=0;
- }
-
- if(!stealthloading)
- {
- terrain.numdecals=0;
- sprites.numsprites=0;
- for(i=0;i<objects.numobjects;i++)
- {
- objects.model[i].numdecals=0;
- }
-
- j=objects.numobjects;
- for(i=0;i<j;i++)
- {
- objects.DeleteObject(0);
- if(visibleloading){loadscreencolor=4; LoadingScreen();}
- }
-
- for(i=0;i<subdivision;i++)
- {
- for(j=0;j<subdivision;j++)
- {
- terrain.patchobjectnum[i][j]=0;
- }
- }
- if(visibleloading){loadscreencolor=4; LoadingScreen();}
- }
-
- weapons.numweapons=0;
-
- funpackf(tfile, "Bi", &mapvers);
- if(mapvers>=15)funpackf(tfile, "Bi", &indemo);
- else indemo=0;
- if(mapvers>=5)funpackf(tfile, "Bi", &maptype);
- else maptype=mapkilleveryone;
- if(mapvers>=6)funpackf(tfile, "Bi", &hostile);
- else hostile=1;
- if(mapvers>=4)funpackf(tfile, "Bf Bf", &viewdistance, &fadestart);
- else
- {
- viewdistance=100;
- fadestart=.6;
- }
- if(mapvers>=2)funpackf(tfile, "Bb Bf Bf Bf", &skyboxtexture, &skyboxr, &skyboxg, &skyboxb);
- else
- {
- skyboxtexture=1;
- skyboxr=1;
- skyboxg=1;
- skyboxb=1;
- }
- if(mapvers>=10)funpackf(tfile, "Bf Bf Bf", &skyboxlightr, &skyboxlightg, &skyboxlightb);
- else
- {
- skyboxlightr=skyboxr;
- skyboxlightg=skyboxg;
- skyboxlightb=skyboxb;
- }
- if(!stealthloading)funpackf(tfile, "Bf Bf Bf Bf Bf Bi", &player[0].coords.x,&player[0].coords.y,&player[0].coords.z,&player[0].rotation,&player[0].targetrotation, &player[0].num_weapons);
- if(stealthloading)funpackf(tfile, "Bf Bf Bf Bf Bf Bi", &lamefloat,&lamefloat,&lamefloat,&lamefloat,&lamefloat, &player[0].num_weapons);
- player[0].originalcoords=player[0].coords;
- if(player[0].num_weapons>0&&player[0].num_weapons<5)
- {
- for(j=0;j<player[0].num_weapons;j++)
- {
- player[0].weaponids[j]=weapons.numweapons;
- funpackf(tfile, "Bi", &weapons.type[weapons.numweapons]);
- weapons.owner[weapons.numweapons]=0;
- weapons.numweapons++;
- }
- }
-
- if(visibleloading){loadscreencolor=4; LoadingScreen();}
-
- funpackf(tfile, "Bf Bf Bf", &player[0].armorhead, &player[0].armorhigh, &player[0].armorlow);
- funpackf(tfile, "Bf Bf Bf", &player[0].protectionhead, &player[0].protectionhigh, &player[0].protectionlow);
- funpackf(tfile, "Bf Bf Bf", &player[0].metalhead, &player[0].metalhigh, &player[0].metallow);
- funpackf(tfile, "Bf Bf", &player[0].power, &player[0].speedmult);
-
- funpackf(tfile, "Bi", &player[0].numclothes);
-
- if(mapvers>=9)
- {
- funpackf(tfile, "Bi Bi", &player[0].whichskin, &player[0].creature);
- }
- else
- {
- player[0].whichskin=0;
- player[0].creature=rabbittype;
- }
-
- for(i=0;i<max_dialogues;i++)
- {
- for(j=0;j<max_dialoguelength;j++)
- {
- for(k=0;k<128;k++)
- {
- dialoguetext[i][j][k]='\0';
- }
- for(k=0;k<64;k++)
- {
- dialoguename[i][j][k]='\0';
- }
- }
- }
-
- player[0].lastattack=-1;
- player[0].lastattack2=-1;
- player[0].lastattack3=-1;
-
- if(mapvers>=8)
- {
- funpackf(tfile, "Bi", &numdialogues);
- if(numdialogues)
- {
- for(k=0;k<numdialogues;k++)
- {
- funpackf(tfile, "Bi", &numdialogueboxes[k]);
- funpackf(tfile, "Bi", &dialoguetype[k]);
- for(l=0;l<10;l++)
- {
- funpackf(tfile, "Bf Bf Bf", &participantlocation[k][l].x, &participantlocation[k][l].y, &participantlocation[k][l].z);
- funpackf(tfile, "Bf", &participantrotation[k][l]);
- }
- if(numdialogueboxes)
- {
- for(l=0;l<numdialogueboxes[k];l++)
- {
- funpackf(tfile, "Bi", &dialogueboxlocation[k][l]);
- funpackf(tfile, "Bf", &dialogueboxcolor[k][l][0]);
- funpackf(tfile, "Bf", &dialogueboxcolor[k][l][1]);
- funpackf(tfile, "Bf", &dialogueboxcolor[k][l][2]);
- funpackf(tfile, "Bi", &dialogueboxsound[k][l]);
-
- bool doneread;
-
- funpackf(tfile, "Bi",&templength);
- if(templength>128||templength<=0)templength=128;
- for(m=0;m<templength;m++){
- funpackf(tfile, "Bb", &dialoguetext[k][l][m]);
- if(dialoguetext[k][l][m]=='\0')break;
- }
-
- funpackf(tfile, "Bi",&templength);
- if(templength>64||templength<=0)templength=64;
- for(m=0;m<templength;m++){
- funpackf(tfile, "Bb", &dialoguename[k][l][m]);
- if(dialoguename[k][l][m]=='\0'){
- break;
- }
- }
- funpackf(tfile, "Bf Bf Bf", &dialoguecamera[k][l].x, &dialoguecamera[k][l].y, &dialoguecamera[k][l].z);
- funpackf(tfile, "Bi", &participantfocus[k][l]);
- funpackf(tfile, "Bi", &participantaction[k][l]);
-
- for(m=0;m<10;m++)
- funpackf(tfile, "Bf Bf Bf", &participantfacing[k][l][m].x, &participantfacing[k][l][m].y, &participantfacing[k][l][m].z);
-
- funpackf(tfile, "Bf Bf",&dialoguecamerarotation[k][l],&dialoguecamerarotation2[k][l]);
- }
- }
- }
- }
- }
- else numdialogues=0;
-
- if(player[0].numclothes)
- {
- for(k=0;k<player[0].numclothes;k++)
- {
- funpackf(tfile, "Bi", &templength);
- for(l=0;l<templength;l++)
- funpackf(tfile, "Bb", &player[0].clothes[k][l]);
- player[0].clothes[k][templength]='\0';
- funpackf(tfile, "Bf Bf Bf", &player[0].clothestintr[k], &player[0].clothestintg[k], &player[0].clothestintb[k]);
- }
- }
-
- funpackf(tfile, "Bi", &environment);
-
- funpackf(tfile, "Bi", &objects.numobjects);
- if(objects.numobjects)
- {
- for(i=0;i<objects.numobjects;i++)
- {
- funpackf(tfile, "Bi Bf Bf Bf Bf Bf Bf", &objects.type[i],&objects.rotation[i],&objects.rotation2[i], &objects.position[i].x, &objects.position[i].y, &objects.position[i].z,&objects.scale[i]);
- if(objects.type[i]==treeleavestype)objects.scale[i]=objects.scale[i-1];
- }
- }
-
- if(mapvers>=7)
- {
- funpackf(tfile, "Bi", &numhotspots);
- if(numhotspots)
- {
- for(i=0;i<numhotspots;i++)
- {
- funpackf(tfile, "Bi Bf Bf Bf Bf", &hotspottype[i],&hotspotsize[i],&hotspot[i].x,&hotspot[i].y,&hotspot[i].z);
- funpackf(tfile, "Bi", &templength);
- if(templength)
- for(l=0;l<templength;l++)
- funpackf(tfile, "Bb", &hotspottext[i][l]);
- hotspottext[i][templength]='\0';
- if(hotspottype[i]==-111)indemo=1;
- }
- }
- }
- else numhotspots=0;
-
- if(visibleloading){loadscreencolor=4; LoadingScreen();}
-
- if(!stealthloading)
- {
- objects.center=0;
- for(i=0;i<objects.numobjects;i++)
- {
- objects.center+=objects.position[i];
- }
- objects.center/=objects.numobjects;
-
-
- if(visibleloading){loadscreencolor=4; LoadingScreen();}
-
- float maxdistance=0;
- float tempdist;
- int whichclosest;
- for(i=0;i<objects.numobjects;i++)
- {
- tempdist=findDistancefast(&objects.center,&objects.position[i]);
- if(tempdist>maxdistance)
- {
- whichclosest=i;
- maxdistance=tempdist;
- }
- }
- objects.radius=fast_sqrt(maxdistance);
- }
-
- if(visibleloading){loadscreencolor=4; LoadingScreen();}
- //mapcenter=objects.center;
- //mapradius=objects.radius;
-
- funpackf(tfile, "Bi", &numplayers);
- int howmanyremoved=0;
- bool removeanother=0;
- if(numplayers>1&&numplayers<maxplayers)
- {
- for(i=1;i<numplayers;i++)
- {
- if(visibleloading){loadscreencolor=4; LoadingScreen();}
- removeanother=0;
-
- funpackf(tfile, "Bi Bi Bf Bf Bf Bi",&player[i-howmanyremoved].whichskin,&player[i-howmanyremoved].creature, &player[i-howmanyremoved].coords.x,&player[i-howmanyremoved].coords.y,&player[i-howmanyremoved].coords.z,&player[i-howmanyremoved].num_weapons);
- if(mapvers>=5)funpackf(tfile, "Bi", &player[i-howmanyremoved].howactive);
- else player[i-howmanyremoved].howactive=typeactive;
- if(mapvers>=3)funpackf(tfile, "Bf",&player[i-howmanyremoved].scale);
- else player[i-howmanyremoved].scale=-1;
- if(mapvers>=11)funpackf(tfile, "Bb",&player[i-howmanyremoved].immobile);
- else player[i-howmanyremoved].immobile=0;
- if(mapvers>=12)funpackf(tfile, "Bf",&player[i-howmanyremoved].rotation);
- else player[i-howmanyremoved].rotation=0;
- player[i-howmanyremoved].targetrotation=player[i-howmanyremoved].rotation;
- if(player[i-howmanyremoved].num_weapons<0||player[i-howmanyremoved].num_weapons>5){
- removeanother=1;
- howmanyremoved++;
- }
- if(!removeanother)
- {
- if(player[i-howmanyremoved].num_weapons>0&&player[i-howmanyremoved].num_weapons<5)
- {
- for(j=0;j<player[i-howmanyremoved].num_weapons;j++)
- {
- player[i-howmanyremoved].weaponids[j]=weapons.numweapons;
- funpackf(tfile, "Bi", &weapons.type[player[i-howmanyremoved].weaponids[j]]);
- weapons.owner[player[i-howmanyremoved].weaponids[j]]=i;
- weapons.numweapons++;
- }
- }
- funpackf(tfile, "Bi", &player[i-howmanyremoved].numwaypoints);
- //player[i-howmanyremoved].numwaypoints=10;
- for(j=0;j<player[i-howmanyremoved].numwaypoints;j++)
- {
- funpackf(tfile, "Bf", &player[i-howmanyremoved].waypoints[j].x);
- funpackf(tfile, "Bf", &player[i-howmanyremoved].waypoints[j].y);
- funpackf(tfile, "Bf", &player[i-howmanyremoved].waypoints[j].z);
- if(mapvers>=5)funpackf(tfile, "Bi", &player[i-howmanyremoved].waypointtype[j]);
- else player[i-howmanyremoved].waypointtype[j] = wpkeepwalking;
- }
-
- funpackf(tfile, "Bi", &player[i-howmanyremoved].waypoint);
- if(player[i-howmanyremoved].waypoint>player[i-howmanyremoved].numwaypoints-1)player[i-howmanyremoved].waypoint=0;
-
- funpackf(tfile, "Bf Bf Bf", &player[i-howmanyremoved].armorhead, &player[i-howmanyremoved].armorhigh, &player[i-howmanyremoved].armorlow);
- funpackf(tfile, "Bf Bf Bf", &player[i-howmanyremoved].protectionhead, &player[i-howmanyremoved].protectionhigh, &player[i-howmanyremoved].protectionlow);
- funpackf(tfile, "Bf Bf Bf", &player[i-howmanyremoved].metalhead, &player[i-howmanyremoved].metalhigh, &player[i-howmanyremoved].metallow);
- funpackf(tfile, "Bf Bf", &player[i-howmanyremoved].power, &player[i-howmanyremoved].speedmult);
-
- if(mapvers>=4)funpackf(tfile, "Bf Bf Bf Bf", &headprop, &bodyprop, &armprop, &legprop);
- else
- {
- headprop=1;
- bodyprop=1;
- armprop=1;
- legprop=1;
- }
- if(player[i-howmanyremoved].creature==wolftype)
- {
- player[i-howmanyremoved].proportionhead=1.1*headprop;
- player[i-howmanyremoved].proportionbody=1.1*bodyprop;
- player[i-howmanyremoved].proportionarms=1.1*armprop;
- player[i-howmanyremoved].proportionlegs=1.1*legprop;
- }
-
- if(player[i-howmanyremoved].creature==rabbittype)
- {
- player[i-howmanyremoved].proportionhead=1.2*headprop;
- player[i-howmanyremoved].proportionbody=1.05*bodyprop;
- player[i-howmanyremoved].proportionarms=1.00*armprop;
- player[i-howmanyremoved].proportionlegs=1.1*legprop;
- player[i-howmanyremoved].proportionlegs.y=1.05*legprop;
- }
-
- funpackf(tfile, "Bi", &player[i-howmanyremoved].numclothes);
- if(player[i-howmanyremoved].numclothes)
- {
- for(k=0;k<player[i-howmanyremoved].numclothes;k++)
- {
- int templength;
- funpackf(tfile, "Bi", &templength);
- for(l=0;l<templength;l++)
- funpackf(tfile, "Bb", &player[i-howmanyremoved].clothes[k][l]);
- player[i-howmanyremoved].clothes[k][templength]='\0';
- funpackf(tfile, "Bf Bf Bf", &player[i-howmanyremoved].clothestintr[k], &player[i-howmanyremoved].clothestintg[k], &player[i-howmanyremoved].clothestintb[k]);
- }
- }
- }
- }
- }
- if(visibleloading){loadscreencolor=4; LoadingScreen();}
-
- numplayers-=howmanyremoved;
- funpackf(tfile, "Bi", &numpathpoints);
- if(numpathpoints>30||numpathpoints<0)
- numpathpoints=0;
- if(numpathpoints)
- {
- for(j=0;j<numpathpoints;j++)
- {
- funpackf(tfile, "Bf Bf Bf Bi", &pathpoint[j].x,&pathpoint[j].y,&pathpoint[j].z,&numpathpointconnect[j]);
- for(k=0;k<numpathpointconnect[j];k++){
- funpackf(tfile, "Bi", &pathpointconnect[j][k]);
- }
- }
- }
- if(visibleloading){loadscreencolor=4; LoadingScreen();}
-
- funpackf(tfile, "Bf Bf Bf Bf", &mapcenter.x,&mapcenter.y,&mapcenter.z,&mapradius);
-
- SetUpLighting();
- if(environment!=oldenvironment)Setenvironment(environment);
- oldenvironment=environment;
-
- if(!stealthloading)
- {
- j=objects.numobjects;
- objects.numobjects=0;
- for(i=0;i<j;i++)
- {
- //if(objects.type[i]!=spiketype)
- objects.MakeObject(objects.type[i],objects.position[i],objects.rotation[i],objects.rotation2[i],objects.scale[i]);
- if(visibleloading){loadscreencolor=4; LoadingScreen();}
- }
-
- //if(skyboxtexture){
- terrain.DoShadows();
- if(visibleloading){loadscreencolor=4; LoadingScreen();}
- objects.DoShadows();
- if(visibleloading){loadscreencolor=4; LoadingScreen();}
- /*}
- else terrain.DoLighting();
- */
- }
-
- fclose(tfile);
-
- oldlevel=whichlevel;
-
-
- if(numplayers>maxplayers-1)numplayers=maxplayers-1;
- for(i=0;i<numplayers;i++)
- {
- if(visibleloading){loadscreencolor=4; LoadingScreen();}
- player[i].burnt=0;
- player[i].bled=0;
- player[i].onfire=0;
- if(i==0||player[i].scale<0)player[i].scale=.2;
- player[i].skeleton.free=0;
- player[i].skeleton.id=i;
- //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);
- 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);
- }
- 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);
- }
- }
-
-
- int texsize;
- texsize=512*512*3/texdetail/texdetail;
- //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);
- }
- }
-
- if(player[i].numclothes)
- {
- for(j=0;j<player[i].numclothes;j++)
- {
- tintr=player[i].clothestintr[j];
- tintg=player[i].clothestintg[j];
- tintb=player[i].clothestintb[j];
- AddClothes((char *)player[i].clothes[j],0,1,&player[i].skeleton.skinText[0],&player[i].skeleton.skinsize);
- }
- player[i].DoMipmaps(5,0,0,player[i].skeleton.skinsize,player[i].skeleton.skinsize);
- }
-
- player[i].currentanimation=bounceidleanim;
- player[i].targetanimation=bounceidleanim;
- player[i].currentframe=0;
- player[i].targetframe=1;
- player[i].target=0;
- player[i].speed=1+(float)(Random()%100)/1000;
- if(difficulty==0)player[i].speed-=.2;
- if(difficulty==1)player[i].speed-=.1;
-
- player[i].velocity=0;
- player[i].oldcoords=player[i].coords;
- player[i].realoldcoords=player[i].coords;
-
- player[i].id=i;
- player[i].skeleton.id=i;
- player[i].updatedelay=0;
- player[i].normalsupdatedelay=0;
-
- player[i].aitype=passivetype;
- player[i].aitarget=0;
- player[i].madskills=0;
-
- if(i==0)
- {
- player[i].proportionhead=1.2;
- player[i].proportionbody=1.05;
- player[i].proportionarms=1.00;
- player[i].proportionlegs=1.1;
- player[i].proportionlegs.y=1.05;
- }
- player[i].headless=0;
- player[i].currentoffset=0;
- player[i].targetoffset=0;
- /*player[i].armorhead=1;
- player[i].armorhigh=1;
- player[i].armorlow=1;
- player[i].protectionhead=1;
- player[i].protectionhigh=1;
- player[i].protectionlow=1;
- player[i].metalhead=1;
- player[i].metalhigh=1;
- player[i].metallow=1;
- player[i].power=1;
- player[i].speedmult=1;*/
-
- player[i].damagetolerance=200;
-
- if(player[i].creature==wolftype)
- {
- /*player[i].proportionhead=1.1;
- player[i].proportionbody=1.1;
- player[i].proportionarms=1.1;
- player[i].proportionlegs=1.1;
- player[i].proportionlegs.y=1.1;*/
- if(i==0||player[i].scale<0)player[i].scale=.23;
-
- player[i].damagetolerance=300;
- }
-
- if(visibleloading){loadscreencolor=4; LoadingScreen();}
- if(cellophane)
- {
- player[i].proportionhead.z=0;
- player[i].proportionbody.z=0;
- player[i].proportionarms.z=0;
- player[i].proportionlegs.z=0;
- }
-
- player[i].tempanimation.Load((char *)":Data:Animations:Tempanim",0,0);
-
- player[i].headmorphness=0;
- player[i].targetheadmorphness=1;
- player[i].headmorphstart=0;
- player[i].headmorphend=0;
-
- player[i].pausetime=0;
-
- player[i].dead=0;
- player[i].jumppower=5;
- player[i].damage=0;
- player[i].permanentdamage=0;
- player[i].superpermanentdamage=0;
-
- player[i].forwardkeydown=0;
- player[i].leftkeydown=0;
- player[i].backkeydown=0;
- player[i].rightkeydown=0;
- player[i].jumpkeydown=0;
- player[i].crouchkeydown=0;
- player[i].throwkeydown=0;
-
- player[i].collided=-10;
- player[i].loaded=1;
- player[i].bloodloss=0;
- player[i].weaponactive=-1;
- player[i].weaponstuck=-1;
- player[i].bleeding=0;
- player[i].deathbleeding=0;
- player[i].stunned=0;
- player[i].hasvictim=0;
- player[i].wentforweapon=0;
- }
-
- player[0].aitype=playercontrolled;
- player[0].weaponactive=-1;
-
- if(difficulty==1)
- {
- //player[0].speedmult=1/.9;
- player[0].power=1/.9;
- }
-
- if(difficulty==0)
- {
- //player[0].speedmult=1/.8;
- player[0].power=1/.8;
- }
-
- //player[0].weaponstuck=1;
-
- if(difficulty==1)player[0].damagetolerance=250;
- if(difficulty==0)player[0].damagetolerance=300;
- if(difficulty==0)player[0].armorhead*=1.5;
- if(difficulty==0)player[0].armorhigh*=1.5;
- if(difficulty==0)player[0].armorlow*=1.5;
- cameraloc=player[0].coords;
- cameraloc.y+=5;
- rotation=player[0].rotation;
-
- hawkcoords=player[0].coords;
- hawkcoords.y+=30;
-
- if(visibleloading){loadscreencolor=4; LoadingScreen();}
- //weapons.numweapons=numplayers;
- for(i=0;i<weapons.numweapons;i++)
- {
- weapons.bloody[i]=0;
- weapons.blooddrip[i]=0;
- weapons.blooddripdelay[i]=0;
- weapons.onfire[i]=0;
- weapons.flamedelay[i]=0;
- weapons.damage[i]=0;
- //weapons.type[i]=sword;
- if(weapons.type[i]==sword){
- weapons.mass[i]=1.5;
- weapons.tipmass[i]=1;
- weapons.length[i]=.8;
- }
- if(weapons.type[i]==staff){
- weapons.mass[i]=2;
- weapons.tipmass[i]=1;
- weapons.length[i]=1.5;
- }
- if(weapons.type[i]==knife){
- weapons.mass[i]=1;
- weapons.tipmass[i]=1.2;
- weapons.length[i]=.25;
- }
- weapons.position[i]=-1000;
- weapons.tippoint[i]=-1000;
- }
-
-/* for(i=0;i<32;i++){
- //if(i<16||i>20)
- OPENAL_StopSound(i);
- }
-*/
- LOG("Starting background music...");
-
- OPENAL_StopSound(OPENAL_ALL);
- if(environment==snowyenvironment)
- {
- if(ambientsound)
- {
- PlayStreamEx(stream_wind, strm[stream_wind], NULL, true);
- OPENAL_SetPaused(channels[stream_wind], false);
- OPENAL_SetVolume(channels[stream_wind], 256);
- }
- }
- else if(environment==desertenvironment)
- {
- if(ambientsound)
- {
- //PlaySoundEx(desertambient,
- // samp[desertambient], NULL, true);
- PlayStreamEx(stream_desertambient,
- strm[stream_desertambient], NULL, true);
- OPENAL_SetPaused(channels[stream_desertambient], false);
- OPENAL_SetVolume(channels[stream_desertambient], 256);
- }
- }
- else if(environment==grassyenvironment)
- {
- if(ambientsound)
- {
- //PlaySoundEx(wind, samp[wind], NULL, true);
- PlayStreamEx(stream_wind, strm[stream_wind], NULL, true);
- OPENAL_SetPaused(channels[stream_wind], false);
- OPENAL_SetVolume(channels[stream_wind], 100);
- }
- }
- oldmusicvolume[0]=0;
- oldmusicvolume[1]=0;
- oldmusicvolume[2]=0;
- oldmusicvolume[3]=0;
-
-
- /*LoadTexture(":Data:Textures:cloud.png",&sprites.cloudtexture,1,1);
- LoadTexture(":Data:Textures:cloudimpact.png",&sprites.cloudimpacttexture,1,1);
- LoadTexture(":Data:Textures:bloodparticle.png",&sprites.bloodtexture,1,1);
- LoadTexture(":Data:Textures:snowflake.png",&sprites.snowflaketexture,1,1);
- LoadTexture(":Data:Textures:flame.png",&sprites.flametexture,1,1);
- LoadTexture(":Data:Textures:bloodflame.png",&sprites.bloodflametexture,1,1);
- LoadTexture(":Data:Textures:smoke.png",&sprites.smoketexture,1,1);
- LoadTexture(":Data:Textures:shine.png",&sprites.shinetexture,1,0);
- */
-
- if(!firstload)
- {
- firstload=1;
- }
- }
- leveltime=0;
- loadingstuff=0;
- visibleloading=0;
-}
-
-void Game::Tick()
-{
- static int i,k,j,l,m;
- static XYZ facing,flatfacing,absflatfacing;
- static XYZ rotatetarget;
- static bool oldkey;
- static float oldtargetrotation;
- static int target, numgood;
- static XYZ tempcoords1,tempcoords2;
- static XYZ test;
- static XYZ test2;
- static XYZ lowpoint,lowpointtarget,lowpoint2,lowpointtarget2,lowpoint3,lowpointtarget3,lowpoint4,lowpointtarget4,lowpoint5,lowpointtarget5,lowpoint6,lowpointtarget6,lowpoint7,lowpointtarget7,colpoint,colpoint2;
- static int whichhit;
- static bool donesomething;
- static bool oldjumpkeydown;
-
- int templength;
-
- float headprop,bodyprop,armprop,legprop;
-
- if(newnetmessages){
- newnetmessages=0;
- PlaySoundEx( consolesuccesssound, samp[consolesuccesssound], NULL, true);
- 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;
- }
-
- static unsigned char theKeyMap[16];
- GetKeys( theKeyMap );
-
- keyboardfrozen=0;
-
-
- static bool mainmenutogglekeydown;
- if(!console){
- if(mainmenu&&endgame==1)mainmenu=10;
- if(IsKeyDown(theKeyMap, MAC_ESCAPE_KEY)&&!mainmenutogglekeydown&&(mainmenu==7&&entername)){
- for(j=0;j<255;j++){
- displaytext[0][j]=' ';
- }
- displaychars[0]=0;
- displayselected=0;
- entername=0;
- mainmenutogglekeydown=1;
- }
- if((IsKeyDown(theKeyMap, MAC_ESCAPE_KEY)||(mainmenu==0&&((IsKeyDown(theKeyMap, jumpkey)||IsKeyDown(theKeyMap, MAC_SPACE_KEY)||(campaign)))&&!oldjumpkeydown&&campaign&&winfreeze))&&!mainmenutogglekeydown&&(!mainmenu||gameon||mainmenu==3||mainmenu==4||mainmenu==5||mainmenu==6||(mainmenu==7&&!entername)||mainmenu==9||mainmenu==11||mainmenu==13||mainmenu==17||mainmenu==10)){
- selected=-1;
- if(mainmenu==1||mainmenu==2||mainmenu==0){
- if(mainmenu==0&&!winfreeze)mainmenu=2;
- else if(mainmenu==0&&winfreeze&&(campaignchoosenext[campaignchoicewhich[whichchoice]])==1)mainmenu=100;
- else if(mainmenu==0&&winfreeze){
- /* if(campaignchoosenext[campaignchoicewhich[whichchoice]]==2)
- stealthloading=1;
- else stealthloading=0;
-
- if(!stealthloading){
- float gLoc[3]={0,0,0};
- float vel[3]={0,0,0};
- 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);
-
- flashr=1;
- flashg=0;
- flashb=0;
- flashamount=1;
- flashdelay=1;
- }
-
- startbonustotal=0;
-
- for(i=0;i<campaignnumlevels;i++){
- levelvisible[i]=0;
- levelhighlight[i]=0;
- }
-
- levelorder[0]=0;
- levelvisible[0]=1;
- if(accountcampaignchoicesmade[accountactive])
- for(i=0;i<accountcampaignchoicesmade[accountactive];i++){
- levelorder[i+1]=campaignnextlevel[levelorder[i]][accountcampaignchoices[accountactive][i]];
- levelvisible[levelorder[i+1]]=1;
- }
- int whichlevelstart;
- whichlevelstart=accountcampaignchoicesmade[accountactive]-1;
- if(whichlevelstart<0){
- campaignchoicenum=1;
- campaignchoicewhich[0]=0;
- }
- else
- {
- campaignchoicenum=campaignnumnext[levelorder[whichlevelstart]];
- if(campaignchoicenum)
- for(i=0;i<campaignchoicenum;i++){
- campaignchoicewhich[i]=campaignnextlevel[levelorder[whichlevelstart]][i];
- levelvisible[campaignnextlevel[levelorder[whichlevelstart]][i]]=1;
- levelhighlight[campaignnextlevel[levelorder[whichlevelstart]][i]]=1;
- }
- }
-
- loading=2;
- loadtime=0;
- targetlevel=7;
- if(firstload)TickOnceAfter();
- if(!firstload)LoadStuff();
- //else {
- for(i=0;i<255;i++){
- mapname[i]='\0';
- }
- mapname[0]=':';
- mapname[1]='D';
- mapname[2]='a';
- mapname[3]='t';
- mapname[4]='a';
- mapname[5]=':';
- mapname[6]='M';
- mapname[7]='a';
- mapname[8]='p';
- mapname[9]='s';
- mapname[10]=':';
-
- //accountcampaignchoices[accountactive][accountcampaignchoicesmade[accountactive]]=whichchoice;
- //accountcampaignchoicesmade[accountactive]++;
-
-
- strcat(mapname,campaignmapname[campaignchoicewhich[0]]);
- whichchoice=0;
- visibleloading=1;
- stillloading=1;
- Loadlevel(mapname);
- campaign=1;
- mainmenu=0;
- gameon=1;
- OPENAL_SetPaused(channels[music3], true);
-
- stealthloading=0;*/
- }
- else if(mainmenu==1||mainmenu==2)mainmenu=0;
- if(mainmenu&&musictoggle){
- if(mainmenu==1||mainmenu==2||mainmenu==100){
- OPENAL_SetFrequency(OPENAL_ALL, 0.001);
- PlayStreamEx( stream_music3, strm[stream_music3], NULL, true);
- OPENAL_SetPaused(channels[stream_music3], false);
- OPENAL_SetVolume(channels[stream_music3], 256);
- OPENAL_SetPaused(channels[music1], true);
- }
- }
- if(!mainmenu){
- OPENAL_SetPaused(channels[stream_music3], true);
- OPENAL_SetPaused(channels[music1], false);
- }
- }
- if(mainmenu==3){
- 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(newdetail>2)newdetail=detail;
- if(newdetail<0)newdetail=detail;
- 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();
- }
- 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);
- 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==3&&gameon)mainmenu=2;
- if(mainmenu==3&&!gameon)mainmenu=1;
- if(mainmenu==5&&gameon)mainmenu=2;
- if(mainmenu==5&&!gameon)mainmenu=1;
- if(mainmenu==4)mainmenu=3;
- if(mainmenu==6)mainmenu=5;
- if(mainmenu==7)mainmenu=1;
- if(mainmenu==9)mainmenu=5;
- if(mainmenu==11)mainmenu=5;
- if(mainmenu==13)mainmenu=12;
- if(mainmenu==10)mainmenu=5;
- if(mainmenu==100){
- mainmenu=5;
- gameon=0;
- winfreeze=0;
- }
- mainmenutogglekeydown=1;
- }
- if(!IsKeyDown(theKeyMap, MAC_ESCAPE_KEY)){
- mainmenutogglekeydown=0;
- }
- }
-
- /*static bool minimaptogglekeydown;
- if(IsKeyDown(theKeyMap, MAC_TAB_KEY)&&!minimaptogglekeydown){
- minimap=1-minimap;
- minimaptogglekeydown=1;
- }
- if(!IsKeyDown(theKeyMap, MAC_TAB_KEY)){
- minimaptogglekeydown=0;
- }
- */
-
- static bool minimaptogglekeydown;
- if(IsKeyDown(theKeyMap, MAC_TAB_KEY)&&!minimaptogglekeydown&&tutoriallevel){
- if(tutorialstage!=51)
- tutorialstagetime=tutorialmaxtime;
- PlaySoundEx( consolefailsound, samp[consolefailsound], NULL, true);
- OPENAL_SetVolume(channels[consolefailsound], 128);
- OPENAL_SetPaused(channels[consolefailsound], false);
- minimaptogglekeydown=1;
- }
- if(!IsKeyDown(theKeyMap, MAC_TAB_KEY)){
- minimaptogglekeydown=0;
- }
-
- if(mainmenu){
- //menu buttons
- if(mainmenu==1||mainmenu==2){
- if(Button()&&!oldbutton&&selected==1){
- if(!gameon){
- float gLoc[3]={0,0,0};
- float vel[3]={0,0,0};
- 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);
-
- flashr=1;
- flashg=0;
- flashb=0;
- flashamount=1;
- flashdelay=1;
-
- //new game
- if(accountactive!=-1)mainmenu=5;
- else mainmenu=7;
- /*
- startbonustotal=0;
-
- loading=2;
- loadtime=0;
- if(firstload)TickOnceAfter();
- if(!firstload)LoadStuff();
- else {
- Loadlevel(0);
- }
- mainmenu=0;
- gameon=1;
- OPENAL_SetPaused(channels[music3], true); */
- }
- else
- {
- //resume
- mainmenu=0;
- OPENAL_SetPaused(channels[stream_music3], true);
- OPENAL_SetPaused(channels[music1], false);
- }
- }
-
- if(Button()&&!oldbutton&&selected==2){
- 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);
-
- flashr=1;
- flashg=0;
- flashb=0;
- flashamount=1;
- flashdelay=1;
-
- //options
-
- mainmenu=3;
-
- if(newdetail>2)newdetail=detail;
- if(newdetail<0)newdetail=detail;
- if(newscreenwidth>3000)newscreenwidth=screenwidth;
- if(newscreenwidth<0)newscreenwidth=screenwidth;
- if(newscreenheight>3000)newscreenheight=screenheight;
- if(newscreenheight<0)newscreenheight=screenheight;
- }
-
- if(Button()&&!oldbutton&&selected==3){
- float gLoc[3]={0,0,0};
- float vel[3]={0,0,0};
- 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(!gameon){
- //quit
- tryquit=1;
- OPENAL_SetPaused(channels[stream_music3], true);
- }
- else{
- //end game
- gameon=0;
- mainmenu=1;
- }
- }
- if(Button())oldbutton=1;
- else oldbutton=0;
- }
-
- if(mainmenu==3){
- if(Button()&&!oldbutton&&selected!=-1){
- float gLoc[3]={0,0,0};
- float vel[3]={0,0,0};
- 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==0){
-
- extern SDL_Rect **resolutions;
- bool isCustomResolution = true;
- bool found = false;
- for (int i = 0; (!found) && (resolutions[i]); i++)
- {
- if ((resolutions[i]->w == screenwidth) && (resolutions[i]->h == screenwidth))
- isCustomResolution = false;
-
- if ((resolutions[i]->w == newscreenwidth) && (resolutions[i]->h == newscreenheight))
- {
- i++;
- if (resolutions[i] != NULL)
- {
- newscreenwidth = (int) resolutions[i]->w;
- newscreenheight = (int) resolutions[i]->h;
- }
- else if (isCustomResolution)
- {
- if ((screenwidth == newscreenwidth) && (screenheight == newscreenheight))
- {
- newscreenwidth = (int) resolutions[0]->w;
- newscreenheight = (int) resolutions[0]->h;
- }
- else
- {
- newscreenwidth = screenwidth;
- newscreenheight = screenheight;
- }
- }
- else
- {
- newscreenwidth = (int) resolutions[0]->w;
- newscreenheight = (int) resolutions[0]->h;
- }
- found = true;
- }
- }
-
- if (!found)
- {
- newscreenwidth = (int) resolutions[0]->w;
- newscreenheight = (int) resolutions[0]->h;
- }
-
-
- }
- if(Button()&&!oldbutton&&selected==1){
- newdetail++;
- if(newdetail>2)newdetail=0;
- }
- if(Button()&&!oldbutton&&selected==2){
- bloodtoggle++;
- if(bloodtoggle>2)bloodtoggle=0;
- }
- if(Button()&&!oldbutton&&selected==3){
- difficulty++;
- if(difficulty>2)difficulty=0;
- }
- if(Button()&&!oldbutton&&selected==4){
- ismotionblur=1-ismotionblur;
- }
- if(Button()&&!oldbutton&&selected==5){
- decals=1-decals;
- }
- if(Button()&&!oldbutton&&selected==6){
- musictoggle=1-musictoggle;
-
- if(!musictoggle){
- OPENAL_SetPaused(channels[music1], true);
- OPENAL_SetPaused(channels[stream_music2], true);
- OPENAL_SetPaused(channels[stream_music3], true);
-
- for(i=0;i<4;i++){
- oldmusicvolume[i]=0;
- musicvolume[i]=0;
- }
- }
-
- if(musictoggle){
- PlayStreamEx( stream_music3, strm[stream_music3], NULL, true);
- OPENAL_SetPaused(channels[stream_music3], false);
- OPENAL_SetVolume(channels[stream_music3], 256);
- }
- }
- if(Button()&&!oldbutton&&selected==9){
- invertmouse=1-invertmouse;
- }
- if(Button()&&!oldbutton&&selected==10){
- usermousesensitivity+=.2;
- if(usermousesensitivity>2)usermousesensitivity=.2;
- }
- if(Button()&&!oldbutton&&selected==11){
- volume+=.1f;
- if(volume>1.0001f)volume=0;
- OPENAL_SetSFXMasterVolume((int)(volume*255));
- }
- if(Button()&&!oldbutton&&selected==7){
- /*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);
- */
- flashr=1;
- flashg=0;
- flashb=0;
- flashamount=1;
- flashdelay=1;
-
- //options
-
- mainmenu=4;
- keyselect=-1;
- }
- if(Button()&&!oldbutton&&selected==8){
- float gLoc[3]={0,0,0};
- float vel[3]={0,0,0};
- 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(newdetail>2)newdetail=detail;
- if(newdetail<0)newdetail=detail;
- 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();
-
- if(mainmenu==3&&gameon)mainmenu=2;
- if(mainmenu==3&&!gameon)mainmenu=1;
- }
- if(Button())oldbutton=1;
- else oldbutton=0;
- }
- if(mainmenu==4){
- if(Button()&&!oldbutton&&selected!=-1&&keyselect==-1){
- float gLoc[3]={0,0,0};
- float vel[3]={0,0,0};
- 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<9&&keyselect==-1){
- keyselect=selected;
- oldbuttons[0]=1;
- oldbuttons[1]=1;
- oldbuttons[2]=1;
- }
- if(keyselect!=-1){
- for(i=0;i<3;i++)
- if(!buttons[i]&&!oldbutton&&!Button())oldbuttons[i]=0;
- for(i=0;i<140;i++){
- if((IsKeyDown(theKeyMap, i)||(buttons[0]&&!oldbuttons[0]&&!oldbutton)||(buttons[1]&&!oldbuttons[1]&&!oldbutton))&&keyselect!=-1){
- if(i!=MAC_ESCAPE_KEY&&(strcmp(KeyToChar(i),"unknown")||(buttons[0]&&!oldbuttons[0]&&!oldbutton)||(buttons[1]&&!oldbuttons[1]&&!oldbutton))){
- float gLoc[3]={0,0,0};
- float vel[3]={0,0,0};
- 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);
-
- int keynum;
- keynum=i;
- if(buttons[0]&&!oldbuttons[0])keynum=MAC_MOUSEBUTTON1;
- if(buttons[1]&&!oldbuttons[1])keynum=MAC_MOUSEBUTTON2;
-
-
-
- if(keyselect==0)forwardkey=keynum;
- if(keyselect==1)backkey=keynum;
- if(keyselect==2)leftkey=keynum;
- if(keyselect==3)rightkey=keynum;
- if(keyselect==4)crouchkey=keynum;
- if(keyselect==5)jumpkey=keynum;
- if(keyselect==6)drawkey=keynum;
- if(keyselect==7)throwkey=keynum;
- if(keyselect==8)attackkey=keynum;
- keyselect=-1;
- }
- }
- }}
- if(Button()&&!oldbutton&&selected==9){
- float gLoc[3]={0,0,0};
- float vel[3]={0,0,0};
- 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=3;
-
- if(newdetail>2)newdetail=detail;
- if(newdetail<0)newdetail=detail;
- if(newscreenwidth>3000)newscreenwidth=screenwidth;
- if(newscreenwidth<0)newscreenwidth=screenwidth;
- if(newscreenheight>3000)newscreenheight=screenheight;
- if(newscreenheight<0)newscreenheight=screenheight;
- }
- }
-
- if(mainmenu==5){
-
- if(endgame==2){
- accountcampaignchoicesmade[accountactive]=0;
- accountcampaignscore[accountactive]=0;
- accountcampaigntime[accountactive]=0;
- endgame=0;
- }
-
- if(Button()&&!oldbutton&&selected==1){
- float gLoc[3]={0,0,0};
- float vel[3]={0,0,0};
- 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);
-
- flashr=1;
- flashg=0;
- flashb=0;
- flashamount=1;
- flashdelay=1;
-
- startbonustotal=0;
-
- loading=2;
- loadtime=0;
- targetlevel=-1;
- if(firstload)TickOnceAfter();
- if(!firstload)LoadStuff();
- else {
- Loadlevel(-1);
- }
-
- mainmenu=0;
- gameon=1;
- OPENAL_SetPaused(channels[stream_music3], true);
- }
- if(Button()&&!oldbutton&&selected-7>=accountcampaignchoicesmade[accountactive]){//selected>=7&&(selected-7<=campaignnumchoices)){
- float gLoc[3]={0,0,0};
- float vel[3]={0,0,0};
- 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);
-
- flashr=1;
- flashg=0;
- flashb=0;
- flashamount=1;
- flashdelay=1;
-
- startbonustotal=0;
-
- loading=2;
- loadtime=0;
- targetlevel=7;
- if(firstload)TickOnceAfter();
- if(!firstload)LoadStuff();
- //else {
- for(i=0;i<255;i++){
- mapname[i]='\0';
- }
- mapname[0]=':';
- mapname[1]='D';
- mapname[2]='a';
- mapname[3]='t';
- mapname[4]='a';
- mapname[5]=':';
- mapname[6]='M';
- mapname[7]='a';
- mapname[8]='p';
- mapname[9]='s';
- mapname[10]=':';
- strcat(mapname,campaignmapname[campaignchoicewhich[selected-7-accountcampaignchoicesmade[accountactive]]]);
- whichchoice=selected-7-accountcampaignchoicesmade[accountactive];
- visibleloading=1;
- stillloading=1;
- Loadlevel(mapname);
- //Loadlevel(campaignmapname[levelorder[selected-7]]);
- //}
- campaign=1;
- mainmenu=0;
- gameon=1;
- OPENAL_SetPaused(channels[stream_music3], true);
- }
- if(Button()&&!oldbutton&&selected==4){
- 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==5&&gameon)mainmenu=2;
- if(mainmenu==5&&!gameon)mainmenu=1;
- }
- if(Button()&&!oldbutton&&selected==5){
- float gLoc[3]={0,0,0};
- float vel[3]={0,0,0};
- 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=7;
- }
- if(Button()&&!oldbutton&&selected==3){
- 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);
-
- flashr=1;
- flashg=0;
- flashb=0;
- flashamount=1;
- flashdelay=1;
-
- mainmenu=6;
- }
- if(Button()&&!oldbutton&&selected==2){
- float gLoc[3]={0,0,0};
- float vel[3]={0,0,0};
- 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);
-
- flashr=1;
- flashg=0;
- flashb=0;
- flashamount=1;
- flashdelay=1;
-
- mainmenu=9;
- }
- if(Button())oldbutton=1;
- else oldbutton=0;
- }
- if(mainmenu==9){
- if(Button()&&!oldbutton&&selected<numchallengelevels&&selected>=0&&selected<=accountprogress[accountactive]){
- 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);
-
- flashr=1;
- flashg=0;
- flashb=0;
- flashamount=1;
- flashdelay=1;
-
- startbonustotal=0;
-
- loading=2;
- loadtime=0;
- targetlevel=selected;
- if(firstload)TickOnceAfter();
- if(!firstload)LoadStuff();
- else {
- Loadlevel(selected);
- }
- campaign=0;
-
- mainmenu=0;
- gameon=1;
- OPENAL_SetPaused(channels[stream_music3], true);
- }
- if(Button()&&!oldbutton&&selected==numchallengelevels){
- 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=1;
- else oldbutton=0;
- }
- if(mainmenu==11){
- if(Button()&&!oldbutton&&selected<numchallengelevels&&selected>=0&&selected<=accountprogress[accountactive]){
- 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);
-
- flashr=1;
- flashg=0;
- flashb=0;
- flashamount=1;
- flashdelay=1;
-
- startbonustotal=0;
-
- loading=2;
- loadtime=0;
- targetlevel=selected;
- if(firstload)TickOnceAfter();
- if(!firstload)LoadStuff();
- else {
- Loadlevel(selected);
- }
- campaign=0;
-
- mainmenu=0;
- gameon=1;
- OPENAL_SetPaused(channels[stream_music3], true);
- }
- if(Button()&&!oldbutton&&selected==numchallengelevels){
- 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=1;
- else oldbutton=0;
- }
- if(mainmenu==10){
- endgame=2;
- if(Button()&&!oldbutton&&selected==3){
- float gLoc[3]={0,0,0};
- float vel[3]={0,0,0};
- 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=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(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;
-
- for(i=accountactive;i<numaccounts-1;i++){
- accountdifficulty[i]=accountdifficulty[i+1];
- accountcampaignchoicesmade[i]=accountcampaignchoicesmade[i+1];
- for(j=0;j<accountcampaignchoicesmade[i+1];j++){
- accountcampaignchoices[i][j]=accountcampaignchoices[i+1][j];
- }
- accountpoints[i]=accountpoints[i+1];
- for(j=0;j<50;j++){
- accounthighscore[i][j]=accounthighscore[i+1][j];
- accountfasttime[i][j]=accountfasttime[i+1][j];
- }
- for(j=0;j<60;j++){
- accountunlocked[i][j]=accountunlocked[i+1][j];
- }
- for(j=0;j<256;j++){
- accountname[i][j]=accountname[i+1][j];
- }
- accountcampaignhighscore[i]=accountcampaignhighscore[i+1];
- accountprogress[i]=accountprogress[i+1];
- accountcampaignfasttime[i]=accountcampaignfasttime[i+1];
- accountcampaignscore[i]=accountcampaignscore[i+1];
- accountcampaigntime[i]=accountcampaigntime[i+1];
- }
-
- numaccounts--;
- accountactive=-1;
-
-
- mainmenu=7;
- }
- if(Button()&&!oldbutton&&selected==2){
- 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=1;
- else oldbutton=0;
- }
- if(mainmenu==7){
- 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==0&&numaccounts<8){
- entername=1;
- }
- if(Button()&&!oldbutton&&selected>0&&selected<numaccounts+1){
- accountactive=selected-1;
- mainmenu=5;
- flashr=1;
- flashg=0;
- flashb=0;
- flashamount=1;
- flashdelay=1;
- }
- if(Button()&&!oldbutton&&selected==numaccounts+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=1;
-
- for(j=0;j<255;j++){
- displaytext[0][j]=' ';
- }
- displaychars[0]=0;
- displayselected=0;
- entername=0;
- }
- if(Button())oldbutton=1;
- else oldbutton=0;
- }
- if(mainmenu==8){
- 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(selected==0)accountdifficulty[accountactive]=0;
- if(selected==1)accountdifficulty[accountactive]=1;
- if(selected==2)accountdifficulty[accountactive]=2;
-
- mainmenu=5;
-
- flashr=1;
- flashg=0;
- flashb=0;
- flashamount=1;
- flashdelay=1;
-
- }
- if(Button())oldbutton=1;
- else oldbutton=0;
- }
-
-
- if(Button())oldbutton=1;
- else oldbutton=0;
-
- if(IsKeyDown(theKeyMap, MAC_Q_KEY)&&IsKeyDown(theKeyMap, MAC_COMMAND_KEY)){
- tryquit=1;
- if(mainmenu==3){
- if(newdetail>2)newdetail=detail;
- if(newdetail<0)newdetail=detail;
- if(newscreenwidth<0)newscreenwidth=screenwidth;
- if(newscreenheight<0)newscreenheight=screenheight;
-
- 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();
- }
- }
-
- if(mainmenu==1||mainmenu==2){
- if(loaddistrib>4)transition+=multiplier/8;
- if(transition>1){
- transition=0;
- anim++;
- if(anim>4)anim=0;
- loaddistrib=0;
- }
- }
- OPENAL_SetFrequency(channels[stream_music3], 22050);
+ #if defined(_WIN32)
+ mkdir("Screenshots");
+ #else
+ mkdir("Screenshots", S_IRWXU);
+ #endif
+
+ save_image(temp);
+}
- if(entername){
- 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<displaychars[0]){
- displayselected++;
- }
- if(i==MAC_RETURN_KEY&&entername){
- if(displaychars[0]){
- numaccounts++;
- strcpy(accountname[numaccounts-1],displaytext[0]);
- accountactive=numaccounts-1;
- accountdifficulty[accountactive]=1;
- accountprogress[accountactive]=0;
- accountpoints[accountactive]=0;
- accountcampaigntime[accountactive]=0;
- accountcampaignscore[accountactive]=0;
- accountcampaignfasttime[accountactive]=0;
- accountcampaignhighscore[accountactive]=0;
- for(j=0;j<50;j++){
- accounthighscore[accountactive][j]=0;
- accountfasttime[accountactive][j]=0;
- }
- for(j=0;j<60;j++){
- accountunlocked[accountactive][j]=0;
- }
- accountcampaignchoicesmade[accountactive]=0;
- for(j=0;j<255;j++){
- displaytext[0][j]=' ';
- }
- displaychars[0]=0;
- displayselected=0;
- entername=0;
-
- mainmenu=8;
-
- 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;
- }}
-
- if(i==MAC_RETURN_KEY&&mainmenu==13){
- if(displaychars[0]){
- sprintf (registrationname, "%s", displaytext[0]);
- if(displaychars[0]<254)registrationname[displaychars[0]]='\0';
-
- 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;
- }
- }
+void Game::SetUpLighting(){
+ if(environment==snowyenvironment){
+ light.color[0]=.65;
+ light.color[1]=.65;
+ light.color[2]=.7;
+ light.ambient[0]=.4;
+ light.ambient[1]=.4;
+ light.ambient[2]=.44;
+ }
+ if(environment==desertenvironment){
+ light.color[0]=.95;
+ light.color[1]=.95;
+ light.color[2]=.95;
+ light.ambient[0]=.4;
+ light.ambient[1]=.35;
+ light.ambient[2]=.3;
}
- 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<displaychars[0]){
- displayselected++;
- }
- if(i==MAC_RETURN_KEY){
- if(displaychars[0]){
- /*for(j=0;j<displaychars[0];j++){
- talkname[j]=displaytext[0][j];
- }
- talkname[displaychars[0]]='\0';
- sprintf (chatname, "%s: %s",playerName,talkname);
- //NetworkSendInformation(chatname);
- */
- for(j=0;j<255;j++){
- displaytext[0][j]=' ';
- }
- displaychars[0]=0;
- displayselected=0;
- chatting=0;
- }
- }
- }
- togglekey[i]=1;
- }
- else {
- togglekey[i]=0;
- togglekeydelay[i]=0;
- }
- }
-
- displayblinkdelay-=multiplier;
- if(displayblinkdelay<=0){
- displayblinkdelay=.3;
- displayblink=1-displayblink;
- }
- }
-
- if(chatting)keyboardfrozen=1;
-
- if(IsKeyDown(theKeyMap, MAC_V_KEY)&&!freezetogglekeydown&&debugmode){
- freeze=1-freeze;
- if(freeze){
- OPENAL_SetFrequency(OPENAL_ALL, 0.001);
- }
- freezetogglekeydown=1;
- }
-
- if(!IsKeyDown(theKeyMap, MAC_V_KEY)&&!IsKeyDown(theKeyMap, MAC_F1_KEY)){
- freezetogglekeydown=0;
- }
-
- if(IsKeyDown(theKeyMap, MAC_TILDE_KEY)&&!consoletogglekeydown&&debugmode){
- console=1-console;
- if(!console)freeze=0;
- if(console){
- OPENAL_SetFrequency(OPENAL_ALL, 0.001);
- }
- consoletogglekeydown=1;
- }
-
- if(!IsKeyDown(theKeyMap, MAC_TILDE_KEY)){
- consoletogglekeydown=0;
- }
-
- if(console)freeze=1;
-
- if(console&&!IsKeyDown(theKeyMap,MAC_COMMAND_KEY)){
- 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'&&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&&consoleselected<consolechars[0]){
- consoleselected++;
- }
- if(i==MAC_RETURN_KEY){
- archiveselected=0;
- donesomething=0;
- if(Compare(consoletext[0],"quit ",0,4)||Compare(consoletext[0],"exit ",0,4)){
- PlaySoundEx( consolesuccesssound, samp[consolesuccesssound], NULL, true);
- OPENAL_SetVolume(channels[consolesuccesssound], 256);
- OPENAL_SetPaused(channels[consolesuccesssound], false);
- donesomething=1;
- tryquit=1;
- }
- /*if(Compare(consoletext[0],"send ",0,4)){
- for(j=5;j<consolechars[0];j++){
- talkname[j-5]=consoletext[0][j];
- }
- talkname[consolechars[0]-5]='\0';
- sprintf (chatname, "%s: %s",playerName,talkname);
- //NetworkSendInformation(chatname);
- donesomething=1;
- }
- if(Compare(consoletext[0],"name ",0,4)){
- int numchars;
- numchars=consolechars[0]-5;
- if(numchars>32)numchars=32;
- for(j=5;j<numchars+5;j++){
- talkname[j-5]=consoletext[0][j];
- }
- talkname[numchars]='\0';
- sprintf (chatname, "Player %s is now known as %s.",playerName,talkname);
- //NetworkSendInformation(chatname);
- sprintf (playerName, "%s",talkname);
- //NetworkSendName(playerName);
- donesomething=1;
- }*/
- if(Compare(consoletext[0],"map ",0,3)){
- 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=4;j<consolechars[0];j++){
- mapname[j-4+11]=consoletext[0][j];
- }
- mapname[consolechars[0]-4+11]='\0';
- Loadlevel(mapname);
- whichlevel=-2;
- campaign=0;
- donesomething=1;
- }
- /*if(Compare(consoletext[0],"connect ",0,7)&&!ishost){
- int v;
- unsigned char playerNameStr[32];
- char theIPAddress[256];
- char thePort[32];
- NMUInt32 port = 25710;
-
- strcpy(playerName, "Client");
- GameC2PStr( playerName, playerNameStr );
-
- for(j=0;j<consolechars[0]-8;j++){
- theIPAddress[j]=consoletext[0][j+8];
- }
- theIPAddress[consolechars[0]-8]='\0';
-
- sprintf( thePort, "%li", port );
- v=NetworkStartClient( theIPAddress, thePort, 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]=' ';
- }
- 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(environment==grassyenvironment){
+ light.color[0]=.95;
+ light.color[1]=.95;
+ light.color[2]=1;
+ light.ambient[0]=.4;
+ light.ambient[1]=.4;
+ light.ambient[2]=.44;
+ }
+ if(!skyboxtexture){
+ light.color[0]=1;
+ light.color[1]=1;
+ light.color[2]=1;
+ light.ambient[0]=.4;
+ light.ambient[1]=.4;
+ light.ambient[2]=.4;
+ }
+ float average;
+ average=(skyboxlightr+skyboxlightg+skyboxlightb)/3;
+ light.color[0]*=(skyboxlightr+average)/2;
+ light.color[1]*=(skyboxlightg+average)/2;
+ light.color[2]*=(skyboxlightb+average)/2;
+ light.ambient[0]=light.ambient[0]*(skyboxlightr+average)/2*1;
+ light.ambient[1]=light.ambient[1]*(skyboxlightg+average)/2*1;
+ light.ambient[2]=light.ambient[2]*(skyboxlightb+average)/2*1;
+ /*
+ light.ambient[0]=0;
+ light.ambient[1]=0;
+ light.ambient[2]=0; */
+}
- 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");
+int Game::findPathDist(int start,int end){
+ int i,j,k,smallestcount,count,connected;
+ int last,last2,last3,last4;
+ int closest;
- 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;j<consolechars[0];j++){
- mapname[j-5+11]=consoletext[0][j];
+ smallestcount=1000;
+ for(i=0;i<50;i++){
+ count=0;
+ last=start;
+ last2=-1;
+ last3=-1;
+ last4=-1;
+ while(last!=end&&count<30){
+ closest=-1;
+ for(j=0;j<numpathpoints;j++){
+ if(j!=last&&j!=last2&&j!=last3&&j!=last4)
+ {
+ connected=0;
+ if(numpathpointconnect[j])
+ for(k=0;k<numpathpointconnect[j];k++){
+ if(pathpointconnect[j][k]==last)connected=1;
+ }
+ if(!connected)
+ if(numpathpointconnect[last])
+ for(k=0;k<numpathpointconnect[last];k++){
+ if(pathpointconnect[last][k]==j)connected=1;
}
- mapname[consolechars[0]-5+11]='\0';
-
- PlaySoundEx( consolesuccesssound, samp[consolesuccesssound], NULL, true);
- OPENAL_SetVolume(channels[consolesuccesssound], 256);
- OPENAL_SetPaused(channels[consolesuccesssound], false);
-
- int mapvers;
- mapvers=12;
-
-
- FILE *tfile;
- tfile=fopen( mapname, "wb" );
- fpackf(tfile, "Bi", mapvers);
- //fpackf(tfile, "Bi", indemo);
- 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;j<player[0].num_weapons;j++){
- fpackf(tfile, "Bi", weapons.type[player[0].weaponids[j]]);
+ if(connected)
+ if(closest==-1||Random()%2==0){
+ closest=j;
}
+ }
+ }
+ last4=last3;
+ last3=last2;
+ last2=last;
+ last=closest;
+ count++;
+ }
+ if(count<smallestcount)smallestcount=count;
+ }
+ return smallestcount;
+}
- fpackf(tfile, "Bf Bf Bf", player[0].armorhead, player[0].armorhigh, player[0].armorlow);
- fpackf(tfile, "Bf Bf Bf", player[0].protectionhead, player[0].protectionhigh, player[0].protectionlow);
- fpackf(tfile, "Bf Bf Bf", player[0].metalhead, player[0].metalhigh, player[0].metallow);
- fpackf(tfile, "Bf Bf", player[0].power, player[0].speedmult);
-
- fpackf(tfile, "Bi", player[0].numclothes);
-
- fpackf(tfile, "Bi Bi", player[0].whichskin, player[0].creature);
-
- fpackf(tfile, "Bi", numdialogues);
- if(numdialogues)
- for(k=0;k<numdialogues;k++){
- fpackf(tfile, "Bi", numdialogueboxes[k]);
- fpackf(tfile, "Bi", dialoguetype[k]);
- for(l=0;l<10;l++){
- fpackf(tfile, "Bf Bf Bf", participantlocation[k][l].x, participantlocation[k][l].y, participantlocation[k][l].z);
- fpackf(tfile, "Bf", participantrotation[k][l]);
- }
- if(numdialogueboxes)
- for(l=0;l<numdialogueboxes[k];l++){
- fpackf(tfile, "Bi", dialogueboxlocation[k][l]);
- fpackf(tfile, "Bf", dialogueboxcolor[k][l][0]);
- fpackf(tfile, "Bf", dialogueboxcolor[k][l][1]);
- fpackf(tfile, "Bf", dialogueboxcolor[k][l][2]);
- fpackf(tfile, "Bi", dialogueboxsound[k][l]);
-
- templength=strlen(dialoguetext[k][l]);
- fpackf(tfile, "Bi",(templength));
- for(m=0;m<templength;m++){
- fpackf(tfile, "Bb", dialoguetext[k][l][m]);
- if(dialoguetext[k][l][m]=='\0')break;
- }
+int Game::checkcollide(XYZ startpoint,XYZ endpoint){
+ static XYZ colpoint,colviewer,coltarget;
+ static float minx,minz,maxx,maxz,miny,maxy;
+ static int i;
- templength=strlen(dialoguename[k][l]);
- fpackf(tfile, "Bi",templength);
- for(m=0;m<templength;m++){
- fpackf(tfile, "Bb", dialoguename[k][l][m]);
- if(dialoguename[k][l][m]=='\0')break;
- }
+ //startpoint.y+=.7;
+ //endpoint.y+=.7;
+ //startpoint.y-=.1;
+ //endpoint.y-=.1;
- fpackf(tfile, "Bf Bf Bf", dialoguecamera[k][l].x, dialoguecamera[k][l].y, dialoguecamera[k][l].z);
- fpackf(tfile, "Bi", participantfocus[k][l]);
- fpackf(tfile, "Bi", participantaction[k][l]);
+ minx=startpoint.x;
+ if(minx>endpoint.x)minx=endpoint.x;
+ miny=startpoint.y;
+ if(miny>endpoint.y)miny=endpoint.y;
+ minz=startpoint.z;
+ if(minz>endpoint.z)minz=endpoint.z;
- for(m=0;m<10;m++)
- fpackf(tfile, "Bf Bf Bf", participantfacing[k][l][m].x, participantfacing[k][l][m].y, participantfacing[k][l][m].z);
+ maxx=startpoint.x;
+ if(maxx<endpoint.x)maxx=endpoint.x;
+ maxy=startpoint.y;
+ if(maxy<endpoint.y)maxy=endpoint.y;
+ maxz=startpoint.z;
+ if(maxz<endpoint.z)maxz=endpoint.z;
- fpackf(tfile, "Bf Bf",dialoguecamerarotation[k][l],dialoguecamerarotation2[k][l]);
- }
- }
+ minx-=1;
+ miny-=1;
+ minz-=1;
+ maxx+=1;
+ maxy+=1;
+ maxz+=1;
- if(player[0].numclothes)
- for(k=0;k<player[0].numclothes;k++){
- templength=strlen(player[0].clothes[k]);
- fpackf(tfile, "Bi", templength);
- for(l=0;l<templength;l++)
- fpackf(tfile, "Bb", player[0].clothes[k][l]);
- fpackf(tfile, "Bf Bf Bf", player[0].clothestintr[k], player[0].clothestintg[k], player[0].clothestintb[k]);
- }
+ for(i=0;i<objects.numobjects;i++){
+ if(objects.position[i].x>minx-objects.model[i].boundingsphereradius&&objects.position[i].x<maxx+objects.model[i].boundingsphereradius&&objects.position[i].y>miny-objects.model[i].boundingsphereradius&&objects.position[i].y<maxy+objects.model[i].boundingsphereradius&&objects.position[i].z>minz-objects.model[i].boundingsphereradius&&objects.position[i].z<maxz+objects.model[i].boundingsphereradius){
+ if(objects.type[i]!=treeleavestype&&objects.type[i]!=bushtype&&objects.type[i]!=firetype){
+ colviewer=startpoint;
+ coltarget=endpoint;
+ if(objects.model[i].LineCheck(&colviewer,&coltarget,&colpoint,&objects.position[i],&objects.rotation[i])!=-1)return i;
+ }
+ }
+ }
- fpackf(tfile, "Bi", environment);
+ //if(terrain.lineTerrain(startpoint,endpoint,&colpoint)!=-1)return 1000;
- fpackf(tfile, "Bi", objects.numobjects);
+ return -1;
+}
- if(objects.numobjects)
- for(k=0;k<objects.numobjects;k++){
- fpackf(tfile, "Bi Bf Bf Bf Bf Bf Bf", objects.type[k], objects.rotation[k], objects.rotation2[k], objects.position[k].x, objects.position[k].y, objects.position[k].z, objects.scale[k]);
- }
+int Game::checkcollide(XYZ startpoint,XYZ endpoint,int what){
+ static XYZ colpoint,colviewer,coltarget;
+ static float minx,minz,maxx,maxz,miny,maxy;
+ static int i;
- fpackf(tfile, "Bi", numhotspots);
- if(numhotspots)
- for(i=0;i<numhotspots;i++){
- fpackf(tfile, "Bi Bf Bf Bf Bf", hotspottype[i],hotspotsize[i],hotspot[i].x,hotspot[i].y,hotspot[i].z);
- templength=strlen(hotspottext[i]);
- fpackf(tfile, "Bi",templength);
- for(l=0;l<templength;l++)
- fpackf(tfile, "Bb", hotspottext[i][l]);
- }
+ //startpoint.y+=.7;
+ //endpoint.y+=.7;
+ //startpoint.y-=.1;
+ //endpoint.y-=.1;
- fpackf(tfile, "Bi", numplayers);
- if(numplayers>1&&numplayers<maxplayers)
- for(j=1;j<numplayers;j++){
- fpackf(tfile, "Bi Bi Bf Bf Bf Bi Bi Bf Bb Bf", player[j].whichskin, player[j].creature, player[j].coords.x, player[j].coords.y, player[j].coords.z, player[j].num_weapons, player[j].howactive, player[j].scale, player[j].immobile, player[j].rotation);
- if(player[j].num_weapons>0&&player[j].num_weapons<5)
- for(k=0;k<player[j].num_weapons;k++){
- fpackf(tfile, "Bi", weapons.type[player[j].weaponids[k]]);
- }
- if(player[j].numwaypoints<30){
- fpackf(tfile, "Bi", player[j].numwaypoints);
- for(k=0;k<player[j].numwaypoints;k++){
- fpackf(tfile, "Bf", player[j].waypoints[k].x);
- fpackf(tfile, "Bf", player[j].waypoints[k].y);
- fpackf(tfile, "Bf", player[j].waypoints[k].z);
- fpackf(tfile, "Bi", player[j].waypointtype[k]);
- }
- fpackf(tfile, "Bi", player[j].waypoint);
- }
- else{
- player[j].numwaypoints=0;
- player[j].waypoint=0;
- fpackf(tfile, "Bi Bi Bi", player[j].numwaypoints, player[j].waypoint, player[j].waypoint);
- }
+ minx=startpoint.x;
+ if(minx>endpoint.x)minx=endpoint.x;
+ miny=startpoint.y;
+ if(miny>endpoint.y)miny=endpoint.y;
+ minz=startpoint.z;
+ if(minz>endpoint.z)minz=endpoint.z;
- fpackf(tfile, "Bf Bf Bf", player[j].armorhead, player[j].armorhigh, player[j].armorlow);
- fpackf(tfile, "Bf Bf Bf", player[j].protectionhead, player[j].protectionhigh, player[j].protectionlow);
- fpackf(tfile, "Bf Bf Bf", player[j].metalhead, player[j].metalhigh, player[j].metallow);
- fpackf(tfile, "Bf Bf", player[j].power, player[j].speedmult);
+ maxx=startpoint.x;
+ if(maxx<endpoint.x)maxx=endpoint.x;
+ maxy=startpoint.y;
+ if(maxy<endpoint.y)maxy=endpoint.y;
+ maxz=startpoint.z;
+ if(maxz<endpoint.z)maxz=endpoint.z;
- if(player[j].creature==wolftype){
- headprop=player[j].proportionhead.x/1.1;
- bodyprop=player[j].proportionbody.x/1.1;
- armprop=player[j].proportionarms.x/1.1;
- legprop=player[j].proportionlegs.x/1.1;
- }
+ minx-=1;
+ miny-=1;
+ minz-=1;
+ maxx+=1;
+ maxy+=1;
+ maxz+=1;
- if(player[j].creature==rabbittype){
- headprop=player[j].proportionhead.x/1.2;
- bodyprop=player[j].proportionbody.x/1.05;
- armprop=player[j].proportionarms.x/1.00;
- legprop=player[j].proportionlegs.x/1.1;
- }
+ if(what!=1000){
+ if(objects.position[what].x>minx-objects.model[what].boundingsphereradius&&objects.position[what].x<maxx+objects.model[what].boundingsphereradius&&objects.position[what].y>miny-objects.model[what].boundingsphereradius&&objects.position[what].y<maxy+objects.model[what].boundingsphereradius&&objects.position[what].z>minz-objects.model[what].boundingsphereradius&&objects.position[what].z<maxz+objects.model[what].boundingsphereradius){
+ if(objects.type[what]!=treeleavestype&&objects.type[what]!=bushtype&&objects.type[what]!=firetype){
+ colviewer=startpoint;
+ coltarget=endpoint;
+ if(objects.model[what].LineCheck(&colviewer,&coltarget,&colpoint,&objects.position[what],&objects.rotation[what])!=-1)return i;
+ }
+ }
+ }
- fpackf(tfile, "Bf Bf Bf Bf", headprop, bodyprop, armprop, legprop);
+ if(what==1000)if(terrain.lineTerrain(startpoint,endpoint,&colpoint)!=-1)return 1000;
+ return -1;
+}
+void Game::Setenvironment(int which)
+{
+ LOGFUNC;
- fpackf(tfile, "Bi", player[j].numclothes);
- if(player[j].numclothes)
- for(k=0;k<player[j].numclothes;k++){
- int templength;
- templength=strlen(player[j].clothes[k]);
- fpackf(tfile, "Bi", templength);
- for(l=0;l<templength;l++)
- fpackf(tfile, "Bb", player[j].clothes[k][l]);
- fpackf(tfile, "Bf Bf Bf", player[j].clothestintr[k], player[j].clothestintg[k], player[j].clothestintb[k]);
- }
- }
+ LOG(" Setting environment...");
- fpackf(tfile, "Bi", numpathpoints);
- if(numpathpoints)
- for(j=0;j<numpathpoints;j++){
- fpackf(tfile, "Bf Bf Bf Bi", pathpoint[j].x, pathpoint[j].y, pathpoint[j].z, numpathpointconnect[j]);
- for(k=0;k<numpathpointconnect[j];k++){
- fpackf(tfile, "Bi", pathpointconnect[j][k]);
- }
- }
+ float temptexdetail;
+ environment=which;
+/*
+ OPENAL_SetPaused(channels[music1snow], true);
+ OPENAL_SetPaused(channels[music1grass], true);
+ OPENAL_SetPaused(channels[music1desert], true);
+ OPENAL_SetPaused(channels[wind], true);
+ OPENAL_SetPaused(channels[desertambient], true);
+*/
+ OPENAL_SetPaused(channels[stream_music1snow], true);
+ OPENAL_SetPaused(channels[stream_music1grass], true);
+ OPENAL_SetPaused(channels[stream_music1desert], true);
+ OPENAL_SetPaused(channels[stream_wind], true);
+ OPENAL_SetPaused(channels[stream_desertambient], true);
- fpackf(tfile, "Bf Bf Bf Bf", mapcenter.x, mapcenter.y, mapcenter.z, mapradius);
-
-
- fclose(tfile);
- donesomething=1;
-
- /*
- FILE *tfile;
- tfile=fopen( mapname, "wb" );
- fwrite( &mapvers, 1, sizeof(int), tfile );
- fwrite( &player[0].coords.x, 1, sizeof(float), tfile );
- fwrite( &player[0].coords.y, 1, sizeof(float), tfile );
- fwrite( &player[0].coords.z, 1, sizeof(float), tfile );
- fwrite( &player[0].rotation, 1, sizeof(float), tfile );
- fwrite( &player[0].targetrotation, 1, sizeof(float), tfile );
- fwrite( &player[0].num_weapons, 1, sizeof(int), tfile );
- if(player[0].num_weapons>0&&player[0].num_weapons<5)
- for(j=0;j<player[0].num_weapons;j++){
- fwrite( &weapons.type[player[0].weaponids[j]], 1, sizeof(int), tfile );
- }
- fwrite( &player[0].armorhead, 1, sizeof(int), tfile );
- fwrite( &player[0].armorhigh, 1, sizeof(int), tfile );
- fwrite( &player[0].armorlow, 1, sizeof(int), tfile );
- fwrite( &player[0].protectionhead, 1, sizeof(int), tfile );
- fwrite( &player[0].protectionhigh, 1, sizeof(int), tfile );
- fwrite( &player[0].protectionlow, 1, sizeof(int), tfile );
- fwrite( &player[0].metalhead, 1, sizeof(int), tfile );
- fwrite( &player[0].metalhigh, 1, sizeof(int), tfile );
- fwrite( &player[0].metallow, 1, sizeof(int), tfile );
- fwrite( &player[0].power, 1, sizeof(int), tfile );
- fwrite( &player[0].speedmult, 1, sizeof(int), tfile );
-
- fwrite( &player[0].numclothes, 1, sizeof(int), tfile );
- if(player[0].numclothes)
- for(k=0;k<player[0].numclothes;k++){
- int templength;
- templength=strlen(player[0].clothes[k]);
- fwrite( &templength,1,sizeof(int),tfile);
- for(l=0;l<templength;l++)
- fwrite( &player[0].clothes[k][l],1,sizeof(char),tfile);
- fwrite( &player[0].clothestintr[k],1,sizeof(float),tfile);
- fwrite( &player[0].clothestintg[k],1,sizeof(float),tfile);
- fwrite( &player[0].clothestintb[k],1,sizeof(float),tfile);
- }
+ if(environment==snowyenvironment){
+ windvector=0;
+ windvector.z=3;
+ if(ambientsound){
+ //PlaySoundEx( wind, samp[wind], NULL, true);
+ PlayStreamEx(stream_wind, strm[stream_wind], 0, true);
+ OPENAL_SetPaused(channels[stream_wind], false);
+ OPENAL_SetVolume(channels[stream_wind], 256);
+ }
- fwrite( &environment, 1, sizeof(int), tfile );
+ 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);
- fwrite( &objects.numobjects, 1, sizeof(int), tfile );
+ footstepsound = footstepsn1;
+ footstepsound2 = footstepsn2;
+ footstepsound3 = footstepst1;
+ footstepsound4 = footstepst2;
- for(k=0;k<objects.numobjects;k++){
- fwrite( &objects.type[k], 1, sizeof(int), tfile );
- fwrite( &objects.rotation[k], 1, sizeof(float), tfile );
- fwrite( &objects.rotation2[k], 1, sizeof(float), tfile );
- fwrite( &objects.position[k].x, 1, sizeof(float), tfile );
- fwrite( &objects.position[k].y, 1, sizeof(float), tfile );
- fwrite( &objects.position[k].z, 1, sizeof(float), tfile );
- fwrite( &objects.scale[k], 1, sizeof(float), tfile );
- }
+ LoadTexture(":Data:Textures:snow.jpg",&terraintexture,1,0);
- fwrite( &numplayers, 1, sizeof(int), tfile );
- if(numplayers>1&&numplayers<maxplayers)
- for(j=1;j<numplayers;j++){
- fwrite( &player[j].whichskin, 1, sizeof(int), tfile );
- fwrite( &player[j].creature, 1, sizeof(int), tfile );
- fwrite( &player[j].coords.x, 1, sizeof(float), tfile );
- fwrite( &player[j].coords.y, 1, sizeof(float), tfile );
- fwrite( &player[j].coords.z, 1, sizeof(float), tfile );
- fwrite( &player[j].num_weapons, 1, sizeof(int), tfile );
- if(player[j].num_weapons>0&&player[j].num_weapons<5)
- for(k=0;k<player[j].num_weapons;k++){
- fwrite( &weapons.type[player[j].weaponids[k]], 1, sizeof(int), tfile );
- }
- if(player[j].numwaypoints<30){
- fwrite( &player[j].numwaypoints, 1, sizeof(int), tfile );
- for(k=0;k<player[j].numwaypoints;k++){
- fwrite( &player[j].waypoints[k].x, 1, sizeof(float), tfile );
- fwrite( &player[j].waypoints[k].y, 1, sizeof(float), tfile );
- fwrite( &player[j].waypoints[k].z, 1, sizeof(float), tfile );
- }
- fwrite( &player[j].waypoint, 1, sizeof(int), tfile );
- //fwrite( &player[j].jumppath, 1, sizeof(bool), tfile );
- }
- else{
- player[j].numwaypoints=0;
- player[j].waypoint=0;
- fwrite( &player[j].numwaypoints, 1, sizeof(int), tfile );
- fwrite( &player[j].waypoint, 1, sizeof(int), tfile );
- fwrite( &player[j].waypoint, 1, sizeof(int), tfile );
- }
- fwrite( &player[j].armorhead, 1, sizeof(int), tfile );
- fwrite( &player[j].armorhigh, 1, sizeof(int), tfile );
- fwrite( &player[j].armorlow, 1, sizeof(int), tfile );
- fwrite( &player[j].protectionhead, 1, sizeof(int), tfile );
- fwrite( &player[j].protectionhigh, 1, sizeof(int), tfile );
- fwrite( &player[j].protectionlow, 1, sizeof(int), tfile );
- fwrite( &player[j].metalhead, 1, sizeof(int), tfile );
- fwrite( &player[j].metalhigh, 1, sizeof(int), tfile );
- fwrite( &player[j].metallow, 1, sizeof(int), tfile );
- fwrite( &player[j].power, 1, sizeof(int), tfile );
- fwrite( &player[j].speedmult, 1, sizeof(int), tfile );
-
- fwrite( &player[j].numclothes, 1, sizeof(int), tfile );
- if(player[j].numclothes)
- for(k=0;k<player[j].numclothes;k++){
- int templength;
- templength=strlen(player[j].clothes[k]);
- fwrite( &templength,1,sizeof(int),tfile);
- for(l=0;l<templength;l++)
- fwrite( &player[j].clothes[k][l],1,sizeof(char),tfile);
- fwrite( &player[j].clothestintr[k],1,sizeof(float),tfile);
- fwrite( &player[j].clothestintg[k],1,sizeof(float),tfile);
- fwrite( &player[j].clothestintb[k],1,sizeof(float),tfile);
- }
- }
- fwrite( &numpathpoints, 1, sizeof(int), tfile );
- if(numpathpoints)
- for(j=0;j<numpathpoints;j++){
- fwrite( &pathpoint[j].x, 1, sizeof(float), tfile );
- fwrite( &pathpoint[j].y, 1, sizeof(float), tfile );
- fwrite( &pathpoint[j].z, 1, sizeof(float), tfile );
- fwrite( &numpathpointconnect[j], 1, sizeof(int), tfile );
- for(k=0;k<numpathpointconnect[j];k++){
- fwrite( &pathpointconnect[j][k], 1, sizeof(int), tfile );
- }
- }
+ LoadTexture(":Data:Textures:rock.jpg",&terraintexture2,1,0);
- fwrite( &mapcenter.x, 1, sizeof(float), tfile );
- fwrite( &mapcenter.y, 1, sizeof(float), tfile );
- fwrite( &mapcenter.z, 1, sizeof(float), tfile );
+ //LoadTexture(":Data:Textures:detailgrain.png",&terraintexture3,1);
- fwrite( &mapradius, 1, sizeof(float), tfile );
- fclose(tfile);
- donesomething=1;*/
- }
- /*
- if(Compare(consoletext[0],"save ",0,4)){
- mapname[0]=':';
- mapname[1]='D';
- mapname[2]='a';
- mapname[3]='t';
- mapname[4]='a';
- mapname[5]=':';
- mapname[6]='M';
- mapname[7]='a';
- mapname[8]='p';
- mapname[9]='s';
- mapname[10]=':';
- for(j=5;j<consolechars[0];j++){
- mapname[j-5+11]=consoletext[0][j];
- }
- mapname[consolechars[0]-5+11]='\0';
- PlaySoundEx( consolesuccesssound, samp[consolesuccesssound], NULL, true);
- OPENAL_SetVolume(channels[consolesuccesssound], 256);
- OPENAL_SetPaused(channels[consolesuccesssound], false);
- FILE *tfile;
- tfile=fopen( mapname, "wb" );
- fwrite( &player[0].coords, 1, sizeof(XYZ), tfile );
- fwrite( &player[0].rotation, 1, sizeof(float), tfile );
- fwrite( &player[0].targetrotation, 1, sizeof(float), tfile );
- fwrite( &player[0].num_weapons, 1, sizeof(int), tfile );
- if(player[0].num_weapons>0&&player[0].num_weapons<5)
- for(j=0;j<player[0].num_weapons;j++){
- fwrite( &weapons.type[player[0].weaponids[j]], 1, sizeof(int), tfile );
- }
- fwrite( &environment, 1, sizeof(int), tfile );
-
- fwrite( &objects.numobjects, 1, sizeof(int), tfile );
- fwrite( &objects.type, 1, sizeof(int)*objects.numobjects, tfile );
- fwrite( &objects.rotation, 1, sizeof(float)*objects.numobjects, tfile );
- fwrite( &objects.position, 1, sizeof(XYZ)*objects.numobjects, tfile );
- fwrite( &objects.scale, 1, sizeof(float)*objects.numobjects, tfile );
-
- fwrite( &numplayers, 1, sizeof(int), tfile );
- if(numplayers>1&&numplayers<maxplayers)
- for(j=1;j<numplayers;j++){
- fwrite( &player[j].coords, 1, sizeof(XYZ), tfile );
- fwrite( &player[j].num_weapons, 1, sizeof(int), tfile );
- if(player[j].num_weapons>0&&player[j].num_weapons<5)
- for(k=0;k<player[j].num_weapons;k++){
- fwrite( &weapons.type[player[j].weaponids[k]], 1, sizeof(int), tfile );
- }
- if(player[j].numwaypoints<30){
- fwrite( &player[j].numwaypoints, 1, sizeof(int), tfile );
- fwrite( &player[j].waypoints, 1, sizeof(XYZ)*player[j].numwaypoints, tfile );
- fwrite( &player[j].waypoint, 1, sizeof(int), tfile );
- //fwrite( &player[j].jumppath, 1, sizeof(bool), tfile );
- }
- else{
- player[j].numwaypoints=0;
- player[j].waypoint=0;
- fwrite( &player[j].numwaypoints, 1, sizeof(int), tfile );
- fwrite( &player[j].waypoint, 1, sizeof(int), tfile );
- fwrite( &player[j].waypoint, 1, sizeof(int), tfile );
- }
- }
- fwrite( &numpathpoints, 1, sizeof(int), tfile );
- if(numpathpoints)
- for(j=0;j<numpathpoints;j++){
- fwrite( &pathpoint[j], 1, sizeof(XYZ), tfile );
- fwrite( &numpathpointconnect[j], 1, sizeof(int), tfile );
- for(k=0;k<numpathpointconnect[j];k++){
- fwrite( &pathpointconnect[j][k], 1, sizeof(int), tfile );
- }
- }
- fclose(tfile);
- donesomething=1;
- }*/
- if(Compare(consoletext[0],"cellar door ",0,11)||Compare(consoletext[0],"cellardoor ",0,10)){
- LoadTextureSave(":Data:Textures:Furdarko.jpg",&player[0].skeleton.drawmodel.textureptr,1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize);
- donesomething=1;
- }
- /*if(Compare(consoletext[0],"Pants ",0,5)){
- AddClothes(":Data:Textures:Pants.png",0,1,&player[i].skeleton.skinText[0],&player[i].skeleton.skinsize);
- player[i].DoMipmaps(5,0,0,player[i].skeleton.skinsize,player[i].skeleton.skinsize);
- donesomething=1;
- }*/
-
- if(Compare(consoletext[0],"tintr ",0,5)||Compare(consoletext[0],"Tintr ",0,5)){
- for(j=6;j<consolechars[0];j++){
- mapname[j-6]=consoletext[0][j];
- }
+ 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");
- tintr=atof(mapname);
- donesomething=1;
- }
- if(Compare(consoletext[0],"speed ",0,5)||Compare(consoletext[0],"Speed ",0,5)){
- for(j=6;j<consolechars[0];j++){
- mapname[j-6]=consoletext[0][j];
- }
- player[0].speedmult=atof(mapname);
+ texdetail=temptexdetail;
+ }
+ if(environment==desertenvironment){
+ windvector=0;
+ windvector.z=2;
+ LoadTexture(":Data:Textures:deserttree.png",&objects.treetextureptr,0,1);
+ LoadTexture(":Data:Textures:bushdesert.png",&objects.bushtextureptr,0,1);
+ LoadTexture(":Data:Textures:boulderdesert.jpg",&objects.rocktextureptr,1,0);
+ LoadTexture(":Data:Textures:desertbox.jpg",&objects.boxtextureptr,1,0);
- donesomething=1;
- }
- if(Compare(consoletext[0],"strength ",0,8)||Compare(consoletext[0],"Strength ",0,8)){
- for(j=9;j<consolechars[0];j++){
- mapname[j-9]=consoletext[0][j];
- }
+ if(ambientsound){
+ //PlaySoundEx( desertambient, samp[desertambient], NULL, true);
+ PlayStreamEx( stream_desertambient, strm[stream_desertambient], NULL, true);
+ OPENAL_SetPaused(channels[stream_desertambient], false);
+ OPENAL_SetVolume(channels[stream_desertambient], 256);
+ }
- player[0].power=atof(mapname);
+ footstepsound = footstepsn1;
+ footstepsound2 = footstepsn2;
+ footstepsound3 = footstepsn1;
+ footstepsound4 = footstepsn2;
- donesomething=1;
- }
+ LoadTexture(":Data:Textures:sand.jpg",&terraintexture,1,0);
- if(Compare(consoletext[0],"viewdistance ",0,12)||Compare(consoletext[0],"Viewdistance ",0,12)){
- for(j=13;j<consolechars[0];j++){
- mapname[j-13]=consoletext[0][j];
- }
+ LoadTexture(":Data:Textures:sandslope.jpg",&terraintexture2,1,0);
- viewdistance=atof(mapname)*100;
+ //LoadTexture(":Data:Textures:detailgrain.png",&terraintexture3,1);
- donesomething=1;
- }
- if(Compare(consoletext[0],"fadestart ",0,9)||Compare(consoletext[0],"Fadestart ",0,9)){
- for(j=10;j<consolechars[0];j++){
- mapname[j-10]=consoletext[0][j];
- }
- fadestart=atof(mapname);
+ 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");
- donesomething=1;
- }
- if(Compare(consoletext[0],"power ",0,5)||Compare(consoletext[0],"Power ",0,5)){
- for(j=6;j<consolechars[0];j++){
- mapname[j-6]=consoletext[0][j];
- }
- player[0].power=atof(mapname);
- donesomething=1;
- }
+ texdetail=temptexdetail;
+ }
+ if(environment==grassyenvironment){
+ windvector=0;
+ windvector.z=2;
+ LoadTexture(":Data:Textures:tree.png",&objects.treetextureptr,0,1);
+ LoadTexture(":Data:Textures:bush.png",&objects.bushtextureptr,0,1);
+ LoadTexture(":Data:Textures:boulder.jpg",&objects.rocktextureptr,1,0);
+ LoadTexture(":Data:Textures:grassbox.jpg",&objects.boxtextureptr,1,0);
- if(Compare(consoletext[0],"slomo ",0,5)||Compare(consoletext[0],"Slomo ",0,5)){
- for(j=6;j<consolechars[0];j++){
- mapname[j-6]=consoletext[0][j];
- }
+ if(ambientsound){
+ PlayStreamEx( stream_wind, strm[stream_wind], NULL, true);
+ OPENAL_SetPaused(channels[stream_wind], false);
+ OPENAL_SetVolume(channels[stream_wind], 100);
+ }
- slomospeed=atof(mapname);
- slomo=1-slomo;
- slomodelay=1000;
+ footstepsound = footstepgr1;
+ footstepsound2 = footstepgr2;
+ footstepsound3 = footstepst1;
+ footstepsound4 = footstepst2;
- donesomething=1;
- }
+ LoadTexture(":Data:Textures:grassdirt.jpg",&terraintexture,1,0);
- if(Compare(consoletext[0],"slofreq ",0,7)||Compare(consoletext[0],"Slofreq ",0,7)){
- for(j=8;j<consolechars[0];j++){
- mapname[j-8]=consoletext[0][j];
- }
+ LoadTexture(":Data:Textures:mossrock.jpg",&terraintexture2,1,0);
- slomofreq=atoi(mapname);
+ //LoadTexture(":Data:Textures:detail.png",&terraintexture3,1);
- donesomething=1;
- }
- if(Compare(consoletext[0],"size ",0,4)||Compare(consoletext[0],"Size ",0,4)){
- for(j=5;j<consolechars[0];j++){
- mapname[j-5]=consoletext[0][j];
- }
- player[0].scale=atof(mapname)*.2;
+ 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");
- donesomething=1;
- }
- if(Compare(consoletext[0],"sizenear ",0,8)||Compare(consoletext[0],"Sizenear ",0,8)){
- int closest=-1;
- float closestdist=-1;
- float distance;
- if(numplayers>1)
- for(i=1;i<numplayers;i++){
- distance=findDistancefast(&player[i].coords,&player[0].coords);
- if(closestdist==-1||distance<closestdist){
- closestdist=distance;
- closest=i;
- }
- }
- for(j=9;j<consolechars[0];j++){
- mapname[j-9]=consoletext[0][j];
- }
+ texdetail=temptexdetail;
+ }
+ temptexdetail=texdetail;
+ texdetail=1;
+ terrain.load(":Data:Textures:heightmap.png");
- player[closest].scale=atof(mapname)*.2;
+ texdetail=temptexdetail;
+}
- donesomething=1;
- }
- if(Compare(consoletext[0],"proportionnear ",0,14)||Compare(consoletext[0],"Proportionnear ",0,14)){
- int startpoint;
- int alldone;
+void Game::Loadlevel(int which){
+ stealthloading=0;
- int closest=-1;
- float closestdist=-1;
- float distance;
- if(numplayers>1)
- for(i=1;i<numplayers;i++){
- distance=findDistancefast(&player[i].coords,&player[0].coords);
- if(closestdist==-1||distance<closestdist){
- closestdist=distance;
- closest=i;
- }
- }
+ 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");
- alldone=0;
- startpoint=15;
- 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';
+ whichlevel=which;
+}
- headprop=atof(mapname);
+void Game::Loadlevel(char *name){
+ int i,j,k,l,m;
+ static int oldlevel;
+ int templength;
+ float lamefloat;
+ int lameint;
- 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';
+ float headprop,legprop,armprop,bodyprop;
- bodyprop=atof(mapname);
+ LOGFUNC;
- 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';
+ LOG(std::string("Loading level...") + name);
- armprop=atof(mapname);
+ if(!gameon)visibleloading=1;
- j++;
- startpoint=j;
- while(consoletext[0][j]!='\0'&&consoletext[0][j]!=' '&&!alldone&&j<255){
- mapname[j-startpoint]=consoletext[0][j];
- j++;
- if(consoletext[0][j]=='\0')alldone=1;
- }
- mapname[j-startpoint]='\0';
+ if(stealthloading)visibleloading=0;
- legprop=atof(mapname);
+ if(!stillloading)loadtime=0;
+ gamestarted=1;
- if(player[closest].creature==wolftype){
- player[closest].proportionhead=1.1*headprop;
- player[closest].proportionbody=1.1*bodyprop;
- player[closest].proportionarms=1.1*armprop;
- player[closest].proportionlegs=1.1*legprop;
- }
+ numenvsounds=0;
+ //visibleloading=1;
+ if(tutoriallevel!=-1)tutoriallevel=0;
+ else tutoriallevel=1;
- if(player[closest].creature==rabbittype){
- player[closest].proportionhead=1.2*headprop;
- player[closest].proportionbody=1.05*bodyprop;
- player[closest].proportionarms=1.00*armprop;
- player[closest].proportionlegs=1.1*legprop;
- player[closest].proportionlegs.y=1.05*legprop;
- }
+ if(tutoriallevel==1)tutorialstage=0;
+ if(tutorialstage==0){
+ tutorialstagetime=0;
+ tutorialmaxtime=1;
+ }
+ loadingstuff=1;
+ if(!firstload){
+ oldlevel=50;
+ }
+ OPENAL_SetPaused(channels[whooshsound], true);
+ OPENAL_SetPaused(channels[stream_firesound], true);
- donesomething=1;
- }
+ // Change the map filename into something that is os specific
+ char *FixedFN = ConvertFileName(name);
+ int mapvers;
+ FILE *tfile;
+ tfile=fopen( FixedFN, "rb" );
+ if(tfile)
+ {
+ OPENAL_SetPaused(channels[stream_firesound], true);
- if(Compare(consoletext[0],"sizemin ",0,7)||Compare(consoletext[0],"Sizemin ",0,7)){
- for(i=1;i<numplayers;i++){
- if(player[i].scale<0.8*0.2)player[i].scale=0.8*0.2;
- }
- donesomething=1;
- }
+ scoreadded=0;
+ windialogue=0;
- if(Compare(consoletext[0],"tutorial ",0,8)||Compare(consoletext[0],"Tutorial ",0,8)){
- for(j=9;j<consolechars[0];j++){
- mapname[j-9]=consoletext[0][j];
- }
+ hostiletime=0;
- tutoriallevel=atoi(mapname);
+ won=0;
- donesomething=1;
- }
+ //campaign=0;
+ animation[bounceidleanim].Load((char *)"Idle",middleheight,neutral);
+ numdialogues=0;
- if(Compare(consoletext[0],"tintg ",0,5)||Compare(consoletext[0],"Tintg ",0,5)){
- for(j=6;j<consolechars[0];j++){
- mapname[j-6]=consoletext[0][j];
- }
+ for(i=0;i<20;i++)
+ {
+ dialoguegonethrough[i]=0;
+ }
- tintg=atof(mapname);
+ indialogue=-1;
+ cameramode=0;
- donesomething=1;
- }
+ damagedealt=0;
+ damagetaken=0;
- if(Compare(consoletext[0],"tintb ",0,5)||Compare(consoletext[0],"Tintb ",0,5)){
- for(j=6;j<consolechars[0];j++){
- mapname[j-6]=consoletext[0][j];
- }
+ if(accountactive)difficulty=accountactive->getDifficulty();
- tintb=atof(mapname);
+ if(difficulty!=2)minimap=1;
+ else minimap=0;
- donesomething=1;
- }
+ numhotspots=0;
+ currenthotspot=-1;
+ bonustime=1;
- if(Compare(consoletext[0],"hostile ",0,7)){
- for(j=8;j<consolechars[0];j++){
- mapname[j-8]=consoletext[0][j];
- }
+ skyboxtexture=1;
+ skyboxr=1;
+ skyboxg=1;
+ skyboxb=1;
- hostile=atoi(mapname);
+ freeze=0;
+ winfreeze=0;
- donesomething=1;
- }
+ for(i=0;i<100;i++)
+ {
+ bonusnum[i]=0;
+ }
+ numfalls=0;
+ numflipfail=0;
+ numseen=0;
+ numstaffattack=0;
+ numswordattack=0;
+ numknifeattack=0;
+ numunarmedattack=0;
+ numescaped=0;
+ numflipped=0;
+ numwallflipped=0;
+ numthrowkill=0;
+ numafterkill=0;
+ numreversals=0;
+ numattacks=0;
+ maxalarmed=0;
+ numresponded=0;
- if(Compare(consoletext[0],"type active ",0,11)){
- editoractive=typeactive;
+ bonustotal=startbonustotal;
+ bonus=0;
+ gameon=1;
+ changedelay=0;
+ if(console)
+ {
+ PlaySoundEx( consolesuccesssound, samp[consolesuccesssound], NULL, true);
+ OPENAL_SetVolume(channels[consolesuccesssound], 256);
+ OPENAL_SetPaused(channels[consolesuccesssound], false);
+ freeze=0;
+ console=0;
+ }
- donesomething=1;
- }
+ if(!stealthloading)
+ {
+ terrain.numdecals=0;
+ Sprite::deleteSprites();
+ for(i=0;i<objects.numobjects;i++)
+ {
+ objects.model[i].numdecals=0;
+ }
- if(Compare(consoletext[0],"indemo ",0,6)){
- indemo=1;
- hotspot[numhotspots]=player[0].coords;
- hotspotsize[numhotspots]=0;
- hotspottype[numhotspots]=-111;
- mapname[0]='\0';
- strcpy(hotspottext[numhotspots],"mapname");
- numhotspots++;
+ j=objects.numobjects;
+ for(i=0;i<j;i++)
+ {
+ objects.DeleteObject(0);
+ if(visibleloading){loadscreencolor=4; LoadingScreen();}
+ }
- donesomething=1;
- }
+ for(i=0;i<subdivision;i++)
+ {
+ for(j=0;j<subdivision;j++)
+ {
+ terrain.patchobjectnum[i][j]=0;
+ }
+ }
+ if(visibleloading){loadscreencolor=4; LoadingScreen();}
+ }
- if(Compare(consoletext[0],"notindemo ",0,9)){
- indemo=0;
- numhotspots--;
+ weapons.numweapons=0;
- donesomething=1;
- }
+ funpackf(tfile, "Bi", &mapvers);
+ if(mapvers>=15)funpackf(tfile, "Bi", &indemo);
+ else indemo=0;
+ if(mapvers>=5)funpackf(tfile, "Bi", &maptype);
+ else maptype=mapkilleveryone;
+ if(mapvers>=6)funpackf(tfile, "Bi", &hostile);
+ else hostile=1;
+ if(mapvers>=4)funpackf(tfile, "Bf Bf", &viewdistance, &fadestart);
+ else
+ {
+ viewdistance=100;
+ fadestart=.6;
+ }
+ if(mapvers>=2)funpackf(tfile, "Bb Bf Bf Bf", &skyboxtexture, &skyboxr, &skyboxg, &skyboxb);
+ else
+ {
+ skyboxtexture=1;
+ skyboxr=1;
+ skyboxg=1;
+ skyboxb=1;
+ }
+ if(mapvers>=10)funpackf(tfile, "Bf Bf Bf", &skyboxlightr, &skyboxlightg, &skyboxlightb);
+ else
+ {
+ skyboxlightr=skyboxr;
+ skyboxlightg=skyboxg;
+ skyboxlightb=skyboxb;
+ }
+ if(!stealthloading)funpackf(tfile, "Bf Bf Bf Bf Bf Bi", &player[0].coords.x,&player[0].coords.y,&player[0].coords.z,&player[0].rotation,&player[0].targetrotation, &player[0].num_weapons);
+ if(stealthloading)funpackf(tfile, "Bf Bf Bf Bf Bf Bi", &lamefloat,&lamefloat,&lamefloat,&lamefloat,&lamefloat, &player[0].num_weapons);
+ player[0].originalcoords=player[0].coords;
+ if(player[0].num_weapons>0&&player[0].num_weapons<5)
+ {
+ for(j=0;j<player[0].num_weapons;j++)
+ {
+ player[0].weaponids[j]=weapons.numweapons;
+ funpackf(tfile, "Bi", &weapons.type[weapons.numweapons]);
+ weapons.owner[weapons.numweapons]=0;
+ weapons.numweapons++;
+ }
+ }
- if(Compare(consoletext[0],"type sitting ",0,12)){
- editoractive=typesitting;
+ if(visibleloading){loadscreencolor=4; LoadingScreen();}
- donesomething=1;
- }
+ funpackf(tfile, "Bf Bf Bf", &player[0].armorhead, &player[0].armorhigh, &player[0].armorlow);
+ funpackf(tfile, "Bf Bf Bf", &player[0].protectionhead, &player[0].protectionhigh, &player[0].protectionlow);
+ funpackf(tfile, "Bf Bf Bf", &player[0].metalhead, &player[0].metalhigh, &player[0].metallow);
+ funpackf(tfile, "Bf Bf", &player[0].power, &player[0].speedmult);
- if(Compare(consoletext[0],"type sitting wall ",0,17)){
- editoractive=typesittingwall;
+ funpackf(tfile, "Bi", &player[0].numclothes);
- donesomething=1;
- }
+ if(mapvers>=9)
+ {
+ funpackf(tfile, "Bi Bi", &player[0].whichskin, &player[0].creature);
+ }
+ else
+ {
+ player[0].whichskin=0;
+ player[0].creature=rabbittype;
+ }
- if(Compare(consoletext[0],"type sleeping ",0,13)){
- editoractive=typesleeping;
+ for(i=0;i<max_dialogues;i++)
+ {
+ for(j=0;j<max_dialoguelength;j++)
+ {
+ for(k=0;k<128;k++)
+ {
+ dialoguetext[i][j][k]='\0';
+ }
+ for(k=0;k<64;k++)
+ {
+ dialoguename[i][j][k]='\0';
+ }
+ }
+ }
- donesomething=1;
- }
- if(Compare(consoletext[0],"type dead1 ",0,10)){
- editoractive=typedead1;
+ player[0].lastattack=-1;
+ player[0].lastattack2=-1;
+ player[0].lastattack3=-1;
- donesomething=1;
- }
- if(Compare(consoletext[0],"type dead2 ",0,10)){
- editoractive=typedead2;
+ if(mapvers>=8)
+ {
+ funpackf(tfile, "Bi", &numdialogues);
+ if(numdialogues)
+ {
+ for(k=0;k<numdialogues;k++)
+ {
+ funpackf(tfile, "Bi", &numdialogueboxes[k]);
+ funpackf(tfile, "Bi", &dialoguetype[k]);
+ for(l=0;l<10;l++)
+ {
+ funpackf(tfile, "Bf Bf Bf", &participantlocation[k][l].x, &participantlocation[k][l].y, &participantlocation[k][l].z);
+ funpackf(tfile, "Bf", &participantrotation[k][l]);
+ }
+ if(numdialogueboxes)
+ {
+ for(l=0;l<numdialogueboxes[k];l++)
+ {
+ funpackf(tfile, "Bi", &dialogueboxlocation[k][l]);
+ funpackf(tfile, "Bf", &dialogueboxcolor[k][l][0]);
+ funpackf(tfile, "Bf", &dialogueboxcolor[k][l][1]);
+ funpackf(tfile, "Bf", &dialogueboxcolor[k][l][2]);
+ funpackf(tfile, "Bi", &dialogueboxsound[k][l]);
- donesomething=1;
- }
- if(Compare(consoletext[0],"type dead3 ",0,10)){
- editoractive=typedead3;
- donesomething=1;
- }
- if(Compare(consoletext[0],"type dead4 ",0,10)){
- editoractive=typedead4;
+ bool doneread;
- donesomething=1;
+ funpackf(tfile, "Bi",&templength);
+ if(templength>128||templength<=0)templength=128;
+ for(m=0;m<templength;m++){
+ funpackf(tfile, "Bb", &dialoguetext[k][l][m]);
+ if(dialoguetext[k][l][m]=='\0')break;
}
- if(Compare(consoletext[0],"path keepwalking ",0,16)){
- editorpathtype=wpkeepwalking;
-
- donesomething=1;
+ funpackf(tfile, "Bi",&templength);
+ if(templength>64||templength<=0)templength=64;
+ for(m=0;m<templength;m++){
+ funpackf(tfile, "Bb", &dialoguename[k][l][m]);
+ if(dialoguename[k][l][m]=='\0'){
+ break;
+ }
}
+ funpackf(tfile, "Bf Bf Bf", &dialoguecamera[k][l].x, &dialoguecamera[k][l].y, &dialoguecamera[k][l].z);
+ funpackf(tfile, "Bi", &participantfocus[k][l]);
+ funpackf(tfile, "Bi", &participantaction[k][l]);
- if(Compare(consoletext[0],"path pause ",0,10)){
- editorpathtype=wppause;
-
- donesomething=1;
- }
+ for(m=0;m<10;m++)
+ funpackf(tfile, "Bf Bf Bf", &participantfacing[k][l][m].x, &participantfacing[k][l][m].y, &participantfacing[k][l][m].z);
- if(Compare(consoletext[0],"mapkilleveryone ",0,15)){
- maptype=mapkilleveryone;
+ funpackf(tfile, "Bf Bf",&dialoguecamerarotation[k][l],&dialoguecamerarotation2[k][l]);
+ }
+ }
+ }
+ }
+ }
+ else numdialogues=0;
- donesomething=1;
- }
+ if(player[0].numclothes)
+ {
+ for(k=0;k<player[0].numclothes;k++)
+ {
+ funpackf(tfile, "Bi", &templength);
+ for(l=0;l<templength;l++)
+ funpackf(tfile, "Bb", &player[0].clothes[k][l]);
+ player[0].clothes[k][templength]='\0';
+ funpackf(tfile, "Bf Bf Bf", &player[0].clothestintr[k], &player[0].clothestintg[k], &player[0].clothestintb[k]);
+ }
+ }
- if(Compare(consoletext[0],"mapgosomewhere ",0,14)){
- maptype=mapgosomewhere;
+ funpackf(tfile, "Bi", &environment);
- donesomething=1;
- }
+ funpackf(tfile, "Bi", &objects.numobjects);
+ if(objects.numobjects)
+ {
+ for(i=0;i<objects.numobjects;i++)
+ {
+ funpackf(tfile, "Bi Bf Bf Bf Bf Bf Bf", &objects.type[i],&objects.rotation[i],&objects.rotation2[i], &objects.position[i].x, &objects.position[i].y, &objects.position[i].z,&objects.scale[i]);
+ if(objects.type[i]==treeleavestype)objects.scale[i]=objects.scale[i-1];
+ }
+ }
- if(Compare(consoletext[0],"mapkillsomeone ",0,14)){
- maptype=mapkillsomeone;
+ if(mapvers>=7)
+ {
+ funpackf(tfile, "Bi", &numhotspots);
+ if(numhotspots)
+ {
+ for(i=0;i<numhotspots;i++)
+ {
+ funpackf(tfile, "Bi Bf Bf Bf Bf", &hotspottype[i],&hotspotsize[i],&hotspot[i].x,&hotspot[i].y,&hotspot[i].z);
+ funpackf(tfile, "Bi", &templength);
+ if(templength)
+ for(l=0;l<templength;l++)
+ funpackf(tfile, "Bb", &hotspottext[i][l]);
+ hotspottext[i][templength]='\0';
+ if(hotspottype[i]==-111)indemo=1;
+ }
+ }
+ }
+ else numhotspots=0;
- donesomething=1;
+ if(visibleloading){loadscreencolor=4; LoadingScreen();}
- }
+ if(!stealthloading)
+ {
+ objects.center=0;
+ for(i=0;i<objects.numobjects;i++)
+ {
+ objects.center+=objects.position[i];
+ }
+ objects.center/=objects.numobjects;
- if(Compare(consoletext[0],"mapkillmost ",0,11)){
- maptype=mapkillmost;
- donesomething=1;
+ if(visibleloading){loadscreencolor=4; LoadingScreen();}
- }
+ float maxdistance=0;
+ float tempdist;
+ int whichclosest;
+ for(i=0;i<objects.numobjects;i++)
+ {
+ tempdist=findDistancefast(&objects.center,&objects.position[i]);
+ if(tempdist>maxdistance)
+ {
+ whichclosest=i;
+ maxdistance=tempdist;
+ }
+ }
+ objects.radius=fast_sqrt(maxdistance);
+ }
- if(Compare(consoletext[0],"hs ",0,2)){
- int startpoint;
- int alldone;
+ if(visibleloading){loadscreencolor=4; LoadingScreen();}
+ //mapcenter=objects.center;
+ //mapradius=objects.radius;
- hotspot[numhotspots]=player[0].coords;
+ funpackf(tfile, "Bi", &numplayers);
+ int howmanyremoved=0;
+ bool removeanother=0;
+ if(numplayers>1&&numplayers<maxplayers)
+ {
+ for(i=1;i<numplayers;i++)
+ {
+ if(visibleloading){loadscreencolor=4; LoadingScreen();}
+ removeanother=0;
- alldone=0;
- startpoint=3;
- j=startpoint;
- while(consoletext[0][j]!='\0'&&consoletext[0][j]!=' '&&!alldone&&j<255){
- mapname[j-startpoint]=consoletext[0][j];
- j++;
- if(consoletext[0][j]=='\0')alldone=1;
- }
- mapname[j-startpoint]='\0';
+ funpackf(tfile, "Bi Bi Bf Bf Bf Bi",&player[i-howmanyremoved].whichskin,&player[i-howmanyremoved].creature, &player[i-howmanyremoved].coords.x,&player[i-howmanyremoved].coords.y,&player[i-howmanyremoved].coords.z,&player[i-howmanyremoved].num_weapons);
+ if(mapvers>=5)funpackf(tfile, "Bi", &player[i-howmanyremoved].howactive);
+ else player[i-howmanyremoved].howactive=typeactive;
+ if(mapvers>=3)funpackf(tfile, "Bf",&player[i-howmanyremoved].scale);
+ else player[i-howmanyremoved].scale=-1;
+ if(mapvers>=11)funpackf(tfile, "Bb",&player[i-howmanyremoved].immobile);
+ else player[i-howmanyremoved].immobile=0;
+ if(mapvers>=12)funpackf(tfile, "Bf",&player[i-howmanyremoved].rotation);
+ else player[i-howmanyremoved].rotation=0;
+ player[i-howmanyremoved].targetrotation=player[i-howmanyremoved].rotation;
+ if(player[i-howmanyremoved].num_weapons<0||player[i-howmanyremoved].num_weapons>5){
+ removeanother=1;
+ howmanyremoved++;
+ }
+ if(!removeanother)
+ {
+ if(player[i-howmanyremoved].num_weapons>0&&player[i-howmanyremoved].num_weapons<5)
+ {
+ for(j=0;j<player[i-howmanyremoved].num_weapons;j++)
+ {
+ player[i-howmanyremoved].weaponids[j]=weapons.numweapons;
+ funpackf(tfile, "Bi", &weapons.type[player[i-howmanyremoved].weaponids[j]]);
+ weapons.owner[player[i-howmanyremoved].weaponids[j]]=i;
+ weapons.numweapons++;
+ }
+ }
+ funpackf(tfile, "Bi", &player[i-howmanyremoved].numwaypoints);
+ //player[i-howmanyremoved].numwaypoints=10;
+ for(j=0;j<player[i-howmanyremoved].numwaypoints;j++)
+ {
+ funpackf(tfile, "Bf", &player[i-howmanyremoved].waypoints[j].x);
+ funpackf(tfile, "Bf", &player[i-howmanyremoved].waypoints[j].y);
+ funpackf(tfile, "Bf", &player[i-howmanyremoved].waypoints[j].z);
+ if(mapvers>=5)funpackf(tfile, "Bi", &player[i-howmanyremoved].waypointtype[j]);
+ else player[i-howmanyremoved].waypointtype[j] = wpkeepwalking;
+ }
- hotspotsize[numhotspots]=atof(mapname);
+ funpackf(tfile, "Bi", &player[i-howmanyremoved].waypoint);
+ if(player[i-howmanyremoved].waypoint>player[i-howmanyremoved].numwaypoints-1)player[i-howmanyremoved].waypoint=0;
- j++;
- startpoint=j;
- while(consoletext[0][j]!='\0'&&consoletext[0][j]!=' '&&!alldone&&j<255){
- mapname[j-startpoint]=consoletext[0][j];
- j++;
- if(consoletext[0][j]=='\0')alldone=1;
- }
- mapname[j-startpoint]='\0';
+ funpackf(tfile, "Bf Bf Bf", &player[i-howmanyremoved].armorhead, &player[i-howmanyremoved].armorhigh, &player[i-howmanyremoved].armorlow);
+ funpackf(tfile, "Bf Bf Bf", &player[i-howmanyremoved].protectionhead, &player[i-howmanyremoved].protectionhigh, &player[i-howmanyremoved].protectionlow);
+ funpackf(tfile, "Bf Bf Bf", &player[i-howmanyremoved].metalhead, &player[i-howmanyremoved].metalhigh, &player[i-howmanyremoved].metallow);
+ funpackf(tfile, "Bf Bf", &player[i-howmanyremoved].power, &player[i-howmanyremoved].speedmult);
- hotspottype[numhotspots]=atoi(mapname);
+ if(mapvers>=4)funpackf(tfile, "Bf Bf Bf Bf", &headprop, &bodyprop, &armprop, &legprop);
+ else
+ {
+ headprop=1;
+ bodyprop=1;
+ armprop=1;
+ legprop=1;
+ }
+ if(player[i-howmanyremoved].creature==wolftype)
+ {
+ player[i-howmanyremoved].proportionhead=1.1*headprop;
+ player[i-howmanyremoved].proportionbody=1.1*bodyprop;
+ player[i-howmanyremoved].proportionarms=1.1*armprop;
+ player[i-howmanyremoved].proportionlegs=1.1*legprop;
+ }
- j++;
- startpoint=j;
- while(consoletext[0][j]!='\0'&&!alldone&&j<255){
- mapname[j-startpoint]=consoletext[0][j];
- j++;
- if(consoletext[0][j]=='\0')alldone=1;
- }
- mapname[j-startpoint]='\n';
- mapname[j-startpoint+1]='\0';
+ if(player[i-howmanyremoved].creature==rabbittype)
+ {
+ player[i-howmanyremoved].proportionhead=1.2*headprop;
+ player[i-howmanyremoved].proportionbody=1.05*bodyprop;
+ player[i-howmanyremoved].proportionarms=1.00*armprop;
+ player[i-howmanyremoved].proportionlegs=1.1*legprop;
+ player[i-howmanyremoved].proportionlegs.y=1.05*legprop;
+ }
- strcpy(hotspottext[numhotspots],mapname);
+ funpackf(tfile, "Bi", &player[i-howmanyremoved].numclothes);
+ if(player[i-howmanyremoved].numclothes)
+ {
+ for(k=0;k<player[i-howmanyremoved].numclothes;k++)
+ {
+ int templength;
+ funpackf(tfile, "Bi", &templength);
+ for(l=0;l<templength;l++)
+ funpackf(tfile, "Bb", &player[i-howmanyremoved].clothes[k][l]);
+ player[i-howmanyremoved].clothes[k][templength]='\0';
+ funpackf(tfile, "Bf Bf Bf", &player[i-howmanyremoved].clothestintr[k], &player[i-howmanyremoved].clothestintg[k], &player[i-howmanyremoved].clothestintb[k]);
+ }
+ }
+ }
+ }
+ }
+ if(visibleloading){loadscreencolor=4; LoadingScreen();}
- numhotspots++;
+ numplayers-=howmanyremoved;
+ funpackf(tfile, "Bi", &numpathpoints);
+ if(numpathpoints>30||numpathpoints<0)
+ numpathpoints=0;
+ if(numpathpoints)
+ {
+ for(j=0;j<numpathpoints;j++)
+ {
+ funpackf(tfile, "Bf Bf Bf Bi", &pathpoint[j].x,&pathpoint[j].y,&pathpoint[j].z,&numpathpointconnect[j]);
+ for(k=0;k<numpathpointconnect[j];k++){
+ funpackf(tfile, "Bi", &pathpointconnect[j][k]);
+ }
+ }
+ }
+ if(visibleloading){loadscreencolor=4; LoadingScreen();}
- donesomething=1;
- }
+ funpackf(tfile, "Bf Bf Bf Bf", &mapcenter.x,&mapcenter.y,&mapcenter.z,&mapradius);
- if(Compare(consoletext[0],"dialogue ",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';
- startpoint=j+1;
-
- dialoguetype[numdialogues]=atoi(mapname);
-
- mapname[0]=':';
- mapname[1]='D';
- mapname[2]='a';
- mapname[3]='t';
- mapname[4]='a';
- mapname[5]=':';
- mapname[6]='D';
- mapname[7]='i';
- mapname[8]='a';
- mapname[9]='l';
- mapname[10]='o';
- mapname[11]='g';
- mapname[12]='u';
- mapname[13]='e';
- mapname[14]='s';
- mapname[15]=':';
- for(j=startpoint;j<consolechars[0];j++){
- mapname[j-startpoint+16]=consoletext[0][j];
- }
- mapname[consolechars[0]-startpoint+16]='.';
- mapname[consolechars[0]-startpoint+17]='t';
- mapname[consolechars[0]-startpoint+18]='x';
- mapname[consolechars[0]-startpoint+19]='t';
- mapname[consolechars[0]-startpoint+20]='\0';
-
- for(j=0;j<max_dialoguelength;j++){
- for(k=0;k<128;k++){
- dialoguetext[numdialogues][j][k]='\0';
- }
- for(k=0;k<64;k++){
- dialoguename[numdialogues][j][k]='\0';
- }
- }
+ SetUpLighting();
+ if(environment!=oldenvironment)Setenvironment(environment);
+ oldenvironment=environment;
- ifstream ipstream(ConvertFileName(mapname));
- ipstream.ignore(256,':');
- ipstream >> numdialogueboxes[numdialogues];
- for(i=0;i<numdialogueboxes[numdialogues];i++){
- ipstream.ignore(256,':');
- ipstream.ignore(256,':');
- ipstream.ignore(256,' ');
- ipstream >> 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];
- }
+ if(!stealthloading)
+ {
+ j=objects.numobjects;
+ objects.numobjects=0;
+ for(i=0;i<j;i++)
+ {
+ //if(objects.type[i]!=spiketype)
+ objects.MakeObject(objects.type[i],objects.position[i],objects.rotation[i],objects.rotation2[i],objects.scale[i]);
+ if(visibleloading){loadscreencolor=4; LoadingScreen();}
+ }
- for(i=0;i<numdialogueboxes[numdialogues];i++){
- for(j=0;j<numplayers;j++){
- participantfacing[numdialogues][i][j]=player[j].facing;
- }
- }
- ipstream.close();
+ //if(skyboxtexture){
+ terrain.DoShadows();
+ if(visibleloading){loadscreencolor=4; LoadingScreen();}
+ objects.DoShadows();
+ if(visibleloading){loadscreencolor=4; LoadingScreen();}
+ /*}
+ else terrain.DoLighting();
+ */
+ }
- directing=1;
- indialogue=0;
- whichdialogue=numdialogues;
+ fclose(tfile);
+ oldlevel=whichlevel;
- numdialogues++;
- donesomething=1;
- }
+ if(numplayers>maxplayers-1)numplayers=maxplayers-1;
+ for(i=0;i<numplayers;i++)
+ {
+ if(visibleloading){loadscreencolor=4; LoadingScreen();}
+ player[i].burnt=0;
+ player[i].bled=0;
+ player[i].onfire=0;
+ if(i==0||player[i].scale<0)player[i].scale=.2;
+ player[i].skeleton.free=0;
+ player[i].skeleton.id=i;
+ //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);
+ 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);
+ }
+ 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);
+ }
+ }
- if(Compare(consoletext[0],"fixdialogue ",0,11)){
- int startpoint;
- int alldone;
- int whichdi;
-
- alldone=0;
- startpoint=12;
- 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;
-
- whichdi=atoi(mapname);
-
- mapname[0]=':';
- mapname[1]='D';
- mapname[2]='a';
- mapname[3]='t';
- mapname[4]='a';
- mapname[5]=':';
- mapname[6]='D';
- mapname[7]='i';
- mapname[8]='a';
- mapname[9]='l';
- mapname[10]='o';
- mapname[11]='g';
- mapname[12]='u';
- mapname[13]='e';
- mapname[14]='s';
- mapname[15]=':';
- for(j=startpoint;j<consolechars[0];j++){
- mapname[j-startpoint+16]=consoletext[0][j];
- }
- mapname[consolechars[0]-startpoint+16]='.';
- mapname[consolechars[0]-startpoint+17]='t';
- mapname[consolechars[0]-startpoint+18]='x';
- mapname[consolechars[0]-startpoint+19]='t';
- mapname[consolechars[0]-startpoint+20]='\0';
-
- for(j=0;j<max_dialoguelength;j++){
- for(k=0;k<128;k++){
- dialoguetext[whichdi][j][k]='\0';
- }
- for(k=0;k<64;k++){
- dialoguename[whichdi][j][k]='\0';
- }
- }
- ifstream ipstream(ConvertFileName(mapname));
- ipstream.ignore(256,':');
- ipstream >> numdialogueboxes[whichdi];
- for(i=0;i<numdialogueboxes[whichdi];i++){
- ipstream.ignore(256,':');
- ipstream.ignore(256,':');
- ipstream.ignore(256,' ');
- ipstream >> 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];
- }
+ int texsize;
+ texsize=512*512*3/texdetail/texdetail;
+ //if(!player[i].loaded)player[i].skeleton.skinText = new GLubyte[texsize];
+ //player[i].skeleton.skinText.resize(texsize);
- ipstream.close();
+ LoadTextureSave(creatureskin[player[i].creature][player[i].whichskin],&player[i].skeleton.drawmodel.textureptr,1,&player[i].skeleton.skinText[0],&player[i].skeleton.skinsize);
- donesomething=1;
- }
+ if(player[i].numclothes)
+ {
+ for(j=0;j<player[i].numclothes;j++)
+ {
+ tintr=player[i].clothestintr[j];
+ tintg=player[i].clothestintg[j];
+ tintb=player[i].clothestintb[j];
+ AddClothes((char *)player[i].clothes[j],0,1,&player[i].skeleton.skinText[0],&player[i].skeleton.skinsize);
+ }
+ player[i].DoMipmaps(5,0,0,player[i].skeleton.skinsize,player[i].skeleton.skinsize);
+ }
- if(Compare(consoletext[0],"fixtype ",0,7)){
- int startpoint;
- int alldone;
- int whichdi;
-
- alldone=0;
- startpoint=8;
- j=startpoint;
- while(consoletext[0][j]!='\0'&&consoletext[0][j]!=' '&&!alldone&&j<255){
- mapname[j-startpoint]=consoletext[0][j];
- j++;
- if(consoletext[0][j]=='\0')alldone=1;
- }
- mapname[j-startpoint]='\0';
- dialoguetype[0]=atoi(mapname);
+ player[i].currentanimation=bounceidleanim;
+ player[i].targetanimation=bounceidleanim;
+ player[i].currentframe=0;
+ player[i].targetframe=1;
+ player[i].target=0;
+ player[i].speed=1+(float)(Random()%100)/1000;
+ if(difficulty==0)player[i].speed-=.2;
+ if(difficulty==1)player[i].speed-=.1;
- startpoint=j+1;
+ player[i].velocity=0;
+ player[i].oldcoords=player[i].coords;
+ player[i].realoldcoords=player[i].coords;
- donesomething=1;
- }
+ player[i].id=i;
+ player[i].skeleton.id=i;
+ player[i].updatedelay=0;
+ player[i].normalsupdatedelay=0;
+ player[i].aitype=passivetype;
+ player[i].aitarget=0;
+ player[i].madskills=0;
- if(Compare(consoletext[0],"fixrotation ",0,11)){
- participantrotation[whichdialogue][participantfocus[whichdialogue][indialogue]]=player[participantfocus[whichdialogue][indialogue]].rotation;
+ if(i==0)
+ {
+ player[i].proportionhead=1.2;
+ player[i].proportionbody=1.05;
+ player[i].proportionarms=1.00;
+ player[i].proportionlegs=1.1;
+ player[i].proportionlegs.y=1.05;
+ }
+ player[i].headless=0;
+ player[i].currentoffset=0;
+ player[i].targetoffset=0;
+ /*player[i].armorhead=1;
+ player[i].armorhigh=1;
+ player[i].armorlow=1;
+ player[i].protectionhead=1;
+ player[i].protectionhigh=1;
+ player[i].protectionlow=1;
+ player[i].metalhead=1;
+ player[i].metalhigh=1;
+ player[i].metallow=1;
+ player[i].power=1;
+ player[i].speedmult=1;*/
- donesomething=1;
- }
+ player[i].damagetolerance=200;
- if(Compare(consoletext[0],"ddialogue ",0,9)){
- numdialogues--;
- if(numdialogues<0)numdialogues=0;
+ if(player[i].creature==wolftype)
+ {
+ /*player[i].proportionhead=1.1;
+ player[i].proportionbody=1.1;
+ player[i].proportionarms=1.1;
+ player[i].proportionlegs=1.1;
+ player[i].proportionlegs.y=1.1;*/
+ if(i==0||player[i].scale<0)player[i].scale=.23;
- donesomething=1;
- }
+ player[i].damagetolerance=300;
+ }
- if(Compare(consoletext[0],"immobile ",0,8)){
- player[0].immobile=1;
- donesomething=1;
- }
+ if(visibleloading){loadscreencolor=4; LoadingScreen();}
+ if(cellophane)
+ {
+ player[i].proportionhead.z=0;
+ player[i].proportionbody.z=0;
+ player[i].proportionarms.z=0;
+ player[i].proportionlegs.z=0;
+ }
- if(Compare(consoletext[0],"mobile ",0,6)){
- player[0].immobile=0;
- donesomething=1;
- }
+ player[i].tempanimation.Load((char *)"Tempanim",0,0);
- if(Compare(consoletext[0],"play ",0,4)){
- int startpoint;
- int alldone;
-
- alldone=0;
- startpoint=5;
- j=startpoint;
- while(consoletext[0][j]!='\0'&&consoletext[0][j]!=' '&&!alldone&&j<255){
- mapname[j-startpoint]=consoletext[0][j];
- j++;
- if(consoletext[0][j]=='\0')alldone=1;
- }
- mapname[j-startpoint]='\0';
- startpoint=j+1;
-
- whichdialogue=atoi(mapname);
-
- if(numdialogues>whichdialogue){
- for(i=0;i<numdialogueboxes[whichdialogue];i++){
- player[participantfocus[whichdialogue][i]].coords=participantlocation[whichdialogue][participantfocus[whichdialogue][i]];
- player[participantfocus[whichdialogue][i]].rotation=participantrotation[whichdialogue][participantfocus[whichdialogue][i]];
- player[participantfocus[whichdialogue][i]].targetrotation=participantrotation[whichdialogue][participantfocus[whichdialogue][i]];
- player[participantfocus[whichdialogue][i]].velocity=0;
- player[participantfocus[whichdialogue][i]].targetanimation=player[participantfocus[whichdialogue][i]].getIdle();
- player[participantfocus[whichdialogue][i]].targetframe=0;
- }
+ player[i].headmorphness=0;
+ player[i].targetheadmorphness=1;
+ player[i].headmorphstart=0;
+ player[i].headmorphend=0;
- directing=0;
- indialogue=0;
+ player[i].pausetime=0;
- donesomething=1;
+ player[i].dead=0;
+ player[i].jumppower=5;
+ player[i].damage=0;
+ player[i].permanentdamage=0;
+ player[i].superpermanentdamage=0;
- //if(dialogueboxsound[whichdialogue][indialogue]!=0){
- float gLoc[3];
- float vel[3];
- XYZ temppos;
- temppos=player[participantfocus[whichdialogue][indialogue]].coords;
- temppos=temppos-viewer;
- Normalise(&temppos);
- temppos+=viewer;
+ player[i].forwardkeydown=0;
+ player[i].leftkeydown=0;
+ player[i].backkeydown=0;
+ player[i].rightkeydown=0;
+ player[i].jumpkeydown=0;
+ player[i].crouchkeydown=0;
+ player[i].throwkeydown=0;
- gLoc[0]=temppos.x;
- gLoc[1]=temppos.y;
- gLoc[2]=temppos.z;
- vel[0]=0;
- vel[1]=0;
- vel[2]=0;
- int whichsoundplay;
- whichsoundplay=rabbitchitter;
- if(dialogueboxsound[whichdialogue][indialogue]==2)whichsoundplay=rabbitchitter2;
- if(dialogueboxsound[whichdialogue][indialogue]==3)whichsoundplay=rabbitpainsound;
- if(dialogueboxsound[whichdialogue][indialogue]==4)whichsoundplay=rabbitpain1sound;
- if(dialogueboxsound[whichdialogue][indialogue]==5)whichsoundplay=rabbitattacksound;
- if(dialogueboxsound[whichdialogue][indialogue]==6)whichsoundplay=rabbitattack2sound;
- if(dialogueboxsound[whichdialogue][indialogue]==7)whichsoundplay=rabbitattack3sound;
- if(dialogueboxsound[whichdialogue][indialogue]==8)whichsoundplay=rabbitattack4sound;
- if(dialogueboxsound[whichdialogue][indialogue]==9)whichsoundplay=growlsound;
- if(dialogueboxsound[whichdialogue][indialogue]==10)whichsoundplay=growl2sound;
- if(dialogueboxsound[whichdialogue][indialogue]==11)whichsoundplay=snarlsound;
- if(dialogueboxsound[whichdialogue][indialogue]==12)whichsoundplay=snarl2sound;
- if(dialogueboxsound[whichdialogue][indialogue]==13)whichsoundplay=barksound;
- if(dialogueboxsound[whichdialogue][indialogue]==14)whichsoundplay=bark2sound;
- if(dialogueboxsound[whichdialogue][indialogue]==15)whichsoundplay=bark3sound;
- if(dialogueboxsound[whichdialogue][indialogue]==16)whichsoundplay=barkgrowlsound;
- if(dialogueboxsound[whichdialogue][indialogue]==-1)whichsoundplay=fireendsound;
- if(dialogueboxsound[whichdialogue][indialogue]==-2)whichsoundplay=firestartsound;
- if(dialogueboxsound[whichdialogue][indialogue]==-3)whichsoundplay=consolesuccesssound;
- if(dialogueboxsound[whichdialogue][indialogue]==-4)whichsoundplay=consolefailsound;
- PlaySoundEx( whichsoundplay, samp[whichsoundplay], NULL, true);
- OPENAL_3D_SetAttributes(channels[whichsoundplay], gLoc, vel);
- OPENAL_SetVolume(channels[whichsoundplay], 256);
- OPENAL_SetPaused(channels[whichsoundplay], false);
- //}
- }
- }
+ player[i].collided=-10;
+ player[i].loaded=1;
+ player[i].bloodloss=0;
+ player[i].weaponactive=-1;
+ player[i].weaponstuck=-1;
+ player[i].bleeding=0;
+ player[i].deathbleeding=0;
+ player[i].stunned=0;
+ player[i].hasvictim=0;
+ player[i].wentforweapon=0;
+ }
+ player[0].aitype=playercontrolled;
+ player[0].weaponactive=-1;
+ if(difficulty==1)
+ {
+ //player[0].speedmult=1/.9;
+ player[0].power=1/.9;
+ }
+ if(difficulty==0)
+ {
+ //player[0].speedmult=1/.8;
+ player[0].power=1/.8;
+ }
- if(Compare(consoletext[0],"dhs ",0,3)){
- numhotspots--;
- if(numhotspots<0)numhotspots=0;
- donesomething=1;
- }
+ //player[0].weaponstuck=1;
+ if(difficulty==1)player[0].damagetolerance=250;
+ if(difficulty==0)player[0].damagetolerance=300;
+ if(difficulty==0)player[0].armorhead*=1.5;
+ if(difficulty==0)player[0].armorhigh*=1.5;
+ if(difficulty==0)player[0].armorlow*=1.5;
+ cameraloc=player[0].coords;
+ cameraloc.y+=5;
+ rotation=player[0].rotation;
- if(Compare(consoletext[0],"proportion ",0,10)||Compare(consoletext[0],"Proportion ",0,4)){
- int startpoint;
- int alldone;
+ hawkcoords=player[0].coords;
+ hawkcoords.y+=30;
- 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';
+ if(visibleloading){loadscreencolor=4; LoadingScreen();}
+ //weapons.numweapons=numplayers;
+ for(i=0;i<weapons.numweapons;i++)
+ {
+ weapons.bloody[i]=0;
+ weapons.blooddrip[i]=0;
+ weapons.blooddripdelay[i]=0;
+ weapons.onfire[i]=0;
+ weapons.flamedelay[i]=0;
+ weapons.damage[i]=0;
+ //weapons.type[i]=sword;
+ if(weapons.type[i]==sword){
+ weapons.mass[i]=1.5;
+ weapons.tipmass[i]=1;
+ weapons.length[i]=.8;
+ }
+ if(weapons.type[i]==staff){
+ weapons.mass[i]=2;
+ weapons.tipmass[i]=1;
+ weapons.length[i]=1.5;
+ }
+ if(weapons.type[i]==knife){
+ weapons.mass[i]=1;
+ weapons.tipmass[i]=1.2;
+ weapons.length[i]=.25;
+ }
+ weapons.position[i]=-1000;
+ weapons.tippoint[i]=-1000;
+ }
+
+ LOG("Starting background music...");
- headprop=atof(mapname);
+ OPENAL_StopSound(OPENAL_ALL);
+ if(environment==snowyenvironment)
+ {
+ if(ambientsound)
+ {
+ PlayStreamEx(stream_wind, strm[stream_wind], NULL, true);
+ OPENAL_SetPaused(channels[stream_wind], false);
+ OPENAL_SetVolume(channels[stream_wind], 256);
+ }
+ }
+ else if(environment==desertenvironment)
+ {
+ if(ambientsound)
+ {
+ //PlaySoundEx(desertambient,
+ // samp[desertambient], NULL, true);
+ PlayStreamEx(stream_desertambient,
+ strm[stream_desertambient], NULL, true);
+ OPENAL_SetPaused(channels[stream_desertambient], false);
+ OPENAL_SetVolume(channels[stream_desertambient], 256);
+ }
+ }
+ else if(environment==grassyenvironment)
+ {
+ if(ambientsound)
+ {
+ //PlaySoundEx(wind, samp[wind], NULL, true);
+ PlayStreamEx(stream_wind, strm[stream_wind], NULL, true);
+ OPENAL_SetPaused(channels[stream_wind], false);
+ OPENAL_SetVolume(channels[stream_wind], 100);
+ }
+ }
+ oldmusicvolume[0]=0;
+ oldmusicvolume[1]=0;
+ oldmusicvolume[2]=0;
+ oldmusicvolume[3]=0;
- j++;
- startpoint=j;
- while(consoletext[0][j]!='\0'&&consoletext[0][j]!=' '&&!alldone&&j<255){
- mapname[j-startpoint]=consoletext[0][j];
- j++;
- if(consoletext[0][j]=='\0')alldone=1;
- }
- mapname[j-startpoint]='\0';
+ if(!firstload)
+ {
+ firstload=1;
+ }
+ }
+ leveltime=0;
+ loadingstuff=0;
+ visibleloading=0;
+}
- bodyprop=atof(mapname);
+void Game::Tick()
+{
+ static int i,k,j,l,m;
+ static XYZ facing,flatfacing,absflatfacing;
+ static XYZ rotatetarget;
+ static bool oldkey;
+ static float oldtargetrotation;
+ static int target, numgood;
+ static XYZ tempcoords1,tempcoords2;
+ static XYZ test;
+ static XYZ test2;
+ static XYZ lowpoint,lowpointtarget,lowpoint2,lowpointtarget2,lowpoint3,lowpointtarget3,lowpoint4,lowpointtarget4,lowpoint5,lowpointtarget5,lowpoint6,lowpointtarget6,lowpoint7,lowpointtarget7,colpoint,colpoint2;
+ static int whichhit;
+ static bool oldjumpkeydown;
- 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';
+ int templength;
- armprop=atof(mapname);
+ float headprop,bodyprop,armprop,legprop;
- j++;
- startpoint=j;
- while(consoletext[0][j]!='\0'&&consoletext[0][j]!=' '&&!alldone&&j<255){
- mapname[j-startpoint]=consoletext[0][j];
- j++;
- if(consoletext[0][j]=='\0')alldone=1;
- }
- mapname[j-startpoint]='\0';
+ for(i=0;i<15;i++){
+ displaytime[i]+=multiplier;
+ }
- legprop=atof(mapname);
+ keyboardfrozen=0;
- if(player[0].creature==wolftype){
- player[0].proportionhead=1.1*headprop;
- player[0].proportionbody=1.1*bodyprop;
- player[0].proportionarms=1.1*armprop;
- player[0].proportionlegs=1.1*legprop;
- }
+ if (Input::isKeyDown(SDLK_F6) && !freezetogglekeydown) {
+ if (Input::isKeyDown(SDLK_LSHIFT)) {
+ stereoreverse=true;
+ } else {
+ stereoreverse=false;
+ }
- if(player[0].creature==rabbittype){
- player[0].proportionhead=1.2*headprop;
- player[0].proportionbody=1.05*bodyprop;
- player[0].proportionarms=1.00*armprop;
- player[0].proportionlegs=1.1*legprop;
- player[0].proportionlegs.y=1.05*legprop;
- }
+ if (stereoreverse) {
+ printf("Stereo reversed\n");
+ } else {
+ printf("Stereo unreversed\n");
+ }
+ freezetogglekeydown=1;
+ }
- donesomething=1;
- }
+ if (Input::isKeyDown(SDLK_F7)) {
+ if (Input::isKeyDown(SDLK_LSHIFT)) {
+ stereoseparation -= 0.001;
+ } else {
+ stereoseparation -= 0.010;
+ }
- if(Compare(consoletext[0],"allimmobile ",0,11)||Compare(consoletext[0],"Allimmobile ",0,11)){
- for(i=0;i<numplayers;i++){
- if(i>0)player[i].immobile=1;
- }
- donesomething=1;
- }
+ printf("Stereo decreased increased to %f\n", stereoseparation);
+ }
+ if (Input::isKeyDown(SDLK_F8)) {
+ if (Input::isKeyDown(SDLK_LSHIFT)) {
+ stereoseparation += 0.001;
+ } else {
+ stereoseparation += 0.010;
+ }
- 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;
+ printf("Stereo separation increased to %f\n", stereoseparation);
+ }
- 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;
- }
+ if(!console){
+ if(mainmenu&&endgame==1)mainmenu=10;
+ if( (Input::isKeyDown(SDLK_ESCAPE)||(mainmenu==0&&((Input::isKeyDown(jumpkey)||Input::isKeyDown(SDLK_SPACE)||(campaign)))&&!oldjumpkeydown&&campaign&&winfreeze))
+ && !mainmenutogglekeydown
+ && (!mainmenu||gameon||mainmenu==3||mainmenu==4||mainmenu==5||mainmenu==6||(mainmenu==7&&!entername)||mainmenu==9||mainmenu==10)
+ ) { // go back
+ selected=-1;
+ if(mainmenu==1||mainmenu==2||mainmenu==0){
+ if(mainmenu==0&&!winfreeze)mainmenu=2;
+ else if(mainmenu==0&&winfreeze&&(campaignchoosenext[campaignchoicewhich[whichchoice]])==1)mainmenu=100;
+ else if(mainmenu==0&&winfreeze){
+
+ }
+ else if(mainmenu==1||mainmenu==2)mainmenu=0;
+ if(mainmenu&&musictoggle){
+ if(mainmenu==1||mainmenu==2||mainmenu==100){
+ OPENAL_SetFrequency(OPENAL_ALL, 0.001);
+ PlayStreamEx( stream_music3, strm[stream_music3], NULL, true);
+ OPENAL_SetPaused(channels[stream_music3], false);
+ OPENAL_SetVolume(channels[stream_music3], 256);
+ OPENAL_SetPaused(channels[music1], true);
+ }
+ }
+ if(!mainmenu){
+ OPENAL_SetPaused(channels[stream_music3], true);
+ OPENAL_SetPaused(channels[music1], false);
+ }
+ }
+ if(mainmenu==3){
+ fireSound();
- player[0].numclothes=0;
- if(player[0].whichskin==0){
- LoadTextureSave(":Data:Textures:Fur3.jpg",&player[0].skeleton.drawmodel.textureptr,1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize);
- }
- else if(player[0].whichskin==1){
- LoadTextureSave(":Data:Textures:Fur.jpg",&player[0].skeleton.drawmodel.textureptr,1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize);
- }
- else if(player[0].whichskin==2){
- LoadTextureSave(":Data:Textures:Fur2.jpg",&player[0].skeleton.drawmodel.textureptr,1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize);
- }
- else if(player[0].whichskin==3){
- LoadTextureSave(":Data:Textures:Lynx.jpg",&player[0].skeleton.drawmodel.textureptr,1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize);
- }
- else if(player[0].whichskin==4){
- LoadTextureSave(":Data:Textures:Otter.jpg",&player[0].skeleton.drawmodel.textureptr,1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize);
- }
- else if(player[0].whichskin==5){
- LoadTextureSave(":Data:Textures:Opal.jpg",&player[0].skeleton.drawmodel.textureptr,1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize);
- }
- else if(player[0].whichskin==6){
- LoadTextureSave(":Data:Textures:Sable.jpg",&player[0].skeleton.drawmodel.textureptr,1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize);
- }
- else if(player[0].whichskin==7){
- LoadTextureSave(":Data:Textures:Chocolate.jpg",&player[0].skeleton.drawmodel.textureptr,1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize);
- }
- else if(player[0].whichskin==8){
- LoadTextureSave(":Data:Textures:BW2.jpg",&player[0].skeleton.drawmodel.textureptr,1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize);
- }
- else if(player[0].whichskin==9){
- LoadTextureSave(":Data:Textures:WB2.jpg",&player[0].skeleton.drawmodel.textureptr,1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize);
- }
+ flash();
+
+ if(newdetail>2)newdetail=detail;
+ if(newdetail<0)newdetail=detail;
+ if(newscreenwidth<0)newscreenwidth=screenwidth;
+ if(newscreenheight<0)newscreenheight=screenheight;
+
+ SaveSettings(*this);
+ }
+ if(mainmenu==4||mainmenu==5||mainmenu==6||mainmenu==7||mainmenu==9||mainmenu==10||mainmenu==100){
+ fireSound();
+
+ flash();
+ }
+ if(mainmenu==3&&gameon)mainmenu=2;
+ if(mainmenu==3&&!gameon)mainmenu=1;
+ if(mainmenu==5&&gameon)mainmenu=2;
+ if(mainmenu==5&&!gameon)mainmenu=1;
+ if(mainmenu==4)mainmenu=3;
+ if(mainmenu==6)mainmenu=5;
+ if(mainmenu==7)mainmenu=1;
+ if(mainmenu==9)mainmenu=5;
+ if(mainmenu==10)mainmenu=5;
+ if(mainmenu==100){
+ mainmenu=5;
+ gameon=0;
+ winfreeze=0;
+ }
+ mainmenutogglekeydown=1;
+ }
+ if(!Input::isKeyDown(SDLK_ESCAPE)){
+ mainmenutogglekeydown=0;
+ }
+ }
- editoractive=typeactive;
- player[0].immobile=0;
+ static bool minimaptogglekeydown;
+ if(Input::isKeyDown(SDLK_TAB)&&!minimaptogglekeydown&&tutoriallevel){
+ if(tutorialstage!=51)
+ tutorialstagetime=tutorialmaxtime;
+ PlaySoundEx( consolefailsound, samp[consolefailsound], NULL, true);
+ OPENAL_SetVolume(channels[consolefailsound], 128);
+ OPENAL_SetPaused(channels[consolefailsound], false);
+ minimaptogglekeydown=1;
+ }
+ if(!Input::isKeyDown(SDLK_TAB)){
+ minimaptogglekeydown=0;
+ }
+ if(mainmenu){
+ //menu buttons
+ if(mainmenu==1||mainmenu==2){
+ if(Input::Button()&&!oldbutton&&selected==1){
+ if(!gameon){
+ fireSound(firestartsound);
+ flash();
- donesomething=1;
- }
+ //new game
+ if(accountactive) {
+ mainmenu=5;
+ } else {
+ mainmenu=7;
+ }
+ selected=-1;
+ }
+ else
+ {
+ //resume
+ mainmenu=0;
+ OPENAL_SetPaused(channels[stream_music3], true);
+ OPENAL_SetPaused(channels[music1], false);
+ }
+ }
- if(Compare(consoletext[0],"tint ",0,4)||Compare(consoletext[0],"Tint ",0,4)){
- int startpoint;
- int alldone;
- alldone=0;
- startpoint=5;
- j=startpoint;
- while(consoletext[0][j]!='\0'&&consoletext[0][j]!=' '&&!alldone&&j<255){
- mapname[j-startpoint]=consoletext[0][j];
- j++;
- if(consoletext[0][j]=='\0')alldone=1;
- }
- mapname[j-startpoint]='\0';
+ if(Input::Button()&&!oldbutton&&selected==2){
+ fireSound();
- tintr=atof(mapname);
+ flash();
- j++;
- startpoint=j;
- while(consoletext[0][j]!='\0'&&consoletext[0][j]!=' '&&!alldone&&j<255){
- mapname[j-startpoint]=consoletext[0][j];
- j++;
- if(consoletext[0][j]=='\0')alldone=1;
- }
- mapname[j-startpoint]='\0';
+ //options
- tintg=atof(mapname);
+ mainmenu=3;
- j++;
- startpoint=j;
- while(consoletext[0][j]!='\0'&&consoletext[0][j]!=' '&&!alldone&&j<255){
- mapname[j-startpoint]=consoletext[0][j];
- j++;
- if(consoletext[0][j]=='\0')alldone=1;
- }
- mapname[j-startpoint]='\0';
+ if(newdetail>2)newdetail=detail;
+ if(newdetail<0)newdetail=detail;
+ if(newscreenwidth>3000)newscreenwidth=screenwidth;
+ if(newscreenwidth<0)newscreenwidth=screenwidth;
+ if(newscreenheight>3000)newscreenheight=screenheight;
+ if(newscreenheight<0)newscreenheight=screenheight;
+ }
+
+ if(Input::Button()&&!oldbutton&&selected==3){
+ fireSound();
+
+ flash();
- tintb=atof(mapname);
+ if(!gameon){
+ //quit
+ tryquit=1;
+ OPENAL_SetPaused(channels[stream_music3], true);
+ }
+ else{
+ //end game
+ gameon=0;
+ mainmenu=1;
+ }
+ }
+ }
+ if(mainmenu==3){
+ if(Input::Button()&&!oldbutton&&selected!=-1){
+ fireSound();
+ }
+ if(Input::Button()&&!oldbutton&&selected==0){
+
+ extern SDL_Rect **resolutions;
+ bool isCustomResolution = true;
+ bool found = false;
+ for (int i = 0; (!found) && (resolutions[i]); i++)
+ {
+ if ((resolutions[i]->w == screenwidth) && (resolutions[i]->h == screenwidth))
+ isCustomResolution = false;
- donesomething=1;
+ if ((resolutions[i]->w == newscreenwidth) && (resolutions[i]->h == newscreenheight))
+ {
+ i++;
+ if (resolutions[i] != NULL)
+ {
+ newscreenwidth = (int) resolutions[i]->w;
+ newscreenheight = (int) resolutions[i]->h;
+ }
+ else if (isCustomResolution)
+ {
+ if ((screenwidth == newscreenwidth) && (screenheight == newscreenheight))
+ {
+ newscreenwidth = (int) resolutions[0]->w;
+ newscreenheight = (int) resolutions[0]->h;
}
-
- 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;
+ else
+ {
+ newscreenwidth = screenwidth;
+ newscreenheight = screenheight;
}
+ }
+ else
+ {
+ newscreenwidth = (int) resolutions[0]->w;
+ newscreenheight = (int) resolutions[0]->h;
+ }
+ found = true;
+ }
+ }
- 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';
+ if (!found)
+ {
+ newscreenwidth = (int) resolutions[0]->w;
+ newscreenheight = (int) resolutions[0]->h;
+ }
- skyboxlightg=atof(mapname);
+
+ }
+ if(Input::Button()&&!oldbutton&&selected==1){
+ newdetail++;
+ if(newdetail>2)newdetail=0;
+ }
+ if(Input::Button()&&!oldbutton&&selected==2){
+ bloodtoggle++;
+ if(bloodtoggle>2)bloodtoggle=0;
+ }
+ if(Input::Button()&&!oldbutton&&selected==3){
+ difficulty++;
+ if(difficulty>2)difficulty=0;
+ }
+ if(Input::Button()&&!oldbutton&&selected==4){
+ ismotionblur=1-ismotionblur;
+ }
+ if(Input::Button()&&!oldbutton&&selected==5){
+ decals=1-decals;
+ }
+ if(Input::Button()&&!oldbutton&&selected==6){
+ musictoggle=1-musictoggle;
- j++;
- startpoint=j;
- while(consoletext[0][j]!='\0'&&consoletext[0][j]!=' '&&!alldone&&j<255){
- mapname[j-startpoint]=consoletext[0][j];
- j++;
- if(consoletext[0][j]=='\0')alldone=1;
- }
- mapname[j-startpoint]='\0';
+ if(!musictoggle){
+ OPENAL_SetPaused(channels[music1], true);
+ OPENAL_SetPaused(channels[stream_music2], true);
+ OPENAL_SetPaused(channels[stream_music3], true);
- skyboxlightb=atof(mapname);
+ for(i=0;i<4;i++){
+ oldmusicvolume[i]=0;
+ musicvolume[i]=0;
+ }
+ }
- SetUpLighting();
+ if(musictoggle){
+ PlayStreamEx( stream_music3, strm[stream_music3], NULL, true);
+ OPENAL_SetPaused(channels[stream_music3], false);
+ OPENAL_SetVolume(channels[stream_music3], 256);
+ }
+ }
+ if(Input::Button()&&!oldbutton&&selected==9){
+ invertmouse=1-invertmouse;
+ }
+ if(Input::Button()&&!oldbutton&&selected==10){
+ usermousesensitivity+=.2;
+ if(usermousesensitivity>2)usermousesensitivity=.2;
+ }
+ if(Input::Button()&&!oldbutton&&selected==11){
+ volume+=.1f;
+ if(volume>1.0001f)volume=0;
+ OPENAL_SetSFXMasterVolume((int)(volume*255));
+ }
+ if(Input::Button()&&!oldbutton&&selected==7){
+ /*fireSound();
+ */
+ flash();
- //if(skyboxtexture){
- terrain.DoShadows();
- objects.DoShadows();
- /*}
- else terrain.DoLighting();
- */
- donesomething=1;
- }
+ //options
- if(Compare(consoletext[0],"skybox ",0,6)||Compare(consoletext[0],"Skybox ",0,6)){
- skyboxtexture=1-skyboxtexture;
-
- SetUpLighting();
- //if(skyboxtexture){
- terrain.DoShadows();
- objects.DoShadows();
- /*}
- else terrain.DoLighting();
- */
- donesomething=1;
- }
+ mainmenu=4;
+ selected=-1;
+ keyselect=-1;
+ }
+ if(Input::Button() && !oldbutton && selected == 12) {
+ flash();
+
+ newstereomode = stereomode;
+ mainmenu=18;
+ keyselect=-1;
+ }
+ if(Input::Button() && !oldbutton && selected == 13) {
+ showdamagebar=!showdamagebar;
+ }
+ if(Input::Button()&&!oldbutton&&selected==8){
+ fireSound();
- if(Compare(consoletext[0],"protection ",0,10)||Compare(consoletext[0],"Protection ",0,10)){
- int startpoint;
- int alldone;
- alldone=0;
- startpoint=11;
- j=startpoint;
- while(consoletext[0][j]!='\0'&&consoletext[0][j]!=' '&&!alldone&&j<255){
- mapname[j-startpoint]=consoletext[0][j];
- j++;
- if(consoletext[0][j]=='\0')alldone=1;
- }
- mapname[j-startpoint]='\0';
+ flash();
- player[0].protectionhead=atof(mapname);
+ if(newdetail>2)newdetail=detail;
+ if(newdetail<0)newdetail=detail;
+ if(newscreenwidth<0)newscreenwidth=screenwidth;
+ if(newscreenheight<0)newscreenheight=screenheight;
- j++;
- startpoint=j;
- while(consoletext[0][j]!='\0'&&consoletext[0][j]!=' '&&!alldone&&j<255){
- mapname[j-startpoint]=consoletext[0][j];
- j++;
- if(consoletext[0][j]=='\0')alldone=1;
- }
- mapname[j-startpoint]='\0';
- player[0].protectionhigh=atof(mapname);
+ SaveSettings(*this);
+ if(mainmenu==3&&gameon)mainmenu=2;
+ if(mainmenu==3&&!gameon)mainmenu=1;
+ }
+ }
+ if(mainmenu==4){
+ if(Input::Button()&&!oldbutton&&selected!=-1&&!waiting){
+ fireSound();
+ if(selected<9&&keyselect==-1)
+ keyselect=selected;
+ if(keyselect!=-1)
+ setKeySelected();
+ if(selected==9){
+ flash();
+
+ mainmenu=3;
+
+ if(newdetail>2)newdetail=detail;
+ if(newdetail<0)newdetail=detail;
+ if(newscreenwidth>3000)newscreenwidth=screenwidth;
+ if(newscreenwidth<0)newscreenwidth=screenwidth;
+ if(newscreenheight>3000)newscreenheight=screenheight;
+ if(newscreenheight<0)newscreenheight=screenheight;
+ }
+ }
+ }
- j++;
- startpoint=j;
- while(consoletext[0][j]!='\0'&&consoletext[0][j]!=' '&&!alldone&&j<255){
- mapname[j-startpoint]=consoletext[0][j];
- j++;
- if(consoletext[0][j]=='\0')alldone=1;
- }
- mapname[j-startpoint]='\0';
+ if(mainmenu==5){
- player[0].protectionlow=atof(mapname);
+ if(endgame==2){
+ accountactive->endGame();
+ endgame=0;
+ }
- donesomething=1;
- }
+ if(Input::Button()&&!oldbutton&&selected==1){
+ fireSound();
- if(Compare(consoletext[0],"armor ",0,5)||Compare(consoletext[0],"Armor ",0,5)){
- int startpoint;
- int alldone;
- alldone=0;
- startpoint=6;
- j=startpoint;
- while(consoletext[0][j]!='\0'&&consoletext[0][j]!=' '&&!alldone&&j<255){
- mapname[j-startpoint]=consoletext[0][j];
- j++;
- if(consoletext[0][j]=='\0')alldone=1;
- }
- mapname[j-startpoint]='\0';
+ flash();
- player[0].armorhead=atof(mapname);
+ startbonustotal=0;
- j++;
- startpoint=j;
- while(consoletext[0][j]!='\0'&&consoletext[0][j]!=' '&&!alldone&&j<255){
- mapname[j-startpoint]=consoletext[0][j];
- j++;
- if(consoletext[0][j]=='\0')alldone=1;
- }
- mapname[j-startpoint]='\0';
+ loading=2;
+ loadtime=0;
+ targetlevel=-1;
+ if(firstload)TickOnceAfter();
+ if(!firstload)LoadStuff();
+ else {
+ Loadlevel(-1);
+ }
- player[0].armorhigh=atof(mapname);
+ mainmenu=0;
+ gameon=1;
+ OPENAL_SetPaused(channels[stream_music3], true);
+ }
+ if(Input::Button()&&!oldbutton&&(selected-7>=accountactive->getCampaignChoicesMade())){
+ fireSound();
- j++;
- startpoint=j;
- while(consoletext[0][j]!='\0'&&consoletext[0][j]!=' '&&!alldone&&j<255){
- mapname[j-startpoint]=consoletext[0][j];
- j++;
- if(consoletext[0][j]=='\0')alldone=1;
- }
- mapname[j-startpoint]='\0';
+ flash();
- player[0].armorlow=atof(mapname);
+ startbonustotal=0;
- donesomething=1;
- }
+ loading=2;
+ loadtime=0;
+ targetlevel=7;
+ if(firstload) TickOnceAfter();
+ else LoadStuff();
+ for(i=0;i<255;i++){
+ mapname[i]='\0';
+ }
+ mapname[0]=':';
+ mapname[1]='D';
+ mapname[2]='a';
+ mapname[3]='t';
+ mapname[4]='a';
+ mapname[5]=':';
+ mapname[6]='M';
+ mapname[7]='a';
+ mapname[8]='p';
+ mapname[9]='s';
+ mapname[10]=':';
+ strcat(mapname,campaignmapname[campaignchoicewhich[selected-7-accountactive->getCampaignChoicesMade()]]);
+ whichchoice=selected-7-accountactive->getCampaignChoicesMade();
+ visibleloading=1;
+ stillloading=1;
+ Loadlevel(mapname);
+ //Loadlevel(campaignmapname[levelorder[selected-7]]);
+ campaign=1;
+ mainmenu=0;
+ gameon=1;
+ OPENAL_SetPaused(channels[stream_music3], true);
+ }
+ if(Input::Button()&&!oldbutton&&selected==4){
+ fireSound();
- if(Compare(consoletext[0],"protectionreset ",0,15)||Compare(consoletext[0],"Protectionreset ",0,15)){
- for(i=0;i<numplayers;i++){
- player[i].protectionhead=1.0;
- player[i].protectionhigh=1.0;
- player[i].protectionlow=1.0;
- player[i].armorhead=1.0;
- player[i].armorhigh=1.0;
- player[i].armorlow=1.0;
- }
+ flash();
- donesomething=1;
- }
+ if(mainmenu==5&&gameon)mainmenu=2;
+ if(mainmenu==5&&!gameon)mainmenu=1;
+ }
+ if(Input::Button()&&!oldbutton&&selected==5){
+ fireSound();
- if(Compare(consoletext[0],"protectionnear ",0,14)||Compare(consoletext[0],"Protectionnear ",0,14)){
- int closest=-1;
- float closestdist=-1;
- float distance;
- if(numplayers>1)
- for(i=1;i<numplayers;i++){
- distance=findDistancefast(&player[i].coords,&player[0].coords);
- if(closestdist==-1||distance<closestdist){
- closestdist=distance;
- closest=i;
- }
- }
+ flash();
- int startpoint;
- int alldone;
- alldone=0;
- startpoint=15;
- j=startpoint;
- while(consoletext[0][j]!='\0'&&consoletext[0][j]!=' '&&!alldone&&j<255){
- mapname[j-startpoint]=consoletext[0][j];
- j++;
- if(consoletext[0][j]=='\0')alldone=1;
- }
- mapname[j-startpoint]='\0';
+ mainmenu=7;
+ }
+ if(Input::Button()&&!oldbutton&&selected==3){
+ fireSound();
- player[closest].protectionhead=atof(mapname);
+ flash();
- j++;
- startpoint=j;
- while(consoletext[0][j]!='\0'&&consoletext[0][j]!=' '&&!alldone&&j<255){
- mapname[j-startpoint]=consoletext[0][j];
- j++;
- if(consoletext[0][j]=='\0')alldone=1;
- }
- mapname[j-startpoint]='\0';
+ mainmenu=6;
+ }
+ if(Input::Button()&&!oldbutton&&selected==2){
+ fireSound();
- player[closest].protectionhigh=atof(mapname);
+ flash();
- j++;
- startpoint=j;
- while(consoletext[0][j]!='\0'&&consoletext[0][j]!=' '&&!alldone&&j<255){
- mapname[j-startpoint]=consoletext[0][j];
- j++;
- if(consoletext[0][j]=='\0')alldone=1;
- }
- mapname[j-startpoint]='\0';
+ mainmenu=9;
+ }
+ }
+ if(mainmenu==9){
+ if(Input::Button()&&!oldbutton&&selected<numchallengelevels&&selected>=0&&selected<=accountactive->getProgress()){
+ fireSound();
- player[closest].protectionlow=atof(mapname);
+ flash();
- donesomething=1;
- }
+ startbonustotal=0;
- if(Compare(consoletext[0],"armornear ",0,9)||Compare(consoletext[0],"Armornear ",0,9)){
- int closest=-1;
- float closestdist=-1;
- float distance;
- if(numplayers>1)
- for(i=1;i<numplayers;i++){
- distance=findDistancefast(&player[i].coords,&player[0].coords);
- if(closestdist==-1||distance<closestdist){
- closestdist=distance;
- closest=i;
- }
- }
- 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';
+ loading=2;
+ loadtime=0;
+ targetlevel=selected;
+ if(firstload)TickOnceAfter();
+ if(!firstload)LoadStuff();
+ else {
+ Loadlevel(selected);
+ }
+ campaign=0;
- player[closest].armorhead=atof(mapname);
+ mainmenu=0;
+ gameon=1;
+ OPENAL_SetPaused(channels[stream_music3], true);
+ }
+ if(Input::Button()&&!oldbutton&&selected==numchallengelevels){
+ fireSound();
- j++;
- startpoint=j;
- while(consoletext[0][j]!='\0'&&consoletext[0][j]!=' '&&!alldone&&j<255){
- mapname[j-startpoint]=consoletext[0][j];
- j++;
- if(consoletext[0][j]=='\0')alldone=1;
- }
- mapname[j-startpoint]='\0';
+ flash();
- player[closest].armorhigh=atof(mapname);
+ mainmenu=5;
+ }
+ }
+ if(mainmenu==10){
+ endgame=2;
+ if(Input::Button()&&!oldbutton&&selected==3){
+ fireSound();
- j++;
- startpoint=j;
- while(consoletext[0][j]!='\0'&&consoletext[0][j]!=' '&&!alldone&&j<255){
- mapname[j-startpoint]=consoletext[0][j];
- j++;
- if(consoletext[0][j]=='\0')alldone=1;
- }
- mapname[j-startpoint]='\0';
+ flash();
- player[closest].armorlow=atof(mapname);
+ mainmenu=5;
+ }
+ }
- donesomething=1;
- }
+ if(mainmenu==6){
+ if(Input::Button()&&!oldbutton) {
+ if(selected>-1){
+ fireSound();
+ if(selected==1) {
+ flash();
+ accountactive = Account::destroy(accountactive);
+ mainmenu=7;
+ } else if(selected==2) {
+ flash();
+ mainmenu=5;
+ }
+ }
+ }
+ }
+ if(mainmenu==7){
+ if(Input::Button()&&!oldbutton) {
+ if(selected!=-1){
+ fireSound();
+ if(selected==0&&Account::getNbAccounts()<8){
+ entername=1;
+ } else if (selected<Account::getNbAccounts()+1) {
+ accountactive=Account::get(selected-1);
+ mainmenu=5;
+ flash();
+ } else if (selected==Account::getNbAccounts()+1) {
+ flash();
+
+ mainmenu=1;
+
+ for(j=0;j<255;j++){
+ displaytext[0][j]=' ';
+ }
+ displaychars[0]=0;
+ displayselected=0;
+ entername=0;
+ }
+ }
+ }
+ }
+ if(mainmenu==8){
+ if(Input::Button()&&!oldbutton&&selected>-1){
+ fireSound();
+ if(selected<=2)
+ accountactive->setDifficulty(selected);
- if(Compare(consoletext[0],"metal ",0,5)||Compare(consoletext[0],"Metal ",0,5)){
- int startpoint;
- int alldone;
- alldone=0;
- startpoint=6;
- j=startpoint;
- while(consoletext[0][j]!='\0'&&consoletext[0][j]!=' '&&!alldone&&j<255){
- mapname[j-startpoint]=consoletext[0][j];
- j++;
- if(consoletext[0][j]=='\0')alldone=1;
- }
- mapname[j-startpoint]='\0';
+ mainmenu=5;
- player[0].metalhead=atof(mapname);
+ flash();
- j++;
- startpoint=j;
- while(consoletext[0][j]!='\0'&&consoletext[0][j]!=' '&&!alldone&&j<255){
- mapname[j-startpoint]=consoletext[0][j];
- j++;
- if(consoletext[0][j]=='\0')alldone=1;
- }
- mapname[j-startpoint]='\0';
+ }
+ }
+ if (mainmenu==18) {
+ if(Input::Button()&&!oldbutton&&selected==0) {
+ newstereomode = (StereoMode)(newstereomode + 1);
+ while(!CanInitStereo(newstereomode)) {
+ printf("Failed to initialize mode %s (%i)\n", StereoModeName(newstereomode), newstereomode);
+ newstereomode = (StereoMode)(newstereomode + 1);
+ if ( newstereomode >= stereoCount ) {
+ newstereomode = stereoNone;
+ }
+ }
+ }
+
+ if(Input::isKeyDown(MOUSEBUTTON1)&&!oldbutton&&selected==1) {
+ stereoseparation+=0.001;
+ }
+ if(Input::isKeyDown(MOUSEBUTTON2)&&!oldbutton&&selected==1) {
+ stereoseparation-=0.001;
+ }
- player[0].metalhigh=atof(mapname);
+ if(Input::Button()&&!oldbutton&&selected==2) {
+ stereoreverse =! stereoreverse;
+ }
+
+ if(Input::Button()&&!oldbutton&&selected==3) {
+ flash();
- j++;
- startpoint=j;
- while(consoletext[0][j]!='\0'&&consoletext[0][j]!=' '&&!alldone&&j<255){
- mapname[j-startpoint]=consoletext[0][j];
- j++;
- if(consoletext[0][j]=='\0')alldone=1;
- }
+ stereomode = newstereomode;
+ InitStereo(stereomode);
+
+ mainmenu=3;
+ }
+ }
- mapname[j-startpoint]='\0';
- player[0].metallow=atof(mapname);
+ if(Input::Button()||Input::isKeyDown(MOUSEBUTTON2))oldbutton=1;
+ else oldbutton=0;
- donesomething=1;
- }
+ if(Input::isKeyDown(SDLK_q)&&Input::isKeyDown(SDLK_LMETA)){
+ tryquit=1;
+ if(mainmenu==3){
+ if(newdetail>2)newdetail=detail;
+ if(newdetail<0)newdetail=detail;
+ if(newscreenwidth<0)newscreenwidth=screenwidth;
+ if(newscreenheight<0)newscreenheight=screenheight;
- if(Compare(consoletext[0],"noclothesnear ",0,13)||Compare(consoletext[0],"Noclothesnear ",0,13)){
- int closest=-1;
- float closestdist=-1;
- float distance;
- if(numplayers>1)
- for(i=1;i<numplayers;i++){
- distance=findDistancefast(&player[i].coords,&player[0].coords);
- if(closestdist==-1||distance<closestdist){
- closestdist=distance;
- closest=i;
- }
- }
- player[closest].numclothes=0;
- if(player[closest].whichskin==0){
- LoadTextureSave(":Data:Textures:Fur3.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
- }
- else if(player[closest].whichskin==1){
- LoadTextureSave(":Data:Textures:Fur.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
- }
- else if(player[closest].whichskin==2){
- LoadTextureSave(":Data:Textures:Fur2.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
- }
- else if(player[closest].whichskin==3){
- LoadTextureSave(":Data:Textures:Lynx.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
- }
- else if(player[closest].whichskin==4){
- LoadTextureSave(":Data:Textures:Otter.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
- }
- else if(player[closest].whichskin==5){
- LoadTextureSave(":Data:Textures:Opal.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
- }
- else if(player[closest].whichskin==6){
- LoadTextureSave(":Data:Textures:Sable.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
- }
- else if(player[closest].whichskin==7){
- LoadTextureSave(":Data:Textures:Chocolate.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
- }
- else if(player[closest].whichskin==8){
- LoadTextureSave(":Data:Textures:BW2.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
- }
- else if(player[closest].whichskin==9){
- LoadTextureSave(":Data:Textures:WB2.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
- }
+ SaveSettings(*this);
+ }
+ }
- donesomething=1;
- }
+ if(mainmenu==1||mainmenu==2){
+ if(loaddistrib>4)transition+=multiplier/8;
+ if(transition>1){
+ transition=0;
+ anim++;
+ if(anim>4)anim=0;
+ loaddistrib=0;
+ }
+ }
+ OPENAL_SetFrequency(channels[stream_music3], 22050);
- if(Compare(consoletext[0],"noclothes ",0,9)||Compare(consoletext[0],"Noclothes ",0,9)){
- int closest=0;
+ if(entername) {
+ inputText(displaytext[0],&displayselected,&displaychars[0]);
+ if(!waiting) { // the input as finished
+ if(displaychars[0]){ // with enter
+ accountactive = Account::add(string(displaytext[0]));
- player[closest].numclothes=0;
- if(player[closest].whichskin==0){
- LoadTextureSave(":Data:Textures:Fur3.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
- }
- else if(player[closest].whichskin==1){
- LoadTextureSave(":Data:Textures:Fur.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
- }
- else if(player[closest].whichskin==2){
- LoadTextureSave(":Data:Textures:Fur2.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
- }
- else if(player[closest].whichskin==3){
- LoadTextureSave(":Data:Textures:Lynx.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
- }
- else if(player[closest].whichskin==4){
- LoadTextureSave(":Data:Textures:Otter.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
- }
- else if(player[closest].whichskin==5){
- LoadTextureSave(":Data:Textures:Opal.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
- }
- else if(player[closest].whichskin==6){
- LoadTextureSave(":Data:Textures:Sable.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
- }
- else if(player[closest].whichskin==7){
- LoadTextureSave(":Data:Textures:Chocolate.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
- }
- else if(player[closest].whichskin==8){
- LoadTextureSave(":Data:Textures:BW2.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
- }
- else if(player[closest].whichskin==9){
- LoadTextureSave(":Data:Textures:WB2.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
- }
+ mainmenu=8;
- donesomething=1;
- }
+ flash();
- if((Compare(consoletext[0],"Clothes ",0,7)||Compare(consoletext[0],"clothes ",0,7))){
- mapname[0]=':';
- mapname[1]='D';
- mapname[2]='a';
- mapname[3]='t';
- mapname[4]='a';
- mapname[5]=':';
- mapname[6]='T';
- mapname[7]='e';
- mapname[8]='x';
- mapname[9]='t';
- mapname[10]='u';
- mapname[11]='r';
- mapname[12]='e';
- mapname[13]='s';
- mapname[14]=':';
- for(j=8;j<consolechars[0];j++){
- mapname[j-8+15]=consoletext[0][j];
- }
- mapname[consolechars[0]-8+15]='.';
- mapname[consolechars[0]-8+16]='p';
- mapname[consolechars[0]-8+17]='n';
- mapname[consolechars[0]-8+18]='g';
- mapname[consolechars[0]-8+19]='\0';
-
- //:Data:Textures:Pants.png
-
- if(AddClothes((char *)mapname,0,1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize)){
- player[0].DoMipmaps(5,0,0,player[0].skeleton.skinsize,player[0].skeleton.skinsize);
- strcpy(player[0].clothes[player[0].numclothes],mapname);
- player[0].clothestintr[player[0].numclothes]=tintr;
- player[0].clothestintg[player[0].numclothes]=tintg;
- player[0].clothestintb[player[0].numclothes]=tintb;
- player[0].numclothes++;
- }
+ fireSound(firestartsound);
- donesomething=1;
- }
+ for(i=0;i<255;i++){
+ displaytext[0][i]=' ';
+ }
+ displaychars[0]=0;
- if(Compare(consoletext[0],"belt ",0,4)||Compare(consoletext[0],"belt ",0,4)){
- player[0].skeleton.clothes = 1-player[0].skeleton.clothes;
+ displayselected=0;
+ } else { // with escape or empty
+ mainmenutogglekeydown=1;
+ }
+ entername=0;
+ }
+
+ displayblinkdelay-=multiplier;
+ if(displayblinkdelay<=0){
+ displayblinkdelay=.3;
+ displayblink=1-displayblink;
+ }
+ }
+ }
- donesomething=1;
- }
+ if(!mainmenu){
+ if(hostile==1)hostiletime+=multiplier;
+ else hostiletime=0;
+ if(!winfreeze)leveltime+=multiplier;
+ if(Input::isKeyDown(SDLK_ESCAPE)){
+ chatting=0;
+ console=0;
+ freeze=0;
+ displaychars[0]=0;
+ }
- if(Compare(consoletext[0],"Cellophane ",0,10)||Compare(consoletext[0],"cellophane ",0,10)){
- cellophane=1-cellophane;
+ if(Input::isKeyDown(chatkey)&&!chattogglekeydown&&!console&&!chatting&&debugmode){
+ chatting=1;
+ chattogglekeydown=1;
+ }
- if(cellophane){
- for(i=0;i<numplayers;i++){
- player[i].proportionhead.z=0;
- player[i].proportionbody.z=0;
- player[i].proportionarms.z=0;
- player[i].proportionlegs.z=0;
- }
- }
+ if(!Input::isKeyDown(chatkey)){
+ chattogglekeydown=0;
+ }
- if(!cellophane){
- for(i=0;i<numplayers;i++){
- player[i].proportionhead.z=player[i].proportionhead.x;
- player[i].proportionbody.z=player[i].proportionbody.x;
- player[i].proportionarms.z=player[i].proportionarms.x;
- player[i].proportionlegs.z=player[i].proportionlegs.x;
- }
- }
+ if(chatting){
+ inputText(displaytext[0],&displayselected,&displaychars[0]);
+ if(!waiting) {
+ if(displaychars[0]){
+ for(int j=0;j<255;j++){
+ displaytext[0][j]=' ';
+ }
+ displaychars[0]=0;
+ displayselected=0;
+ }
+ chatting=0;
+ }
- donesomething=1;
- }
+ displayblinkdelay-=multiplier;
+ if(displayblinkdelay<=0){
+ displayblinkdelay=.3;
+ displayblink=1-displayblink;
+ }
+ }
- if((Compare(consoletext[0],"Clothesnear ",0,11)||Compare(consoletext[0],"clothesnear ",0,11))){
- mapname[0]=':';
- mapname[1]='D';
- mapname[2]='a';
- mapname[3]='t';
- mapname[4]='a';
- mapname[5]=':';
- mapname[6]='T';
- mapname[7]='e';
- mapname[8]='x';
- mapname[9]='t';
- mapname[10]='u';
- mapname[11]='r';
- mapname[12]='e';
- mapname[13]='s';
- mapname[14]=':';
- for(j=12;j<consolechars[0];j++){
- mapname[j-12+15]=consoletext[0][j];
- }
- mapname[consolechars[0]-12+15]='.';
- mapname[consolechars[0]-12+16]='p';
- mapname[consolechars[0]-12+17]='n';
- mapname[consolechars[0]-12+18]='g';
- mapname[consolechars[0]-12+19]='\0';
-
- //:Data:Textures:Pants.png
- int closest=-1;
- float closestdist=-1;
- float distance;
- if(numplayers>1)
- for(i=1;i<numplayers;i++){
- distance=findDistancefast(&player[i].coords,&player[0].coords);
- if(closestdist==-1||distance<closestdist){
- closestdist=distance;
- closest=i;
- }
- }
+ if(chatting)keyboardfrozen=1;
- if(AddClothes((char *)mapname,0,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize)){
- player[closest].DoMipmaps(5,0,0,player[closest].skeleton.skinsize,player[closest].skeleton.skinsize);
- strcpy(player[closest].clothes[player[closest].numclothes],mapname);
- player[closest].clothestintr[player[closest].numclothes]=tintr;
- player[closest].clothestintg[player[closest].numclothes]=tintg;
- player[closest].clothestintb[player[closest].numclothes]=tintb;
- player[closest].numclothes++;
- }
+ if(Input::isKeyDown(SDLK_v)&&!freezetogglekeydown&&debugmode){
+ freeze=1-freeze;
+ if(freeze){
+ OPENAL_SetFrequency(OPENAL_ALL, 0.001);
+ }
+ freezetogglekeydown=1;
+ }
- donesomething=1;
- }
+ if(!Input::isKeyDown(SDLK_v)&&!Input::isKeyDown(SDLK_F1)){
+ freezetogglekeydown=0;
+ }
- if(Compare(consoletext[0],"funnybunny ",0,10)||Compare(consoletext[0],"funny bunny ",0,11)){
- player[0].skeleton.id=0;
- player[0].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[0].skeleton.drawmodel.textureptr,1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize);
- player[0].creature=rabbittype;
- player[0].scale=.2;
+ if(Input::isKeyDown(SDLK_BACKQUOTE)&&!consoletogglekeydown&&debugmode){
+ console=1-console;
+ if(console){
+ OPENAL_SetFrequency(OPENAL_ALL, 0.001);
+ } else {
+ freeze=0;
+ waiting=false;
+ }
+ consoletogglekeydown=1;
+ }
- 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].headless=0;
+ if(!Input::isKeyDown(SDLK_BACKQUOTE)){
+ consoletogglekeydown=0;
+ }
- player[0].damagetolerance=200;
+ if(console)freeze=1;
- donesomething=1;
- }
- if(Compare(consoletext[0],"wolfieisgod ",0,11)||Compare(consoletext[0],"wolfie is god ",0,12)){
- player[0].skeleton.id=0;
- player[0].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[0].skeleton.drawmodel.textureptr,1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize);
- player[0].creature=wolftype;
-
- player[0].proportionhead=1.1;
- player[0].proportionbody=1.1;
- player[0].proportionarms=1.1;
- player[0].proportionlegs=1.1;
- player[0].proportionlegs.y=1.1;
- player[0].scale=.23;
-
- player[0].damagetolerance=300;
-
- donesomething=1;
- }
- /*if(Compare(consoletext[0],"kungfu ",0,6)||Compare(consoletext[0],"kung fu ",0,7)){
- LoadTextureSave(":Data:Textures:Kungfu.jpg",&player[0].skeleton.drawmodel.textureptr,1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize);
- donesomething=1;
- }
- if(Compare(consoletext[0],"rambo ",0,5)){
- LoadTextureSave(":Data:Textures:Leather.jpg",&player[0].skeleton.drawmodel.textureptr,1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize);
- donesomething=1;
- }
- if(Compare(consoletext[0],"david ",0,5)){
- LoadTextureSave(":Data:Textures:David.jpg",&player[0].skeleton.drawmodel.textureptr,1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize);
- donesomething=1;
- }*/
- if(Compare(consoletext[0],"wolf ",0,4)){
- LoadTextureSave(":Data:Textures:Wolf.jpg",&player[0].skeleton.drawmodel.textureptr,1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize);
- donesomething=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;
- }
- 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;
- }
- 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;
- }
- 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(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]=' ';
- }
- consolechars[0]=0;
- consoleselected=0;
+ if(console&&!Input::isKeyDown(SDLK_LMETA)){
+ inputText(consoletext[0],&consoleselected,&consolechars[0]);
+ if(!waiting) {
+ archiveselected=0;
+ cmd_dispatch(this, consoletext[0]);
+ if(consolechars[0]>0){
- if(!donesomething){
- PlaySoundEx( consolefailsound, samp[consolefailsound], NULL, true);
- OPENAL_SetVolume(channels[consolefailsound], 256);
- OPENAL_SetPaused(channels[consolefailsound], false);
- }
- }
+ for(k=14;k>=1;k--){
+ for(j=0;j<255;j++){
+ consoletext[k][j]=consoletext[k-1][j];
}
+ consolechars[k]=consolechars[k-1];
}
- togglekey[i]=1;
- }
- else {
- togglekey[i]=0;
- togglekeydelay[i]=0;
+ for(j=0;j<255;j++){
+ consoletext[0][j]=' ';
+ }
+ consolechars[0]=0;
+ consoleselected=0;
}
}
}
}
- if(IsKeyDown(theKeyMap, MAC_Q_KEY)&&IsKeyDown(theKeyMap, MAC_COMMAND_KEY)){
+ if(Input::isKeyDown(SDLK_q)&&Input::isKeyDown(SDLK_LMETA)){
tryquit=1;
if(mainmenu==3){
if(newdetail>2)newdetail=detail;
if(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(winfreeze==0)oldwinfreeze=winfreeze;
else oldwinfreeze++;
- if((IsKeyDown(theKeyMap, jumpkey)||IsKeyDown(theKeyMap, MAC_SPACE_KEY))&&!oldjumpkeydown&&!campaign){
+ if((Input::isKeyDown(jumpkey)||Input::isKeyDown(SDLK_SPACE))&&!oldjumpkeydown&&!campaign){
if(winfreeze)winfreeze=0;
oldjumpkeydown=1;
}
- if((IsKeyDown(theKeyMap, MAC_ESCAPE_KEY))&&!campaign&&gameon){
+ if((Input::isKeyDown(SDLK_ESCAPE))&&!campaign&&gameon){
if(winfreeze){
mainmenu=9;
gameon=0;
}
}
- if((IsKeyDown(theKeyMap, jumpkey)||IsKeyDown(theKeyMap, MAC_SPACE_KEY))){
+ if((Input::isKeyDown(jumpkey)||Input::isKeyDown(SDLK_SPACE))){
oldjumpkeydown=1;
}
- if(!IsKeyDown(theKeyMap, jumpkey)&&!IsKeyDown(theKeyMap, MAC_SPACE_KEY))oldjumpkeydown=0;
+ if(!Input::isKeyDown(jumpkey)&&!Input::isKeyDown(SDLK_SPACE))oldjumpkeydown=0;
if(!freeze&&!winfreeze&&!(mainmenu&&gameon)&&(gameon||!gamestarted)){
realdialoguetype=dialoguetype[i];
special=0;
}
- if((!hostile||(dialoguetype[i]>40&&dialoguetype[i]<50))&&realdialoguetype<numplayers&&realdialoguetype>0&&(dialoguegonethrough[i]==0||!special)&&(special||(IsKeyDown(theKeyMap, attackkey)&&!oldbuttondialogue))){
+ if((!hostile||(dialoguetype[i]>40&&dialoguetype[i]<50))&&realdialoguetype<numplayers&&realdialoguetype>0&&(dialoguegonethrough[i]==0||!special)&&(special||(Input::isKeyDown(attackkey)&&!oldbuttondialogue))){
if(findDistancefast(&player[0].coords,&player[realdialoguetype].coords)<6||player[realdialoguetype].howactive>=typedead1||(dialoguetype[i]>40&&dialoguetype[i]<50)){
whichdialogue=i;
for(j=0;j<numdialogueboxes[whichdialogue];j++){
OPENAL_SetVolume(channels[whichsoundplay], 256);
OPENAL_SetPaused(channels[whichsoundplay], false);
}
- if(IsKeyDown(theKeyMap, attackkey))oldbuttondialogue=1;
+ if(Input::isKeyDown(attackkey))oldbuttondialogue=1;
}
}
}
hotspotsprite=DoRotation(hotspotsprite,0,0,Random()%360);
hotspotsprite=DoRotation(hotspotsprite,0,Random()%360,0);
hotspotsprite+=hotspot[i];
- sprites.MakeSprite(breathsprite, hotspotsprite, hotspotsprite*0, 1,0.5,0, 7, 0.4);
+ Sprite::MakeSprite(breathsprite, hotspotsprite, hotspotsprite*0, 1,0.5,0, 7, 0.4);
hotspotvisual[i]+=0.1/hotspotsize[i]/hotspotsize[i]/hotspotsize[i];
}
}
}
if(tutorialstage==1){
tutorialmaxtime=5;
- }
- if(tutorialstage==2){
+ } else if(tutorialstage==2){
tutorialmaxtime=2;
- }
- if(tutorialstage==3){
+ } else if(tutorialstage==3){
tutorialmaxtime=600;
- }
- if(tutorialstage==4){
+ } else if(tutorialstage==4){
tutorialmaxtime=1000;
- }
- if(tutorialstage==5){
+ } else if(tutorialstage==5){
tutorialmaxtime=600;
- }
- if(tutorialstage==6){
+ } else if(tutorialstage==6){
tutorialmaxtime=600;
- }
- if(tutorialstage==7){
+ } else if(tutorialstage==7){
tutorialmaxtime=600;
- }
- if(tutorialstage==8){
+ } else if(tutorialstage==8){
tutorialmaxtime=600;
- }
- if(tutorialstage==9){
+ } else if(tutorialstage==9){
tutorialmaxtime=600;
- }
- if(tutorialstage==10){
+ } else if(tutorialstage==10){
tutorialmaxtime=2;
- }
- if(tutorialstage==11){
+ } else if(tutorialstage==11){
tutorialmaxtime=1000;
- }
- if(tutorialstage==12){
+ } else if(tutorialstage==12){
tutorialmaxtime=1000;
- }
- if(tutorialstage==13){
+ } else if(tutorialstage==13){
tutorialmaxtime=2;
- }
- if(tutorialstage==14){
+ } else if(tutorialstage==14){
tutorialmaxtime=3;
XYZ temp,temp2;
if(player[1].skeleton.free)temp2=player[1].skeleton.joints[i].velocity*player[1].scale/2;
if(!player[1].skeleton.free)temp=DoRotation(DoRotation(DoRotation(player[1].skeleton.joints[i].position,0,0,player[1].tilt),player[1].tilt2,0,0),0,player[1].rotation,0)*player[1].scale+player[1].coords;
if(player[1].skeleton.free)temp=player[1].skeleton.joints[i].position*player[1].scale+player[1].coords;
- sprites.MakeSprite(breathsprite, temp,temp2, 1,1,1, .6+(float)abs(Random()%100)/200-.25, 1);
+ Sprite::MakeSprite(breathsprite, temp,temp2, 1,1,1, .6+(float)abs(Random()%100)/200-.25, 1);
}
}
- }
- if(tutorialstage==15){
+ } else if(tutorialstage==15){
tutorialmaxtime=500;
- }
- if(tutorialstage==16){
+ } else if(tutorialstage==16){
tutorialmaxtime=500;
- }
- if(tutorialstage==17){
+ } else if(tutorialstage==17){
tutorialmaxtime=500;
- }
- if(tutorialstage==18){
+ } else if(tutorialstage==18){
tutorialmaxtime=500;
- }
- if(tutorialstage==19){
+ } else if(tutorialstage==19){
tutorialstage=20;
//tutorialmaxtime=500;
- }
- if(tutorialstage==20){
+ } else if(tutorialstage==20){
tutorialmaxtime=500;
- }
- if(tutorialstage==21){
+ } else if(tutorialstage==21){
tutorialmaxtime=500;
if(bonus==cannon){
bonus=Slicebonus;
againbonus=1;
}
else againbonus=0;
- }
- if(tutorialstage==22){
+ } else if(tutorialstage==22){
tutorialmaxtime=500;
- }
- if(tutorialstage==23){
+ } else if(tutorialstage==23){
tutorialmaxtime=500;
- }
- if(tutorialstage==24){
+ } else if(tutorialstage==24){
tutorialmaxtime=500;
- }
- if(tutorialstage==25){
+ } else if(tutorialstage==25){
tutorialmaxtime=500;
- }
- if(tutorialstage==26){
+ } else if(tutorialstage==26){
tutorialmaxtime=2;
- }
- if(tutorialstage==27){
+ } else if(tutorialstage==27){
tutorialmaxtime=4;
reversaltrain=1;
cananger=1;
player[1].aitype=attacktypecutoff;
- }
- if(tutorialstage==28){
+ } else if(tutorialstage==28){
tutorialmaxtime=400;
- }
- if(tutorialstage==29){
+ } else if(tutorialstage==29){
tutorialmaxtime=400;
player[0].escapednum=0;
- }
- if(tutorialstage==30){
+ } else if(tutorialstage==30){
tutorialmaxtime=4;
reversaltrain=0;
cananger=0;
player[1].aitype=passivetype;
- }
- if(tutorialstage==31){
+ } else if(tutorialstage==31){
tutorialmaxtime=13;
- }
- if(tutorialstage==32){
+ } else if(tutorialstage==32){
tutorialmaxtime=8;
- }
- if(tutorialstage==33){
+ } else if(tutorialstage==33){
tutorialmaxtime=400;
cananger=1;
canattack=1;
player[1].aitype=attacktypecutoff;
- }
- if(tutorialstage==34){
+ } else if(tutorialstage==34){
tutorialmaxtime=400;
- }
- if(tutorialstage==35){
+ } else if(tutorialstage==35){
tutorialmaxtime=400;
- }
- if(tutorialstage==36){
+ } else if(tutorialstage==36){
tutorialmaxtime=2;
reversaltrain=0;
cananger=0;
player[1].aitype=passivetype;
- }
- if(tutorialstage==37){
+ } else if(tutorialstage==37){
damagedealt=0;
damagetaken=0;
tutorialmaxtime=50;
cananger=1;
canattack=1;
player[1].aitype=attacktypecutoff;
- }
- if(tutorialstage==38){
+ } else if(tutorialstage==38){
tutorialmaxtime=4;
canattack=0;
cananger=0;
player[1].aitype=passivetype;
- }
- if(tutorialstage==39){
+ } else if(tutorialstage==39){
XYZ temp,temp2;
temp.x=1011;
weapons.physics[weapons.numweapons]=1;
weapons.numweapons++;
- }
- if(tutorialstage==40){
+ } else if(tutorialstage==40){
tutorialmaxtime=300;
- }
- if(tutorialstage==41){
+ } else if(tutorialstage==41){
tutorialmaxtime=300;
- }
- if(tutorialstage==42){
+ } else if(tutorialstage==42){
tutorialmaxtime=8;
- }
- if(tutorialstage==43){
+ } else if(tutorialstage==43){
tutorialmaxtime=300;
- }
- if(tutorialstage==44){
+ } else if(tutorialstage==44){
weapons.owner[0]=1;
player[0].weaponactive=-1;
player[0].num_weapons=0;
player[1].aitype=attacktypecutoff;
tutorialmaxtime=300;
- }
- if(tutorialstage==45){
+ } else if(tutorialstage==45){
weapons.owner[0]=1;
player[0].weaponactive=-1;
player[0].num_weapons=0;
player[1].weaponids[0]=0;
tutorialmaxtime=300;
- }
- if(tutorialstage==46){
+ } else if(tutorialstage==46){
weapons.owner[0]=1;
player[0].weaponactive=-1;
player[0].num_weapons=0;
weapons.type[0]=sword;
tutorialmaxtime=300;
- }
-
- if(tutorialstage==47){
+ } else if(tutorialstage==47){
tutorialmaxtime=10;
XYZ temp,temp2;
player[1].weaponids[0]=0;
weapons.numweapons++;
- }
- if(tutorialstage==48){
+ } else if(tutorialstage==48){
canattack=0;
cananger=0;
player[1].aitype=passivetype;
else weapons.type[0]=staff;
weapons.numweapons++;
- }
- if(tutorialstage==49){
+ } else if(tutorialstage==49){
canattack=0;
cananger=0;
player[1].aitype=passivetype;
weapons.type[0]=knife;
weapons.numweapons++;
- }
- if(tutorialstage==50){
+ } else if(tutorialstage==50){
tutorialmaxtime=8;
XYZ temp,temp2;
if(player[1].skeleton.free)temp2=player[1].skeleton.joints[i].velocity*player[1].scale/2;
if(!player[1].skeleton.free)temp=DoRotation(DoRotation(DoRotation(player[1].skeleton.joints[i].position,0,0,player[1].tilt),player[1].tilt2,0,0),0,player[1].rotation,0)*player[1].scale+player[1].coords;
if(player[1].skeleton.free)temp=player[1].skeleton.joints[i].position*player[1].scale+player[1].coords;
- sprites.MakeSprite(breathsprite, temp,temp2, 1,1,1, .6+(float)abs(Random()%100)/200-.25, 1);
+ Sprite::MakeSprite(breathsprite, temp,temp2, 1,1,1, .6+(float)abs(Random()%100)/200-.25, 1);
}
}
weapons.freetime[0]=0;
weapons.firstfree[0]=1;
weapons.physics[0]=1;
- }
- if(tutorialstage==51){
+ } else if(tutorialstage==51){
tutorialmaxtime=80000;
}
if(tutorialstage<=51)tutorialstagetime=0;
footpoint.y+=((float)abs(Random()%1200))/100-6;
footpoint.x+=((float)abs(Random()%1200))/100-6;
footpoint.z+=((float)abs(Random()%1200))/100-6;
- sprites.MakeSprite(snowsprite, footpoint,footvel, 1,1,1, .1, 1);
+ Sprite::MakeSprite(snowsprite, footpoint,footvel, 1,1,1, .1, 1);
}
}
for(k=0;k<numplayers;k++){
static XYZ oldviewer;
if(indialogue==-1){
- player[0].forwardkeydown=IsKeyDown(theKeyMap, forwardkey);
- player[0].leftkeydown=IsKeyDown(theKeyMap, leftkey);
- player[0].backkeydown=IsKeyDown(theKeyMap, backkey);
- player[0].rightkeydown=IsKeyDown(theKeyMap, rightkey);
- player[0].jumpkeydown=IsKeyDown(theKeyMap, jumpkey);
- player[0].crouchkeydown=IsKeyDown(theKeyMap, crouchkey);
- player[0].drawkeydown=IsKeyDown(theKeyMap, drawkey);
- player[0].throwkeydown=IsKeyDown(theKeyMap, throwkey);
+ player[0].forwardkeydown=Input::isKeyDown(forwardkey);
+ player[0].leftkeydown=Input::isKeyDown(leftkey);
+ player[0].backkeydown=Input::isKeyDown(backkey);
+ player[0].rightkeydown=Input::isKeyDown(rightkey);
+ player[0].jumpkeydown=Input::isKeyDown(jumpkey);
+ player[0].crouchkeydown=Input::isKeyDown(crouchkey);
+ player[0].drawkeydown=Input::isKeyDown(drawkey);
+ player[0].throwkeydown=Input::isKeyDown(throwkey);
}
else
{
flatfacing=DoRotation(flatfacing,0,-rotation,0);
- if(IsKeyDown(theKeyMap, forwardkey))viewer+=facing*multiplier*4;
- if(IsKeyDown(theKeyMap, backkey))viewer-=facing*multiplier*4;
- if(IsKeyDown(theKeyMap, leftkey))viewer+=DoRotation(flatfacing*multiplier,0,90,0)*4;
- if(IsKeyDown(theKeyMap, rightkey))viewer+=DoRotation(flatfacing*multiplier,0,-90,0)*4;
- if(IsKeyDown(theKeyMap, jumpkey))viewer.y+=multiplier*4;
- if(IsKeyDown(theKeyMap, crouchkey))viewer.y-=multiplier*4;
- if(!endkeydown&&(IsKeyDown(theKeyMap, MAC_1_KEY)||IsKeyDown(theKeyMap, MAC_2_KEY)||IsKeyDown(theKeyMap, MAC_3_KEY)||IsKeyDown(theKeyMap, MAC_4_KEY)||IsKeyDown(theKeyMap, MAC_5_KEY)
- ||IsKeyDown(theKeyMap, MAC_6_KEY)||IsKeyDown(theKeyMap, MAC_7_KEY)||IsKeyDown(theKeyMap, MAC_8_KEY)||IsKeyDown(theKeyMap, MAC_9_KEY)||IsKeyDown(theKeyMap, MAC_0_KEY)
- ||IsKeyDown(theKeyMap, MAC_MINUS_KEY))){
+ if(Input::isKeyDown(forwardkey))viewer+=facing*multiplier*4;
+ if(Input::isKeyDown(backkey))viewer-=facing*multiplier*4;
+ if(Input::isKeyDown(leftkey))viewer+=DoRotation(flatfacing*multiplier,0,90,0)*4;
+ if(Input::isKeyDown(rightkey))viewer+=DoRotation(flatfacing*multiplier,0,-90,0)*4;
+ if(Input::isKeyDown(jumpkey))viewer.y+=multiplier*4;
+ if(Input::isKeyDown(crouchkey))viewer.y-=multiplier*4;
+ if(!endkeydown&&(Input::isKeyDown(SDLK_1)||Input::isKeyDown(SDLK_2)||Input::isKeyDown(SDLK_3)||Input::isKeyDown(SDLK_4)||Input::isKeyDown(SDLK_5)
+ ||Input::isKeyDown(SDLK_6)||Input::isKeyDown(SDLK_7)||Input::isKeyDown(SDLK_8)||Input::isKeyDown(SDLK_9)||Input::isKeyDown(SDLK_0)
+ ||Input::isKeyDown(SDLK_MINUS))){
int whichend;
- if(IsKeyDown(theKeyMap, MAC_1_KEY))whichend=1;
- if(IsKeyDown(theKeyMap, MAC_2_KEY))whichend=2;
- if(IsKeyDown(theKeyMap, MAC_3_KEY))whichend=3;
- if(IsKeyDown(theKeyMap, MAC_4_KEY))whichend=4;
- if(IsKeyDown(theKeyMap, MAC_5_KEY))whichend=5;
- if(IsKeyDown(theKeyMap, MAC_6_KEY))whichend=6;
- if(IsKeyDown(theKeyMap, MAC_7_KEY))whichend=7;
- if(IsKeyDown(theKeyMap, MAC_8_KEY))whichend=8;
- if(IsKeyDown(theKeyMap, MAC_9_KEY))whichend=9;
- if(IsKeyDown(theKeyMap, MAC_0_KEY))whichend=0;
- if(IsKeyDown(theKeyMap, MAC_MINUS_KEY))whichend=-1;
+ if(Input::isKeyDown(SDLK_1))whichend=1;
+ if(Input::isKeyDown(SDLK_2))whichend=2;
+ if(Input::isKeyDown(SDLK_3))whichend=3;
+ if(Input::isKeyDown(SDLK_4))whichend=4;
+ if(Input::isKeyDown(SDLK_5))whichend=5;
+ if(Input::isKeyDown(SDLK_6))whichend=6;
+ if(Input::isKeyDown(SDLK_7))whichend=7;
+ if(Input::isKeyDown(SDLK_8))whichend=8;
+ if(Input::isKeyDown(SDLK_9))whichend=9;
+ if(Input::isKeyDown(SDLK_0))whichend=0;
+ if(Input::isKeyDown(SDLK_MINUS))whichend=-1;
if(whichend!=-1){
participantfocus[whichdialogue][indialogue]=whichend;
participantlocation[whichdialogue][whichend]=player[whichend].coords;
endkeydown=1;
}
- if((IsKeyDown(theKeyMap, MAC_NUMPAD_1_KEY)||IsKeyDown(theKeyMap, MAC_NUMPAD_2_KEY)||IsKeyDown(theKeyMap, MAC_NUMPAD_3_KEY)||IsKeyDown(theKeyMap, MAC_NUMPAD_4_KEY)||IsKeyDown(theKeyMap, MAC_NUMPAD_5_KEY)
- ||IsKeyDown(theKeyMap, MAC_NUMPAD_6_KEY)||IsKeyDown(theKeyMap, MAC_NUMPAD_7_KEY)||IsKeyDown(theKeyMap, MAC_NUMPAD_8_KEY)||IsKeyDown(theKeyMap, MAC_NUMPAD_9_KEY)||IsKeyDown(theKeyMap, MAC_NUMPAD_0_KEY)
+ if((Input::isKeyDown(SDLK_KP1)||Input::isKeyDown(SDLK_KP2)||Input::isKeyDown(SDLK_KP3)||Input::isKeyDown(SDLK_KP4)||Input::isKeyDown(SDLK_KP5)
+ ||Input::isKeyDown(SDLK_KP6)||Input::isKeyDown(SDLK_KP7)||Input::isKeyDown(SDLK_KP8)||Input::isKeyDown(SDLK_KP9)||Input::isKeyDown(SDLK_KP0)
)){
int whichend;
- if(IsKeyDown(theKeyMap, MAC_NUMPAD_1_KEY))whichend=1;
- if(IsKeyDown(theKeyMap, MAC_NUMPAD_2_KEY))whichend=2;
- if(IsKeyDown(theKeyMap, MAC_NUMPAD_3_KEY))whichend=3;
- if(IsKeyDown(theKeyMap, MAC_NUMPAD_4_KEY))whichend=4;
- if(IsKeyDown(theKeyMap, MAC_NUMPAD_5_KEY))whichend=5;
- if(IsKeyDown(theKeyMap, MAC_NUMPAD_6_KEY))whichend=6;
- if(IsKeyDown(theKeyMap, MAC_NUMPAD_7_KEY))whichend=7;
- if(IsKeyDown(theKeyMap, MAC_NUMPAD_8_KEY))whichend=8;
- if(IsKeyDown(theKeyMap, MAC_NUMPAD_9_KEY))whichend=9;
- if(IsKeyDown(theKeyMap, MAC_NUMPAD_0_KEY))whichend=0;
+ if(Input::isKeyDown(SDLK_KP1))whichend=1;
+ if(Input::isKeyDown(SDLK_KP2))whichend=2;
+ if(Input::isKeyDown(SDLK_KP3))whichend=3;
+ if(Input::isKeyDown(SDLK_KP4))whichend=4;
+ if(Input::isKeyDown(SDLK_KP5))whichend=5;
+ if(Input::isKeyDown(SDLK_KP6))whichend=6;
+ if(Input::isKeyDown(SDLK_KP7))whichend=7;
+ if(Input::isKeyDown(SDLK_KP8))whichend=8;
+ if(Input::isKeyDown(SDLK_KP9))whichend=9;
+ if(Input::isKeyDown(SDLK_KP0))whichend=0;
participantfacing[whichdialogue][indialogue][whichend]=facing;
}
- if(!IsKeyDown(theKeyMap, MAC_1_KEY)&&!IsKeyDown(theKeyMap, MAC_2_KEY)&&!IsKeyDown(theKeyMap, MAC_3_KEY)&&!IsKeyDown(theKeyMap, MAC_4_KEY)&&!IsKeyDown(theKeyMap, MAC_5_KEY)
- &&!IsKeyDown(theKeyMap, MAC_6_KEY)&&!IsKeyDown(theKeyMap, MAC_7_KEY)&&!IsKeyDown(theKeyMap, MAC_8_KEY)&&!IsKeyDown(theKeyMap, MAC_9_KEY)&&!IsKeyDown(theKeyMap, MAC_0_KEY)
- &&!IsKeyDown(theKeyMap, MAC_MINUS_KEY)){
+ if(!Input::isKeyDown(SDLK_1)&&!Input::isKeyDown(SDLK_2)&&!Input::isKeyDown(SDLK_3)&&!Input::isKeyDown(SDLK_4)&&!Input::isKeyDown(SDLK_5)
+ &&!Input::isKeyDown(SDLK_6)&&!Input::isKeyDown(SDLK_7)&&!Input::isKeyDown(SDLK_8)&&!Input::isKeyDown(SDLK_9)&&!Input::isKeyDown(SDLK_0)
+ &&!Input::isKeyDown(SDLK_MINUS)){
endkeydown=0;
}
if(indialogue>=numdialogueboxes[whichdialogue]){
rotation=dialoguecamerarotation[whichdialogue][indialogue];
rotation2=dialoguecamerarotation2[whichdialogue][indialogue];
if(dialoguetime>0.5)
- if((!endkeydown&&(IsKeyDown(theKeyMap, MAC_1_KEY)||IsKeyDown(theKeyMap, MAC_2_KEY)||IsKeyDown(theKeyMap, MAC_3_KEY)||IsKeyDown(theKeyMap, MAC_4_KEY)||IsKeyDown(theKeyMap, MAC_5_KEY)
- ||IsKeyDown(theKeyMap, MAC_6_KEY)||IsKeyDown(theKeyMap, MAC_7_KEY)||IsKeyDown(theKeyMap, MAC_8_KEY)||IsKeyDown(theKeyMap, MAC_9_KEY)||IsKeyDown(theKeyMap, MAC_0_KEY)
- ||IsKeyDown(theKeyMap, MAC_MINUS_KEY)))||(IsKeyDown(theKeyMap, attackkey)&&!oldbuttondialogue)){
+ if((!endkeydown&&(Input::isKeyDown(SDLK_1)||Input::isKeyDown(SDLK_2)||Input::isKeyDown(SDLK_3)||Input::isKeyDown(SDLK_4)||Input::isKeyDown(SDLK_5)
+ ||Input::isKeyDown(SDLK_6)||Input::isKeyDown(SDLK_7)||Input::isKeyDown(SDLK_8)||Input::isKeyDown(SDLK_9)||Input::isKeyDown(SDLK_0)
+ ||Input::isKeyDown(SDLK_MINUS)))||(Input::isKeyDown(attackkey)&&!oldbuttondialogue)){
indialogue++;
endkeydown=1;
if(indialogue<numdialogueboxes[whichdialogue]){
}
}
}
- if(!IsKeyDown(theKeyMap, MAC_1_KEY)&&!IsKeyDown(theKeyMap, MAC_2_KEY)&&!IsKeyDown(theKeyMap, MAC_3_KEY)&&!IsKeyDown(theKeyMap, MAC_4_KEY)&&!IsKeyDown(theKeyMap, MAC_5_KEY)
- &&!IsKeyDown(theKeyMap, MAC_6_KEY)&&!IsKeyDown(theKeyMap, MAC_7_KEY)&&!IsKeyDown(theKeyMap, MAC_8_KEY)&&!IsKeyDown(theKeyMap, MAC_9_KEY)&&!IsKeyDown(theKeyMap, MAC_0_KEY)
- &&!IsKeyDown(theKeyMap, MAC_MINUS_KEY)){
+ if(!Input::isKeyDown(SDLK_1)&&!Input::isKeyDown(SDLK_2)&&!Input::isKeyDown(SDLK_3)&&!Input::isKeyDown(SDLK_4)&&!Input::isKeyDown(SDLK_5)
+ &&!Input::isKeyDown(SDLK_6)&&!Input::isKeyDown(SDLK_7)&&!Input::isKeyDown(SDLK_8)&&!Input::isKeyDown(SDLK_9)&&!Input::isKeyDown(SDLK_0)
+ &&!Input::isKeyDown(SDLK_MINUS)){
endkeydown=0;
}
if(indialogue>=numdialogueboxes[whichdialogue]){
}
}
- if(!IsKeyDown(theKeyMap, attackkey))oldbuttondialogue=0;
+ if(!Input::isKeyDown(attackkey))oldbuttondialogue=0;
else oldbuttondialogue=1;
static float keyrefreshdelay=0,bigrefreshdelay=0;
- //Net updates
-
- /*keyrefreshdelay-=multiplier;
- bigrefreshdelay-=multiplier;
-
- if(keyrefreshdelay<=0){
- static int concat[4];
-
- concat[0]=player[0].forwardkeydown;
- concat[0]=concat[0]*2+player[0].forwardstogglekeydown;
- concat[0]=concat[0]*2+player[0].rightkeydown;
- concat[0]=concat[0]*2+player[0].leftkeydown;
- concat[0]=concat[0]*2+player[0].backkeydown;
- concat[0]=concat[0]*2+player[0].jumpkeydown;
- concat[0]=concat[0]*2+player[0].jumptogglekeydown;
- concat[0]=concat[0]*2+player[0].crouchkeydown;
-
- concat[1]=player[0].crouchtogglekeydown;
- concat[1]=concat[1]*2+player[0].drawkeydown;
- concat[1]=concat[1]*2+player[0].drawtogglekeydown;
- concat[1]=concat[1]*2+player[0].throwkeydown;
- concat[1]=concat[1]*2+player[0].throwtogglekeydown;
- concat[1]=concat[1]*2+player[0].attackkeydown;
-
- //concat[2]=(char)((int)(rotation/2)%180);
-
- //concat[3]=(char)((int)(rotation2/2)%180);
-
- chatname[0]=concat[0]-128;
- chatname[1]=concat[1]-128;
- //chatname[2]=concat[2]-128;
- //chatname[3]=concat[3]-128;
- int temppoint=2;
- memcpy(chatname+temppoint,&rotation,sizeof(float));
- temppoint+=sizeof(float);
- memcpy(chatname+temppoint,&rotation2,sizeof(float));
- temppoint+=sizeof(float);
-
- chatname[temppoint]='\0';
-
- //if(!ishost)NetworkSendPlayerMessage( chatname, kMessageType_Keys );
- //if(ishost)NetworkSendPlayerRelayMessage( chatname, kMessageType_Keys );
- //keyrefreshdelay=.01;
- keyrefreshdelay=.03;
- }
-
- if(bigrefreshdelay<=0){
- for(i=0;i<1;i++){
- /*int temppoint=0;
- memcpy(chatname+temppoint,&i,sizeof(int));
- temppoint+=sizeof(int);
- memcpy(chatname+temppoint,&player[i].coords.x,sizeof(float));
- temppoint+=sizeof(float);
- memcpy(chatname+temppoint,&player[i].coords.y,sizeof(float));
- temppoint+=sizeof(float);
- memcpy(chatname+temppoint,&player[i].coords.z,sizeof(float));
- temppoint+=sizeof(float);
- memcpy(chatname+temppoint,&player[i].damage,sizeof(float));
- temppoint+=sizeof(float);
- memcpy(chatname+temppoint,&player[i].target,sizeof(float));
- temppoint+=sizeof(float);
- memcpy(chatname+temppoint,&player[i].targetanimation,sizeof(int));
- temppoint+=sizeof(int);
- memcpy(chatname+temppoint,&player[i].currentanimation,sizeof(int));
- temppoint+=sizeof(int);
- memcpy(chatname+temppoint,&player[i].velocity.x,sizeof(float));
- temppoint+=sizeof(float);
- memcpy(chatname+temppoint,&player[i].velocity.y,sizeof(float));
- temppoint+=sizeof(float);
- memcpy(chatname+temppoint,&player[i].velocity.z,sizeof(float));
- temppoint+=sizeof(float);
- memcpy(chatname+temppoint,&player[i].targetframe,sizeof(int));
- temppoint+=sizeof(int);
- memcpy(chatname+temppoint,&player[i].currentframe,sizeof(int));
- temppoint+=sizeof(int);
- memcpy(chatname+temppoint,&player[i].rotation,sizeof(float));
- temppoint+=sizeof(float);
- memcpy(chatname+temppoint,&player[i].targetrotation,sizeof(float));
- temppoint+=sizeof(float);
- memcpy(chatname+temppoint,&player[i].bloodloss,sizeof(float));
- temppoint+=sizeof(float);
- memcpy(chatname+temppoint,&player[i].weaponactive,sizeof(int));
- temppoint+=sizeof(int);
- memcpy(chatname+temppoint,&player[i].num_weapons,sizeof(int));
- temppoint+=sizeof(int);
- memcpy(chatname+temppoint,&player[i].weaponids[0],sizeof(int));
- temppoint+=sizeof(int);
- memcpy(chatname+temppoint,&player[i].weaponids[1],sizeof(int));
- temppoint+=sizeof(int);
- memcpy(chatname+temppoint,&player[i].weaponids[2],sizeof(int));
- temppoint+=sizeof(int);
- memcpy(chatname+temppoint,&player[i].weaponids[3],sizeof(int));
- temppoint+=sizeof(int);
- chatname[temppoint]='\0';
-
- sprintf (chatname, "%d %f %f %f %f %f %d %d %f %f %f %d %d %f %f %f",i,player[i].coords.x,player[i].coords.y,player[i].coords.z,player[i].damage,player[i].target, player[i].targetanimation, player[i].currentanimation, player[i].velocity.x, player[i].velocity.y, player[i].velocity.z, player[i].targetframe, player[i].currentframe, player[i].rotation, player[i].targetrotation);
- //if(ishost)NetworkSendPlayerRelayMessage( chatname, kMessageType_PlayerState );
- //else NetworkSendPlayerMessage( chatname, kMessageType_PlayerState );
-
- sprintf (chatname, "%d %f %d %d %d %d %d %d %d %d %f",i,player[i].bloodloss, player[i].weaponactive, player[i].num_weapons, player[i].weaponids[0], player[i].weaponids[1], player[i].weaponids[2], player[i].weaponids[3],player[i].dead,player[i].skeleton.free,player[i].permanentdamage);
-
- //if(ishost)NetworkSendPlayerRelayMessage( chatname, kMessageType_PlayerStateMisc );
- //else NetworkSendPlayerMessage( chatname, kMessageType_PlayerStateMisc );
- }
- //bigrefreshdelay=.02;
- bigrefreshdelay=.1;
- }
- }*/
-
if(!player[0].jumpkeydown){
player[0].jumptogglekeydown=0;
}
static float temptexdetail;
- if(IsKeyDown(theKeyMap, MAC_H_KEY)&&debugmode){
+ if(Input::isKeyDown(SDLK_h)&&debugmode){
player[0].damagetolerance=200000;
player[0].damage=0;
player[0].burnt=0;
player[0].permanentdamage=0;
player[0].superpermanentdamage=0;
- /*
- int whichchar;
- whichchar = abs(Random()%7);
- registrationname[whichchar]+=1;
- */
}
- if(IsKeyDown(theKeyMap, MAC_J_KEY)&&!envtogglekeydown&&debugmode){
+ if(Input::isKeyDown(SDLK_j)&&!envtogglekeydown&&debugmode){
environment++;
if(environment>2)environment=0;
Setenvironment(environment);
}
- if(!IsKeyDown(theKeyMap, MAC_J_KEY)){
+ if(!Input::isKeyDown(SDLK_j)){
envtogglekeydown=0;
}
- if(IsKeyDown(theKeyMap, MAC_C_KEY)&&!cameratogglekeydown&&debugmode){
+ if(Input::isKeyDown(SDLK_c)&&!cameratogglekeydown&&debugmode){
cameramode=1-cameramode;
cameratogglekeydown=1;
}
- if(!IsKeyDown(theKeyMap, MAC_C_KEY)){
+ if(!Input::isKeyDown(SDLK_c)){
cameratogglekeydown=0;
}
- if(IsKeyDown(theKeyMap, MAC_X_KEY)&&!IsKeyDown(theKeyMap, MAC_SHIFT_KEY)&&!detailtogglekeydown&&debugmode){
+ if(Input::isKeyDown(SDLK_x)&&!Input::isKeyDown(SDLK_LSHIFT)&&!detailtogglekeydown&&debugmode){
if(player[0].num_weapons>0){
if(weapons.type[player[0].weaponids[0]]==sword)weapons.type[player[0].weaponids[0]]=staff;
else if(weapons.type[player[0].weaponids[0]]==staff)weapons.type[player[0].weaponids[0]]=knife;
weapons.length[player[0].weaponids[0]]=.25;
}
}
-
- /*for(i=0;i<objects.numobjects;i++){
- if(objects.type[i]==treeleavestype){
- for(j=0;j<objects.numobjects;j++){
- if(objects.type[j]==treetrunktype)
- if(findDistancefast(&objects.position[i],&objects.position[j])<.5)
- objects.scale[i]=objects.scale[j];
- }
- }
- }*/
detailtogglekeydown=1;
}
- if(IsKeyDown(theKeyMap, MAC_X_KEY)&&IsKeyDown(theKeyMap, MAC_SHIFT_KEY)&&!detailtogglekeydown&&debugmode){
+ if(Input::isKeyDown(SDLK_x)&&Input::isKeyDown(SDLK_LSHIFT)&&!detailtogglekeydown&&debugmode){
int closest=-1;
float closestdist=-1;
float distance;
detailtogglekeydown=1;
}
- if(IsKeyDown(theKeyMap, MAC_U_KEY)&&debugmode){
+ if(Input::isKeyDown(SDLK_u)&&debugmode){
int closest=-1;
float closestdist=-1;
float distance;
}
- if(IsKeyDown(theKeyMap, MAC_O_KEY)&&!IsKeyDown(theKeyMap, MAC_SHIFT_KEY)&&debugmode){
+ if(Input::isKeyDown(SDLK_o)&&!Input::isKeyDown(SDLK_LSHIFT)&&debugmode){
int closest=-1;
float closestdist=-1;
float distance;
closest=i;
}
}
- if(IsKeyDown(theKeyMap, MAC_CONTROL_KEY))closest=0;
-
- if(closest!=-1){
- player[closest].whichskin++;
- 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);
- }
- }
- }
+ if(Input::isKeyDown(SDLK_LCTRL))closest=0;
+
+ if(closest!=-1){
+ player[closest].whichskin++;
+ if(player[closest].whichskin>9)player[closest].whichskin=0;
+ if(player[closest].whichskin>2&&player[closest].creature==wolftype)player[closest].whichskin=0;
+
+ 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){
for(i=0;i<player[closest].numclothes;i++){
detailtogglekeydown=1;
}
- if(IsKeyDown(theKeyMap, MAC_O_KEY)&&IsKeyDown(theKeyMap, MAC_SHIFT_KEY)&&debugmode){
+ if(Input::isKeyDown(SDLK_o)&&Input::isKeyDown(SDLK_LSHIFT)&&debugmode){
int closest=-1;
float closestdist=-1;
float distance;
detailtogglekeydown=1;
}
- if(!IsKeyDown(theKeyMap, MAC_X_KEY)){
+ if(!Input::isKeyDown(SDLK_x)){
detailtogglekeydown=0;
}
- if(IsKeyDown(theKeyMap, MAC_B_KEY)&&!slomotogglekeydown&&!IsKeyDown(theKeyMap, MAC_SHIFT_KEY)&&debugmode){
+ if(Input::isKeyDown(SDLK_b)&&!slomotogglekeydown&&!Input::isKeyDown(SDLK_LSHIFT)&&debugmode){
slomo=1-slomo;
slomodelay=1000;
slomotogglekeydown=1;
}
- if(((IsKeyDown(theKeyMap, MAC_I_KEY)&&!IsKeyDown(theKeyMap, MAC_SHIFT_KEY))/*||buttons[1]*/)&&!explodetogglekeydown&&debugmode){
+ if(((Input::isKeyDown(SDLK_i)&&!Input::isKeyDown(SDLK_LSHIFT)))&&!explodetogglekeydown&&debugmode){
int closest=-1;
float closestdist=-1;
float distance;
flatvelocity2.z+=(float)(abs(Random()%100)-50)/10;
headspurtdirection=player[closest].skeleton.joints[player[closest].skeleton.jointlabels[head]].position-player[closest].skeleton.joints[player[closest].skeleton.jointlabels[neck]].position;
Normalise(&headspurtdirection);
- sprites.MakeSprite(bloodflamesprite, flatfacing2,flatvelocity2, 1,1,1, .6, 1);
+ Sprite::MakeSprite(bloodflamesprite, flatfacing2,flatvelocity2, 1,1,1, .6, 1);
flatvelocity2+=headspurtdirection*8;
- sprites.MakeSprite(bloodsprite, flatfacing2,flatvelocity2/2, 1,1,1, .16, 1);
+ Sprite::MakeSprite(bloodsprite, flatfacing2,flatvelocity2/2, 1,1,1, .16, 1);
}
- sprites.MakeSprite(cloudsprite, flatfacing2,flatvelocity2*0, .6,0,0, 1, .5);
+ Sprite::MakeSprite(cloudsprite, flatfacing2,flatvelocity2*0, .6,0,0, 1, .5);
float gLoc[3];
float vel[3];
explodetogglekeydown=1;
}
- if(((IsKeyDown(theKeyMap, MAC_I_KEY)&&IsKeyDown(theKeyMap, MAC_SHIFT_KEY))/*||buttons[2]*/)&&!explodetogglekeydown&&debugmode){
+ if(((Input::isKeyDown(SDLK_i)&&Input::isKeyDown(SDLK_LSHIFT)))&&!explodetogglekeydown&&debugmode){
int closest=-1;
float closestdist=-1;
float distance;
flatvelocity2.x+=(float)(abs(Random()%100)-50)/10;
flatvelocity2.y+=(float)(abs(Random()%100)-50)/10;
flatvelocity2.z+=(float)(abs(Random()%100)-50)/10;
- sprites.MakeSprite(bloodflamesprite, flatfacing2,flatvelocity2, 1,1,1, 3, 1);
- sprites.MakeSprite(bloodsprite, flatfacing2,flatvelocity2, 1,1,1, .3, 1);
- sprites.MakeSprite(cloudsprite, flatfacing2,flatvelocity2*0, .6,0,0, 1, .5);
+ Sprite::MakeSprite(bloodflamesprite, flatfacing2,flatvelocity2, 1,1,1, 3, 1);
+ Sprite::MakeSprite(bloodsprite, flatfacing2,flatvelocity2, 1,1,1, .3, 1);
+ Sprite::MakeSprite(cloudsprite, flatfacing2,flatvelocity2*0, .6,0,0, 1, .5);
}
for(i=0;i<player[closest].skeleton.num_joints; i++){
flatvelocity2.x+=(float)(abs(Random()%100)-50)/10;
flatvelocity2.y+=(float)(abs(Random()%100)-50)/10;
flatvelocity2.z+=(float)(abs(Random()%100)-50)/10;
- sprites.MakeSprite(bloodflamesprite, flatfacing2,flatvelocity2, 1,1,1, 3, 1);
- sprites.MakeSprite(bloodsprite, flatfacing2,flatvelocity2, 1,1,1, .4, 1);
+ Sprite::MakeSprite(bloodflamesprite, flatfacing2,flatvelocity2, 1,1,1, 3, 1);
+ Sprite::MakeSprite(bloodsprite, flatfacing2,flatvelocity2, 1,1,1, .4, 1);
}
for(i=0;i<player[closest].skeleton.num_joints; i++){
flatvelocity2.x+=(float)(abs(Random()%100)-50)/10;
flatvelocity2.y+=(float)(abs(Random()%100)-50)/10;
flatvelocity2.z+=(float)(abs(Random()%100)-50)/10;
- sprites.MakeSprite(bloodflamesprite, flatfacing2,flatvelocity2*2, 1,1,1, 3, 1);
- sprites.MakeSprite(bloodsprite, flatfacing2,flatvelocity2*2, 1,1,1, .4, 1);
+ Sprite::MakeSprite(bloodflamesprite, flatfacing2,flatvelocity2*2, 1,1,1, 3, 1);
+ Sprite::MakeSprite(bloodsprite, flatfacing2,flatvelocity2*2, 1,1,1, .4, 1);
}
for(i=0;i<player[closest].skeleton.num_joints; i++){
flatvelocity2.x+=(float)(abs(Random()%100)-50)/10;
flatvelocity2.y+=(float)(abs(Random()%100)-50)/10;
flatvelocity2.z+=(float)(abs(Random()%100)-50)/10;
- sprites.MakeSprite(bloodflamesprite, flatfacing2,flatvelocity2*2, 1,1,1, 3, 1);
- sprites.MakeSprite(bloodsprite, flatfacing2,flatvelocity2*2, 1,1,1, .4, 1);
+ Sprite::MakeSprite(bloodflamesprite, flatfacing2,flatvelocity2*2, 1,1,1, 3, 1);
+ Sprite::MakeSprite(bloodsprite, flatfacing2,flatvelocity2*2, 1,1,1, .4, 1);
}
XYZ temppos;
explodetogglekeydown=1;
}
- if(!IsKeyDown(theKeyMap, MAC_I_KEY)){
+ if(!Input::isKeyDown(SDLK_i)){
explodetogglekeydown=0;
}
- /*
- 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" );
-
- fwrite( &player[0].coords, 1, sizeof(XYZ), tfile );
- fwrite( &player[0].rotation, 1, sizeof(float), tfile );
- fwrite( &player[0].targetrotation, 1, sizeof(float), tfile );
- fwrite( &player[0].num_weapons, 1, sizeof(int), tfile );
- for(j=0;j<player[0].num_weapons;j++){
- fwrite( &weapons.type[player[0].weaponids[j]], 1, sizeof(int), tfile );
- }
- fwrite( &environment, 1, sizeof(int), tfile );
-
- fwrite( &objects.numobjects, 1, sizeof(int), tfile );
- fwrite( &objects.type, 1, sizeof(int)*objects.numobjects, tfile );
- fwrite( &objects.rotation, 1, sizeof(float)*objects.numobjects, tfile );
- fwrite( &objects.position, 1, sizeof(XYZ)*objects.numobjects, tfile );
- fwrite( &objects.scale, 1, sizeof(float)*objects.numobjects, tfile );
-
- fwrite( &numplayers, 1, sizeof(int), tfile );
- if(numplayers>1&&numplayers<maxplayers)
- for(i=1;i<numplayers;i++){
- fwrite( &player[i].coords, 1, sizeof(XYZ), tfile );
- fwrite( &player[i].num_weapons, 1, sizeof(int), tfile );
- for(j=0;j<player[i].num_weapons;j++){
- fwrite( &weapons.type[player[i].weaponids[j]], 1, sizeof(int), tfile );
- }
- if(player[i].numwaypoints<30){
- fwrite( &player[i].numwaypoints, 1, sizeof(int), tfile );
- fwrite( &player[i].waypoints, 1, sizeof(XYZ)*player[i].numwaypoints, tfile );
- fwrite( &player[i].waypoint, 1, sizeof(int), tfile );
- //fwrite( &player[i].jumppath, 1, sizeof(bool), tfile );
- }
- else{
- player[i].numwaypoints=0;
- player[i].waypoint=0;
- fwrite( &player[i].numwaypoints, 1, sizeof(int), tfile );
- fwrite( &player[i].waypoint, 1, sizeof(int), tfile );
- fwrite( &player[i].waypoint, 1, sizeof(int), tfile );
- }
- }
-
- fclose(tfile);
-
- slomotogglekeydown=1;
- }*/
-
- if(!IsKeyDown(theKeyMap, MAC_B_KEY)&&!IsKeyDown(theKeyMap, MAC_F_KEY)&&!IsKeyDown(theKeyMap, MAC_K_KEY)&&!IsKeyDown(theKeyMap, MAC_S_KEY)){
+ if(!Input::isKeyDown(SDLK_b)&&!Input::isKeyDown(SDLK_f)&&!Input::isKeyDown(SDLK_k)&&!Input::isKeyDown(SDLK_s)){
slomotogglekeydown=0;
}
- if(IsKeyDown(theKeyMap, MAC_F_KEY)&&!slomotogglekeydown&&debugmode){
+ if(Input::isKeyDown(SDLK_f)&&!slomotogglekeydown&&debugmode){
player[0].onfire=1-player[0].onfire;
if(player[0].onfire){
player[0].CatchFire();
}
slomotogglekeydown=1;
}
- /*
- if(IsKeyDown(theKeyMap, MAC_L_KEY)){
- if(player[0].bleeding<=0)
- player[0].DoBlood(1,255);
- }*/
-
- if(IsKeyDown(theKeyMap, MAC_DELETE_KEY)&&editorenabled&&!drawmodetogglekeydown&&IsKeyDown(theKeyMap, MAC_SHIFT_KEY)){
+ if(Input::isKeyDown(SDLK_DELETE)&&editorenabled&&!drawmodetogglekeydown&&Input::isKeyDown(SDLK_LSHIFT)){
int closest=-1;
float closestdist=-1;
float distance;
drawmodetogglekeydown=1;
}
- if(IsKeyDown(theKeyMap, MAC_DELETE_KEY)&&editorenabled&&!drawmodetogglekeydown&&IsKeyDown(theKeyMap, MAC_CONTROL_KEY)){
+ if(Input::isKeyDown(SDLK_DELETE)&&editorenabled&&!drawmodetogglekeydown&&Input::isKeyDown(SDLK_LCTRL)){
int closest=-1;
float closestdist=-1;
float distance;
drawmodetogglekeydown=1;
}
- if(IsKeyDown(theKeyMap, MAC_M_KEY)&&!drawmodetogglekeydown&&!IsKeyDown(theKeyMap, MAC_SHIFT_KEY)&&editorenabled&&debugmode){
+ if(Input::isKeyDown(SDLK_m)&&!drawmodetogglekeydown&&!Input::isKeyDown(SDLK_LSHIFT)&&editorenabled&&debugmode){
//drawmode++;
//if(drawmode>2)drawmode=0;
if(objects.numobjects<max_objects-1){
drawmodetogglekeydown=1;
}
- if(IsKeyDown(theKeyMap, MAC_P_KEY)&&!drawmodetogglekeydown&&!IsKeyDown(theKeyMap, MAC_SHIFT_KEY)&&!IsKeyDown(theKeyMap, MAC_CONTROL_KEY)&&editorenabled){
+ if(Input::isKeyDown(SDLK_p)&&!drawmodetogglekeydown&&!Input::isKeyDown(SDLK_LSHIFT)&&!Input::isKeyDown(SDLK_LCTRL)&&editorenabled){
if(numplayers<maxplayers-1){
player[numplayers].scale=.2*5*player[0].scale;
player[numplayers].creature=rabbittype;
player[numplayers].proportionlegs.z=0;
}
- player[numplayers].tempanimation.Load((char *)":Data:Animations:Tempanim",0,0);
+ player[numplayers].tempanimation.Load((char *)"Tempanim",0,0);
player[numplayers].damagetolerance=200;
drawmodetogglekeydown=1;
}
- if(IsKeyDown(theKeyMap, MAC_P_KEY)&&!drawmodetogglekeydown&&IsKeyDown(theKeyMap, MAC_SHIFT_KEY)&&editorenabled){
+ if(Input::isKeyDown(SDLK_p)&&!drawmodetogglekeydown&&Input::isKeyDown(SDLK_LSHIFT)&&editorenabled){
if(player[numplayers-1].numwaypoints<90){
player[numplayers-1].waypoints[player[numplayers-1].numwaypoints]=player[0].coords;
player[numplayers-1].waypointtype[player[numplayers-1].numwaypoints]=editorpathtype;
drawmodetogglekeydown=1;
}
- if(IsKeyDown(theKeyMap, MAC_P_KEY)&&!drawmodetogglekeydown&&IsKeyDown(theKeyMap, MAC_CONTROL_KEY)&&editorenabled){
+ if(Input::isKeyDown(SDLK_p)&&!drawmodetogglekeydown&&Input::isKeyDown(SDLK_LCTRL)&&editorenabled){
if(numpathpoints<30){
bool connected,alreadyconnected;
connected=0;
drawmodetogglekeydown=1;
}
- if(IsKeyDown(theKeyMap, MAC_PERIOD_KEY)&&!drawmodetogglekeydown&&editorenabled){
+ if(Input::isKeyDown(SDLK_PERIOD)&&!drawmodetogglekeydown&&editorenabled){
pathpointselected++;
if(pathpointselected>=numpathpoints)pathpointselected=-1;
drawmodetogglekeydown=1;
}
- if(IsKeyDown(theKeyMap, MAC_COMMA_KEY)&&!IsKeyDown(theKeyMap, MAC_SHIFT_KEY)&&!drawmodetogglekeydown&&editorenabled){
+ if(Input::isKeyDown(SDLK_COMMA)&&!Input::isKeyDown(SDLK_LSHIFT)&&!drawmodetogglekeydown&&editorenabled){
pathpointselected--;
- if(pathpointselected<=-2)pathpointselected=numpathpoints-1;
+ if(pathpointselected<=-2)
+ pathpointselected=numpathpoints-1;
drawmodetogglekeydown=1;
}
- if(IsKeyDown(theKeyMap, MAC_COMMA_KEY)&&IsKeyDown(theKeyMap, MAC_SHIFT_KEY)&&!drawmodetogglekeydown&&editorenabled){
+ if(Input::isKeyDown(SDLK_COMMA)&&Input::isKeyDown(SDLK_LSHIFT)&&!drawmodetogglekeydown&&editorenabled){
if(pathpointselected!=-1){
numpathpoints--;
pathpoint[pathpointselected]=pathpoint[numpathpoints];
drawmodetogglekeydown=1;
}
- if(IsKeyDown(theKeyMap, MAC_M_KEY)&&!drawmodetogglekeydown&&IsKeyDown(theKeyMap, MAC_SHIFT_KEY)&&debugmode){
+ if(Input::isKeyDown(SDLK_m)&&!drawmodetogglekeydown&&Input::isKeyDown(SDLK_LSHIFT)&&debugmode){
editorenabled=1-editorenabled;
if(editorenabled){
player[0].damagetolerance=100000;
- player[0].damage=0;
- player[0].superpermanentdamage=0;
- player[0].bloodloss=0;
- player[0].deathbleeding=0;
- }
- if(!editorenabled){
+ } else {
player[0].damagetolerance=200;
- player[0].damage=0;
- player[0].permanentdamage=0;
- player[0].superpermanentdamage=0;
- player[0].bloodloss=0;
- player[0].deathbleeding=0;
}
+ player[0].damage=0; // these lines were in both if and else, but I think they would better fit in the if
+ player[0].permanentdamage=0;
+ player[0].superpermanentdamage=0;
+ player[0].bloodloss=0;
+ player[0].deathbleeding=0;
drawmodetogglekeydown=1;
}
- if(IsKeyDown(theKeyMap, MAC_ARROW_LEFT_KEY)&&!drawmodetogglekeydown&&editorenabled&&IsKeyDown(theKeyMap, MAC_SHIFT_KEY)&&!IsKeyDown(theKeyMap, MAC_CONTROL_KEY)){
+ if(Input::isKeyDown(SDLK_LEFT)&&!drawmodetogglekeydown&&editorenabled&&Input::isKeyDown(SDLK_LSHIFT)&&!Input::isKeyDown(SDLK_LCTRL)){
editortype--;
if(editortype==treeleavestype||editortype==10)editortype--;
if(editortype<0)editortype=firetype;
drawmodetogglekeydown=1;
}
- if(IsKeyDown(theKeyMap, MAC_ARROW_RIGHT_KEY)&&!drawmodetogglekeydown&&editorenabled&&IsKeyDown(theKeyMap, MAC_SHIFT_KEY)&&!IsKeyDown(theKeyMap, MAC_CONTROL_KEY)){
+ if(Input::isKeyDown(SDLK_RIGHT)&&!drawmodetogglekeydown&&editorenabled&&Input::isKeyDown(SDLK_LSHIFT)&&!Input::isKeyDown(SDLK_LCTRL)){
editortype++;
if(editortype==treeleavestype||editortype==10)editortype++;
if(editortype>firetype)editortype=0;
drawmodetogglekeydown=1;
}
- if(IsKeyDown(theKeyMap, MAC_ARROW_LEFT_KEY)&&editorenabled&&!IsKeyDown(theKeyMap, MAC_SHIFT_KEY)&&!IsKeyDown(theKeyMap, MAC_CONTROL_KEY)){
+ if(Input::isKeyDown(SDLK_LEFT)&&editorenabled&&!Input::isKeyDown(SDLK_LSHIFT)&&!Input::isKeyDown(SDLK_LCTRL)){
editorrotation-=multiplier*100;
if(editorrotation<-.01)editorrotation=-.01;
drawmodetogglekeydown=1;
}
- if(IsKeyDown(theKeyMap, MAC_ARROW_RIGHT_KEY)&&editorenabled&&!IsKeyDown(theKeyMap, MAC_SHIFT_KEY)&&!IsKeyDown(theKeyMap, MAC_CONTROL_KEY)){
+ if(Input::isKeyDown(SDLK_RIGHT)&&editorenabled&&!Input::isKeyDown(SDLK_LSHIFT)&&!Input::isKeyDown(SDLK_LCTRL)){
editorrotation+=multiplier*100;
drawmodetogglekeydown=1;
}
- if(IsKeyDown(theKeyMap, MAC_ARROW_UP_KEY)&&editorenabled&&!IsKeyDown(theKeyMap, MAC_CONTROL_KEY)){
+ if(Input::isKeyDown(SDLK_UP)&&editorenabled&&!Input::isKeyDown(SDLK_LCTRL)){
editorsize+=multiplier;
drawmodetogglekeydown=1;
}
- if(IsKeyDown(theKeyMap, MAC_ARROW_DOWN_KEY)&&editorenabled&&!IsKeyDown(theKeyMap, MAC_CONTROL_KEY)){
+ if(Input::isKeyDown(SDLK_DOWN)&&editorenabled&&!Input::isKeyDown(SDLK_LCTRL)){
editorsize-=multiplier;
if(editorsize<.1)editorsize=.1;
drawmodetogglekeydown=1;
}
- if(IsKeyDown(theKeyMap, MAC_ARROW_LEFT_KEY)&&!drawmodetogglekeydown&&editorenabled&&IsKeyDown(theKeyMap, MAC_SHIFT_KEY)&&IsKeyDown(theKeyMap, MAC_CONTROL_KEY)){
+ if(Input::isKeyDown(SDLK_LEFT)&&!drawmodetogglekeydown&&editorenabled&&Input::isKeyDown(SDLK_LSHIFT)&&Input::isKeyDown(SDLK_LCTRL)){
mapradius-=multiplier*10;
}
- if(IsKeyDown(theKeyMap, MAC_ARROW_RIGHT_KEY)&&!drawmodetogglekeydown&&editorenabled&&IsKeyDown(theKeyMap, MAC_SHIFT_KEY)&&IsKeyDown(theKeyMap, MAC_CONTROL_KEY)){
+ if(Input::isKeyDown(SDLK_RIGHT)&&!drawmodetogglekeydown&&editorenabled&&Input::isKeyDown(SDLK_LSHIFT)&&Input::isKeyDown(SDLK_LCTRL)){
mapradius+=multiplier*10;
}
- /*
- if(IsKeyDown(theKeyMap, MAC_ARROW_LEFT_KEY)&&editorenabled&&!IsKeyDown(theKeyMap, MAC_SHIFT_KEY)&&IsKeyDown(theKeyMap, MAC_CONTROL_KEY)){
- mapcenter.x+=multiplier*20;
- }
-
- if(IsKeyDown(theKeyMap, MAC_ARROW_RIGHT_KEY)&&editorenabled&&!IsKeyDown(theKeyMap, MAC_SHIFT_KEY)&&IsKeyDown(theKeyMap, MAC_CONTROL_KEY)){
- mapcenter.x-=multiplier*20;
- }
-
- if(IsKeyDown(theKeyMap, MAC_ARROW_UP_KEY)&&editorenabled&&IsKeyDown(theKeyMap, MAC_CONTROL_KEY)){
- mapcenter.z+=multiplier*20;
- }
-
- if(IsKeyDown(theKeyMap, MAC_ARROW_DOWN_KEY)&&editorenabled&&IsKeyDown(theKeyMap, MAC_CONTROL_KEY)){
- mapcenter.z-=multiplier*20;
- }
- */
- if(IsKeyDown(theKeyMap, MAC_ARROW_UP_KEY)&&editorenabled&&IsKeyDown(theKeyMap, MAC_CONTROL_KEY)){
+ if(Input::isKeyDown(SDLK_UP)&&editorenabled&&Input::isKeyDown(SDLK_LCTRL)){
editorrotation2+=multiplier*100;
}
- if(IsKeyDown(theKeyMap, MAC_ARROW_DOWN_KEY)&&editorenabled&&IsKeyDown(theKeyMap, MAC_CONTROL_KEY)){
+ if(Input::isKeyDown(SDLK_DOWN)&&editorenabled&&Input::isKeyDown(SDLK_LCTRL)){
editorrotation2-=multiplier*100;
if(editorrotation2<-.01)editorrotation2=-.01;
}
- if(IsKeyDown(theKeyMap, MAC_DELETE_KEY)&&editorenabled&&objects.numobjects&&!drawmodetogglekeydown&&!IsKeyDown(theKeyMap, MAC_SHIFT_KEY)){
+ if(Input::isKeyDown(SDLK_DELETE)&&editorenabled&&objects.numobjects&&!drawmodetogglekeydown&&!Input::isKeyDown(SDLK_LSHIFT)){
int closest=-1;
float closestdist=-1;
float distance;
}
- if(!IsKeyDown(theKeyMap, MAC_M_KEY)&&!IsKeyDown(theKeyMap, MAC_ARROW_LEFT_KEY)&&!IsKeyDown(theKeyMap, MAC_COMMA_KEY)&&!IsKeyDown(theKeyMap, MAC_PERIOD_KEY)&&!IsKeyDown(theKeyMap, MAC_ARROW_RIGHT_KEY)&&!IsKeyDown(theKeyMap, MAC_DELETE_KEY)&&!IsKeyDown(theKeyMap, MAC_P_KEY)){
+ if(!Input::isKeyDown(SDLK_m)&&!Input::isKeyDown(SDLK_LEFT)&&!Input::isKeyDown(SDLK_COMMA)&&!Input::isKeyDown(SDLK_PERIOD)&&!Input::isKeyDown(SDLK_RIGHT)&&!Input::isKeyDown(SDLK_DELETE)&&!Input::isKeyDown(SDLK_p)){
drawmodetogglekeydown=0;
}
- if(IsKeyDown(theKeyMap, MAC_N_KEY)&&!IsKeyDown(theKeyMap, MAC_CONTROL_KEY)&&!texturesizetogglekeydown&&debugmode){
+ if(Input::isKeyDown(SDLK_n)&&!Input::isKeyDown(SDLK_LCTRL)&&!texturesizetogglekeydown&&debugmode){
//if(!player[0].skeleton.free)player[0].damage+=500;
player[0].RagDoll(0);
//player[0].spurt=1;
texturesizetogglekeydown=1;
}
- if(IsKeyDown(theKeyMap, MAC_N_KEY)&&IsKeyDown(theKeyMap, MAC_CONTROL_KEY)&&!texturesizetogglekeydown&&debugmode){
+ if(Input::isKeyDown(SDLK_n)&&Input::isKeyDown(SDLK_LCTRL)&&!texturesizetogglekeydown&&debugmode){
int closest=-1;
float closestdist=-1;
//Attack
static bool playerrealattackkeydown=0;
- if(!buttons[0])oldbutton=0;
- if(!IsKeyDown(theKeyMap, attackkey))oldattackkey=0;
+ if(!Input::isKeyDown(MOUSEBUTTON1)&&!Input::isKeyDown(MOUSEBUTTON2))oldbutton=0;
+ if(!Input::isKeyDown(attackkey))oldattackkey=0;
if(oldattackkey)player[0].attackkeydown=0;
if(oldattackkey)playerrealattackkeydown=0;
- if(!oldattackkey)playerrealattackkeydown=IsKeyDown(theKeyMap, attackkey);
- if((player[0].parriedrecently<=0||player[0].weaponactive==-1)&&(!oldattackkey||(realthreat&&player[0].lastattack!=swordslashanim&&player[0].lastattack!=knifeslashstartanim&&player[0].lastattack!=staffhitanim&&player[0].lastattack!=staffspinhitanim)))player[0].attackkeydown=IsKeyDown(theKeyMap, attackkey);
- if(IsKeyDown(theKeyMap, attackkey)&&!oldattackkey&&!player[0].backkeydown){
+ if(!oldattackkey)playerrealattackkeydown=Input::isKeyDown(attackkey);
+ if((player[0].parriedrecently<=0||player[0].weaponactive==-1)&&(!oldattackkey||(realthreat&&player[0].lastattack!=swordslashanim&&player[0].lastattack!=knifeslashstartanim&&player[0].lastattack!=staffhitanim&&player[0].lastattack!=staffspinhitanim)))player[0].attackkeydown=Input::isKeyDown(attackkey);
+ if(Input::isKeyDown(attackkey)&&!oldattackkey&&!player[0].backkeydown){
for(k=0;k<numplayers;k++){
if((player[k].targetanimation==swordslashanim||player[k].targetanimation==staffhitanim||player[k].targetanimation==staffspinhitanim)&&player[0].currentanimation!=dodgebackanim&&!player[k].skeleton.free)
player[k].Reverse();
//pile
- /*
- XYZ tempdiff;
- XYZ tempoldpos;
- XYZ temp1,temp2;
- bool isgood;
- static float checkdelay;
- checkdelay-=multiplier;
- int m;
- static bool checkedcoll[maxplayers][maxplayers];
- static bool above[maxplayers];
-
- for(i=0;i<maxplayers;i++){
- for(j=0;j<maxplayers;j++){
- checkedcoll[i][j]=0;
- }
- }
-
- if(numplayers>1&&checkdelay<=0){
- checkdelay=.015;
- for(k=0;k<numplayers;k++){
- if(player[k].skeleton.free!=2)above[k]=-1;
-
- for(i=k;i<numplayers;i++){
- if(i==k)i++;
- if(i<numplayers)
- if(!checkedcoll[i][k]){
- checkedcoll[i][k]=1;
- checkedcoll[k][i]=1;
- if(player[i].skeleton.free&&player[k].skeleton.free)
- if(player[i].skeleton.free!=2||player[k].skeleton.free!=2)
- if(i!=k&&player[i].whichpatchx==player[k].whichpatchx&&player[i].whichpatchz==player[k].whichpatchz)
- if(player[i].coords.y>player[k].coords.y-3)
- if(player[i].coords.y<player[k].coords.y+3)
- if(player[i].coords.x>player[k].coords.x-3)
- if(player[i].coords.x<player[k].coords.x+3)
- if(player[i].coords.z>player[k].coords.z-3)
- if(player[i].coords.z<player[k].coords.z+3)
- if(findDistancefast(&player[i].coords,&player[k].coords)<3*((player[i].scale+player[k].scale)*2.5)*((player[i].scale+player[k].scale)*2.5)){
- int stuck,moving;
- if((player[i].skeleton.longdead>player[k].skeleton.longdead&&player[k].skeleton.free!=2)||player[i].skeleton.free==2){
- stuck=i;
- moving=k;
- }
- else
- {
- moving=i;
- stuck=k;
- }
- isgood=1;
-
- if(isgood){
- above[moving]=stuck;
- for(l=0;l<player[moving].skeleton.num_joints;l++){
- for(m=0;m<player[stuck].skeleton.num_joints;m++){
- while(findDistancefast(player[moving].skeleton.joints[l].position+player[moving].coords,player[stuck].skeleton.joints[m].position+player[stuck].coords)<.25)
- {
- player[moving].skeleton.joints[l].position.y+=.003;
- if(player[moving].skeleton.joints[l].velocity.y<-.05)player[moving].skeleton.joints[l].velocity.y+=.003/.015/2;
-
- }
- }
- }
- }
- }
- }
- }
- }
- }
-
- */
-
- if(!IsKeyDown(theKeyMap, MAC_N_KEY)){
+ if(!Input::isKeyDown(SDLK_n)){
texturesizetogglekeydown=0;
}
}
static bool respawnkeydown;
- if(!editorenabled&&(whichlevel!=-2&&(IsKeyDown(theKeyMap, MAC_Z_KEY)&&IsKeyDown(theKeyMap, MAC_COMMAND_KEY)&&debugmode&&!editorenabled)||(IsKeyDown(theKeyMap, jumpkey)&&!respawnkeydown&&!oldattackkey&&player[0].dead))){
+ if(!editorenabled&&(whichlevel!=-2&&(Input::isKeyDown(SDLK_z)&&Input::isKeyDown(SDLK_LMETA)&&debugmode&&!editorenabled)||(Input::isKeyDown(jumpkey)&&!respawnkeydown&&!oldattackkey&&player[0].dead))){
targetlevel=whichlevel;
loading=1;
leveltime=5;
}
- if(!IsKeyDown(theKeyMap, jumpkey))respawnkeydown=0;
- if(IsKeyDown(theKeyMap, jumpkey))respawnkeydown=1;
+ if(!Input::isKeyDown(jumpkey))respawnkeydown=0;
+ if(Input::isKeyDown(jumpkey))respawnkeydown=1;
- if(whichlevel!=-2&&IsKeyDown(theKeyMap, MAC_K_KEY)&&IsKeyDown(theKeyMap, MAC_SHIFT_KEY)&&!slomotogglekeydown&&debugmode&&!editorenabled){
+ if(whichlevel!=-2&&Input::isKeyDown(SDLK_k)&&Input::isKeyDown(SDLK_LSHIFT)&&!slomotogglekeydown&&debugmode&&!editorenabled){
targetlevel++;
if(targetlevel>numchallengelevels-1)targetlevel=0;
loading=1;
leveltime=5;
slomotogglekeydown=1;
}
-
- /*
- if(IsKeyDown(theKeyMap, MAC_Z_KEY)){
- //Respawn
- OPENAL_SetPaused(channels[whooshsound], true);
- changedelay=0;
- for(k=0;k<numplayers;k++){
- player[k].dead=0;
- player[k].damage=0;
- player[k].permanentdamage=0;
- if(player[k].skeleton.free==2)player[k].skeleton.free=1;
- player[k].aitype=passivetype;
- }
- player[0].aitype=playercontrolled;
- }
- */
-
static bool movekey;
static bool connected;
- /*player[0].forwardkeydown=IsKeyDown(theKeyMap, MAC_W_KEY);
- player[0].leftkeydown=IsKeyDown(theKeyMap, MAC_A_KEY);
- player[0].backkeydown=IsKeyDown(theKeyMap, MAC_S_KEY);
- player[0].rightkeydown=IsKeyDown(theKeyMap, MAC_D_KEY);
- player[0].jumpkeydown=IsKeyDown(theKeyMap, MAC_SPACE_KEY);
- player[0].crouchkeydown=IsKeyDown(theKeyMap, MAC_SHIFT_KEY);*/
-
- //if(!player[0].crouchkeydown)player[0].crouchkeydown=IsKeyDown(theKeyMap, MAC_CONTROL_KEY);
-
+
for(int i=0;i<numplayers;i++){
if(!player[i].skeleton.free){
oldtargetrotation=player[i].targetrotation;
else player[i].targetrotation-=90;
}
}
- /*if(findDistancefast(&player[i].coords,&weapons.position[player[i].ally])<3){
- if(abs(Random()%6)){
- player[i].crouchkeydown=1;
- if(!findDistancefast(&player[i].coords,&weapons.position[player[i].ally])<1){
- if(player[i].isRun()){
- player[i].targetframe=0;
- player[i].target=0;
- player[i].targetanimation=sneakanim;
- }
- }
- else player[i].forwardkeydown=0;
- }
- else player[i].crouchkeydown=0;
- }
- else player[i].crouchkeydown=0;*/
}
player[i].leftkeydown=0;
player[i].throwkeydown=0;
if(player[i].avoidcollided>.8&&!player[i].jumpkeydown&&player[i].collided<.8)player[i].targetrotation+=90*(player[i].whichdirection*2-1);
- /*for(j=0;j<numplayers;j++){
- if(player[j].victim->id==i&&(player[j].targetanimation==spinkickanim&&player[j].targetframe<3)){
- player[i].crouchkeydown=1;
- }
- }*/
if(Random()%2==0/*||player[0].weaponactive!=-1*/||player[i].weaponactive!=-1||player[i].creature==wolftype)player[i].attackkeydown=1;
else player[i].attackkeydown=0;
if((player[i].isRun())&&Random()%6&&findDistancefast(&player[i].coords,&player[0].coords)>7)player[i].attackkeydown=0;
- //if(player[i].attackkeydown&&findDistancefast(&player[i].coords,&player[0].coords)<3&&player[i].targetanimation!=runanim&&!player[0].skeleton.free)player[i].crouchkeydown=1;
- /*if(player[0].targetanimation==rabbitkickanim&&!player[0].skeleton.free){
- player[i].attackkeydown=0;
- if(player[i].isIdle())player[i].crouchkeydown=1;
- player[i].forwardkeydown=0;
- player[i].aiupdatedelay=.02;
- }*/
if(player[i].aitype!=playercontrolled&&(player[i].isIdle()||player[i].isCrouch()||player[i].isRun())){
target=-2;
footpoint=weapons.position[k];
if(player[i].victim->weaponstuck!=-1){
if(player[i].victim->weaponids[player[i].victim->weaponstuck]==k){
- if(bloodtoggle)sprites.MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .8, .3);
+ if(bloodtoggle)Sprite::MakeSprite(cloudimpactsprite, footpoint,footvel, 1,0,0, .8, .3);
weapons.bloody[k]=2;
weapons.blooddrip[k]=5;
player[i].victim->weaponstuck=-1;
}
objects.DoStuff();
- /*
- player[0].righthandmorphstart=0;
- player[0].righthandmorphend=1;
- player[0].lefthandmorphstart=0;
- player[0].lefthandmorphend=1;
- player[0].headmorphstart=0;
- player[0].headmorphend=2;*/
-
- /*
- if(IsKeyDown( theKeyMap, MAC_P_KEY )){
- if(player[0].righthandmorphend!=1)player[0].righthandmorphness=0;
- player[0].righthandmorphend=1;
- player[0].targetrighthandmorphness=1;
-
- if(player[0].lefthandmorphend!=0)player[0].lefthandmorphness=0;
- player[0].lefthandmorphend=0;
- player[0].targetlefthandmorphness=1;
-
- if(player[0].headmorphend!=2)player[0].headmorphness=0;
- player[0].headmorphend=2;
- player[0].targetheadmorphness=1;
- }
- if(IsKeyDown( theKeyMap, MAC_L_KEY )){
- if(player[0].righthandmorphend!=0)player[0].righthandmorphness=0;
- player[0].righthandmorphend=0;
- player[0].targetrighthandmorphness=1;
-
- if(player[0].lefthandmorphend!=1)player[0].lefthandmorphness=0;
- player[0].lefthandmorphend=1;
- player[0].targetlefthandmorphness=1;
-
- if(player[0].headmorphend!=0)player[0].headmorphness=0;
- player[0].headmorphend=0;
- player[0].targetheadmorphness=1;
- }
- */
- if(numenvsounds!=0)
- for(j=numenvsounds-1;j>=0;j--){
- envsoundlife[j]-=multiplier;
- if(envsoundlife[j]<0){
- numenvsounds--;
- envsoundlife[j]=envsoundlife[numenvsounds];
- envsound[j]=envsound[numenvsounds];
+
+ for(j=numenvsounds-1;j>=0;j--){
+ envsoundlife[j]-=multiplier;
+ if(envsoundlife[j]<0){
+ numenvsounds--;
+ envsoundlife[j]=envsoundlife[numenvsounds];
+ envsound[j]=envsound[numenvsounds];
+ }
+ }
+ if(slomo) OPENAL_SetFrequency(OPENAL_ALL, slomofreq);
+ else OPENAL_SetFrequency(OPENAL_ALL, 22050);
+
+ if(tutoriallevel==1){
+ XYZ temp;
+ XYZ temp2;
+ XYZ temp3;
+ XYZ oldtemp;
+ XYZ oldtemp2;
+ temp.x=1011;
+ temp.y=84;
+ temp.z=491;
+ temp2.x=1025;
+ temp2.y=75;
+ temp2.z=447;
+ temp3.x=1038;
+ temp3.y=76;
+ temp3.z=453;
+ oldtemp=temp;
+ oldtemp2=temp2;
+ if(tutorialstage>=51)
+ if(findDistancefast(&temp,&player[0].coords)>=findDistancefast(&temp,&temp2)-1||findDistancefast(&temp3,&player[0].coords)<4){
+ OPENAL_StopSound(OPENAL_ALL); // hack...OpenAL renderer isn't stopping music after tutorial goes to level menu...
+ OPENAL_SetFrequency(OPENAL_ALL, 0.001);
+
+ PlayStreamEx( stream_music3, strm[stream_music3], NULL, true);
+ OPENAL_SetPaused(channels[stream_music3], false);
+ OPENAL_SetVolume(channels[stream_music3], 256);
+
+ gameon=0;
+ mainmenu=5;
+
+ fireSound();
+
+ flash();
}
- }
- if(!slomo)OPENAL_SetFrequency(OPENAL_ALL, 22050);
- if(slomo)OPENAL_SetFrequency(OPENAL_ALL, slomofreq);
-
- if(tutoriallevel==1){
- XYZ temp;
- XYZ temp2;
- XYZ temp3;
- XYZ oldtemp;
- XYZ oldtemp2;
- temp.x=1011;
- temp.y=84;
- temp.z=491;
- temp2.x=1025;
- temp2.y=75;
- temp2.z=447;
- temp3.x=1038;
- temp3.y=76;
- temp3.z=453;
- oldtemp=temp;
- oldtemp2=temp2;
- if(tutorialstage>=51)
+ if(tutorialstage<51)
if(findDistancefast(&temp,&player[0].coords)>=findDistancefast(&temp,&temp2)-1||findDistancefast(&temp3,&player[0].coords)<4){
- OPENAL_StopSound(OPENAL_ALL); // hack...OpenAL renderer isn't stopping music after tutorial goes to level menu...
- OPENAL_SetFrequency(OPENAL_ALL, 0.001);
-
- PlayStreamEx( stream_music3, strm[stream_music3], NULL, true);
- OPENAL_SetPaused(channels[stream_music3], false);
- OPENAL_SetVolume(channels[stream_music3], 256);
-
- gameon=0;
- mainmenu=5;
-
- float gLoc[3]={0,0,0};
- float vel[3]={0,0,0};
- OPENAL_Sample_SetMinMaxDistance(samp[fireendsound], 9999.0f, 99999.0f);
+ float gLoc[3];
+ float vel[3];
+ gLoc[0]=player[0].coords.x;
+ gLoc[1]=player[0].coords.y;
+ gLoc[2]=player[0].coords.z;
+ vel[0]=0;
+ vel[1]=0;
+ vel[2]=0;
PlaySoundEx( fireendsound, samp[fireendsound], NULL, true);
OPENAL_3D_SetAttributes(channels[fireendsound], gLoc, vel);
OPENAL_SetVolume(channels[fireendsound], 256);
OPENAL_SetPaused(channels[fireendsound], false);
- OPENAL_Sample_SetMinMaxDistance(samp[fireendsound], 8.0f, 2000.0f);
- flashr=1;
- flashg=0;
- flashb=0;
- flashamount=1;
- flashdelay=1;
+ player[0].coords=(oldtemp+oldtemp2)/2;
+
+ flash();
}
- if(tutorialstage<51)
- if(findDistancefast(&temp,&player[0].coords)>=findDistancefast(&temp,&temp2)-1||findDistancefast(&temp3,&player[0].coords)<4){
+ if(tutorialstage>=14&&tutorialstage<50)
+ if(findDistancefast(&temp,&player[1].coords)>=findDistancefast(&temp,&temp2)-1||findDistancefast(&temp3,&player[1].coords)<4){
float gLoc[3];
float vel[3];
- gLoc[0]=player[0].coords.x;
- gLoc[1]=player[0].coords.y;
- gLoc[2]=player[0].coords.z;
+ gLoc[0]=player[1].coords.x;
+ gLoc[1]=player[1].coords.y;
+ gLoc[2]=player[1].coords.z;
vel[0]=0;
vel[1]=0;
vel[2]=0;
OPENAL_SetVolume(channels[fireendsound], 256);
OPENAL_SetPaused(channels[fireendsound], false);
- player[0].coords=(oldtemp+oldtemp2)/2;
-
- flashr=1;
- flashg=1;
- flashb=1;
- flashamount=1;
- flashdelay=1;
- }
- if(tutorialstage>=14&&tutorialstage<50)
- if(findDistancefast(&temp,&player[1].coords)>=findDistancefast(&temp,&temp2)-1||findDistancefast(&temp3,&player[1].coords)<4){
- float gLoc[3];
- float vel[3];
- gLoc[0]=player[1].coords.x;
- gLoc[1]=player[1].coords.y;
- gLoc[2]=player[1].coords.z;
- vel[0]=0;
- vel[1]=0;
- vel[2]=0;
- PlaySoundEx( fireendsound, samp[fireendsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[fireendsound], gLoc, vel);
- OPENAL_SetVolume(channels[fireendsound], 256);
- OPENAL_SetPaused(channels[fireendsound], false);
-
- for(int i=0;i<player[1].skeleton.num_joints;i++){
- if(Random()%2==0){
- if(!player[1].skeleton.free)temp2=(player[1].coords-player[1].oldcoords)/multiplier/2;//velocity/2;
- if(player[1].skeleton.free)temp2=player[1].skeleton.joints[i].velocity*player[1].scale/2;
- if(!player[1].skeleton.free)temp=DoRotation(DoRotation(DoRotation(player[1].skeleton.joints[i].position,0,0,player[1].tilt),player[1].tilt2,0,0),0,player[1].rotation,0)*player[1].scale+player[1].coords;
- if(player[1].skeleton.free)temp=player[1].skeleton.joints[i].position*player[1].scale+player[1].coords;
- sprites.MakeSprite(breathsprite, temp,temp2, 1,1,1, .6+(float)abs(Random()%100)/200-.25, 1);
- }
+ for(int i=0;i<player[1].skeleton.num_joints;i++){
+ if(Random()%2==0){
+ if(!player[1].skeleton.free)temp2=(player[1].coords-player[1].oldcoords)/multiplier/2;//velocity/2;
+ if(player[1].skeleton.free)temp2=player[1].skeleton.joints[i].velocity*player[1].scale/2;
+ if(!player[1].skeleton.free)temp=DoRotation(DoRotation(DoRotation(player[1].skeleton.joints[i].position,0,0,player[1].tilt),player[1].tilt2,0,0),0,player[1].rotation,0)*player[1].scale+player[1].coords;
+ if(player[1].skeleton.free)temp=player[1].skeleton.joints[i].position*player[1].scale+player[1].coords;
+ Sprite::MakeSprite(breathsprite, temp,temp2, 1,1,1, .6+(float)abs(Random()%100)/200-.25, 1);
}
+ }
- player[1].coords=(oldtemp+oldtemp2)/2;
- for(int i=0;i<player[1].skeleton.num_joints;i++){
- player[1].skeleton.joints[i].velocity=0;
- if(Random()%2==0){
- if(!player[1].skeleton.free)temp2=(player[1].coords-player[1].oldcoords)/multiplier/2;//velocity/2;
- if(player[1].skeleton.free)temp2=player[1].skeleton.joints[i].velocity*player[1].scale/2;
- if(!player[1].skeleton.free)temp=DoRotation(DoRotation(DoRotation(player[1].skeleton.joints[i].position,0,0,player[1].tilt),player[1].tilt2,0,0),0,player[1].rotation,0)*player[1].scale+player[1].coords;
- if(player[1].skeleton.free)temp=player[1].skeleton.joints[i].position*player[1].scale+player[1].coords;
- sprites.MakeSprite(breathsprite, temp,temp2, 1,1,1, .6+(float)abs(Random()%100)/200-.25, 1);
- }
+ player[1].coords=(oldtemp+oldtemp2)/2;
+ for(int i=0;i<player[1].skeleton.num_joints;i++){
+ player[1].skeleton.joints[i].velocity=0;
+ if(Random()%2==0){
+ if(!player[1].skeleton.free)temp2=(player[1].coords-player[1].oldcoords)/multiplier/2;//velocity/2;
+ if(player[1].skeleton.free)temp2=player[1].skeleton.joints[i].velocity*player[1].scale/2;
+ if(!player[1].skeleton.free)temp=DoRotation(DoRotation(DoRotation(player[1].skeleton.joints[i].position,0,0,player[1].tilt),player[1].tilt2,0,0),0,player[1].rotation,0)*player[1].scale+player[1].coords;
+ if(player[1].skeleton.free)temp=player[1].skeleton.joints[i].position*player[1].scale+player[1].coords;
+ Sprite::MakeSprite(breathsprite, temp,temp2, 1,1,1, .6+(float)abs(Random()%100)/200-.25, 1);
}
}
- }
+ }
+ }
- //3d sound
- static float gLoc[3];
- gLoc[0]=viewer.x;
- gLoc[1]=viewer.y;
- gLoc[2]=viewer.z;
- static float vel[3];
- vel[0]=(viewer.x-oldviewer.x)/multiplier;
- vel[1]=(viewer.y-oldviewer.y)/multiplier;
- vel[2]=(viewer.z-oldviewer.z)/multiplier;
+ //3d sound
+ static float gLoc[3];
+ gLoc[0]=viewer.x;
+ gLoc[1]=viewer.y;
+ gLoc[2]=viewer.z;
+ static float vel[3];
+ vel[0]=(viewer.x-oldviewer.x)/multiplier;
+ vel[1]=(viewer.y-oldviewer.y)/multiplier;
+ vel[2]=(viewer.z-oldviewer.z)/multiplier;
- //Set orientation with forward and up vectors
- static XYZ upvector;
- upvector=0;
- upvector.z=-1;
+ //Set orientation with forward and up vectors
+ static XYZ upvector;
+ upvector=0;
+ upvector.z=-1;
- upvector=DoRotation(upvector,-rotation2+90,0,0);
- upvector=DoRotation(upvector,0,0-rotation,0);
+ upvector=DoRotation(upvector,-rotation2+90,0,0);
+ upvector=DoRotation(upvector,0,0-rotation,0);
- facing=0;
- facing.z=-1;
+ facing=0;
+ facing.z=-1;
- facing=DoRotation(facing,-rotation2,0,0);
- facing=DoRotation(facing,0,0-rotation,0);
+ facing=DoRotation(facing,-rotation2,0,0);
+ facing=DoRotation(facing,0,0-rotation,0);
- static float ori[6];
- ori[0] = -facing.x;
- ori[1] = facing.y;
- ori[2] = -facing.z;
- ori[3] = -upvector.x;
- ori[4] = upvector.y;
- ori[5] = -upvector.z;
+ static float ori[6];
+ ori[0] = -facing.x;
+ ori[1] = facing.y;
+ ori[2] = -facing.z;
+ ori[3] = -upvector.x;
+ ori[4] = upvector.y;
+ ori[5] = -upvector.z;
- OPENAL_3D_Listener_SetAttributes(&gLoc[0], &vel[0], ori[0], ori[1], ori[2], ori[3], ori[4], ori[5]);
- OPENAL_Update();
+ OPENAL_3D_Listener_SetAttributes(&gLoc[0], &vel[0], ori[0], ori[1], ori[2], ori[3], ori[4], ori[5]);
+ OPENAL_Update();
- oldviewer=viewer;
+ oldviewer=viewer;
}
}
- if(IsKeyDown(theKeyMap, MAC_F1_KEY)&&!freezetogglekeydown){
+ if(Input::isKeyDown(SDLK_F1)&&!freezetogglekeydown){
Screenshot();
freezetogglekeydown=1;
}
}
void Game::TickOnce(){
- //if(!console){
- if(!mainmenu)
- if(directing||indialogue==-1){
+ if(mainmenu)
+ rotation+=multiplier*5;
+ else
+ if(directing||indialogue==-1) {
rotation+=deltah*.7;
if(!invertmouse)rotation2+=deltav*.7;
if(invertmouse)rotation2-=deltav*.7;
if(rotation2>90)rotation2=90;
if(rotation2<-70)rotation2=-70;
}
- if(mainmenu)rotation+=multiplier*5;
-
- //}
}
void Game::TickOnceAfter(){
else musicvolume[1]-=multiplier*450;
if(musicselected==stream_music3)musicvolume[2]+=multiplier*450;
else musicvolume[2]-=multiplier*450;
- /*
- if(musicselected==music1)musicvolume[0]+=multiplier*100;
- else musicvolume[0]-=multiplier*450;
- if(musicselected==music2)musicvolume[1]+=multiplier*150;
- else if(player[0].dead)musicvolume[1]-=multiplier*450;
- else musicvolume[1]-=multiplier*100;
- if(musicselected==music3)musicvolume[2]+=multiplier*450;
- else musicvolume[2]-=multiplier*450;*/
for(i=0;i<3;i++){
if(musicvolume[i]<0)musicvolume[i]=0;
PlayStreamEx( stream_music3, strm[stream_music3], NULL, true);
OPENAL_SetPaused(channels[stream_music3], false);
}
- }
-
- if(!musictoggle){
- OPENAL_SetPaused(channels[music1], true);
- OPENAL_SetPaused(channels[stream_music2], true);
- OPENAL_SetPaused(channels[stream_music3], true);
-
- for(i=0;i<4;i++){
- oldmusicvolume[i]=0;
- musicvolume[i]=0;
- }
- }
-
- if(musictoggle){
if(musicvolume[0]<=0&&oldmusicvolume[0]>0){
OPENAL_SetPaused(channels[music1], true);
}
for(i=0;i<3;i++){
oldmusicvolume[i]=musicvolume[i];
}
+ } else {
+ OPENAL_SetPaused(channels[music1], true);
+ OPENAL_SetPaused(channels[stream_music2], true);
+ OPENAL_SetPaused(channels[stream_music3], true);
+
+ for(i=0;i<4;i++){
+ oldmusicvolume[i]=0;
+ musicvolume[i]=0;
+ }
}
killhotspot=2;
- if(numhotspots)
- for(i=0;i<numhotspots;i++){
- if(hotspottype[i]>10&&hotspottype[i]<20){
- if(player[hotspottype[i]-10].dead==0){
- killhotspot=0;
- }
- else if(killhotspot==2)
- killhotspot=1;
+ for(i=0;i<numhotspots;i++){
+ if(hotspottype[i]>10&&hotspottype[i]<20){
+ if(player[hotspottype[i]-10].dead==0){
+ killhotspot=0;
}
+ else if(killhotspot==2)
+ killhotspot=1;
}
- if(killhotspot==2)killhotspot=0;
+ }
+ if(killhotspot==2)killhotspot=0;
- winhotspot=0;
- if(numhotspots)
- for(i=0;i<numhotspots;i++){
- if(hotspottype[i]==-1){
- if(findDistancefast(&player[0].coords,&hotspot[i])<hotspotsize[i])
- winhotspot=1;
- }
- }
+ winhotspot=0;
+ for(i=0;i<numhotspots;i++){
+ if(hotspottype[i]==-1){
+ if(findDistancefast(&player[0].coords,&hotspot[i])<hotspotsize[i])
+ winhotspot=1;
+ }
+ }
- int numalarmed=0;
- if(numplayers>1)
- for(i=1;i<numplayers;i++){
- if(!player[i].dead&&player[i].aitype==attacktypecutoff&&player[i].surprised<=0)numalarmed++;
- }
- if(numalarmed>maxalarmed)maxalarmed=numalarmed;
+ int numalarmed=0;
+ for(i=1;i<numplayers;i++){
+ if(!player[i].dead&&player[i].aitype==attacktypecutoff&&player[i].surprised<=0)numalarmed++;
+ }
+ if(numalarmed>maxalarmed)maxalarmed=numalarmed;
- if(changedelay<=0&&!loading&&!editorenabled&&gameon&&!tutoriallevel&&changedelay!=-999&&!won){
- if(player[0].dead&&changedelay<=0){
- changedelay=1;
- targetlevel=whichlevel;
- }
- alldead=1;
- if(numplayers>1)
- for(i=1;i<numplayers;i++){
- if(!player[i].dead&&player[i].howactive<typedead1)alldead=0;
- }
+ if(changedelay<=0&&!loading&&!editorenabled&&gameon&&!tutoriallevel&&changedelay!=-999&&!won){
+ if(player[0].dead&&changedelay<=0){
+ changedelay=1;
+ targetlevel=whichlevel;
+ }
+ alldead=1;
+ for(i=1;i<numplayers;i++){
+ if(!player[i].dead&&player[i].howactive<typedead1)alldead=0;
+ }
- if(alldead&&!player[0].dead&&maptype==mapkilleveryone){
- changedelay=1;
- targetlevel=whichlevel+1;
- if(targetlevel>numchallengelevels-1)targetlevel=0;
- }
- if(winhotspot||windialogue){
- changedelay=0.1;
- targetlevel=whichlevel+1;
- if(targetlevel>numchallengelevels-1)targetlevel=0;
- }
+ if(alldead&&!player[0].dead&&maptype==mapkilleveryone){
+ changedelay=1;
+ targetlevel=whichlevel+1;
+ if(targetlevel>numchallengelevels-1)targetlevel=0;
+ }
+ if(winhotspot||windialogue){
+ changedelay=0.1;
+ targetlevel=whichlevel+1;
+ if(targetlevel>numchallengelevels-1)targetlevel=0;
+ }
- if(killhotspot){
- changedelay=1;
- targetlevel=whichlevel+1;
- if(targetlevel>numchallengelevels-1)targetlevel=0;
- }
+ if(killhotspot){
+ changedelay=1;
+ targetlevel=whichlevel+1;
+ if(targetlevel>numchallengelevels-1)targetlevel=0;
+ }
- if(changedelay>0&&!player[0].dead&&!won){
- //high scores, awards, win
- if(campaign){
- won=1;
- accountcampaignchoices[accountactive][accountcampaignchoicesmade[accountactive]]=whichchoice;
- accountcampaignchoicesmade[accountactive]++;
- accountcampaignscore[accountactive]+=bonustotal;
- scoreadded=1;
- accountcampaigntime[accountactive]+=leveltime;
- if(accountcampaignscore[accountactive]>accountcampaignhighscore[accountactive])accountcampaignhighscore[accountactive]=accountcampaignscore[accountactive];
-
- //if(accountprogress[accountactive]<whichlevel+1)accountprogress[accountactive]=whichlevel+1;
- }
- else
- {
- won=1;
- if(!debugmode){
- if(bonustotal-startbonustotal>accounthighscore[accountactive][whichlevel])accounthighscore[accountactive][whichlevel]=bonustotal-startbonustotal;
- if(accountfasttime[accountactive][whichlevel]==0||leveltime<accountfasttime[accountactive][whichlevel])accountfasttime[accountactive][whichlevel]=leveltime;
- }
- if(accountprogress[accountactive]<whichlevel+1)accountprogress[accountactive]=whichlevel+1;
+ if(changedelay>0&&!player[0].dead&&!won){
+ //high scores, awards, win
+ if(campaign){
+ accountactive->winCampaignLevel(whichchoice, bonustotal, leveltime);
+ scoreadded=1;
+ }
+ else
+ {
+ accountactive->winLevel(whichlevel,bonustotal-startbonustotal,leveltime);
+ }
+ won=1;
+ }
+ }
- }
- }
+ if(!winfreeze){
+
+ if(leveltime<1){
+ loading=0;
+ changedelay=.1;
+ alldead=0;
+ winhotspot=0;
+ killhotspot=0;
+ }
+
+ if(!editorenabled&&gameon&&!mainmenu){
+ if(changedelay!=-999)changedelay-=multiplier/7;
+ if(player[0].dead)targetlevel=whichlevel;
+ if(loading==2&&!campaign){
+ flash();
+
+ fireSound(firestartsound);
+
+ if(!player[0].dead&&targetlevel!=whichlevel){
+ startbonustotal=bonustotal;
}
+ if(player[0].dead) Loadlevel(whichlevel);
+ else Loadlevel(targetlevel);
- if(!winfreeze){
+ fireSound();
- if(leveltime<1){
- loading=0;
- changedelay=.1;
- alldead=0;
- winhotspot=0;
- killhotspot=0;
- }
+ loading=3;
+ }
+ if(loading==2&&targetlevel==whichlevel){
+ flash();
+ loadtime=0;
- if(!editorenabled&&gameon&&!mainmenu){
- if(changedelay!=-999)changedelay-=multiplier/7;
- if(player[0].dead)targetlevel=whichlevel;
- if(loading==2&&!campaign){
- flashr=1;
- flashg=0;
- flashb=0;
- flashamount=1;
- flashdelay=1;
- loadtime=0;
-
- float gLoc[3]={0,0,0};
- float vel[3]={0,0,0};
- 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(!player[0].dead&&targetlevel!=whichlevel){
- startbonustotal=bonustotal;
- }
- if(!player[0].dead)Loadlevel(targetlevel);
- if(player[0].dead)Loadlevel(whichlevel);
+ fireSound(firestartsound);
- 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);
+ for(i=0;i<255;i++){
+ mapname[i]='\0';
+ }
+ mapname[0]=':';
+ mapname[1]='D';
+ mapname[2]='a';
+ mapname[3]='t';
+ mapname[4]='a';
+ mapname[5]=':';
+ mapname[6]='M';
+ mapname[7]='a';
+ mapname[8]='p';
+ mapname[9]='s';
+ mapname[10]=':';
+ strcat(mapname,campaignmapname[levelorder[accountactive->getCampaignChoicesMade()]]);//[campaignchoicewhich[whichchoice]]);
+ Loadlevel(mapname);
- loading=3;
- }
- if(loading==2&&targetlevel==whichlevel){
- flashr=1;
- flashg=0;
- flashb=0;
- flashamount=1;
- flashdelay=1;
- loadtime=0;
-
- float gLoc[3]={0,0,0};
- float vel[3]={0,0,0};
- 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(i=0;i<255;i++){
- mapname[i]='\0';
- }
- mapname[0]=':';
- mapname[1]='D';
- mapname[2]='a';
- mapname[3]='t';
- mapname[4]='a';
- mapname[5]=':';
- mapname[6]='M';
- mapname[7]='a';
- mapname[8]='p';
- mapname[9]='s';
- mapname[10]=':';
- strcat(mapname,campaignmapname[levelorder[accountcampaignchoicesmade[accountactive]]]);//[campaignchoicewhich[whichchoice]]);
- Loadlevel(mapname);
-
- 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);
+ fireSound();
- loading=3;
- }
- if(changedelay<=-999&&whichlevel!=-2&&!loading&&(player[0].dead||(alldead&&maptype==mapkilleveryone)||(winhotspot)||(killhotspot))&&!winfreeze)loading=1;
- if((player[0].dead||(alldead&&maptype==mapkilleveryone)||(winhotspot)||(windialogue)||(killhotspot))&&changedelay<=0){
- {
- if(whichlevel!=-2&&!loading&&!player[0].dead){
- winfreeze=1;
- changedelay=-999;
- }
- if(player[0].dead)loading=1;
- }
- }
+ loading=3;
+ }
+ if(changedelay<=-999&&whichlevel!=-2&&!loading&&(player[0].dead||(alldead&&maptype==mapkilleveryone)||(winhotspot)||(killhotspot))&&!winfreeze)loading=1;
+ if((player[0].dead||(alldead&&maptype==mapkilleveryone)||(winhotspot)||(windialogue)||(killhotspot))&&changedelay<=0){
+ {
+ if(whichlevel!=-2&&!loading&&!player[0].dead){
+ winfreeze=1;
+ changedelay=-999;
}
+ if(player[0].dead)loading=1;
+ }
+ }
+ }
- if(campaign)
- if(mainmenu==0&&winfreeze&&(campaignchoosenext[campaignchoicewhich[whichchoice]])==1){
- if(campaignnumnext[campaignchoicewhich[whichchoice]]==0){
- endgame=1;
- }
- }
- else if(mainmenu==0&&winfreeze){
- if(campaignchoosenext[campaignchoicewhich[whichchoice]]==2)
- stealthloading=1;
- else stealthloading=0;
-
- if(!stealthloading){
- float gLoc[3]={0,0,0};
- float vel[3]={0,0,0};
- 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);
-
- flashr=1;
- flashg=0;
- flashb=0;
- flashamount=1;
- flashdelay=1;
- }
+ if(campaign)
+ if(mainmenu==0&&winfreeze&&(campaignchoosenext[campaignchoicewhich[whichchoice]])==1){
+ if(campaignnumnext[campaignchoicewhich[whichchoice]]==0){
+ endgame=1;
+ }
+ }
+ else if(mainmenu==0&&winfreeze){
+ if(campaignchoosenext[campaignchoicewhich[whichchoice]]==2)
+ stealthloading=1;
+ else stealthloading=0;
- startbonustotal=0;
-
- ifstream ipstream(ConvertFileName(":Data:Campaigns:main.txt"));
- //campaignnumlevels=0;
- //accountcampaignchoicesmade[accountactive]=0;
- ipstream.ignore(256,':');
- ipstream >> campaignnumlevels;
- for(i=0;i<campaignnumlevels;i++){
- ipstream.ignore(256,':');
- ipstream.ignore(256,':');
- ipstream.ignore(256,' ');
- ipstream >> campaignmapname[i];
- ipstream.ignore(256,':');
- ipstream >> campaigndescription[i];
- for(j=0;j<256;j++){
- if(campaigndescription[i][j]=='_')campaigndescription[i][j]=' ';
- }
- ipstream.ignore(256,':');
- ipstream >> campaignchoosenext[i];
- ipstream.ignore(256,':');
- ipstream >> campaignnumnext[i];
- if(campaignnumnext[i])
- for(j=0;j<campaignnumnext[i];j++){
- ipstream.ignore(256,':');
- ipstream >> campaignnextlevel[i][j];
- campaignnextlevel[i][j]-=1;
- }
- ipstream.ignore(256,':');
- ipstream >> campaignlocationx[i];
- ipstream.ignore(256,':');
- ipstream >> campaignlocationy[i];
- }
- ipstream.close();
+ if(!stealthloading){
+ float gLoc[3]={0,0,0};
+ float vel[3]={0,0,0};
+ fireSound(firestartsound);
- for(i=0;i<campaignnumlevels;i++){
- levelvisible[i]=0;
- levelhighlight[i]=0;
- }
+ flash();
+ }
+ startbonustotal=0;
- for(i=0;i<campaignnumlevels;i++){
- levelvisible[i]=0;
- levelhighlight[i]=0;
- }
+ ifstream ipstream(ConvertFileName(":Data:Campaigns:main.txt"));
+ ipstream.ignore(256,':');
+ ipstream >> campaignnumlevels;
+ for(i=0;i<campaignnumlevels;i++){
+ ipstream.ignore(256,':');
+ ipstream.ignore(256,':');
+ ipstream.ignore(256,' ');
+ ipstream >> campaignmapname[i];
+ ipstream.ignore(256,':');
+ ipstream >> campaigndescription[i];
+ for(j=0;j<256;j++){
+ if(campaigndescription[i][j]=='_')campaigndescription[i][j]=' ';
+ }
+ ipstream.ignore(256,':');
+ ipstream >> campaignchoosenext[i];
+ ipstream.ignore(256,':');
+ ipstream >> campaignnumnext[i];
+ for(j=0;j<campaignnumnext[i];j++){
+ ipstream.ignore(256,':');
+ ipstream >> campaignnextlevel[i][j];
+ campaignnextlevel[i][j]-=1;
+ }
+ ipstream.ignore(256,':');
+ ipstream >> campaignlocationx[i];
+ ipstream.ignore(256,':');
+ ipstream >> campaignlocationy[i];
+ }
+ ipstream.close();
- levelorder[0]=0;
- levelvisible[0]=1;
- if(accountcampaignchoicesmade[accountactive])
- for(i=0;i<accountcampaignchoicesmade[accountactive];i++){
- levelorder[i+1]=campaignnextlevel[levelorder[i]][accountcampaignchoices[accountactive][i]];
- levelvisible[levelorder[i+1]]=1;
- }
- int whichlevelstart;
- whichlevelstart=accountcampaignchoicesmade[accountactive]-1;
- if(whichlevelstart<0){
- campaignchoicenum=1;
- campaignchoicewhich[0]=0;
- }
- else
- {
- campaignchoicenum=campaignnumnext[levelorder[whichlevelstart]];
- if(campaignchoicenum)
- for(i=0;i<campaignchoicenum;i++){
- campaignchoicewhich[i]=campaignnextlevel[levelorder[whichlevelstart]][i];
- levelvisible[campaignnextlevel[levelorder[whichlevelstart]][i]]=1;
- levelhighlight[campaignnextlevel[levelorder[whichlevelstart]][i]]=1;
- }
- }
+ for(i=0;i<campaignnumlevels;i++){
+ levelvisible[i]=0;
+ levelhighlight[i]=0;
+ }
- loading=2;
- loadtime=0;
- targetlevel=7;
- //if(firstload)TickOnceAfter();
- if(!firstload)LoadStuff();
- //else {
- for(i=0;i<255;i++){
- mapname[i]='\0';
- }
- mapname[0]=':';
- mapname[1]='D';
- mapname[2]='a';
- mapname[3]='t';
- mapname[4]='a';
- mapname[5]=':';
- mapname[6]='M';
- mapname[7]='a';
- mapname[8]='p';
- mapname[9]='s';
- mapname[10]=':';
-
- //accountcampaignchoices[accountactive][accountcampaignchoicesmade[accountactive]]=whichchoice;
- //accountcampaignchoicesmade[accountactive]++;
-
-
- strcat(mapname,campaignmapname[campaignchoicewhich[0]]);
- whichchoice=0;
- visibleloading=1;
- stillloading=1;
- Loadlevel(mapname);
- campaign=1;
- mainmenu=0;
- gameon=1;
- OPENAL_SetPaused(channels[stream_music3], true);
-
- stealthloading=0;
- }
- if(loading==3)loading=0;
+ for(i=0;i<campaignnumlevels;i++){
+ levelvisible[i]=0;
+ levelhighlight[i]=0;
+ }
+
+ levelorder[0]=0;
+ levelvisible[0]=1;
+ for(i=0;i<accountactive->getCampaignChoicesMade();i++){
+ levelorder[i+1]=campaignnextlevel[levelorder[i]][accountactive->getCampaignChoice(i)];
+ levelvisible[levelorder[i+1]]=1;
+ }
+ int whichlevelstart;
+ whichlevelstart=accountactive->getCampaignChoicesMade()-1;
+ if(whichlevelstart<0){
+ campaignchoicenum=1;
+ campaignchoicewhich[0]=0;
+ }
+ else
+ {
+ campaignchoicenum=campaignnumnext[levelorder[whichlevelstart]];
+ for(i=0;i<campaignchoicenum;i++){
+ campaignchoicewhich[i]=campaignnextlevel[levelorder[whichlevelstart]][i];
+ levelvisible[campaignnextlevel[levelorder[whichlevelstart]][i]]=1;
+ levelhighlight[campaignnextlevel[levelorder[whichlevelstart]][i]]=1;
+ }
+ }
+ loading=2;
+ loadtime=0;
+ targetlevel=7;
+ //if(firstload)TickOnceAfter();
+ if(!firstload)LoadStuff();
+ //else {
+ for(i=0;i<255;i++){
+ mapname[i]='\0';
}
+ mapname[0]=':';
+ mapname[1]='D';
+ mapname[2]='a';
+ mapname[3]='t';
+ mapname[4]='a';
+ mapname[5]=':';
+ mapname[6]='M';
+ mapname[7]='a';
+ mapname[8]='p';
+ mapname[9]='s';
+ mapname[10]=':';
+
+ strcat(mapname,campaignmapname[campaignchoicewhich[0]]);
+ whichchoice=0;
+ visibleloading=1;
+ stillloading=1;
+ Loadlevel(mapname);
+ campaign=1;
+ mainmenu=0;
+ gameon=1;
+ OPENAL_SetPaused(channels[stream_music3], true);
+
+ stealthloading=0;
+ }
+
+ if(loading==3)loading=0;
+
+ }
- oldmusictype=musictype;
+ oldmusictype=musictype;
}
facing=0;