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

Password:

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

OFIRMA.CPP

Go to the documentation of this file.
00001 //Filename    : OFirmArray.cpp
00002 //Description : FirmArray Class Definition
00003 //owner         : ho
00004 
00005 #include <OAUDIO.H>
00006 #include <OCONFIG.H>
00007 #include <ODEPT.H>
00008 #include <OFIRMRES.H>
00009 #include <OFIRM.H>
00010 #include <OSYS.H>
00011 
00012 //----------- Begin of function FirmArray Constructor -----//
00017 FirmArray::FirmArray() : DynArrayB(sizeof(Firm*), 50, DEFAULT_REUSE_INTERVAL_DAYS) {
00018 
00019 }
00020 
00021 //------------- End of function FirmArray Constructor -----//
00022 
00023 //----------- Begin of function FirmArray Destructor ------//
00025 FirmArray::~FirmArray() {
00026 
00027 }
00028 
00029 //------------- End of function FirmArray Destructor ------//
00030 
00031 //----------- Begin of function FirmArray::init --------//
00033 void FirmArray::init() {
00034     selected_recno = 0;
00035     touched_recno  = 0;
00036 }
00037 
00038 //------------- End of function FirmArray::init --------//
00039 
00040 //----------- Begin of function FirmArray::deinit --------//
00042 void FirmArray::deinit() {
00043     //#### fred 1113
00044 
00045     if( size()==0 )
00046         return;
00047 
00048     //----------------------------------//
00049 
00050     for( int i=size() ; i>0 ; i-- ) {
00051         if( !is_deleted(i) )
00052             del_firm(i);
00053     }
00054 
00055     //----------------------------------//
00056 
00057     zap();                                          // zap the DynArrayB
00058 }
00059 
00060 //------------- End of function FirmArray::deinit --------//
00061 
00062 //----------- Begin of function FirmArray::process ------//
00069 int FirmArray::process() {
00070     return 1;
00071 }
00072 
00073 //------------- End of function FirmArray::process ------//
00074 
00075 //--------- Begin of function FirmArray::add_firm ---------//
00083 int FirmArray::add_firm(int xLoc, int yLoc, int firmId) {
00084     if( !firm_res[firmId]->is_available() )         // if the firm is not available in the current university type, don't add it
00085         return 0;
00086 
00087     //  if( !world.can_build_firm(xLoc, yLoc, firmId) )
00088     //          return 0;
00089 
00090     //---------- create the firm -------------//
00091 
00092     int firmRecno = create_firm(firmId);
00093 
00094     firm_array[firmRecno]->init(xLoc, yLoc, firmId);
00095 
00096     return firmRecno;
00097 }
00098 
00099 //---------- End of function FirmArray::add_firm ---------//
00100 
00101 //--------- Begin of function FirmArray::create_firm ---------//
00111 int FirmArray::create_firm(int firmId) {
00112     Firm* firmPtr;
00113 
00114     switch(firmId) {
00115     case 1:
00116     default:
00117         firmPtr = new Firm;                         //TO change it to NAT_SCI ??
00118         break;
00119 
00120         //temp default:
00121         //err_now("FirmArray::create_firm()");
00122     }
00123 
00124     //----------------------------------------//
00125 
00126     linkin(&firmPtr);
00127     firmPtr->firm_recno = recno();
00128 
00129     return firmPtr->firm_recno;
00130 }
00131 
00132 //----------- End of function FirmArray::create_firm ---------//
00133 
00134 //--------- Begin of function FirmArray::del_firm ---------//
00135 
00136 void FirmArray::del_firm(int recNo) {
00137     Firm* firmPtr = firm_array[recNo];
00138 
00139     delete firmPtr;
00140 
00141     linkout(recNo);
00142 
00143     //--------------------------------//
00144 
00145     if( recNo == selected_recno )
00146         selected_recno = 0;
00147 
00148     //--------------------------------//
00149 
00150     if( recNo == touched_recno )
00151         touched_recno = 0;
00152 }
00153 
00154 //----------- End of function FirmArray::del_firm -----------//
00155 
00156 //--------- Begin of function FirmArray::select_firm ---------//
00157 
00158 void FirmArray::select_firm(int selectedRecno) {
00159     selected_recno = selectedRecno;
00160 
00161     if( !selectedRecno )
00162         return;
00163 
00164     Firm* firmPtr = operator[](selectedRecno);
00165 
00166     if( firmPtr->department_recno ) {               // only change the selected department recno if the newly selected firm is a departmental building, otherwise keep the current selected department
00167         department_array.selected_recno = firmPtr->department_recno;
00168         sys.bDept=true;
00169     }
00170     else {
00171         sys.bDept=false;
00172         sys.old_Dept=-1;
00173 
00174         //--------- play sound --------------//
00175 
00176         switch( firmPtr->firm_id ) {
00177         case FIRM_ADMISSIONS:
00178             audio.play_wav("ADMISSN",audio.int_to_DsVolume(config.sound_effect_volume));
00179             break;
00180 
00181         case FIRM_INDOOR_SPORTS:
00182             audio.play_wav("BBALL",audio.int_to_DsVolume(config.sound_effect_volume));
00183             break;
00184 
00185         case FIRM_STADIUM:
00186             audio.play_wav("FOOTBALL",audio.int_to_DsVolume(config.sound_effect_volume));
00187             break;
00188 
00189         case FIRM_DEVELOPMENT:
00190             audio.play_wav("DEVALUMN",audio.int_to_DsVolume(config.sound_effect_volume));
00191             break;
00192 
00193         case FIRM_FACILITIES:
00194             audio.play_wav("FACMAN",audio.int_to_DsVolume(config.sound_effect_volume));
00195             break;
00196 
00197         case FIRM_LIBRARY:
00198             audio.play_wav("INFOTECH",audio.int_to_DsVolume(config.sound_effect_volume));
00199             break;
00200 
00201         case FIRM_OLD_MAIN:
00202             audio.play_wav("INVEST",audio.int_to_DsVolume(config.sound_effect_volume));
00203             break;
00204 
00205         case FIRM_POLICE:
00206             audio.play_wav("CRIME",audio.int_to_DsVolume(config.sound_effect_volume));
00207             break;
00208 
00209         case FIRM_PARK_LOTS:
00210         case FIRM_PARK_STRUCTURE:
00211             audio.play_wav("PARKING",audio.int_to_DsVolume(config.sound_effect_volume));
00212             break;
00213         }
00214     }
00215 }
00216 
00217 //----------- End of function FirmArray::select_firm -----------//
00218 
00219 //======================================================//
00220 
00221 #ifdef DEBUG
00222 
00223 //------- Begin of function FirmArray::operator() -----//
00225 Firm* FirmArray::operator()() {
00226     Firm* firmPtr = (Firm*) get_ptr();              // if recno()==0, get_ptr() returns NULL
00227 
00228     err_if( !firmPtr )
00229         err_now( "FirmArray[recno()] is deleted" );
00230 
00231     return firmPtr;
00232 }
00233 
00234 //--------- End of function FirmArray::operator() ----//
00235 
00236 //------- Begin of function FirmArray::operator[] -----//
00238 Firm* FirmArray::operator[](int recNo) {
00239     Firm* firmPtr = (Firm*) get_ptr(recNo);
00240 
00241     if( !firmPtr )
00242         err.run( "FirmArray[] is deleted" );
00243 
00244     return firmPtr;
00245 }
00246 
00247 //--------- End of function FirmArray::operator[] ----//
00248 #endif

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