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

Password:

Opschool.h Source File
Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members  

Opschool.h

Go to the documentation of this file.
00001 //Filename    : OPSCHOOL.h
00002 //Description : PlayerSchool Class Declaration
00003 //Owner       : Fred
00004 
00005 #ifndef __OPSCHOOL_H
00006 #define __OPSCHOOL_H
00007 
00008 #ifndef __GAMEDEF_H
00009 #include <GAMEDEF.H>
00010 #endif
00011 
00012 #ifndef __OCOURSE_H
00013 #include <OCOURSE.H>
00014 #endif
00015 
00016 #ifndef __OSTUDENT_H
00017 #include <OSTUDENT.H>
00018 #endif
00019 
00020 #ifndef __ODEPTRES_H
00021 #include <ODEPTRES.H>
00022 #endif
00023 
00024 //-------- Define constant --------//
00025 #define MIN_DEPARTMENT  MAX_DEPARTMENT-4          //### fred 1005 ###//
00026 
00027 enum {                                            // for student_market
00028     LOCAL, REGIONAL, NATIONAL
00029 };
00030 
00031 enum {                                            // for location
00032     NORTH_EAST, MID_ATLANTIC, SOUTH_EAST, SOUTH_CENTRAL, MID_WEST, PACIFIC
00033 };
00034 
00035 enum {                                            // for relative_wealth
00036     WEALTH_RICH, WEALTH_IN_BETWEEN, WEALTH_STRUGGLING
00037 };
00038 
00039 enum {                                            // for control
00040     PRIVATE, PUBLIC
00041 };
00042 
00043 enum {
00044     URBAN, SUBURBAN, RURAL,
00045     ENVIRONMENT_COUNT
00046 };                                                // for campus_environment
00047 
00048 //--------------------//
00049 
00050 enum {
00051     SCN_NONE = 0,
00052     SCN_RAISE_SALARY = 1,
00053     SCN_INVEST_ACADEMIC = 2,
00054     SCN_TEACHING_QUALITY = 3,                       //## fred0301
00055     SCN_RESEARCH_QUALITY = 4,                       //## fred0301
00056     SCN_WINNING_ATHLETICS = 5,
00057     SCN_LIMIT_TUITION_GROWTH = 6,
00058     SCN_COMPENSATE_FOR_ENROLLMENT_SHIFTS = 7,       //## fred0301
00059     SCN_STUDENT_DIVERSITY = 8,
00060     SCN_FACULTY_DIVERSITY = 9,
00061     SCN_BALANCE_BUDGET = 10,
00062 
00063     SCENARIO_COUNT = 10,
00064 };
00065 
00066 enum { PLAQUE_GOLD=0, PLAQUE_SILVER, PLAQUE_BRONZE, TOTAL_PLAQUE_COUNT=3 };
00067 
00068 //--------------------//
00069 
00070 enum {
00071     // order of constants in ec
00072     // Outputs
00073     S_DEGREES_GRANTED = 0,
00074     S_SPONSORED_RESEARCH_ACTIVITY,
00075 
00076     // Institutional performance indicators
00077     S_PRESTIGE,
00078     S_EDUCATIONAL_QUALITY,
00079     S_SCHOLARSHIP_BROADLY_DEFINED,                  // 1007
00080     S_STUDENT_DIVERSITY,
00081     S_FACULTY_DIVERSITY,
00082     S_PERCENT_ALUMNI_GIVEN,
00083 
00084     // Attitudes toward the institution
00085     S_FACULTY_MORALE,
00086     S_STUDENT_MORALE,
00087     S_STAFF_MORALE,
00088 
00089     // Financial indicators
00090     S_CURRENT_SURPLUS_DEFICIT_PERCENT,
00091     S_SMOOTHED_SURPLUS_DEFICIT_PERCENT,
00092     S_ENDOWMENT_PAYOUT_RATE_RELATIVE,               // 1007
00093     S_DEFERRED_MAINTENANCE_BACKLOG_PERCENT,
00094 
00095     SCORE_VAR_COUNT = 15,
00096 
00097     SCORE_SUBGROUP_COUNT = 4,
00098     GROUP1_BEGIN_ID = S_DEGREES_GRANTED,
00099     GROUP2_BEGIN_ID = S_PRESTIGE,
00100     GROUP3_BEGIN_ID = S_FACULTY_MORALE,
00101     GROUP4_BEGIN_ID = S_CURRENT_SURPLUS_DEFICIT_PERCENT,
00102 };
00103 
00104 #if(GAME_VERSION>=200)
00105 // return value of PlayerSchool::think_protagonist_event
00106 enum { COMMENT_NONE=0, COMMENT_R1, COMMENT_R2, COMMENT_R3, COMMENT_R4, COMMENT_R5, COMMENT_R6, COMMENT_TERMINATE };
00107 #define MAX_PROTAGONIST_ID 34
00108 
00109 struct ProtagonistInfo {
00110     char protagonist_id;
00111     char departmental_level;
00112     char exist_departmental_level;                  // institutional level message having a similar departmental message
00113     char cause_termination_flag;
00114     enum ProtagonistFrequency event_freq;
00115     short event_month;
00116     short event_day;
00117     enum ProtagonistMsgSource msg_source;
00118     float relative_trend_threshold;                 // RM
00119     float normalizing_factor;                       // Zn
00120     float r1_bonus_inst, r4_penalty_inst;           // r4_penalty_inst in negative
00121     float r1_bonus_dept, r4_penalty_dept;           // r4_penalty_inst in negative
00122     char *insert_text;
00123 
00124     int is_event_date();
00125     char *source_str(int departmentRecno, int srcPara1, short srcPara2, short srcPara3, short srcPara4 );
00126     // rating (R1-R6) and department
00127     char *rating_str(int rating, int departmentRecno );
00128     char *target_str(int departmentRecno);
00129 };
00130 #endif
00131 
00132 //------- Define class Trimester --------//
00133 
00136 struct Trimester {
00137     char start_month;
00138     char start_day;
00139 
00140     char end_month;
00141     char end_day;
00142 
00143     char total_days;                                // total number of days in the trimester
00144 
00145     void calc_total_days();
00146 };
00147 
00148 //--------- Define class PlayerSchool ---------//
00149 
00154 class PlayerSchool {
00155 public:
00156 
00157     //---------- config vars -----------//
00158 
00159     enum { SCHOOL_NAME_LEN=60, FIRST_NAME_LEN=15, LAST_NAME_LEN=30 };
00160 
00161     //### begin zhoubin 02/25/99
00162     float spinner_var1,spinner_var2;
00163     //### end zhoubin 02/25/99
00164     int   mascot;
00165     char  school_name[SCHOOL_NAME_LEN+1];
00166     char  player_first_name[FIRST_NAME_LEN+1];
00167     char  player_last_name[LAST_NAME_LEN+1];
00168 
00169     // departments_list in game setting
00170     int tmp_department_pool_flag[DEPARTMENT_TYPE_COUNT];
00171     int right_bws_pool[DEPARTMENT_TYPE_COUNT];
00172     int left_bws_pool[DEPARTMENT_TYPE_COUNT];
00173     int right_bws_pool_size;
00174     int left_bws_pool_size;
00175     int pool_selected_size;
00176     int just_add,just_remove;
00177 
00178     //--------- Game settings -----------//
00179 
00180     int   student_market;                         // value: 0 to 2
00181     int   location;
00182 
00183     int   prestige;                               // value: 1 to 10
00184     int student_count;                            // = INPUT_LOW, INPUT_MEDIUM, INPUT_HIGH
00185     int sl5_student_percent;                      // = 0-100
00186     int get_player_expected_student_count();
00187 #if(GAME_VERSION>=200)
00188     int get_player_expected_sponsored_research();
00189 #endif
00190 
00191     int   parttime_undergrad_percent;
00192     int   ug_get_degree_in_5year_percent;
00193 
00194     int   fulltime_ug_in_housing_percent;
00195     int   athletic_program_intensity;             // value: 0 (low) to 2(high)  //## fred 1021
00196 
00197     int   graduate_student_percent;
00198     int   nondegree_student_percent;
00199 
00200     int   doctoral_program_intensity;
00201     int   sponsored_research_intensity;           // value from 0 to 10. Low=0, medium=5, high=10
00202 
00203     int   relative_wealth;
00204     int   control;                                // either 0:PRIVATE or 1:PUBLIC
00205     int   campus_environment;                     // = SUBURBAN, etc.
00206     bool  is_public()       { return control == PUBLIC; };
00207     float initializationValueAC_ADMINISTRATION_N_OTHER_OPERATING_EXPENSE;
00208     int   school_type;                            // set in ogammain.cpp; can be enum { LIBERAL_ARTS_SCHOOL, COMPREHENSIVE_SCHOOL, PUBLIC_SCHOOL, PRIVATE_SCHOOL };
00209 
00210 #if(GAME_VERSION>=200)
00211     char  is_unacceptable_at_year_end;
00212 #endif
00213 
00214     //--------- Scenario variables -----------//
00215 
00216     int scenario_id;                              // = 1 to SCENARIO_COUNT
00217 
00218     int scenario_base;                            // i.e. $300 thousand
00219     int scenario_base_at_start;                   // i.e. $300 thousand
00220 
00221     int scenario_target[3];                       // i.e. $330 thousand
00222 
00223     int scenario_base1;
00224     int scenario_base2;
00225     float scenario_float_base;
00226 
00227     float scenario_faculty_salary_increase;       // vars for specific scenario SCN_RAISE_SALARY
00228     float scenario_endowment_increase;
00229 
00230     int scenario_review_game_year;                // i.e. 3 year from gameStartYear
00231     int scenario_max_game_years;                  // i.e. 5 years
00232     int scenario_start_score;
00233     int scen_quit_game_flag;
00234     // if the flag of a department in this array is 1, the department is selected for processing in the current scenario.
00235     char  scen_dept_selected_array[MAX_DEPARTMENT];
00236 
00237     char  plaque_granted[TOTAL_PLAQUE_COUNT];     // 1: achieved
00238     char  goal_deadline[TOTAL_PLAQUE_COUNT];      //
00239     char  plaque_last;                            // = PLAQUE_* above
00240 
00241     void  scenario_check_target();                // check if the target of scenario is met
00242     int scenario_invest_academic_get_cur();
00243     //## chea 060899 to init in info.next_day()
00244     void  init_scen_dept_selected(int selectPercent);
00245     float scen_balance_budget_score();
00246 
00247     //---------------------------------//
00248 
00249     // store department_res's index; = 0 if invalid
00250     int selected_department_list[DEPARTMENT_TYPE_COUNT];
00251 
00252     // put in oconfig.h
00253     int chance_event_frequency;                   // =  INPUT_LOW, INPUT_MEDIUM, INPUT_HIGH,
00254     int chance_objective_frequency;               // =  INPUT_LOW, INPUT_MEDIUM, INPUT_HIGH,
00255 #if(GAME_VERSION>=200)
00256     int chance_perturbations;
00257     int behavioral_response_speed;
00258     int threshold_event_flag;                     // for enable think_protagonist
00259 #endif
00260     float difficulty_multiplier;
00261 
00262     Trimester trimester_array[TRIMESTER_PER_YEAR];
00263 
00264     // more user input  //fred 0505
00265     //
00266     char percent_student_in_state;                // depends on student_market
00267     char relative_wealth_value;                   // depends on relative_wealth; importance value
00268 
00269     //--------- dynamic vars ----------//
00270 
00271     char  cur_trimester;                          // AUTUMN, WINTER or SUMMER
00272     int   cur_trimester_start_date;
00273 
00274     char  is_trimester_off;
00275     char  trimester_off_day;                      // the nth day since the trimester is off
00276 
00277     char* trimester_str();                        // Winter '97
00278 
00279     //------ course related vars --------//
00280 
00281     char  teaching_method_pref[MAX_TEACHING_METHOD];
00282     char  course_match_order[MAX_STUDENT_LEVEL];  // the order in which the different levels of students are processed
00283 
00284     short cur_select_course_student_level_order;  // the student level which should be selecting courses now, it's an id. to PlayerSchool::course_match_order[MAX_STUDENT_LEVEL]
00285     short cur_select_course_student_level;        // the student level which should be selecting courses now. It's a student level id.
00286 
00287     //------ faculty pomotion policies screen - player input related vars --------//
00288     char  faculty_promotion_difficulity;          // use enum { INPUT_LOW, INPUT_MEDIUM, INPUT_HIGHT };
00289     // use enum { INPUT_LOW, INPUT_MEDIUM, INPUT_HIGHT };
00290     char  faculty_degree_to_which_priorities_reflected_in_promotion;
00291 
00292     char  summer_emphasis, summer_emphasis_last;  // (=0 for None, 1, 2, or 3)
00293     char  percent_summer_teaching_load;           // 99->99%; percent of summer teaching by regular faculty as part of normal teaching load
00294 
00295     //----- for playershool's all students generate_student() -----//
00296 
00297     float student_level_pct[MAX_STUDENT_LEVEL];
00298     float year_in_program_pct[MASTER_ARRAY_SIZE][MAX_GRADUATE_YEARS+1];
00299     float student_gender_pct[MAX_STUDENT_LEVEL][GENDER_ETHNIC_TYPE_COUNT];
00300     float dropout_trans_prob[MASTER_ARRAY_SIZE][MAX_GRADUATE_YEARS];
00301     float adjusted_student_major_pref[MAX_STUDENT_LEVEL_INI][MAX_DEPARTMENT];
00302     float major_pref_multiplier[MAX_DEPARTMENT];
00303     //990416
00304     float grad_trans_prob[MASTER_ARRAY_SIZE][MAX_GRADUATE_YEARS];
00305 
00306     float delay_rate[MAX_STUDENT_LEVEL];
00307 
00308     //----- for generate_student() -----//
00309 public:
00310     int get_random_major(char sl);                // using adjusted_student_major_pref
00311     char  generate_student_random_get_group_index(float *arr, int size);
00312 
00313     //### begin trevor 1908 ##//
00314 public:
00315     void  init();
00316     void  deinit();
00317 
00318     void  init_setting_scenario(int scenId);
00319     void  init_setting_non_scenario();
00320     void  init_scenario();
00321 
00322     int write_file(File* filePtr);
00323     int read_file(File* filePtr);
00324 #if(GAME_VERSION>=200)
00325     int write_log_header(File *);
00326     int write_log(File *);
00327 #endif
00328 
00329     // ## begin chwg0408
00330     char current_report_type;
00331     char current_report_mode;
00332     // ## end chwg0408
00333 
00334     void  student_report(int refreshFlag);
00335     int student_report_detect();
00336 
00337     void  summary_student_report(int refreshFlag);
00338     void  summary_student_report_1(int refreshFlag);
00339     void  summary_student_report_2(int refreshFlag);
00340     void  summary_student_report_3(int refreshFlag);
00341     void  summary_student_report_4(int refreshFlag);
00342     void  summary_student_report_5(int refreshFlag);
00343     void  summary_student_report_6(int refreshFlag);
00344 #if(GAME_VERSION>=200)
00345     void  summary_student_report_7(int refreshFlag);
00346 #endif
00347     void  summary_student_report_call_residence();
00348     int summary_student_report_detect();
00349     void  summary_student_report_deinit();
00350     void  summary_student_report_printing(int printOption);
00351 
00352     char  current_score_report_type;
00353     void  score_report(int refreshFlag);
00354     void  score_report_printing(int printOption);
00355     void  score_report_detect();
00356     void  score_report_deinit();
00357 
00358     void  next_day();
00359     //#### begin fred 0922 ####//
00360     void  next_trimester();
00361     //#### end fred 0922 ####//
00362 
00363     void  generate_student();
00364 
00365     void  new_trimester(int trimesterId);
00366 
00367     //## chea 190699
00368     void  generate_student_adjust_pct_array(float *arr, int size);
00369     //## chea 190699
00370     void  generate_student_readjust_pct_array(float *arr, int size);
00371 
00372     void update_stu_sum();                        //## chea 270999 for update stu_sum only
00373     void update_gender();                         //## chea 290999
00374     void calc_setting_vars();                     //## chea 091099 getting result of option buttons
00375 
00376     // new in GAME_VERSION>=200, eqv to math.latency_func when GAME_VERSION is 100
00377     float latency_func(float latencyPara, float curValue, float inputValue);
00378 
00379 private:
00380     void  init_config();
00381     void  default_setting();
00382     //  void    calc_setting_vars();
00383 
00384     //----- for generate_student() -----//
00385     void  generate_student_level_pct();
00386     void  generate_student_transition_prob_n_year_in_program();
00387     void  generate_student_gender_ethnic();
00388     void  generate_student_major_preference();
00389     void  generate_student_adjust_pct_arrays();
00390     //  void    generate_student_adjust_pct_array(float *arr, int size);   //## chea 190699 change to public
00391     //  void    generate_student_readjust_pct_array(float *arr, int size); //## chea 190699 change to public
00392 
00393     void  generate_student_init_course(int progressIndex);
00394     //### end trevor 1908 ##//
00395 
00396     //##### begin fred 1013 #####//
00397 
00398     //-------------------------------------------------------------------------//
00399     //----- performance indicators -----//
00400     //-------------------------------------------------------------------------//
00401 
00402 public:
00403     // alumni_morale in odevelop.h
00404     // prestige in opeersch.h
00405     char  staff_morale;
00406     char  media_attitudes;
00407     char  administrative_performance;
00408     char  scholarship_broadly_defined;
00409 
00410     float sub_score[SCORE_VAR_COUNT][HISTORY_MONTH_COUNT];
00411     float sub_score_change[SCORE_VAR_COUNT];
00412     float sub_score_start[SCORE_VAR_COUNT];       // the value of the sub score at the beginning of the game. (or the end of the pre-year )
00413     float game_score_history[HISTORY_MONTH_COUNT];
00414     int ultimate_game_score_history[HISTORY_MONTH_COUNT];
00415 
00416     // 0125
00417     float score_sub_total[SCORE_SUBGROUP_COUNT][HISTORY_MONTH_COUNT];
00418     float score_group_change[SCORE_SUBGROUP_COUNT];
00419     float score_group_weight[SCORE_SUBGROUP_COUNT];
00420 
00421     float sub_score_weight[SCORE_VAR_COUNT];
00422     float init_game_score;
00423     float cur_game_score;
00424     int ultimate_game_score;
00425     int bonus_point;                              // 1013 for new "Objective"  //## chea 200899 use task_array.total_bonus_pt
00426 #if(GAME_VERSION>=200)
00427     float threshold_event_bonus;
00428 #endif
00429 
00430     //----------------//
00431     float time_to_degree[DEGREE_TYPE_COUNT][HISTORY_YEAR_COUNT];
00432     float dropout_rate[DEGREE_TYPE_COUNT][HISTORY_YEAR_COUNT];
00433 
00434     // special case handling: fake_disp_time_to_degree() for smoothing graph
00435     float fake_disp_time_to_degree[DEGREE_TYPE_COUNT][HISTORY_YEAR_COUNT];
00436 
00437     //----------------//
00438     int bachelor_degree[HISTORY_YEAR_COUNT];      // 980921
00439 #if(GAME_VERSION>=200)
00440     int non_ug_bachelor_degree[HISTORY_YEAR_COUNT];
00441 #endif
00442     int master_degree[HISTORY_YEAR_COUNT];
00443     int doctor_degree[HISTORY_YEAR_COUNT];
00444 
00445     //----------------//
00446 
00447     // student summary for sl1-5
00448 
00449     char  talent_academic_all[DEGREE_TYPE_COUNT][HISTORY_MONTH_COUNT];
00450     char  performance_academic_ug[HISTORY_MONTH_COUNT];
00451 
00452     // student summary for sl-1
00453 
00454     char  talent_academic[HISTORY_MONTH_COUNT];
00455     char  talent_extracurricular[HISTORY_MONTH_COUNT];
00456     char  talent_athletics[HISTORY_MONTH_COUNT];
00457 
00458     char  satisfaction_academic[HISTORY_MONTH_COUNT];
00459     char  satisfaction_student_life[HISTORY_MONTH_COUNT];
00460     char  satisfaction_athletics[HISTORY_MONTH_COUNT];
00461     char  satisfaction_overall[HISTORY_MONTH_COUNT];
00462 
00463     //## chea 270999 to update the student no. report.
00464     int   ins_student_level_no[MAX_STUDENT_LEVEL_N_TOTAL];
00465     int ins_student_level_history[MAX_STUDENT_LEVEL_N_TOTAL][HISTORY_TRIMESTER_COUNT];
00466 
00467     //## 290999 to update the gender report
00468     int   ins_gender_student_level_no[GENDER_ETHNIC_TYPE_COUNT_N_TOTAL];
00469     int ins_gender_student_level_history[GENDER_ETHNIC_TYPE_COUNT_N_TOTAL][HISTORY_TRIMESTER_COUNT];
00470 
00471     float old_pre;
00472 
00473 #if(GAME_VERSION>=200)
00474     char  is_year_end_report;
00475 #endif
00476 
00477     // ##### Begin MArco ##### //
00478 #if(GAME_VERSION>=200)
00479     //  int     initial_ins_student_level_history[MAX_STUDENT_LEVEL_N_TOTAL][HISTORY_TRIMESTER_COUNT];
00480     //NEW
00481     int initial_ins_student_level_history[MAX_STUDENT_LEVEL_N_TOTAL];
00482     //  int     initial_ins_gender_student_level_history[GENDER_ETHNIC_TYPE_COUNT_N_TOTAL][HISTORY_TRIMESTER_COUNT];
00483     //NEW
00484     int initial_ins_gender_student_level_history[GENDER_ETHNIC_TYPE_COUNT_N_TOTAL];
00485     char  initial_talent_academic_all[DEGREE_TYPE_COUNT][HISTORY_MONTH_COUNT];
00486     char  initial_performance_academic_ug[HISTORY_MONTH_COUNT];
00487 
00488     char  initial_talent_academic[HISTORY_MONTH_COUNT];
00489     char  initial_talent_extracurricular[HISTORY_MONTH_COUNT];
00490     char  initial_talent_athletics[HISTORY_MONTH_COUNT];
00491 
00492     char  initial_satisfaction_academic[HISTORY_MONTH_COUNT];
00493     char  initial_satisfaction_student_life[HISTORY_MONTH_COUNT];
00494     char  initial_satisfaction_athletics[HISTORY_MONTH_COUNT];
00495     char  initial_satisfaction_overall[HISTORY_MONTH_COUNT];
00496 
00497     int initial_bachelor_degree[HISTORY_YEAR_COUNT];
00498     int initial_master_degree[HISTORY_YEAR_COUNT];
00499     int initial_doctor_degree[HISTORY_YEAR_COUNT];
00500 
00501     float initial_time_to_degree[DEGREE_TYPE_COUNT][HISTORY_YEAR_COUNT];
00502     float initial_dropout_rate[DEGREE_TYPE_COUNT][HISTORY_YEAR_COUNT];
00503 
00504     //  float   initial_fake_disp_time_to_degree[DEGREE_TYPE_COUNT][HISTORY_YEAR_COUNT];
00505     float initial_fake_disp_time_to_degree[HISTORY_YEAR_COUNT];
00506 
00507     // [protagonist_id-1][departmentRecno] or [protagonist_id-1][0] for instituional level
00508     int last_protagonist_event_date[MAX_PROTAGONIST_ID][MAX_DEPARTMENT+1];
00509 #endif
00510     // ##### End MArco ##### //
00511 
00512     //----------------//
00513 private:
00514     // intermediate vars for calc of performance indicators.
00515     float degree_granted_ratio_init;
00516     float degree_granted_weight[MAX_STUDENT_LEVEL];
00517     int init_research_dollar;
00518 
00519 public:
00520     void  init_pi();
00521     void  init_score();
00522 #if(GAME_VERSION>=200)
00523     // set sub_score_weight to default value
00524     void  init_sub_score_weight(int subScoreGroup=-1);
00525     void  normalize_sub_score_weight();           // make sub of sub_score_weight to 100%
00526     float get_default_sub_score_weight(int);
00527 #endif
00528     void  add_bonus(int value);
00529     void  update_history(char flag=UPDATE_ALL);
00530     void  calc_ultimate_score();
00531     void  calc_staff_morale();
00532     void  calc_media_attitudes();
00533 
00534 #if(GAME_VERSION>=200)
00535     void  save_initial_data();
00536     int is_hidden_mascot(int mascotId);
00537     void  think_protagonist();                    // generate opinion from people
00538     int think_protagonist_event(float curValue, float lastYearValue, float initialValue, struct ProtagonistInfo *protagonistInfo, int departmentRecno, int testResign=0 );
00539 #ifdef DEBUG
00540     void  set_cks( int index, float change );
00541     void  get_cks( float &ck1, float &ck2, float &ck3 );
00542 #endif
00543     ProtagonistInfo*  get_protagonist_info(int recno);
00544     void  calc_strength_consistency_k1(float curValue, float lastYearValue, float initialValue, struct ProtagonistInfo *protagonistInfo, float &strength, float &consistency, float &k1);
00545     int is_protagonist_event_date( int protagonistId, int departmentRecno );
00546     int mark_protagonist_event_date( int protagonistId, int departmentRecno );
00547 #endif
00548 
00549 private:
00550     void  calc_performance_yearly();
00551     void  calc_performance_monthly();
00552     void  calc_prestige();
00553     void  calc_administrative_performance_etc();
00554 
00555     void  calc_student_performance();
00556 };
00557 
00558 extern PlayerSchool player_school;
00559 
00560 // disable standard deviation
00561 #if(GAME_VERSION>=200)
00562 inline float PSCH_SD(float sd) { return player_school.chance_perturbations==INPUT_LOW ? 0.0f : (sd); }
00563 #else
00564 #define PSCH_SD(sd) (sd)
00565 #endif
00566 
00567 //------------------------------------------//
00568 #endif

Generated on Fri Aug 23 01:38:16 2002 for VirtualU by doxygen1.2.17