123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131 |
- /*
- * Seven Kingdoms: Ancient Adversaries
- *
- * Copyright 1997,1998 Enlight Software Ltd.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
- //Filename : OGAMSING.CPP
- //Description : Single player game interface
- #include <OVGA.h>
- #include <OSYS.h>
- #include <OMOUSE.h>
- #include <OFONT.h>
- #include <OIMGRES.h>
- #include <ORACERES.h>
- #include <OINFO.h>
- #include <OBUTT3D.h>
- #include <OGET.h>
- #include <OBATTLE.h>
- #include <OGFILE.h>
- #include <OGAME.h>
- #include <OCONFIG.h>
- #include <OMUSIC.h>
- #include <OBUTTCUS.h>
- #include <OCOLTBL.h>
- #include <OGETA.h>
- //---------- Define option modes --------//
- enum { OPTION_BASIC,
- OPTION_ADVANCED,
- OPTION_ADVANCE2,
- OPTION_GOAL,
- };
- static char option_mode;
- //--------- Define constant ----------//
- enum { BASIC_OPTION_X_SPACE = 78,
- BASIC_OPTION_HEIGHT = 32 };
- enum { COLOR_OPTION_X_SPACE = 35,
- COLOR_OPTION_HEIGHT = 32 };
- enum { ADVANCED_OPTION_X_SPACE = 89,
- ADVANCED_OPTION_Y_SPACE = 34,
- ADVANCED_OPTION_HEIGHT = 32 };
- static char race_table[MAX_RACE] = // race translation table
- #if(MAX_RACE == 10)
- {
- RACE_CHINESE, RACE_EGYPTIAN, RACE_GREEK, RACE_JAPANESE, RACE_MAYA,
- RACE_INDIAN, RACE_NORMAN, RACE_PERSIAN, RACE_VIKING, RACE_ZULU
- };
- #else
- {
- RACE_CHINESE, RACE_GREEK, RACE_JAPANESE, RACE_MAYA,
- RACE_PERSIAN, RACE_NORMAN, RACE_VIKING
- };
- #endif
- static char reverse_race_table[MAX_RACE] = // race translation table
- #if(MAX_RACE == 10)
- {
- 6, 4, 2, 8, 7, 0, 3, 1, 5, 9
- };
- #else
- {
- 5, 3, 1, 6, 4, 0, 2
- };
- #endif
- //------- Declare static functions -------//
- static int select_option();
- //-------- Begin of function Game::single_player_game --------//
- //
- // <int> noAI - if there should be no AI in the game.
- //
- void Game::single_player_game(int noAI)
- {
- if( !select_option() )
- return;
- // ------ attempt to save the config -------//
- config.save("CONFIG.DAT");
- //------ start single player game ----------//
- init();
- battle.run(0); // 0-not multiplayer game
- deinit();
- }
- //--------- End of function Game::single_player_game ---------//
- // define bit flag for refreshFlag
- static void disp_virtual_button(ButtonCustom *, int);
- static void disp_virtual_tick(ButtonCustom *, int);
- #define SGOPTION_PAGE 0x40000000
- #define SGOPTION_RACE 0x00000001
- #define SGOPTION_COLOR 0x00000002
- #define SGOPTION_AI_NATION 0x00000004
- #define SGOPTION_DIFFICULTY 0x00000008
- #define SGOPTION_TERRAIN 0x00000010
- #define SGOPTION_LAND_MASS 0x00000020
- #define SGOPTION_NAME_FIELD 0x00000040
- #define SGOPTION_MAP_ID 0x00000080
- #define SGOPTION_EXPLORED 0x00000100
- #define SGOPTION_FOG 0x00000200
- #define SGOPTION_TREASURE 0x00000400
- #define SGOPTION_AI_TREASURE 0x00000800
- #define SGOPTION_AI_AGGRESSIVE 0x00001000
- #define SGOPTION_FRYHTANS 0x00002000
- #define SGOPTION_RANDOM_STARTUP 0x00004000
- #define SGOPTION_RAW 0x00010000
- #define SGOPTION_NEAR_RAW 0x00020000
- #define SGOPTION_START_TOWN 0x00040000
- #define SGOPTION_TOWN_STRENGTH 0x00080000
- #define SGOPTION_TOWN_EMERGE 0x00100000
- #define SGOPTION_KINGDOM_EMERGE 0x00200000
- #define SGOPTION_RANDOM_EVENT 0x00400000
- #define SGOPTION_CLEAR_ENEMY 0x01000000
- #define SGOPTION_CLEAR_MONSTER 0x02000000
- #define SGOPTION_ENOUGH_PEOPLE 0x04000000
- #define SGOPTION_ENOUGH_INCOME 0x08000000
- #define SGOPTION_ENOUGH_SCORE 0x10000000
- #define SGOPTION_TIME_LIMIT 0x20000000
- #define SGOPTION_ALL 0x7fffffff
- static int select_option()
- {
- const int offsetY = 124;
- char optionMode = OPTION_BASIC;
- char menuTitleBitmap[] = "TOP-NSPG";
-
- Config tempConfig = config;
- // last multi-player game may set ai_nation_count to zero
- if( tempConfig.ai_nation_count < 1 )
- tempConfig.ai_nation_count = MAX_NATION-1;
- // some setting may be modified in the last game
- if( tempConfig.difficulty_level != OPTION_CUSTOM )
- tempConfig.change_difficulty(tempConfig.difficulty_level);
- int i;
- long refreshFlag = SGOPTION_ALL;
- int retFlag = 0;
- // --------- initialize race button group ---------- //
- ButtonCustomGroup raceGroup(MAX_RACE);
- for( i = 0; i < MAX_RACE; ++i )
- {
- #if(MAX_RACE == 10)
- raceGroup[i].create(222+(i%5)*BASIC_OPTION_X_SPACE, offsetY+81+(i/5)*BASIC_OPTION_HEIGHT,
- 222+(i%5+1)*BASIC_OPTION_X_SPACE-1, offsetY+81+(i/5+1)*BASIC_OPTION_HEIGHT-1,
- disp_virtual_button, ButtonCustomPara(&raceGroup, race_table[i]), 0, 0);
- #define Y_SHIFT_FLAG 1
- #else
- raceGroup[i].create(118+i*BASIC_OPTION_X_SPACE, offsetY+103,
- 118+(i+1)*BASIC_OPTION_X_SPACE-1, offsetY+103+BASIC_OPTION_HEIGHT-1,
- disp_virtual_button, ButtonCustomPara(&raceGroup, race_table[i]), 0, 0);
- #define Y_SHIFT_FLAG 0
- #endif
- }
- // --------- initialize color button group ---------- //
- ButtonCustomGroup colorGroup(MAX_COLOR_SCHEME);
- for( i = 0; i < MAX_COLOR_SCHEME; ++i )
- {
- #if(Y_SHIFT_FLAG)
- #define Y_SHIFT 14
- #else
- #define Y_SHIFT 0
- #endif
- colorGroup[i].create(195+i*COLOR_OPTION_X_SPACE, offsetY+149+Y_SHIFT,
- 195+(i+1)*COLOR_OPTION_X_SPACE-1, offsetY+149+Y_SHIFT+COLOR_OPTION_HEIGHT-1,
- disp_virtual_button, ButtonCustomPara(&colorGroup, i+1), 0, 0);
- #undef Y_SHIFT
- }
- // ---------- initialize ai_nation_count buttons --------//
- ButtonCustom aiNationInc, aiNationDec;
- {
- #if(Y_SHIFT_FLAG)
- #define Y_SHIFT 14
- #else
- #define Y_SHIFT 0
- #endif
- aiNationInc.create(595, offsetY+149+Y_SHIFT,
- 595+COLOR_OPTION_X_SPACE-1, offsetY+149+Y_SHIFT+COLOR_OPTION_HEIGHT-1,
- disp_virtual_button, ButtonCustomPara(NULL, +1) );
- aiNationDec.create(630, offsetY+149+Y_SHIFT,
- 630+COLOR_OPTION_X_SPACE-1, offsetY+149+Y_SHIFT+COLOR_OPTION_HEIGHT-1,
- disp_virtual_button, ButtonCustomPara(NULL, -1) );
- #undef Y_SHIFT
- }
- // ---------- initialize difficulty_level button group -------//
- ButtonCustomGroup diffGroup(6);
- for( i = 0; i < 6; ++i )
- {
- #if(Y_SHIFT_FLAG)
- #define Y_SHIFT 17
- #else
- #define Y_SHIFT 0
- #endif
- diffGroup[i].create( 205+i*BASIC_OPTION_X_SPACE, offsetY+194+Y_SHIFT,
- 205+(i+1)*BASIC_OPTION_X_SPACE-1, offsetY+194+Y_SHIFT+BASIC_OPTION_HEIGHT-1,
- disp_virtual_button, ButtonCustomPara(&diffGroup, i), 0, 0);
- #undef Y_SHIFT
- }
- // --------- initialize terrain_set button group -------//
- ButtonCustomGroup terrainGroup(3);
- for( i = 0; i < 3; ++i )
- {
- #if(Y_SHIFT_FLAG)
- #define Y_SHIFT 17
- #else
- #define Y_SHIFT 0
- #endif
- #ifdef AMPLUS
- terrainGroup[i].create(168+i*BASIC_OPTION_X_SPACE, offsetY+258+Y_SHIFT,
- 168+(i+1)*BASIC_OPTION_X_SPACE-1, offsetY+258+Y_SHIFT+BASIC_OPTION_HEIGHT-1,
- disp_virtual_button, ButtonCustomPara(&terrainGroup, i+1), 0, 0);
- #else
- // BUGHERE : terrain_set 2 is disable, exchange the position of button 1 and 2
- int k = i;
- switch(i)
- {
- case 1: k = 2; break;
- case 2: k = 1; break;
- }
- terrainGroup[i].create(205+k*BASIC_OPTION_X_SPACE, offsetY+258+Y_SHIFT,
- 205+(k+1)*BASIC_OPTION_X_SPACE-1, offsetY+258+Y_SHIFT+BASIC_OPTION_HEIGHT-1,
- disp_virtual_button, ButtonCustomPara(&terrainGroup, i+1), 0, 0);
- if( i == 1 )
- terrainGroup[i].enable_flag = 0;
- #endif
- #undef Y_SHIFT
- }
- // --------- initialize land_mass button group -------//
- ButtonCustomGroup landGroup(3);
- for( i = 0; i < 3; ++i )
- {
- #if(Y_SHIFT_FLAG)
- #define Y_SHIFT 17
- #else
- #define Y_SHIFT 0
- #endif
- landGroup[i].create(439+i*BASIC_OPTION_X_SPACE, offsetY+258+Y_SHIFT,
- 439+(i+1)*BASIC_OPTION_X_SPACE-1, offsetY+258+Y_SHIFT+BASIC_OPTION_HEIGHT-1,
- disp_virtual_button, ButtonCustomPara(&landGroup, i+1), 0, 0);
- #undef Y_SHIFT
- }
- GetA playerNameField;
- // ####### begin Gilbert 3/11 #######//
- // playerNameField.init( 318, offsetY+327, 690, tempConfig.player_name,
- // tempConfig.PLAYER_NAME_LEN, &font_san, 0, 1);
- playerNameField.init( 318, offsetY+322, 690, tempConfig.player_name,
- tempConfig.PLAYER_NAME_LEN, &font_bard, 0, 1);
- // ####### end Gilbert 3/11 #######//
- // --------- initialize info.random_seed field ----------//
- const int mapIdSize = 11; // enough to hold a dword in decimal
- char mapIdStr[mapIdSize+1];
- info.init_random_seed(0);
- ltoa( info.random_seed , mapIdStr, 10);
- GetA mapIdField;
- #if(defined(SPANISH))
- #define MAPID_X1 586
- #elif(defined(FRENCH))
- #define MAPID_X1 572
- #else
- #define MAPID_X1 564
- #endif
- mapIdField.init( MAPID_X1, offsetY+112, 700, mapIdStr, mapIdSize, &font_san, 0, 1);
- #undef MAPID_X1
- // --------- initialize explore_whole_map button group -------//
- ButtonCustomGroup exploreGroup(2);
- for( i = 0; i < 2; ++i )
- {
- exploreGroup[i].create(335+i*BASIC_OPTION_X_SPACE, offsetY+103,
- 335+(i+1)*BASIC_OPTION_X_SPACE-1, offsetY+103+BASIC_OPTION_HEIGHT-1,
- disp_virtual_button, ButtonCustomPara(&exploreGroup, 1-i), 0, 0);
- }
- // --------- initialize fog_of_war button group -------//
- ButtonCustomGroup fogGroup(2);
- for( i = 0; i < 2; ++i )
- {
- fogGroup[i].create(335+i*BASIC_OPTION_X_SPACE, offsetY+135,
- 335+(i+1)*BASIC_OPTION_X_SPACE-1, offsetY+135+BASIC_OPTION_HEIGHT-1,
- disp_virtual_button, ButtonCustomPara(&fogGroup, 1-i), 0, 0);
- }
- // --------- initialize start_up_cash/start_up_food button group -------//
- ButtonCustomGroup treasureGroup(4);
- for( i = 0; i < 4; ++i )
- {
- treasureGroup[i].create(335+i*BASIC_OPTION_X_SPACE, offsetY+167,
- 335+(i+1)*BASIC_OPTION_X_SPACE-1, offsetY+167+BASIC_OPTION_HEIGHT-1,
- disp_virtual_button, ButtonCustomPara(&treasureGroup, i+1), 0, 0);
- }
- // --------- initialize ai_start_up_cash/food button group -------//
- ButtonCustomGroup aiTreasureGroup(4);
- for( i = 0; i < 4; ++i )
- {
- aiTreasureGroup[i].create(335+i*BASIC_OPTION_X_SPACE, offsetY+199,
- 335+(i+1)*BASIC_OPTION_X_SPACE-1, offsetY+199+BASIC_OPTION_HEIGHT-1,
- disp_virtual_button, ButtonCustomPara(&aiTreasureGroup, i+1), 0, 0);
- }
- // --------- initialize ai_aggressiveness -------//
- ButtonCustomGroup aiAggressiveGroup(4);
- for( i = 0; i < 4; ++i )
- {
- aiAggressiveGroup[i].create(335+i*BASIC_OPTION_X_SPACE, offsetY+231,
- 335+(i+1)*BASIC_OPTION_X_SPACE-1, offsetY+231+BASIC_OPTION_HEIGHT-1,
- disp_virtual_button, ButtonCustomPara(&aiAggressiveGroup, i+1), 0, 0);
- }
- // --------- initialize monster_type -------//
- ButtonCustomGroup monsterGroup(3);
- for( i = 0; i < 3; ++i )
- {
- monsterGroup[i].create(335+i*BASIC_OPTION_X_SPACE, offsetY+263,
- 335+(i+1)*BASIC_OPTION_X_SPACE-1, offsetY+263+BASIC_OPTION_HEIGHT-1,
- disp_virtual_button, ButtonCustomPara(&monsterGroup, i), 0, 0);
- }
- // --------- initialize random startup button group -------//
- ButtonCustomGroup randomStartUpGroup(2);
- for( i = 0; i < 2; ++i )
- {
- randomStartUpGroup[i].create(335+i*BASIC_OPTION_X_SPACE, offsetY+295,
- 335+(i+1)*BASIC_OPTION_X_SPACE-1, offsetY+295+BASIC_OPTION_HEIGHT-1,
- disp_virtual_button, ButtonCustomPara(&randomStartUpGroup, 1-i), 0, 0);
- }
- // -------- initialize start_up_raw_site buttons --------- //
- ButtonCustom rawSiteInc, rawSiteDec;
- rawSiteInc.create( 368, offsetY+100,
- 368+COLOR_OPTION_X_SPACE-1, offsetY+100+COLOR_OPTION_HEIGHT-1,
- disp_virtual_button, ButtonCustomPara(NULL,0));
- rawSiteDec.create( 403, offsetY+100,
- 403+COLOR_OPTION_X_SPACE-1, offsetY+100+COLOR_OPTION_HEIGHT-1,
- disp_virtual_button, ButtonCustomPara(NULL,0));
- // --------- initialize start_up_has_mine_nearby button group --------//
- ButtonCustomGroup nearRawGroup(2);
- for( i = 0; i < 2; ++i )
- {
- nearRawGroup[i].create(332+i*BASIC_OPTION_X_SPACE, offsetY+132,
- 332+(i+1)*BASIC_OPTION_X_SPACE-1, offsetY+132+BASIC_OPTION_HEIGHT-1,
- disp_virtual_button, ButtonCustomPara(&nearRawGroup, 1-i), 0, 0);
- }
- // --------- initialize start_up_independent_town button group --------//
- static short startTownArray[3] = { 7, 15, 30 };
- ButtonCustomGroup townStartGroup(3);
- for( i = 0; i < 3; ++i )
- {
- townStartGroup[i].create(332+i*BASIC_OPTION_X_SPACE, offsetY+164,
- 332+(i+1)*BASIC_OPTION_X_SPACE-1, offsetY+164+BASIC_OPTION_HEIGHT-1,
- disp_virtual_button, ButtonCustomPara(&townStartGroup, startTownArray[i]), 0, 0);
- }
- // --------- initialize independent_town_resistance button group --------//
- ButtonCustomGroup townResistGroup(3);
- for( i = 0; i < 3; ++i )
- {
- townResistGroup[i].create(332+i*BASIC_OPTION_X_SPACE, offsetY+196,
- 332+(i+1)*BASIC_OPTION_X_SPACE-1, offsetY+196+BASIC_OPTION_HEIGHT-1,
- disp_virtual_button, ButtonCustomPara(&townResistGroup, i+1), 0, 0);
- }
- // --------- initialize new_independent_town_emerge button group --------//
- ButtonCustomGroup townEmergeGroup(2);
- for( i = 0; i < 2; ++i )
- {
- townEmergeGroup[i].create(332+i*BASIC_OPTION_X_SPACE, offsetY+228,
- 332+(i+1)*BASIC_OPTION_X_SPACE-1, offsetY+228+BASIC_OPTION_HEIGHT-1,
- disp_virtual_button, ButtonCustomPara(&townEmergeGroup, 1-i), 0, 0);
- }
- // --------- initialize new_nation_emerge button group --------//
- ButtonCustomGroup nationEmergeGroup(2);
- for( i = 0; i < 2; ++i )
- {
- nationEmergeGroup[i].create(332+i*BASIC_OPTION_X_SPACE, offsetY+260,
- 332+(i+1)*BASIC_OPTION_X_SPACE-1, offsetY+260+BASIC_OPTION_HEIGHT-1,
- disp_virtual_button, ButtonCustomPara(&nationEmergeGroup, 1-i), 0, 0);
- }
- // --------- initialize random_event_frequency button group --------//
- ButtonCustomGroup randomEventGroup(4);
- for( i = 0; i < 4; ++i )
- {
- randomEventGroup[i].create(332+i*BASIC_OPTION_X_SPACE, offsetY+292,
- 332+(i+1)*BASIC_OPTION_X_SPACE-1, offsetY+292+BASIC_OPTION_HEIGHT-1,
- disp_virtual_button, ButtonCustomPara(&randomEventGroup, i), 0, 0);
- }
- // ---------- initialize goal buttons ----------//
- ButtonCustom clearEnemyButton, clearMonsterButton, enoughPeopleButton, enoughIncomeButton, enoughScoreButton, timeLimitButton;
- ButtonCustom peopleInc, peopleDec, incomeInc, incomeDec, scoreInc, scoreDec, yearInc, yearDec;
- clearEnemyButton.create( 214, offsetY+145, 214+19, offsetY+145+19,
- disp_virtual_tick, ButtonCustomPara(NULL, 0), 0, 1);
- clearEnemyButton.enable_flag = 0;;
- clearMonsterButton.create( 214, offsetY+178, 214+19, offsetY+178+19,
- disp_virtual_tick, ButtonCustomPara(NULL, 0), 0,
- tempConfig.goal_destroy_monster);
- enoughPeopleButton.create( 214, offsetY+211, 214+19, offsetY+211+19,
- disp_virtual_tick, ButtonCustomPara(NULL, 0), 0,
- tempConfig.goal_population_flag);
- enoughIncomeButton.create( 214, offsetY+244, 214+19, offsetY+244+19, // -9
- disp_virtual_tick, ButtonCustomPara(NULL, 0), 0,
- tempConfig.goal_economic_score_flag);
- enoughScoreButton.create( 214, offsetY+277, 214+19, offsetY+277+19,
- disp_virtual_tick, ButtonCustomPara(NULL, 0), 0,
- tempConfig.goal_total_score_flag);
- timeLimitButton.create( 214, offsetY+309, 214+19, offsetY+309+19, // +23
- disp_virtual_tick, ButtonCustomPara(NULL, 0), 0,
- tempConfig.goal_year_limit_flag);
- peopleInc.create( 529, offsetY+206,
- 529+COLOR_OPTION_X_SPACE-1, offsetY+206+COLOR_OPTION_HEIGHT-1,
- disp_virtual_button, ButtonCustomPara(NULL, 0) );
- peopleDec.create( 564, offsetY+206,
- 564+COLOR_OPTION_X_SPACE-1, offsetY+206+COLOR_OPTION_HEIGHT-1,
- disp_virtual_button, ButtonCustomPara(NULL, 0) );
- incomeInc.create( 529, offsetY+238,
- 529+COLOR_OPTION_X_SPACE-1, offsetY+238+COLOR_OPTION_HEIGHT-1,
- disp_virtual_button, ButtonCustomPara(NULL, 0) );
- incomeDec.create( 564, offsetY+238,
- 564+COLOR_OPTION_X_SPACE-1, offsetY+238+COLOR_OPTION_HEIGHT-1,
- disp_virtual_button, ButtonCustomPara(NULL, 0) );
- scoreInc.create( 529, offsetY+270,
- 529+COLOR_OPTION_X_SPACE-1, offsetY+270+COLOR_OPTION_HEIGHT-1,
- disp_virtual_button, ButtonCustomPara(NULL, 0) );
- scoreDec.create( 564, offsetY+270,
- 564+COLOR_OPTION_X_SPACE-1, offsetY+270+COLOR_OPTION_HEIGHT-1,
- disp_virtual_button, ButtonCustomPara(NULL, 0) );
- yearInc.create( 529, offsetY+302,
- 529+COLOR_OPTION_X_SPACE-1, offsetY+302+COLOR_OPTION_HEIGHT-1,
- disp_virtual_button, ButtonCustomPara(NULL, 0) );
- yearDec.create( 564, offsetY+302,
- 564+COLOR_OPTION_X_SPACE-1, offsetY+302+COLOR_OPTION_HEIGHT-1,
- disp_virtual_button, ButtonCustomPara(NULL, 0) );
- Button3D startButton, returnButton;
- // startButton.create(250, 553, "BB-START", "BB-START", 1, 0);
- // returnButton.create(440, 553, "BB-RETURN", "BB-RETURN", 1, 0);
- startButton.create(194, 538, "START-U", "START-D", 1, 0);
- returnButton.create(440, 538, "CANCEL-U", "CANCEL-D", 1, 0);
- vga_front.unlock_buf();
- while(1)
- {
- MSG msg;
- if (PeekMessage( &msg, NULL, 0, 0, PM_NOREMOVE))
- {
- if (!GetMessage( &msg, NULL, 0, 0))
- {
- sys.signal_exit_flag = 1;
- // BUGHERE : vga_front is unlocked
- return 0;
- }
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- continue;
- }
- else if( sys.paused_flag || !sys.active_flag )
- {
- WaitMessage();
- continue;
- }
- if( sys.need_redraw_flag )
- {
- refreshFlag = SGOPTION_ALL;
- sys.need_redraw_flag = 0;
- }
- vga_front.lock_buf();
- sys.yield();
- mouse.get_event();
- // -------- display ----------//
- if( refreshFlag )
- {
- // ------- display basic option ---------//
- if( optionMode == OPTION_BASIC )
- {
- if( refreshFlag & SGOPTION_PAGE )
- {
- image_menu.put_to_buf( &vga_back, "SPG-BSC");
- #if(MAX_RACE == 10)
- // protection : image_menu.put_to_buf( &vga_back, "SPG-BSC");
- // ensure the user has the release version (I_MENU.RES)
- // image_menu2.put_to_buf( &vga_back, "SPG-BSC") get the real one
- image_menu2.put_to_buf( &vga_back, "SPG-BSC");
- #endif
- image_menu.put_back( 234, 15, menuTitleBitmap);
- vga.blt_buf(0,0,VGA_WIDTH-1,VGA_HEIGHT-1,0);
- }
- if( refreshFlag & SGOPTION_RACE )
- raceGroup.paint( reverse_race_table[tempConfig.race_id-1] );
- if( refreshFlag & SGOPTION_COLOR )
- colorGroup.paint( tempConfig.player_nation_color-1 );
- if( refreshFlag & SGOPTION_AI_NATION )
- {
- #if(Y_SHIFT_FLAG)
- #define Y_SHIFT 14
- #else
- #define Y_SHIFT 0
- #endif
- font_san.center_put(564, offsetY+154+Y_SHIFT, 564+25, offsetY+154+Y_SHIFT+21,
- m.format(tempConfig.ai_nation_count), 1);
- aiNationInc.paint();
- aiNationDec.paint();
- #undef Y_SHIFT
- }
- if( refreshFlag & SGOPTION_DIFFICULTY )
- diffGroup.paint(tempConfig.difficulty_level);
- if( refreshFlag & SGOPTION_TERRAIN )
- terrainGroup.paint(tempConfig.terrain_set-1);
- if( refreshFlag & SGOPTION_LAND_MASS )
- landGroup.paint(tempConfig.land_mass-1);
- if( refreshFlag & SGOPTION_NAME_FIELD )
- playerNameField.paint();
- }
- // ------- display advanced option ---------//
- if( optionMode == OPTION_ADVANCED )
- {
- if( refreshFlag & SGOPTION_PAGE )
- {
- image_menu.put_to_buf( &vga_back, "SPG-O1");
- image_menu.put_back( 234, 15, menuTitleBitmap);
- vga.blt_buf(0,0,VGA_WIDTH-1,VGA_HEIGHT-1,0);
- }
- if( refreshFlag & SGOPTION_MAP_ID )
- mapIdField.paint();
- if( refreshFlag & SGOPTION_EXPLORED )
- exploreGroup.paint(1-tempConfig.explore_whole_map);
- if( refreshFlag & SGOPTION_FOG )
- fogGroup.paint(1-tempConfig.fog_of_war);
- if( refreshFlag & SGOPTION_TREASURE )
- treasureGroup.paint( tempConfig.start_up_cash-1 );
- if( refreshFlag & SGOPTION_AI_TREASURE )
- aiTreasureGroup.paint( tempConfig.ai_start_up_cash-1 );
- if( refreshFlag & SGOPTION_AI_AGGRESSIVE )
- aiAggressiveGroup.paint(tempConfig.ai_aggressiveness-1);
- if( refreshFlag & SGOPTION_FRYHTANS )
- monsterGroup.paint(tempConfig.monster_type);
- if( refreshFlag & SGOPTION_RANDOM_STARTUP )
- randomStartUpGroup.paint(1-tempConfig.random_start_up);
- }
- // ------- display advanced option ---------//
- if( optionMode == OPTION_ADVANCE2 )
- {
- if( refreshFlag & SGOPTION_PAGE )
- {
- image_menu.put_to_buf( &vga_back, "SPG-O2");
- image_menu.put_back( 234, 15, menuTitleBitmap);
- vga.blt_buf(0,0,VGA_WIDTH-1,VGA_HEIGHT-1,0);
- }
- if( refreshFlag & SGOPTION_RAW )
- {
- font_san.center_put(337, offsetY+105, 337+25, offsetY+105+21,
- m.format(tempConfig.start_up_raw_site), 1);
- rawSiteInc.paint();
- rawSiteDec.paint();
- }
- if( refreshFlag & SGOPTION_NEAR_RAW )
- nearRawGroup.paint(1-tempConfig.start_up_has_mine_nearby);
- if( refreshFlag & SGOPTION_START_TOWN )
- townStartGroup.paint(
- tempConfig.start_up_independent_town >= 30 ? 2 :
- tempConfig.start_up_independent_town <= 7 ? 0 :
- 1
- );
- if( refreshFlag & SGOPTION_TOWN_STRENGTH )
- townResistGroup.paint(tempConfig.independent_town_resistance-1);
- if( refreshFlag & SGOPTION_TOWN_EMERGE )
- townEmergeGroup.paint(1-tempConfig.new_independent_town_emerge);
- if( refreshFlag & SGOPTION_KINGDOM_EMERGE )
- nationEmergeGroup.paint(1-tempConfig.new_nation_emerge);
- if( refreshFlag & SGOPTION_RANDOM_EVENT )
- randomEventGroup.paint(tempConfig.random_event_frequency);
- }
- // ------- display goal option ---------//
- if( optionMode == OPTION_GOAL )
- {
- if( refreshFlag & SGOPTION_PAGE )
- {
- image_menu.put_to_buf( &vga_back, "SPG-GOAL");
- image_menu.put_back( 234, 15, menuTitleBitmap);
- vga.blt_buf(0,0,VGA_WIDTH-1,VGA_HEIGHT-1,0);
- }
- if( refreshFlag & SGOPTION_CLEAR_ENEMY )
- clearEnemyButton.paint();
- if( refreshFlag & SGOPTION_CLEAR_MONSTER )
- clearMonsterButton.paint(tempConfig.goal_destroy_monster);
- if( refreshFlag & SGOPTION_ENOUGH_PEOPLE )
- {
- enoughPeopleButton.paint(tempConfig.goal_population_flag);
- font_san.center_put( 456, offsetY+211, 456+67, offsetY+211+21,
- m.format(tempConfig.goal_population) ,1);
- peopleInc.paint();
- peopleDec.paint();
- }
- if( refreshFlag & SGOPTION_ENOUGH_INCOME )
- {
- enoughIncomeButton.paint(tempConfig.goal_economic_score_flag);
- font_san.center_put( 456, offsetY+243, 456+67, offsetY+243+21,
- m.format(tempConfig.goal_economic_score), 1);
- incomeInc.paint();
- incomeDec.paint();
- }
- if( refreshFlag & SGOPTION_ENOUGH_SCORE )
- {
- enoughScoreButton.paint(tempConfig.goal_total_score_flag);
- font_san.center_put( 456, offsetY+275, 456+67, offsetY+275+21,
- m.format(tempConfig.goal_total_score), 1);
- scoreInc.paint();
- scoreDec.paint();
- }
- if( refreshFlag & SGOPTION_TIME_LIMIT )
- {
- timeLimitButton.paint(tempConfig.goal_year_limit_flag);
- font_san.center_put( 456, offsetY+307, 456+33, offsetY+307+21,
- m.format(tempConfig.goal_year_limit), 1);
- yearInc.paint();
- yearDec.paint();
- }
- }
- // ------- display difficulty -------//
- if( refreshFlag & SGOPTION_DIFFICULTY )
- {
- font_san.center_put( 718, offsetY+74, 780, offsetY+108,
- m.format(tempConfig.single_player_difficulty()), 1 );
- }
- // -------- repaint button -------//
- if( refreshFlag & SGOPTION_PAGE )
- {
- startButton.paint();
- returnButton.paint();
- }
- refreshFlag = 0;
- }
- sys.blt_virtual_buf();
- if( config.music_flag )
- {
- if( !music.is_playing(1) )
- music.play(1, sys.cdrom_drive ? MUSIC_CD_THEN_WAV : 0 );
- }
- else
- music.stop();
- // --------- detect basic option -------- //
- if( optionMode == OPTION_BASIC )
- {
- if( raceGroup.detect() >= 0)
- {
- tempConfig.race_id = raceGroup[raceGroup()].custom_para.value;
- //refreshFlag |= SGOPTION_RACE;
- }
- else if( colorGroup.detect() >= 0)
- {
- tempConfig.player_nation_color = colorGroup[colorGroup()].custom_para.value;
- //refreshFlag |= SGOPTION_COLOR;
- }
- else if( aiNationInc.detect() )
- {
- tempConfig.ai_nation_count++;
- if( tempConfig.ai_nation_count >= MAX_NATION )
- tempConfig.ai_nation_count = MAX_NATION-1;
- tempConfig.difficulty_level = OPTION_CUSTOM;
- refreshFlag |= SGOPTION_AI_NATION | SGOPTION_DIFFICULTY;
- }
- else if( aiNationDec.detect() )
- {
- tempConfig.ai_nation_count--;
- if( tempConfig.ai_nation_count <= 0 )
- tempConfig.ai_nation_count = 1;
- tempConfig.difficulty_level = OPTION_CUSTOM;
- refreshFlag |= SGOPTION_AI_NATION | SGOPTION_DIFFICULTY;
- }
- else if( diffGroup.detect() >= 0)
- {
- if( diffGroup[diffGroup()].custom_para.value != OPTION_CUSTOM )
- {
- tempConfig.change_difficulty(diffGroup[diffGroup()].custom_para.value);
- // all but SGOPTION_PAGE;
- refreshFlag |= SGOPTION_ALL & ~SGOPTION_PAGE;
- }
- }
- else if( terrainGroup.detect() >= 0)
- {
- tempConfig.terrain_set = terrainGroup[terrainGroup()].custom_para.value;
- static short latitudeArray[3] = { 45, 70, 20 };
- err_when( tempConfig.terrain_set <= 0 || tempConfig.terrain_set > 3 );
- tempConfig.latitude = latitudeArray[tempConfig.terrain_set-1];
- //refreshFlag |= SGOPTION_TERRAIN;
- }
- else if( landGroup.detect() >= 0)
- {
- tempConfig.land_mass = landGroup[landGroup()].custom_para.value;
- //refreshFlag |= SGOPTION_LAND_MASS;
- }
- else if( playerNameField.detect() )
- {
- refreshFlag |= SGOPTION_NAME_FIELD;
- }
- }
- // -------- detect advanced option ---------//
- if( optionMode == OPTION_ADVANCED )
- {
- if( mapIdField.detect() )
- {
- refreshFlag |= SGOPTION_MAP_ID;
- }
- else
- if( exploreGroup.detect() >= 0 )
- {
- tempConfig.explore_whole_map = exploreGroup[exploreGroup()].custom_para.value;
- tempConfig.difficulty_level = OPTION_CUSTOM;
- // refreshFlag |= SGOPTION_EXPLORED;
- refreshFlag |= SGOPTION_DIFFICULTY;
- }
- else if( fogGroup.detect() >= 0 )
- {
- tempConfig.fog_of_war = fogGroup[fogGroup()].custom_para.value;
- tempConfig.difficulty_level = OPTION_CUSTOM;
- // refreshFlag |= SGOPTION_FOG
- refreshFlag |= SGOPTION_DIFFICULTY;
- }
- else if( treasureGroup.detect() >= 0 )
- {
- tempConfig.start_up_cash = treasureGroup[treasureGroup()].custom_para.value;
- tempConfig.difficulty_level = OPTION_CUSTOM;
- // refreshFlag |= SGOPTION_TREASURE;
- refreshFlag |= SGOPTION_DIFFICULTY;
- }
- else if( aiTreasureGroup.detect() >= 0 )
- {
- tempConfig.ai_start_up_cash = aiTreasureGroup[aiTreasureGroup()].custom_para.value;
- tempConfig.difficulty_level = OPTION_CUSTOM;
- // refreshFlag |= SGOPTION_AI_TREASURE;
- refreshFlag |= SGOPTION_DIFFICULTY;
- }
- else if( aiAggressiveGroup.detect() >= 0 )
- {
- tempConfig.ai_aggressiveness =
- aiAggressiveGroup[aiAggressiveGroup()].custom_para.value;
- tempConfig.difficulty_level = OPTION_CUSTOM;
- // refreshFlag |= SGOPTION_AI_AGGRESSIVE;
- refreshFlag |= SGOPTION_DIFFICULTY;
- }
- else if( monsterGroup.detect() >= 0 )
- {
- tempConfig.monster_type = monsterGroup[monsterGroup()].custom_para.value;
- tempConfig.difficulty_level = OPTION_CUSTOM;
- // refreshFlag |= SGOPTION_FRYHTANS;
- refreshFlag |= SGOPTION_DIFFICULTY;
- }
- else if( randomStartUpGroup.detect() >= 0)
- {
- tempConfig.random_start_up = randomStartUpGroup[randomStartUpGroup()].custom_para.value;
- tempConfig.difficulty_level = OPTION_CUSTOM;
- // refreshFlag |= SGOPTION_RANDOM_STARTUP;
- refreshFlag |= SGOPTION_DIFFICULTY;
- }
- }
- // -------- detect advanced option ---------//
- if( optionMode == OPTION_ADVANCE2 )
- {
- if( rawSiteInc.detect() )
- {
- if( ++tempConfig.start_up_raw_site > 7 )
- tempConfig.start_up_raw_site = 7;
- tempConfig.difficulty_level = OPTION_CUSTOM;
- refreshFlag |= SGOPTION_RAW | SGOPTION_DIFFICULTY;
- }
- else if( rawSiteDec.detect() )
- {
- if( --tempConfig.start_up_raw_site < 1 )
- tempConfig.start_up_raw_site = 1;
- tempConfig.difficulty_level = OPTION_CUSTOM;
- refreshFlag |= SGOPTION_RAW | SGOPTION_DIFFICULTY;
- }
- else if( nearRawGroup.detect() >= 0)
- {
- tempConfig.start_up_has_mine_nearby = nearRawGroup[nearRawGroup()].custom_para.value;
- tempConfig.difficulty_level = OPTION_CUSTOM;
- // refreshFlag |= SGOPTION_NEAR_RAW;
- refreshFlag |= SGOPTION_DIFFICULTY;
- }
- else if( townStartGroup.detect() >= 0)
- {
- tempConfig.start_up_independent_town = townStartGroup[townStartGroup()].custom_para.value;
- tempConfig.difficulty_level = OPTION_CUSTOM;
- // resfreshFlag |= SGOPTION_START_TOWN;
- refreshFlag |= SGOPTION_DIFFICULTY;
- }
- else if( townResistGroup.detect() >= 0)
- {
- tempConfig.independent_town_resistance = townResistGroup[townResistGroup()].custom_para.value;
- tempConfig.difficulty_level = OPTION_CUSTOM;
- // resfreshFlag |= SGOPTION_TOWN_RESIST;
- refreshFlag |= SGOPTION_DIFFICULTY;
- }
- else if( townEmergeGroup.detect() >= 0)
- {
- tempConfig.new_independent_town_emerge = townEmergeGroup[townEmergeGroup()].custom_para.value;
- tempConfig.difficulty_level = OPTION_CUSTOM;
- // refreshFlag |= SGOPTION_TOWN_EMERGE;
- refreshFlag |= SGOPTION_DIFFICULTY;
- }
- else if( nationEmergeGroup.detect() >= 0)
- {
- tempConfig.new_nation_emerge = nationEmergeGroup[nationEmergeGroup()].custom_para.value;
- tempConfig.difficulty_level = OPTION_CUSTOM;
- // refreshFlag |= SGOPTION_NATION_EMERGE;
- refreshFlag |= SGOPTION_DIFFICULTY;
- }
- else if( randomEventGroup.detect() >= 0)
- {
- tempConfig.random_event_frequency = randomEventGroup[randomEventGroup()].custom_para.value;
- tempConfig.difficulty_level = OPTION_CUSTOM;
- // refreshFlag |= SGOPTION_RANDOM_EVENT;
- refreshFlag |= SGOPTION_DIFFICULTY;
- }
- }
- // -------- detect goal option ----------//
- if( optionMode == OPTION_GOAL )
- {
- if( clearEnemyButton.detect() )
- {
- }
- else if( clearMonsterButton.detect() )
- {
- tempConfig.goal_destroy_monster = clearMonsterButton.pushed_flag;
- }
- else if( enoughPeopleButton.detect() )
- {
- tempConfig.goal_population_flag = enoughPeopleButton.pushed_flag;
- }
- else if( enoughIncomeButton.detect() )
- {
- tempConfig.goal_economic_score_flag = enoughIncomeButton.pushed_flag;
- }
- else if( enoughScoreButton.detect() )
- {
- tempConfig.goal_total_score_flag = enoughScoreButton.pushed_flag;
- }
- else if( timeLimitButton.detect() )
- {
- tempConfig.goal_year_limit_flag = timeLimitButton.pushed_flag;
- }
- else if( peopleInc.detect() )
- {
- tempConfig.goal_population += 100;
- if( tempConfig.goal_population > 5000 )
- tempConfig.goal_population = 5000;
- refreshFlag |= SGOPTION_ENOUGH_PEOPLE;
- }
- else if( peopleDec.detect() )
- {
- tempConfig.goal_population -= 100;
- if( tempConfig.goal_population < 100 )
- tempConfig.goal_population = 100;
- refreshFlag |= SGOPTION_ENOUGH_PEOPLE;
- }
- else if( incomeInc.detect() )
- {
- tempConfig.goal_economic_score += 100;
- if( tempConfig.goal_economic_score > 5000 )
- {
- tempConfig.goal_economic_score = 5000;
- }
- refreshFlag |= SGOPTION_ENOUGH_INCOME;
- }
- else if( incomeDec.detect() )
- {
- tempConfig.goal_economic_score -= 100;
- if( tempConfig.goal_economic_score < 100 )
- {
- tempConfig.goal_economic_score = 100;
- }
- refreshFlag |= SGOPTION_ENOUGH_INCOME;
- }
- else if( scoreInc.detect() )
- {
- if( tempConfig.goal_total_score >= 2000 )
- tempConfig.goal_total_score += 500;
- else
- tempConfig.goal_total_score += 100;
- if( tempConfig.goal_total_score > 10000 )
- tempConfig.goal_total_score = 10000;
- refreshFlag |= SGOPTION_ENOUGH_SCORE;
- }
- else if( scoreDec.detect() )
- {
- if( tempConfig.goal_total_score > 2000 )
- tempConfig.goal_total_score -= 500;
- else
- tempConfig.goal_total_score -= 100;
- if( tempConfig.goal_total_score < 100 )
- tempConfig.goal_total_score = 100;
- refreshFlag |= SGOPTION_ENOUGH_SCORE;
- }
- else if( yearInc.detect() )
- {
- if( tempConfig.goal_year_limit >= 20 )
- tempConfig.goal_year_limit += 5;
- else
- tempConfig.goal_year_limit++;
- if( tempConfig.goal_year_limit > 100 )
- {
- tempConfig.goal_year_limit = 100;
- }
- refreshFlag |= SGOPTION_TIME_LIMIT;
- }
- else if( yearDec.detect() )
- {
- if( tempConfig.goal_year_limit > 20 )
- tempConfig.goal_year_limit -= 5;
- else
- tempConfig.goal_year_limit--;
- if( tempConfig.goal_year_limit < 1 )
- {
- tempConfig.goal_year_limit = 1;
- }
- refreshFlag |= SGOPTION_TIME_LIMIT;
- }
- }
- // --------- detect switch option button ------//
- if( mouse.single_click(96, offsetY+12, 218, offsetY+54) )
- {
- if( optionMode != OPTION_BASIC )
- {
- optionMode = OPTION_BASIC;
- refreshFlag = SGOPTION_ALL;
- }
- }
- else if( mouse.single_click(236, offsetY+12, 363, offsetY+54) )
- {
- if( optionMode != OPTION_ADVANCED )
- {
- optionMode = OPTION_ADVANCED;
- refreshFlag = SGOPTION_ALL;
- }
- }
- else if( mouse.single_click(380, offsetY+12, 506, offsetY+54) )
- {
- if( optionMode != OPTION_ADVANCE2 )
- {
- optionMode = OPTION_ADVANCE2;
- refreshFlag = SGOPTION_ALL;
- }
- }
- else if( mouse.single_click(523, offsetY+12, 649, offsetY+54) )
- {
- if( optionMode != OPTION_GOAL )
- {
- optionMode = OPTION_GOAL;
- refreshFlag = SGOPTION_ALL;
- }
- }
- // --------- detect input name --------//
- // --------- detect start button --------//
- if( startButton.detect() )
- {
- retFlag = 1;
- break; // break while(1)
- }
- else if( returnButton.detect() )
- {
- retFlag = 0;
- break; // break while(1)
- }
- vga_front.unlock_buf();
- }
- if( !vga_front.buf_locked )
- vga_front.lock_buf();
- if( retFlag )
- {
- info.init_random_seed( atol(mapIdStr) );
- tempConfig.difficulty_rating = tempConfig.single_player_difficulty();
- // BUGHERE : terrain_set 2 is not available
- #ifndef AMPLUS
- if( tempConfig.terrain_set == 2 )
- tempConfig.terrain_set = 1;
- #endif
- config = tempConfig;
- }
- return retFlag;
- }
- #ifdef Y_SHIFT
- #error
- #endif
- #undef Y_SHIFT_FLAG
- static void disp_virtual_button(ButtonCustom *button, int)
- {
- mouse.hide_area(button->x1, button->y1, button->x2, button->y2);
- if( !button->pushed_flag )
- {
- // copy from back buffer to front buffer
- IMGcopy(vga_front.buf_ptr(), vga_front.buf_pitch(),
- vga_back.buf_ptr(), vga_back.buf_pitch(),
- button->x1, button->y1, button->x2, button->y2 );
- }
- else
- {
- // copy from back buffer to front buffer, but the area is
- // darkened by 2 scale
- IMGcopyRemap(vga_front.buf_ptr(), vga_front.buf_pitch(),
- vga_back.buf_ptr(), vga_back.buf_pitch(),
- button->x1, button->y1, button->x2, button->y2,
- vga.vga_color_table->get_table(-2) );
- // draw black frame
- if( button->x2-button->x1+1 == BASIC_OPTION_X_SPACE &&
- button->y2-button->y1+1 == BASIC_OPTION_HEIGHT )
- {
- image_interface.put_front(button->x1, button->y1, "BAS_DOWN");
- }
- else if( button->x2-button->x1+1 == COLOR_OPTION_X_SPACE &&
- button->y2-button->y1+1 == COLOR_OPTION_HEIGHT )
- {
- image_interface.put_front(button->x1, button->y1, "COL_DOWN");
- }
- }
- mouse.show_area();
- }
- static void disp_virtual_tick(ButtonCustom *button, int )
- {
- mouse.hide_area(button->x1, button->y1, button->x2, button->y2);
- // copy from back buffer to front buffer
- IMGcopy(vga_front.buf_ptr(), vga_front.buf_pitch(),
- vga_back.buf_ptr(), vga_back.buf_pitch(),
- button->x1, button->y1, button->x2, button->y2 );
- if( button->pushed_flag )
- image_menu.put_front( button->x1+3, button->y1+3, "NMPG-RCH" );
- mouse.show_area();
- }
|