screens[ SCREEN_MENU ].addWindow( TITLE_POSX, TITLE_POSY, TITLE_WIDTH, TITLE_HEIGHT ); screens[ SCREEN_MENU ].addWindow( MENU_POSX, MENU_POSY, MENU_WIDTH, MENU_HEIGHT ); theWindow* menuW = screens[ SCREEN_MENU ].windows[ 0 ]; theWindow* menuW1 = screens[ SCREEN_MENU ].windows[ 1 ]; theWindow* menuW2 = screens[ SCREEN_MENU ].windows[ 2 ]; menuW->addPlaneMatrix( res->bGround[ BGR_MENU ]->w, res->bGround[ BGR_MENU ]->h ); menuW->makeBackgroundMatrix( 0, res->bGround[ BGR_MENU ] ); menuW1->addPlaneMatrix(); menuW2->addPlaneMatrix( res->bGround[ BGR_MENU_LIST ]->w, res->bGround[ BGR_MENU_LIST ]->h ); menuW2->makeBackgroundMatrix( 0, res->bGround[ BGR_MENU_LIST ] ); _SURFACE* mTitle = _CREATE_RGBA_SURFACE( TITLE_WIDTH, TITLE_HEIGHT, MENU_BG_COLOR ); _SURFACE* txtChoose = _CREATE_RGBA_SURFACE( res->font.tiles[ 0 ]->w * strlen( MENU_CHOOSE_LEVEL_TXT ), res->font.tiles[ 0 ]->h, 0 ); _SURFACE* txtExit = _CREATE_RGBA_SURFACE( res->font.tiles[ 0 ]->w * strlen( MENU_EXIT_TXT ), res->font.tiles[ 0 ]->h, 0 ); menuW1->anchoredText = true; menuW1->print( &res->font, mTitle, TITLE_TEXT_POSX, TITLE_TEXT_POSY, TITLE_TEXT ); menuW2->anchoredText = false; menuW2->print( &res->font, txtChoose, 0, 0, MENU_CHOOSE_LEVEL_TXT ); menuW2->print( &res->font, txtExit, 0, 0, MENU_EXIT_TXT ); menuW1->putOnMatrix( 0, mTitle, 0, 0 ); menuW2->addPlaneMatrix(); menuW2->putOnMatrix( 1, txtChoose, MENU_TXT_POSX, MENU_TXT_POSY ); menuW2->putOnMatrix( 1, txtExit, MENU_EXIT_POSX, MENU_EXIT_POSY ); menuW1->makeBorder( BORDER_MENU_WIDTH, BORDER_MENU_COLOR ); menuW2->makeBorder( BORDER_MENU_WIDTH, BORDER_MENU_COLOR ); |
Jest też drugi sposób, z użyciem obiektów wizualnych (bez tekstu dodanego do macierzy sektorów):
//zamiast: menuW1->putOnMatrix( 0, mTitle, 0, 0 ); menuW2->addPlaneMatrix(); menuW2->putOnMatrix( 1, txtChoose, MENU_TXT_POSX, MENU_TXT_POSY ); menuW2->putOnMatrix( 1, txtExit, MENU_EXIT_POSX, MENU_EXIT_POSY ); //można też: menuW1->newVObj( 0, 0, mTitle, 0, 0 ); menuW2->newVObj( 0, 0, txtChoose, MENU_TXT_POSX, MENU_TXT_POSY ); menuW2->newVObj( 0, 1, txtExit, MENU_EXIT_POSX, MENU_EXIT_POSY ); |
Ekran z identyfikatorem SCREEN_MENU zawiera 3 okna. Pierwsze okno to tło całego ekranu. Drugie okno zawiera napis tytułu gry "METOD". Trzecie okno zawiera menu właściwe (obecnie napisy "Choose level:" i "Exit"). Napis tytułu jest lekko przeźroczysty (identycznie jak tło tego okna), ponieważ jest osadzony w powierzchnię tła tego okna, które ma częściowo przeźroczysty kolor.
Funkcja składowa theWindow::makeBorder( _SIZE bw, _COLOR bc ) dodaje nowy plan z obramowaniem okna, bez żadnego wypełnienia. Pierwszy argument dla funkcji theWindow::putOnMatrix i theWindow::newVObj to indeks macierzy do której ma być dodana określona powierzchnia. Drugi argument dla funkcji theWindow::newVObj to indeks kolejności renderowania powierzchni obiektu wizualnego.
Brak komentarzy:
Prześlij komentarz