X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Feditor.c;h=fef23e2b5d3ba6fb172af8e1205a82aa10320606;hp=ee7fe4e58942403d9a98ae51274dee45b79c515f;hb=c4baa69cc8d5e8398425e67498b49f4b77f8e477;hpb=d0893e6987c21c25ec137438a18cfe1288362139 diff --git a/src/editor.c b/src/editor.c index ee7fe4e5..fef23e2b 100644 --- a/src/editor.c +++ b/src/editor.c @@ -10,25 +10,82 @@ * q99492@pbhrzx.uni-paderborn.de * *----------------------------------------------------------* * editor.c * -* * -* Letzte Aenderung: 15.06.1995 * ***********************************************************/ #include "editor.h" #include "screens.h" -#include "game.h" #include "tools.h" #include "misc.h" +#include "buttons.h" +#include "files.h" + +#define CHOICE_DELAY_VALUE 100 static int level_xpos,level_ypos; static BOOL edit_mode; static BOOL name_typing; -static int element_shift; static int new_element1 = EL_MAUERWERK; static int new_element2 = EL_LEERRAUM; static int new_element3 = EL_ERDREICH; -static int editor_element[] = + +int element_shift; +int editor_element[] = { + EL_CHAR_A + ('B' - 'A'), + EL_CHAR_A + ('O' - 'A'), + EL_CHAR_A + ('U' - 'A'), + EL_CHAR_A + ('L' - 'A'), + + EL_CHAR_MINUS, + EL_CHAR_A + ('D' - 'A'), + EL_CHAR_A + ('E' - 'A'), + EL_CHAR_A + ('R' - 'A'), + + EL_CHAR_A + ('D' - 'A'), + EL_CHAR_A + ('A' - 'A'), + EL_CHAR_A + ('S' - 'A'), + EL_CHAR_A + ('H' - 'A'), + + EL_SPIELFIGUR, + EL_LEERRAUM, + EL_ERDREICH, + EL_BETON, + + EL_FELSBODEN, + EL_SIEB2_LEER, + EL_AUSGANG_ZU, + EL_AUSGANG_AUF, + + EL_EDELSTEIN_BD, + EL_BUTTERFLY_O, + EL_FIREFLY_O, + EL_FELSBROCKEN, + + EL_BUTTERFLY_L, + EL_FIREFLY_L, + EL_BUTTERFLY_R, + EL_FIREFLY_R, + + EL_AMOEBE_BD, + EL_BUTTERFLY_U, + EL_FIREFLY_U, + EL_LEERRAUM, + + EL_CHAR_A + ('E' - 'A'), + EL_CHAR_A + ('M' - 'A'), + EL_CHAR_A + ('E' - 'A'), + EL_CHAR_MINUS, + + EL_CHAR_A + ('R' - 'A'), + EL_CHAR_A + ('A' - 'A'), + EL_CHAR_A + ('L' - 'A'), + EL_CHAR_A + ('D' - 'A'), + + EL_CHAR_A + ('M' - 'A'), + EL_CHAR_A + ('I' - 'A'), + EL_CHAR_A + ('N' - 'A'), + EL_CHAR_A + ('E' - 'A'), + EL_SPIELFIGUR, EL_LEERRAUM, EL_ERDREICH, @@ -44,46 +101,45 @@ static int editor_element[] = EL_KOKOSNUSS, EL_BOMBE, + EL_ERZ_EDEL, + EL_ERZ_DIAM, EL_MORAST_LEER, EL_MORAST_VOLL, + + EL_DYNAMIT_AUS, + EL_DYNAMIT, EL_AUSGANG_ZU, EL_AUSGANG_AUF, - EL_KAEFER, - EL_FLIEGER, EL_MAMPFER, - EL_ZOMBIE, + EL_KAEFER_O, + EL_FLIEGER_O, + EL_ROBOT, + + EL_KAEFER_L, + EL_FLIEGER_L, + EL_KAEFER_R, + EL_FLIEGER_R, - EL_PACMAN, - EL_DYNAMIT_AUS, - EL_DYNAMIT, EL_ABLENK_AUS, + EL_KAEFER_U, + EL_FLIEGER_U, + EL_UNSICHTBAR, EL_BADEWANNE1, EL_SALZSAEURE, EL_BADEWANNE2, - EL_BADEWANNE, + EL_LEERRAUM, EL_BADEWANNE3, EL_BADEWANNE4, EL_BADEWANNE5, - EL_UNSICHTBAR, + EL_LEERRAUM, EL_TROPFEN, - EL_AMOEBE1, - EL_AMOEBE2, - EL_AMOEBE3, - - EL_LIFE, - EL_LIFE_ASYNC, - - EL_ERZ_1, - EL_ERZ_2, - -/* - EL_BIRNE_AUS, - EL_BIRNE_EIN, -*/ + EL_AMOEBE_TOT, + EL_AMOEBE_NASS, + EL_AMOEBE_NORM, EL_SCHLUESSEL1, EL_SCHLUESSEL2, @@ -100,20 +156,92 @@ static int editor_element[] = EL_PFORTE3X, EL_PFORTE4X, - EL_KAEFER_R, - EL_KAEFER_O, - EL_KAEFER_L, - EL_KAEFER_U, + EL_CHAR_A + ('M' - 'A'), + EL_CHAR_A + ('O' - 'A'), + EL_CHAR_A + ('R' - 'A'), + EL_CHAR_A + ('E' - 'A'), - EL_FLIEGER_R, - EL_FLIEGER_O, - EL_FLIEGER_L, - EL_FLIEGER_U, + EL_PFEIL_L, + EL_PFEIL_R, + EL_PFEIL_O, + EL_PFEIL_U, - EL_PACMAN_R, + EL_AMOEBE_VOLL, + EL_EDELSTEIN_GELB, + EL_EDELSTEIN_ROT, + EL_EDELSTEIN_LILA, + + EL_ERZ_EDEL_BD, + EL_ERZ_EDEL_GELB, + EL_ERZ_EDEL_ROT, + EL_ERZ_EDEL_LILA, + + EL_LIFE, EL_PACMAN_O, + EL_ZEIT_VOLL, + EL_ZEIT_LEER, + EL_PACMAN_L, + EL_MAMPFER2, + EL_PACMAN_R, + EL_MAUER_LEBT, + + EL_LIFE_ASYNC, EL_PACMAN_U, + EL_BIRNE_AUS, + EL_BIRNE_EIN, + + EL_DYNABOMB_NR, + EL_DYNABOMB_SZ, + EL_DYNABOMB_XL, + EL_BADEWANNE, + + EL_MAULWURF, + EL_PINGUIN, + EL_SCHWEIN, + EL_DRACHE, + + EL_SONDE, + EL_LEERRAUM, + EL_LEERRAUM, + EL_LEERRAUM, + + EL_CHAR_A + ('S' - 'A'), + EL_CHAR_A + ('O' - 'A'), + EL_CHAR_A + ('K' - 'A'), + EL_CHAR_A + ('O' - 'A'), + + EL_CHAR_MINUS, + EL_CHAR_A + ('B' - 'A'), + EL_CHAR_A + ('A' - 'A'), + EL_CHAR_A + ('N' - 'A'), + + EL_SOKOBAN_OBJEKT, + EL_SOKOBAN_FELD_LEER, + EL_SOKOBAN_FELD_VOLL, + EL_BETON, + +/* + EL_CHAR_A + ('D' - 'A'), + EL_CHAR_A + ('Y' - 'A'), + EL_CHAR_A + ('N' - 'A'), + EL_CHAR_A + ('A' - 'A'), + + EL_CHAR_A + ('B' - 'A'), + EL_CHAR_A + ('L' - 'A'), + EL_CHAR_A + ('A' - 'A'), + EL_CHAR_A + ('S' - 'A'), + + EL_CHAR_MINUS, + EL_CHAR_A + ('T' - 'A'), + EL_CHAR_A + ('E' - 'A'), + EL_CHAR_A + ('R' - 'A'), +*/ + + EL_LEERRAUM, + EL_LEERRAUM, + EL_LEERRAUM, + EL_LEERRAUM, EL_CHAR_AUSRUF, EL_CHAR_ZOLL, @@ -189,7 +317,7 @@ static int editor_element[] = EL_CHAR_UE, EL_CHAR_COPY }; -static int elements_in_list = sizeof(editor_element)/sizeof(int); +int elements_in_list = sizeof(editor_element)/sizeof(int); void DrawLevelEd() { @@ -224,26 +352,26 @@ void DrawLevelEd() else graphic = GFX_LEERRAUM; - DrawMiniGraphicExtHiRes(pix[PIX_DB_DOOR],gc, - DOOR_GFX_PAGEX1+ED_BUTTON_ELEM_XPOS+3 + - (i%MAX_ELEM_X)*ED_BUTTON_ELEM_XSIZE, - DOOR_GFX_PAGEY1+ED_BUTTON_ELEM_YPOS+3 + - (i/MAX_ELEM_X)*ED_BUTTON_ELEM_YSIZE, - graphic); + DrawMiniGraphicExt(pix[PIX_DB_DOOR],gc, + DOOR_GFX_PAGEX1+ED_BUTTON_ELEM_XPOS+3 + + (i%MAX_ELEM_X)*ED_BUTTON_ELEM_XSIZE, + DOOR_GFX_PAGEY1+ED_BUTTON_ELEM_YPOS+3 + + (i/MAX_ELEM_X)*ED_BUTTON_ELEM_YSIZE, + graphic); } - DrawMiniGraphicExtHiRes(pix[PIX_DB_DOOR],gc, - DOOR_GFX_PAGEX1+ED_WIN_MB_LEFT_XPOS, - DOOR_GFX_PAGEY1+ED_WIN_MB_LEFT_YPOS, - el2gfx(new_element1)); - DrawMiniGraphicExtHiRes(pix[PIX_DB_DOOR],gc, - DOOR_GFX_PAGEX1+ED_WIN_MB_MIDDLE_XPOS, - DOOR_GFX_PAGEY1+ED_WIN_MB_MIDDLE_YPOS, - el2gfx(new_element2)); - DrawMiniGraphicExtHiRes(pix[PIX_DB_DOOR],gc, - DOOR_GFX_PAGEX1+ED_WIN_MB_RIGHT_XPOS, - DOOR_GFX_PAGEY1+ED_WIN_MB_RIGHT_YPOS, - el2gfx(new_element3)); + DrawMiniGraphicExt(pix[PIX_DB_DOOR],gc, + DOOR_GFX_PAGEX1+ED_WIN_MB_LEFT_XPOS, + DOOR_GFX_PAGEY1+ED_WIN_MB_LEFT_YPOS, + el2gfx(new_element1)); + DrawMiniGraphicExt(pix[PIX_DB_DOOR],gc, + DOOR_GFX_PAGEX1+ED_WIN_MB_MIDDLE_XPOS, + DOOR_GFX_PAGEY1+ED_WIN_MB_MIDDLE_YPOS, + el2gfx(new_element2)); + DrawMiniGraphicExt(pix[PIX_DB_DOOR],gc, + DOOR_GFX_PAGEX1+ED_WIN_MB_RIGHT_XPOS, + DOOR_GFX_PAGEY1+ED_WIN_MB_RIGHT_YPOS, + el2gfx(new_element3)); DrawTextExt(pix[PIX_DB_DOOR],gc, DOOR_GFX_PAGEX2+ED_WIN_LEVELNR_XPOS, DOOR_GFX_PAGEY1+ED_WIN_LEVELNR_YPOS, @@ -275,20 +403,21 @@ void DrawControlWindow() ClearWindow(); + /* Inhalt der Mampfer */ DrawText(ED_COUNT_GADGET_XPOS+1,SY+6, "Contents of a smashed cruncher:",FS_SMALL,FC_YELLOW); for(i=0;i<4;i++) for(y=0;y<4;y++) for(x=0;x<4;x++) { DrawMiniElement(1+5*i+x,2+y,EL_ERDREICH); XFillRectangle(display,drawto,gc, - SX+(2+5*i)*MINI_TILEX-MINI_TILEX/2-1, - SY+(3)*MINI_TILEY-MINI_TILEY/2-1, + SX+(1+5*i)*MINI_TILEX+MINI_TILEX/2-1, + SY+(2)*MINI_TILEY+MINI_TILEY/2-1, 3*MINI_TILEX+2,3*MINI_TILEY+2); } XCopyArea(display,drawto,drawto,gc, - SX+MINI_TILEX,SY+2*MINI_TILEY, + SX+1*MINI_TILEX,SY+2*MINI_TILEY, 4*5*MINI_TILEX,5*MINI_TILEY, - SX+MINI_TILEX-MINI_TILEX/2,SY+2*MINI_TILEY-MINI_TILEY/2); + SX+1*MINI_TILEX-MINI_TILEX/2,SY+2*MINI_TILEY-MINI_TILEY/2); for(i=0;i<4;i++) { for(y=0;y<3;y++) for(x=0;x<3;x++) @@ -299,6 +428,21 @@ void DrawControlWindow() int2str(i+1,1),FS_SMALL,FC_YELLOW); } + /* Inhalt der Amöbe */ + for(y=0;y<2;y++) for(x=0;x<2;x++) + { + DrawMiniElement(29+x,26+y,EL_ERDREICH); + XFillRectangle(display,drawto,gc, + SX+29*MINI_TILEX+MINI_TILEX/2-1, + SY+26*MINI_TILEY+MINI_TILEY/2-1, + MINI_TILEX+2,MINI_TILEY+2); + } + XCopyArea(display,drawto,drawto,gc, + SX+29*MINI_TILEX,SY+26*MINI_TILEY, + 3*MINI_TILEX,3*MINI_TILEY, + SX+29*MINI_TILEX-MINI_TILEX/2,SY+26*MINI_TILEY-MINI_TILEY/2); + DrawMiniElement(29,26,level.amoebe_inhalt); + for(i=0;i<11+3+2;i++) { XCopyArea(display,pix[PIX_DOOR],drawto,gc, @@ -357,7 +501,7 @@ void DrawControlWindow() DrawText(ED_COUNT_TEXT_XPOS,ED_COUNT_TEXT_YPOS+10*ED_COUNT_TEXT_YSIZE, "Score for each 10 seconds left",FS_SMALL,FC_YELLOW); DrawText(ED_COUNT_TEXT_XPOS,ED_COUNT_TEXT_YPOS+11*ED_COUNT_TEXT_YSIZE, - "Speed of the amoeba",FS_SMALL,FC_YELLOW); + "Speed of the amoeba / Content",FS_SMALL,FC_YELLOW); DrawText(ED_COUNT_TEXT_XPOS,ED_COUNT_TEXT_YPOS+12*ED_COUNT_TEXT_YSIZE, "Time for magic wall",FS_SMALL,FC_YELLOW); DrawText(ED_COUNT_TEXT_XPOS,ED_COUNT_TEXT_YPOS+13*ED_COUNT_TEXT_YSIZE, @@ -459,7 +603,7 @@ void FloodFill(int from_x, int from_y, int fill_element) { int i,x,y; int old_element; - static int check[4][2] = { -1,0, 0,-1, 1,0, 0,1 }; + static int check[4][2] = { {-1,0}, {0,-1}, {1,0}, {0,1} }; static int safety = 0; safety++; @@ -527,69 +671,61 @@ void LevelEd(int mx, int my, int button) } else /********** EDIT/CTRL-FENSTER **********/ { + static long choice_delay = 0; int choice = CheckElemButtons(mx,my,button); int elem_pos = choice-ED_BUTTON_ELEM; - switch(choice) + if (((choice == ED_BUTTON_EUP && element_shift>0) || + (choice == ED_BUTTON_EDOWN && + element_shift0) || - (choice==ED_BUTTON_EDOWN && - element_shiftelements_in_list-MAX_ELEM_X*MAX_ELEM_Y) - element_shift = elements_in_list-MAX_ELEM_X*MAX_ELEM_Y; - if (element_shift % MAX_ELEM_X) - element_shift += MAX_ELEM_X-(element_shift % MAX_ELEM_X); - - for(i=0;i=0 && elem_poselements_in_list-MAX_ELEM_X*MAX_ELEM_Y) + element_shift = elements_in_list-MAX_ELEM_X*MAX_ELEM_Y; + if (element_shift % MAX_ELEM_X) + element_shift += MAX_ELEM_X-(element_shift % MAX_ELEM_X); + + for(i=0;i=0 && elem_pos=0) { + if (!DelayReached(&choice_delay, CHOICE_DELAY_VALUE)) + break; if (lev_fieldx<2*SCR_FIELDX-2) break; @@ -622,13 +760,13 @@ void LevelEd(int mx, int my, int button) ScrollMiniLevel(level_xpos,level_ypos,ED_SCROLL_RIGHT); else DrawMiniLevel(level_xpos,level_ypos); - BackToFront(); - Delay(100000); } break; case ED_BUTTON_RIGHT: if (level_xpos<=lev_fieldx-2*SCR_FIELDX) { + if (!DelayReached(&choice_delay, CHOICE_DELAY_VALUE)) + break; if (lev_fieldx<2*SCR_FIELDX-2) break; @@ -639,13 +777,13 @@ void LevelEd(int mx, int my, int button) ScrollMiniLevel(level_xpos,level_ypos,ED_SCROLL_LEFT); else DrawMiniLevel(level_xpos,level_ypos); - BackToFront(); - Delay(100000); } break; case ED_BUTTON_UP: if (level_ypos>=0) { + if (!DelayReached(&choice_delay, CHOICE_DELAY_VALUE)) + break; if (lev_fieldy<2*SCR_FIELDY-2) break; @@ -656,13 +794,13 @@ void LevelEd(int mx, int my, int button) ScrollMiniLevel(level_xpos,level_ypos,ED_SCROLL_DOWN); else DrawMiniLevel(level_xpos,level_ypos); - BackToFront(); - Delay(100000); } break; case ED_BUTTON_DOWN: if (level_ypos<=lev_fieldy-2*SCR_FIELDY) { + if (!DelayReached(&choice_delay, CHOICE_DELAY_VALUE)) + break; if (lev_fieldy<2*SCR_FIELDY-2) break; @@ -673,8 +811,6 @@ void LevelEd(int mx, int my, int button) ScrollMiniLevel(level_xpos,level_ypos,ED_SCROLL_UP); else DrawMiniLevel(level_xpos,level_ypos); - BackToFront(); - Delay(100000); } break; default: @@ -727,11 +863,11 @@ void LevelEd(int mx, int my, int button) } else /********** KONTROLL-FENSTER **********/ { - static long choice_delay = 0; int choice = CheckCountButtons(mx,my,button); int step = (button==1 ? 1 : button==2 ? 5 : button==3 ? 10 : 0); - if (choice>=0 && choice<36 && DelayReached(&choice_delay,10)) + if (choice >= 0 && choice < 36 && + DelayReached(&choice_delay, CHOICE_DELAY_VALUE)) { if (!(choice % 2)) step = -step; @@ -879,7 +1015,8 @@ void LevelEd(int mx, int my, int button) } break; case ED_BUTTON_UNDO: - if (AreYouSure("Exit without saving ?",AYS_ASK | AYS_STAY_OPEN)) + if (leveldir[leveldir_nr].readonly || + AreYouSure("Exit without saving ?",AYS_ASK | AYS_STAY_OPEN)) { CloseDoor(DOOR_CLOSE_BOTH); game_status=MAINMENU; @@ -894,6 +1031,13 @@ void LevelEd(int mx, int my, int button) case ED_BUTTON_EXIT: { int figur_vorhanden = FALSE; + + if (leveldir[leveldir_nr].readonly) + { + AreYouSure("This level is read only !",AYS_CONFIRM); + break; + } + for(y=0;y=SX+29*MINI_TILEX && mx=SY+26*MINI_TILEY && my3) + return; + + new_element = (button==1 ? new_element1 : + button==2 ? new_element2 : + button==3 ? new_element3 : 0); + + if (new_element != level.amoebe_inhalt) + { + level.amoebe_inhalt = new_element; + DrawMiniElement(29,26,new_element); + } + } + if (mx>=SX+1*MINI_TILEX && mx=SY+2*MINI_TILEY && my0) + else if ((key==XK_Delete || key==XK_BackSpace) && len>0) { level.name[len-1] = 0; len--; @@ -1084,433 +1247,3 @@ void LevelNameTyping(KeySym key) name_typing = FALSE; } } - -void DrawEditButton(unsigned long state) -{ - int i; - int xpos = 0, ypos = 1, xsize = 2, ysize = 3; - int cx = DOOR_GFX_PAGEX6, cy = DOOR_GFX_PAGEY2; - static int edit_pos[6][4] = - { - ED_BUTTON_CTRL_XPOS,ED_BUTTON_CTRL_YPOS, - ED_BUTTON_CTRL_XSIZE,ED_BUTTON_CTRL_YSIZE, - - ED_BUTTON_FILL_XPOS,ED_BUTTON_FILL_YPOS, - ED_BUTTON_FILL_XSIZE,ED_BUTTON_FILL_YSIZE, - - ED_BUTTON_LEFT_XPOS,ED_BUTTON_LEFT_YPOS, - ED_BUTTON_LEFT_XSIZE,ED_BUTTON_LEFT_YSIZE, - - ED_BUTTON_UP_XPOS,ED_BUTTON_UP_YPOS, - ED_BUTTON_UP_XSIZE,ED_BUTTON_UP_YSIZE, - - ED_BUTTON_DOWN_XPOS,ED_BUTTON_DOWN_YPOS, - ED_BUTTON_DOWN_XSIZE,ED_BUTTON_DOWN_YSIZE, - - ED_BUTTON_RIGHT_XPOS,ED_BUTTON_RIGHT_YPOS, - ED_BUTTON_RIGHT_XSIZE,ED_BUTTON_RIGHT_YSIZE - }; - - if (state & ED_BUTTON_PRESSED) - cx = DOOR_GFX_PAGEX5; - - for(i=0;i<6;i++) - { - if (state & (1<=0 && pressed) - { - pressed = FALSE; - DrawEditButton(edit_button[choice] | ED_BUTTON_RELEASED); - } - else if (ON_EDIT_BUTTON(mx,my) && EDIT_BUTTON(mx,my)==choice) - { - if (!pressed) - DrawEditButton(edit_button[choice] | ED_BUTTON_PRESSED); - pressed = TRUE; - if (edit_button[choice]!=ED_BUTTON_CTRL && - edit_button[choice]!=ED_BUTTON_FILL) - return_code = 1<=0 && pressed) - { - pressed = FALSE; - DrawCtrlButton(ctrl_button[choice] | ED_BUTTON_RELEASED); - } - else if (ON_CTRL_BUTTON(mx,my) && CTRL_BUTTON(mx,my)==choice && !pressed) - { - pressed = TRUE; - DrawCtrlButton(ctrl_button[choice] | ED_BUTTON_PRESSED); - } - } - } - else /* Maustaste wieder losgelassen */ - { - if (ON_CTRL_BUTTON(mx,my) && CTRL_BUTTON(mx,my)==choice && pressed) - { - DrawCtrlButton(ctrl_button[choice] | ED_BUTTON_RELEASED); - return_code = 1<<(choice+6); - choice = -1; - pressed = FALSE; - } - else - { - choice = -1; - pressed = FALSE; - } - } - - BackToFront(); - return(return_code); -} - -int CheckElemButtons(int mx, int my, int button) -{ - int return_code = -1; - static int choice = -1; - static BOOL pressed = FALSE; - - if (button) - { - if (!motion_status) /* Maustaste neu gedrückt */ - { - if (ON_ELEM_BUTTON(mx,my)) - { - choice = ELEM_BUTTON(mx,my); - pressed = TRUE; - DrawElemButton(choice,ED_BUTTON_PRESSED); - if (choice==ED_BUTTON_EUP || - choice==ED_BUTTON_EDOWN) - return_code = choice; - } - } - else /* Mausbewegung bei gedrückter Maustaste */ - { - if ((!ON_ELEM_BUTTON(mx,my) || ELEM_BUTTON(mx,my)!=choice) && - choice>=0 && pressed) - { - pressed = FALSE; - DrawElemButton(choice,ED_BUTTON_RELEASED); - } - else if (ON_ELEM_BUTTON(mx,my) && ELEM_BUTTON(mx,my)==choice) - { - if (!pressed) - DrawElemButton(choice,ED_BUTTON_PRESSED); - pressed = TRUE; - if (choice==ED_BUTTON_EUP || - choice==ED_BUTTON_EDOWN) - return_code = choice; - } - } - } - else /* Maustaste wieder losgelassen */ - { - if (ON_ELEM_BUTTON(mx,my) && ELEM_BUTTON(mx,my)==choice && pressed) - { - DrawElemButton(choice,ED_BUTTON_RELEASED); - if (choice!=ED_BUTTON_EUP && - choice!=ED_BUTTON_EDOWN) - return_code = choice; - choice = -1; - pressed = FALSE; - } - else - { - choice = -1; - pressed = FALSE; - } - } - - BackToFront(); - return(return_code); -} - -int CheckCountButtons(int mx, int my, int button) -{ - int return_code = -1; - static int choice = -1; - static BOOL pressed = FALSE; - - if (button) - { - if (!motion_status) /* Maustaste neu gedrückt */ - { - if (ON_COUNT_BUTTON(mx,my)) - { - choice = COUNT_BUTTON(mx,my); - pressed = TRUE; - DrawCountButton(choice,ED_BUTTON_PRESSED); - return_code = choice; - } - } - else /* Mausbewegung bei gedrückter Maustaste */ - { - if ((!ON_COUNT_BUTTON(mx,my) || COUNT_BUTTON(mx,my)!=choice) && - choice>=0 && pressed) - { - pressed = FALSE; - DrawCountButton(choice,ED_BUTTON_RELEASED); - } - else if (ON_COUNT_BUTTON(mx,my) && COUNT_BUTTON(mx,my)==choice) - { - if (!pressed) - DrawCountButton(choice,ED_BUTTON_PRESSED); - pressed = TRUE; - return_code = choice; - } - } - } - else /* Maustaste wieder losgelassen */ - { - if (ON_COUNT_BUTTON(mx,my) && COUNT_BUTTON(mx,my)==choice && pressed) - { - DrawCountButton(choice,ED_BUTTON_RELEASED); - choice = -1; - pressed = FALSE; - } - else - { - choice = -1; - pressed = FALSE; - } - } - - BackToFront(); - return(return_code); -}