示例#1
0
GtkWidget * create_URL( void )
{
    GtkWidget * vbox1;
    GtkWidget * hbox1;
    GtkWidget * hbuttonbox1;
    GtkWidget * Ok;
    GtkWidget * Cancel;
    GtkAccelGroup * accel_group;

    accel_group=gtk_accel_group_new();

    URL=gtk_window_new( GTK_WINDOW_TOPLEVEL );
    gtk_widget_set_name( URL,"URL" );
    gtk_object_set_data( GTK_OBJECT( URL ),"URL",URL );
    gtk_widget_set_usize( URL,384,70 );
    GTK_WIDGET_SET_FLAGS( URL,GTK_CAN_DEFAULT );
    gtk_window_set_title( GTK_WINDOW( URL ),MSGTR_Network );
    gtk_window_set_position( GTK_WINDOW( URL ),GTK_WIN_POS_CENTER );
    gtk_window_set_policy( GTK_WINDOW( URL ),TRUE,TRUE,FALSE );
    gtk_window_set_wmclass( GTK_WINDOW( URL ),"Network","MPlayer" );

    gtk_widget_realize( URL );
    gtkAddIcon( URL );

    vbox1=AddVBox( AddDialogFrame( URL ),0 );
    hbox1=AddHBox( vbox1,1 );
    AddLabel( "URL: ",hbox1 );

    URLCombo=AddComboBox( hbox1 );
    /*
     gtk_combo_new();
     gtk_widget_set_name( URLCombo,"URLCombo" );
     gtk_widget_show( URLCombo );
     gtk_box_pack_start( GTK_BOX( hbox1 ),URLCombo,TRUE,TRUE,0 );
    */
    URLEntry=GTK_COMBO( URLCombo )->entry;
    gtk_widget_set_name( URLEntry,"URLEntry" );
    gtk_widget_show( URLEntry );

    AddHSeparator( vbox1 );

    hbuttonbox1=AddHButtonBox( vbox1 );
    gtk_button_box_set_layout( GTK_BUTTON_BOX( hbuttonbox1 ),GTK_BUTTONBOX_END );
    gtk_button_box_set_spacing( GTK_BUTTON_BOX( hbuttonbox1 ),10 );

    Ok=AddButton( MSGTR_Ok,hbuttonbox1 );
    Cancel=AddButton( MSGTR_Cancel,hbuttonbox1 );

    gtk_widget_add_accelerator( Ok,"clicked",accel_group,GDK_Return,0,GTK_ACCEL_VISIBLE );
    gtk_widget_add_accelerator( Cancel,"clicked",accel_group,GDK_Escape,0,GTK_ACCEL_VISIBLE );

    gtk_signal_connect( GTK_OBJECT( URL ),"destroy",GTK_SIGNAL_FUNC( WidgetDestroy ),&URL );
    gtk_signal_connect( GTK_OBJECT( Ok ),"clicked",GTK_SIGNAL_FUNC( on_Button_pressed ),(void *)1 );
    gtk_signal_connect( GTK_OBJECT( Cancel ),"clicked",GTK_SIGNAL_FUNC( on_Button_pressed ),NULL );

    gtk_widget_grab_focus( URLEntry );
    gtk_window_add_accel_group( GTK_WINDOW( URL ),accel_group );

    return URL;
}
示例#2
0
iwMusicPlayer::iwMusicPlayer()
    : IngameWindow(CGI_MUSICPLAYER, (unsigned short) - 1, (unsigned short) - 1, 430, 330, _("Music player"),
                   LOADER.GetImageN("resource", 41)), changed(false)
{

    AddList(0, 20, 30, 330, 200, TC_GREEN1, NormalFont);
    AddText(1, 20, 240, _("Playlist:"), COLOR_YELLOW, 0, NormalFont);
    AddComboBox(2, 20, 260, 330, 22, TC_GREEN1, NormalFont, 200);

    // Playlistbuttons
    const unsigned short button_distance = 10;
    const unsigned short button_width = (330 - button_distance) / 2;
    ctrlButton* b1 = AddTextButton(3, 20, 290, button_width, 22, TC_GREEN2, _("Add"), NormalFont);
    AddTextButton(4, b1->GetX(false) + button_width + button_distance, 290, button_width, 22, TC_GREEN2, _("Remove"), NormalFont);
    //AddTextButton(5,b1->GetX(false),320,button_width,22,TC_GREEN2,_("Save"),NormalFont);
    //AddTextButton(6,b2->GetX(false),320,button_width,22,TC_GREEN2,_("Load"),NormalFont);

    // Buttons für die Musikstücke
    AddImageButton(7, 370, 30, 40, 40, TC_GREY, LOADER.GetImageN("io", 138), _("Add track"));
    AddImageButton(8, 370, 80, 40, 40, TC_GREY, LOADER.GetImageN("io_new", 2), _("Add directory of tracks"));
    AddImageButton(9, 370, 130, 40, 40, TC_RED1, LOADER.GetImageN("io", 220), _("Remove track"));
    AddImageButton(10, 370, 180, 40, 15, TC_GREY, LOADER.GetImageN("io", 33), _("Upwards"));
    AddImageButton(11, 370, 195, 40, 15, TC_GREY, LOADER.GetImageN("io", 34), _("Downwards"));
    AddDeepening(12, 370, 220, 40, 20, TC_GREY, "1", NormalFont, COLOR_YELLOW);
    AddImageButton(13, 370, 240, 20, 20, TC_RED1, LOADER.GetImageN("io", 139), _("Less repeats"));
    AddImageButton(14, 390, 240, 20, 20, TC_GREY, LOADER.GetImageN("io", 138), _("More repeats"));
    AddImageButton(15, 370, 270, 40, 40, TC_GREY, LOADER.GetImageN("io", 107), _("Playback in this order")); //225

    // Mit Werten füllen
    MUSICPLAYER.GetPlaylist().FillMusicPlayer(this);
    UpdatePlaylistCombo(SETTINGS.sound.playlist);
}
示例#3
0
CComboBox* CBaseDlg::AddComboParam(CString sCaption, CString sItem[], int nCount, CRect rect, UINT nID, CString& strCaption, int maxChars /*= INT_MAX*/)
{
	if (rect.Height() > 40)
	{
		AddGroupBox(sCaption, rect);
		rect.DeflateRect(10, 20, 10, 10);
	}
	CComboBox *pCtrl = AddComboBox(sItem, nCount, rect, nID, strCaption, maxChars);
	return pCtrl;
}
示例#4
0
//---------------------------------------------------------------------
__fastcall TBookmarkFolderDialog::TBookmarkFolderDialog(TStrings * Folders) :
  TCustomDialog(HELP_LOCATION_PROFILE_MOVE)
{
  Caption = LoadStr(MOVE_BOOKMARK_CAPTION);

  NameCombo = new TComboBox(this);
  NameCombo->AutoComplete = false;
  AddComboBox(NameCombo, CreateLabel(LoadStr(MOVE_BOOKMARK_PROMPT)));
  NameCombo->Items = Folders;
}
示例#5
0
iwTrade::iwTrade(const nobBaseWarehouse& wh, const GameWorldViewer& gwv, GameCommandFactory& gcFactory)
    : IngameWindow(wh.CreateGUIID(), IngameWindow::posAtMouse, Extent(400, 194), _("Trade"), LOADER.GetImageN("resource", 41)), wh(wh),
      gwv(gwv), gcFactory(gcFactory), possibleSrcWarehouses(gwv.GetPlayer().GetWarehousesForTrading(wh))
{
    // Get title of the player
    SetTitle((boost::format(_("Trade with %s")) % gwv.GetWorld().GetPlayer(wh.GetPlayer()).name).str());
    // Gebäudebild und dessen Schatten
    AddImage(0, DrawPoint(100, 144), LOADER.GetNationImage(wh.GetNation(), 250 + 5 * wh.GetBuildingType()));

    const unsigned left_column = 200;

    AddComboBox(4, DrawPoint(left_column, 84), Extent(160, 18), TC_GREY, NormalFont, 90); // Ware/Figure names
    AddText(1, DrawPoint(left_column, 30), "Deal in:", COLOR_YELLOW, FontStyle::LEFT, NormalFont);
    ctrlComboBox* box = this->AddComboBox(2, DrawPoint(left_column, 44), Extent(160, 18), TC_GREY, NormalFont, 200); // Ware or figure?
    box->AddString(_("Wares"));
    box->AddString(_("Settlers"));
    AddText(3, DrawPoint(left_column, 70), "Type:", COLOR_YELLOW, FontStyle::LEFT, NormalFont);

    // Create possible wares, figures
    for(unsigned i = 0; i < NUM_WARE_TYPES; ++i)
    {
        // Only add one shield type
        if(GoodType(i) != ConvertShields(GoodType(i)))
            continue;
        // Don't add empty water
        if(i == GD_WATEREMPTY)
            continue;
        wares.push_back(GoodType(i));
    }
    for(unsigned i = 0; i < NUM_JOB_TYPES; ++i)
    {
        // Can't trade boat carriers
        if(i == JOB_BOATCARRIER)
            continue;
        jobs.push_back(Job(i));
    }

    AddImage(5, DrawPoint(left_column + 20, 130), static_cast<ITexture*>(nullptr), _("Ware you like to trade"));
    AddEdit(6, DrawPoint(left_column + 34, 120), Extent(39, 20), TC_GREY, NormalFont)->SetNumberOnly(true);
    AddText(7, DrawPoint(left_column + 75, 125), "/ 20", COLOR_YELLOW, FontStyle::LEFT, NormalFont);

    AddTextButton(8, DrawPoint(left_column, 150), Extent(150, 22), TC_GREEN2, _("Send"), NormalFont);

    // Choose wares at first
    box->SetSelection(0);
    Msg_ComboSelectItem(2, 0);
}
示例#6
0
/**
 *  Konstruktor von @p iwSettings.
 *
 *  @author NastX
 */
iwSettings::iwSettings(dskGameInterface* gameDesktop)
    : IngameWindow(CGI_SETTINGS, 0xFFFF, 0xFFFF, 370, 172, _("Settings"), LOADER.GetImageN("resource", 41)),
      gameDesktop(gameDesktop)
{
    AddText(  46,  15,  40, _("Fullscreen resolution:"), COLOR_YELLOW, 0, NormalFont);
    AddText(  47,  15,  85, _("Mode:"), COLOR_YELLOW, 0, NormalFont);
    AddCheckBox(4, 200, 124, 150, 26, TC_GREY, _("Statistics Scale"), NormalFont, false);
    GetCtrl<ctrlCheck>(4)->SetCheck(SETTINGS.ingame.scale_statistics);

    // "Vollbild"
    ctrlOptionGroup* optiongroup = AddOptionGroup(10, ctrlOptionGroup::CHECK, scale);
    optiongroup = AddOptionGroup(3, ctrlOptionGroup::CHECK, scale);
    optiongroup->AddTextButton(1, 200, 70, 150, 22, TC_GREY, _("Fullscreen"), NormalFont);
    optiongroup->AddTextButton(2, 200, 95, 150, 22, TC_GREY, _("Windowed"), NormalFont);

    // "Vollbild" setzen
    optiongroup = GetCtrl<ctrlOptionGroup>(3);
    optiongroup->SetSelection( (SETTINGS.video.fullscreen ? 1 : 2) );
    VIDEODRIVER.ListVideoModes(video_modes);

    // "Auflösung"
    AddComboBox(0, 200, 35, 150, 22, TC_GREY, NormalFont, 110);

    // Und zu der Combobox hinzufügen
    for(unsigned i = 0; i < video_modes.size(); ++i)
    {
        // >=800x600, alles andere macht keinen Sinn
        if(video_modes[i].width >= 800 && video_modes[i].height >= 600)
        {
            char str[64];
            sprintf(str, "%ux%u", video_modes[i].width, video_modes[i].height);

            GetCtrl<ctrlComboBox>(0)->AddString(str);

            // Ist das die aktuelle Auflösung? Dann selektieren
            if(video_modes[i].width == SETTINGS.video.fullscreen_width &&
                    video_modes[i].height == SETTINGS.video.fullscreen_height)
                GetCtrl<ctrlComboBox>(0)->SetSelection(i);
        }
        else
        {
            video_modes.erase(video_modes.begin() + i);
            --i;
        }
    }
}
示例#7
0
iwMapDebug::iwMapDebug(GameWorldViewer& gwv):
    IngameWindow(CGI_MAP_DEBUG, 0xFFFF, 0xFFFF, 300, 200, _("Map Debug"), LOADER.GetImageN("resource", 41)),
    gwv(gwv), printer(new DebugPrinter(gwv))
{
    gwv.GetView()->SetDebugNodePrinter(printer);

    ctrlCheck* cbShowCoords = AddCheckBox(0, 15, 30, 250, 20, TC_GREY, _("Show coordinates"), NormalFont);
    cbShowCoords->SetCheck(true);
    ctrlComboBox* data = AddComboBox(1, 15, 60, 250, 20, TC_GREY, NormalFont, 100);
    data->AddString(_("Nothing"));
    data->AddString(_("Reserved"));
    data->AddString(_("Altitude"));
    data->AddString(_("Resources"));
    data->AddString(_("Sea Id"));
    data->SetSelection(1);

    printer->showCoords = cbShowCoords->GetCheck();
    printer->showDataIdx = data->GetSelection();
}
示例#8
0
iwSave::iwSave() : iwSaveLoad(40, _("Save game!"))
{
    AddEdit(1, 20, 390, 510, 22, TC_GREEN2, NormalFont);
    AddImageButton(2, 540, 386, 40, 40, TC_GREEN2, LOADER.GetImageN("io", 47));

    // Autospeicherzeug
    AddText(3, 20, 350, _("Auto-Save every:"), 0xFFFFFF00, 0, NormalFont);
    ctrlComboBox* combo = AddComboBox(4, 270, 345, 130, 22, TC_GREEN2, NormalFont, 100);

    /// Combobox füllen
    combo->AddString(_("Disabled")); // deaktiviert
    
    // Last entry is only for debugging
    const unsigned numIntervalls = SETTINGS.global.debugMode ? AUTO_SAVE_INTERVALS_COUNT : AUTO_SAVE_INTERVALS_COUNT - 1;

    // Die Intervalle
    for(unsigned i = 0; i < numIntervalls; ++i)
    {
        char str[64];
        sprintf(str, "%u GF", AUTO_SAVE_INTERVALS[i]);
        combo->AddString(str);
    }

    // Richtigen Eintrag auswählen
    bool found = false;
    for(unsigned i = 0; i < numIntervalls; ++i)
    {
        if(SETTINGS.interface.autosave_interval == AUTO_SAVE_INTERVALS[i])
        {
            combo->SetSelection(i + 1);
            found = true;
            break;
        }
    }

    // Ungültig oder 0 --> Deaktiviert auswählen
    if(!found)
        combo->SetSelection(0);

    // Tabelle ausfüllen beim Start
    RefreshTable();
}
示例#9
0
iwSuggestPact::iwSuggestPact(const PactType pt, const GamePlayer& player, GameCommandFactory& gcFactory):
    IngameWindow(CGI_SUGGESTPACT, (unsigned short) - 1, (unsigned short) - 1, 320, 215, _(PACT_TITLES[pt]), LOADER.GetImageN("resource", 41)),
    pt(pt), player(player), gcFactory(gcFactory)
{
    glArchivItem_Bitmap* image;

    switch(pt)
    {
        case TREATY_OF_ALLIANCE: image = LOADER.GetImageN("io", 61); break;
        case NON_AGGRESSION_PACT: image = LOADER.GetImageN("io", 100); break;
        default: image = NULL;
    }

    // Bild als Orientierung, welchen Vertrag wir gerade bearbeiten
    if(image)
        this->AddImage(0, 55, 100, image);

    AddText(1, 100, 30, _("Contract type:"), COLOR_YELLOW, 0, NormalFont);
    AddText(2, 100, 45, _(PACT_NAMES[pt]), COLOR_GREEN, 0, NormalFont);
    AddText(3, 100, 70, _("To player:"), COLOR_YELLOW, 0, NormalFont);
    AddText(4, 100, 85, player.name, player.color, 0, NormalFont);
    AddText(5, 100, 110, _("Duration:"), COLOR_YELLOW, 0, NormalFont);
    ctrlComboBox* combo = AddComboBox(6, 100, 125, 190, 22, TC_GREEN2, NormalFont, 100);

    // Zeiten zur Combobox hinzufügen
    for(unsigned i = 0; i < DURATION_COUNT; ++i)
    {
        char str[256];
        sprintf(str, "%s  (%s)", DURATION_NAMES[i], GAMECLIENT.FormatGFTime(DURATIONS[i]).c_str());
        combo->AddString(str);
    }
    // Erstes Item in der Combobox vorerst auswählen
    combo->SetSelection(0);

    // Option "ewig" noch hinzufügen
    combo->AddString(_("Eternal"));

    AddTextButton(7, 110, 170, 100, 22, TC_GREEN2, _("Confirm"), NormalFont);
}
示例#10
0
iwSave::iwSave() : iwSaveLoad(40, _("Save game!"))
{
    AddEdit(1, DrawPoint(20, 390), Extent(510, 22), TC_GREEN2, NormalFont);
    AddImageButton(2, DrawPoint(540, 386), Extent(40, 40), TC_GREEN2, LOADER.GetImageN("io", 47));

    // Autospeicherzeug
    AddText(3, DrawPoint(20, 350), _("Auto-Save every:"), 0xFFFFFF00, FontStyle{}, NormalFont);
    ctrlComboBox* combo = AddComboBox(4, DrawPoint(270, 345), Extent(130, 22), TC_GREEN2, NormalFont, 100);

    /// Combobox füllen
    combo->AddString(_("Disabled")); // deaktiviert

    // Last entry is only for debugging
    const unsigned numIntervalls = SETTINGS.global.debugMode ? NUM_AUTO_SAVE_INTERVALS : NUM_AUTO_SAVE_INTERVALS - 1;

    // Die Intervalle
    for(unsigned i = 0; i < numIntervalls; ++i)
        combo->AddString(helpers::toString(AUTO_SAVE_INTERVALS[i]) + " GF");

    // Richtigen Eintrag auswählen
    bool found = false;
    for(unsigned i = 0; i < numIntervalls; ++i)
    {
        if(SETTINGS.interface.autosave_interval == AUTO_SAVE_INTERVALS[i])
        {
            combo->SetSelection(i + 1);
            found = true;
            break;
        }
    }

    // Ungültig oder 0 --> Deaktiviert auswählen
    if(!found)
        combo->SetSelection(0);

    // Tabelle ausfüllen beim Start
    RefreshTable();
}
iwBuildOrder::iwBuildOrder()
    : IngameWindow(CGI_BUILDORDER, (unsigned short) - 1, (unsigned short) - 1, 320, 300, _("Building sequence"), LOADER.GetImageN("io", 5)),
      settings_changed(false)
{
    ctrlList* list = AddList(0, 15, 60, 150, 220, TC_GREY, NormalFont);

    // Liste füllen
    BuildOrders buildOrders = GAMECLIENT.visual_settings.build_order;
    for(unsigned char i = 0; i < buildOrders.size(); ++i)
        list->AddString(_(BUILDING_NAMES[buildOrders[i]])); //-V807

    // Nach ganz oben
    AddImageButton(1, 250, 194, 48, 20, TC_GREY, LOADER.GetImageN("io", 215), _("Top"));
    // Hoch
    AddImageButton(2, 250, 216, 48, 20, TC_GREY, LOADER.GetImageN("io",  33), _("Up"));
    // Runter
    AddImageButton(3, 250, 238, 48, 20, TC_GREY, LOADER.GetImageN("io",  34), _("Down"));
    // Nach ganz unten
    AddImageButton(4, 250, 260, 48, 20, TC_GREY, LOADER.GetImageN("io", 216), _("Bottom"));

    // Bild der Auswahl
    AddImage(5, 240, 150, LOADER.GetNationImage(GAMECLIENT.GetLocalPlayer().nation, 250 + buildOrders[0] * 5));

    ctrlComboBox* combo = AddComboBox(6, 15, 30, 290, 20, TC_GREY, NormalFont, 100);
    combo->AddString(_("Sequence of given order")); // "Reihenfolge der Auftraggebung"
    combo->AddString(_("After the following order")); // "Nach folgender Reihenfolge"

    // Eintrag in Combobox auswählen
    combo->SetSelection(GAMECLIENT.visual_settings.order_type);

    // Standard
    AddImageButton(10, 200, 250, 48, 30, TC_GREY, LOADER.GetImageN("io", 191), _("Default"));

    // Absendetimer, in 2s-Abschnitten wird jeweils das ganze als Netzwerknachricht ggf. abgeschickt
    AddTimer(11, 2000);

    list->SetSelection(0);
}
iwBuildOrder::iwBuildOrder(const GameWorldViewer& gwv)
    : IngameWindow(CGI_BUILDORDER, IngameWindow::posLastOrCenter, Extent(320, 300), _("Building sequence"), LOADER.GetImageN("io", 5)),
      gwv(gwv), settings_changed(false)
{
    ctrlList* list = AddList(0, DrawPoint(15, 60), Extent(150, 220), TC_GREY, NormalFont);

    // Liste füllen
    BuildOrders buildOrders = GAMECLIENT.visual_settings.build_order;
    for(auto& buildOrder : buildOrders)
        list->AddString(_(BUILDING_NAMES[buildOrder])); //-V807

    // Nach ganz oben
    AddImageButton(1, DrawPoint(250, 194), Extent(48, 20), TC_GREY, LOADER.GetImageN("io", 215), _("Top"));
    // Hoch
    AddImageButton(2, DrawPoint(250, 216), Extent(48, 20), TC_GREY, LOADER.GetImageN("io", 33), _("Up"));
    // Runter
    AddImageButton(3, DrawPoint(250, 238), Extent(48, 20), TC_GREY, LOADER.GetImageN("io", 34), _("Down"));
    // Nach ganz unten
    AddImageButton(4, DrawPoint(250, 260), Extent(48, 20), TC_GREY, LOADER.GetImageN("io", 216), _("Bottom"));

    // Bild der Auswahl
    AddImage(5, DrawPoint(240, 150), LOADER.GetNationImage(gwv.GetPlayer().nation, 250 + buildOrders[0] * 5));

    ctrlComboBox* combo = AddComboBox(6, DrawPoint(15, 30), Extent(290, 20), TC_GREY, NormalFont, 100);
    combo->AddString(_("Sequence of given order"));   // "Reihenfolge der Auftraggebung"
    combo->AddString(_("After the following order")); // "Nach folgender Reihenfolge"

    // Eintrag in Combobox auswählen
    combo->SetSelection(GAMECLIENT.visual_settings.useCustomBuildOrder ? 1 : 0);

    // Standard
    AddImageButton(10, DrawPoint(200, 250), Extent(48, 30), TC_GREY, LOADER.GetImageN("io", 191), _("Default"));

    // Absendetimer, in 2s-Abschnitten wird jeweils das ganze als Netzwerknachricht ggf. abgeschickt
    AddTimer(11, 2000);

    list->SetSelection(0);
}
示例#13
0
//---------------------------------------------------------------------
__fastcall TBookmarkNameDialog::TBookmarkNameDialog(TStrings * PeerBookmarks,
    bool AllowShared) :
  TCustomDialog(HELP_LOCATION_PROFILE_ADD)
{
  Caption = LoadStr(ADD_BOOKMARK_CAPTION);

  NameCombo = new TComboBox(this);
  NameCombo->AutoComplete = false;
  NameCombo->DropDownCount = Max(NameCombo->DropDownCount, 16);
  AddComboBox(NameCombo, CreateLabel(LoadStr(ADD_BOOKMARK_PROMPT)));
  NameCombo->Items = PeerBookmarks;

  if (AllowShared)
  {
    SharedCheck = new TCheckBox(this);
    SharedCheck->Caption = LoadStr(ADD_BOOKMARK_SHARED);
    AddButtonControl(SharedCheck);
  }
  else
  {
    SharedCheck = NULL;
  }
}
iwSuggestPact::iwSuggestPact(const PactType pt, const GamePlayer& player, GameCommandFactory& gcFactory)
    : IngameWindow(CGI_SUGGESTPACT, IngameWindow::posLastOrCenter, Extent(320, 215), _(PACT_TITLES[pt]), LOADER.GetImageN("resource", 41)),
      pt(pt), player(player), gcFactory(gcFactory)
{
    glArchivItem_Bitmap* image;

    switch(pt)
    {
        case TREATY_OF_ALLIANCE: image = LOADER.GetImageN("io", 61); break;
        case NON_AGGRESSION_PACT: image = LOADER.GetImageN("io", 100); break;
        default: image = nullptr;
    }

    // Bild als Orientierung, welchen Vertrag wir gerade bearbeiten
    if(image)
        this->AddImage(0, DrawPoint(55, 100), image);

    AddText(1, DrawPoint(100, 30), _("Contract type:"), COLOR_YELLOW, FontStyle{}, NormalFont);
    AddText(2, DrawPoint(100, 45), _(PACT_NAMES[pt]), COLOR_GREEN, FontStyle{}, NormalFont);
    AddText(3, DrawPoint(100, 70), _("To player:"), COLOR_YELLOW, FontStyle{}, NormalFont);
    AddText(4, DrawPoint(100, 85), player.name, player.color, FontStyle{}, NormalFont);
    AddText(5, DrawPoint(100, 110), _("Duration:"), COLOR_YELLOW, FontStyle{}, NormalFont);
    ctrlComboBox* combo = AddComboBox(6, DrawPoint(100, 125), Extent(190, 22), TC_GREEN2, NormalFont, 100);

    // Zeiten zur Combobox hinzufügen
    for(unsigned i = 0; i < NUM_DURATIONS; ++i)
    {
        combo->AddString(helpers::format("%s  (%s)", DURATION_NAMES[i], GAMECLIENT.FormatGFTime(DURATIONS[i])));
    }
    // Erstes Item in der Combobox vorerst auswählen
    combo->SetSelection(0);

    // Option "ewig" noch hinzufügen
    combo->AddString(_("Eternal"));

    AddTextButton(7, DrawPoint(110, 170), Extent(100, 22), TC_GREEN2, _("Confirm"), NormalFont);
}
示例#15
0
void LayoutStream::ActiveItemChanged(const QModelIndex& index)
{
	Clear();

	const QAbstractItemModel* sender = ((QItemSelectionModel*)QObject::sender())->model();
	if (sender->data(index, DffModel::UserRole_Type) != DffModel::IDX_COMMAND)
		return;

	current_index = index;
	dff_model = (QAbstractItemModel*)sender; // TODO: not const-correct...

	u32 cmd_start = sender->data(index, DffModel::UserRole_CmdStart).toUInt();
	cur_fifo_data.clear();
	cur_fifo_data.append(sender->data(index, DffModel::UserRole_FifoData).toByteArray()); // TODO: Only retrieve this on dataChanged()...
	u8* fifo_data = (u8*)cur_fifo_data.data();

	if (fifo_data[cmd_start] == GX_LOAD_BP_REG)
	{
		u32& cmddata = (*(u32*)&fifo_data[cmd_start+1]);
		edit_offset = cmd_start+1;
		edit_size = sizeof(u32);

#define GET(type, name) type& name = *(type*)&cmddata

		if (fifo_data[cmd_start+1] == BPMEM_GENMODE) // 0x00
		{
			GET(GenMode, mode);

			AddLabel(tr("Gen mode")).endl();
			AddLabel(tr("numtexgens: ")).AddSpinBox(mode.numtexgens).endl();
			AddLabel(tr("numcolchans: ")).AddSpinBox(mode.numcolchans).endl();
			AddCheckBox(mode.ms_en, tr("Enable multisampling")).endl();
			AddLabel(tr("numtexstages: ")).AddSpinBox(mode.numtexstages).endl();
			AddLabel(tr("Culling: ")).AddComboBox(mode.cullmode, {tr("Disabled"), tr("Cull front facing"), tr("Cull back facing"), tr("Cull everything") }).endl();
			AddLabel(tr("numindstages: ")).AddSpinBox(mode.numindstages).endl();
			AddCheckBox(mode.zfreeze, tr("Enable zfreeze")).endl();
		}
		else if (fifo_data[cmd_start+1] == BPMEM_SCISSORTL) // 0x20
		{
			GET(X12Y12, coord); 
			AddLabel(tr("Scissor rectangle")).endl();
			AddLabel(tr("Left coordinate:")).AddSpinBox(coord.x).endl();
			AddLabel(tr("Top coordinate:")).AddSpinBox(coord.y).endl();
		}
		else if (fifo_data[cmd_start+1] == BPMEM_SCISSORBR) // 0x21
		{
			GET(X12Y12, coord); 
			AddLabel(tr("Scissor rectangle")).endl();
			AddLabel(tr("Right coordinate:")).AddSpinBox(coord.x).endl();
			AddLabel(tr("Bottom coordinate:")).AddSpinBox(coord.y).endl();
		}
		else if (fifo_data[cmd_start+1] == BPMEM_ZMODE) // 0x40
		{
			ZMode& zmode = *(ZMode*)&cmddata;

			AddLabel(tr("BPMEM_ZMODE")).endl();
			AddCheckBox(zmode.testenable, tr("Enable depth testing")).endl();
			AddLabel(tr("Depth test function: ")).AddComboBox(zmode.func, {tr("Never"), tr("Less"), tr("Equal"),
							tr("Less or equal"), tr("Greater"), tr("Not equal"),
							tr("Greater or equal"), tr("Always")}).endl();
			AddCheckBox(zmode.updateenable, tr("Enable depth writing")).endl();
		}
		else if (fifo_data[cmd_start+1] == BPMEM_BLENDMODE) // 0x41
		{
			BlendMode& mode = *(BlendMode*)&cmddata;

			QStringList dstfactors = {
				tr("Zero"), tr("One"), tr("SRCCOL"), tr("1-SRCCOL"),
				tr("SRCALP"), tr("1-SRCALP"), tr("DSTALP"), tr("1-DSTALP")
			};
			QStringList srcfactors = {
				tr("Zero"), tr("One"), tr("DSTCOL"), tr("1-DSTCOL"),
				tr("SRCALP"), tr("1-SRCALP"), tr("DSTALP"), tr("1-DSTALP")
			};
			QStringList logicmodes = {
				"0", "s & d", "s & ~d", "s",
				"~s & d", "d", "s ^ d", "s | d",
				"~(s | d)", "~(s ^ d)", "~d", "s | ~d",
				"~s", "~s | d", "~(s & d)", "1"
			};

			AddLabel(tr("BPMEM_BLENDMODE")).endl();
			AddCheckBox(mode.blendenable, tr("Enable blending")).endl();
			AddComboBox(mode.dstfactor, dstfactors).endl();
			AddComboBox(mode.srcfactor, srcfactors).endl();
			AddCheckBox(mode.subtract, tr("Subtract")).endl();
			AddCheckBox(mode.logicopenable, tr("Enable logical operations")).endl();
			AddLabel(tr("Logic operation: ")).AddComboBox(mode.logicmode, logicmodes).endl();
			AddCheckBox(mode.colorupdate, tr("Enable color writing")).endl();
			AddCheckBox(mode.alphaupdate, tr("Enable alpha writing")).endl();
			AddCheckBox(mode.dither, tr("Enable dithering")).endl();
		}
		else if (fifo_data[cmd_start+1] == BPMEM_ZCOMPARE) // 0x43
		{
			GET(PE_CONTROL, ctrl);

			AddLabel(tr("Pixel Engine control")).endl();
			AddLabel(tr("EFB pixel format: ")).AddComboBox(ctrl.pixel_format, {"RGB8 Z24", "RGBA6 Z24", "RGB565 Z16", "Z24", "Y8", "U8", "V8", "YUV420"}).endl();
			AddLabel(tr("EFB depth format: ")).AddComboBox(ctrl.zformat, {tr("Linear"), tr("Near"), tr("Mid"), tr("Far"), tr("Inverse near"), tr("Inverse mid"), tr("Inverse far")}).endl();
			AddCheckBox(ctrl.early_ztest, tr("Early depth test")).endl();
		}
		else if (fifo_data[cmd_start+1] == BPMEM_TRIGGER_EFB_COPY) // 0x52
		{
			UPE_Copy& copy = *(UPE_Copy*)&cmddata;

			AddLabel(tr("BPMEM_TRIGGER_EFB_COPY")).endl();
			AddLabel(tr("Clamping: ")).AddCheckBox(copy.clamp0, tr("Top")).AddCheckBox(copy.clamp1, tr("Bottom")).endl();
			AddLabel(tr("Convert from RGB to YUV: ")).AddCheckBox(copy.yuv).endl();
			AddLabel(tr("Target pixel format: ")).AddComboBox(copy.target_pixel_format,
											{"Z4/I4/R4", "Z8/I8/R8", "IA4/RA4", "Z16/IA8/RA8",
											"RGB565", "RGB5A3", "Z24X8/RGBA8", "A8",
											"Z8/I8/R8", "Z8M/G8", "Z8L/B8"", Z16Rev/RG8",
											"Z16L/GB8", "", "", "" }).endl();
			AddLabel(tr("Gamma correction: ")).AddComboBox(copy.gamma, {"1.0","1.7","2.2","Inv." }).endl();
			AddLabel(tr("Downscale: ")).AddCheckBox(copy.half_scale).endl();
			AddLabel(tr("Vertical scaling: ")).AddCheckBox(copy.scale_invert).endl();
			AddLabel(tr("Clear: ")).AddCheckBox(copy.clear).endl();
			AddLabel(tr("Copy to XFB: ")).AddCheckBox(copy.frame_to_field).endl();
			AddLabel(tr("Copy as intensity: ")).AddCheckBox(copy.intensity_fmt).endl();
			AddLabel(tr("Automatic color conversion: ")).AddCheckBox(copy.auto_conv).endl();
		}
		else if (fifo_data[cmd_start+1] >= BPMEM_TEV_COLOR_ENV &&
				fifo_data[cmd_start+1] <= BPMEM_TEV_ALPHA_ENV + 2*15) // 0xC0 - 0xDF
		{
			int stage = (fifo_data[cmd_start+1] - BPMEM_TEV_COLOR_ENV) / 2;

			QStringList bias_values = { tr("0"), tr("+0.5"), tr("-0.5"), tr("Use compare function") };
			QStringList shift_values = { "1.0", "2.0", "4.0", "0.5" };
			QStringList outputs = { "PREV", "REG0", "REG1", "REG2"};
			QStringList operations = { tr("Add"), tr("Subtract")};
			QStringList compare_functions = {"Greater", "Equal"};

			if ((fifo_data[cmd_start+1] & 1) == 0)
			{
				GET(TevStageCombiner::ColorCombiner, comb);

				QStringList inputs = {
					tr("PREV color"), tr("PREV alpha"), tr("REG0 color"), tr("REG0 alpha"),
					tr("REG1 color"), tr("REG1 alpha"), tr("REG2 color"), tr("REG2 alpha"),
					tr("Texture color"), tr("Texture alpha"), tr("Rasterized color"), tr("Rasterized alpha"),
					tr("1"), tr("0.5"), tr("Konst color"), tr("0")
				};

				AddLabel(tr("Color combiner for Tev stage %1").arg(stage)).endl();
				AddLabel(tr("Input A: ")).AddComboBox(comb.a, inputs).endl();
				AddLabel(tr("Input B: ")).AddComboBox(comb.b, inputs).endl();
				AddLabel(tr("Input C: ")).AddComboBox(comb.c, inputs).endl();
				AddLabel(tr("Input D: ")).AddComboBox(comb.d, inputs).endl();

				AddLabel(tr("Bias: ")).AddComboBox(comb.bias, bias_values).endl();
				AddLabel(tr("Operation: ")).AddComboBox(comb.op, operations).endl();
				AddCheckBox(comb.clamp, tr("Clamp")).endl();
				AddLabel(tr("Scale: ")).AddComboBox(comb.shift, shift_values).endl();

				AddLabel(tr("Destination: ")).AddComboBox(comb.dest, outputs).endl();

				// TODO: Changing these does not update the upper ones!!
				AddLabel(tr("Compare operation: ")).AddComboBox(comb.op, compare_functions).endl();
				AddLabel(tr("Compared components: ")).AddComboBox(comb.shift, {"R", "GR", "BGR", "RGB per-channel"}).endl();
			}
			else
			{
				GET(TevStageCombiner::AlphaCombiner, comb);

				QStringList inputs = {
					tr("PREV"), tr("REG0"), tr("REG1"), tr("REG2"),
					tr("Texture"), tr("Rasterizer"), tr("Konst"), tr("0")
				};

				AddLabel(tr("Alpha combiner for Tev stage %1").arg(stage)).endl();
				AddLabel(tr("Input A: ")).AddComboBox(comb.a, inputs).endl();
				AddLabel(tr("Input B: ")).AddComboBox(comb.b, inputs).endl();
				AddLabel(tr("Input C: ")).AddComboBox(comb.c, inputs).endl();
				AddLabel(tr("Input D: ")).AddComboBox(comb.d, inputs).endl();

				AddLabel(tr("Bias: ")).AddComboBox(comb.bias, bias_values).endl();
				AddLabel(tr("Operation: ")).AddComboBox(comb.op, operations).endl();
				AddCheckBox(comb.clamp, tr("Clamp")).endl();
				AddLabel(tr("Scale: ")).AddComboBox(comb.shift, shift_values).endl();

				AddLabel(tr("Destination: ")).AddComboBox(comb.dest, outputs).endl();

				// TODO: Changing these does not update the upper ones!!
				AddLabel(tr("Compare operation: ")).AddComboBox(comb.op, compare_functions).endl();
				AddLabel(tr("Compared components: ")).AddComboBox(comb.shift, {"R", "GR", "BGR", "A"}).endl();

				AddLabel(tr("Rasterized input swap: ")).AddSpinBox(comb.rswap).endl();
				AddLabel(tr("Texture input swap: ")).AddSpinBox(comb.tswap).endl();
			}
		}
		else if (fifo_data[cmd_start+1] == BPMEM_FOGRANGE) // 0xE8
		{
			GET(FogRangeParams::RangeBase, range);

			AddLabel(tr("Fog range adjustment")).endl();
			AddCheckBox(range.Enabled, tr("Enable")).endl();
			AddLabel(tr("Center: ")).AddSpinBox(range.Center).endl();
		}
		else if (fifo_data[cmd_start+1] >= BPMEM_FOGRANGE + 1 &&
				fifo_data[cmd_start+1] <= BPMEM_FOGRANGE + 5) // 0xE9 - 0xED
		{
			GET(FogRangeKElement, range);

			AddLabel(tr("Fog range adjustment factor group %1").arg(fifo_data[cmd_start+1]-BPMEM_FOGRANGE)).endl();
			AddLabel(tr("Factor HI: ")).AddSpinBox(range.HI).endl();
			AddLabel(tr("Factor LO: ")).AddSpinBox(range.LO).endl();
		}
		else if (fifo_data[cmd_start+1] == BPMEM_FOGPARAM0) // 0xEE
		{
			GET(FogParam0, fog);

			AddLabel(tr("Fog parameter A")).endl();
			AddLabel(tr("Mantissa: ")).AddSpinBox(fog.mantissa).endl();
			AddLabel(tr("Exponent: ")).AddSpinBox(fog.exponent).endl();
			AddLabel(tr("Sign: ")).AddComboBox(fog.sign, {tr("Positive"), tr("Negative")}).endl();

			// TODO: _additionally_ add an input field for directly entering the floating point value!
		}
		else if (fifo_data[cmd_start+1] == BPMEM_FOGBMAGNITUDE) // 0xEF
		{
			AddLabel(tr("Fog parameter B")).endl();
			// TODO!
		}
		else if (fifo_data[cmd_start+1] == BPMEM_FOGBEXPONENT) // 0xF0
		{
			AddLabel(tr("Fog parameter B")).endl();
			// TODO!
		}
		else if (fifo_data[cmd_start+1] == BPMEM_FOGPARAM3) // 0xF1
		{
			GET(FogParam3, fog);

			AddLabel(tr("Fog configuration and fog parameter C")).endl();
			AddLabel(tr("Mantissa: ")).AddSpinBox(fog.c_mant).endl();
			AddLabel(tr("Exponent: ")).AddSpinBox(fog.c_exp).endl();
			AddLabel(tr("Sign: ")).AddComboBox(fog.c_sign, {tr("Positive"), tr("Negative")}).endl();
			AddLabel(tr("Projection mode: ")).AddComboBox(fog.c_sign, {tr("Perspective"), tr("Orthographic")}).endl();
			AddLabel(tr("Fog mode: ")).AddComboBox(fog.c_sign, {tr("Disabled"), tr("Unknown"), tr("Linear"), tr("Unknown"),
											tr("Exponential"), tr("Exponential squared"), tr("Inverse exponential"),
											tr("Inverse exponential squared")}).endl();
		}
		else if (fifo_data[cmd_start+1] == BPMEM_FOGCOLOR) // 0xF2
		{
			GET(FogParams::FogColor, color);

			AddLabel(tr("Fog color")).endl();
			AddLabel(tr("Red:")).AddSpinBox(color.r).endl();
			AddLabel(tr("Green:")).AddSpinBox(color.g).endl();
			AddLabel(tr("Blue:")).AddSpinBox(color.b).endl();
		}
		else if (fifo_data[cmd_start+1] == BPMEM_ALPHACOMPARE) // 0xF3
		{
			GET(AlphaTest, test);

			QStringList comp_funcs = {
				tr("Never"), tr("Less"), tr("Equal"), tr("Less or equal"),
				tr("Greater"), tr("Not equal"), tr("Greater or equal"), tr("Always"),
			};

			QStringList alpha_ops = {
				tr("and"), tr("or"), tr("xor"), tr("equal"),
			};

			AddLabel(tr("Alpha test")).endl();
			AddLabel(tr("First reference value: ")).AddSpinBox(test.ref0).endl();
			AddLabel(tr("First comparison function: ")).AddComboBox(test.comp0, comp_funcs).endl();
			AddLabel(tr("Second reference value: ")).AddSpinBox(test.ref1).endl();
			AddLabel(tr("Second comparison function: ")).AddComboBox(test.comp1, comp_funcs).endl();
			AddLabel(tr("Combining function: ")).AddComboBox(test.logic, alpha_ops).endl();
		}
	}
}
示例#16
0
dskHostGame::dskHostGame(const ServerType serverType) :
    Desktop(LOADER.GetImageN("setup015", 0)), hasCountdown_(false), serverType(serverType), wasActivated(false)
{
    if(!GAMECLIENT.GetLuaFilePath().empty())
    {
        lua.reset(new LuaInterfaceSettings());
        if(!lua->LoadScript(GAMECLIENT.GetLuaFilePath()))
        {
            WINDOWMANAGER.Show(new iwMsgbox(_("Error"), _("Lua script was found but failed to load. Map might not work as expected!"), this, MSB_OK, MSB_EXCLAMATIONRED, 1));
            lua.reset();
        } else if(!lua->EventSettingsInit(serverType == ServerType::LOCAL, GAMECLIENT.IsSavegame()))
        {
            RTTR_Assert(GAMECLIENT.IsHost()); // This should be done first for the host so others won't even see the script
            LOG.lprintf("Lua was disabled by the script itself\n");
            lua.reset();
            // Double check...
            if(GAMECLIENT.IsHost())
                GAMESERVER.RemoveLuaScript();
        }
    }


    const bool readonlySettings = !GAMECLIENT.IsHost() || GAMECLIENT.IsSavegame() || (lua && !lua->IsChangeAllowed("general"));
    allowAddonChange = GAMECLIENT.IsHost() && !GAMECLIENT.IsSavegame() && (!lua || lua->IsChangeAllowed("addonsAll") || lua->IsChangeAllowed("addonsSome"));

    // Kartenname
    AddText(0, 400, 5, GAMECLIENT.GetGameName(), COLOR_YELLOW, glArchivItem_Font::DF_CENTER, LargeFont);

    // "Spielername"
    AddText(10, 95, 40, _("Player Name"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER, NormalFont);
    // "Einstufung"
    AddText(11, 205, 40, _("Classification"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER, NormalFont);
    // "Volk"
    AddText(12, 285, 40, _("Race"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER, NormalFont);
    // "Farbe"
    AddText(13, 355, 40, _("Color"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER, NormalFont);
    // "Team"
    AddText(14, 405, 40, _("Team"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER, NormalFont);

    if (!IsSinglePlayer())
    {
        // "Bereit"
        AddText(15, 465, 40, _("Ready?"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER, NormalFont);
        // "Ping"
        AddText(16, 515, 40, _("Ping"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER, NormalFont);
    }
    // "Swap"
    if(GAMECLIENT.IsHost() && !GAMECLIENT.IsSavegame())
        AddText(24, 10, 40, _("Swap"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER, NormalFont);
    // "Verschieben" (nur bei Savegames!)
    if(GAMECLIENT.IsSavegame())
        AddText(17, 645, 40, _("Past player"), COLOR_YELLOW, glArchivItem_Font::DF_CENTER, NormalFont);

    if (!IsSinglePlayer())
    {
        // Chatfenster
        AddChatCtrl(1, 20, 320, 360, 218, TC_GREY, NormalFont);
        // Edit für Chatfenster
        AddEdit(4, 20, 540, 360, 22, TC_GREY, NormalFont);
    }

    // "Spiel starten"
    AddTextButton(2, 600, 560, 180, 22, TC_GREEN2, (GAMECLIENT.IsHost() ? _("Start game") : _("Ready")), NormalFont);

    // "Zurück"
    AddTextButton(3, 400, 560, 180, 22, TC_RED1, _("Return"), NormalFont);

    // "Teams sperren"
    AddCheckBox(20, 400, 460, 180, 26, TC_GREY, _("Lock teams:"), NormalFont, readonlySettings);
    // "Gemeinsame Team-Sicht"
    AddCheckBox(19, 600, 460, 180, 26, TC_GREY, _("Shared team view"), NormalFont, readonlySettings);
    // "Random Start Locations"
    AddCheckBox(23, 600, 430, 180, 26, TC_GREY, _("Random start locations"), NormalFont, readonlySettings);

    // "Enhancements"
    AddText(21, 400, 499, _("Addons:"), COLOR_YELLOW, 0, NormalFont);
    AddTextButton(22, 600, 495, 180, 22, TC_GREEN2, allowAddonChange ? _("Change Settings...") : _("View Settings..."), NormalFont);

    ctrlComboBox* combo;

    // umgedrehte Reihenfolge, damit die Listen nicht dahinter sind

    // "Aufklärung"
    AddText(30, 400, 405, _("Exploration:"), COLOR_YELLOW, 0, NormalFont);
    combo = AddComboBox(40, 600, 400, 180, 20, TC_GREY, NormalFont, 100, readonlySettings);
    combo->AddString(_("Off (all visible)"));
    combo->AddString(_("Classic (Settlers 2)"));
    combo->AddString(_("Fog of War"));
    combo->AddString(_("FoW - all explored"));

    // "Waren zu Beginn"
    AddText(31, 400, 375, _("Goods at start:"), COLOR_YELLOW, 0, NormalFont);
    combo = AddComboBox(41, 600, 370, 180, 20, TC_GREY, NormalFont, 100, readonlySettings);
    combo->AddString(_("Very Low"));
    combo->AddString(_("Low"));
    combo->AddString(_("Normal"));
    combo->AddString(_("A lot"));

    // "Spielziel"
    AddText(32, 400, 345, _("Goals:"), COLOR_YELLOW, 0, NormalFont);
    combo = AddComboBox(42, 600, 340, 180, 20, TC_GREY, NormalFont, 100, readonlySettings);
    combo->AddString(_("None")); // Kein Spielziel
    combo->AddString(_("Conquer 3/4 of map")); // Besitz 3/4 des Landes
    combo->AddString(_("Total domination")); // Alleinherrschaft
    // Lobby game?
    if(LOBBYCLIENT.LoggedIn())
    {
        // Then add tournament modes as possible "objectives"
        for(unsigned i = 0; i < TOURNAMENT_MODES_COUNT; ++i)
        {
            char str[512];
            sprintf (str, _("Tournament: %u minutes"), TOURNAMENT_MODES_DURATION[i]);
            combo->AddString(str);
        }
    }

    // "Geschwindigkeit"
    AddText(33, 400, 315, _("Speed:"), COLOR_YELLOW, 0, NormalFont);
    combo = AddComboBox(43, 600, 310, 180, 20, TC_GREY, NormalFont, 100, !GAMECLIENT.IsHost());
    combo->AddString(_("Very slow")); // Sehr Langsam
    combo->AddString(_("Slow")); // Langsam
    combo->AddString(_("Normal")); // Normal
    combo->AddString(_("Fast")); // Schnell
    combo->AddString(_("Very fast")); // Sehr Schnell

    // Karte laden, um Kartenvorschau anzuzeigen
    if(GAMECLIENT.GetMapType() == MAPTYPE_OLDMAP)
    {
        // Map laden
        libsiedler2::ArchivInfo mapArchiv;
        // Karteninformationen laden
        if(libsiedler2::loader::LoadMAP(GAMECLIENT.GetMapPath(), mapArchiv) == 0)
        {
            glArchivItem_Map* map = static_cast<glArchivItem_Map*>(mapArchiv.get(0));
            ctrlPreviewMinimap* preview = AddPreviewMinimap(70, 560, 40, 220, 220, map);

            // Titel der Karte, Y-Position relativ je nach Höhe der Minimap festlegen, daher nochmals danach
            // verschieben, da diese Position sonst skaliert wird!
            ctrlText* text = AddText(71, 670, 0, _("Map: ") +  GAMECLIENT.GetMapTitle(), COLOR_YELLOW, glArchivItem_Font::DF_CENTER, NormalFont);
            text->Move(text->GetX(false), preview->GetY(false) + preview->GetBottom() + 10);
        }
    }

    if (IsSinglePlayer() && !GAMECLIENT.IsSavegame())
    {
        // Setze initial auf KI
        for (unsigned char i = 0; i < GAMECLIENT.GetPlayerCount(); i++)
        {
            if (!GAMECLIENT.GetPlayer(i).is_host)
                GAMESERVER.TogglePlayerState(i);
        }
    }

    // Alle Spielercontrols erstellen
    for(unsigned char i = GAMECLIENT.GetPlayerCount(); i; --i)
        UpdatePlayerRow(i - 1);
    //swap buttons erstellen
    if(GAMECLIENT.IsHost() && !GAMECLIENT.IsSavegame() && (!lua || lua->IsChangeAllowed("swapping")))
    {
        for(unsigned char i = GAMECLIENT.GetPlayerCount(); i; --i)
            AddTextButton(80 + i, 5, 80 + (i - 1) * 30, 10, 22, TC_RED1, _("-"), NormalFont);;
    }
    // GGS aktualisieren, zum ersten Mal
    GAMECLIENT.LoadGGS();
    this->CI_GGSChanged(GAMECLIENT.GetGGS());

    LOBBYCLIENT.SetInterface(this);
    if(serverType == ServerType::LOBBY && LOBBYCLIENT.LoggedIn())
    {
        LOBBYCLIENT.SendServerJoinRequest();
        LOBBYCLIENT.SendRankingInfoRequest(GAMECLIENT.GetPlayer(GAMECLIENT.GetPlayerID()).name);
        for(unsigned char i = 0; i < GAMECLIENT.GetPlayerCount(); ++i)
        {
            GameClientPlayer& player = GAMECLIENT.GetPlayer(i);
            if(player.ps == PS_OCCUPIED)
                LOBBYCLIENT.SendRankingInfoRequest(player.name);
        }
    }

    GAMECLIENT.SetInterface(this);
}
示例#17
0
GtkWidget * create_EquConfig( void )
{
  GtkWidget * vbox1;
  GtkWidget * table1;
  GtkWidget * hbuttonbox1;
  GtkAccelGroup * accel_group;

  accel_group=gtk_accel_group_new();

  EquConfig=gtk_window_new( GTK_WINDOW_TOPLEVEL );
  gtk_widget_set_name( EquConfig,"EquConfig" );
  gtk_object_set_data( GTK_OBJECT( EquConfig ),"EquConfig",EquConfig );
  gtk_widget_set_usize( EquConfig,350,260 );
  GTK_WIDGET_SET_FLAGS( EquConfig,GTK_CAN_DEFAULT );
  gtk_window_set_title( GTK_WINDOW( EquConfig ),MSGTR_ConfigureEqualizer );
  gtk_window_set_position( GTK_WINDOW( EquConfig ),GTK_WIN_POS_CENTER );
//  gtk_window_set_modal( GTK_WINDOW( EquConfig ),TRUE );
  gtk_window_set_policy( GTK_WINDOW( EquConfig ),FALSE,FALSE,FALSE );
  gtk_window_set_wmclass( GTK_WINDOW( EquConfig ),"EquConfig","MPlayer" );

  gtk_widget_realize( EquConfig );
  gtkAddIcon( EquConfig );

  vbox1=AddVBox( AddDialogFrame( EquConfig ),0 );

  table1=gtk_table_new( 6,2,FALSE );
  gtk_widget_set_name( table1,"table1" );
  gtk_widget_show( table1 );
  gtk_box_pack_start( GTK_BOX( vbox1 ),table1,TRUE,TRUE,0 );
  gtk_table_set_row_spacings( GTK_TABLE( table1 ),4 );
  gtk_table_set_col_spacings( GTK_TABLE( table1 ),4 );

  gtk_table_attach( GTK_TABLE( table1 ),
    AddLabel( MSGTR_EQU_Channel1,NULL ),
    0,1,0,1,(GtkAttachOptions)( GTK_FILL ),(GtkAttachOptions)( 0 ),0,0 );

  gtk_table_attach( GTK_TABLE( table1 ),
    AddLabel( MSGTR_EQU_Channel2,NULL ),
    0,1,1,2,(GtkAttachOptions)( GTK_FILL ),(GtkAttachOptions)( 0 ),0,0 );

  gtk_table_attach( GTK_TABLE( table1 ),
    AddLabel( MSGTR_EQU_Channel3,NULL ),
    0,1,2,3,(GtkAttachOptions)( GTK_FILL ),(GtkAttachOptions)( 0 ),0,0 );

  gtk_table_attach( GTK_TABLE( table1 ),
    AddLabel( MSGTR_EQU_Channel4,NULL ),
    0,1,3,4,(GtkAttachOptions)( GTK_FILL ),(GtkAttachOptions)( 0 ),0,0 );

  gtk_table_attach( GTK_TABLE( table1 ),
    AddLabel( MSGTR_EQU_Channel5,NULL ),
    0,1,4,5,(GtkAttachOptions)( GTK_FILL ),(GtkAttachOptions)( 0 ),0,0 );

  gtk_table_attach( GTK_TABLE( table1 ),
    AddLabel( MSGTR_EQU_Channel6,NULL ),
    0,1,5,6,(GtkAttachOptions)( GTK_FILL ),(GtkAttachOptions)( 0 ),0,0 );

  CBChannel1=AddComboBox( NULL );
    gtk_table_attach( GTK_TABLE( table1 ),CBChannel1,1,2,0,1,(GtkAttachOptions)( GTK_EXPAND | GTK_FILL ),(GtkAttachOptions)( 0 ),0,0 );

  CEChannel1=GTK_COMBO( CBChannel1 )->entry;
  gtk_widget_set_name( CEChannel1,"CEChannel1" );
  gtk_widget_show( CEChannel1 );

  CBChannel2=AddComboBox( NULL );
    gtk_table_attach( GTK_TABLE( table1 ),CBChannel2,1,2,1,2,(GtkAttachOptions)( GTK_EXPAND | GTK_FILL ),(GtkAttachOptions)( 0 ),0,0 );

  CEChannel2=GTK_COMBO( CBChannel2 )->entry;
  gtk_widget_set_name( CEChannel2,"CEChannel2" );
  gtk_widget_show( CEChannel2 );

  CBChannel3=AddComboBox( NULL );
    gtk_table_attach( GTK_TABLE( table1 ),CBChannel3,1,2,2,3,(GtkAttachOptions)( GTK_EXPAND | GTK_FILL ),(GtkAttachOptions)( 0 ),0,0 );

  CEChannel3=GTK_COMBO( CBChannel3 )->entry;
  gtk_widget_set_name( CEChannel3,"CEChannel3" );
  gtk_widget_show( CEChannel3 );

  CBChannel4=AddComboBox( NULL );
    gtk_table_attach( GTK_TABLE( table1 ),CBChannel4,1,2,3,4,(GtkAttachOptions)( GTK_EXPAND | GTK_FILL ),(GtkAttachOptions)( 0 ),0,0 );

  CEChannel4=GTK_COMBO( CBChannel4 )->entry;
  gtk_widget_set_name( CEChannel4,"CEChannel4" );
  gtk_widget_show( CEChannel4 );

  CBChannel5=AddComboBox( NULL );
    gtk_table_attach( GTK_TABLE( table1 ),CBChannel5,1,2,4,5,(GtkAttachOptions)( GTK_EXPAND | GTK_FILL ),(GtkAttachOptions)( 0 ),0,0 );

  CEChannel5=GTK_COMBO( CBChannel5 )->entry;
  gtk_widget_set_name( CEChannel5,"CEChannel5" );
  gtk_widget_show( CEChannel5 );

  CBChannel6=AddComboBox( NULL );
    gtk_table_attach( GTK_TABLE( table1 ),CBChannel6,1,2,5,6,(GtkAttachOptions)( GTK_EXPAND | GTK_FILL ),(GtkAttachOptions)( 0 ),0,0 );

  CEChannel6=GTK_COMBO( CBChannel6 )->entry;
  gtk_widget_set_name( CEChannel6,"CEChannel6" );
  gtk_widget_show( CEChannel6 );

  AddHSeparator( vbox1 );

  hbuttonbox1=AddHButtonBox( vbox1 );
    gtk_button_box_set_layout( GTK_BUTTON_BOX( hbuttonbox1 ),GTK_BUTTONBOX_END );
    gtk_button_box_set_spacing( GTK_BUTTON_BOX( hbuttonbox1 ),10 );

  ecOk=AddButton( MSGTR_Ok,hbuttonbox1 );
  ecCancel=AddButton( MSGTR_Cancel,hbuttonbox1 );

  gtk_widget_add_accelerator( ecOk,"clicked",accel_group,GDK_Return,0,GTK_ACCEL_VISIBLE );
  gtk_widget_add_accelerator( ecCancel,"clicked",accel_group,GDK_Escape,0,GTK_ACCEL_VISIBLE );

  gtk_signal_connect( GTK_OBJECT( EquConfig ),"destroy",GTK_SIGNAL_FUNC( WidgetDestroy ),&EquConfig );

  gtk_signal_connect( GTK_OBJECT( ecOk ),"clicked",GTK_SIGNAL_FUNC( ecButtonReleased ),(void *)1 );
  gtk_signal_connect( GTK_OBJECT( ecCancel ),"clicked",GTK_SIGNAL_FUNC( ecButtonReleased ),(void *)0 );

  gtk_window_add_accel_group( GTK_WINDOW( EquConfig ),accel_group );

  return EquConfig;
}
示例#18
0
/**
 *  Konstruktor von @p iwAIDebug.
 *
 *  @author jh
 */
iwAIDebug::iwAIDebug(GameWorldViewer * const gwv)
	: IngameWindow(CGI_OPTIONSWINDOW, 0xFFFF, 0xFFFF, 300, 515, _("AI Debug"), LOADER.GetImageN("resource", 41)), 
	gwv(gwv)
{
	// Nur Host hat Zugriff auf die Daten über die KI-Spieler
	if (!GameClient::inst().IsHost())
	{
		Close();
		return;
	}

	// Erstmal die AIs einsammeln
	for (unsigned i=0; i<GameClient::inst().GetPlayerCount(); ++i)
	{
		AIPlayerJH *ai = dynamic_cast<AIPlayerJH *>(GameServer::inst().GetAIPlayer(i));
		if (ai)
			ais.push_back(ai);
	}

	// Wenn keine KI-Spieler, schließen
	if (ais.size() == 0)
	{
		Close();
		return;
	}

	ctrlComboBox *players = AddComboBox(0, 15, 30, 250, 20, TC_GREY, NormalFont, 100);
	for (std::vector<AIPlayerJH *>::iterator it = ais.begin(); it != ais.end(); it++)
	{
		players->AddString(_((*it)->GetPlayerName()));
	}

	selection = 0;
	players->SetSelection(selection);

	ctrlComboBox *overlays = AddComboBox(1, 15, 60, 250, 20, TC_GREY, NormalFont, 100);
	overlays->AddString("None");
	overlays->AddString("BuildingQuality");
	overlays->AddString("Reachability");
	overlays->AddString("Farmed");
	overlays->AddString("Wood");
	overlays->AddString("Stones");
	overlays->AddString("Gold");
	overlays->AddString("Ironore");
	overlays->AddString("Coal");
	overlays->AddString("Granite");
	overlays->AddString("Plantspace");
	overlays->AddString("Borderland");
	overlays->AddString("Fish");
	overlay = 0;
	overlays->SetSelection(overlay);

	//jobs = AddList(1, 15, 60, 120, 220, TC_GREY, NormalFont);

	text = AddText(2, 15, 120, "", COLOR_YELLOW, 
		glArchivItem_Font::DF_LEFT|glArchivItem_Font::DF_TOP, LOADER.GetFontN("resource", 0));

	//for(unsigned char i = 0; i < 31; ++i)
	//	list->AddString(_(BUILDING_NAMES[GAMECLIENT.visual_settings.build_order[i]]));
	//list->SetSelection(0);
}
示例#19
0
void PaletteSubDialog::PaletteLayout()
{
    if(m_rowArea != NULL){
        GetInt32(m_rowArea, m_rows);
    }
    if(m_layoutArea != NULL){
        GetInt32(m_layoutArea, m_layout);
    }
    if(m_labelCheckArea != NULL){
        GetBool(m_labelCheckArea,m_showLabel);
    }
    if(m_searchText != NULL){
        GetString(m_searchText, m_searchString);
    }
    if(m_showControls && !m_controlsShown){
        LayoutFlushGroup(1);
        GroupBegin(51, BFV_SCALEFIT, 1, 0, String(), 0);
            m_nameArea = AddEditText(IDC_NAME, BFH_SCALEFIT);
            SetString(IDC_NAME, m_palette.m_name);
            
            GroupBegin(123,BFH_SCALEFIT,0,1,String(),0);
            String rowText("Rows");
            if(m_layout == 1){
                rowText = String("Columns");
            }
            AddStaticText(9, BFH_LEFT, 0, 0, rowText, 0);
            
            m_rowArea = AddEditNumberArrows(IDC_ROWS, BFH_RIGHT);
            GroupEnd();
            SetInt32(m_rowArea, m_rows,1,99);
            
            m_layoutArea = AddComboBox(IDC_LAYOUT_DIRECTION,BFH_LEFT);
            AddChild(m_layoutArea, 0, String("Horizontal"));
            AddChild(m_layoutArea, 1, String("Vertical"));
            SetInt32(m_layoutArea, m_layout);
            
            m_labelCheckArea = AddCheckbox(IDC_LABELCHECKBOX,BFH_LEFT,0,0,String("Show Labels"));
            SetBool(m_labelCheckArea, m_showLabel);
        
            AddStaticText(IDC_FILTERLABEL, BFH_CENTER, 0, 0, String("Filter:"), 0);
            m_searchText = AddEditText(IDC_SEARCHTEXT, BFH_SCALEFIT);
            SetString(m_searchText, m_searchString);
        
            m_controlsShown = TRUE;
        
			GroupBegin(142,BFV_SCALEFIT,1,0,String(),0);
				GroupBorderNoTitle(BORDER_THIN_IN);
				AddButton(IDC_CREATEMATERIAL, BFH_CENTER, 0, 0, String("Create Materials"));
				m_linkColor = AddCheckbox(IDC_LINKMATERIALS,BFH_LEFT,0,0,String("Link colors"));
			GroupEnd();
        
            AddButton(IDC_HIDE, BFH_CENTER, 0, 0, String("Hide Controls"));
        GroupEnd();
        
        GroupBegin(3,BFV_SCALEFIT,1,0,String(),0);
            m_actionPopup = AddPopupButton(3,BFH_LEFT);
            m_trashArea = AddUserArea(4, BFH_CENTER);
            AttachUserArea(m_trash, m_trashArea);
        GroupEnd();
        LayoutChanged(1);
    }
    if(!m_showControls && m_controlsShown){
        LayoutFlushGroup(1);
            GroupBegin(3,BFV_SCALEFIT,1,0,String(),0);
                m_actionPopup = AddPopupButton(3,BFH_LEFT);
                m_trashArea = AddUserArea(4, BFH_CENTER);
                AttachUserArea(m_trash, m_trashArea);
            GroupEnd();
        LayoutChanged(1);
        m_rowArea = NULL;
        m_layoutArea = NULL;
        m_labelCheckArea = NULL;
        m_searchText = NULL;
        m_controlsShown = FALSE;
    }
    
	LayoutFlushGroup(6);
    LayoutPalette();
	LayoutChanged(6);
}