Page principale | Liste des namespaces | Hiérarchie des classes | Liste par ordre alphabétique | Liste des composants | Liste des fichiers | Membres des namespaces | Composants | Déclarations

ExManagerLoad.cpp

Aller à la documentation de ce fichier.
00001 /*
00002  * ExNihilo 3D Engine
00003  * 
00004  *  This program is free software; you can redistribute it and/or modify
00005  *  it under the terms of the GNU General Public License as published by
00006  *  the Free Software Foundation; either version 2 of the License, or
00007  *  (at your option) any later version.
00008  *
00009  *  This program is distributed in the hope that it will be useful,
00010  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00012  *  GNU Library General Public License for more details.
00013  *
00014  *  You should have received a copy of the GNU General Public License
00015  *  along with this program; if not, write to the Free Software
00016  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
00017  *
00018  * Please read AUTHORS file !!!
00019  * 
00020  * $Id: ExManagerLoad.cpp,v 1.23 2002/11/24 11:58:58 data Exp $
00021  *
00022  */
00023 
00024 #include "ExManagerLoad.h"
00025 
00026 bool ExManagerLoad::m_flag = false; 
00027 ExManagerLoad* ExManagerLoad::m_instance = NULL; 
00028 
00029 ExManagerLoad* ExManagerLoad::CreateSingleton(void){
00030 Guard(ExManagerLoad* ExManagerLoad::CreateSingleton(void))
00031         if(!m_flag)
00032         {
00033                 m_flag = true; // We are creating the error log now, so set flag to true
00034                 m_instance = new ExManagerLoad; // Create the error log
00035         }else
00036         {
00037                 std::cout<<"Error singleton already created"<<std::endl;
00038         }
00039         return m_instance; 
00040 UnGuard
00041 }
00042 
00043 ExManagerLoad::ExManagerLoad(void)
00044 {
00045 Guard(ExManagerLoad::ExManagerLoad(void))
00046 UnGuard
00047 }
00048 
00049 ExManagerLoad::~ExManagerLoad(void)
00050 {
00051 Guard(ExManagerLoad::~ExManagerLoad(void))
00052 UnGuard
00053 }
00054 
00055 void ExManagerLoad::Reset(void)
00056 {
00057 Guard(void ExManagerLoad::Reset(void))
00058         ExManagerObject<ExCLoadingAnimation>::Reset();
00059         Init();
00060 UnGuard
00061 }
00062 
00063 void ExManagerLoad::Init(void)
00064 {
00065 Guard(ExManagerLoad::Init(void))
00066         ExManagerObject<ExCLoadingAnimation>::Init();
00067 UnGuard
00068 }
00069 
00070 void ExManagerLoad::Load(std::string FileName)
00071 {
00072 Guard(ExManagerLoad::Load(std::string FileName))
00073 
00074 UnGuard
00075 }
00076 
00077 FileType ExManagerLoad::GetFileType(std::string FileName)
00078 {
00079 Guard(FileType ExManagerLoad::GetFileType(std::string FileName))
00080         std::string Buffext=ExNihilo::GetFileExtension(FileName);
00081 
00082         if(strcmp(Buffext.data(),"csl")==0)
00083         {
00084                 return FILE_CONSOL;             
00085         }
00086         if(strcmp(Buffext.data(),"comd")==0)
00087         {
00088                 return FILE_COMMAND;
00089         }
00090         if(strcmp(Buffext.data(),"wav")==0
00091                 ||strcmp(Buffext.data(),"mp3")==0
00092                 ||strcmp(Buffext.data(),"mid")==0)
00093         {
00094                 return FILE_SOUND;
00095         }
00096         if(strcmp(Buffext.data(),"asc")==0
00097                 ||strcmp(Buffext.data(),"ase")==0
00098                 ||strcmp(Buffext.data(),"3ds")==0
00099                 ||strcmp(Buffext.data(),"md2")==0
00100                 ||strcmp(Buffext.data(),"md3")==0
00101                 ||strcmp(Buffext.data(),"exm")==0
00102                 ||strcmp(Buffext.data(),"obj")==0)
00103         {
00104                 return FILE_MODEL;
00105         }
00106         if(strcmp(Buffext.data(),"map")==0
00107                 ||strcmp(Buffext.data(),"bsp")==0
00108                 ||strcmp(Buffext.data(),"hgmp")==0
00109                 ||strcmp(Buffext.data(),"skyb")==0)
00110         {
00111                 return FILE_MAP;
00112         }
00113         if(strcmp(Buffext.data(),"int")==0)
00114         {
00115                 return   FILE_INTERFACE;
00116         }
00117         if(strcmp(Buffext.data(),"set")==0)
00118         {
00119                 return FILE_SET;
00120         }
00121         if(strcmp(Buffext.data(),"exec")==0)
00122         {
00123                 return FILE_COMMAND;
00124         }
00125         if(strcmp(Buffext.data(),"part")==0)
00126         {
00127                 return FILE_PARTICUL;
00128         }
00129         if(strcmp(Buffext.data(),"ExW")==0)
00130         {
00131                 return FILE_WINDOW;
00132         }
00133         if(strcmp(Buffext.data(),"bmp")==0
00134                 ||strcmp(Buffext.data(),"tga")==0
00135                 ||strcmp(Buffext.data(),"pcx")==0
00136                 ||strcmp(Buffext.data(),"jpg")==0
00137                 ||strcmp(Buffext.data(),"rgb")==0
00138                 ||strcmp(Buffext.data(),"raw")==0
00139                 ||strcmp(Buffext.data(),"dds")==0
00140                 ||strcmp(Buffext.data(),"ppm")==0)
00141         {
00142                 return FILE_TEXTURE;
00143         }
00144         *Consol<<"ExManagerLoad::ExCeption =>"<<FileName<<" Bad file extension"<<std::endl;     
00145         DisplayFileType();
00146         return FILE_UNKNOWN_TYPE;
00147 UnGuard
00148 }
00149 
00150 
00151 
00152 
00153 ExCAction ExManagerLoad::InputCommand(ExCCommand Command)
00154 {
00155 Guard(ExCAction ExManagerLoad::InputCommand(ExCCommand Command))
00156                 return NOTHING;
00157 UnGuard
00158 }
00159 
00160 ExCAction ExManagerLoad::InputAction(ExCAction Action)
00161 {
00162 Guard(ExCAction ExManagerLoad::InputAction(ExCAction Action))
00163         switch(Action.m_Action)
00164         {
00165         case LOAD_PART_CONFIG_FILE:
00166                 ManagerParticuleSystem->Load(Action.m_Param);
00167                 break;
00168         case LOAD_SET_OF_FILE:
00169                 LoadSetOfFile(Action.m_Param.data());
00170                 break;
00171         case LOAD_FILE:
00172                 try
00173                 {
00174                         switch(GetFileType(Action.m_Param)) 
00175                         {
00176                         case FILE_CONSOL:
00177                                 ManagerConsole->LoadStringActionFile(Action.m_Param.data());
00178                                 break;
00179                         case FILE_SET:
00180                                 LoadSetOfFile(Action.m_Param.data());
00181                                 break;
00182                         case FILE_SOUND:
00183                                 ManagerSound->LoadSound(Action.m_Param);
00184                                 break;
00185                         case FILE_MODEL:
00186                                 ManagerModel->Load(Action.m_Param);
00187                                 break;
00188                         case FILE_MAP:
00189                                 ManagerMap->Load(Action.m_Param);
00190                                 break;
00191                         case FILE_PARTICUL:
00192                                 ManagerParticuleSystem->Load(Action.m_Param);
00193                                 break;
00194                         case FILE_WINDOW:
00195                                 ManagerObjectWindow->Load(Action.m_Param);
00196                                 break;
00197                         case FILE_INTERFACE:
00198                                 ManagerInterface->Load(Action.m_Param);
00199                                 break;
00200                         case FILE_TEXTURE:
00201                                 ManagerTexture->Load(Action.m_Param);
00202                                 break;
00203                         case FILE_COMMAND:
00204                                 break;
00205                         }
00206                 }
00207                 catch(ExCExpFileNotFound)
00208                 {
00209                         *Consol<<"ExManagerLoad::ExCeption =>"<<Action.m_Param<<" File not found"<<std::endl;
00210                         return false;
00211                 }
00212                 catch(ExCExpFileReadError)
00213                 {
00214                         *Consol<<"ExManagerLoad::ExCeption =>"<<Action.m_Param<<" Read file error"<<std::endl;
00215                         return false;
00216                 }
00217                 catch(...)
00218                 {
00219                         *Consol<<"ExManagerLoad::ExCeption =>"<<Action.m_Param<<" Unknow exception"<<std::endl;
00220                         return false;
00221                 }
00222                 break;
00223         default:
00224                 *Consol<<"Can not file action in LOAD_ACTION_MAP"<<std::endl;
00225                 break;
00226         }
00227         if(Action.m_NextAction){return *Action.m_NextAction;}
00228         else{return NOTHING;}
00229 UnGuard
00230 }
00231 
00232 void ExManagerLoad::LoadSetOfFile(const char *FileName)
00233 {
00234 Guard(void ExManagerLoad::LoadSetOfFile(const char *FileName))
00235                 char                    ch;
00236         int                             RetVal;
00237         int                             FileSize;
00238         FILE                    *MyFile;
00239         bool                    endfile=false;
00240         //int                           tmp=0; // not used
00241         std::string             StBuffer;
00242         std::string             StType;
00243         char                    buffer[255];
00244 
00245 #ifdef UNIX_SRC
00246         sprintf(buffer, PREFIX "/ExNihilo/Data/%s",FileName);
00247 #else
00248         sprintf(buffer, "../Data/%s",FileName);
00249 #endif
00250 
00251         MyFile=fopen (buffer,"r");
00252         if(!MyFile)
00253         {
00254                 *Consol<<"File not found:"<<buffer<<std::endl;
00255         }else
00256         {
00257                 *Consol<<"Loading set File :"<<FileName<<std::endl;
00258 
00259                 fseek(MyFile,0,SEEK_END);
00260                 FileSize=ftell(MyFile);
00261                 //Start of file
00262                 fseek(MyFile,0,SEEK_SET);
00263                 do
00264                 {
00265                         RetVal=fread(&ch,sizeof(char),1,MyFile);
00266                 }while(ch!='#');
00267                 //reading file type;
00268                 do
00269                 {
00270                         RetVal=fread(&ch,sizeof(char),1,MyFile);
00271                         StBuffer=StBuffer+ch;   
00272                 }while(ch!='#');
00273                 if(strcmp(StBuffer.data(),"set#")==0)
00274                 {
00275 
00276                         do
00277                         {
00278 
00279                                 StBuffer.erase(StBuffer.begin(),StBuffer.end());
00280                                 do
00281                                 {
00282                                         RetVal=fread(&ch,sizeof(char),1,MyFile);
00283                                         StBuffer=StBuffer+ch;
00284                                 }while(ch!='#');
00285                                 StBuffer.erase(StBuffer.end()-1,StBuffer.end());
00286                                 StBuffer.erase(StBuffer.begin(),StBuffer.begin()+1);
00287                                 if(StBuffer.find("end of set file") != (unsigned)-1)
00288                                 {
00289                                         endfile=true;
00290                                 }else
00291                                 {
00292                                         StType=StBuffer;
00293                                         StBuffer.erase(StBuffer.begin(),StBuffer.end());
00294                                         do
00295                                         {
00296                                                 RetVal=fread(&ch,sizeof(char),1,MyFile);
00297                                                 StBuffer=StBuffer+ch;
00298                                         }while(ch!='#');
00299                                         StBuffer.erase(StBuffer.end()-1,StBuffer.end());
00300 
00301                                         if(strcmp(StType.data(),"command")==0)
00302                                         {
00303                                                 std::cout<<"Load command file :"<<StBuffer.data()<<std::endl;
00304 //                                              LoadCommandFile(StBuffer.data());
00305                                         }
00306                                         if(strcmp(StType.data(),"console")==0)
00307                                         {
00308                                                 std::cout<<"Load console file :"<<StBuffer.data()<<std::endl;
00309                                                 ManagerConsole->LoadStringActionFile(StBuffer.data());  
00310                                         }
00311                                         if(strcmp(StType.data(),"interface")==0)
00312                                         {
00313                                                 std::cout<<"Load interface file :"<<StBuffer.data()<<std::endl;
00314                                                 ManagerInterface->Load(StBuffer.data());        
00315                                         }
00316                                         if(strcmp(StType.data(),"modele")==0)
00317                                         {
00318                                                 std::cout<<"Load asc file :"<<StBuffer.data()<<std::endl;
00319                                                 ManagerModel->Load(StBuffer);   
00320                                         }
00321                                         if(strcmp(StType.data(),"sound")==0)
00322                                         {
00323                                                 std::cout<<"Load sound file :"<<StBuffer.data()<<std::endl;
00324                                                 ManagerSound->LoadSound(StBuffer.data());       
00325                                         }
00326                                         if(strcmp(StType.data(),"set")==0)
00327                                         {
00328                                                 std::cout<<"Load set file :"<<StBuffer.data()<<std::endl;
00329                                                 LoadSetOfFile(StBuffer.data()); 
00330                                         }
00331                                         if(strcmp(StType.data(),"exec")==0)
00332                                         {
00333                                                 std::cout<<"Load set file :"<<StBuffer.data()<<std::endl;
00334 
00335                                                 ExCAction action;
00336                                                 action.SetParam(StBuffer.data());
00337                                                 //LoadExecFile(&action);        
00338                                         }
00339                                         if(strcmp(StType.data(),"map")==0
00340                                                 ||strcmp(StType.data(),"bsp")==0
00341                                                 ||strcmp(StType.data(),"hgmp")==0
00342                                                 ||strcmp(StType.data(),"skyb")==0)
00343                                         {
00344                                                 std::cout<<"Load map file :"<<StBuffer.data()<<std::endl;
00345                                                 ManagerMap->Load(StBuffer);     
00346                                         }
00347                                         if(strcmp(StType.data(),"ExW")==0)
00348                                         {
00349                                                 std::cout<<"Load Window file :"<<StBuffer.data()<<std::endl;
00350                                                 ManagerObjectWindow->Load(StBuffer.data());     
00351                                         }
00352 
00353                                 }
00354                         }while(!endfile);
00355                         fclose(MyFile);
00356                 }else
00357                 {
00358                         *Consol<<FileName<<" is not a valide console file"<<std::endl;
00359                 }
00360         }
00361 UnGuard
00362 }
00363 
00364 void ExManagerLoad::DisplayFileType(void)
00365 {
00366 Guard(void ExManagerLoad::DisplayFileType(void))
00367         *Consol<<"*------------------------------------------------------------------------------------------------*"<<std::endl;
00368         *Consol<<"|                                Extension file supported by Exnihilo                            |"<<std::endl;
00369         *Consol<<"|------------------------------------------------------------------------------------------------|"<<std::endl;
00370         *Consol<<"|Description                 | Extension |  Status  |  Comment                                   |"<<std::endl;
00371         *Consol<<"|------------------------------------------------------------------------------------------------|"<<std::endl;                               
00372         *Consol<<"|Console configuration file  |  .csl     | Aviable  | Asign consol command to action             |"<<std::endl;
00373         *Consol<<"|Command configuration file  |  .comd    | Aviable  | Asign input (keyboard,mouse,...)to action  |"<<std::endl;
00374         *Consol<<"|Window files                |  .ExW     | Aviable  | Load a window from a ressource file        |"<<std::endl;
00375         *Consol<<"|------------------------------------------------------|-----------------------------------------|"<<std::endl;                               
00376         *Consol<<"|ExNihilo map file           |  .map     | Aviable  | Create map file with AscToMap converter    |"<<std::endl;
00377         *Consol<<"|Quake map file              |  .bsp     |          |                                            |"<<std::endl;
00378         *Consol<<"|------------------------------------------------------------------------------------------------|"<<std::endl;                               
00379         *Consol<<"|ASC model  file             |  .asc     | Aviable  | Create a 3d model and export him to *.asc  |"<<std::endl;
00380         *Consol<<"|MD2 (quake 2) model  file   |  .md2     | Aviable  |                                            |"<<std::endl;
00381         *Consol<<"|MD3 (quake 3) model  file   |  .md3     |          |                                            |"<<std::endl;
00382         *Consol<<"|ASE model  file             |  .ase     |          |                                            |"<<std::endl;
00383         *Consol<<"|3d studio max model  file   |  .3ds     | Aviable  |                                            |"<<std::endl;
00384         *Consol<<"|OBJ model  file             |  .obj     |          |                                            |"<<std::endl;
00385         *Consol<<"|------------------------------------------------------------------------------------------------|"<<std::endl;                               
00386         *Consol<<"|Wave sound file             |  .wav     |          |                                            |"<<std::endl;
00387         *Consol<<"|Midi sound file             |  .mid     |          |                                            |"<<std::endl;
00388         *Consol<<"|Mp3 sound file              |  .mp3     |          |                                            |"<<std::endl;
00389         *Consol<<"|------------------------------------------------------------------------------------------------|"<<std::endl;
00390         *Consol<<"|Particule system  file      |  .part    | Aviable  |  Use SDK partiucle to create *.part file   |"<<std::endl;
00391         *Consol<<"|Interface file              |  .int     | Aviable  |  Use SDK partiucle to create *.int file    |"<<std::endl;
00392         *Consol<<"|------------------------------------------------------------------------------------------------|"<<std::endl;                               
00393         *Consol<<"|Groupe of file              |  .set     | Aviable  |                                            |"<<std::endl;
00394         *Consol<<"|Groupe of action            |  .exec    | Aviable  |                                            |"<<std::endl;
00395         *Consol<<"*------------------------------------------------------------------------------------------------*"<<std::endl;
00396 UnGuard
00397 }

Généré le Tue Oct 28 12:43:36 2003 pour ExNihilo par doxygen 1.3.4