]> git.jsancho.org Git - lugaru.git/blobdiff - Source/GameTick.cpp
Clean up skin texture loading
[lugaru.git] / Source / GameTick.cpp
index 91e081a758ea41c0549548d8af32b79091015947..2e424760f6f8ac8c9797aff2883ecf25924de61e 100644 (file)
@@ -222,6 +222,31 @@ extern float accountcampaigntime[10];
 
 extern int accountcampaignchoicesmade[10];
 extern int accountcampaignchoices[10][5000];
+
+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};
+
 /********************> Tick() <*****/
 extern OPENAL_STREAM * strm[20];
 extern "C"     void PlaySoundEx(int channel, OPENAL_SAMPLE *sptr, OPENAL_DSPUNIT *dsp, signed char startpaused);
@@ -647,10 +672,10 @@ void      Game::Setenvironment(int which)
                        OPENAL_SetVolume(channels[stream_wind], 256);
                }
 
-               LoadTexture(ConvertFileName(":Data:Textures:snowtree.png"),&objects.treetextureptr,0,1);
-               LoadTexture(ConvertFileName(":Data:Textures:bushsnow.png"),&objects.bushtextureptr,0,1);
-               LoadTexture(ConvertFileName(":Data:Textures:bouldersnow.jpg"),&objects.rocktextureptr,1,0);
-               LoadTexture(ConvertFileName(":Data:Textures:snowbox.jpg"),&objects.boxtextureptr,1,0);
+               LoadTexture(":Data:Textures:snowtree.png",&objects.treetextureptr,0,1);
+               LoadTexture(":Data:Textures:bushsnow.png",&objects.bushtextureptr,0,1);
+               LoadTexture(":Data:Textures:bouldersnow.jpg",&objects.rocktextureptr,1,0);
+               LoadTexture(":Data:Textures:snowbox.jpg",&objects.boxtextureptr,1,0);
 
                OPENAL_Sample_Free(samp[footstepsound]);
                OPENAL_Sample_Free(samp[footstepsound2]);
@@ -665,25 +690,25 @@ void      Game::Setenvironment(int which)
                OPENAL_Sample_SetMinMaxDistance(samp[footstepsound3], 4.0f, 1000.0f);
                OPENAL_Sample_SetMinMaxDistance(samp[footstepsound4], 4.0f, 1000.0f);
 
-               LoadTexture(ConvertFileName(":Data:Textures:snow.jpg"),&terraintexture,1,0);
+               LoadTexture(":Data:Textures:snow.jpg",&terraintexture,1,0);
 
-               LoadTexture(ConvertFileName(":Data:Textures:rock.jpg"),&terraintexture2,1,0);
+               LoadTexture(":Data:Textures:rock.jpg",&terraintexture2,1,0);
 
-               //LoadTexture(ConvertFileName(":Data:Textures:detailgrain.png"),&terraintexture3,1);
+               //LoadTexture(":Data:Textures:detailgrain.png",&terraintexture3,1);
 
 
 
 
                temptexdetail=texdetail;
                if(texdetail>1)texdetail=4;
-               skybox.load(    ConvertFileName(":Data:Textures:Skybox(snow):Front.jpg"),
-                       ConvertFileName(":Data:Textures:Skybox(snow):Left.jpg"),
-                       ConvertFileName(":Data:Textures:Skybox(snow):Back.jpg"),
-                       ConvertFileName(":Data:Textures:Skybox(snow):Right.jpg"),
-                       ConvertFileName(":Data:Textures:Skybox(snow):Up.jpg"),
-                       ConvertFileName(":Data:Textures:Skybox(snow):Down.jpg"),
-                       ConvertFileName(":Data:Textures:Skybox(snow):Cloud.jpg"),
-                       ConvertFileName(":Data:Textures:Skybox(snow):Reflect.jpg"));
+               skybox.load(    ":Data:Textures:Skybox(snow):Front.jpg",
+                       ":Data:Textures:Skybox(snow):Left.jpg",
+                       ":Data:Textures:Skybox(snow):Back.jpg",
+                       ":Data:Textures:Skybox(snow):Right.jpg",
+                       ":Data:Textures:Skybox(snow):Up.jpg",
+                       ":Data:Textures:Skybox(snow):Down.jpg",
+                       ":Data:Textures:Skybox(snow):Cloud.jpg",
+                       ":Data:Textures:Skybox(snow):Reflect.jpg");
 
 
 
@@ -693,10 +718,10 @@ void      Game::Setenvironment(int which)
        if(environment==desertenvironment){
                windvector=0;
                windvector.z=2;
-               LoadTexture(ConvertFileName(":Data:Textures:deserttree.png"),&objects.treetextureptr,0,1);
-               LoadTexture(ConvertFileName(":Data:Textures:bushdesert.png"),&objects.bushtextureptr,0,1);
-               LoadTexture(ConvertFileName(":Data:Textures:boulderdesert.jpg"),&objects.rocktextureptr,1,0);
-               LoadTexture(ConvertFileName(":Data:Textures:desertbox.jpg"),&objects.boxtextureptr,1,0);
+               LoadTexture(":Data:Textures:deserttree.png",&objects.treetextureptr,0,1);
+               LoadTexture(":Data:Textures:bushdesert.png",&objects.bushtextureptr,0,1);
+               LoadTexture(":Data:Textures:boulderdesert.jpg",&objects.rocktextureptr,1,0);
+               LoadTexture(":Data:Textures:desertbox.jpg",&objects.boxtextureptr,1,0);
 
 
                if(ambientsound){
@@ -719,24 +744,24 @@ void      Game::Setenvironment(int which)
                OPENAL_Sample_SetMinMaxDistance(samp[footstepsound3], 4.0f, 1000.0f);
                OPENAL_Sample_SetMinMaxDistance(samp[footstepsound4], 4.0f, 1000.0f);
 
-               LoadTexture(ConvertFileName(":Data:Textures:sand.jpg"),&terraintexture,1,0);
+               LoadTexture(":Data:Textures:sand.jpg",&terraintexture,1,0);
 
-               LoadTexture(ConvertFileName(":Data:Textures:sandslope.jpg"),&terraintexture2,1,0);
+               LoadTexture(":Data:Textures:sandslope.jpg",&terraintexture2,1,0);
 
-               //LoadTexture(ConvertFileName(":Data:Textures:detailgrain.png"),&terraintexture3,1);
+               //LoadTexture(":Data:Textures:detailgrain.png",&terraintexture3,1);
 
 
 
                temptexdetail=texdetail;
                if(texdetail>1)texdetail=4;
-               skybox.load(    ConvertFileName(":Data:Textures:Skybox(sand):Front.jpg"),
-                       ConvertFileName(":Data:Textures:Skybox(sand):Left.jpg"),
-                       ConvertFileName(":Data:Textures:Skybox(sand):Back.jpg"),
-                       ConvertFileName(":Data:Textures:Skybox(sand):Right.jpg"),
-                       ConvertFileName(":Data:Textures:Skybox(sand):Up.jpg"),
-                       ConvertFileName(":Data:Textures:Skybox(sand):Down.jpg"),
-                       ConvertFileName(":Data:Textures:Skybox(sand):Cloud.jpg"),
-                       ConvertFileName(":Data:Textures:Skybox(sand):Reflect.jpg"));
+               skybox.load(    ":Data:Textures:Skybox(sand):Front.jpg",
+                       ":Data:Textures:Skybox(sand):Left.jpg",
+                       ":Data:Textures:Skybox(sand):Back.jpg",
+                       ":Data:Textures:Skybox(sand):Right.jpg",
+                       ":Data:Textures:Skybox(sand):Up.jpg",
+                       ":Data:Textures:Skybox(sand):Down.jpg",
+                       ":Data:Textures:Skybox(sand):Cloud.jpg",
+                       ":Data:Textures:Skybox(sand):Reflect.jpg");
 
 
 
@@ -746,10 +771,10 @@ void      Game::Setenvironment(int which)
        if(environment==grassyenvironment){
                windvector=0;
                windvector.z=2;
-               LoadTexture(ConvertFileName(":Data:Textures:tree.png"),&objects.treetextureptr,0,1);
-               LoadTexture(ConvertFileName(":Data:Textures:bush.png"),&objects.bushtextureptr,0,1);
-               LoadTexture(ConvertFileName(":Data:Textures:boulder.jpg"),&objects.rocktextureptr,1,0);
-               LoadTexture(ConvertFileName(":Data:Textures:grassbox.jpg"),&objects.boxtextureptr,1,0);
+               LoadTexture(":Data:Textures:tree.png",&objects.treetextureptr,0,1);
+               LoadTexture(":Data:Textures:bush.png",&objects.bushtextureptr,0,1);
+               LoadTexture(":Data:Textures:boulder.jpg",&objects.rocktextureptr,1,0);
+               LoadTexture(":Data:Textures:grassbox.jpg",&objects.boxtextureptr,1,0);
 
                if(ambientsound){
                        PlayStreamEx( stream_wind, strm[stream_wind], NULL, true);
@@ -770,24 +795,24 @@ void      Game::Setenvironment(int which)
                OPENAL_Sample_SetMinMaxDistance(samp[footstepsound3], 4.0f, 1000.0f);
                OPENAL_Sample_SetMinMaxDistance(samp[footstepsound4], 4.0f, 1000.0f);
 
-               LoadTexture(ConvertFileName(":Data:Textures:grassdirt.jpg"),&terraintexture,1,0);
+               LoadTexture(":Data:Textures:grassdirt.jpg",&terraintexture,1,0);
 
-               LoadTexture(ConvertFileName(":Data:Textures:mossrock.jpg"),&terraintexture2,1,0);
+               LoadTexture(":Data:Textures:mossrock.jpg",&terraintexture2,1,0);
 
-               //LoadTexture(ConvertFileName(":Data:Textures:detail.png"),&terraintexture3,1);
+               //LoadTexture(":Data:Textures:detail.png",&terraintexture3,1);
 
 
 
                temptexdetail=texdetail;
                if(texdetail>1)texdetail=4;
-               skybox.load(    ConvertFileName(":Data:Textures:Skybox(grass):Front.jpg"),
-                       ConvertFileName(":Data:Textures:Skybox(grass):Left.jpg"),
-                       ConvertFileName(":Data:Textures:Skybox(grass):Back.jpg"),
-                       ConvertFileName(":Data:Textures:Skybox(grass):Right.jpg"),
-                       ConvertFileName(":Data:Textures:Skybox(grass):Up.jpg"),
-                       ConvertFileName(":Data:Textures:Skybox(grass):Down.jpg"),
-                       ConvertFileName(":Data:Textures:Skybox(grass):Cloud.jpg"),
-                       ConvertFileName(":Data:Textures:Skybox(grass):Reflect.jpg"));
+               skybox.load(    ":Data:Textures:Skybox(grass):Front.jpg",
+                       ":Data:Textures:Skybox(grass):Left.jpg",
+                       ":Data:Textures:Skybox(grass):Back.jpg",
+                       ":Data:Textures:Skybox(grass):Right.jpg",
+                       ":Data:Textures:Skybox(grass):Up.jpg",
+                       ":Data:Textures:Skybox(grass):Down.jpg",
+                       ":Data:Textures:Skybox(grass):Cloud.jpg",
+                       ":Data:Textures:Skybox(grass):Reflect.jpg");
 
 
 
@@ -795,7 +820,7 @@ void        Game::Setenvironment(int which)
        }
        temptexdetail=texdetail;
        texdetail=1;
-       terrain.load(ConvertFileName(":Data:Textures:heightmap.png"));
+       terrain.load(":Data:Textures:heightmap.png");
 
        texdetail=temptexdetail;
 }
@@ -804,24 +829,24 @@ void      Game::Setenvironment(int which)
 void   Game::Loadlevel(int which){
        stealthloading=0;
 
-       if(which==0)Loadlevel((char *)ConvertFileName(":Data:Maps:map1"));
-       else if(which==1)Loadlevel((char *)ConvertFileName(":Data:Maps:map2"));
-       else if(which==2)Loadlevel((char *)ConvertFileName(":Data:Maps:map3"));
-       else if(which==3)Loadlevel((char *)ConvertFileName(":Data:Maps:map4"));
-       else if(which==4)Loadlevel((char *)ConvertFileName(":Data:Maps:map5"));
-       else if(which==5)Loadlevel((char *)ConvertFileName(":Data:Maps:map6"));
-       else if(which==6)Loadlevel((char *)ConvertFileName(":Data:Maps:map7"));
-       else if(which==7)Loadlevel((char *)ConvertFileName(":Data:Maps:map8"));
-       else if(which==8)Loadlevel((char *)ConvertFileName(":Data:Maps:map9"));
-       else if(which==9)Loadlevel((char *)ConvertFileName(":Data:Maps:map10"));
-       else if(which==10)Loadlevel((char *)ConvertFileName(":Data:Maps:map11"));
-       else if(which==11)Loadlevel((char *)ConvertFileName(":Data:Maps:map12"));
-       else if(which==12)Loadlevel((char *)ConvertFileName(":Data:Maps:map13"));
-       else if(which==13)Loadlevel((char *)ConvertFileName(":Data:Maps:map14"));
-       else if(which==14)Loadlevel((char *)ConvertFileName(":Data:Maps:map15"));
-       else if(which==15)Loadlevel((char *)ConvertFileName(":Data:Maps:map16"));
-       else if(which==-1){tutoriallevel=-1;Loadlevel((char *)ConvertFileName(":Data:Maps:tutorial"));}
-       else Loadlevel((char *)ConvertFileName(":Data:Maps:mapsave"));
+       if(which==0)Loadlevel((char *)":Data:Maps:map1");
+       else if(which==1)Loadlevel((char *)":Data:Maps:map2");
+       else if(which==2)Loadlevel((char *)":Data:Maps:map3");
+       else if(which==3)Loadlevel((char *)":Data:Maps:map4");
+       else if(which==4)Loadlevel((char *)":Data:Maps:map5");
+       else if(which==5)Loadlevel((char *)":Data:Maps:map6");
+       else if(which==6)Loadlevel((char *)":Data:Maps:map7");
+       else if(which==7)Loadlevel((char *)":Data:Maps:map8");
+       else if(which==8)Loadlevel((char *)":Data:Maps:map9");
+       else if(which==9)Loadlevel((char *)":Data:Maps:map10");
+       else if(which==10)Loadlevel((char *)":Data:Maps:map11");
+       else if(which==11)Loadlevel((char *)":Data:Maps:map12");
+       else if(which==12)Loadlevel((char *)":Data:Maps:map13");
+       else if(which==13)Loadlevel((char *)":Data:Maps:map14");
+       else if(which==14)Loadlevel((char *)":Data:Maps:map15");
+       else if(which==15)Loadlevel((char *)":Data:Maps:map16");
+       else if(which==-1){tutoriallevel=-1;Loadlevel((char *)":Data:Maps:tutorial");}
+       else Loadlevel((char *)":Data:Maps:mapsave");
 
        whichlevel=which;
 }
@@ -902,7 +927,7 @@ void        Game::Loadlevel(char *name){
                won=0;
 
                //campaign=0;
-               animation[bounceidleanim].Load((char *)ConvertFileName(":Data:Animations:Idle"),middleheight,neutral);
+               animation[bounceidleanim].Load((char *)":Data:Animations:Idle",middleheight,neutral);
 
                numdialogues=0;
 
@@ -1368,15 +1393,15 @@ void    Game::Loadlevel(char *name){
                        //if(Random()%2==0)player[i].creature=wolftype;
                        //else player[i].creature=rabbittype;
                        if(i==0&&mapvers<9)player[i].creature=rabbittype;
-                       if(player[i].creature!=wolftype)player[i].skeleton.Load((char *)ConvertFileName(":Data:Skeleton:Basic Figure"),(char *)ConvertFileName(":Data:Skeleton:Basic Figurelow"),(char *)ConvertFileName(":Data:Skeleton:Rabbitbelt"),(char *)ConvertFileName(":Data:Models:Body.solid"),(char *)ConvertFileName(":Data:Models:Body2.solid"),(char *)ConvertFileName(":Data:Models:Body3.solid"),(char *)ConvertFileName(":Data:Models:Body4.solid"),(char *)ConvertFileName(":Data:Models:Body5.solid"),(char *)ConvertFileName(":Data:Models:Body6.solid"),(char *)ConvertFileName(":Data:Models:Body7.solid"),(char *)ConvertFileName(":Data:Models:Bodylow.solid"),(char *)ConvertFileName(":Data:Models:Belt.solid"),0);
+                       if(player[i].creature!=wolftype)player[i].skeleton.Load((char *)":Data:Skeleton:Basic Figure",(char *)":Data:Skeleton:Basic Figurelow",(char *)":Data:Skeleton:Rabbitbelt",(char *)":Data:Models:Body.solid",(char *)":Data:Models:Body2.solid",(char *)":Data:Models:Body3.solid",(char *)":Data:Models:Body4.solid",(char *)":Data:Models:Body5.solid",(char *)":Data:Models:Body6.solid",(char *)":Data:Models:Body7.solid",(char *)":Data:Models:Bodylow.solid",(char *)":Data:Models:Belt.solid",0);
                        else
                        {
                                if(player[i].creature!=wolftype){
-                                       player[i].skeleton.Load((char *)ConvertFileName(":Data:Skeleton:Basic Figure"),(char *)ConvertFileName(":Data:Skeleton:Basic Figurelow"),(char *)ConvertFileName(":Data:Skeleton:Rabbitbelt"),(char *)ConvertFileName(":Data:Models:Body.solid"),(char *)ConvertFileName(":Data:Models:Body2.solid"),(char *)ConvertFileName(":Data:Models:Body3.solid"),(char *)ConvertFileName(":Data:Models:Body4.solid"),(char *)ConvertFileName(":Data:Models:Body5.solid"),(char *)ConvertFileName(":Data:Models:Body6.solid"),(char *)ConvertFileName(":Data:Models:Body7.solid"),(char *)ConvertFileName(":Data:Models:Bodylow.solid"),(char *)ConvertFileName(":Data:Models:Belt.solid"),1);
-                                       LoadTexture(ConvertFileName(":Data:Textures:Belt.png"),&player[i].skeleton.drawmodelclothes.textureptr,1,1);
+                                       player[i].skeleton.Load((char *)":Data:Skeleton:Basic Figure",(char *)":Data:Skeleton:Basic Figurelow",(char *)":Data:Skeleton:Rabbitbelt",(char *)":Data:Models:Body.solid",(char *)":Data:Models:Body2.solid",(char *)":Data:Models:Body3.solid",(char *)":Data:Models:Body4.solid",(char *)":Data:Models:Body5.solid",(char *)":Data:Models:Body6.solid",(char *)":Data:Models:Body7.solid",(char *)":Data:Models:Bodylow.solid",(char *)":Data:Models:Belt.solid",1);
+                                       LoadTexture(":Data:Textures:Belt.png",&player[i].skeleton.drawmodelclothes.textureptr,1,1);
                                }
                                if(player[i].creature==wolftype){
-                                       player[i].skeleton.Load((char *)ConvertFileName(":Data:Skeleton:Basic Figure Wolf"),(char *)ConvertFileName(":Data:Skeleton:Basic Figure Wolf Low"),(char *)ConvertFileName(":Data:Skeleton:Rabbitbelt"),(char *)ConvertFileName(":Data:Models:Wolf.solid"),(char *)ConvertFileName(":Data:Models:Wolf2.solid"),(char *)ConvertFileName(":Data:Models:Wolf3.solid"),(char *)ConvertFileName(":Data:Models:Wolf4.solid"),(char *)ConvertFileName(":Data:Models:Wolf5.solid"),(char *)ConvertFileName(":Data:Models:Wolf6.solid"),(char *)ConvertFileName(":Data:Models:Wolf7.solid"),(char *)ConvertFileName(":Data:Models:Wolflow.solid"),(char *)ConvertFileName(":Data:Models:Belt.solid"),0);
+                                       player[i].skeleton.Load((char *)":Data:Skeleton:Basic Figure Wolf",(char *)":Data:Skeleton:Basic Figure Wolf Low",(char *)":Data:Skeleton:Rabbitbelt",(char *)":Data:Models:Wolf.solid",(char *)":Data:Models:Wolf2.solid",(char *)":Data:Models:Wolf3.solid",(char *)":Data:Models:Wolf4.solid",(char *)":Data:Models:Wolf5.solid",(char *)":Data:Models:Wolf6.solid",(char *)":Data:Models:Wolf7.solid",(char *)":Data:Models:Wolflow.solid",(char *)":Data:Models:Belt.solid",0);
                                }
                        }
 
@@ -1386,52 +1411,7 @@ void     Game::Loadlevel(char *name){
                        //if(!player[i].loaded)player[i].skeleton.skinText = new GLubyte[texsize];
                        //player[i].skeleton.skinText.resize(texsize);
 
-                       if(player[i].creature==rabbittype)
-                       {
-                               if(player[i].whichskin==0){
-                                       LoadTextureSave(ConvertFileName(":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(ConvertFileName(":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(ConvertFileName(":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(ConvertFileName(":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(ConvertFileName(":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(ConvertFileName(":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(ConvertFileName(":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(ConvertFileName(":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(ConvertFileName(":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(ConvertFileName(":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(ConvertFileName(":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(ConvertFileName(":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(ConvertFileName(":Data:Textures:Snowwolf.jpg"),&player[i].skeleton.drawmodel.textureptr,1,&player[i].skeleton.skinText[0],&player[i].skeleton.skinsize);
-                               }
-                       }
+                       LoadTextureSave(creatureskin[player[i].creature][player[i].whichskin],&player[i].skeleton.drawmodel.textureptr,1,&player[i].skeleton.skinText[0],&player[i].skeleton.skinsize);
 
                        if(player[i].numclothes)
                        {
@@ -1513,7 +1493,7 @@ void      Game::Loadlevel(char *name){
                                player[i].proportionlegs.z=0;
                        }
 
-                       player[i].tempanimation.Load((char *)ConvertFileName(":Data:Animations:Tempanim"),0,0);
+                       player[i].tempanimation.Load((char *)":Data:Animations:Tempanim",0,0);
 
                        player[i].headmorphness=0;
                        player[i].targetheadmorphness=1;
@@ -1652,14 +1632,14 @@ void    Game::Loadlevel(char *name){
                oldmusicvolume[3]=0;
 
 
-               /*LoadTexture(ConvertFileName(":Data:Textures:cloud.png"),&sprites.cloudtexture,1,1);
-               LoadTexture(ConvertFileName(":Data:Textures:cloudimpact.png"),&sprites.cloudimpacttexture,1,1);
-               LoadTexture(ConvertFileName(":Data:Textures:bloodparticle.png"),&sprites.bloodtexture,1,1);
-               LoadTexture(ConvertFileName(":Data:Textures:snowflake.png"),&sprites.snowflaketexture,1,1);
-               LoadTexture(ConvertFileName(":Data:Textures:flame.png"),&sprites.flametexture,1,1);
-               LoadTexture(ConvertFileName(":Data:Textures:bloodflame.png"),&sprites.bloodflametexture,1,1);
-               LoadTexture(ConvertFileName(":Data:Textures:smoke.png"),&sprites.smoketexture,1,1);
-               LoadTexture(ConvertFileName(":Data:Textures:shine.png"),&sprites.shinetexture,1,0);
+               /*LoadTexture(":Data:Textures:cloud.png",&sprites.cloudtexture,1,1);
+               LoadTexture(":Data:Textures:cloudimpact.png",&sprites.cloudimpacttexture,1,1);
+               LoadTexture(":Data:Textures:bloodparticle.png",&sprites.bloodtexture,1,1);
+               LoadTexture(":Data:Textures:snowflake.png",&sprites.snowflaketexture,1,1);
+               LoadTexture(":Data:Textures:flame.png",&sprites.flametexture,1,1);
+               LoadTexture(":Data:Textures:bloodflame.png",&sprites.bloodflametexture,1,1);
+               LoadTexture(":Data:Textures:smoke.png",&sprites.smoketexture,1,1);
+               LoadTexture(":Data:Textures:shine.png",&sprites.shinetexture,1,0);
                */
 
                if(!firstload)
@@ -3461,7 +3441,7 @@ void      Game::Tick()
 
 
                                                                FILE                    *tfile;
-                                                               tfile=fopen( mapname, "wb" );
+                                                               tfile=fopen( ConvertFileName(mapname), "wb" );
                                                                fpackf(tfile, "Bi", mapvers);
                                                                //fpackf(tfile, "Bi", indemo);
                                                                fpackf(tfile, "Bi", maptype);
@@ -3834,11 +3814,11 @@ void    Game::Tick()
                                                        donesomething=1;
                                                        }*/
                                                        if(Compare(consoletext[0],"cellar door ",0,11)||Compare(consoletext[0],"cellardoor ",0,10)){
-                                                               LoadTextureSave(ConvertFileName(":Data:Textures:Furdarko.jpg"),&player[0].skeleton.drawmodel.textureptr,1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize);
+                                                               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(ConvertFileName(":Data:Textures:Pants.png"),0,1,&player[i].skeleton.skinText[0],&player[i].skeleton.skinsize);
+                                                       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;
                                                        }*/
@@ -4642,36 +4622,8 @@ void     Game::Tick()
                                                                }
 
                                                                player[0].numclothes=0;
-                                                               if(player[0].whichskin==0){
-                                                                       LoadTextureSave(ConvertFileName(":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(ConvertFileName(":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(ConvertFileName(":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(ConvertFileName(":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(ConvertFileName(":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(ConvertFileName(":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(ConvertFileName(":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(ConvertFileName(":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(ConvertFileName(":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(ConvertFileName(":Data:Textures:WB2.jpg"),&player[0].skeleton.drawmodel.textureptr,1,&player[0].skeleton.skinText[0],&player[0].skeleton.skinsize);
-                                                               }
+                                                               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;
@@ -5085,36 +5037,8 @@ void     Game::Tick()
                                                                                }
                                                                        }
                                                                        player[closest].numclothes=0;
-                                                                       if(player[closest].whichskin==0){
-                                                                               LoadTextureSave(ConvertFileName(":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(ConvertFileName(":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(ConvertFileName(":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(ConvertFileName(":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(ConvertFileName(":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(ConvertFileName(":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(ConvertFileName(":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(ConvertFileName(":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(ConvertFileName(":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(ConvertFileName(":Data:Textures:WB2.jpg"),&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
-                                                                       }
+                                                                       LoadTextureSave(creatureskin[player[closest].creature][player[closest].whichskin],
+                                                                                       &player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
 
                                                                        donesomething=1;
                                                        }
@@ -5123,37 +5047,8 @@ void     Game::Tick()
                                                                int closest=0;
 
                                                                player[closest].numclothes=0;
-                                                               if(player[closest].whichskin==0){
-                                                                       LoadTextureSave(ConvertFileName(":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(ConvertFileName(":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(ConvertFileName(":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(ConvertFileName(":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(ConvertFileName(":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(ConvertFileName(":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(ConvertFileName(":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(ConvertFileName(":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(ConvertFileName(":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(ConvertFileName(":Data:Textures:WB2.jpg"),&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
-                                                               }
-
+                                                               LoadTextureSave(creatureskin[player[closest].creature][player[closest].whichskin],
+                                                                               &player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
                                                                donesomething=1;
                                                        }
 
@@ -5182,7 +5077,7 @@ void      Game::Tick()
                                                                mapname[consolechars[0]-8+18]='g';
                                                                mapname[consolechars[0]-8+19]='\0';
 
-                                                               //ConvertFileName(:Data:Textures:Pants.png)
+                                                               //: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);
@@ -7178,50 +7073,8 @@ void     Game::Tick()
                                                                        if(player[closest].whichskin>9)player[closest].whichskin=0;
                                                                        if(player[closest].whichskin>2&&player[closest].creature==wolftype)player[closest].whichskin=0;
 
-                                                                       if(player[closest].creature==rabbittype){
-                                                                               if(player[closest].whichskin==0){
-                                                                                       LoadTextureSave(":Data:Textures:Fur3.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
-                                                                               }
-                                                                               else if(player[closest].whichskin==1){
-                                                                                       LoadTextureSave(":Data:Textures:Fur.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
-                                                                               }
-                                                                               else if(player[closest].whichskin==2){
-                                                                                       LoadTextureSave(":Data:Textures:Fur2.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
-                                                                               }
-                                                                               else if(player[closest].whichskin==3){
-                                                                                       LoadTextureSave(":Data:Textures:Lynx.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
-                                                                               }
-                                                                               else if(player[closest].whichskin==4){
-                                                                                       LoadTextureSave(":Data:Textures:Otter.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
-                                                                               }
-                                                                               else if(player[closest].whichskin==5){
-                                                                                       LoadTextureSave(":Data:Textures:Opal.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
-                                                                               }
-                                                                               else if(player[closest].whichskin==6){
-                                                                                       LoadTextureSave(":Data:Textures:Sable.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
-                                                                               }
-                                                                               else if(player[closest].whichskin==7){
-                                                                                       LoadTextureSave(":Data:Textures:Chocolate.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
-                                                                               }
-                                                                               else if(player[closest].whichskin==8){
-                                                                                       LoadTextureSave(":Data:Textures:BW2.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
-                                                                               }
-                                                                               else if(player[closest].whichskin==9){
-                                                                                       LoadTextureSave(":Data:Textures:WB2.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
-                                                                               }
-                                                                       }
-                                                                       if(player[closest].creature==wolftype){
-                                                                               k=abs(Random()%3);
-                                                                               if(player[closest].whichskin==0){
-                                                                                       LoadTextureSave(":Data:Textures:Wolf.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
-                                                                               }
-                                                                               else if(player[closest].whichskin==1){
-                                                                                       LoadTextureSave(":Data:Textures:Darkwolf.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
-                                                                               }
-                                                                               else if(player[closest].whichskin==2){
-                                                                                       LoadTextureSave(":Data:Textures:Snowwolf.jpg",&player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
-                                                                               }
-                                                                       }
+                                                                       LoadTextureSave(creatureskin[player[closest].creature][player[closest].whichskin],
+                                                                                       &player[closest].skeleton.drawmodel.textureptr,1,&player[closest].skeleton.skinText[0],&player[closest].skeleton.skinsize);
                                                                }
 
                                                                if(player[closest].numclothes){
@@ -7761,7 +7614,7 @@ void      Game::Tick()
                                                                        player[numplayers].proportionlegs.z=0;
                                                                }
 
-                                                               player[numplayers].tempanimation.Load((char *)ConvertFileName(":Data:Animations:Tempanim"),0,0);
+                                                               player[numplayers].tempanimation.Load((char *)":Data:Animations:Tempanim",0,0);
 
                                                                player[numplayers].damagetolerance=200;