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

Password:

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

Ostd_sum.cpp

Go to the documentation of this file.
00001 //Filename    : OSTD_SUM.CPP
00002 //Description : Faculty Report
00003 
00004 #include <KEY.H>
00005 #include <OVGA.H>
00006 #include <OMATH.H>
00007 #include <OFONT.H>
00008 #include <OWORLD.H>
00009 #include <OSYS.H>
00010 #include <OINFO.H>
00011 #include <OFINANCE.H>
00012 #include <OENROLL.H>
00013 #include <OIFACE.H>
00014 #include <OBUTTON.H>
00015 #include <OVALSLDR.H>
00016 #include <ODEPT.H>
00017 #include <OPSCHOOL.H>
00018 #include <OSTUOFF.H>
00019 #include <OSTUDENT.H>
00020 #include <OGAMESTR.H>
00021 #include <OSPINNER.H>
00022 #include <OGRPHYR.H>
00023 #include <OGRPNFYR.H>                             // Large Performance Indicator
00024 #include <OPIECHRT.H>
00025 #include <OGRPH_PY.H>
00026 #include <OGRPH_PT.H>
00027 #include <OGRPH_PM.H>
00028 #include <OGRPNFT.H>
00029 #include <OTEXT.H>
00030 #include <OHELP.H>
00031 
00032 //---------- Define constant ------------//
00033 
00034 enum {
00035     REPORT_X1 = ZOOM_X1+15,
00036     REPORT_Y1 = ZOOM_Y1+15,
00037     REPORT_X2 = ZOOM_X2-15,
00038     REPORT_Y2 = ZOOM_Y2-40,
00039 };
00040 
00041 enum { FACULTY_REC_HEIGHT = 84, RESEARCH_REC_HEIGHT = 16 };
00042 
00043 //--------- Define report modes ----------//
00044 
00045 enum {                                            // the bg image id
00046     BG_PIC_ID = 8
00047 };
00048 
00049 #if(GAME_VERSION>=200)
00050 enum { STD_SUM_REPORT_TYPE_COUNT = 10};
00051 enum {
00052     REPORT_TYPE_DEPARTMENT_PROFILE1, REPORT_TYPE_DEPARTMENT_PROFILE2,
00053     REPORT_TYPE_DEPARTMENT_ACTIVITIES, REPORT_TYPE_TURNOVER,
00054     REPORT_TYPE_INSTITUTION_PROFILE1, REPORT_TYPE_INSTITUTION_PROFILE2,
00055     REPORT_TYPE_INSTITUTION_ACTIVITIES, REPORT_TYPE_INSTITUTION_UNDERGRADUATE,
00056     REPORT_TYPE_FINANCE,
00057     REPORT_TYPE_RESIDENCE_HALL,
00058 };
00059 #else
00060 enum { STD_SUM_REPORT_TYPE_COUNT = 9};
00061 enum {
00062     REPORT_TYPE_DEPARTMENT_PROFILE1, REPORT_TYPE_DEPARTMENT_PROFILE2,
00063     REPORT_TYPE_DEPARTMENT_ACTIVITIES,
00064     REPORT_TYPE_INSTITUTION_PROFILE1, REPORT_TYPE_INSTITUTION_PROFILE2,
00065     REPORT_TYPE_INSTITUTION_ACTIVITIES, REPORT_TYPE_INSTITUTION_UNDERGRADUATE,
00066     REPORT_TYPE_FINANCE,
00067     REPORT_TYPE_RESIDENCE_HALL,
00068 };
00069 #endif
00070 
00071 enum { REPORT_MODE_COUNT = 2 };
00072 enum { REPORT_MODE_INSTITUTION, REPORT_MODE_DEPARTMENT};
00073 
00074 enum { BUTTON_Y1=REPORT_Y2+10 };
00075 
00076 enum {
00077     BOTTOM_BUTTON_X1 = REPORT_X1+68,
00078     BOTTOM_BUTTON_Y1 = REPORT_Y2-20,
00079     BOTTOM_BUTTON_TAB1 = 400,
00080     BOTTOM_BUTTON_X2 = REPORT_X2,
00081     BOTTOM_BUTTON_Y2 = REPORT_Y2+10
00082 };
00083 enum {
00084     TAB1=20,
00085     TAB2=200,
00086     TAB3=210,
00087     TAB4=450,
00088     TAB5=500,
00089     TAB6=610,
00090     VTAB1=5,
00091     VTAB2=160,
00092     VTAB3=180,
00093     VTAB4=310,
00094     VTAB5=420,
00095 };
00096 
00097 enum {
00098     BOTTOM_BUTTON_WIDTH = 104,
00099     BOTTOM_BUTTON_WIDTH2 = 85,
00100     BOTTOM_BUTTON_HEIGHT = 22,
00101     BOTTOM_BUTTON_DISTANCE = 2
00102 };
00103 
00104 enum {
00105     MODE_FINANCIAL_BOX1_HEIGHT = 65,
00106     MODE_FINANCIAL_BOX2_HEIGHT = 260,
00107     MODE_FINANCIAL_GRAPH_WIDTH = 400,
00108     MODE_FINANCIAL_GRAPH_HEIGHT = 150,
00109     MODE_FINANCIAL_LEGEND_HEIGHT = 26,
00110     MODE_FINANCIAL_LEGEND_WIDTH = 400,
00111 
00112     MODE_FINANCIAL_TAB1 = 15,
00113     MODE_FINANCIAL_TAB2 = 280,
00114     MODE_FINANCIAL_TAB3 = 360,
00115     MODE_FINANCIAL_TAB4 = 400,
00116     MODE_FINANCIAL_TAB5 = 520,
00117     MODE_FINANCIAL_TAB6 = 600,
00118 };
00119 
00120 enum {
00121     FINANCIAL_BUTTON_X1 = REPORT_X1+MODE_FINANCIAL_TAB4+60,
00122     FINANCIAL_BUTTON_Y1 = REPORT_Y1+MODE_FINANCIAL_BOX1_HEIGHT+132,
00123     FINANCIAL_BUTTON_X2 = REPORT_X2,
00124     FINANCIAL_BUTTON_Y2 = REPORT_Y2-30
00125 };
00126 
00127 enum {
00128     FINANCIAL_BUTTON2_Y1 = REPORT_Y1+MODE_FINANCIAL_BOX1_HEIGHT+262,
00129     FINANCIAL_BUTTON2_Y2 = REPORT_Y2-30
00130 };
00131 
00132 enum {
00133     FINANCIAL_BUTTON_WIDTH = 200,
00134     FINANCIAL_BUTTON_HEIGHT = 20,
00135     FINANCIAL_BUTTON_DISTANCE = 3
00136 };
00137 
00138 enum {                                            // the 'sub' view-modes
00139     MODE_FINANCIAL_IMPLEMENT = 2,
00140     MODE_FINANCIAL_ANNOUNCE = 1,
00141     MODE_FINANCIAL_CONSIDER = 0,
00142 };
00143 
00144 #if(GAME_VERSION>=200)
00145 static ButtonGroup type_button_group(10);
00146 #else
00147 static ButtonGroup type_button_group(9);
00148 #endif
00149 //static short *type_button_up_bitmap[9];
00150 //static short *type_button_down_bitmap[9];
00151 #if(GAME_VERSION>=200)
00152 static Button mode_turnover_button;
00153 static Button mode_turnover_next_button;
00154 #endif
00155 
00156 static short *text_refresh_bitmap1;
00157 
00158 // Begin Financial Mode Setting
00159 static char *mode_financial_str[] = {
00160     "Gross tuition income",
00161     "Student life spending",
00162     "Student life satisfaction",
00163     "",
00164     "Change",
00165     "Change in tuition rate",
00166     "Change in student life \r\nexpenditures"
00167 };
00168 
00169 static char *mode_financial_label[] = {
00170     "Revenue", "Expenditure","Profit", "Loss",
00171 };
00172 
00173 #if(GAME_VERSION>=200)
00174 static char* mode_turnover_label1[] = {
00175     "Prior year's","Admissions","","","Current",
00176 };
00177 
00178 static char* mode_turnover_label2[] = {
00179     "enrollment","target","Graduations","Dropouts","enrollment",
00180 };
00181 
00182 static char* mode_turnover_row_label[] = {
00183     "Student level","Undergraduate traditional","Undergraduates nontraditional",
00184     "Graduate: Master's","Graduate: Doctoral","Total",
00185 };
00186 #endif
00187 
00188 static short *mode_financial_stats_bitmap;
00189 static Spinner financial_spinner_budget1;
00190 static Spinner financial_spinner_budget2;
00191 static ButtonGroup financial_button_group1(3);
00192 static short *financial_button1_up_bitmap[3];
00193 static short *financial_button1_down_bitmap[3];
00194 static ButtonGroup financial_button_group2(3);
00195 static short *financial_button2_up_bitmap[3];
00196 static short *financial_button2_down_bitmap[3];
00197 static char *financial_button_label[] = {
00198     "Consider for next year", "Promise for next year", "Implement now"
00199 };
00200 static char financial_current_mode = MODE_FINANCIAL_CONSIDER;
00201 
00202 static GraphYear mode_financial_graph_profitloss1;
00203 static GraphYear mode_financial_graph_profitloss2;
00204 static GraphPerformanceIndicatorMonth mode_financial_graphicon;
00205 static Text mode_financial_text;
00206 static char *mode_financial_graph_title="";
00207 static char *mode_financial_legend_label[] = {
00208     "Gross tuition revenue","Student life spending",
00209 };
00210 
00211 // End Financial Mode Setting
00212 
00213 // Begin Residence Hall Mode Setting
00214 static Text mode_hall_text;
00215 static char *mode_hall_str[] = {
00216     "Occupied beds/ Available beds",
00217     "Percentage of traditional undergraduate students in residence halls"
00218 };
00219 
00220 static char *mode_hall_legend1[] = {
00221     "Available beds","Occupied beds"
00222 };
00223 
00224 static char *mode_hall_legend2[] = {
00225     "Tuition rate","Room & board rate"
00226 };
00227 
00228 static GraphNonFinancialYear mode_hall_graph1;
00229 static GraphNonFinancialYear mode_hall_graph2;
00230 static ValueSlider mode_hall_value_slider;
00231 // End Residence Hall Mode Setting
00232 
00233 static Department*  cur_dept_ptr;
00234 // the department whose faculty we are looking at
00235 
00236 //static char* reportModeStrArray[]
00237 // = { "Institution", "Department" };
00238 
00239 #if(GAME_VERSION>=200)
00240 static char* reportTypeStrArray[]
00241 = {
00242     "Levels", "Profiles","Activities",           "Turnover",
00243     "Levels", "Profiles","Activities","Undergraduate","Finance","Tuition &\nResidence halls",
00244 };
00245 #else
00246 static char* reportTypeStrArray[]
00247 = {
00248     "Levels", "Profiles","Activities",
00249     "Levels", "Profiles","Activities","Undergraduate","Finance","Residence halls",
00250 };
00251 #endif
00252 
00253 #if(GAME_VERSION>=200)
00254 static char* std_sum_rank_label[] = {
00255     "Undergraduate traditional",
00256     "Undergraduate nontraditional",
00257     "Graduate : master's",
00258     "Graduate : doctoral",
00259     "",
00260     "Total",
00261 };
00262 #else
00263 static char* std_sum_rank_label[] = {
00264     "Undergraduate traditional",
00265     "Undergraduate nontraditional",
00266     "Graduate : master's",
00267     "Graduate : doctoral",
00268     "Distance learners\r\n(Undergraduates)",
00269     "Total",
00270 };
00271 #endif
00272 
00273 static char* std_sum_ge_label[] = {
00274     "Nonminority male",
00275     "Nonminority female",
00276     "Minority male",
00277     "Minority female",
00278     "Total",
00279 };
00280 static char* std_sum_title[] = {
00281     "Student Distribution by Student Level",
00282     "Student Distribution by Gender and Ethnicity",
00283 };
00284 
00285 static char* std_sum_title2[] = {
00286     "Academic talent",
00287     "Academic performance",
00288     "Number of degrees awarded",
00289     "Undergraduate talent",
00290     "Undergraduate satisfaction"
00291 };
00292 
00293 static char* std_sum_title3[] = {
00294     "Academic talent",
00295     "Academic performance",
00296     "Number of degrees awarded",
00297     "Time to degree (years)",
00298     "Number of dropouts",
00299 #if(GAME_VERSION>=200)
00300     "Morale",
00301 #endif
00302 };
00303 
00304 static char* std_sum_label2[] = {
00305     "Undergraduate students","Master's and professional students","Doctoral students",
00306     "Academic","Extracurricular","Athletics",
00307     "Academic","Student life","Athletics","Morale\r\n(overall satisfaction)"
00308 };
00309 
00310 static PieChart std_sum_rank_piechart;
00311 static PieChart std_sum_gender_ethnic_piechart;
00312 static GraphPerformanceIndicatorTrimester mode_std_sum_graphicon_t[14];
00313 static GraphPerformanceIndicatorMonth mode_std_sum_graphicon_m[14];
00314 static GraphPerformanceIndicatorYear mode_std_sum_graphicon_y[14];
00315 #if(GAME_VERSION>=200)
00316 static GraphPerformanceIndicatorTrimester mode_std_sum_student_morale;
00317 #endif
00318 #if(GAME_VERSION>=200)
00319 static Text std_sum_text[15];
00320 #else
00321 static Text std_sum_text[14];
00322 #endif
00323 static Text std_sum_text2[14];
00324 static char report_init_flag=0;
00325 
00327 //----- Begin of Summary Report 1 ------//
00328 
00329 void PlayerSchool::summary_student_report_1(int refreshFlag) {
00330     static int percentDataArray[MAX_STUDENT_LEVEL+1];
00331     static int xStart = 1991, xEnd = 1998;          //*** temporary ***//
00332 
00333     static int data_num=HISTORY_YEAR_COUNT;
00334     static int data_numT=HISTORY_TRIMESTER_COUNT;
00335     //  static int *dataArray[MAX_STUDENT_LEVEL];   //## chea 270999 change this and try org.
00336     static int *dataArray[MAX_STUDENT_LEVEL+1];     //## chea 270999 change this and try org.
00337 #if(GAME_VERSION>=200)
00338     //  static int *initialDataArray[MAX_STUDENT_LEVEL+1];   //Marco
00339     int initialDataArray[MAX_STUDENT_LEVEL+1];      //Marco new
00340 #endif
00341 
00342     int rankLevelCount[MAX_STUDENT_LEVEL+1];
00343 #if(GAME_VERSION>=200)
00344     int initialRankLevelCount[MAX_STUDENT_LEVEL+1]; //marco
00345 #endif
00346     int deptRecno;
00347 
00348     memset( rankLevelCount,0, sizeof(rankLevelCount) );
00349 #if(GAME_VERSION>=200)
00350     //marco
00351     memset( initialRankLevelCount,0, sizeof(initialRankLevelCount) );
00352 #endif
00353 
00354     //---- determine the department for display the faculty records ----//
00355     if(current_report_mode==REPORT_MODE_DEPARTMENT) {
00356         if( department_array.selected_recno )
00357             deptRecno = department_array.selected_recno;
00358         cur_dept_ptr = department_array[deptRecno];
00359         //-- department wide --//
00360         for(int i=0;i<MAX_STUDENT_LEVEL_N_TOTAL;i++) {
00361             //                  dataArray[i] = cur_dept_ptr->student_level_history[i];  //## chea 270999 org
00362             dataArray[i] = cur_dept_ptr->dept_student_level_history[i];
00363 #if(GAME_VERSION>=200)
00364             //marco
00365             initialDataArray[i] = cur_dept_ptr->initial_dept_student_level_history[i];
00366 #endif
00367 
00368             rankLevelCount[i]=dataArray[i][data_numT-1];//## chea 270999  org
00369             //                  rankLevelCount[i]=dataArray[i];
00370 #if(GAME_VERSION>=200)
00371             //initialRankLevelCount[i]=initialDataArray[i][data_numT-1];                        //marco
00372             //marco     new
00373             initialRankLevelCount[i]=initialDataArray[i];
00374 #endif
00375         }
00376     }
00377     else {
00378         //-- Institution wide --//
00379         for(int i=0;i<MAX_STUDENT_LEVEL_N_TOTAL;i++) {
00380             //## chea 270999 update tri.
00381             //                  dataArray[i]=department_array.student_level_history[i];  //## chea 270999//org.
00382             //                  rankLevelCount[i]=dataArray[i][data_num-1];              //## chea 270999//org.
00383 
00384             //## chea 270999//org.
00385             dataArray[i]=player_school.ins_student_level_history[i];
00386             //## chea added the gen_dept_student back in  //## chea 270999//org.
00387             rankLevelCount[i]=dataArray[i][data_numT-1] + department_res.general_dept.dept_student_level_no[i];
00388 
00389             // ##### Begin Marco ##### //
00390 #if(GAME_VERSION>=200)
00391             initialDataArray[i]=player_school.initial_ins_student_level_history[i];
00392             //                  initialRankLevelCount[i]=initialDataArray[i][data_numT-1] + department_res.general_dept.initial_dept_student_level_no[i];
00393             //NEW
00394             initialRankLevelCount[i]=initialDataArray[i] + department_res.general_dept.initial_dept_student_level_no[i];
00395 #endif
00396             // ##### End Marco ##### //
00397 
00398         }
00399     }
00400 
00401     //  if(rankLevelCount[MAX_STUDENT_LEVEL_N_TOTAL-1]>1e-9)
00402     //          for(int i=0;i<MAX_STUDENT_LEVEL_N_TOTAL;i++)
00403     //                          percentDataArray[i]=(rankLevelCount[i]*100)/rankLevelCount[MAX_STUDENT_LEVEL_N_TOTAL-1];
00404 
00405     int sum=0;
00406     for(int i=0;i<MAX_STUDENT_LEVEL;i++) {
00407 #if(GAME_VERSION>=200)
00408         if ( i == DISTANCE_LEARN )                    // don't count distance learning in ver2
00409             continue;
00410 #endif
00411         sum+=rankLevelCount[i];
00412     }
00413     rankLevelCount[MAX_STUDENT_LEVEL_N_TOTAL-1]=sum;
00414 
00415     // ##### Begin Marco ##### //
00416 #if(GAME_VERSION>=200)
00417     int initialSum=0;
00418     for(i=0;i<MAX_STUDENT_LEVEL_N_TOTAL-1;i++) {
00419         if ( i == 4 )
00420             continue;
00421         initialSum+=initialRankLevelCount[i];
00422     }
00423     initialRankLevelCount[MAX_STUDENT_LEVEL_N_TOTAL-1]=initialSum;
00424 #endif
00425     // ##### End Marco ##### //
00426     if(sum!=0) {
00427         int diff=200;
00428         for(i=0;i<MAX_STUDENT_LEVEL_N_TOTAL;i++) {
00429             percentDataArray[i]=(rankLevelCount[i]*100)/sum;
00430             diff-=percentDataArray[i];
00431         }
00432         int maxpercent=percentDataArray[0],maxi=0;
00433         for(i=1;i<MAX_STUDENT_LEVEL_N_TOTAL-1;i++) {
00434             if(percentDataArray[i]>maxpercent) {
00435                 maxpercent=percentDataArray[i];
00436                 maxi=i;
00437             }
00438         }
00439         percentDataArray[maxi]+=diff;
00440     }
00441     else
00442         for(i=0;i<MAX_STUDENT_LEVEL_N_TOTAL;i++)
00443             percentDataArray[i]=0;
00444 
00445     //------ paint the background -------//
00446     vga.use_back();
00447     if( refreshFlag == INFO_REPAINT ) {
00448         if( report_init_flag )                        // deinit it first if it has already been initialized
00449             summary_student_report_deinit();
00450 
00451         report_init_flag = 1;
00452 
00453         user_interface.bg_img(BG_PIC_ID, &vga_back);
00454         user_interface.brighten(
00455             REPORT_X1+TAB1,
00456             REPORT_Y1+VTAB1+20,
00457             REPORT_X1+TAB2,
00458             REPORT_Y1+VTAB4
00459             );
00460         user_interface.brighten(
00461             REPORT_X1+TAB2,
00462             REPORT_Y1+VTAB1+20,
00463             REPORT_X2,
00464             REPORT_Y1+VTAB4);
00465 
00466         user_interface.rect(
00467             REPORT_X1+TAB2-2,
00468             REPORT_Y1+VTAB1+20,
00469             REPORT_X2,
00470             REPORT_Y1+VTAB4,1);
00471         /*
00472           user_interface.brighten(
00473           REPORT_X1+TAB2+45,
00474           REPORT_Y1+VTAB1-15,
00475           REPORT_X1+TAB2+325,
00476           REPORT_Y1+VTAB1+8);
00477 
00478           user_interface.rect(
00479           REPORT_X1+TAB2+45,
00480           REPORT_Y1+VTAB1-15,
00481           REPORT_X1+TAB2+325,
00482           REPORT_Y1+VTAB1+8);
00483 
00484           font_charts.put(
00485           REPORT_X1+TAB2+60,
00486           REPORT_Y1+VTAB1-15,
00487           std_sum_title[0]);
00488         */
00489         // top title
00490         user_interface.brighten(REPORT_X1+100,REPORT_Y1-13,REPORT_X1+630,REPORT_Y1+10);
00491         user_interface.rect(REPORT_X1+100,REPORT_Y1-13,REPORT_X1+630,REPORT_Y1+10,1);
00492         font_charts.put(REPORT_X1+230,REPORT_Y1-8,std_sum_title[0]);
00493 
00494         //----- initialize the bottom sub-menus buttons -----//
00495 
00496         text_refresh_bitmap1=NULL;
00497         text_refresh_bitmap1=vga_back.save_area(
00498             REPORT_X1+TAB4,
00499             REPORT_Y1+VTAB1,
00500             REPORT_X2-100,
00501             REPORT_Y1+VTAB4,
00502             text_refresh_bitmap1);
00503 
00504         short x = BOTTOM_BUTTON_X1;
00505         short y = BOTTOM_BUTTON_Y1;
00506         font_chartsm.put(REPORT_X1-10,y+2,"Department :");
00507         font_chartsm.put(REPORT_X1-10,y+30,"  Institution :");
00508         for (int i = 0; i < 3; i++, x+=BOTTOM_BUTTON_WIDTH+BOTTOM_BUTTON_DISTANCE)
00509             type_button_group[i].create_text(x, y,
00510                                              x+BOTTOM_BUTTON_WIDTH, y+BOTTOM_BUTTON_HEIGHT,
00511                                              reportTypeStrArray[i]);
00512 #if(GAME_VERSION>=200)                        //  Turnover
00513         type_button_group[i].create_text(x+BOTTOM_BUTTON_WIDTH+BOTTOM_BUTTON_DISTANCE, y,
00514                                          x+BOTTOM_BUTTON_WIDTH+BOTTOM_BUTTON_WIDTH+BOTTOM_BUTTON_DISTANCE, y+BOTTOM_BUTTON_HEIGHT,
00515                                          reportTypeStrArray[i]);
00516 #endif
00517         x = BOTTOM_BUTTON_X1;
00518         y = BOTTOM_BUTTON_Y1+28;
00519 #if(GAME_VERSION>=200)
00520         for (i = 4; i < 9; i++, x+=BOTTOM_BUTTON_WIDTH+BOTTOM_BUTTON_DISTANCE)
00521 #else
00522             for (i = 3; i < 9; i++, x+=BOTTOM_BUTTON_WIDTH+BOTTOM_BUTTON_DISTANCE)
00523 #endif
00524                 type_button_group[i].create_text(x, y,
00525                                                  x+BOTTOM_BUTTON_WIDTH, y+BOTTOM_BUTTON_HEIGHT,
00526                                                  reportTypeStrArray[i]);
00527 
00528 #if(GAME_VERSION>=200)
00529         y = BOTTOM_BUTTON_Y1;
00530         type_button_group[i].create_text(x, y,
00531                                          x+BOTTOM_BUTTON_WIDTH+10, y+BOTTOM_BUTTON_HEIGHT+28,
00532                                          reportTypeStrArray[i]);
00533 #endif
00534 
00535         /*              for (int i = 0; i < 3; i++, x+=BOTTOM_BUTTON_WIDTH+BOTTOM_BUTTON_DISTANCE)
00536                         {
00537                         user_interface.create_button_bitmap(x, y,
00538                         x+BOTTOM_BUTTON_WIDTH, y+BOTTOM_BUTTON_HEIGHT,
00539                         reportTypeStrArray[i], &type_button_up_bitmap[i],
00540                         &type_button_down_bitmap[i], &vga_back);
00541                         type_button_group[i].create_bitmapW(x, y,
00542                         x+BOTTOM_BUTTON_WIDTH, y+BOTTOM_BUTTON_HEIGHT,
00543                         ((i == current_report_type) ? type_button_down_bitmap[i] : type_button_up_bitmap[i])+4);
00544                         }
00545 
00546                         x = BOTTOM_BUTTON_X1;
00547                         y = BOTTOM_BUTTON_Y1+28;
00548 
00549                         for (i = 3; i < 9; i++, x+=BOTTOM_BUTTON_WIDTH+BOTTOM_BUTTON_DISTANCE)
00550                         {
00551                         user_interface.create_button_bitmap(x, y,
00552                         x+BOTTOM_BUTTON_WIDTH, y+BOTTOM_BUTTON_HEIGHT,
00553                         reportTypeStrArray[i], &type_button_up_bitmap[i],
00554                         &type_button_down_bitmap[i], &vga_back);
00555                         type_button_group[i].create_bitmapW(x, y,
00556                         x+BOTTOM_BUTTON_WIDTH, y+BOTTOM_BUTTON_HEIGHT,
00557                         ((i == current_report_type) ? type_button_down_bitmap[i] : type_button_up_bitmap[i])+4);
00558                         }
00559         */
00560 
00561 #if(GAME_VERSION>=200)
00562         std_sum_rank_piechart.init(
00563             REPORT_X1+TAB1,
00564             REPORT_Y1+VTAB1+20,
00565             REPORT_X1+TAB2,
00566             REPORT_Y1+VTAB4,
00567             4, rankLevelCount, &xStart,&xEnd,
00568             NULL, NULL, NULL, 1, 1, 0, 3);
00569 #else
00570         std_sum_rank_piechart.init(
00571             REPORT_X1+TAB1,
00572             REPORT_Y1+VTAB1+20,
00573             REPORT_X1+TAB2,
00574             REPORT_Y1+VTAB4,
00575             5, rankLevelCount, &xStart,&xEnd,
00576             NULL, NULL, NULL, 1, 1, 0, 3);
00577 #endif
00578 
00579         std_sum_rank_piechart.refresh();
00580 
00581         //-------- draw the legend --------------//
00582 
00583         for(i=0;i<MAX_STUDENT_LEVEL_N_TOTAL;i++) {
00584 #if(GAME_VERSION>=200)
00585             if (i == 4)
00586                 continue;
00587 #endif
00588             font_chartsm.put_paragraph(
00589                 REPORT_X1+TAB3+60,
00590                 REPORT_Y1+VTAB1+i*43+43,
00591                 REPORT_X1+TAB4+20,
00592                 REPORT_Y1+VTAB1+i*43+83,
00593                 std_sum_rank_label[i]);
00594             font_chartsm.right_put(
00595                 REPORT_X1+TAB4+60,
00596                 REPORT_Y1+VTAB1+i*43+43,
00597                 m.format(rankLevelCount[i],4));
00598             // ##### Begin Marco ##### //
00599 #if(GAME_VERSION>=200)
00600             font_chart_purple_sm.right_put(
00601                 REPORT_X1+TAB5+60,
00602                 REPORT_Y1+VTAB1+i*43+43,
00603                 m.format(initialRankLevelCount[i],4));
00604 #else
00605             font_chartsm.right_put(
00606                 REPORT_X1+TAB5+60,
00607                 REPORT_Y1+VTAB1+i*43+43,
00608                 m.format(percentDataArray[i],3));
00609 #endif
00610             // ##### End Marco ##### //
00611             //                  mode_std_sum_graphicon_y[i].init(              //## chea 270999
00612             mode_std_sum_graphicon_t[i].init(
00613                 REPORT_X1+TAB6,
00614                 REPORT_Y1+VTAB1+i*43+30,
00615                 REPORT_X1+TAB6+80,
00616                 REPORT_Y1+VTAB1+i*43+68,
00617                 //                                      1 ,&data_num ,dataArray[i] , 1, 0, 3);   //## chea 270999
00618                 1 ,&data_numT ,dataArray[i] , 1, 0, 3);
00619 
00620             //                  mode_std_sum_graphicon_y[i].paint();           //## chea 270999
00621             mode_std_sum_graphicon_t[i].paint();
00622 
00623             if(i!=MAX_STUDENT_LEVEL_N_TOTAL-1)
00624                 user_interface.bar(
00625                     REPORT_X1+TAB3+30,
00626                     REPORT_Y1+VTAB1+43+i*43,
00627                     REPORT_X1+TAB3+41,
00628                     REPORT_Y1+VTAB1+55+i*43,
00629                     ((std_sum_rank_piechart.series_color)[i]));
00630         }
00631     }
00632     else {
00633         std_sum_rank_piechart.refresh();
00634         vga_back.rest_area(text_refresh_bitmap1,0,0);
00635         for(int i=0;i<MAX_STUDENT_LEVEL_N_TOTAL;i++) {
00636 
00637 #if(GAME_VERSION>=200)
00638             if ( i==4 )
00639                 continue;
00640 #endif
00641             font_chartsm.right_put(
00642                 REPORT_X1+TAB4+60,
00643                 REPORT_Y1+VTAB1+i*43+43,
00644                 m.format(rankLevelCount[i],4));
00645 
00646             // ##### Begin Marco ##### //
00647 #if(GAME_VERSION>=200)
00648             font_chart_purple_sm.right_put(
00649                 REPORT_X1+TAB5+60,
00650                 REPORT_Y1+VTAB1+i*43+43,
00651                 m.format(initialRankLevelCount[i],4));
00652 #else
00653             font_chartsm.right_put(
00654                 REPORT_X1+TAB5+60,
00655                 REPORT_Y1+VTAB1+i*43+43,
00656                 m.format(percentDataArray[i],3));
00657 #endif
00658             // ##### End Marco ##### //
00659         }
00660         for(i=0;i<MAX_STUDENT_LEVEL_N_TOTAL;i++) {
00661             //                  mode_std_sum_graphicon_y[i].refresh();   //## chea 270999
00662 #if(GAME_VERSION>=200)
00663             if ( i==4 )
00664                 continue;
00665 #endif
00666             mode_std_sum_graphicon_t[i].refresh();
00667         }
00668     }
00669 
00670     //----------------- show objects ----------------//
00671     type_button_group.paint(current_report_type);
00672 #if(GAME_VERSION>=200)
00673     // draw the buttons into different color
00674     int x1, x2, y1, y2;
00675 
00676     for ( int z=3; z<10; z++ ) {
00677         x1 = type_button_group[z].x1+1;
00678         x2 = type_button_group[z].x2+1;
00679         y1 = type_button_group[z].y1+1;
00680         y2 = type_button_group[z].y2-1;
00681 
00682         user_interface.rect(x1,y1,x2,y2,1,70);
00683     }
00684 #endif
00685 
00686     //------ 9Mar Trevor                        //BUGHERE
00687 
00688     int totalCourse=0, totalStudent=0;
00689 
00690     for( int j=department_array.size() ; j>0 ; j-- ) {
00691         Department* deptPtr = department_array[j];
00692 
00693         for( i=deptPtr->student_array.size() ; i>0 ; i-- ) {
00694             if( deptPtr->student_array.is_deleted(i) )
00695                 continue;
00696 
00697             totalStudent ++;
00698             totalCourse += deptPtr->student_array[i]->total_course_all;
00699         }
00700     }
00701 
00702     //----------- paint the summary button group ---------//
00703 
00704     vga.blt_buf(ZOOM_X1, ZOOM_Y1, ZOOM_X2, ZOOM_Y2);
00705     vga.use_front();
00706 }
00707 
00708 //----- End of Summary Report 1 ------//
00710 
00712 //----- Begin of Summary Report 2 ------//
00713 
00714 void PlayerSchool::summary_student_report_2(int refreshFlag) {
00715     static int percentDataArray2[GENDER_ETHNIC_TYPE_COUNT_N_TOTAL];
00716     static int xStart = 1991, xEnd = 1998;          //*** temporary ***//
00717 
00718     int deptRecno;
00719     static int data_num=HISTORY_YEAR_COUNT;
00720     static int data_numT=HISTORY_TRIMESTER_COUNT;   //## chea 290999 update this report
00721     static int *dataArray[GENDER_ETHNIC_TYPE_COUNT_N_TOTAL];
00722     int genderEthnicGroupCount[GENDER_ETHNIC_TYPE_COUNT_N_TOTAL];
00723     memset( genderEthnicGroupCount,0, sizeof(genderEthnicGroupCount) );
00724 
00725     // ##### Begin Marco ##### //
00726 #if(GAME_VERSION>=200)
00727     //  static int *initialDataArray[GENDER_ETHNIC_TYPE_COUNT_N_TOTAL];
00728     //NEW
00729     int initialDataArray[GENDER_ETHNIC_TYPE_COUNT_N_TOTAL];
00730     int initialGenderEthnicGroupCount[GENDER_ETHNIC_TYPE_COUNT_N_TOTAL];
00731     memset( initialGenderEthnicGroupCount,0, sizeof(initialGenderEthnicGroupCount) );
00732 #endif
00733     // ##### End Marco ##### //
00734 
00735     //---- determine the department for display the faculty records ----//
00736     if(current_report_mode==REPORT_MODE_DEPARTMENT) {
00737         if( department_array.selected_recno )
00738             deptRecno = department_array.selected_recno;
00739         cur_dept_ptr = department_array[deptRecno];
00740 
00741         //-- department wide --//
00742         for(int i=0;i<GENDER_ETHNIC_TYPE_COUNT_N_TOTAL;i++) {
00743             //## chea 290999 update this report
00744             //                  dataArray[i]=cur_dept_ptr->student_gender_history[i];
00745             dataArray[i]=cur_dept_ptr->dept_gender_student_level_history[i];
00746             genderEthnicGroupCount[i]=dataArray[i][data_numT-1];
00747 
00748             // ##### begin Marco ###### //
00749 #if(GAME_VERSION>=200)
00750             initialDataArray[i]=cur_dept_ptr->initial_dept_gender_student_level_history[i];
00751             //                  initialGenderEthnicGroupCount[i]=initialDataArray[i][data_numT-1];
00752             //new
00753             initialGenderEthnicGroupCount[i]=initialDataArray[i];
00754 #endif
00755             // ##### End Marco ###### //
00756         }
00757     }
00758     else {
00759         //-- Institution wide --//
00760         for(int i=0;i<GENDER_ETHNIC_TYPE_COUNT_N_TOTAL;i++) {
00761             //## chea 290999 update this report
00762             //                  dataArray[i]=department_array.student_gender_history[i];
00763             dataArray[i]=player_school.ins_gender_student_level_history[i];
00764             genderEthnicGroupCount[i]=dataArray[i][data_numT-1];
00765 
00766             // ##### Begin Marco ##### //
00767 #if(GAME_VERSION>=200)
00768             initialDataArray[i]=player_school.initial_ins_gender_student_level_history[i];
00769             //                  initialGenderEthnicGroupCount[i]=initialDataArray[i][data_numT-1];
00770             //marco new
00771             initialGenderEthnicGroupCount[i]=initialDataArray[i];
00772 #endif
00773             // ##### End Marco ##### //
00774         }
00775     }
00776 
00777     int sum=0;
00778     for(int i=0;i<GENDER_ETHNIC_TYPE_COUNT_N_TOTAL-1;i++)
00779         sum+=genderEthnicGroupCount[i];
00780     genderEthnicGroupCount[GENDER_ETHNIC_TYPE_COUNT_N_TOTAL-1]=sum;
00781     // ##### Begin Marco ##### //
00782 #if(GAME_VERSION>=200)
00783     int initialSum=0;
00784     for(i=0;i<GENDER_ETHNIC_TYPE_COUNT_N_TOTAL-1;i++)
00785         initialSum+=initialGenderEthnicGroupCount[i];
00786     initialGenderEthnicGroupCount[GENDER_ETHNIC_TYPE_COUNT_N_TOTAL-1]=initialSum;
00787 #endif
00788     // ##### End MArco ##### //
00789 
00790     if(sum!=0) {
00791         int diff=200;
00792         for(i=0;i<GENDER_ETHNIC_TYPE_COUNT_N_TOTAL;i++) {
00793             percentDataArray2[i]=(genderEthnicGroupCount[i]*100)/sum;
00794             diff-=percentDataArray2[i];
00795         }
00796         int maxpercent=percentDataArray2[0],maxi=0;
00797         for(i=1;i<GENDER_ETHNIC_TYPE_COUNT_N_TOTAL-1;i++) {
00798             if(percentDataArray2[i]>maxpercent) {
00799                 maxpercent=percentDataArray2[i];
00800                 maxi=i;
00801             }
00802         }
00803         percentDataArray2[maxi]+=diff;
00804     }
00805     else
00806         for(i=0;i<GENDER_ETHNIC_TYPE_COUNT_N_TOTAL;i++)
00807             percentDataArray2[i]=0;
00808 
00809     //------ paint the background -------//
00810     vga.use_back();
00811     if( refreshFlag == INFO_REPAINT ) {
00812         if( report_init_flag )                        // deinit it first if it has already been initialized
00813             summary_student_report_deinit();
00814 
00815         report_init_flag = 1;
00816 
00817         user_interface.bg_img(BG_PIC_ID, &vga_back);
00818         user_interface.brighten(
00819             REPORT_X1+TAB1,
00820             REPORT_Y1+VTAB1+20,
00821             REPORT_X1+TAB2,
00822             REPORT_Y1+VTAB4
00823             );
00824 
00825         user_interface.brighten(
00826             REPORT_X1+TAB2,
00827             REPORT_Y1+VTAB1+20,
00828             REPORT_X2,
00829             REPORT_Y1+VTAB4);
00830         user_interface.rect(
00831             REPORT_X1+TAB2-2,
00832             REPORT_Y1+VTAB1+20,
00833             REPORT_X2,
00834             REPORT_Y1+VTAB4,1);
00835 
00836         // top title
00837         user_interface.brighten(REPORT_X1+100,REPORT_Y1-13,REPORT_X1+630,REPORT_Y1+10);
00838         user_interface.rect(REPORT_X1+100,REPORT_Y1-13,REPORT_X1+630,REPORT_Y1+10,1);
00839         font_charts.put(REPORT_X1+180,REPORT_Y1-8,std_sum_title[1]);
00840 
00841         //----- initialize the bottom sub-menus buttons -----//
00842 
00843         text_refresh_bitmap1=NULL;
00844         text_refresh_bitmap1=vga_back.save_area(
00845             REPORT_X1+TAB4,
00846             REPORT_Y1+VTAB1,
00847             REPORT_X2-100,
00848             REPORT_Y1+VTAB4,
00849             text_refresh_bitmap1);
00850 
00851         short x = BOTTOM_BUTTON_X1;
00852         short y = BOTTOM_BUTTON_Y1;
00853         font_chartsm.put(REPORT_X1-10,y+2,"Department :");
00854         font_chartsm.put(REPORT_X1-10,y+30,"  Institution :");
00855         for (int i = 0; i < 3; i++, x+=BOTTOM_BUTTON_WIDTH+BOTTOM_BUTTON_DISTANCE)
00856             type_button_group[i].create_text(x, y,
00857                                              x+BOTTOM_BUTTON_WIDTH, y+BOTTOM_BUTTON_HEIGHT,
00858                                              reportTypeStrArray[i]);
00859 #if(GAME_VERSION>=200)                        //  Turnover
00860         type_button_group[i].create_text(x+BOTTOM_BUTTON_WIDTH+BOTTOM_BUTTON_DISTANCE, y,
00861                                          x+BOTTOM_BUTTON_WIDTH+BOTTOM_BUTTON_WIDTH+BOTTOM_BUTTON_DISTANCE, y+BOTTOM_BUTTON_HEIGHT,
00862                                          reportTypeStrArray[i]);
00863 #endif
00864         x = BOTTOM_BUTTON_X1;
00865         y = BOTTOM_BUTTON_Y1+28;
00866 #if(GAME_VERSION>=200)
00867         for (i = 4; i < 9; i++, x+=BOTTOM_BUTTON_WIDTH+BOTTOM_BUTTON_DISTANCE)
00868 #else
00869             for (i = 3; i < 9; i++, x+=BOTTOM_BUTTON_WIDTH+BOTTOM_BUTTON_DISTANCE)
00870 #endif
00871                 type_button_group[i].create_text(x, y,
00872                                                  x+BOTTOM_BUTTON_WIDTH, y+BOTTOM_BUTTON_HEIGHT,
00873                                                  reportTypeStrArray[i]);
00874 
00875 #if(GAME_VERSION>=200)
00876         y = BOTTOM_BUTTON_Y1;
00877         type_button_group[i].create_text(x, y,
00878                                          x+BOTTOM_BUTTON_WIDTH+10, y+BOTTOM_BUTTON_HEIGHT+28,
00879                                          reportTypeStrArray[i]);
00880 #endif
00881 
00882         std_sum_gender_ethnic_piechart.init(
00883             REPORT_X1+TAB1,
00884             REPORT_Y1+VTAB1+20,
00885             REPORT_X1+TAB2,
00886             REPORT_Y1+VTAB4,
00887             4, genderEthnicGroupCount, &xStart,&xEnd,
00888             NULL, NULL, NULL, 1, 1, 0, 3);
00889 
00890         std_sum_gender_ethnic_piechart.refresh();
00891 
00892         //-------- draw the legend --------------//
00893 
00894         for(i=0;i<GENDER_ETHNIC_TYPE_COUNT_N_TOTAL;i++) {
00895             font_chartsm.put(
00896                 REPORT_X1+TAB3+60,
00897                 REPORT_Y1+VTAB1+i*47+43,
00898                 std_sum_ge_label[i]);
00899             font_chartsm.right_put(
00900                 REPORT_X1+TAB4+60,
00901                 REPORT_Y1+VTAB1+i*47+43,
00902                 m.format(genderEthnicGroupCount[i],4));
00903             // ##### Begin Marco ##### //
00904 #if(GAME_VERSION>=200)
00905             font_chart_purple_sm.right_put(
00906                 REPORT_X1+TAB5+60,
00907                 REPORT_Y1+VTAB1+i*47+43,
00908                 m.format(initialGenderEthnicGroupCount[i],4));
00909 #else
00910             font_chartsm.right_put(
00911                 REPORT_X1+TAB5+60,
00912                 REPORT_Y1+VTAB1+i*47+43,
00913                 m.format(percentDataArray2[i],3));
00914 #endif
00915             // ##### End Marco ##### //
00916             //                  mode_std_sum_graphicon_y[i].init(            //## chea 290999 update this report
00917             mode_std_sum_graphicon_t[i].init(           //## chea 290999 update this report
00918                 REPORT_X1+TAB6,
00919                 REPORT_Y1+VTAB1+i*47+30,
00920                 REPORT_X1+TAB6+80,
00921                 REPORT_Y1+VTAB1+i*47+72,
00922                 //                              1 ,&data_num ,dataArray[i] , 1, 0, 3);    //## chea 290999 update this report
00923                 1 ,&data_numT ,dataArray[i] , 1, 0, 3);
00924 
00925             //                  mode_std_sum_graphicon_y[i].paint();         //## chea 290999 update this report
00926             mode_std_sum_graphicon_t[i].paint();
00927 
00928             if(i!=GENDER_ETHNIC_TYPE_COUNT_N_TOTAL-1)
00929                 user_interface.bar(
00930                     REPORT_X1+TAB3+30,
00931                     REPORT_Y1+VTAB1+43+i*47,
00932                     REPORT_X1+TAB3+41,
00933                     REPORT_Y1+VTAB1+55+i*47,
00934                     ((std_sum_gender_ethnic_piechart.series_color)[i]));
00935         }
00936     }
00937     else {
00938         std_sum_gender_ethnic_piechart.refresh();
00939         vga_back.rest_area(text_refresh_bitmap1,0,0);
00940         for(i=0;i<GENDER_ETHNIC_TYPE_COUNT_N_TOTAL;i++) {
00941             font_chartsm.right_put(
00942                 REPORT_X1+TAB4+60,
00943                 REPORT_Y1+VTAB1+i*47+43,
00944                 m.format(genderEthnicGroupCount[i],4));
00945             // ##### Begin Marco ##### //
00946 #if(GAME_VERSION>=200)
00947             font_chart_purple_sm.right_put(
00948                 REPORT_X1+TAB5+60,
00949                 REPORT_Y1+VTAB1+i*47+43,
00950                 m.format(initialGenderEthnicGroupCount[i],4));
00951 #else
00952             font_chartsm.right_put(
00953                 REPORT_X1+TAB5+60,
00954                 REPORT_Y1+VTAB1+i*47+43,
00955                 m.format(percentDataArray2[i],3));
00956 #endif
00957             // ##### End Marco ##### //
00958             //                  mode_std_sum_graphicon_y[i].refresh();
00959             mode_std_sum_graphicon_t[i].refresh();      //## chea 290999
00960         }
00961     }
00962 
00963     //----------------- show objects ----------------//
00964     type_button_group.paint(current_report_type);
00965 #if(GAME_VERSION>=200)
00966     // draw the buttons into different color
00967     int x1, x2, y1, y2;
00968 
00969     for ( int z=3; z<10; z++ ) {
00970         x1 = type_button_group[z].x1+1;
00971         x2 = type_button_group[z].x2+1;
00972         y1 = type_button_group[z].y1+1;
00973         y2 = type_button_group[z].y2-1;
00974 
00975         user_interface.rect(x1,y1,x2,y2,1,70);
00976     }
00977 #endif
00978     //----------- paint the summary button group ---------//
00979     vga.blt_buf(ZOOM_X1, ZOOM_Y1, ZOOM_X2, ZOOM_Y2);
00980     vga.use_front();
00981 }
00982 
00983 //----- End of Summary Report 2 ------//
00985 
00987 //----- Begin of Summary Report 3 ------//
00988 void PlayerSchool::summary_student_report_3(int refreshFlag) {
00989     int tab1=10;
00990     int tab2=230;
00991     int tab3=300;
00992     int tab4=380;
00993     int tab5=450;
00994     int tab6=530;
00995     int tab7=610;
00996     int vtab1=15;
00997     int vtab2=160;
00998     int vtab3=193;
00999     int vtab4=338;
01000     static int data_num1=HISTORY_MONTH_COUNT;
01001     static int data_num2=HISTORY_YEAR_COUNT;
01002 #if(GAME_VERSION>=200)
01003     static int numSeriesData2 = HISTORY_TRIMESTER_COUNT;
01004 #endif
01005     static int v1[3];
01006     static int v2[3];
01007     static int v3[3];
01008     static float v4[3];
01009     static float v5[3];
01010 #if(GAME_VERSION>=200)
01011     static float v6;
01012 #endif
01013     static int dataArray1[8][HISTORY_MONTH_COUNT];
01014     static int dataArray2[3][HISTORY_YEAR_COUNT];
01015     static int dataArray3[8][HISTORY_MONTH_COUNT];
01016     static float dataArray4[DEGREE_TYPE_COUNT][HISTORY_YEAR_COUNT];
01017     static float dataArray5[DEGREE_TYPE_COUNT][HISTORY_YEAR_COUNT];
01018 #if(GAME_VERSION>=200)
01019     static float *dataArray6;
01020 #endif
01021 
01022     // ##### Begin MArco ##### //
01023 #if(GAME_VERSION>=200)
01024     static int initialv1[3];
01025     static int initialv2[3];
01026     static int initialv3[3];
01027     static float initialv4[3];
01028     static float initialv5[3];
01029 #if(GAME_VERSION>=200)
01030     static float initialv6;
01031 #endif
01032     int initialDataArray1[8][HISTORY_MONTH_COUNT];
01033     int initialDataArray2[3][HISTORY_YEAR_COUNT];
01034     // int initialDataArray3[8][HISTORY_MONTH_COUNT];
01035     float initialDataArray4[DEGREE_TYPE_COUNT][HISTORY_YEAR_COUNT];
01036     float initialDataArray5[DEGREE_TYPE_COUNT][HISTORY_YEAR_COUNT];
01037 
01038     memset(initialDataArray1,0,sizeof(initialDataArray1));
01039     memset(initialDataArray2,0,sizeof(initialDataArray2));
01040 #endif
01041     // ##### End MArco ##### //
01042     int deptRecno=1;
01043 
01044     memset(dataArray1,0,sizeof(dataArray1));
01045     memset(dataArray2,0,sizeof(dataArray2));
01046 
01047     //---- determine the department for display the faculty records ----//
01048     if(current_report_mode==REPORT_MODE_DEPARTMENT) {
01049         if( department_array.selected_recno )
01050             deptRecno = department_array.selected_recno;
01051 
01052         cur_dept_ptr = department_array[deptRecno];
01053 
01054 #if(GAME_VERSION>=200)
01055         dataArray6=cur_dept_ptr->p_student_morale_history;
01056 #endif
01057 
01058         //-- department wide --//
01059         for(int j=0;j<HISTORY_MONTH_COUNT;j++) {
01060             dataArray1[0][j]=cur_dept_ptr->student_array.talent_academic_all[BACHELOR_DEGREE][j];
01061             dataArray1[1][j]=cur_dept_ptr->student_array.talent_academic_all[MASTER_DEGREE][j];
01062             dataArray1[2][j]=cur_dept_ptr->student_array.talent_academic_all[DOCTOR_DEGREE][j];
01063             dataArray1[3][j]=cur_dept_ptr->student_array.performance_academic_ug[j];
01064 
01065             // ##### Begin Marco ##### //
01066 #if(GAME_VERSION>=200)
01067             initialDataArray1[0][j]=cur_dept_ptr->student_array.initial_talent_academic_all[BACHELOR_DEGREE][j];
01068             initialDataArray1[1][j]=cur_dept_ptr->student_array.initial_talent_academic_all[MASTER_DEGREE][j];
01069             initialDataArray1[2][j]=cur_dept_ptr->student_array.initial_talent_academic_all[DOCTOR_DEGREE][j];
01070             initialDataArray1[3][j]=cur_dept_ptr->student_array.initial_performance_academic_ug[j];
01071 #endif
01072             // ##### End MArco ##### //
01073         }
01074 
01075         for(j=0;j<HISTORY_YEAR_COUNT;j++) {
01076 #if(GAME_VERSION>=200)
01077             dataArray2[0][j]=cur_dept_ptr->student_array.bachelor_degree[j]+
01078                 cur_dept_ptr->student_array.non_ug_bachelor_degree[j];
01079 #else
01080             dataArray2[0][j]=cur_dept_ptr->student_array.bachelor_degree[j];
01081 #endif
01082             dataArray2[1][j]=cur_dept_ptr->student_array.master_degree[j];
01083             dataArray2[2][j]=cur_dept_ptr->student_array.doctor_degree[j];
01084             dataArray4[0][j]=cur_dept_ptr->student_array.fake_disp_time_to_degree[BACHELOR_DEGREE][j];
01085             dataArray4[1][j]=cur_dept_ptr->student_array.time_to_degree[MASTER_DEGREE][j];
01086             dataArray4[2][j]=cur_dept_ptr->student_array.time_to_degree[DOCTOR_DEGREE][j];
01087             dataArray5[0][j]=cur_dept_ptr->student_array.dropout_rate[BACHELOR_DEGREE][j];
01088             dataArray5[1][j]=cur_dept_ptr->student_array.dropout_rate[MASTER_DEGREE][j];
01089             dataArray5[2][j]=cur_dept_ptr->student_array.dropout_rate[DOCTOR_DEGREE][j];
01090 
01091             // #### Begin Marco ##### //
01092 #if(GAME_VERSION>=200)
01093             initialDataArray2[0][j]=cur_dept_ptr->student_array.initial_bachelor_degree[j];
01094             initialDataArray2[1][j]=cur_dept_ptr->student_array.initial_master_degree[j];
01095             initialDataArray2[2][j]=cur_dept_ptr->student_array.initial_doctor_degree[j];
01096             initialDataArray4[0][j]=cur_dept_ptr->student_array.initial_fake_disp_time_to_degree[BACHELOR_DEGREE][j];
01097             initialDataArray4[1][j]=cur_dept_ptr->student_array.initial_time_to_degree[MASTER_DEGREE][j];
01098             initialDataArray4[2][j]=cur_dept_ptr->student_array.initial_time_to_degree[DOCTOR_DEGREE][j];
01099             initialDataArray5[0][j]=cur_dept_ptr->student_array.initial_dropout_rate[BACHELOR_DEGREE][j];
01100             initialDataArray5[1][j]=cur_dept_ptr->student_array.initial_dropout_rate[MASTER_DEGREE][j];
01101             initialDataArray5[2][j]=cur_dept_ptr->student_array.initial_dropout_rate[DOCTOR_DEGREE][j];
01102 #endif
01103             // ##### End MArco ##### //
01104         }
01105         for(j=0;j<3;j++) {
01106             v1[j]=dataArray1[j][HISTORY_MONTH_COUNT-1];
01107             v3[j]=dataArray2[j][HISTORY_YEAR_COUNT-1];
01108             v4[j]=dataArray4[j][HISTORY_YEAR_COUNT-1];
01109             v5[j]=dataArray5[j][HISTORY_YEAR_COUNT-1];
01110 
01111             // #### Begin MArco #### //
01112 #if(GAME_VERSION>=200)
01113             initialv1[j]=initialDataArray1[j][HISTORY_MONTH_COUNT-1];
01114             initialv3[j]=initialDataArray2[j][HISTORY_YEAR_COUNT-1];
01115             initialv4[j]=initialDataArray4[j][HISTORY_YEAR_COUNT-1];
01116             initialv5[j]=initialDataArray5[j][HISTORY_YEAR_COUNT-1];
01117 #endif
01118             // ##### End MArco #### //
01119         }
01120         v2[0]=dataArray1[3][HISTORY_MONTH_COUNT-1];
01121 #if(GAME_VERSION>=200)
01122         v6 = dataArray6[HISTORY_TRIMESTER_COUNT-1];
01123         initialv6 = cur_dept_ptr->initial_p_student_morale;
01124 #endif
01125 
01126         // ##### Begin MArco #####//
01127 #if(GAME_VERSION>=200)
01128         initialv2[0]=initialDataArray1[3][HISTORY_MONTH_COUNT-1];
01129 #endif
01130         // ##### End Marco ##### //
01131     }
01132     else {
01133         //-- Institution wide --//
01134 #if(GAME_VERSION>=200)
01135         dataArray6=department_array.p_student_morale_history;
01136 #endif
01137 
01138         for(int j=0;j<HISTORY_MONTH_COUNT;j++) {
01139             dataArray1[0][j]=player_school.talent_academic_all[BACHELOR_DEGREE][j];
01140             dataArray1[1][j]=player_school.talent_academic_all[MASTER_DEGREE][j];
01141             dataArray1[2][j]=player_school.talent_academic_all[DOCTOR_DEGREE][j];
01142             dataArray1[3][j]=player_school.performance_academic_ug[j];
01143 
01144             // ##### Begin Marco ##### //
01145 #if(GAME_VERSION>=200)
01146             initialDataArray1[0][j]=player_school.initial_talent_academic_all[BACHELOR_DEGREE][j];
01147             initialDataArray1[1][j]=player_school.initial_talent_academic_all[MASTER_DEGREE][j];
01148             initialDataArray1[2][j]=player_school.initial_talent_academic_all[DOCTOR_DEGREE][j];
01149             initialDataArray1[3][j]=player_school.initial_performance_academic_ug[j];
01150 #endif
01151             // ##### End Marco ##### //
01152         }
01153 
01154         for(j=0;j<HISTORY_YEAR_COUNT;j++) {
01155 #if(GAME_VERSION>=200)
01156             dataArray2[0][j]=player_school.bachelor_degree[j]+
01157                 player_school.non_ug_bachelor_degree[j];
01158 #else
01159             dataArray2[0][j]=player_school.bachelor_degree[j];
01160 #endif
01161             dataArray2[1][j]=player_school.master_degree[j];
01162             dataArray2[2][j]=player_school.doctor_degree[j];
01163             dataArray4[0][j]=player_school.fake_disp_time_to_degree[BACHELOR_DEGREE][j];
01164             dataArray4[1][j]=player_school.time_to_degree[MASTER_DEGREE][j];
01165             dataArray4[2][j]=player_school.time_to_degree[DOCTOR_DEGREE][j];
01166             dataArray5[0][j]=player_school.dropout_rate[BACHELOR_DEGREE][j];
01167             dataArray5[1][j]=player_school.dropout_rate[MASTER_DEGREE][j];
01168             dataArray5[2][j]=player_school.dropout_rate[DOCTOR_DEGREE][j];
01169 
01170             // ##### begin MArco ##### //
01171 #if(GAME_VERSION>=200)
01172             initialDataArray2[0][j]=player_school.initial_bachelor_degree[j];
01173             initialDataArray2[1][j]=player_school.initial_master_degree[j];
01174             initialDataArray2[2][j]=player_school.initial_doctor_degree[j];
01175             //                  initialDataArray4[0][j]=player_school.initial_fake_disp_time_to_degree[BACHELOR_DEGREE][j];
01176             //NEW
01177             initialDataArray4[0][j]=player_school.initial_fake_disp_time_to_degree[j];
01178             initialDataArray4[1][j]=player_school.initial_time_to_degree[MASTER_DEGREE][j];
01179             initialDataArray4[2][j]=player_school.initial_time_to_degree[DOCTOR_DEGREE][j];
01180             initialDataArray5[0][j]=player_school.initial_dropout_rate[BACHELOR_DEGREE][j];
01181             initialDataArray5[1][j]=player_school.initial_dropout_rate[MASTER_DEGREE][j];
01182             initialDataArray5[2][j]=player_school.initial_dropout_rate[DOCTOR_DEGREE][j];
01183 #endif
01184             // ##### End Marco ##### //
01185         }
01186 
01187         for(j=0;j<3;j++) {
01188             v1[j]=dataArray1[j][HISTORY_MONTH_COUNT-1];
01189             v3[j]=dataArray2[j][HISTORY_YEAR_COUNT-1];
01190             v4[j]=dataArray4[j][HISTORY_YEAR_COUNT-1];
01191             v5[j]=dataArray5[j][HISTORY_YEAR_COUNT-1];
01192 
01193             // ##### begin Marco ##### //
01194 #if(GAME_VERSION>=200)
01195             initialv1[j]=initialDataArray1[j][HISTORY_MONTH_COUNT-1];
01196             initialv3[j]=initialDataArray2[j][HISTORY_YEAR_COUNT-1];
01197             initialv4[j]=initialDataArray4[j][HISTORY_YEAR_COUNT-1];
01198             initialv5[j]=initialDataArray5[j][HISTORY_YEAR_COUNT-1];
01199 #endif
01200             // ##### /End Marco ##### //
01201         }
01202         v2[0]=dataArray1[3][HISTORY_MONTH_COUNT-1];
01203 #if(GAME_VERSION>=200)
01204         v6 = dataArray6[HISTORY_TRIMESTER_COUNT-1];
01205         initialv6 = player_school.sub_score_start[S_STUDENT_MORALE];
01206         // marco
01207         initialv2[0]=initialDataArray1[3][HISTORY_MONTH_COUNT-1];
01208 #endif
01209     }
01210 
01211     //------ paint the background -------//
01212     vga.use_back();
01213     if( refreshFlag == INFO_REPAINT ) {
01214 
01215         if( report_init_flag )                        // deinit it first if it has already been initialized
01216             summary_student_report_deinit();
01217         report_init_flag =1;
01218 
01219         // paint the background image
01220         user_interface.bg_img(BG_PIC_ID, &vga_back);
01221 #if(GAME_VERSION>=200)
01222         // the big lower rectangle of table 1
01223         user_interface.brighten(REPORT_X1+tab1-5,REPORT_Y1+vtab1+4,
01224                                 REPORT_X2-tab1,REPORT_Y1+vtab2);
01225         // the small upper rectangle of table 1
01226         user_interface.brighten(REPORT_X1+tab2,REPORT_Y1+vtab1-13,
01227                                 REPORT_X2-tab1,REPORT_Y1+vtab1+4);
01228 
01229         // the big lower rectangle of table 2
01230         user_interface.brighten(REPORT_X1+tab1-5,REPORT_Y1+vtab3+4,
01231                                 REPORT_X2-tab1,REPORT_Y1+vtab4);
01232         // the small upper rectangle of table 2
01233         user_interface.brighten(REPORT_X1+tab2,REPORT_Y1+vtab3-30,
01234                                 REPORT_X2-tab1,REPORT_Y1+vtab3+4);
01235 
01236         user_interface.rect(  REPORT_X1+tab2,REPORT_Y1+vtab1-15,
01237                               REPORT_X1+tab4+3,REPORT_Y1+vtab2,1);
01238         user_interface.rect(  REPORT_X1+tab4,REPORT_Y1+vtab1-15,
01239                               REPORT_X1+tab6+3,REPORT_Y1+vtab2,1);
01240         user_interface.rect(  REPORT_X1+tab6,REPORT_Y1+vtab1-15,
01241                               REPORT_X2-tab1,REPORT_Y1+vtab2,1);
01242         user_interface.rect(  REPORT_X1+tab1-5,REPORT_Y1+vtab1+4,
01243                               REPORT_X2-tab1,REPORT_Y1+vtab2,1);
01244 
01245         user_interface.rect(  REPORT_X1+tab2,REPORT_Y1+vtab3-30,
01246                               REPORT_X1+tab4+3,REPORT_Y1+vtab4,1);
01247         user_interface.rect(  REPORT_X1+tab4,REPORT_Y1+vtab3-30,
01248                               REPORT_X1+tab6+3,REPORT_Y1+vtab4,1);
01249         user_interface.rect(  REPORT_X1+tab6,REPORT_Y1+vtab3-30,
01250                               REPORT_X2-tab1,REPORT_Y1+vtab4,1);
01251         user_interface.rect(  REPORT_X1+tab1-5,REPORT_Y1+vtab3+4,
01252                               REPORT_X2-tab1,REPORT_Y1+vtab4,1);
01253 #else
01254         user_interface.brighten(REPORT_X1+tab1-5,REPORT_Y1+vtab1+4,
01255                                 REPORT_X1+tab6,REPORT_Y1+vtab2);
01256         user_interface.brighten(REPORT_X1+tab2,REPORT_Y1+vtab1-13,
01257                                 REPORT_X1+tab6,REPORT_Y1+vtab1+4);
01258 
01259         user_interface.brighten(REPORT_X1+tab1-5,REPORT_Y1+vtab3+4,
01260                                 REPORT_X2-tab1,REPORT_Y1+vtab4);
01261         user_interface.brighten(REPORT_X1+tab2,REPORT_Y1+vtab3-30,
01262                                 REPORT_X2-tab1,REPORT_Y1+vtab3+4);
01263 
01264         user_interface.rect(  REPORT_X1+tab2,REPORT_Y1+vtab1-15,
01265                               REPORT_X1+tab4+3,REPORT_Y1+vtab2,1);
01266         user_interface.rect(  REPORT_X1+tab4,REPORT_Y1+vtab1-15,
01267                               REPORT_X1+tab6+3,REPORT_Y1+vtab2,1);
01268         //              user_interface.rect(    REPORT_X1+tab6,REPORT_Y1+vtab1-30,
01269         //                                                                      REPORT_X2-tab1,REPORT_Y1+vtab2);
01270         user_interface.rect(