00001
00002
00003
00004 #include <OSYS.H>
00005 #include <OGAMESET.H>
00006 #include <OWORLDMT.H>
00007 #include <OBNDSLDR.H>
00008 #include <OVGA.H>
00009 #include <COLOR.H>
00010 #include <OFINANCE.H>
00011 #include <OFONT.H>
00012 #include <OGAMESTR.H>
00013 #include <OMOUSE.H>
00014 #include <OOPT.H>
00015 #include <OBUTTON.H>
00016 #include <OIFACE.H>
00017 #include <OIMGRES.H>
00018 #include <OTEXT.H>
00019 #include <OHELPIF.H>
00020 #include <OHELP.H>
00021 #include <OAUDIO.H>
00022 #include <OCONFIG.H>
00023
00024
00025
00026 enum {
00027 REPORT_X1 = ZOOM_X1 + 15,
00028 REPORT_Y1 = ZOOM_Y1 + 25,
00029 REPORT_X2 = ZOOM_X2 - 15,
00030 REPORT_Y2 = ZOOM_Y2 - 60
00031 };
00032
00033 enum {
00034 SEPARATOR_1 = REPORT_X1 + 250,
00035 SEPARATOR_2 = REPORT_X1 + 500,
00036 SEPARATOR_3 = REPORT_X1 + 620
00037 };
00038
00039 enum {
00040 LINE_SPACING = 25,
00041 HEADING_HEIGHT = 30,
00042 FIRST_LINE_OFFSET = REPORT_Y1 + HEADING_HEIGHT + 20,
00043 DESCRIPTION_OFFSET = REPORT_X1 + 30,
00044 SLIDER_OFFSET = 1,
00045 DESCRIPTION_INDENT = 20,
00046 TARGET_OFFSET = SEPARATOR_1 + 15,
00047 TARGET_WIDTH = SEPARATOR_2 - SEPARATOR_1 - 30,
00048 TARGET_HEIGHT = 10,
00049 PREF_BUTTON_WIDTH = 16,
00050 PREF_BUTTON_HEIGHT = 16,
00051 PREF_BUTTON_DISTANCE = 10,
00052 PREF_BUTTON_OFFSET = 0,
00053 PREF_BUTTON_OFFSET1 = SEPARATOR_2 + 15,
00054 PREF_BUTTON_OFFSET2 = PREF_BUTTON_OFFSET1 + PREF_BUTTON_WIDTH + PREF_BUTTON_DISTANCE,
00055 PREF_BUTTON_OFFSET3 = PREF_BUTTON_OFFSET2 + PREF_BUTTON_WIDTH + PREF_BUTTON_DISTANCE,
00056 PREF_BUTTON_OFFSET4 = PREF_BUTTON_OFFSET3 + PREF_BUTTON_WIDTH + PREF_BUTTON_DISTANCE,
00057 RESULT_OFFSET = SEPARATOR_3 + 20,
00058 RESULT_LENGTH = 50
00059 };
00060
00061
00062
00063 static Text result_text[REVENUE_POLICY_COUNT + EXPENSE_POLICY_COUNT];
00064 static Button help_button_array[REVENUE_POLICY_COUNT + EXPENSE_POLICY_COUNT];
00065
00066 static char *title[] = {
00067 "Description",
00068 "Target",
00069 " Preference",
00070 "Result(%)"
00071 };
00072
00073 static char *heading[] = {
00074 "Revenue policies",
00075 "Cost rise and net budget change"
00076 };
00077
00078 static char *pref_label[] = {
00079 "1", "2", "3", "R"
00080 };
00081
00082 static char *optimize_label = "Optimize";
00083
00084
00086
00087 for (int i = 0; i < REVENUE_POLICY_COUNT + EXPENSE_POLICY_COUNT; i++) {
00088 for (int j = 0; j < PREF_COUNT; j++) {
00089 opt1_button_group_up_bitmap[i * PREF_COUNT + j] = NULL;
00090 opt1_button_group_down_bitmap[i * PREF_COUNT + j] = NULL;
00091 }
00092 }
00093 }
00094
00095
00096
00097
00099
00100 for (int i = 0; i < REVENUE_POLICY_COUNT + EXPENSE_POLICY_COUNT; i++) {
00101 delete opt1_button_group_array[i];
00102
00103 if(opt1_button_group_array[i]) {
00104 opt1_button_group_array[i]=NULL;
00105 }
00106
00107 opt1_slider_group[i].deinit();
00108
00109 for (int j = 0; j < PREF_COUNT; j++) {
00110 mem_del(opt1_button_group_up_bitmap[i * PREF_COUNT + j]);
00111 mem_del(opt1_button_group_down_bitmap[i * PREF_COUNT + j]);
00112 opt1_button_group_up_bitmap[i * PREF_COUNT + j] = NULL;
00113 opt1_button_group_down_bitmap[i * PREF_COUNT + j] = NULL;
00114 }
00115
00116
00117 result_text[i].deinit();
00118
00119 help_button_array[i].deinit();
00120
00121 }
00122 stage_init_flag = 0;
00123 }
00124
00125
00126
00127
00129
00130 if (refreshFlag == INFO_REPAINT || refresh_optimization_screen ) {
00131 user_interface.brighten(REPORT_X1+100, ZOOM_Y1, REPORT_X2-100, REPORT_Y1);
00132 user_interface.brighten(REPORT_X1+4, REPORT_Y1+4, REPORT_X2-2, REPORT_Y2-2);
00133 user_interface.rect(REPORT_X1+100, ZOOM_Y1, REPORT_X2-100, REPORT_Y1);
00134
00135 font_charts.center_put( REPORT_X1, ZOOM_Y1, REPORT_X2, REPORT_Y1, "Revenue and Expenditure" );
00136
00137
00138 if (stage_init_flag != 1 || refresh_optimization_screen ) {
00139 deinit();
00140 ButtonGroup *buttonGroupPtr;
00141 double *targetValue, *lowerBound, *upperBound, *importWeight, lowerLimit, upperLimit;
00142 int pressedButton;
00143
00144 for (int i = 0; i < REVENUE_POLICY_COUNT + EXPENSE_POLICY_COUNT; i++) {
00145 opt1_button_group_array[i] = new ButtonGroup(PREF_COUNT);
00146
00147
00148
00149
00150
00151
00152
00153 targetValue = (i < REVENUE_POLICY_COUNT) ? &(finance.revenue_policy_array[i].target_value) : &(finance.expense_policy_array[i - REVENUE_POLICY_COUNT].target_value);
00154 lowerBound = (i < REVENUE_POLICY_COUNT) ? &(finance.revenue_policy_array[i].lower_bound) : &(finance.expense_policy_array[i - REVENUE_POLICY_COUNT].lower_bound);
00155 upperBound = (i < REVENUE_POLICY_COUNT) ? &(finance.revenue_policy_array[i].upper_bound) : &(finance.expense_policy_array[i - REVENUE_POLICY_COUNT].upper_bound);
00156 importWeight = (i < REVENUE_POLICY_COUNT) ? &(finance.revenue_policy_array[i].import_weight) : &(finance.expense_policy_array[i - REVENUE_POLICY_COUNT].import_weight);
00157 lowerLimit = (i < REVENUE_POLICY_COUNT) ? (finance.revenue_policy_array[i].lower_limit) : (finance.expense_policy_array[i - REVENUE_POLICY_COUNT].lower_limit);
00158 upperLimit = (i < REVENUE_POLICY_COUNT) ? (finance.revenue_policy_array[i].upper_limit) : (finance.expense_policy_array[i - REVENUE_POLICY_COUNT].upper_limit);
00159
00160
00161
00162
00163 #if(GAME_VERSION>=200)
00164 if ( *targetValue > *upperBound )
00165 *targetValue = *upperBound;
00166 #endif
00167
00168 opt1_slider_group[i].init(
00169 TARGET_OFFSET, SLIDER_OFFSET + FIRST_LINE_OFFSET + LINE_SPACING * (i + ((i >= REVENUE_POLICY_COUNT) ? 2 : 1)),
00170 TARGET_WIDTH, TARGET_HEIGHT, targetValue, lowerBound, upperBound, lowerLimit, upperLimit,
00171 1,V_YELLOW,V_GREEN,24);
00172
00173
00174 #if(GAME_VERSION>=200)
00175 if ( i == 0 ) {
00176 if ( *upperBound < 5.0 )
00177 opt1_slider_group[i].lock_max = 1;
00178 }
00179
00180
00181
00182 if( i == PL_INDIRECT_COST_RATE ) {
00183 opt1_slider_group[i].lock_max = 1;
00184 }
00185 #endif
00186
00187 user_interface.create_button_bitmap(
00188 PREF_BUTTON_OFFSET1-2,
00189 PREF_BUTTON_OFFSET + FIRST_LINE_OFFSET + LINE_SPACING * (i + ((i >= REVENUE_POLICY_COUNT) ? 2 : 1))-2,
00190 PREF_BUTTON_OFFSET1 + PREF_BUTTON_WIDTH,
00191 PREF_BUTTON_OFFSET + FIRST_LINE_OFFSET + LINE_SPACING * (i + ((i >= REVENUE_POLICY_COUNT) ? 2 : 1)) + PREF_BUTTON_HEIGHT,
00192 pref_label[0], &opt1_button_group_up_bitmap[PREF_COUNT * i], &opt1_button_group_down_bitmap[PREF_COUNT * i], &vga_back);
00193 user_interface.create_button_bitmap(
00194 PREF_BUTTON_OFFSET2-2,
00195 PREF_BUTTON_OFFSET + FIRST_LINE_OFFSET + LINE_SPACING * (i + ((i >= REVENUE_POLICY_COUNT) ? 2 : 1))-2,
00196 PREF_BUTTON_OFFSET2 + PREF_BUTTON_WIDTH,
00197 PREF_BUTTON_OFFSET + FIRST_LINE_OFFSET + LINE_SPACING * (i + ((i >= REVENUE_POLICY_COUNT) ? 2 : 1)) + PREF_BUTTON_HEIGHT,
00198 pref_label[1], &opt1_button_group_up_bitmap[PREF_COUNT * i + 1], &opt1_button_group_down_bitmap[PREF_COUNT * i + 1], &vga_back);
00199 user_interface.create_button_bitmap(
00200 PREF_BUTTON_OFFSET3-2,
00201 PREF_BUTTON_OFFSET + FIRST_LINE_OFFSET + LINE_SPACING * (i + ((i >= REVENUE_POLICY_COUNT) ? 2 : 1))-2,
00202 PREF_BUTTON_OFFSET3 + PREF_BUTTON_WIDTH,
00203 PREF_BUTTON_OFFSET + FIRST_LINE_OFFSET + LINE_SPACING * (i + ((i >= REVENUE_POLICY_COUNT) ? 2 : 1)) + PREF_BUTTON_HEIGHT,
00204 pref_label[2], &opt1_button_group_up_bitmap[PREF_COUNT * i + 2], &opt1_button_group_down_bitmap[PREF_COUNT * i + 2], &vga_back);
00205 user_interface.create_button_bitmap(
00206 PREF_BUTTON_OFFSET4-2,
00207 PREF_BUTTON_OFFSET + FIRST_LINE_OFFSET + LINE_SPACING * (i + ((i >= REVENUE_POLICY_COUNT) ? 2 : 1))-2,
00208 PREF_BUTTON_OFFSET4 + PREF_BUTTON_WIDTH,
00209 PREF_BUTTON_OFFSET + FIRST_LINE_OFFSET + LINE_SPACING * (i + ((i >= REVENUE_POLICY_COUNT) ? 2 : 1)) + PREF_BUTTON_HEIGHT,
00210 pref_label[3], &opt1_button_group_up_bitmap[PREF_COUNT * i + 3], &opt1_button_group_down_bitmap[PREF_COUNT * i + 3], &vga_back);
00211 buttonGroupPtr = opt1_button_group_array[i];
00212
00213
00214 if(*importWeight==OPT_LOW_WEIGHT)
00215 pressedButton =0;
00216 if(*importWeight==OPT_MID_WEIGHT)
00217 pressedButton =1;
00218 if(*importWeight==OPT_HIGH_WEIGHT)
00219 pressedButton =2;
00220
00221 if(((i < REVENUE_POLICY_COUNT) ?
00222 (finance.revenue_policy_array[i].required_flag) :
00223 (finance.expense_policy_array[i - REVENUE_POLICY_COUNT].required_flag) )) {
00224 pressedButton = 3;
00225 opt1_slider_group[i].enable_flag=0;
00226 }
00227
00228
00229
00230
00231
00232
00233
00234 (*buttonGroupPtr)[0].create_bitmapW(
00235 PREF_BUTTON_OFFSET1-2,
00236 PREF_BUTTON_OFFSET + FIRST_LINE_OFFSET + LINE_SPACING * (i + ((i >= REVENUE_POLICY_COUNT) ? 2 : 1))-2,
00237 PREF_BUTTON_OFFSET1 + PREF_BUTTON_WIDTH,
00238 PREF_BUTTON_OFFSET + FIRST_LINE_OFFSET + LINE_SPACING * (i + ((i >= REVENUE_POLICY_COUNT) ? 2 : 1)) + PREF_BUTTON_HEIGHT,
00239 ((pressedButton == 0) ? opt1_button_group_down_bitmap[PREF_COUNT * i] : opt1_button_group_up_bitmap[PREF_COUNT * i]) + 4);
00240 (*buttonGroupPtr)[1].create_bitmapW(
00241 PREF_BUTTON_OFFSET2-2,
00242 PREF_BUTTON_OFFSET + FIRST_LINE_OFFSET + LINE_SPACING * (i + ((i >= REVENUE_POLICY_COUNT) ? 2 : 1))-2,
00243 PREF_BUTTON_OFFSET2 + PREF_BUTTON_WIDTH,
00244 PREF_BUTTON_OFFSET + FIRST_LINE_OFFSET + LINE_SPACING * (i + ((i >= REVENUE_POLICY_COUNT) ? 2 : 1)) + PREF_BUTTON_HEIGHT,
00245 ((pressedButton == 1) ? opt1_button_group_down_bitmap[PREF_COUNT * i + 1] : opt1_button_group_up_bitmap[PREF_COUNT * i + 1]) + 4);
00246 (*buttonGroupPtr)[2].create_bitmapW(
00247 PREF_BUTTON_OFFSET3-2,
00248 PREF_BUTTON_OFFSET + FIRST_LINE_OFFSET + LINE_SPACING * (i + ((i >= REVENUE_POLICY_COUNT) ? 2 : 1))-2,
00249 PREF_BUTTON_OFFSET3 + PREF_BUTTON_WIDTH,
00250 PREF_BUTTON_OFFSET + FIRST_LINE_OFFSET + LINE_SPACING * (i + ((i >= REVENUE_POLICY_COUNT) ? 2 : 1)) + PREF_BUTTON_HEIGHT,
00251 ((pressedButton == 2) ? opt1_button_group_down_bitmap[PREF_COUNT * i + 2] : opt1_button_group_up_bitmap[PREF_COUNT * i + 2]) + 4);
00252 (*buttonGroupPtr)[3].create_bitmapW(
00253 PREF_BUTTON_OFFSET4-2,
00254 PREF_BUTTON_OFFSET + FIRST_LINE_OFFSET + LINE_SPACING * (i + ((i >= REVENUE_POLICY_COUNT) ? 2 : 1))-2,
00255 PREF_BUTTON_OFFSET4 + PREF_BUTTON_WIDTH,
00256 PREF_BUTTON_OFFSET + FIRST_LINE_OFFSET + LINE_SPACING * (i + ((i >= REVENUE_POLICY_COUNT) ? 2 : 1)) + PREF_BUTTON_HEIGHT,
00257 ((pressedButton == 3) ? opt1_button_group_down_bitmap[PREF_COUNT * i + 3] : opt1_button_group_up_bitmap[PREF_COUNT * i + 3]) + 4);
00258
00259 buttonGroupPtr->button_pressed = pressedButton;
00260
00261 if(user_interface.backgd_flag==1)
00262 help_button_array[i].create_text(REPORT_X1+10,
00263 FIRST_LINE_OFFSET + LINE_SPACING * (i + ((i >= REVENUE_POLICY_COUNT) ? 2 : 1)),
00264 REPORT_X1+28,
00265 FIRST_LINE_OFFSET + LINE_SPACING * (i + ((i >= REVENUE_POLICY_COUNT) ? 2 : 1))+18,
00266 "?");
00267 }
00268
00269 stage_init_flag = 1;
00270 }
00271
00272 user_interface.h_line(REPORT_X1, REPORT_Y1+HEADING_HEIGHT, REPORT_X2-REPORT_X1);
00273 user_interface.v_line(SEPARATOR_1-1, REPORT_Y1+1, REPORT_Y2-REPORT_Y1-2);
00274 user_interface.v_line(SEPARATOR_2-1, REPORT_Y1+1, REPORT_Y2-REPORT_Y1-2);
00275 user_interface.v_line(SEPARATOR_3-1, REPORT_Y1+1, REPORT_Y2-REPORT_Y1-2);
00276 user_interface.rect(REPORT_X1, REPORT_Y1, REPORT_X2, REPORT_Y2, 2);
00277
00278 font_chartsm.center_put( REPORT_X1+1, REPORT_Y1+1,
00279 SEPARATOR_1-1, REPORT_Y1+1+HEADING_HEIGHT, title[0] );
00280 font_chartsm.center_put( SEPARATOR_1+1, REPORT_Y1+1,
00281 SEPARATOR_2-1, REPORT_Y1+1+HEADING_HEIGHT, title[1] );
00282 font_chartsm.center_put( SEPARATOR_2+1, REPORT_Y1+1,
00283 SEPARATOR_3-1, REPORT_Y1+1+HEADING_HEIGHT, title[2] );
00284 font_chartsm.center_put( SEPARATOR_3+1, REPORT_Y1+1,
00285 REPORT_X2-1, REPORT_Y1+1+HEADING_HEIGHT, title[3] );
00286
00287 if(user_interface.backgd_flag==1)
00288 image_interface.put_back(SEPARATOR_2+9,REPORT_Y1+7,"QUEST_UP");
00289
00290
00291
00292
00293 for (int i = 0; i < REVENUE_POLICY_COUNT + EXPENSE_POLICY_COUNT; i++) {
00294 font_chartsm.put(
00295 DESCRIPTION_OFFSET + DESCRIPTION_INDENT,
00296 FIRST_LINE_OFFSET + LINE_SPACING * (i + ((i >= REVENUE_POLICY_COUNT) ? 2 : 1)),
00297 game_str_res.opt_stage1_str(i) );
00298 if(user_interface.backgd_flag==1)
00299 image_interface.put_back(REPORT_X1+10,
00300 FIRST_LINE_OFFSET + LINE_SPACING * (i + ((i >= REVENUE_POLICY_COUNT) ? 2 : 1))
00301 ,"QUEST_UP");
00302
00303 opt1_slider_group[i].paint();
00304 opt1_button_group_array[i]->paint(opt1_button_group_array[i]->button_pressed);
00305 opt1_slider_group[i].result_flag=optimization.is_optimized[0];
00306 opt1_slider_group[i].result_value = (i < REVENUE_POLICY_COUNT) ? finance.revenue_policy_array[i].result_value : finance.expense_policy_array[i - REVENUE_POLICY_COUNT].result_value;
00307
00308 result_text[i].init(
00309 RESULT_OFFSET + RESULT_LENGTH - 50,
00310 FIRST_LINE_OFFSET + LINE_SPACING * (i + ((i >= REVENUE_POLICY_COUNT) ? 2 : 1)),
00311 &(opt1_slider_group[i].result_value),24);
00312 }
00313
00314 refresh_optimization_screen = 0;
00315 }
00316 else {
00317 vga.use_back();
00318 for (int i = 0; i < REVENUE_POLICY_COUNT + EXPENSE_POLICY_COUNT; i++) {
00319 opt1_slider_group[i].result_flag=optimization.is_optimized[0]; {
00320
00321 opt1_slider_group[i].result_value = (i < REVENUE_POLICY_COUNT) ? finance.revenue_policy_array[i].result_value : finance.expense_policy_array[i - REVENUE_POLICY_COUNT].result_value;
00322
00323
00324 if(i < REVENUE_POLICY_COUNT) {
00325 if(finance.revenue_policy_array[i].required_flag) {
00326 opt1_slider_group[i].enable_flag=0;
00327 opt1_button_group_array[i]->push(3);
00328 double *importWeight = &(finance.revenue_policy_array[i].import_weight);
00329 *importWeight = OPT_MID_WEIGHT;
00330 }
00331
00332 else if(finance.revenue_policy_array[i].required_flag == 0 && opt1_slider_group[i].enable_flag ==0) {
00333 opt1_slider_group[i].enable_flag=1;
00334 opt1_button_group_array[i]->push(1);
00335 double *importWeight = &(finance.revenue_policy_array[i].import_weight);
00336 *importWeight = OPT_MID_WEIGHT;
00337 }
00338
00339
00340
00341
00342
00343
00344
00345
00346 }
00347 else {
00348 if(finance.expense_policy_array[i - REVENUE_POLICY_COUNT].required_flag) {
00349 opt1_slider_group[i].enable_flag=0;
00350 opt1_button_group_array[i]->push(3);
00351 double *importWeight = &(finance.expense_policy_array[i - REVENUE_POLICY_COUNT].import_weight);
00352 *importWeight = OPT_MID_WEIGHT;
00353 }
00354
00355 else if(finance.expense_policy_array[i - REVENUE_POLICY_COUNT].required_flag == 0 && opt1_slider_group[i].enable_flag ==0) {
00356 opt1_slider_group[i].enable_flag=1;
00357 opt1_button_group_array[i]->push(1);
00358 double *importWeight = &(finance.expense_policy_array[i - REVENUE_POLICY_COUNT].import_weight);
00359 *importWeight = OPT_MID_WEIGHT;
00360 }
00361
00362
00363
00364
00365
00366
00367 }
00368
00369 result_text[i].paint();
00370 vga.blt_buf(RESULT_OFFSET + RESULT_LENGTH - 50,
00371 FIRST_LINE_OFFSET + LINE_SPACING * (i + ((i >= REVENUE_POLICY_COUNT) ? 2 : 1)),
00372 RESULT_OFFSET + RESULT_LENGTH,
00373 FIRST_LINE_OFFSET + LINE_SPACING * (i + ((i >= REVENUE_POLICY_COUNT) ? 2 : 1))+16);
00374 }
00375 opt1_slider_group[i].refresh();
00376 }
00377 }
00378 }
00379
00380
00381
00382
00384
00385 if (stage_init_flag != 1)
00386 return 0;
00387
00388 help.set_help(TARGET_OFFSET, SLIDER_OFFSET + FIRST_LINE_OFFSET,
00389 TARGET_OFFSET+TARGET_WIDTH,REPORT_Y2-20,"H8.1.1.");
00390 help.set_help(TARGET_OFFSET, SLIDER_OFFSET + FIRST_LINE_OFFSET,
00391 TARGET_OFFSET+30,REPORT_Y2-20,"H8.1.2.");
00392 help.set_help(TARGET_OFFSET+TARGET_WIDTH-30, SLIDER_OFFSET + FIRST_LINE_OFFSET,
00393 TARGET_OFFSET+TARGET_WIDTH,REPORT_Y2-20,"H8.1.3.");
00394 help.set_help( SEPARATOR_2, SLIDER_OFFSET + FIRST_LINE_OFFSET,
00395 SEPARATOR_3,REPORT_Y2-20,"H8.1.4.");
00396 int i, j;
00397
00398 vga.use_back();
00399
00400
00401
00402 if (mouse.in_area( SEPARATOR_1, REPORT_Y1+1+HEADING_HEIGHT,
00403 SEPARATOR_2, REPORT_Y2 )) {
00404 for (i = 0; i < REVENUE_POLICY_COUNT + EXPENSE_POLICY_COUNT; i++) {
00405 if(!((i < REVENUE_POLICY_COUNT) ?
00406 (finance.revenue_policy_array[i].required_flag) :
00407 (finance.expense_policy_array[i - REVENUE_POLICY_COUNT].required_flag))) {
00408 if (opt1_slider_group[i].detect()) {
00409 optimization.is_optimize_slider_modified[0]=0;
00410 return 1;
00411 }
00412 }
00413 }
00414 }
00415
00416
00417
00418 if (mouse.single_click(SEPARATOR_2+9,REPORT_Y1+7,SEPARATOR_2+27,REPORT_Y1+25)) {
00419 String str;
00420 str = DIR_RES;
00421 str += "SCORE";
00422
00423 ResTxt rs;
00424 rs.init(str);
00425 image_interface.put_back(SEPARATOR_2+9,REPORT_Y1+7,"QUEST_DN");
00426 vga.blt_buf(SEPARATOR_2+9,REPORT_Y1+7,SEPARATOR_2+27,REPORT_Y1+25);
00427 sys.back_view_mode=sys.view_mode;
00428 help_if.help_textlist.topic_id=rs.locate_topic("Preference");
00429 if(help_if.help_textlist.topic_id>0) {
00430 help_if.help_textlist.add_history(help_if.help_textlist.topic_id);
00431 sys.set_view_mode(MODE_HELP_DESC);
00432 sys.redraw_all_flag = 1;
00433 audio.play_wav("BEEPS-1",audio.int_to_DsVolume(config.sound_effect_volume));
00434 }
00435 return 1;
00436 }
00437
00438 vga.use_front();
00439
00440
00441
00442
00443 for (i = 0; i <REVENUE_POLICY_COUNT + EXPENSE_POLICY_COUNT; i++) {
00444 if (mouse.single_click(
00445 PREF_BUTTON_OFFSET4-2,
00446 PREF_BUTTON_OFFSET + FIRST_LINE_OFFSET + LINE_SPACING * (i + ((i >= REVENUE_POLICY_COUNT) ? 2 : 1))-2,
00447 PREF_BUTTON_OFFSET4 + PREF_BUTTON_WIDTH,
00448 PREF_BUTTON_OFFSET + FIRST_LINE_OFFSET + LINE_SPACING * (i + ((i >= REVENUE_POLICY_COUNT) ? 2 : 1)) + PREF_BUTTON_HEIGHT
00449 )) {
00450
00451
00452 if(i < REVENUE_POLICY_COUNT) {
00453 if( finance.revenue_policy_array[i].applied_flag!=P_IMPLEMENT ) {
00454 if(finance.revenue_policy_array[i].required_flag) {
00455 finance.revenue_policy_array[i].required_flag=0;
00456 opt1_slider_group[i].enable_flag=1;
00457 opt1_slider_group[i].refresh();
00458
00459 finance.revenue_policy_array[i].reset_constraint_policy();
00460
00461 opt1_button_group_array[i]->push(1);
00462
00463
00464 optimization.is_optimize_slider_modified[0]=0;
00465
00466 double *importWeight = &(finance.revenue_policy_array[i].import_weight);
00467 *importWeight = OPT_MID_WEIGHT;
00468
00469 sys.redraw_all_flag=1;
00470 return 1;
00471 }
00472 }
00473 }
00474 else {
00475 if(finance.expense_policy_array[i - REVENUE_POLICY_COUNT].applied_flag!=P_IMPLEMENT) {
00476 if(finance.expense_policy_array[i - REVENUE_POLICY_COUNT].required_flag) {
00477 finance.expense_policy_array[i - REVENUE_POLICY_COUNT].required_flag=0;
00478 opt1_slider_group[i].enable_flag=1;
00479 opt1_slider_group[i].refresh();
00480
00481 finance.expense_policy_array[i-REVENUE_POLICY_COUNT].reset_constraint_policy();
00482
00483 opt1_button_group_array[i]->push(1);
00484
00485
00486 optimization.is_optimize_slider_modified[0]=0;
00487
00488 double *importWeight = &(finance.expense_policy_array[i - REVENUE_POLICY_COUNT].import_weight);
00489 *importWeight = OPT_MID_WEIGHT;
00490 sys.redraw_all_flag=1;
00491 return 1;
00492 }
00493 }
00494 }
00495 }
00496 }
00497
00498
00499
00500 if (mouse.single_click( SEPARATOR_2, REPORT_Y1+1+HEADING_HEIGHT,
00501 SEPARATOR_3, REPORT_Y2 )) {
00502 for (i = 0; i < REVENUE_POLICY_COUNT + EXPENSE_POLICY_COUNT; i++) {
00503 if(!((i < REVENUE_POLICY_COUNT) ?
00504 (finance.revenue_policy_array[i].required_flag) :
00505 (finance.expense_policy_array[i - REVENUE_POLICY_COUNT].required_flag))) {
00506 if ( (j = opt1_button_group_array[i]->detect()) >= 0) {
00507
00508 optimization.is_optimize_slider_modified[0]=0;
00509
00510 if(j==3) {
00511 if(i < REVENUE_POLICY_COUNT) {
00512 finance.revenue_policy_array[i].required_flag=1;
00513 finance.revenue_policy_array[i].set_constraint_policy();
00514 }
00515 else {
00516 finance.expense_policy_array[i - REVENUE_POLICY_COUNT].required_flag=1;
00517 finance.expense_policy_array[i - REVENUE_POLICY_COUNT].set_constraint_policy();
00518 }
00519 opt1_slider_group[i].enable_flag=0;
00520 opt1_slider_group[i].refresh();
00521
00522 sys.redraw_all_flag=1;
00523 }
00524
00525 ButtonGroup *buttonGroupPtr = opt1_button_group_array[i];
00526 vga.use_back();
00527 for (int k = 0; k < PREF_COUNT; k++) {
00528 (*buttonGroupPtr)[k].body_ptr =
00529 (void *) ((k==j)?(opt1_button_group_down_bitmap[i*PREF_COUNT+k] + 4):(opt1_button_group_up_bitmap[i*PREF_COUNT+k] + 4));
00530 }
00531 buttonGroupPtr->paint(buttonGroupPtr->button_pressed);
00532 vga.blt_buf(PREF_BUTTON_OFFSET1, PREF_BUTTON_OFFSET + FIRST_LINE_OFFSET + LINE_SPACING * (i + ((i >= REVENUE_POLICY_COUNT) ? 2 : 1)), PREF_BUTTON_OFFSET1 + PREF_BUTTON_WIDTH, PREF_BUTTON_OFFSET + FIRST_LINE_OFFSET + LINE_SPACING * (i + ((i >= REVENUE_POLICY_COUNT) ? 2 : 1)) + PREF_BUTTON_HEIGHT);
00533 vga.blt_buf(PREF_BUTTON_OFFSET2, PREF_BUTTON_OFFSET + FIRST_LINE_OFFSET + LINE_SPACING * (i + ((i >= REVENUE_POLICY_COUNT) ? 2 : 1)), PREF_BUTTON_OFFSET2 + PREF_BUTTON_WIDTH, PREF_BUTTON_OFFSET + FIRST_LINE_OFFSET + LINE_SPACING * (i + ((i >= REVENUE_POLICY_COUNT) ? 2 : 1)) + PREF_BUTTON_HEIGHT);
00534 vga.blt_buf(PREF_BUTTON_OFFSET3, PREF_BUTTON_OFFSET + FIRST_LINE_OFFSET + LINE_SPACING * (i + ((i >= REVENUE_POLICY_COUNT) ? 2 : 1)), PREF_BUTTON_OFFSET3 + PREF_BUTTON_WIDTH, PREF_BUTTON_OFFSET + FIRST_LINE_OFFSET + LINE_SPACING * (i + ((i >= REVENUE_POLICY_COUNT) ? 2 : 1)) + PREF_BUTTON_HEIGHT);
00535 vga.blt_buf(PREF_BUTTON_OFFSET4, PREF_BUTTON_OFFSET + FIRST_LINE_OFFSET + LINE_SPACING * (i + ((i >= REVENUE_POLICY_COUNT) ? 2 : 1)), PREF_BUTTON_OFFSET4 + PREF_BUTTON_WIDTH, PREF_BUTTON_OFFSET + FIRST_LINE_OFFSET + LINE_SPACING * (i + ((i >= REVENUE_POLICY_COUNT) ? 2 : 1)) + PREF_BUTTON_HEIGHT);
00536
00537 double *importWeight = (i < REVENUE_POLICY_COUNT) ? &(finance.revenue_policy_array[i].import_weight) : &(finance.expense_policy_array[i - REVENUE_POLICY_COUNT].import_weight);
00538 if(j==0)
00539 *importWeight = OPT_LOW_WEIGHT;
00540 else if(j==1)
00541 *importWeight = OPT_MID_WEIGHT;
00542 else if(j==2)
00543 *importWeight = OPT_HIGH_WEIGHT;
00544
00545
00546 return 1;
00547 }
00548 }
00549 }
00550 }
00551
00552
00553
00554 vga.use_back();
00555
00556 for (i = 0; i < REVENUE_POLICY_COUNT + EXPENSE_POLICY_COUNT; i++) {
00557 if(help_button_array[i].detect()) {
00558 String str;
00559 str = DIR_RES;
00560 str += "SCORE";
00561
00562 ResTxt rs;
00563 rs.init(str);
00564
00565
00566 image_interface.put_back(REPORT_X1+10,
00567 FIRST_LINE_OFFSET + LINE_SPACING * (i + ((i >= REVENUE_POLICY_COUNT) ? 2 : 1))
00568 ,"QUEST_DN");
00569 vga.blt_buf(
00570 REPORT_X1+10,
00571 FIRST_LINE_OFFSET + LINE_SPACING * (i + ((i >= REVENUE_POLICY_COUNT) ? 2 : 1)),
00572 REPORT_X1+30,
00573 FIRST_LINE_OFFSET + LINE_SPACING * (i + ((i >= REVENUE_POLICY_COUNT) ? 2 : 1))+20
00574 );
00575 sys.back_view_mode=sys.view_mode;
00576 help_if.help_textlist.topic_id=rs.locate_topic(game_str_res.opt_stage1_str(i));
00577
00578 if(help_if.help_textlist.topic_id>0) {
00579 help_if.help_textlist.add_history(help_if.help_textlist.topic_id);
00580 sys.set_view_mode(MODE_HELP_DESC);
00581 sys.redraw_all_flag = 1;
00582 audio.play_wav("BEEPS-1",audio.int_to_DsVolume(config.sound_effect_volume));
00583 }
00584 return 1;
00585 }
00586 }
00587
00588 return 0;
00589 }
00590
00591