iwDiplomacy::iwDiplomacy(const GameWorldViewer& gwv, GameCommandFactory& gcFactory): IngameWindow(CGI_DIPLOMACY, (unsigned short) - 1, (unsigned short) - 1, 500, FIRST_LINE_Y + gwv.GetWorld().GetPlayerCount() * (CELL_HEIGHT + SPACE_HEIGHT) + 20, _("Diplomacy"), LOADER.GetImageN("resource", 41)), gwv(gwv), gcFactory(gcFactory) { // "Header" der Tabelle AddText(0, LINE_DISTANCE_TO_MARGINS + PING_FIELD_POS, HEADER_Y, _("Ping"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER, NormalFont); AddText(1, LINE_DISTANCE_TO_MARGINS + TREATIES_POS, HEADER_Y, _("Treaties"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER, NormalFont); for(unsigned i = 0; i < gwv.GetWorld().GetPlayerCount(); ++i) { const GamePlayer& player = gwv.GetWorld().GetPlayer(i); if(player.isUsed()) { // Einzelne Spielernamen AddText(100 + i, LINE_DISTANCE_TO_MARGINS + 10, FIRST_LINE_Y + i * (CELL_HEIGHT + SPACE_HEIGHT) + CELL_HEIGHT / 2, player.name, player.color, glArchivItem_Font::DF_VCENTER, NormalFont); if(player.ps == PS_OCCUPIED) // Ping AddDeepening(200 + i, LINE_DISTANCE_TO_MARGINS + PING_FIELD_POS - PING_FIELD_WIDTH / 2, FIRST_LINE_Y + i * (CELL_HEIGHT + SPACE_HEIGHT) + CELL_HEIGHT / 2 - 11, PING_FIELD_WIDTH, 22, TC_GREY, "0", NormalFont, COLOR_YELLOW); // An sich selber braucht man keine Bündnisse zu schließen if(gwv.GetPlayerId() != i) { // Bündnisvertrag-Button glArchivItem_Bitmap* image = LOADER.GetImageN("io", 61); ctrlButton* button = AddImageButton(300 + i, LINE_DISTANCE_TO_MARGINS + TREATIES_POS - TREATIE_BUTTON_SPACE / 2 - (image->getWidth() + 8), FIRST_LINE_Y + i * (CELL_HEIGHT + SPACE_HEIGHT) + CELL_HEIGHT / 2 - 40 / 2, 40, 40, TC_GREY, image, _("Treaty of alliance")); // Verbleibende Zeit unter dem Button AddText(500 + i, button->GetX(false) + button->GetWidth() / 2, button->GetY(false) + button->GetHeight() + 4, "", COLOR_YELLOW, glArchivItem_Font::DF_CENTER, SmallFont); // Nichtangriffspakt image = LOADER.GetImageN("io", 100); button = AddImageButton(400 + i, LINE_DISTANCE_TO_MARGINS + TREATIES_POS + TREATIE_BUTTON_SPACE / 2, FIRST_LINE_Y + i * (CELL_HEIGHT + SPACE_HEIGHT) + CELL_HEIGHT / 2 - 40 / 2, 40, 40, TC_GREY, image, _("Non-aggression pact")); // Verbleibende Zeit unter dem Button AddText(600 + i, button->GetX(false) + button->GetWidth() / 2, button->GetY(false) + button->GetHeight() + 4, "", COLOR_YELLOW, glArchivItem_Font::DF_CENTER, SmallFont); } } } // Farben festlegen Msg_PaintAfter(); }
iwDiplomacy::iwDiplomacy(const GameWorldViewer& gwv, GameCommandFactory& gcFactory) : IngameWindow(CGI_DIPLOMACY, IngameWindow::posLastOrCenter, Extent(500, FIRST_LINE_Y + gwv.GetWorld().GetNumPlayers() * (CELL_HEIGHT + SPACE_HEIGHT) + 20), _("Diplomacy"), LOADER.GetImageN("resource", 41)), gwv(gwv), gcFactory(gcFactory) { // "Header" der Tabelle AddText(0, DrawPoint(LINE_DISTANCE_TO_MARGINS + PING_FIELD_POS, HEADER_Y), _("Ping"), COLOR_YELLOW, FontStyle::CENTER, NormalFont); AddText(1, DrawPoint(LINE_DISTANCE_TO_MARGINS + TREATIES_POS, HEADER_Y), _("Treaties"), COLOR_YELLOW, FontStyle::CENTER, NormalFont); DrawPoint curTxtPos(LINE_DISTANCE_TO_MARGINS + 10, FIRST_LINE_Y + CELL_HEIGHT / 2 - CELL_HEIGHT - SPACE_HEIGHT); for(unsigned i = 0; i < gwv.GetWorld().GetNumPlayers(); ++i) { const GamePlayer& player = gwv.GetWorld().GetPlayer(i); curTxtPos.y += CELL_HEIGHT + SPACE_HEIGHT; if(!player.isUsed()) continue; // Einzelne Spielernamen AddText(100 + i, curTxtPos, player.name, player.color, FontStyle::VCENTER, NormalFont); if(player.ps == PS_OCCUPIED) { // Ping DrawPoint pingPos(LINE_DISTANCE_TO_MARGINS + PING_FIELD_POS - PING_FIELD_SIZE.x / 2, curTxtPos.y); AddTextDeepening(200 + i, pingPos, PING_FIELD_SIZE, TC_GREY, "0", NormalFont, COLOR_YELLOW); } // An sich selber braucht man keine Bündnisse zu schließen if(gwv.GetPlayerId() == i) continue; // Bündnisvertrag-Button glArchivItem_Bitmap* image = LOADER.GetImageN("io", 61); Extent btSize(40, 40); DrawPoint btPos(LINE_DISTANCE_TO_MARGINS + TREATIES_POS - TREATIE_BUTTON_SPACE / 2 - (image->getWidth() + 8), curTxtPos.y - btSize.y / 2); ctrlButton* button = AddImageButton(300 + i, btPos, btSize, TC_GREY, image, _("Treaty of alliance")); // Verbleibende Zeit unter dem Button DrawPoint remainingTimePos = button->GetPos() + DrawPoint(btSize.x / 2, btSize.y + 4); AddText(500 + i, remainingTimePos, "", COLOR_YELLOW, FontStyle::CENTER, SmallFont); // Nichtangriffspakt image = LOADER.GetImageN("io", 100); btPos.x = LINE_DISTANCE_TO_MARGINS + TREATIES_POS + TREATIE_BUTTON_SPACE / 2; button = AddImageButton(400 + i, btPos, btSize, TC_GREY, image, _("Non-aggression pact")); // Verbleibende Zeit unter dem Button remainingTimePos = button->GetPos() + DrawPoint(btSize.x / 2, btSize.y + 4); AddText(600 + i, remainingTimePos, "", COLOR_YELLOW, FontStyle::CENTER, SmallFont); } // Farben festlegen Msg_PaintAfter(); }