/** * Konstruktor von @p iwTextfile. * * @todo Das Fenster ist zu klein, um 80 Zeichen pro Zeile darstellen zu * koennen. Ein horizontaler Scrollbalken fuer 640x480 waere nicht * schlecht. * * @author Devil * @author FloSoft * @author OLiver */ iwMissionStatement::iwMissionStatement(const std::string& title, const std::string& content) : IngameWindow(CGI_MISSION_STATEMENT, 0xFFFF, 0xFFFF, 640, 480, title, LOADER.GetImageN("io", 5)) { ctrlMultiline* text = AddMultiline(0, 10, 20, width - 20, 450, TC_GREEN2, NormalFont, glArchivItem_Font::DF_LEFT | glArchivItem_Font::DF_TOP); unsigned short max_line_width = 0; std::stringstream ss(content); std::string line; while (std::getline(ss, line, '\n')) { text->AddString(line.c_str(), COLOR_YELLOW, false); // add this line to the window contents unsigned short current_line_width = NormalFont->getWidth(line); // get the width of line in normal font if (current_line_width > max_line_width) // if wider than max, re-set max { max_line_width = current_line_width; } } SetWidth(max_line_width + 20 + 30); // set window width to our determined max width text->SetWidth(max_line_width + 30); AddTextButton(1, width / 2 - 100, 435, 200, 22, TC_GREEN2, _("Continue"), NormalFont); }
iwPostWindow::iwPostWindow(GameWorldViewer& gwv) : IngameWindow(CGI_POSTOFFICE, 0xFFFF, 0xFFFF, 254, 295, _("Post office"), LOADER.GetImageN("resource", 41)), gwv(gwv) { AddImageButton( 0, 18, 25, 35, 35, TC_GREY, LOADER.GetImageN("io", 190)); // Viewer: 191 - Papier AddImageButton( 1, 56, 25, 35, 35, TC_GREY, LOADER.GetImageN("io", 30)); // Viewer: 31 - Soldat AddImageButton( 2, 91, 25, 35, 35, TC_GREY, LOADER.GetImageN("io", 20)); // Viewer: 21 - Geologe AddImageButton( 3, 126, 25, 35, 35, TC_GREY, LOADER.GetImageN("io", 28)); // Viewer: 29 - Wage AddImageButton( 4, 161, 25, 35, 35, TC_GREY, LOADER.GetImageN("io", 189)); // Viewer: 190 - Neue Nachricht AddImageButton( 5, 199, 25, 35, 35, TC_GREY, LOADER.GetImageN("io", 79)); // Viewer: 80 - Notiz AddImage( 6, 126, 151, LOADER.GetImageN("io", 228)); AddImageButton( 7, 18, 242, 30, 35, TC_GREY, LOADER.GetImageN("io", 225)); // Viewer: 226 - Hilfe AddImageButton( 8, 51, 246, 30, 26, TC_GREY, LOADER.GetImageN("io", 102)); // Viewer: 103 - Schnell zurück AddImageButton( 9, 81, 246, 30, 26, TC_GREY, LOADER.GetImageN("io", 103)); // Viewer: 104 - Zurück AddImageButton(10, 111, 246, 30, 26, TC_GREY, LOADER.GetImageN("io", 104)); // Viewer: 105 - Vor AddImageButton(11, 141, 246, 30, 26, TC_GREY, LOADER.GetImageN("io", 105)); // Viewer: 106 - Schnell vor gotoButton = AddImageButton(14, 181, 246, 30, 26, TC_GREY, LOADER.GetImageN("io", 107)); // Goto, nur sichtbar wenn Nachricht mit Koordinaten da gotoButton->SetVisible(false); deleteButton = AddImageButton(15, 211, 246, 30, 26, TC_GREY, LOADER.GetImageN("io", 106)); // Mülleimer, nur sichtbar, wenn Nachricht da deleteButton->SetVisible(false); postMsgInfos = AddText(18, 127, 228, "", MakeColor(255, 188, 100, 88), glArchivItem_Font::DF_CENTER | glArchivItem_Font::DF_BOTTOM, SmallFont); postMsgInfos->SetVisible(false); postImage = AddImage(13, 127, 155, LOADER.GetImageN("io", 225)); // Multiline-Teil mit drei leeren Zeilen erzeugen ctrlMultiline* text = AddMultiline(12, 126, 141, 200, 50, TC_INVISIBLE, NormalFont, glArchivItem_Font::DF_CENTER | glArchivItem_Font::DF_BOTTOM | glArchivItem_Font::DF_NO_OUTLINE); text->EnableBox(false); text->AddString("", COLOR_WINDOWBROWN, false); text->AddString("", COLOR_WINDOWBROWN, false); text->AddString("", COLOR_WINDOWBROWN, false); SetMessageText(_("No letters!")); acceptButton = AddImageButton(16, 87, 185, 30, 26, TC_GREEN1, LOADER.GetImageN("io", 32)); // Button mit Haken, zum Annehmen von Verträgen acceptButton->SetVisible(false); declineButton = AddImageButton(17, 137, 185, 30, 26, TC_RED1, LOADER.GetImageN("io", 40)); // Button mit Kreuz, zum Ablehnen von Verträgen declineButton->SetVisible(false); currentMessage = 0; DisplayPostMessage(); lastSize = GameClient::inst().GetPostMessages().size(); }
/** * Konstruktor von @p iwTextfile. * * @todo Das Fenster ist zu klein, um 80 Zeichen pro Zeile darstellen zu * koennen. Ein horizontaler Scrollbalken fuer 640x480 waere nicht * schlecht. * * @author Devil * @author FloSoft * @author OLiver */ iwTextfile::iwTextfile(const std::string& filename, const std::string& title) : IngameWindow(CGI_README, 0xFFFF, 0xFFFF, 640, 480, title, LOADER.GetImageN("resource", 41)) { // Pfad mit gewählter Sprache auswählen std::string path = GetFilePath(FILE_PATHS[88]) + SETTINGS.language.language + "/" + filename; std::ifstream file(path.c_str()); ctrlMultiline* text = AddMultiline(2, 10, 20, width - 20, 450, TC_GREEN1, NormalFont, glArchivItem_Font::DF_LEFT | glArchivItem_Font::DF_TOP); if(!file.good()) { // lokalisierte Vresion nicht gefunden, Standard öffnen path = FILE_PATHS[88] + filename; file.clear(); file.open(path.c_str()); if(!file.good()) { // immer noch nichts gefunden? --> Dann Fehlermeldung text->AddString(_("The readme file was not found!"), COLOR_RED, false); // und raus return; } } std::string line; // buffer for one line unsigned short max_line_width = 0; // use this to find max length of lines, to set window width unsigned short current_line_width; while(!file.eof()) { std::getline(file, line); // get next line text->AddString(line.c_str(), COLOR_YELLOW, false); // add this line to the window contents current_line_width = NormalFont->getWidth(line); // get the width of line in normal font if (current_line_width > max_line_width) // if wider than max, re-set max { max_line_width = current_line_width; } } file.close(); SetWidth(max_line_width + 20 + 30); // set window width to our determined max width text->SetWidth(max_line_width + 30); }
iwPostWindow::iwPostWindow(GameWorldView& gwv, PostBox& postBox) : IngameWindow(CGI_POSTOFFICE, IngameWindow::posLastOrCenter, Extent(254, 295), _("Post office"), LOADER.GetImageN("resource", 41)), gwv(gwv), postBox(postBox), showAll(true), curCategory(PostCategory::General), curMsg(nullptr), lastHasMissionGoal(true) { AddImageButton(ID_SHOW_ALL, DrawPoint(18, 25), Extent(35, 35), TC_GREY, LOADER.GetImageN("io", 190)); // Viewer: 191 - Papier AddImageButton(ID_SHOW_MIL, DrawPoint(56, 25), Extent(35, 35), TC_GREY, LOADER.GetImageN("io", 30)); // Viewer: 31 - Soldat AddImageButton(ID_SHOW_GEO, DrawPoint(91, 25), Extent(35, 35), TC_GREY, LOADER.GetImageN("io", 20)); // Viewer: 21 - Geologe AddImageButton(ID_SHOW_ECO, DrawPoint(126, 25), Extent(35, 35), TC_GREY, LOADER.GetImageN("io", 28)); // Viewer: 29 - Wage AddImageButton(ID_SHOW_GEN, DrawPoint(161, 25), Extent(35, 35), TC_GREY, LOADER.GetImageN("io", 189)); // Viewer: 190 - Neue Nachricht AddImageButton(ID_SHOW_GOAL, DrawPoint(199, 25), Extent(35, 35), TC_GREY, LOADER.GetImageN("io", 79)); // Viewer: 80 - Notiz AddImage(0, DrawPoint(126, 151), LOADER.GetImageN("io", 228)); AddImageButton(ID_HELP, DrawPoint(18, 242), Extent(30, 35), TC_GREY, LOADER.GetImageN("io", 225)); // Viewer: 226 - Hilfe AddImageButton(ID_GO_START, DrawPoint(51, 246), Extent(30, 26), TC_GREY, LOADER.GetImageN("io", 102)); // Viewer: 103 - Schnell zurück AddImageButton(ID_GO_BACK, DrawPoint(81, 246), Extent(30, 26), TC_GREY, LOADER.GetImageN("io", 103)); // Viewer: 104 - Zurück AddImageButton(ID_GO_FWD, DrawPoint(111, 246), Extent(30, 26), TC_GREY, LOADER.GetImageN("io", 104)); // Viewer: 105 - Vor AddImageButton(ID_GO_END, DrawPoint(141, 246), Extent(30, 26), TC_GREY, LOADER.GetImageN("io", 105)); // Viewer: 106 - Schnell vor // Goto, nur sichtbar wenn Nachricht mit Koordinaten da AddImageButton(ID_GOTO, DrawPoint(181, 246), Extent(30, 26), TC_GREY, LOADER.GetImageN("io", 107))->SetVisible(false); // Mülleimer, nur sichtbar, wenn Nachricht da AddImageButton(ID_DELETE, DrawPoint(211, 246), Extent(30, 26), TC_GREY, LOADER.GetImageN("io", 106))->SetVisible(false); AddText(ID_INFO, DrawPoint(127, 228), "", MakeColor(255, 188, 100, 88), FontStyle::CENTER | FontStyle::BOTTOM, SmallFont) ->SetVisible(false); AddImage(ID_IMG, DrawPoint(127, 155), LOADER.GetImageN("io", 225)); // Multiline-Teil mit drei leeren Zeilen erzeugen ctrlMultiline* text = AddMultiline(ID_TEXT, DrawPoint(126, 141), Extent(200, 0), TC_INVISIBLE, NormalFont, FontStyle::CENTER | FontStyle::BOTTOM | FontStyle::NO_OUTLINE); text->SetNumVisibleLines(4); text->ShowBackground(false); // Button with OK and deny sign (tick and cross) for contracts AddImageButton(ID_ACCEPT, DrawPoint(87, 185), Extent(30, 26), TC_GREEN1, LOADER.GetImageN("io", 32))->SetVisible(false); AddImageButton(ID_DENY, DrawPoint(137, 185), Extent(30, 26), TC_RED1, LOADER.GetImageN("io", 40))->SetVisible(false); FilterMessages(); curMsgId = curMsgIdxs.size(); DisplayPostMessage(); }