about summary refs log tree commit diff stats
path: root/data/maps/the_great/rooms/Maze Slice Area.txtpb
blob: f59d6e54a7e864f45558c3d0876e68f96d197690 (plain) (blame)
1
2
3
4
5
6
7
8
9
name: "Maze Slice Area"
panel_display_name: "Courtyard"
panels {
  name: "SLICE"
  path: "Panels/Maze/maze_4"
  clue: "slice"
  answer: "cut"
  symbols: SUN
}
f0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
#include "connection_dialog.h"

#include "tracker_config.h"

ConnectionDialog::ConnectionDialog()
    : wxDialog(nullptr, wxID_ANY, "Connect to Archipelago") {
  server_box_ =
      new wxTextCtrl(this, -1, GetTrackerConfig().connection_details.ap_server,
                     wxDefaultPosition, {300, -1});
  player_box_ =
      new wxTextCtrl(this, -1, GetTrackerConfig().connection_details.ap_player,
                     wxDefaultPosition, {300, -1});
  password_box_ = new wxTextCtrl(
      this, -1, GetTrackerConfig().connection_details.ap_password,
      wxDefaultPosition, {300, -1});

  wxFlexGridSizer* form_sizer = new wxFlexGridSizer(2, 10, 10);

  form_sizer->Add(
      new wxStaticText(this, -1, "Server:"),
      wxSizerFlags().Align(wxALIGN_CENTER_VERTICAL | wxALIGN_RIGHT));
  form_sizer->Add(server_box_, wxSizerFlags().Expand());
  form_sizer->Add(
      new wxStaticText(this, -1, "Player:"),
      wxSizerFlags().Align(wxALIGN_CENTER_VERTICAL | wxALIGN_RIGHT));
  form_sizer->Add(player_box_, wxSizerFlags().Expand());
  form_sizer->Add(
      new wxStaticText(this, -1, "Password:"),
      wxSizerFlags().Align(wxALIGN_CENTER_VERTICAL | wxALIGN_RIGHT));
  form_sizer->Add(password_box_, wxSizerFlags().Expand());

  history_list_ = new wxListBox(this, -1);
  for (const ConnectionDetails& details : GetTrackerConfig().connection_history) {
    wxString display_text;
    display_text << details.ap_player;
    display_text << " (";
    display_text << details.ap_server;
    display_text << ")";

    history_list_->Append(display_text);
  }

  history_list_->Bind(wxEVT_LISTBOX, &ConnectionDialog::OnOldConnectionChosen, this);

  wxBoxSizer* mid_sizer = new wxBoxSizer(wxHORIZONTAL);
  mid_sizer->Add(form_sizer, wxSizerFlags().Proportion(3).Expand());
  mid_sizer->AddSpacer(10);
  mid_sizer->Add(history_list_, wxSizerFlags().Proportion(2).Expand());

  wxBoxSizer* top_sizer = new wxBoxSizer(wxVERTICAL);
  top_sizer->Add(new wxStaticText(
                     this, -1, "Enter the details to connect to Archipelago."),
                 wxSizerFlags().Align(wxALIGN_LEFT).DoubleBorder());
  top_sizer->Add(mid_sizer, wxSizerFlags().DoubleBorder().Expand());
  top_sizer->Add(CreateButtonSizer(wxOK | wxCANCEL), wxSizerFlags().Border().Center());

  SetSizerAndFit(top_sizer);

  Center();
  server_box_->SetFocus();
}

void ConnectionDialog::OnOldConnectionChosen(wxCommandEvent& e) {
  if (e.IsSelection()) {
    const ConnectionDetails& details = GetTrackerConfig().connection_history.at(e.GetSelection());
    server_box_->SetValue(details.ap_server);
    player_box_->SetValue(details.ap_player);
    password_box_->SetValue(details.ap_password);
  }
}