mirror of
https://github.com/vcmi/vcmi.git
synced 2025-07-17 01:32:21 +02:00
[new] dodanie do CPreGameTextHandlera funkcji wypruwających tytuł/treść danej opcji
[change] przesunięcie CPreGameTextHandlera do CPreGeme'a [new] Pomoc kontekstowa dlaw wszystkich opcji w menu głównym (plansza główna) [bugfix] Gdy okienko znika nie ma błędów w wyświetlaniu (przycięte przyciski) [new] Funkcja do wygodnego generowania kolorów w rozszerzeniach SDLa i odświeżania recta [new] Generowanie okien dwuprzyciskowych (sporo jest z tym związanych zmian) ***Uwaga - to okno dwuprzyciskowe (a właściwie jego obsługa) nie jest dokończone - jest parę bugów o których wiem. Nie mam siły ich teraz poprawiać, a Ty pewnie zaraz wejdziesz i będziesz ciekaw zmian, więc wgrywam, ale nie zdziw się, gdy jakiś odkryjesz.*** I musisz dodać nowe defy, które zaraz dostaniesz na pocztę.
This commit is contained in:
31
CMessage.cpp
31
CMessage.cpp
@ -84,7 +84,8 @@ std::vector<std::string> * CMessage::breakText(std::string text)
|
||||
ret->push_back(text);
|
||||
return ret;
|
||||
}
|
||||
SDL_Surface * CMessage::genMessage(std::string title, std::string text, EWindowType type)
|
||||
SDL_Surface * CMessage::genMessage
|
||||
(std::string title, std::string text, EWindowType type, std::vector<CSemiDefHandler*> *addPics, void * cb)
|
||||
{
|
||||
//max x 320 okolo 30 znakow
|
||||
std::vector<std::string> * tekst;
|
||||
@ -95,12 +96,17 @@ SDL_Surface * CMessage::genMessage(std::string title, std::string text, EWindowT
|
||||
}
|
||||
else tekst = breakText(text);
|
||||
int ww, hh; //wymiary boksa
|
||||
if (319>60*13*text.length())
|
||||
ww = 60*13*text.length();
|
||||
if (319>30+13*text.length())
|
||||
ww = 30+13*text.length();
|
||||
else ww = 319;
|
||||
if (title.length())
|
||||
hh=130+(21*tekst->size());
|
||||
else hh=80+(21*tekst->size());
|
||||
hh=110+(21*tekst->size());
|
||||
else hh=60+(21*tekst->size());
|
||||
if (type==EWindowType::yesOrNO) //make place for buttons
|
||||
{
|
||||
if (ww<200) ww=200;
|
||||
hh+=70;
|
||||
}
|
||||
|
||||
SDL_Surface * ret = drawBox1(ww,hh);
|
||||
//prepare title text
|
||||
@ -110,13 +116,26 @@ SDL_Surface * CMessage::genMessage(std::string title, std::string text, EWindowT
|
||||
SDL_BlitSurface(titleText,NULL,ret,&tytul);
|
||||
SDL_FreeSurface(titleText);
|
||||
//draw text
|
||||
for (int i=0; i<tekst->size(); i++)
|
||||
for (int i=0; i<tekst->size(); i++)
|
||||
{
|
||||
SDL_Surface * tresc = TTF_RenderText_Shaded(TNRB,(*tekst)[i].c_str(),zwykly,tlo);
|
||||
SDL_Rect trescRect = genRect(tresc->h,tresc->w,((ret->w/2)-(tresc->w/2)),77+i*21);
|
||||
SDL_BlitSurface(tresc,NULL,ret,&trescRect);
|
||||
SDL_FreeSurface(tresc);
|
||||
}
|
||||
if (type==EWindowType::yesOrNO) // add buttons
|
||||
{
|
||||
int by = 40+77+tekst->size()*21;
|
||||
int hwo = (*addPics)[0]->ourImages[0].bitmap->w, hwc=(*addPics)[0]->ourImages[0].bitmap->w;
|
||||
//ok
|
||||
SDL_Rect trescRect = genRect((*addPics)[0]->ourImages[0].bitmap->h,hwo,((ret->w/2)-hwo-10),by);
|
||||
SDL_BlitSurface((*addPics)[0]->ourImages[0].bitmap,NULL,ret,&trescRect);
|
||||
((std::vector<SDL_Rect>*)(cb))->push_back(trescRect);
|
||||
//cancel
|
||||
trescRect = genRect((*addPics)[1]->ourImages[0].bitmap->h,hwc,((ret->w/2)+10),by);
|
||||
SDL_BlitSurface((*addPics)[1]->ourImages[0].bitmap,NULL,ret,&trescRect);
|
||||
((std::vector<SDL_Rect>*)(cb))->push_back(trescRect);
|
||||
}
|
||||
delete tekst;
|
||||
return ret;
|
||||
}
|
Reference in New Issue
Block a user