Virtual U.org
Get Personal Training on VU Today
    
Top shadow
 
 register/help
User Name:

Password:

OGAMESET.CPP Source File
Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members  

OGAMESET.CPP

Go to the documentation of this file.
00001 //Filename    : OGAMESET.CPP
00002 //Description : Object Game Set
00003 
00004 #include <ALL.H>
00005 #include <OSTR.H>
00006 #include <ODIR.H>
00007 #include <OGAMESET.H>
00008 #include <OMISC.H>
00009 
00010 //-------- Define constant -------------//
00011 
00012 #define SET_HEADER_DB       "HEADER"
00013 
00014 //--------- Begin of GameSet::init -------------//
00015 
00016 void GameSet::init() {
00017     set_opened_flag=0;                              // no set has been opened
00018 
00019     load_set_header();                              // load the info. of all sets
00020 
00021     init_flag=1;
00022 }
00023 
00024 //----------- End of GameSet::init -------------//
00025 
00026 //--------- Begin of GameSet::deinit -------------//
00027 
00028 void GameSet::deinit() {
00029     if( init_flag ) {
00030         mem_del(set_info_array);
00031 
00032         init_flag = 0;
00033     }
00034 }
00035 
00036 //----------- End of GameSet::deinit -------------//
00037 
00038 //--------- Begin of GameSet::load_set_header -------------//
00039 
00040 void GameSet::load_set_header() {
00041     int        i;
00042     Directory  setDir;
00043     SetRec    *setRec;
00044     SetInfo   *setInfo;
00045     char      *dataPtr;
00046     String     str;
00047 
00048     setDir.read( DIR_RES"*.SET", 1 );               // read in the file list of all game sets in the directory, 1-Sort file names
00049 
00050     set_count = setDir.size();                      // no. of game set available to choose
00051 
00052     err_when( !set_count );                         // error if there is no GameSet
00053 
00054     set_info_array = (SetInfo*) mem_add( sizeof(SetInfo) * set_count );
00055 
00056     //-------- read in the headers of all game sets -------//
00057 
00058     for( i=1 ; i<=set_count ; i++ ) {
00059         str  = DIR_RES;
00060         str += setDir[i]->name;
00061 
00062         set_res.init( str, 0 );                       // open the game set first
00063 
00064         dataPtr = set_res.read(SET_HEADER_DB);        // get the pointer to the header database
00065 
00066         err_when( !dataPtr );
00067 
00068         set_db.open_from_buf(dataPtr);                // read in the header database
00069 
00070         setRec  = (SetRec*) set_db.read(1);           // the header database only contains one record
00071         setInfo = set_info_array+i-1;
00072 
00073         m.rtrim_fld( setInfo->code, setRec->code, setRec->CODE_LEN );
00074         m.rtrim_fld( setInfo->des , setRec->des , setRec->DES_LEN  );
00075     }
00076 }
00077 
00078 //----------- End of GameSet::load_set_header -------------//
00079 
00080 //--------- Begin of GameSet::open_set -------------//
00081 //
00082 // Open the specific set.
00083 // Only one set can be activiated at a time in GameSet.
00084 //
00085 // <int> setId = the id. of the set; = 1 to ...
00086 //
00087 void GameSet::open_set(int setId) {
00088     err_if( setId<0 || setId>set_count )
00089         err_here();
00090 
00091     cur_set_id = setId;
00092 
00093     String str;
00094 
00095     str  = DIR_RES;
00096     str += set_info_array[setId-1].code;
00097     str += ".SET";
00098 
00099     set_res.init( str, 0 );                         // 0-don't read all into the buffer
00100 
00101     //-----------------------------------------------//
00102 
00103     set_opened_flag=1;
00104 }
00105 
00106 //----------- End of GameSet::open_set -------------//
00107 
00108 //--------- Begin of GameSet::close_set -------------//
00109 //
00110 // Close current set
00111 //
00112 void GameSet::close_set() {
00113     set_res.deinit();
00114 
00115     set_opened_flag=0;
00116 }
00117 
00118 //----------- End of GameSet::close_set -------------//
00119 
00120 //--------- Begin of GameSet::open_db -------------//
00121 //
00122 // Open a database in the current set
00123 //
00124 // <char*> dbName = the name of the database to be opened
00125 //
00126 Database* GameSet::open_db(char* dbName) {
00127     err_when(!set_opened_flag);
00128 
00129     char* dataPtr = set_res.read(dbName);
00130 
00131     err_when( !dataPtr );
00132 
00133     set_db.open_from_buf(dataPtr);
00134 
00135     return &set_db;
00136 }
00137 
00138 //----------- End of GameSet::open_db -------------//
00139 
00140 //--------- Begin of GameSet::get_db -------------//
00141 
00142 Database* GameSet::get_db() {
00143     err_when(!set_opened_flag);
00144 
00145     return &set_db;
00146 }
00147 
00148 //----------- End of GameSet::get_db -------------//
00149 
00150 //--------- Begin of GameSet::find_set -------------//
00151 //
00152 // Look for a specified game set
00153 //
00154 // <char*> setCode = the code of the game set.
00155 //
00156 // return : <int> >=1 - the id. of the game set
00157 //                  0 - the game set code is not found
00158 //
00159 int GameSet::find_set(char* setCode) {
00160     int i;
00161 
00162     for( i=0 ; i<set_count ; i++ ) {
00163         if( strcmp( set_info_array[i].code, setCode )==0 )
00164             return i+1;
00165     }
00166 
00167     return 0;
00168 }
00169 
00170 //----------- End of GameSet::find_set -------------//

Generated on Fri Aug 23 01:37:43 2002 for VirtualU by doxygen1.2.17