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

Password:

oadm_off.cpp Source File
Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members  

oadm_off.cpp

Go to the documentation of this file.
00001 //Filename    : OADM_OFF.CPP
00002 //Description : AdmOffice (Admissions and Financial Aid Office) class
00003 //Owner           : Kevin(ho)
00004 
00005 // Notes:       Steps to introduce a new class of user interface
00006 //                              1.      construct the new class
00007 //                              2.      in sys.h, add the new MODE, e.g. MODE_ADMISSIONS_AND_FINANCIAL_AID_OFFICE
00008 //                              3.      include the new header file in cc.cpp, osysdisp.cpp, osysdet.cpp
00009 //                              4.      in cc.cpp, declare a global object of the new class, with the name matching the 'extern' statement in the header file
00010 //                              5.      in osysdisp.cpp, under switch(view_mode), add the redirection to the display function
00011 //                              6.      in osysdet.cpp, under Sys::detect_view, add the redirection to the detect function
00012 //                              7.      in osysdet.cpp, under Sys::process_key, add the new hot key (optional)
00013 //                              8.      in osysdet.cpp, under Sys::detect_button, modify if necessary (see the comments there)
00014 //                              9.      the deinit function (AdmOffice::deinit()) can be called when the view_mode in 'sys' object is switched
00015 //                                      the function frees memory occupied by this object
00016 //                                      the report function would re-allocate memory when it is called (note the report_init_flag)
00017 //                                      notice the beginning section of Sys::disp_frame()
00018 // Norris 0714
00019 
00020 #include <OSYS.H>
00021 #include <OGAMESET.H>
00022 #include <OWORLDMT.H>
00023 #include <OADM_OFF.H>
00024 #include <OVGA.H>
00025 #include <OBOX.H>
00026 #include <OENROLL.H>
00027 #include <OINFO.H>
00028 #include <OIFACE.H>
00029 #include <COLOR.H>
00030 #include <OFONT.H>
00031 #include <OGAMESTR.H>
00032 #include <OGRPHYR.H>
00033 #include <OMOUSE.H>
00034 #include <OBUTTON.H>
00035 #include <OGRPNFYR.H>
00036 #include <ORADIO.H>
00037 #include <OVALSLDR.H>
00038 #include <OTEXT.H>
00039 #include <OHELP.H>
00040 #include <OPSCHOOL.H>
00041 #include <OCHANCE.H>
00042 #include <ONEWS.H>                                // 990505
00043 #include <OGRPNFT.H>
00044 #include <ODEPT.H>
00045 
00046 //------- Define constants -------//
00047 
00048 enum {                                            // the 'sub' view-modes
00049     MODE_ADMISSION = 0,
00050     MODE_STATISTICS = 1,
00051     MODE_PRIORITY = 2,
00052     MODE_FINANCIAL_AID = 3
00053 };
00054 
00055 enum {                                            // the bg image id
00056     BG_PIC_ID = 4
00057 };
00058 
00059 enum {                                            // screen coordinates
00060     REPORT_X1 = ZOOM_X1+15,
00061     REPORT_Y1 = ZOOM_Y1+25,
00062     REPORT_X2 = ZOOM_X2-15,
00063     REPORT_Y2 = ZOOM_Y2-55
00064 };
00065 
00066 enum {
00067     BOTTOM_BUTTON_X1 = REPORT_X1+80,
00068     BOTTOM_BUTTON_Y1 = REPORT_Y2+15,
00069     BOTTOM_BUTTON_X2 = REPORT_X2-80,
00070     BOTTOM_BUTTON_Y2 = REPORT_Y2+40
00071 };
00072 
00073 enum {
00074     BOTTOM_BUTTON_WIDTH = 125,
00075     BOTTOM_BUTTON_HEIGHT = 25,
00076     BOTTOM_BUTTON_DISTANCE
00077     = (BOTTOM_BUTTON_X2-BOTTOM_BUTTON_X1-BOTTOM_BUTTON_WIDTH*4)/3
00078 };
00079 
00080 // begin kevin 0718
00081 enum {
00082     MODE_ADMISSION_BOX_HEIGHT = 265,
00083     MODE_ADMISSION_BOX_WIDTH1 = 160,
00084     MODE_ADMISSION_BOX_WIDTH2 = 400,
00085     MODE_ADMISSION_BOX_WIDTH3 = 75,
00086     MODE_ADMISSION_LEGEND_HEIGHT = 26,
00087     MODE_ADMISSION_LEGEND_WIDTH = 400,
00088 
00089     MODE_ADMISSION_BARCHART_X1 = (REPORT_X1)+10,
00090     MODE_ADMISSION_BARCHART_Y1 = (REPORT_Y1)+55,
00091     MODE_ADMISSION_BARCHART_HEIGHT = 210,
00092     MODE_ADMISSION_BARCHART_WIDTH = 400,
00093     MODE_ADMISSION_BARCHART_ROW1 = 42,
00094     MODE_ADMISSION_BARCHART_ROW2 = 107,
00095     MODE_ADMISSION_BARCHART_ROW3 = 172,
00096     MODE_ADMISSION_BARCHART_ROW4 = 235,
00097     MODE_ADMISSION_BARCHART_ROW5 = 270,
00098     MODE_ADMISSION_SLIDER_WIDTH = 340,
00099 };
00100 // end kevin 0718
00101 
00102 enum {
00103     MODE_STATISTICS_GRAPH_WIDTH = 220,
00104     MODE_STATISTICS_GRAPH_HEIGHT = 115,
00105     MODE_STATISTICS_LEGEND_HEIGHT = 26,
00106     MODE_STATISTICS_LEGEND_WIDTH = 400,
00107     MODE_STATISTICS_GRAPH_HORIZONTAL_DISTANCE
00108     = (REPORT_X2-REPORT_X1-MODE_STATISTICS_GRAPH_WIDTH*3)/2,
00109     MODE_STATISTICS_GRAPH_VERTICAL_DISTANCE = 20,
00110     MODE_STATISTICS_SUB_BUTTON_X1 = 130,
00111     MODE_STATISTICS_SUB_BUTTON_Y1 = REPORT_Y2-48,
00112     SUB_BOTTOM_BUTTON_WIDTH = 200,
00113     SUB_BOTTOM_BUTTON_HEIGHT = 23,
00114     SUB_BOTTOM_BUTTON_DISTANCE = 13
00115 };
00116 
00117 enum {
00118     MODE_PRIORITY_BOX_HEIGHT = 165,
00119     MODE_PRIORITY_BOX_WIDTH = 650,
00120     MODE_PRIORITY_BOX_TAB1 = 40,
00121     MODE_PRIORITY_BOX_TAB2 = 240,
00122 #if(GAME_VERSION>=200)
00123     MODE_PRIORITY_BOX_TAB3 = 360,
00124 #else
00125     MODE_PRIORITY_BOX_TAB3 = 380,
00126 #endif
00127     MODE_PRIORITY_VALUE_SLIDER_HEIGHT = 18,
00128     MODE_PRIORITY_VALUE_SLIDER_WIDTH = 400,
00129     MODE_PRIORITY_RADIO_BUTTON_HEIGHT = 18,
00130     MODE_PRIORITY_RADIO_BUTTON_WIDTH = 350
00131 };
00132 
00133 enum {
00134     MODE_FINANCIAL_AID_BOX_HEIGHT_1 = 100,
00135     MODE_FINANCIAL_AID_BOX_HEIGHT_2 = 80,
00136     MODE_FINANCIAL_AID_BOX_HEIGHT_3 = 120,
00137     MODE_FINANCIAL_AID_BOX_DISTANCE =0,
00138     //                          = (REPORT_Y2-REPORT_Y1-MODE_FINANCIAL_AID_BOX_HEIGHT_1-MODE_FINANCIAL_AID_BOX_HEIGHT_2-MODE_FINANCIAL_AID_BOX_HEIGHT_3-15)/2,
00139     MODE_FINANCIAL_AID_VALUE_SLIDER_HEIGHT = 18,
00140     MODE_FINANCIAL_AID_VALUE_SLIDER_WIDTH = 100,
00141     MODE_FINANCIAL_AID_RADIO_BUTTON_HEIGHT = 18,
00142     MODE_FINANCIAL_AID_RADIO_BUTTON_WIDTH = 80
00143 };
00144 
00145 //-------- define static vars -----------//
00146 
00147 static char report_init_flag = 0;
00148 static char mode_init_flag = -1;                  // -1: non of the mode was init'ed
00149 
00150 static ButtonGroup bottom_button_group(4);
00151 static short *bottom_button_up_bitmap[4];
00152 static short *bottom_button_down_bitmap[4];
00153 static char *bottom_button_label[] = {
00154     "Overview",
00155     "Trends",
00156     "Priorities",
00157     "Financial aid"
00158 };
00159 
00160 static ButtonGroup sub_bottom_button_group(5);
00161 static short *sub_bottom_button_up_bitmap[5];
00162 static short *sub_bottom_button_down_bitmap[5];
00163 static char *sub_bottom_button_label[] = {
00164     "Undergraduate : traditional",
00165     "Undergraduate : nontraditional",
00166     "Master's",
00167     "Doctoral",
00168     "Distance learning",
00169 };
00170 
00171 // Notes:       the strings could be moved to Ogamestr.cpp
00172 // Norris 0714
00173 
00174 static GraphNonFinancialYear mode_statistics_graph_admit_rate;
00175 static GraphNonFinancialYear mode_statistics_graph_yield_rate;
00176 static GraphNonFinancialYear mode_statistics_graph_percent_minorities;
00177 static GraphNonFinancialYear mode_statistics_graph_avg_academic_rating;
00178 static GraphNonFinancialYear mode_statistics_graph_avg_extracurricular_activities_rating;
00179 static GraphNonFinancialYear mode_statistics_graph_avg_athletics_rating;
00180 #if(GAME_VERSION>=200)
00181 static GraphNonFinancialTrimester distance_credits_graph;
00182 #endif
00183 static GraphNonFinancialYear *mode_statistics_graph[6] = {
00184     &mode_statistics_graph_admit_rate,
00185     &mode_statistics_graph_yield_rate,
00186     &mode_statistics_graph_avg_academic_rating,
00187     &mode_statistics_graph_percent_minorities,
00188     &mode_statistics_graph_avg_extracurricular_activities_rating,
00189     &mode_statistics_graph_avg_athletics_rating
00190 };
00191 #if(GAME_VERSION>=200)
00192 static char *mode_statistics_graph_title[] = {
00193     "Distance credits demanded", "Distance credits provided",
00194     "Average academic rating", "Percent minorities",
00195     "Average extracurricular activities rating", "Average athletics rating"
00196 };
00197 #else
00198 static char *mode_statistics_graph_title[] = {
00199     "Admit rate", "Yield rate",
00200     "Average academic rating", "Percent minorities",
00201     "Average extracurricular activities rating", "Average athletics rating"
00202 };
00203 #endif
00204 
00205 static char *mode_statistics_legend_label[] = {
00206     "Player university", "Average of peer universities"
00207 };
00208 
00209 static RadioButton mode_financial_aid_radio_button_nontraditional;
00210 static RadioButton mode_financial_aid_radio_button_minorities;
00211 static RadioButton mode_financial_aid_radio_button_athletes;
00212 static ValueSlider mode_financial_aid_value_slider_nontraditional;
00213 static ValueSlider mode_financial_aid_value_slider_need;
00214 static ValueSlider mode_financial_aid_value_slider_merit;
00215 static char *mode_financial_aid_str[] = {
00216     "Percentage of traditional undergraduates' financial need the University agrees to pay",
00217     "Traditional undergraduates to be offered merit aid",
00218     //  "Will nontraditional undergraduates be eligible for financial aid?",
00219     "Nontraditional students to be offered financial aid",
00220     //  "Do you give special financial aid treatment to minorities for all students?",
00221     //## chea 121099
00222     "Do you give special financial aid treatment to minorities for all student levels?",
00223     "Do you give special financial aid treatment to athletes for all traditional undergraduates?"
00224 };
00225 static char *mode_financial_aid_radio_button_option_str1[] = {
00226     "Yes", "No"
00227 };
00228 static char *mode_financial_aid_radio_button_option_str2[] = {
00229     "None", "Medium", "High",
00230 };
00231 
00232 // begin kevin 0717
00233 static char *mode_admission_label1[] = {
00234     "Admit","Yield","rate"
00235 };
00236 
00237 static char *mode_admission_label2[] = {
00238     "Traditional undergraduate","Nontraditional undergraduate",
00239     "Master's","Doctoral","Distance learning"
00240 };
00241 
00242 static char *mode_admission_label3[] = {
00243     "Matriculants","Admits (not matriculating)","Applicants (not admitted)"
00244 };
00245 
00246 static int mode_admission_bar_color[3]={V_RED,V_GREEN,V_BLUE};
00247 
00248 static short *mode_admission_no_scaling_bitmap;
00249 static short *mode_admission_no_ar_bitmap[5];
00250 static short *mode_admission_no_yr_bitmap[5];
00251 static short *mode_admission_no_bar_bitmap[5];
00252 
00253 static ValueSlider mode_admission_target[5];
00254 
00255 // end kevin 0717
00256 
00257 // begin kevin 0723
00258 static RadioButton mode_priority_radio_button_minorities;
00259 static RadioButton mode_priority_radio_button_athletes;
00260 #if(GAME_VERSION>=200)
00261 static RadioButton mode_priority_radio_button_distance_learners;
00262 #endif
00263 static ValueSlider mode_priority_value_slider_academic_rating;
00264 static ValueSlider mode_priority_value_slider_extracur_rating;
00265 static ValueSlider mode_priority_value_slider_athletic_rating;
00266 //static ValueSlider mode_priority_value_slider_distance_learning;
00267 
00268 static char *mode_priority_str[] = {
00269     "Traditional undergraduates",
00270     "Academic performance",
00271     "Extracurricular performance",
00272     "Athletic performance",
00273     "Distance learning",
00274     //  "Do you give special admission to underrepresented minorities for all students?",
00275     //## chea 121099
00276     "Do you give special admission to underrepresented minorities for all student levels?",
00277     "Do you give special admissions treatment to athletes for all traditional undergraduates?",
00278     "Rating priority for traditional undergraduates",
00279 #if(GAME_VERSION>=200)
00280     "Acceptance of outside distance learners in courses",
00281 #endif
00282 };
00283 
00284 static char *mode_priority_radio_button_option_str[] = {
00285     "None", "Medium", "High",
00286 };
00287 
00288 #if(GAME_VERSION>=200)
00289 static char *mode_priority_radio_button_option_str1[] = {
00290     "Prohibit", "Accept", "Actively seek",
00291 };
00292 #endif
00293 
00294 // end kevin 0723
00295 
00296 //-------- define static functions ------//
00297 
00298 // Notes:       the deinit_x functions should deallocate memory used by the
00299 //                              GraphA, ValueSlider, RadioButton, etc. objects
00300 //                              the functions are called when a mode-switching is triggered
00301 //      Norris 0716
00302 
00303 static void report_admission(int);
00304 static void report_statistics(int);
00305 static void report_priority(int);
00306 static void report_financial_aid(int);
00307 static int detect_admission();
00308 static int detect_statistics();
00309 static int detect_priority();
00310 static int detect_financial_aid();
00311 static void deinit_admission();
00312 static void deinit_statistics();
00313 static void deinit_priority();
00314 static void deinit_financial_aid();
00315 
00316 typedef void (*ReportFP)(int refreshFlag);
00317 typedef int (*DetectFP)();
00318 typedef void (*DeinitFP)();
00319 
00320 static ReportFP report_func_ptr[] = {
00321     &report_admission, &report_statistics, &report_priority, &report_financial_aid
00322 };
00323 static DetectFP detect_func_ptr[] = {
00324     &detect_admission, &detect_statistics, &detect_priority, &detect_financial_aid
00325 };
00326 static DeinitFP deinit_func_ptr[] = {
00327     &deinit_admission, &deinit_statistics, &deinit_priority, &deinit_financial_aid
00328 };
00329 
00330 // 990505
00331 extern EventStruct news_event_function_array[NEWS_ID_COUNT_ONLY_CHANCE];
00332 
00333 //------- Begin of function AdmOffice::AdmOffice -----------//
00335 AdmOffice::AdmOffice() {
00336     init();
00337 }
00338 
00339 //--------- End of function AdmOffice::AdmOffice -----------//
00340 
00341 //------- Begin of function AdmOffice::~AdmOffice -----------//
00343 AdmOffice::~AdmOffice() {
00344     deinit();
00345 }
00346 
00347 //--------- End of function AdmOffice::~AdmOffice -----------//
00348 
00349 //------- Begin of function AdmOffice::deinit ---------------//
00351 void AdmOffice::deinit() {
00352     //--------- deallocate memory -------------//
00353 
00354     // ##### begin Gilbert 28/04/2001 #####//
00355     bottom_button_group.deinit_buttons();
00356     // ##### end Gilbert 28/04/2001 #####//
00357     if (*bottom_button_up_bitmap) {
00358         for (int i = 0; i < 4; i++) {
00359             mem_del(bottom_button_up_bitmap[i]);
00360             mem_del(bottom_button_down_bitmap[i]);
00361             bottom_button_up_bitmap[i] = NULL;
00362             bottom_button_down_bitmap[i] = NULL;
00363         }
00364     }
00365 
00366     (*deinit_func_ptr[current_mode])();
00367 
00368     report_init_flag = 0;
00369 }
00370 
00371 //--------- End of function AdmOffice::deinit ---------------//
00372 
00373 //------- Begin of function AdmOffice::init -----------------//
00375 void AdmOffice::init() {
00376     for (int i = 0; i < 4; i++) {
00377         bottom_button_up_bitmap[i] = NULL;
00378         bottom_button_down_bitmap[i] = NULL;
00379     }
00380     current_mode = MODE_ADMISSION;
00381     sub_current_mode=0;
00382 }
00383 
00384 //--------- End of function AdmOffice::init -----------------//
00385 
00386 //------- Begin of function AdmOffice::report ---------------//
00388 void AdmOffice::report(int refreshFlag) {
00389     vga.use_back();
00390 
00391 #if(GAME_VERSION>=200)
00392     // fix in version 2
00393     sys.is_institution_report = 1;
00394 #endif
00395 
00396     if (refreshFlag == INFO_REPAINT) {
00397         if( report_init_flag )                        // deinit it first if it has already been initialized
00398             deinit();
00399 
00400         //------------- paint the background ----------------//
00401         user_interface.bg_img(BG_PIC_ID, &vga_back);
00402 
00403         //----- initialize the bottom sub-menus buttons -----//
00404         if (!report_init_flag) {
00405             short x = BOTTOM_BUTTON_X1;
00406             for (int i = 0; i < 4; i++, x+=BOTTOM_BUTTON_WIDTH+BOTTOM_BUTTON_DISTANCE) {
00407                 user_interface.create_button_bitmap(x, BOTTOM_BUTTON_Y1,
00408                                                     x+BOTTOM_BUTTON_WIDTH, BOTTOM_BUTTON_Y1+BOTTOM_BUTTON_HEIGHT,
00409                                                     bottom_button_label[i], &bottom_button_up_bitmap[i],
00410                                                     &bottom_button_down_bitmap[i], &vga_back);
00411                 bottom_button_group[i].create_bitmapW(x, BOTTOM_BUTTON_Y1,
00412                                                       x+BOTTOM_BUTTON_WIDTH, BOTTOM_BUTTON_Y1+BOTTOM_BUTTON_HEIGHT,
00413                                                       ((i == current_mode) ? bottom_button_down_bitmap[i] : bottom_button_up_bitmap[i])+4);
00414             }
00415             report_init_flag = 1;
00416         }
00417 
00418         //----------- paint the bottom button group ---------//
00419         bottom_button_group.paint(current_mode);
00420     }
00421 
00422     //---- repaint/refresh the display of the current mode ----//
00423     (*report_func_ptr[current_mode])(refreshFlag);
00424 
00425     // Comments:        blt buffer only if repaint, because the
00426     //                                  report_x functions would handle blt_buf
00427     //                                  when refresh
00428     //                                  equivalently, in the report_x functions,
00429     //                                  only blt buffer when refresh
00430     // Norris 0714
00431 
00432     if (refreshFlag == INFO_REPAINT) {
00433         //------- blt the back buffer to front buffer -------//
00434         vga.blt_buf(ZOOM_X1, ZOOM_Y1, ZOOM_X2, ZOOM_Y2);
00435     }
00436 
00437     //##trevor 2807
00438     vga.use_front();
00439     //##trevor 2807
00440 }
00441 
00442 //---------- End of function AdmOffice::report ------------//
00443 
00444 //-------- Begin of function AdmOffice::detect ------------//
00446 int AdmOffice::detect() {
00447     vga.use_back();
00448 
00449     int rc = detect2();
00450 
00451     vga.use_front();
00452 
00453     return rc;
00454 }
00455 
00456 //---------- End of function AdmOffice::detect ------------//
00457 
00458 //-------- Begin of function AdmOffice::detect2 ------------//
00462 int AdmOffice::detect2() {
00463     if (!report_init_flag)
00464         return 0;
00465 
00466     int bottomButtonGroupDetect;
00467     if ((bottomButtonGroupDetect = bottom_button_group.detect()) >= 0) {
00468         //---- deinit the modes to free memory ----//
00469         (*deinit_func_ptr[current_mode])();
00470 
00471         //-------- change display mode ------------//
00472         bottom_button_group[current_mode].body_ptr = (void *) (bottom_button_up_bitmap[current_mode] + 4);
00473         current_mode = bottomButtonGroupDetect;
00474         bottom_button_group[current_mode].body_ptr = (void *) (bottom_button_down_bitmap[current_mode] + 4);
00475 
00476         //-------- post display redraw flag -------//
00477         sys.redraw_all_flag = 1;
00478 
00479         return 1;
00480     }
00481 
00482     if ((*detect_func_ptr[current_mode])())
00483         return 1;
00484 
00485     return 0;
00486 }
00487 
00488 //---------- End of function AdmOffice::detect2 ------------//
00489 
00490 //-------- Begin of function report_admission -------------//
00492 static int sliderVar1;
00493 static int sliderVar2;
00494 static int sliderVar3;
00495 static int sliderVar4;
00496 static int sliderVar5;
00497 
00498 //## chea 060999 adding target bar
00499 int last_year_tar = 0;
00500 short target_pos = 0;
00501 
00502 static void report_admission(int refreshFlag) {
00503     // begin Kevin 0716
00504 
00505     //temp * start
00506     static int ar_tug=10,yr_tug=24;
00507     static int ar_ug=20,yr_ug=42;
00508     static int ar_master=15,yr_master=23;
00509     static int ar_doc=12,yr_doc=23;
00510     static int ar_dist=12,yr_dist=23;
00511     static int bar[5][3];
00512 
00513     // ##### Begin Marco ##### //
00514 #if(GAME_VERSION>=200)
00515     static int initial_ar_tug=10,initial_yr_tug=24;
00516     static int initial_ar_ug=20,initial_yr_ug=42;
00517     static int initial_ar_master=15,initial_yr_master=23;
00518     static int initial_ar_doc=12,initial_yr_doc=23;
00519     static int initial_ar_dist=12,initial_yr_dist=23;
00520 #endif
00521     // ##### End Marco ###### //
00522 
00523     // top title
00524     user_interface.brighten(REPORT_X1+150,REPORT_Y1-18,REPORT_X1+575,REPORT_Y1+5);
00525     user_interface.rect(REPORT_X1+150,REPORT_Y1-18,REPORT_X1+575,REPORT_Y1+5,1);
00526     font_charts.put(REPORT_X1+220,REPORT_Y1-12,"Student Admissions Statistics and Targets");
00527 
00528     //  Communicate with Sim Engine's Output
00529     ar_tug=(int)(100*enroll_res.offers_rate[0]);
00530     yr_tug=(int)(100*enroll_res.cur_yield_rate[0]);
00531     ar_ug=(int)(100*enroll_res.offers_rate[1]);
00532     yr_ug=(int)(100*enroll_res.cur_yield_rate[1]);
00533     ar_master=(int)(100*enroll_res.offers_rate[2]);
00534     yr_master=(int)(100*enroll_res.cur_yield_rate[2]);
00535     ar_doc=(int)(100*enroll_res.offers_rate[3]);
00536     yr_doc=(int)(100*enroll_res.cur_yield_rate[3]);
00537     ar_dist=(int)(100*enroll_res.offers_rate[4]);
00538     yr_dist=(int)(100*enroll_res.cur_yield_rate[4]);
00539 
00540     // ##### Begin Marco ##### //
00541 #if(GAME_VERSION>=200)
00542     initial_ar_tug=(int)(100*enroll_res.initial_offers_rate[0]);
00543     initial_yr_tug=(int)(100*enroll_res.initial_cur_yield_rate[0]);
00544     initial_ar_ug=(int)(100*enroll_res.initial_offers_rate[1]);
00545     initial_yr_ug=(int)(100*enroll_res.initial_cur_yield_rate[1]);
00546     initial_ar_master=(int)(100*enroll_res.initial_offers_rate[2]);
00547     initial_yr_master=(int)(100*enroll_res.initial_cur_yield_rate[2]);
00548     initial_ar_doc=(int)(100*enroll_res.initial_offers_rate[3]);
00549     initial_yr_doc=(int)(100*enroll_res.initial_cur_yield_rate[3]);
00550     initial_ar_dist=(int)(100*enroll_res.initial_offers_rate[4]);
00551     initial_yr_dist=(int)(100*enroll_res.initial_cur_yield_rate[4]);
00552 #endif
00553     // ##### End Marco ##### //
00554 
00555     bar[0][0]=enroll_res.total_matrics[UG_TRADITION];
00556     bar[1][0]=enroll_res.total_matrics[UG_NONTRADITION];
00557     bar[2][0]=enroll_res.total_matrics[MASTER];
00558     bar[3][0]=enroll_res.total_matrics[DOCTOR];
00559     bar[4][0]=enroll_res.total_matrics[DISTANCE_LEARN];
00560 
00561     bar[0][1]=enroll_res.total_offers[UG_TRADITION]-bar[0][0];
00562     bar[1][1]=enroll_res.total_offers[UG_NONTRADITION]-bar[1][0];
00563     bar[2][1]=enroll_res.total_offers[MASTER]-bar[2][0];
00564     bar[3][1]=enroll_res.total_offers[DOCTOR]-bar[3][0];
00565     bar[4][1]=enroll_res.total_offers[DISTANCE_LEARN]-bar[4][0];
00566 
00567     bar[0][2]=enroll_res.total_applications[UG_TRADITION]-bar[0][1]-bar[0][0];
00568     bar[1][2]=enroll_res.total_applications[UG_NONTRADITION]-bar[1][1]-bar[1][0];
00569     bar[2][2]=enroll_res.total_applications[MASTER]-bar[2][1]-bar[2][0];
00570     bar[3][2]=enroll_res.total_applications[DOCTOR]-bar[3][1]-bar[3][0];
00571     bar[4][2]=enroll_res.total_applications[DISTANCE_LEARN]-bar[4][1]-bar[4][0];
00572 
00573     //## chea begin 020999 make the target_student_intake the same 4 every year
00574 #if(GAME_VERSION>=200)
00575     sliderVar1=enroll_res.target_enrollment[0];
00576     sliderVar2=enroll_res.target_enrollment[1];
00577     sliderVar3=enroll_res.target_enrollment[2];
00578 #else
00579     sliderVar1=enroll_res.target_student_intake[0];
00580     sliderVar2=enroll_res.target_student_intake[1];
00581     sliderVar3=enroll_res.target_student_intake[2];
00582     sliderVar5=enroll_res.target_student_intake[4];
00583 #endif
00584 
00585     /*
00586       finance.tradU_target_student_intake = enroll_res.target_student_intake[0];
00587       finance.nontradU_target_student_intake = enroll_res.target_student_intake[1];
00588       finance.master_target_student_intake = =enroll_res.target_student_intake[2];
00589       finance.dl_target_student_intake = enroll_res.target_student_intake[4];
00590     */
00591     //## chea begin 020999 make the target_student_intake the same 4 every year
00592 
00593     if (refreshFlag == INFO_REPAINT) {
00594         //--------- draw the brightened boxes ------------//
00595         user_interface.brighten(REPORT_X1, REPORT_Y1+30,
00596                                 REPORT_X2,
00597                                 REPORT_Y1+81+MODE_ADMISSION_BOX_HEIGHT);
00598         user_interface.rect(REPORT_X1, REPORT_Y1+25,
00599                             REPORT_X2,
00600                             REPORT_Y1+55+MODE_ADMISSION_BOX_HEIGHT);
00601         user_interface.rect(REPORT_X1+MODE_ADMISSION_BOX_WIDTH1,
00602                             REPORT_Y1+25,
00603                             REPORT_X1+MODE_ADMISSION_BOX_WIDTH1+MODE_ADMISSION_BOX_WIDTH2,
00604                             REPORT_Y1+55+MODE_ADMISSION_BOX_HEIGHT);
00605         user_interface.rect(REPORT_X1+MODE_ADMISSION_BOX_WIDTH1+MODE_ADMISSION_BOX_WIDTH2-3,
00606                             REPORT_Y1+25,
00607                             REPORT_X1+MODE_ADMISSION_BOX_WIDTH1+MODE_ADMISSION_BOX_WIDTH2+MODE_ADMISSION_BOX_WIDTH3,
00608                             REPORT_Y1+55+MODE_ADMISSION_BOX_HEIGHT);
00609         user_interface.rect(
00610             REPORT_X1,
00611             REPORT_Y1+25,
00612             REPORT_X2,
00613             REPORT_Y1+81+MODE_ADMISSION_BOX_HEIGHT);
00614 
00615         if (mode_init_flag != MODE_ADMISSION) {
00616             //--------- initialization of   -----------//
00617             mode_init_flag = MODE_ADMISSION;
00618 
00619             if(mode_admission_no_scaling_bitmap) {
00620                 mem_del(mode_admission_no_scaling_bitmap);
00621                 mode_admission_no_scaling_bitmap=NULL;
00622             }
00623 
00624             for (int i = 0; i < 5; i++) {
00625                 if(mode_admission_no_ar_bitmap[i]) {
00626                     mem_del(mode_admission_no_ar_bitmap[i]);
00627                     mode_admission_no_ar_bitmap[i]=NULL;
00628                 }
00629 
00630                 if(mode_admission_no_yr_bitmap[i]) {
00631                     mem_del(mode_admission_no_yr_bitmap[i]);
00632                     mode_admission_no_yr_bitmap[i]=NULL;
00633                 }
00634 
00635                 if(mode_admission_no_bar_bitmap[i]) {
00636                     mem_del(mode_admission_no_bar_bitmap[i]);
00637                     mode_admission_no_bar_bitmap[i]=NULL;
00638                 }
00639             }
00640 
00641             mode_admission_no_ar_bitmap[0]
00642                 =vga_back.save_area((REPORT_X2)-150,
00643                                     (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW1,
00644                                     (REPORT_X2)-75,
00645                                     (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW1+font_chartsm.max_font_height,
00646                                     mode_admission_no_ar_bitmap[0]);
00647             mode_admission_no_ar_bitmap[1]
00648                 =vga_back.save_area((REPORT_X2)-150,
00649                                     (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW2,
00650                                     (REPORT_X2)-75,
00651                                     (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW2+font_chartsm.max_font_height,
00652                                     mode_admission_no_ar_bitmap[1]);
00653             mode_admission_no_ar_bitmap[2]
00654                 =vga_back.save_area((REPORT_X2)-150,
00655                                     (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW3,
00656                                     (REPORT_X2)-75,
00657                                     (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW3+font_chartsm.max_font_height,
00658                                     mode_admission_no_ar_bitmap[2]);
00659             mode_admission_no_ar_bitmap[3]
00660                 =vga_back.save_area((REPORT_X2)-150,
00661                                     (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW4,
00662                                     (REPORT_X2)-75,
00663                                     (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW4+font_chartsm.max_font_height,
00664                                     mode_admission_no_ar_bitmap[3]);
00665             mode_admission_no_ar_bitmap[4]
00666                 =vga_back.save_area((REPORT_X2)-150,
00667                                     (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW5,
00668                                     (REPORT_X2)-75,
00669                                     (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW5+font_chartsm.max_font_height,
00670                                     mode_admission_no_ar_bitmap[4]);
00671 
00672             mode_admission_no_yr_bitmap[0]
00673                 =vga_back.save_area((REPORT_X2)-75,
00674                                     (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW1,
00675                                     (REPORT_X2),
00676                                     (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW1+font_chartsm.max_font_height,
00677                                     mode_admission_no_yr_bitmap[0]);
00678             mode_admission_no_yr_bitmap[1]
00679                 =vga_back.save_area((REPORT_X2)-75,
00680                                     (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW2,
00681                                     (REPORT_X2),
00682                                     (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW2+font_chartsm.max_font_height,
00683                                     mode_admission_no_yr_bitmap[1]);
00684             mode_admission_no_yr_bitmap[2]
00685                 =vga_back.save_area((REPORT_X2)-75,
00686                                     (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW3,
00687                                     (REPORT_X2),
00688                                     (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW3+font_chartsm.max_font_height,
00689                                     mode_admission_no_yr_bitmap[2]);
00690             mode_admission_no_yr_bitmap[3]
00691                 =vga_back.save_area((REPORT_X2)-75,
00692                                     (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW4,
00693                                     (REPORT_X2),
00694                                     (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW4+font_chartsm.max_font_height,
00695                                     mode_admission_no_yr_bitmap[3]);
00696             mode_admission_no_yr_bitmap[4]
00697                 =vga_back.save_area((REPORT_X2)-75,
00698                                     (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW5,
00699                                     (REPORT_X2),
00700                                     (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW5+font_chartsm.max_font_height,
00701                                     mode_admission_no_yr_bitmap[4]);
00702 
00703             mode_admission_no_bar_bitmap[0]
00704                 =vga_back.save_area(
00705                     (REPORT_X1)+MODE_ADMISSION_BOX_WIDTH1,
00706                     (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW1,
00707                     (REPORT_X1)+MODE_ADMISSION_BOX_WIDTH1+MODE_ADMISSION_BOX_WIDTH2,
00708                     (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW1+14,
00709                     mode_admission_no_bar_bitmap[0]);
00710             mode_admission_no_bar_bitmap[1]
00711                 =vga_back.save_area(
00712                     (REPORT_X1)+MODE_ADMISSION_BOX_WIDTH1,
00713                     (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW2,
00714                     (REPORT_X1)+MODE_ADMISSION_BOX_WIDTH1+MODE_ADMISSION_BOX_WIDTH2,
00715                     (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW2+14,
00716                     mode_admission_no_bar_bitmap[1]);
00717             mode_admission_no_bar_bitmap[2]
00718                 =vga_back.save_area(
00719                     (REPORT_X1)+MODE_ADMISSION_BOX_WIDTH1,
00720                     (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW3,
00721                     (REPORT_X1)+MODE_ADMISSION_BOX_WIDTH1+MODE_ADMISSION_BOX_WIDTH2,
00722                     (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW3+14,
00723                     mode_admission_no_bar_bitmap[2]);
00724             mode_admission_no_bar_bitmap[3]
00725                 =vga_back.save_area(
00726                     (REPORT_X1)+MODE_ADMISSION_BOX_WIDTH1,
00727                     (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW4,
00728                     (REPORT_X1)+MODE_ADMISSION_BOX_WIDTH1+MODE_ADMISSION_BOX_WIDTH2,
00729                     (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW4+14,
00730                     mode_admission_no_bar_bitmap[3]);
00731             mode_admission_no_bar_bitmap[4]
00732                 =vga_back.save_area(
00733                     (REPORT_X1)+MODE_ADMISSION_BOX_WIDTH1,
00734                     (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW5,
00735                     (REPORT_X1)+MODE_ADMISSION_BOX_WIDTH1+MODE_ADMISSION_BOX_WIDTH2,
00736                     (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW5+14,
00737                     mode_admission_no_bar_bitmap[4]);
00738 
00739 #if(GAME_VERSION>=200)
00740             mode_admission_target[0].init(
00741                 REPORT_X1+MODE_ADMISSION_BOX_WIDTH1+20,
00742                 REPORT_Y1+MODE_ADMISSION_BARCHART_ROW1+19,
00743                 MODE_ADMISSION_SLIDER_WIDTH,
00744                 MODE_FINANCIAL_AID_VALUE_SLIDER_HEIGHT-1,
00745                 0.8*enroll_res.new_year_student_count[0], 1.2*enroll_res.new_year_student_count[0], &sliderVar1, 1, V_BROWN, 1);
00746 
00747             mode_admission_target[1].init(
00748                 REPORT_X1+MODE_ADMISSION_BOX_WIDTH1+20,
00749                 REPORT_Y1+MODE_ADMISSION_BARCHART_ROW2+19,
00750                 MODE_ADMISSION_SLIDER_WIDTH,
00751                 MODE_FINANCIAL_AID_VALUE_SLIDER_HEIGHT-1,
00752                 0.8*enroll_res.new_year_student_count[1], 1.2*enroll_res.new_year_student_count[1], &sliderVar2, 1, V_BROWN, 1);
00753 
00754             mode_admission_target[2].init(
00755                 REPORT_X1+MODE_ADMISSION_BOX_WIDTH1+20,
00756                 REPORT_Y1+MODE_ADMISSION_BARCHART_ROW3+19,
00757                 MODE_ADMISSION_SLIDER_WIDTH,
00758                 MODE_FINANCIAL_AID_VALUE_SLIDER_HEIGHT-1,
00759                 0.8*enroll_res.new_year_student_count[2], 1.2*enroll_res.new_year_student_count[2], &sliderVar3, 1, V_BROWN, 1);
00760 #else
00761             mode_admission_target[0].init(
00762                 REPORT_X1+MODE_ADMISSION_BOX_WIDTH1+20,
00763                 REPORT_Y1+MODE_ADMISSION_BARCHART_ROW1+19,
00764                 MODE_ADMISSION_SLIDER_WIDTH,
00765                 MODE_FINANCIAL_AID_VALUE_SLIDER_HEIGHT-1,
00766                 0, bar[0][0]+bar[0][1]+bar[0][2], &sliderVar1, 1, V_BROWN, 1);
00767             //## chea 060999 init target bar here
00768             //last year target
00769             last_year_tar = enroll_res.last_year_target_student_intake[0];
00770             //         last_year_tar = enroll_res.target_student_intake[0];
00771             target_pos  = (short)((((float)mode_admission_target[0].value_slider_x2 - (float)mode_admission_target[0].value_slider_x1) / (float)mode_admission_target[0].max_val)*last_year_tar);
00772             if(last_year_tar >= mode_admission_target[0].max_val)
00773                 last_year_tar = mode_admission_target[0].max_val;
00774             if(last_year_tar <= mode_admission_target[0].min_val)
00775                 last_year_tar = 0;
00776             mode_admission_target[0].init_target(
00777                 mode_admission_target[0].value_slider_x1 + target_pos -1,
00778                 REPORT_Y1+MODE_ADMISSION_BARCHART_ROW1+17,
00779                 MODE_FINANCIAL_AID_VALUE_SLIDER_HEIGHT+8,
00780                 1, V_RED,V_RED);
00781 
00782             mode_admission_target[1].init(
00783                 REPORT_X1+MODE_ADMISSION_BOX_WIDTH1+20,
00784                 REPORT_Y1+MODE_ADMISSION_BARCHART_ROW2+19,
00785                 MODE_ADMISSION_SLIDER_WIDTH,
00786                 MODE_FINANCIAL_AID_VALUE_SLIDER_HEIGHT-1,
00787                 0, bar[1][0]+bar[1][1]+bar[1][2], &sliderVar2, 1, V_BROWN, 1);
00788             //## chea 060999 init target bar here
00789             last_year_tar = enroll_res.last_year_target_student_intake[1];
00790             target_pos  = (short)((((float)mode_admission_target[1].value_slider_x2 - (float)mode_admission_target[1].value_slider_x1) / (float)mode_admission_target[1].max_val)*last_year_tar);
00791             if(last_year_tar >= mode_admission_target[1].max_val)
00792                 last_year_tar = mode_admission_target[1].max_val;
00793             if(last_year_tar <= mode_admission_target[1].min_val)
00794                 last_year_tar = 0;
00795             mode_admission_target[1].init_target(
00796                 mode_admission_target[1].value_slider_x1 + target_pos -1,
00797                 REPORT_Y1+MODE_ADMISSION_BARCHART_ROW2+17,
00798                 MODE_FINANCIAL_AID_VALUE_SLIDER_HEIGHT+8,
00799                 1, V_RED,V_RED);
00800 
00801             mode_admission_target[2].init(
00802                 REPORT_X1+MODE_ADMISSION_BOX_WIDTH1+20,
00803                 REPORT_Y1+MODE_ADMISSION_BARCHART_ROW3+19,
00804                 MODE_ADMISSION_SLIDER_WIDTH,
00805                 MODE_FINANCIAL_AID_VALUE_SLIDER_HEIGHT-1,
00806                 0, bar[2][0]+bar[2][1]+bar[2][2], &sliderVar3, 1, V_BROWN, 1);
00807             //## chea 060999 init target bar here
00808             last_year_tar = enroll_res.last_year_target_student_intake[2];
00809             target_pos  = (short)((((float)mode_admission_target[2].value_slider_x2 - (float)mode_admission_target[2].value_slider_x1) / (float)mode_admission_target[2].max_val)*last_year_tar);
00810             if(last_year_tar >= mode_admission_target[2].max_val)
00811                 last_year_tar = mode_admission_target[2].max_val;
00812             if(last_year_tar <= mode_admission_target[2].min_val)
00813                 last_year_tar = 0;
00814             mode_admission_target[2].init_target(
00815                 mode_admission_target[2].value_slider_x1 + target_pos -1,
00816                 REPORT_Y1+MODE_ADMISSION_BARCHART_ROW3+17,
00817                 MODE_FINANCIAL_AID_VALUE_SLIDER_HEIGHT+8,
00818                 1, V_RED,V_RED);
00819 #endif
00820 
00821 #if(GAME_VERSION>=200)                      // Remove Target bar
00822 #else
00823             mode_admission_target[4].init(
00824                 REPORT_X1+MODE_ADMISSION_BOX_WIDTH1+20,
00825                 REPORT_Y1+MODE_ADMISSION_BARCHART_ROW5+19,
00826                 MODE_ADMISSION_SLIDER_WIDTH,
00827                 MODE_FINANCIAL_AID_VALUE_SLIDER_HEIGHT-1,
00828                 0, bar[4][0]+bar[4][1]+bar[4][2], &sliderVar5, 1, V_BROWN, 1);
00829             //## chea 060999 init target bar here
00830             last_year_tar = enroll_res.last_year_target_student_intake[4];
00831             last_year_tar = enroll_res.target_student_intake[4];
00832             target_pos  = (short)((((float)mode_admission_target[4].value_slider_x2 - (float)mode_admission_target[4].value_slider_x1) / (float)mode_admission_target[4].max_val)*last_year_tar);
00833             if(last_year_tar >= mode_admission_target[4].max_val)
00834                 last_year_tar = mode_admission_target[4].max_val;
00835             if(last_year_tar <= mode_admission_target[4].min_val)
00836                 last_year_tar = 0;
00837             mode_admission_target[4].init_target(
00838                 mode_admission_target[4].value_slider_x1 + target_pos -1,
00839                 REPORT_Y1+MODE_ADMISSION_BARCHART_ROW5+17,
00840                 MODE_FINANCIAL_AID_VALUE_SLIDER_HEIGHT+8,
00841                 1, V_RED,V_RED);
00842 #endif
00843 
00844             mode_admission_target[0].refresh();
00845             mode_admission_target[1].refresh();
00846             mode_admission_target[2].refresh();
00847 #if(GAME_VERSION>=200)                      // Remove target bar refresh
00848 #else
00849             mode_admission_target[4].refresh();
00850 #endif
00851 
00852         }
00853         else {
00854             //-------- repaint -----------//
00855         }
00856 
00857         // -------- display the strings ----------- //
00858         font_chartsm.put(
00859             (REPORT_X2)-425,
00860             (REPORT_Y1)+11,
00861             "Number of students");
00862         font_chartsm.put(
00863             (REPORT_X2)-125,
00864             (REPORT_Y1)-1,
00865             mode_admission_label1[0]);
00866         font_chartsm.put(
00867             (REPORT_X2)-50,
00868             (REPORT_Y1)-1,
00869             mode_admission_label1[1]);
00870         font_chartsm.put(
00871             (REPORT_X2)-120,
00872             (REPORT_Y1)+11,
00873             mode_admission_label1[2]);
00874         font_chartsm.put(
00875             (REPORT_X2)-50,
00876             (REPORT_Y1)+11,
00877             mode_admission_label1[2]);
00878 
00879         font_chartsm.put_paragraph(
00880             (REPORT_X1)+80,
00881             (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW1-10,
00882             (REPORT_X1)+180,
00883             (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW1+30,
00884             mode_admission_label2[0],-1);
00885 
00886         font_chartsm.put_paragraph(
00887             (REPORT_X1)+80,
00888             (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW2-15,
00889             (REPORT_X1)+180,
00890             (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW2+25,
00891             mode_admission_label2[1],-1);
00892         font_chartsm.put(
00893             (REPORT_X1)+110,
00894             (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW3,
00895             mode_admission_label2[2]);
00896         font_chartsm.put(
00897             (REPORT_X1)+107,
00898             (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW4,
00899             mode_admission_label2[3]);
00900 #if(GAME_VERSION>=200)                        // Remove "Distance Learning"
00901 #else
00902         font_chartsm.put(
00903             (REPORT_X1)+60,
00904             (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW5,
00905             mode_admission_label2[4]);
00906 #endif
00907 
00908 #if(GAME_VERSION>=200)
00909         font_chart_red_sm.put(
00910             (REPORT_X1)+60,
00911             (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW1+20,
00912             "Target enrollment");
00913         font_chart_red_sm.put(
00914             (REPORT_X1)+60,
00915             (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW2+20,
00916             "Target enrollment");
00917         font_chart_red_sm.put(
00918             (REPORT_X1)+60,
00919             (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW3+20,
00920             "Target enrollment");
00921 #else
00922         font_chart_red_sm.put(
00923             (REPORT_X1)+110,
00924             (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW1+20,
00925             "Target");
00926         font_chart_red_sm.put(
00927             (REPORT_X1)+110,
00928             (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW2+20,
00929             "Target");
00930         font_chart_red_sm.put(
00931             (REPORT_X1)+110,
00932             (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW3+20,
00933             "Target");
00934         font_chart_red_sm.put(
00935             (REPORT_X1)+110,
00936             (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW5+20,
00937             "Target");
00938 #endif
00939 
00940         font_chartsm.put(
00941             145,
00942             REPORT_Y1+78+MODE_ADMISSION_BOX_HEIGHT-font_chartsm.max_font_height,
00943             mode_admission_label3[0]);
00944         font_chartsm.put(
00945             43+(REPORT_X2-REPORT_X1)/3+4,
00946             REPORT_Y1+78+MODE_ADMISSION_BOX_HEIGHT-font_chartsm.max_font_height,
00947             mode_admission_label3[1]);
00948         font_chartsm.put(
00949             43+2*(REPORT_X2-REPORT_X1)/3+4,
00950             REPORT_Y1+78+MODE_ADMISSION_BOX_HEIGHT-font_chartsm.max_font_height,
00951             mode_admission_label3[2]);
00952 
00953         user_interface.bar(
00954             127,
00955             REPORT_Y1+77+MODE_ADMISSION_BOX_HEIGHT-font_chartsm.max_font_height,
00956             139,
00957             REPORT_Y1+89+MODE_ADMISSION_BOX_HEIGHT-font_chartsm.max_font_height,
00958             mode_admission_bar_color[0]);
00959 
00960         user_interface.bar(
00961             25+(REPORT_X2-REPORT_X1)/3+4,
00962             REPORT_Y1+77+MODE_ADMISSION_BOX_HEIGHT-font_chartsm.max_font_height,
00963             25+(REPORT_X2-REPORT_X1)/3+16,
00964             REPORT_Y1+89+MODE_ADMISSION_BOX_HEIGHT-font_chartsm.max_font_height,
00965             mode_admission_bar_color[1]);
00966 
00967         user_interface.bar(
00968             25+2*(REPORT_X2-REPORT_X1)/3+4,
00969             REPORT_Y1+77+MODE_ADMISSION_BOX_HEIGHT-font_chartsm.max_font_height,
00970             25+2*(REPORT_X2-REPORT_X1)/3+16,
00971             REPORT_Y1+89+MODE_ADMISSION_BOX_HEIGHT-font_chartsm.max_font_height,
00972             mode_admission_bar_color[2]);
00973     }
00974     else {                                          // refreshFlag == INFO_REFRESH
00975         //              sliderVar1=enroll_res.total_matrics[UG_TRADITION];
00976         //              sliderVar2=enroll_res.total_matrics[UG_NONTRADITION];
00977         //              sliderVar3=enroll_res.total_matrics[MASTER];
00978         //              sliderVar5=enroll_res.total_matrics[DISTANCE_LEARN];
00979 
00980 #if(GAME_VERSION>=200)                        // Remove Bar text for Target
00981 #else
00982         mode_admission_target[0].max_val=bar[0][0]+bar[0][1]+bar[0][2];
00983         mode_admission_target[1].max_val=bar[1][0]+bar[1][1]+bar[1][2];
00984         mode_admission_target[2].max_val=bar[2][0]+bar[2][1]+bar[2][2];
00985         mode_admission_target[4].max_val=bar[4][0]+bar[4][1]+bar[4][2];
00986 #endif
00987 
00988         if(sliderVar1>mode_admission_target[0].max_val)
00989             sliderVar1=mode_admission_target[0].max_val;
00990         if(sliderVar2>mode_admission_target[1].max_val)
00991             sliderVar2=mode_admission_target[1].max_val;
00992         if(sliderVar3>mode_admission_target[2].max_val)
00993             sliderVar3=mode_admission_target[2].max_val;
00994 #if(GAME_VERSION>=200)                        // Remove Bar for Target
00995 #else
00996         if(sliderVar5>mode_admission_target[4].max_val)
00997             sliderVar5=mode_admission_target[4].max_val;
00998 #endif
00999 
01000         int row_tab=0;
01001 #if(GAME_VERSION>=200)                        // Remove Row Tab
01002         for(int i=0;i<4;i++)
01003 #else
01004             for(int i=0;i<5;i++)
01005 #endif
01006             {
01007                 if(i==0)
01008                     row_tab = MODE_ADMISSION_BARCHART_ROW1;
01009                 else if (i==1)
01010                     row_tab = MODE_ADMISSION_BARCHART_ROW2;
01011                 else if (i==2)
01012                     row_tab = MODE_ADMISSION_BARCHART_ROW3;
01013 #if(GAME_VERSION>=200)
01014 #else
01015                 else if (i==4)
01016                     row_tab = MODE_ADMISSION_BARCHART_ROW5;
01017 #endif
01018 
01019                 if(i!=3) {
01020 
01021                     //## chea 040999 set a ribbon to last year target
01022                     int update_last_year_tar = enroll_res.last_year_target_student_intake[i];
01023                     if(update_last_year_tar >= mode_admission_target[i].max_val)
01024                         update_last_year_tar = mode_admission_target[i].max_val;
01025                     if(update_last_year_tar <= mode_admission_target[i].min_val)
01026                         update_last_year_tar = 0;
01027 
01028                     int update_target_pos  = (short)((((float)mode_admission_target[i].value_slider_x2 - (float)mode_admission_target[i].value_slider_x1) / (float)mode_admission_target[i].max_val)*update_last_year_tar);
01029 
01030                     mode_admission_target[i].set_target(
01031                         mode_admission_target[i].value_slider_x1 + update_target_pos -1,
01032                         REPORT_Y1+row_tab+16,
01033                         MODE_FINANCIAL_AID_VALUE_SLIDER_HEIGHT +8,
01034                         1, V_RED,V_RED);
01035 
01036                     /*
01037                       //## 080999 set target to this year
01038 
01039                       int update_year_tar = enroll_res.target_student_intake[i];
01040                       int update_target_pos  = (short)((((float)mode_admission_target[i].value_slider_x2 - (float)mode_admission_target[i].value_slider_x1) / (float)mode_admission_target[i].max_val)*update_year_tar);
01041                       mode_admission_target[i].init_target(
01042                       mode_admission_target[i].value_slider_x1 + update_target_pos -1,
01043                       REPORT_Y1+row_tab+16,
01044                       MODE_FINANCIAL_AID_VALUE_SLIDER_HEIGHT+8,
01045                       1, V_RED,V_RED);
01046                     */
01047 
01048                     vga_back.rest_area(mode_admission_no_ar_bitmap[i], 0, 0);
01049                     vga_back.rest_area(mode_admission_no_yr_bitmap[i], 0, 0);
01050                     vga_back.rest_area(mode_admission_no_bar_bitmap[i], 0, 0);
01051 
01052                     mode_admission_target[i].refresh();
01053 
01054                 }
01055             }
01056     }
01057 
01058     // ---- Draw the statistics ---- //
01059     font_chartsm.center_put((REPORT_X2)-150,
01060                             (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW1,
01061                             (REPORT_X2)-75,
01062                             (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW1+font_chartsm.max_font_height,
01063                             m.format(ar_tug, 3));
01064     font_chartsm.center_put((REPORT_X2)-75,
01065                             (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW1,
01066                             (REPORT_X2),
01067                             (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW1+font_chartsm.max_font_height,
01068                             m.format(yr_tug, 3));
01069 
01070     font_chartsm.center_put((REPORT_X2)-150,
01071                             (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW2,
01072                             (REPORT_X2)-75,
01073                             (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW2+font_chartsm.max_font_height,
01074                             m.format(ar_ug, 3));
01075     font_chartsm.center_put((REPORT_X2)-75,
01076                             (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW2,
01077                             (REPORT_X2),
01078                             (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW2+font_chartsm.max_font_height,
01079                             m.format(yr_ug, 3));
01080 
01081     font_chartsm.center_put((REPORT_X2)-150,
01082                             (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW3,
01083                             (REPORT_X2)-75,
01084                             (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW3+font_chartsm.max_font_height,
01085                             m.format(ar_master, 3));
01086     font_chartsm.center_put((REPORT_X2)-75,
01087                             (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW3,
01088                             (REPORT_X2),
01089                             (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW3+font_chartsm.max_font_height,
01090                             m.format(yr_master, 3));
01091 
01092     font_chartsm.center_put((REPORT_X2)-150,
01093                             (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW4,
01094                             (REPORT_X2)-75,
01095                             (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW4+font_chartsm.max_font_height,
01096                             m.format(ar_doc, 3));
01097     font_chartsm.center_put((REPORT_X2)-75,
01098                             (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW4,
01099                             (REPORT_X2),
01100                             (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW4+font_chartsm.max_font_height,
01101                             m.format(yr_doc, 3));
01102 
01103 #if(GAME_VERSION>=200)                          // Remove current value
01104 #else
01105     font_chartsm.center_put((REPORT_X2)-150,
01106                             (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW5,
01107                             (REPORT_X2)-75,
01108                             (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW5+font_chartsm.max_font_height,
01109                             m.format(ar_dist, 3));
01110     font_chartsm.center_put((REPORT_X2)-75,
01111                             (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW5,
01112                             (REPORT_X2),
01113                             (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW5+font_chartsm.max_font_height,
01114                             m.format(yr_dist, 3));
01115 #endif
01116 
01117     // ##### Begin Marco ##### //
01118 #if(GAME_VERSION>=200)
01119     font_chart_purple_sm.center_put((REPORT_X2)-150,
01120                                     (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW1+font_chart_purple_sm.max_font_height+3,
01121                                     (REPORT_X2)-75,
01122                                     (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW1+font_chart_purple_sm.max_font_height*2,
01123                                     m.format(initial_ar_tug, 3));
01124     font_chart_purple_sm.center_put((REPORT_X2)-75,
01125                                     (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW1+font_chart_purple_sm.max_font_height+3,
01126                                     (REPORT_X2),
01127                                     (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW1+font_chart_purple_sm.max_font_height*2,
01128                                     m.format(initial_yr_tug, 3));
01129 
01130     font_chart_purple_sm.center_put((REPORT_X2)-150,
01131                                     (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW2+font_chart_purple_sm.max_font_height+3,
01132                                     (REPORT_X2)-75,
01133                                     (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW2+font_chart_purple_sm.max_font_height*2,
01134                                     m.format(initial_ar_ug, 3));
01135     font_chart_purple_sm.center_put((REPORT_X2)-75,
01136                                     (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW2+font_chart_purple_sm.max_font_height+3,
01137                                     (REPORT_X2),
01138                                     (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW2+font_chart_purple_sm.max_font_height*2,
01139                                     m.format(initial_yr_ug, 3));
01140 
01141     font_chart_purple_sm.center_put((REPORT_X2)-150,
01142                                     (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW3+font_chart_purple_sm.max_font_height+3,
01143                                     (REPORT_X2)-75,
01144                                     (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW3+font_chart_purple_sm.max_font_height*2,
01145                                     m.format(initial_ar_master, 3));
01146     font_chart_purple_sm.center_put((REPORT_X2)-75,
01147                                     (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW3+font_chart_purple_sm.max_font_height+3,
01148                                     (REPORT_X2),
01149                                     (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW3+font_chart_purple_sm.max_font_height*2,
01150                                     m.format(initial_yr_master, 3));
01151 
01152     font_chart_purple_sm.center_put((REPORT_X2)-150,
01153                                     (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW4+font_chart_purple_sm.max_font_height+3,
01154                                     (REPORT_X2)-75,
01155                                     (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW4+font_chart_purple_sm.max_font_height*2,
01156                                     m.format(initial_ar_doc, 3));
01157     font_chart_purple_sm.center_put((REPORT_X2)-75,
01158                                     (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW4+font_chart_purple_sm.max_font_height+3,
01159                                     (REPORT_X2),
01160                                     (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW4+font_chart_purple_sm.max_font_height*2,
01161                                     m.format(initial_yr_doc, 3));
01162 
01163     /*          Kenneth --- Remove initial value
01164                 font_chart_purple_sm.center_put((REPORT_X2)-150,
01165                 (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW5+font_chart_purple_sm.max_font_height+3,
01166                 (REPORT_X2)-75,
01167                 (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW5+font_chart_purple_sm.max_font_height*2,
01168                 m.format(initial_ar_dist, 3));
01169                 font_chart_purple_sm.center_put((REPORT_X2)-75,
01170                 (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW5+font_chart_purple_sm.max_font_height+3,
01171                 (REPORT_X2),
01172                 (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW5+font_chart_purple_sm.max_font_height*2,
01173                 m.format(initial_yr_dist, 3));
01174     */
01175 #endif
01176     // ##### End Marco ##### //
01177 
01178     // ---- Draw bars ---- //
01179     int series_x1 = (REPORT_X1)+MODE_ADMISSION_BOX_WIDTH1+10;
01180     int series_x2 = (REPORT_X1)+MODE_ADMISSION_BOX_WIDTH1+MODE_ADMISSION_BOX_WIDTH2-10;
01181     int total,lastpos,newpos,barlen;
01182     int i;
01183 
01184     // BAR 1 //
01185     for(i=0,total=0;i<3;i++) {
01186         total+=bar[0][i];
01187     }
01188 
01189     //##chwg0525
01190     if(total==0)total=1;
01191 
01192     for(i=0,lastpos=series_x1;i<3;i++) {
01193         barlen=bar[0][i]*(series_x2-series_x1)/total;
01194         if(barlen<=0)barlen=0;
01195         newpos=lastpos+barlen;
01196         user_interface.bar(
01197             lastpos,
01198             (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW1,
01199             newpos,
01200             (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW1+13,
01201             mode_admission_bar_color[i]);
01202         if(barlen>20)
01203             font_barcharts.center_put(
01204                 lastpos,
01205                 (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW1,
01206                 newpos,
01207                 (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW1+13,
01208                 m.format(bar[0][i],4)
01209                 );
01210         lastpos=newpos;
01211     }
01212 
01213     // BAR 2 //
01214     for(i=0,total=0;i<3;i++) {
01215         total+=bar[1][i];
01216     }
01217 
01218     //##chwg0525
01219     if(total==0)total=1;
01220 
01221     for(i=0,lastpos=series_x1;i<3;i++) {
01222         barlen=bar[1][i]*(series_x2-series_x1)/total;
01223         if(barlen<=0)barlen=0;
01224         newpos=lastpos+barlen;
01225         user_interface.bar(
01226             lastpos,
01227             (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW2,
01228             newpos,
01229             (REPORT_Y1)+MODE_ADMISSION_BARCHART_ROW2+13,
01230             mode_admission_bar_color[i]);
01231         if(barlen>20)
01232             font_barcharts.center_put(
01233                 lastpos,
01234                 (REPORT_Y1)+MODE_A