19#include <QApplication>
20#include <QButtonGroup>
28#include <QPainterPath>
29#include <QRadioButton>
31#include <QTableWidgetItem>
68#define BUTTON_WAIT (ACTION_COUNT + 1)
69#define BUTTON_CANCEL (BUTTON_WAIT + 1)
70#define BUTTON_COUNT (BUTTON_CANCEL + 1)
86static void spy_steal(QVariant data1, QVariant data2);
91static void spy_poison(QVariant data1, QVariant data2);
99static void nuke_city(QVariant data1, QVariant data2);
100static void destroy_city(QVariant data1, QVariant data2);
102static void spy_embassy(QVariant data1, QVariant data2);
115static void nuke_units(QVariant data1, QVariant data2);
116static void expel_unit(QVariant data1, QVariant data2);
117static void bombard(QVariant data1, QVariant data2);
118static void bombard2(QVariant data1, QVariant data2);
119static void bombard3(QVariant data1, QVariant data2);
120static void found_city(QVariant data1, QVariant data2);
122static void cultivate(QVariant data1, QVariant data2);
123static void plant(QVariant data1, QVariant data2);
124static void pillage(QVariant data1, QVariant data2);
127static void road(QVariant data1, QVariant data2);
128static void base(QVariant data1, QVariant data2);
129static void mine(QVariant data1, QVariant data2);
130static void irrigate(QVariant data1, QVariant data2);
131static void nuke(QVariant data1, QVariant data2);
132static void attack(QVariant data1, QVariant data2);
134static void paradrop(QVariant data1, QVariant data2);
140static void disembark1(QVariant data1, QVariant data2);
141static void disembark2(QVariant data1, QVariant data2);
142static void enter_hut(QVariant data1, QVariant data2);
143static void enter_hut2(QVariant data1, QVariant data2);
144static void frighten_hut(QVariant data1, QVariant data2);
146static void regular_move(QVariant data1, QVariant data2);
147static void convert_unit(QVariant data1, QVariant data2);
148static void fortify(QVariant data1, QVariant data2);
149static void disband_unit(QVariant data1, QVariant data2);
150static void homeless(QVariant data1, QVariant data2);
151static void join_city(QVariant data1, QVariant data2);
153static void unit_upgrade(QVariant data1, QVariant data2);
154static void airlift(QVariant data1, QVariant data2);
155static void conquer_city(QVariant data1, QVariant data2);
159static void heal_unit(QVariant data1, QVariant data2);
160static void heal_unit2(QVariant data1, QVariant data2);
167static void keep_moving(QVariant data1, QVariant data2);
173 QVariant data1, QVariant data2);
198 QHash<action_id, pfcn_void> action_function;
201 action_function[ACTION_ESTABLISH_EMBASSY] =
spy_embassy;
205 action_function[ACTION_SPY_POISON] =
spy_poison;
211 action_function[ACTION_SPY_TARGETED_SABOTAGE_CITY] =
213 action_function[ACTION_SPY_TARGETED_SABOTAGE_CITY_ESC] =
217 action_function[ACTION_SPY_TARGETED_STEAL_TECH] =
spy_steal;
218 action_function[ACTION_SPY_TARGETED_STEAL_TECH_ESC] =
spy_steal_esc;
224 action_function[ACTION_JOIN_CITY] =
join_city;
233 action_function[ACTION_AIRLIFT] =
airlift;
237 action_function[ACTION_NUKE_CITY] =
nuke_city;
243 action_function[ACTION_EXPEL_UNIT] =
expel_unit;
244 action_function[ACTION_HEAL_UNIT] =
heal_unit;
245 action_function[ACTION_HEAL_UNIT2] =
heal_unit2;
255 action_function[ACTION_BOMBARD] =
bombard;
256 action_function[ACTION_BOMBARD2] =
bombard2;
257 action_function[ACTION_BOMBARD3] =
bombard3;
258 action_function[ACTION_NUKE_UNITS] =
nuke_units;
261 action_function[ACTION_FOUND_CITY] =
found_city;
262 action_function[ACTION_NUKE] =
nuke;
263 action_function[ACTION_PARADROP] =
paradrop;
268 action_function[ACTION_PARADROP_FRIGHTEN_CONQUER]
270 action_function[ACTION_ATTACK] =
attack;
273 action_function[ACTION_CULTIVATE] =
cultivate;
274 action_function[ACTION_PLANT] =
plant;
275 action_function[ACTION_PILLAGE] =
pillage;
278 action_function[ACTION_ROAD] =
road;
279 action_function[ACTION_BASE] =
base;
280 action_function[ACTION_MINE] =
mine;
281 action_function[ACTION_IRRIGATE] =
irrigate;
282 action_function[ACTION_TRANSPORT_DISEMBARK1] =
disembark1;
283 action_function[ACTION_TRANSPORT_DISEMBARK2] =
disembark2;
284 action_function[ACTION_HUT_ENTER] =
enter_hut;
285 action_function[ACTION_HUT_ENTER2] =
enter_hut2;
296 action_function[ACTION_FORTIFY] =
fortify;
298 action_function[ACTION_HOMELESS] =
homeless;
300 return action_function;
311 Qt::FramelessWindowHint)
315 setSizeGripEnabled(
true);
335 QStyleOptionTitleBar tbar_opt;
336 QStyleOption win_opt;
337 QStyle *style = this->style();
338 QRect active_area = this->rect();
340 QRect close_rect, text_rect;
342 qpal.setColor(QPalette::Active, QPalette::ToolTipText, Qt::white);
343 tbar_opt.initFrom(
this);
345 &tbar_opt,
this) + 2;
349 close_rect = QRect(this->
width() -
close_pix.width(), 0, this->width(),
351 tbar_opt.titleBarState = this->windowState();
352 tbar_opt.text = tbar_opt.fontMetrics.elidedText(this->windowTitle(),
355 style->drawComplexControl(QStyle::CC_TitleBar, &tbar_opt, &p,
this);
356 style->drawItemText(&p, text_rect, Qt::AlignCenter, qpal,
357 true, tbar_opt.text, QPalette::ToolTipText);
358 style->drawItemPixmap(&p, close_rect, Qt::AlignLeft,
363 win_opt.initFrom(
this);
364 win_opt.rect = active_area;
365 style->drawPrimitive(QStyle::PE_Widget, &win_opt, &p,
this);
383 QPoint
pos =
event->pos();
389 point =
event->globalPos() - geometry().topLeft();
391 setCursor(Qt::SizeAllCursor);
404 setCursor(Qt::ArrowCursor);
414 QGridLayout *qgroupbox_layout;
416 QTableWidgetItem *
item;
423 setAttribute(Qt::WA_DeleteOnClose);
428 styles =
new QTableWidget;
431 ns_label =
new QLabel;
436 setWindowTitle(
_(
"Select Nation"));
449 nation_tabs->setSelectionMode(QAbstractItemView::SingleSelection);
451 nation_tabs->horizontalHeader()->setVisible(
false);
453 nation_tabs->setEditTriggers(QAbstractItemView::NoEditTriggers);
455 ns_label->setText(
_(
"Nation Set:"));
457 styles->setColumnCount(2);
458 styles->setSelectionMode(QAbstractItemView::SingleSelection);
459 styles->verticalHeader()->setVisible(
false);
460 styles->horizontalHeader()->setVisible(
false);
461 styles->setProperty(
"showGrid",
"false");
462 styles->setProperty(
"selectionBehavior",
"SelectRows");
463 styles->setEditTriggers(QAbstractItemView::NoEditTriggers);
464 styles->setShowGrid(
false);
466 qgroupbox_layout =
new QGridLayout;
467 no_name =
new QGroupBox(parent);
470 is_male =
new QRadioButton(no_name);
476 qgroupbox_layout->addWidget(
leader_name, 1, 0, 1, 2);
477 qgroupbox_layout->addWidget(
is_male, 2, 1);
478 qgroupbox_layout->addWidget(
is_female, 2, 0);
481 no_name->setLayout(qgroupbox_layout);
486 no_name->setTitle(
_(
"Your leader name"));
496 item =
new QTableWidgetItem;
499 item->setData(Qt::DecorationRole, *pix);
501 size.setWidth(pix->width());
502 size.setHeight(pix->height());
505 item =
new QTableWidgetItem;
511 header =
styles->horizontalHeader();
512 header->setSectionResizeMode(QHeaderView::Stretch);
513 header->resizeSections(QHeaderView::ResizeToContents);
514 header =
styles->verticalHeader();
515 header->resizeSections(QHeaderView::ResizeToContents);
523 connect(
styles->selectionModel(),
524 SIGNAL(selectionChanged(
const QItemSelection &,
525 const QItemSelection &)),
527 const QItemSelection &)));
529 SIGNAL(selectionChanged(
const QItemSelection &,
530 const QItemSelection &)),
532 const QItemSelection &)));
533 connect(
leader_name, SIGNAL(currentIndexChanged(
int)),
535 connect(
leader_name->lineEdit(), &QLineEdit::returnPressed,
537 connect(
qnation_set, SIGNAL(currentIndexChanged(
int)),
540 SIGNAL(selectionChanged(
const QItemSelection &,
541 const QItemSelection &)),
543 const QItemSelection &)));
575 title =
_(
"What Nation Will You Be?");
581 setWindowTitle(
title);
598 QTableWidgetItem *
item;
606 item =
new QTableWidgetItem;
607 item->setText(
_(
"All nations"));
608 item->setData(Qt::UserRole, -99);
630 item =
new QTableWidgetItem;
631 item->setData(Qt::UserRole, i - 1);
636 header->resizeSections(QHeaderView::Stretch);
638 header->resizeSections(QHeaderView::ResizeToContents);
662 const QItemSelection &ds)
664 QModelIndexList indexes = sl.indexes();
667 if (indexes.isEmpty()) {
670 index = indexes.at(0);
681 QTableWidgetItem *
item;
695 index =
item->data(Qt::UserRole).toInt();
708 item =
new QTableWidgetItem;
711 if (pnation->player) {
713 f.setStrikeOut(
true);
717 item->setData(Qt::DecorationRole, *pix);
725 header->resizeSections(QHeaderView::Stretch);
727 header->resizeSections(QHeaderView::ResizeToContents);
734 const QItemSelection &deselcted)
739 QModelIndexList indexes = selected.indexes();
741 QTableWidgetItem *
item;
744 if (indexes.isEmpty()) {
748 index = indexes.at(0);
749 if (indexes.isEmpty()) {
752 qvar = index.data(Qt::UserRole);
772 qvar = qvar.fromValue<
int>(style);
774 for (ind = 0; ind <
styles->rowCount(); ind++) {
777 if (
item->data(Qt::UserRole) == qvar) {
787 const QItemSelection &deselcted)
791 QModelIndexList indexes = selected.indexes();
793 if (indexes.isEmpty()) {
797 index = indexes.at(0);
798 qvar = index.data(Qt::UserRole);
842 _(
"Nation has been chosen by other player"));
859 const char *
lines, QWidget *parent)
865 setAttribute(Qt::WA_DeleteOnClose);
866 setCursor(Qt::ArrowCursor);
868 setFrameStyle(QFrame::Box);
874 qlines = QString(
lines);
875 qlist = qlines.split(
"\n");
881 gui()->mapview_wdg->find_place(
gui()->mapview_wdg->width() - x - 4, 4,
895 QByteArray capt_bytes;
899 for (i = 0; i <
qlist.size(); ++i) {
902 if (i <
qlist.size() - 1) {
908 qb_bytes = q.toUtf8();
923 QStringList str_list;
928 for (i = 0; i < str_list.count(); i++) {
929 x = qMax(x, fm.horizontalAdvance(str_list.at(i)));
930 y = y + 3 + fm.height();
940 QPainter painter(
this);
947 pen.setColor(palette().
color(QPalette::Text));
950 painter.drawText(10, fm.height() + 3,
qcaption);
951 painter.drawText(10, 2 * fm.height() + 6,
qheadline);
952 for (i = 0; i <
qlist.count(); i++) {
953 painter.drawText(10, 3 + (fm.height() + 3) * (i + 3),
qlist[i]);
963 cursor =
event->globalPos() - geometry().topLeft();
964 if (
event->button() == Qt::RightButton) {
976 setCursor(Qt::SizeAllCursor);
984 setCursor(Qt::ArrowCursor);
1092 const struct text_tag_list *tags,
tile *ptile,
1093 QWidget *parent): QMessageBox(parent)
1096 setAttribute(Qt::WA_DeleteOnClose);
1097 goto_but = this->addButton(
_(
"Goto Location"), QMessageBox::ActionRole);
1099 inspect_but = this->addButton(
_(
"Inspect City"), QMessageBox::ActionRole);
1102 close_but = this->addButton(QMessageBox::Close);
1114 qlines.replace(
"\n",
" ");
1118 connect(
close_but, &QAbstractButton::pressed,
this, &QWidget::close);
1149 QByteArray rn_bytes;
1153 rule_name =
qnation_set->currentData().toString();
1154 rn_bytes = rule_name.toUtf8();
1157 rn = rn_bytes.data();
1170 const struct text_tag_list *tags,
1174 gui()->central_wdg);
1183 QMessageBox *msg =
new QMessageBox(
gui()->central_wdg);
1186 msg->setStandardButtons(QMessageBox::Ok);
1188 msg->setAttribute(Qt::WA_DeleteOnClose);
1199 gui()->mapview_wdg);
1234 && (unit_list_size(ptile->
units) > 1
1236 gui()->toggle_unit_sel_widget(ptile);
1245 gui()->update_unit_sel();
1290 ask->setStandardButtons(QMessageBox::Cancel | QMessageBox::Ok);
1291 ask->setDefaultButton(QMessageBox::Cancel);
1294 ask->setAttribute(Qt::WA_DeleteOnClose);
1295 QObject::connect(ask, &hud_message_box::accepted, [=]() {
1296 if (government_id ==
G_LAST) {
1319 : QPushButton(
title)
1373 void (*run_on_close_in)(
int)): QWidget(parent)
1375 QLabel *l =
new QLabel(text);
1377 setProperty(
"themed_choice",
true);
1378 layout =
new QVBoxLayout(
this);
1382 setWindowFlags(Qt::Dialog);
1383 setWindowTitle(
title);
1384 setAttribute(Qt::WA_DeleteOnClose);
1385 gui()->set_diplo_dialog(
this);
1413 gui()->set_diplo_dialog(NULL);
1431 QPushButton *next, *prev;
1433 next =
new QPushButton();
1435 next->setIconSize(QSize(32, 32));
1436 next->setFixedSize(QSize(36, 36));
1437 prev =
new QPushButton();
1439 prev->setIconSize(QSize(32, 32));
1440 prev->setFixedSize(QSize(36, 36));
1451 unit_skip->addWidget(prev, Qt::AlignCenter);
1453 unit_skip->addWidget(next, Qt::AlignCenter);
1467 QVariant data2, QString tool_tip =
"",
1468 const int button_id = -1)
1474 QObject::connect(button, &QPushButton::clicked,
1481 if (!tool_tip.isEmpty()) {
1482 button->setToolTip(tool_tip);
1485 if (0 <= button_id) {
1490 layout->addWidget(button);
1500 p = mapFromGlobal(QCursor::pos());
1501 p.setY(p.y()-this->height());
1502 p.setX(p.x()-this->width());
1569 struct unit *new_target =
nullptr;
1570 bool break_next =
false;
1609 struct unit *new_target =
nullptr;
1696 layout->removeWidget(button);
1713 layout->addWidget(button);
1723 int target_city_id = data2.toInt();
1728 target_city_id, 0,
"");
1738 int target_city_id = data2.toInt();
1743 target_city_id, 0,
"");
1752 int caravan_id = data1.toInt();
1753 int caravan_target_id = data2.toInt();
1758 caravan_id, caravan_target_id, 0,
"");
1767 int actor_id = data1.toInt();
1768 int tgt_city_id = data2.toInt();
1773 actor_id, tgt_city_id, 0,
"");
1782 int actor_id = data1.toInt();
1783 int tgt_city_id = data2.toInt();
1788 actor_id, tgt_city_id, 0,
"");
1799 int actor_id = data1.toInt();
1800 int tgt_city_id = data2.toInt();
1804 struct unit_list *as_list;
1806 as_list = unit_list_new();
1807 unit_list_append(as_list,
punit);
1809 unit_list_destroy(as_list);
1816static void airlift(QVariant data1, QVariant data2)
1818 int actor_id = data1.toInt();
1819 int tgt_city_id = data2.toInt();
1824 actor_id, tgt_city_id, 0,
"");
1833 int actor_id = data1.toInt();
1834 int tgt_city_id = data2.toInt();
1839 actor_id, tgt_city_id, 0,
"");
1848 int actor_id = data1.toInt();
1849 int tgt_city_id = data2.toInt();
1854 actor_id, tgt_city_id, 0,
"");
1863 int actor_id = data1.toInt();
1864 int target_id = data2.toInt();
1868 actor_id, target_id, 0,
"");
1877 int actor_id = data1.toInt();
1878 int target_id = data2.toInt();
1882 actor_id, target_id, 0,
"");
1992 struct city *actor_homecity;
1999 foreach (caras,
gui()->trade_gen.lines) {
2008 i =
gui()->trade_gen.lines.indexOf(caras);
2009 gui()->trade_gen.lines.takeAt(i);
2030 "Diplomat queue problem. Is another diplomat window open?");
2039 _(
"Choose Your %s's Strategy"),
2044 _(
"Your %s from %s reaches the city of %s.\nWhat now?"),
2050 _(
"Your %s has arrived at %s.\nWhat is your command?"),
2056 _(
"Your %s is ready to act against %s %s."),
2062 "No target specified.");
2066 _(
"Your %s is waiting for your command."),
2070 cd =
gui()->get_diplo_dialog();
2076 gui()->game_tab_widget,
2257 switch ((
enum gen_action)tgt_action_id) {
2258 case ACTION_SPY_TARGETED_SABOTAGE_CITY:
2259 return ACTION_SPY_SABOTAGE_CITY;
2260 case ACTION_SPY_TARGETED_SABOTAGE_CITY_ESC:
2261 return ACTION_SPY_SABOTAGE_CITY_ESC;
2262 case ACTION_SPY_TARGETED_STEAL_TECH:
2263 return ACTION_SPY_STEAL_TECH;
2264 case ACTION_SPY_TARGETED_STEAL_TECH_ESC:
2265 return ACTION_SPY_STEAL_TECH_ESC;
2280 switch ((
enum gen_action)tgt_action_id) {
2281 case ACTION_SPY_TARGETED_SABOTAGE_CITY:
2282 return ACTION_SPY_SABOTAGE_CITY_PRODUCTION;
2283 case ACTION_SPY_TARGETED_SABOTAGE_CITY_ESC:
2284 return ACTION_SPY_SABOTAGE_CITY_PRODUCTION_ESC;
2285 case ACTION_STRIKE_BUILDING:
2286 return ACTION_STRIKE_PRODUCTION;
2300 QVariant data1, QVariant data2)
2305 if (!
af_map.contains(act)) {
2333 QVariant data1, QVariant data2)
2351 button->setText(
title);
2352 button->setToolTip(tool_tip);
2360 int actor_id = data1.toInt();
2361 int target_id = data2.toInt();
2370static void fortify(QVariant data1, QVariant data2)
2372 int actor_id = data1.toInt();
2373 int target_id = data2.toInt();
2386 int actor_id = data1.toInt();
2387 int target_id = data2.toInt();
2398 int actor_id = data1.toInt();
2399 int target_id = data2.toInt();
2412 int diplomat_id = data1.toInt();
2413 int diplomat_target_id = data2.toInt();
2421 diplomat_target_id);
2430 int diplomat_id = data1.toInt();
2431 int diplomat_target_id = data2.toInt();
2434 diplomat_target_id, 0,
"");
2442 int diplomat_id = data1.toInt();
2443 int diplomat_target_id = data2.toInt();
2446 diplomat_target_id, 0,
"");
2454 int actor_id = data1.toInt();
2455 int target_id = data2.toInt();
2465 int actor_id = data1.toInt();
2466 int target_id = data2.toInt();
2476 int actor_id = data1.toInt();
2477 int target_id = data2.toInt();
2487 int actor_id = data1.toInt();
2488 int target_id = data2.toInt();
2498 int actor_id = data1.toInt();
2499 int target_id = data2.toInt();
2509 int actor_id = data1.toInt();
2510 int target_id = data2.toInt();
2520 int actor_id = data1.toInt();
2521 int target_id = data2.toInt();
2531 int actor_id = data1.toInt();
2532 int target_id = data2.toInt();
2542 int actor_id = data1.toInt();
2543 int target_id = data2.toInt();
2548 actor_id, target_id, 0,
"");
2557 int actor_id = data1.toInt();
2558 int target_id = data2.toInt();
2563 actor_id, target_id, 0,
"");
2572 int actor_id = data1.toInt();
2573 int target_id = data2.toInt();
2578 actor_id, target_id, 0,
"");
2587 int actor_id = data1.toInt();
2588 int target_id = data2.toInt();
2593 actor_id, target_id, 0,
"");
2602 int actor_id = data1.toInt();
2603 int target_id = data2.toInt();
2608 actor_id, target_id, 0,
"");
2617 int actor_id = data1.toInt();
2618 int target_id = data2.toInt();
2623 actor_id, target_id, 0,
"");
2632 int actor_id = data1.toInt();
2633 int target_id = data2.toInt();
2644 int actor_id = data1.toInt();
2645 int target_id = data2.toInt();
2656 int actor_id = data1.toInt();
2657 int target_id = data2.toInt();
2666static void bombard(QVariant data1, QVariant data2)
2668 int actor_id = data1.toInt();
2669 int target_id = data2.toInt();
2680 int actor_id = data1.toInt();
2681 int target_id = data2.toInt();
2692 int actor_id = data1.toInt();
2693 int target_id = data2.toInt();
2704 int actor_id = data1.toInt();
2707 actor_id, actor_id);
2715 int actor_id = data1.toInt();
2716 int target_id = data2.toInt();
2721 actor_id, target_id, 0,
"");
2730 int actor_id = data1.toInt();
2731 int target_id = data2.toInt();
2736 actor_id, target_id, 0,
"");
2743static void plant(QVariant data1, QVariant data2)
2745 int actor_id = data1.toInt();
2746 int target_id = data2.toInt();
2751 actor_id, target_id, 0,
"");
2758static void pillage(QVariant data1, QVariant data2)
2760 int actor_id = data1.toInt();
2761 int target_id = data2.toInt();
2766 actor_id, target_id,
2780 int actor_id = data1.toInt();
2781 int target_id = data2.toInt();
2786 actor_id, target_id,
2800 int actor_id = data1.toInt();
2801 int target_id = data2.toInt();
2806 actor_id, target_id,
2818static void road(QVariant data1, QVariant data2)
2820 int actor_id = data1.toInt();
2821 int target_id = data2.toInt();
2827 actor_id, target_id,
2839static void base(QVariant data1, QVariant data2)
2841 int actor_id = data1.toInt();
2842 int target_id = data2.toInt();
2848 actor_id, target_id,
2860static void mine(QVariant data1, QVariant data2)
2862 int actor_id = data1.toInt();
2863 int target_id = data2.toInt();
2869 actor_id, target_id,
2883 int actor_id = data1.toInt();
2884 int target_id = data2.toInt();
2890 actor_id, target_id,
2902static void nuke(QVariant data1, QVariant data2)
2904 int diplomat_id = data1.toInt();
2905 int diplomat_target_id = data2.toInt();
2910 diplomat_id, diplomat_target_id, 0,
"");
2917static void attack(QVariant data1, QVariant data2)
2919 int diplomat_id = data1.toInt();
2920 int diplomat_target_id = data2.toInt();
2925 diplomat_id, diplomat_target_id, 0,
"");
2934 int diplomat_id = data1.toInt();
2935 int diplomat_target_id = data2.toInt();
2940 diplomat_id, diplomat_target_id, 0,
"");
2949 int actor_id = data1.toInt();
2950 int target_id = data2.toInt();
2955 actor_id, target_id, 0,
"");
2964 int actor_id = data1.toInt();
2965 int target_id = data2.toInt();
2970 actor_id, target_id, 0,
"");
2979 int actor_id = data1.toInt();
2980 int target_id = data2.toInt();
2985 actor_id, target_id, 0,
"");
2994 int actor_id = data1.toInt();
2995 int target_id = data2.toInt();
3000 actor_id, target_id, 0,
"");
3009 int actor_id = data1.toInt();
3010 int target_id = data2.toInt();
3015 actor_id, target_id, 0,
"");
3024 int actor_id = data1.toInt();
3025 int target_id = data2.toInt();
3030 actor_id, target_id, 0,
"");
3039 int actor_id = data1.toInt();
3040 int target_id = data2.toInt();
3045 actor_id, target_id, 0,
"");
3058 int diplomat_id = data1.toInt();
3059 int diplomat_target_id = data2.toInt();
3062 struct player *pvictim = NULL;
3064 QList<QVariant> actor_and_target;
3066 cd =
gui()->get_diplo_dialog();
3071 if (pvcity ==
nullptr) {
3082 gui()->game_tab_widget,
3086 actor_and_target.append(diplomat_id);
3087 actor_and_target.append(diplomat_target_id);
3088 actor_and_target.append(act_id);
3089 qv1 = QVariant::fromValue(actor_and_target);
3103 .replace(
"&",
"&&");
3110 astr_set(&stra,
_(
"At %s's Discretion"),
3113 str = QString(
astr_str(&stra)).replace(
"&",
"&&");
3144 int diplomat_id = data1.toList().at(0).toInt();
3145 int diplomat_target_id = data1.toList().at(1).toInt();
3146 action_id act_id = data1.toList().at(2).toInt();
3150 if (data2.toInt() ==
A_UNSET) {
3153 diplomat_id, diplomat_target_id, data2.toInt(),
"");
3157 diplomat_target_id, data2.toInt(),
"");
3167 int actor_id = data1.toInt();
3168 int target_id = data2.toInt();
3184 int diplomat_id = data1.toInt();
3185 int diplomat_target_id = data2.toInt();
3193 diplomat_target_id);
3202 int diplomat_id = data1.toInt();
3203 int diplomat_target_id = data2.toInt();
3212 diplomat_id, diplomat_target_id);
3221 int diplomat_id = data1.toInt();
3222 int diplomat_target_id = data2.toInt();
3227 diplomat_id, diplomat_target_id, 0,
"");
3236 int diplomat_id = data1.toInt();
3237 int diplomat_target_id = data2.toInt();
3242 diplomat_id, diplomat_target_id, 0,
"");
3251 int diplomat_id = data1.toInt();
3252 int diplomat_target_id = data2.toInt();
3257 diplomat_id, diplomat_target_id, 0,
"");
3266 int diplomat_id = data1.toInt();
3267 int diplomat_target_id = data2.toInt();
3272 diplomat_id, diplomat_target_id, 0,
"");
3281 int actor_id = data1.toInt();
3282 int target_id = data2.toInt();
3287 actor_id, target_id, 0,
"");
3296 int diplomat_id = data1.toInt();
3297 int diplomat_target_id = data2.toInt();
3302 diplomat_id, diplomat_target_id, 0,
"");
3311 int diplomat_id = data1.toInt();
3312 int diplomat_target_id = data2.toInt();
3317 diplomat_id, diplomat_target_id, 0,
"");
3326 int diplomat_id = data1.toInt();
3327 int diplomat_target_id = data2.toInt();
3332 diplomat_id, diplomat_target_id, 0,
"");
3341 int diplomat_id = data1.toInt();
3342 int diplomat_target_id = data2.toInt();
3347 diplomat_id, diplomat_target_id, 0,
"");
3356 int diplomat_id = data1.toInt();
3357 int diplomat_target_id = data2.toInt();
3362 diplomat_id, diplomat_target_id, 0,
"");
3371 int diplomat_id = data1.toInt();
3372 int diplomat_target_id = data2.toInt();
3377 diplomat_target_id, 0,
"");
3386 int diplomat_id = data1.toInt();
3387 int diplomat_target_id = data2.toInt();
3392 diplomat_target_id, 0,
"");
3401 int diplomat_id = data1.toInt();
3402 int diplomat_target_id = data2.toInt();
3407 diplomat_target_id, 0,
"");
3416 int diplomat_id = data1.toInt();
3417 int diplomat_target_id = data2.toInt();
3422 diplomat_target_id, 0,
"");
3431 int diplomat_id = data1.toInt();
3432 int diplomat_target_id = data2.toInt();
3437 diplomat_target_id,
B_LAST + 1,
"");
3446 int diplomat_id = data1.toInt();
3447 int diplomat_target_id = data2.toInt();
3452 diplomat_target_id,
B_LAST + 1,
"");
3461 int diplomat_id = data1.toInt();
3462 int diplomat_target_id = data2.toInt();
3467 diplomat_target_id,
A_UNSET,
"");
3476 int diplomat_id = data1.toInt();
3477 int diplomat_target_id = data2.toInt();
3482 diplomat_target_id,
A_UNSET,
"");
3491 int diplomat_id = data1.toInt();
3492 int diplomat_target_id = data2.toInt();
3500 diplomat_target_id);
3509 int diplomat_id = data1.toInt();
3510 int diplomat_target_id = data2.toInt();
3518 diplomat_target_id);
3527 int actor_id = data1.toInt();
3528 int target_id = data2.toInt();
3533 actor_id, target_id, 0,
"");
3542 const struct action *paction)
3547 int diplomat_target_id = tcity->
id;
3548 const int act_id = paction->
id;
3554 "Treasury contains %d gold.",
3564 impossible->setStandardButtons(QMessageBox::Ok);
3565 impossible->setAttribute(Qt::WA_DeleteOnClose);
3571 PL_(
"Incite a revolt for %d gold?\n%s",
3572 "Incite a revolt for %d gold?\n%s",
cost),
cost, buf);
3573 ask->setStandardButtons(QMessageBox::Cancel | QMessageBox::Ok);
3574 ask->setDefaultButton(QMessageBox::Cancel);
3576 ask->setAttribute(Qt::WA_DeleteOnClose);
3577 QObject::connect(ask, &hud_message_box::accepted, [=]() {
3587 PL_(
"Inciting a revolt costs %d gold.\n%s",
3588 "Inciting a revolt costs %d gold.\n%s",
cost),
cost,
3591 too_much->setStandardButtons(QMessageBox::Ok);
3592 too_much->setAttribute(Qt::WA_DeleteOnClose);
3604 const struct action *paction)
3610 int diplomat_target_id = tunit->
id;
3611 const int act_id = paction->
id;
3617 "Treasury contains %d gold.",
3623 "Bribe unit for %d gold?\n%s",
3626 ask->setStandardButtons(QMessageBox::Cancel | QMessageBox::Ok);
3627 ask->setDefaultButton(QMessageBox::Cancel);
3628 ask->setAttribute(Qt::WA_DeleteOnClose);
3629 QObject::connect(ask, &hud_message_box::accepted, [=]() {
3637 PL_(
"Bribing the unit costs %d gold.\n%s",
3638 "Bribing the unit costs %d gold.\n%s",
cost),
cost, buf);
3640 ask->setAttribute(Qt::WA_DeleteOnClose);
3657 what = data1.toInt();
3658 punit_id = data2.toInt();
3672 int diplomat_id = data1.toList().at(0).toInt();
3673 int diplomat_target_id = data1.toList().at(1).toInt();
3674 action_id act_id = data1.toList().at(2).toInt();
3678 if (data2.toInt() ==
B_LAST) {
3681 diplomat_id, diplomat_target_id, data2.toInt(),
3683 }
else if (data2.toInt() == -1) {
3686 diplomat_id, diplomat_target_id, data2.toInt(),
3691 diplomat_target_id, data2.toInt(),
"");
3701 const struct action *paction)
3706 int diplomat_target_id = tcity->
id;
3709 _(
"Select Improvement to Sabotage"),
3710 gui()->game_tab_widget,
3714 QList<QVariant> actor_and_target;
3720 actor_and_target.append(diplomat_id);
3721 actor_and_target.append(diplomat_target_id);
3722 actor_and_target.append(paction->
id);
3723 qv1 = QVariant::fromValue(actor_and_target);
3733 if (pimprove->sabotage > 0) {
3737 .replace(
"&",
"&&");
3746 astr_set(&stra,
_(
"At %s's Discretion"),
3749 str = QString(
astr_str(&stra)).replace(
"&",
"&&");
3773 cd =
new choice_dialog(
_(
"What To Pillage"),
_(
"Select what to pillage:"),
3774 gui()->game_tab_widget);
3801 setAttribute(Qt::WA_DeleteOnClose);
3808 str = QString(
PL_(
"Are you sure you want to disband that %1 unit?",
3809 "Are you sure you want to disband those %1 units?",
3810 unit_list_size(punits))).arg(unit_list_size(punits));
3811 pb = addButton(
_(
"Yes"), QMessageBox::AcceptRole);
3812 addButton(
_(
"No"), QMessageBox::RejectRole);
3814 setDefaultButton(pb);
3857 title = QString(
_(
"Modpack suggests using %1 tileset."))
3859 text = QString(
"It might not work with other tilesets.\n"
3860 "You are currently using tileset %1.")
3862 ask->addButton(
_(
"Keep current tileset"), QMessageBox::RejectRole);
3863 ask->addButton(
_(
"Load tileset"), QMessageBox::AcceptRole);
3865 ask->setAttribute(Qt::WA_DeleteOnClose);
3867 QObject::connect(ask, &hud_message_box::accepted, [=]() {
3870 gui()->map_scale)) {
3872 _(
"Can't load requested tileset."));
3888 title = QString(
_(
"Modpack suggests using %1 soundset."))
3890 text = QString(
"It might not work with other tilesets.\n"
3891 "You are currently using soundset %1.")
3893 ask->addButton(
_(
"Keep current soundset"), QMessageBox::RejectRole);
3894 ask->addButton(
_(
"Load soundset"), QMessageBox::AcceptRole);
3896 ask->setAttribute(Qt::WA_DeleteOnClose);
3897 QObject::connect(ask, &hud_message_box::accepted, [=]() {
3913 title = QString(
_(
"Modpack suggests using %1 musicset."))
3915 text = QString(
"It might not work with other tilesets.\n"
3916 "You are currently using musicset %1.")
3918 ask->addButton(
_(
"Keep current musicset"), QMessageBox::RejectRole);
3919 ask->addButton(
_(
"Load musicset"), QMessageBox::AcceptRole);
3921 ask->setAttribute(Qt::WA_DeleteOnClose);
3922 QObject::connect(ask, &hud_message_box::accepted, [=]() {
3943 QList<notify_dialog *> nd_list;
3947 for (i = 0; i < nd_list.count(); i++) {
3960 QList <choice_dialog *> cd_list;
3961 QList <notify_dialog *> nd_list;
3964 QApplication::alert(
gui()->central_wdg);
3966 for (i = 0; i < cd_list.count(); i++) {
3967 cd_list[i]->close();
3970 for (i = 0; i < nd_list.count(); i++) {
3971 nd_list[i]->close();
3982 gui()->popdown_unit_sel();
3986 if (gtd !=
nullptr) {
4090 asd =
gui()->get_diplo_dialog();
4093 "The action selection dialog should have been open");
4099 "The action selection dialog is for another actor unit.");
4106 if (cancel_button != NULL) {
4113 if (wait_button != NULL) {
4140 "Action enabled against non existing unit!");
4151 "Action enabled against non existing city!");
4164 "Action enabled against all units on "
4165 "non existing tile!");
4182 act, act_probs, custom,
4191 if (wait_button != NULL || cancel_button != NULL) {
4205 cd =
gui()->get_diplo_dialog();
4227 if (std_gui !=
nullptr) {
4233 if (std_gui !=
nullptr ||
fatal) {
4235 QMessageBox *ask =
new QMessageBox(parent);
4239 _(
"Tileset \"%s\" problem, it's probably incompatible with "
4243 _(
"Tileset problem, it's probably incompatible with "
4244 "the ruleset:\n%s"), msg);
4248 ask->setStandardButtons(QMessageBox::Ok);
4249 ask->setWindowTitle(
_(
"Tileset error"));
4251 if (std_gui !=
nullptr) {
4252 ask->setAttribute(Qt::WA_DeleteOnClose);
4268 QVector<int> *punit_ids;
4270 if (!punits || unit_list_size(punits) == 0) {
4276 punit_ids =
new QVector<int>();
4278 punit_ids->push_back(
punit->
id);
4282 title =
_(
"Upgrade Unit!");
4283 ask->setStandardButtons(QMessageBox::Ok);
4285 title =
_(
"Upgrade Obsolete Units");
4286 ask->setStandardButtons(QMessageBox::Cancel | QMessageBox::Ok);
4287 ask->setDefaultButton(QMessageBox::Cancel);
4290 ask->setAttribute(Qt::WA_DeleteOnClose);
4291 QObject::connect(ask, &hud_message_box::accepted, [=]() {
4292 std::unique_ptr<QVector<int>> uptr(punit_ids);
4295 for (
int id : *uptr) {
4317 ufont.setItalic(
true);
4322 p = mapFromGlobal(QCursor::pos());
4324 setMouseTracking(
true);
4325 final_p.setX(p.x());
4326 final_p.setY(p.y());
4327 if (p.x() +
width() > parentWidget()->
width()) {
4328 final_p.setX(parentWidget()->
width() -
width());
4330 if (p.y() -
height() < 0) {
4337 QTimer::singleShot(10,
this, SLOT(
update_img()));
4360 QList <QPixmap*>pix_list;
4367 struct canvas *unit_pixmap;
4390 if (
h_pix !=
nullptr) {
4394 h_pix->fill(palette().
color(QPalette::HighlightedText));
4409 pix->fill(Qt::transparent);
4413 unit_pixmap->
map_pixmap.fill(Qt::transparent);
4417 cropped_img =
img.copy(crop);
4421 Qt::KeepAspectRatio,
4422 Qt::SmoothTransformation);
4426 Qt::KeepAspectRatio,
4427 Qt::SmoothTransformation);
4429 pixc = QPixmap::fromImage(
img);
4430 pixp =
new QPixmap(pixc);
4431 pix_list.push_back(pixp);
4437 ufont.setPixelSize(a);
4439 pen.setColor(palette().
color(QPalette::Text));
4442 while (!pix_list.isEmpty()) {
4443 tmp_pix = pix_list.takeFirst();
4450 Q_ASSERT(
punit != NULL);
4453 p.drawPixmap(x, y, *
h_pix);
4454 p.drawPixmap(x, y, *tmp_pix);
4456 p.drawPixmap(x, y, *tmp_pix);
4471 str = QString(
_(
"MP:")) +
str;
4479 setFixedWidth(
pix->width() + 20);
4480 setFixedHeight(
pix->height() + 2 * (fm.height() + 6));
4481 qDeleteAll(pix_list.begin(), pix_list.end());
4493 QPoint
pos =
event->pos();
4499 if (x >
width() - 11
4500 || y >
height() - fm.height() - 5
4501 || y < fm.height() + 3 || x < 11) {
4505 b = (y - fm.height() - 3) /
item_size.height();
4522 if (
event->button() == Qt::RightButton) {
4564 if (point_size < 0) {
4565 f_size = &pixel_size;
4567 f_size = &point_size;
4576 str2 = QString(
_(
"%1 HP:%2/%3")).arg(QString(
astr_str(&addition)),
4581 str = QString(
PL_(
"%1 unit",
"%1 units",
4584 for (i = *f_size; i > 4; i--) {
4585 if (point_size < 0) {
4591 if (10 + qfm.horizontalAdvance(str2) <
width()) {
4597 painter->drawPixmap(10, h + 3, *
pix);
4598 pen.setColor(palette().
color(QPalette::Text));
4599 painter->setPen(pen);
4601 painter->drawText(10, h,
str);
4603 painter->drawText(10,
height() - 5, str2);
4608 float page_height = 3.0f / maxl;
4609 float page_start = (
static_cast<float>(
show_line)) / maxl;
4610 pen.setColor(palette().color(QPalette::HighlightedText));
4611 painter->setBrush(palette().color(QPalette::HighlightedText).darker());
4612 painter->setPen(palette().color(QPalette::HighlightedText).darker());
4613 painter->drawRect(
pix->width() + 10, h, 8, h +
pix->height());
4614 painter->setPen(pen);
4615 painter->drawRoundedRect(
pix->width() + 10,
4616 h + page_start *
pix->height(),
4617 8, h + page_height *
pix->height(), 2, 2);
4620 if (point_size < 0) {
4635 painter.begin(
this);
4660 if (
utile == NULL) {
4667 if (
utile !=
nullptr) {
4669 if (punit_list !=
nullptr) {
4688 gui()->mapview_wdg->setFocus();
4689 QWidget::closeEvent(
event);
4702 nr = qCeil(
static_cast<qreal
>(unit_list_size(
utile->
units)) / 4) - 3;
4703 if (
event->angleDelta().y() < 0) {
4721 if (
event->key() == Qt::Key_Escape) {
4726 QWidget::keyPressEvent(
event);
4762 struct unit_list *potential_transports = unit_list_new();
4763#ifndef FREECIV_NDEBUG
4769 unit_list_append(potential_transports, ptransport);
4773 tcount = unit_list_size(potential_transports);
4777 unit_list_destroy(potential_transports);
4780 }
else if (tcount == 1) {
4782 fc_assert(unit_list_get(potential_transports, 0) == best_transport);
4785 unit_list_destroy(potential_transports);
4800 int attacker_hp,
int defender_hp,
4801 bool make_att_veteran,
bool make_def_veteran)
4803 if (
gui()->qt_settings.show_battle_log) {
4806 attacker_hp, defender_hp,
4809 gui()->battlelog_wdg->scale,
4810 gui()->battlelog_wdg);
4812 gui()->battlelog_wdg->add_combat_info(huc);
4813 gui()->battlelog_wdg->show();
const char * action_prepare_ui_name(action_id act_id, const char *mnemonic, const struct act_prob prob, const char *custom)
bool action_prob_possible(const struct act_prob probability)
static struct action * action_by_number(action_id act_id)
#define action_iterate_end
#define action_id_get_actor_kind(act_id)
#define action_iterate(_act_)
#define action_id_get_target_kind(act_id)
void astr_free(struct astring *astr)
void astr_set(struct astring *astr, const char *format,...)
static const char * astr_str(const struct astring *astr) fc__attribute((nonnull(1)))
void audio_restart(const char *soundset_name, const char *musicset_name)
QRect zealous_crop_rect(QImage &p)
void qtg_canvas_free(struct canvas *store)
struct canvas * qtg_canvas_create(int width, int height)
struct canvas int int struct sprite int int int int height
struct canvas int int struct sprite int int int width
void output_window_append(const struct ft_color color, const char *featured_text)
const char * city_improvement_name_translation(const struct city *pcity, const struct impr_type *pimprove)
const char * city_name_get(const struct city *pcity)
#define INCITE_IMPOSSIBLE_COST
#define city_owner(_pcity_)
#define city_built_iterate(_pcity, _p)
#define city_built_iterate_end
void qtg_real_city_dialog_popup(struct city *pcity)
void stack_button(Choice_dialog_button *button)
struct unit * targeted_unit
void unstack_all_buttons()
Choice_dialog_button * get_identified_button(const int id)
QPushButton * target_unit_button
void update_dialog(const struct act_prob *act_probs)
QList< Choice_dialog_button * > last_buttons_stack
choice_dialog(const QString title, const QString text, QWidget *parent=NULL, void(*run_on_close_in)(int)=NULL)
QVBoxLayout * get_layout()
QList< Choice_dialog_button * > buttons_list
void(* run_on_close)(int)
QList< Choice_dialog_button * > action_button_map
int sub_target_id[ASTK_COUNT]
void execute_action(const int action)
void add_item(QString title, pfcn_void func, QVariant data1, QVariant data2, QString tool_tip, const int button_id)
disband_box(struct unit_list *punits, QWidget *parent=0)
struct unit_list * cpunits
choice_dialog * opened_dialog
choice_dialog * get_diplo_dialog()
void set_diplo_dialog(choice_dialog *widget)
static fc_font * instance()
QFont * get_font(QString name)
QPixmap * get_pixmap(const QString &id)
static fc_icons * instance()
int set_text_title(QString s1, QString s2, bool return_exec=false)
void mouseReleaseEvent(QMouseEvent *event)
notify_dialog(const char *caption, const char *headline, const char *lines, QWidget *parent=0)
void calc_size(int &x, int &y)
void paintEvent(QPaintEvent *paint_event)
void mouseMoveEvent(QMouseEvent *event)
virtual void update_menu()
void mousePressEvent(QMouseEvent *event)
notify_goto(const char *headline, const char *lines, const struct text_tag_list *tags, struct tile *ptile, QWidget *parent)
QPushButton * inspect_but
static qdef_act * action()
static qdef_act * m_instance
void paintEvent(QPaintEvent *event)
void mouseMoveEvent(QMouseEvent *event)
void mousePressEvent(QMouseEvent *event)
void mouseReleaseEvent(QMouseEvent *event)
qfc_dialog(QWidget *parent)
void style_selected(const QItemSelection &sl, const QItemSelection &ds)
QTableWidget * selected_nation_tabs
QPushButton * random_button
void nation_selected(const QItemSelection &sl, const QItemSelection &ds)
void nationset_changed(int index)
void leader_selected(int index)
void group_selected(const QItemSelection &sl, const QItemSelection &ds)
void set_index(int index)
QButtonGroup * sex_buttons
void update_nationset_combo()
races_dialog(struct player *pplayer, QWidget *parent=0)
QTableWidget * nation_tabs
QGridLayout * main_layout
void closeEvent(QCloseEvent *event)
void mouseMoveEvent(QMouseEvent *event)
void paint(QPainter *painter, QPaintEvent *event)
QList< unit * > unit_list
units_select(struct tile *ptile, QWidget *parent)
void paintEvent(QPaintEvent *event)
void wheelEvent(QWheelEvent *event)
void keyPressEvent(QKeyEvent *event)
void mousePressEvent(QMouseEvent *event)
bool client_is_global_observer(void)
enum client_states client_state(void)
void client_unit_init_act_prob_cache(struct unit *punit)
void action_selection_no_longer_in_progress(const int old_actor_id)
void request_unit_load(struct unit *pcargo, struct unit *ptrans, struct tile *ptile)
void unit_focus_set(struct unit *punit)
void request_do_action(action_id action, int actor_id, int target_id, int sub_tgt, const char *name)
void request_unit_disband(struct unit *punit)
void request_action_details(action_id action, int actor_id, int target_id)
void request_new_unit_activity_targeted(struct unit *punit, enum unit_activity act, struct extra_type *tgt)
void action_decision_clear_want(const int old_actor_id)
struct unit * head_of_units_in_focus(void)
void request_unit_upgrade(struct unit *punit)
void action_selection_next_in_focus(const int old_actor_id)
bool qtg_handmade_scenario_warning()
static void attack(QVariant data1, QVariant data2)
char forced_tileset_name[512]
int action_selection_target_extra(void)
static void destroy_city(QVariant data1, QVariant data2)
static void spy_sabotage_unit(QVariant data1, QVariant data2)
static void pillage(QVariant data1, QVariant data2)
static void caravan_marketplace(QVariant data1, QVariant data2)
static void clean_pollution(QVariant data1, QVariant data2)
static void spy_steal_shared(QVariant data1, QVariant data2, action_id act_id)
static void clean_fallout(QVariant data1, QVariant data2)
static void spy_sabotage(QVariant data1, QVariant data2)
int action_selection_target_tile(void)
static void spy_investigate(QVariant data1, QVariant data2)
static void act_sel_wait(QVariant data1, QVariant data2)
static void nuke_units(QVariant data1, QVariant data2)
int action_selection_actor_unit(void)
static void capture_units(QVariant data1, QVariant data2)
static void road(QVariant data1, QVariant data2)
static bool is_race_dialog_open
bool try_default_unit_action(QVariant q1, QVariant q2)
static void fortify(QVariant data1, QVariant data2)
static void transport_board(QVariant data1, QVariant data2)
static void spy_sabotage_unit_esc(QVariant data1, QVariant data2)
static void disband_unit(QVariant data1, QVariant data2)
static void spy_steal_gold(QVariant data1, QVariant data2)
void popdown_players_report()
static void mine(QVariant data1, QVariant data2)
void popup_musicset_suggestion_dialog(void)
static void spy_steal_gold_esc(QVariant data1, QVariant data2)
static void diplomat_embassy(QVariant data1, QVariant data2)
void unit_select_dialog_popup(struct tile *ptile)
void popup_upgrade_dialog(struct unit_list *punits)
void update_nationset_combo()
void action_selection_close(void)
static void cultivate(QVariant data1, QVariant data2)
static void paradrop_enter(QVariant data1, QVariant data2)
void races_update_pickable(bool nationset_change)
int action_selection_target_city(void)
static void spy_steal_something(QVariant data1, QVariant data2)
void popup_notify_goto_dialog(const char *headline, const char *lines, const struct text_tag_list *tags, struct tile *ptile)
static void spy_poison(QVariant data1, QVariant data2)
void show_tech_gained_dialog(Tech_type_id tech)
static void base(QVariant data1, QVariant data2)
static void spy_nuke_city_esc(QVariant data1, QVariant data2)
void popup_soundset_suggestion_dialog(void)
static void enter_hut2(QVariant data1, QVariant data2)
void popup_races_dialog(struct player *pplayer)
static void expel_unit(QVariant data1, QVariant data2)
static void paradrop_frighten(QVariant data1, QVariant data2)
static void diplomat_sabotage(QVariant data1, QVariant data2)
void popup_disband_dialog(struct unit_list *punits)
static action_id get_non_targeted_action_id(action_id tgt_action_id)
static void homeless(QVariant data1, QVariant data2)
static void caravan_help_build(QVariant data1, QVariant data2)
static void bombard(QVariant data1, QVariant data2)
void popdown_races_dialog(void)
void popup_tileset_suggestion_dialog(void)
static void conquer_city(QVariant data1, QVariant data2)
void revolution_response(struct government *gov)
void popdown_economy_report()
static void join_city(QVariant data1, QVariant data2)
static void spy_request_sabotage_list(QVariant data1, QVariant data2)
static void diplomat_bribe(QVariant data1, QVariant data2)
static void unit_disband_recover(QVariant data1, QVariant data2)
static void spy_steal(QVariant data1, QVariant data2)
static void airlift(QVariant data1, QVariant data2)
void popup_pillage_dialog(struct unit *punit, bv_extras extras)
void popup_sabotage_dialog(struct unit *actor, struct city *tcity, const struct action *paction)
static void transport_alight(QVariant data1, QVariant data2)
static void plant(QVariant data1, QVariant data2)
static void nuke(QVariant data1, QVariant data2)
static void disembark2(QVariant data1, QVariant data2)
static void transport_unload(QVariant data1, QVariant data2)
void action_selection_refresh(struct unit *actor_unit, struct city *target_city, struct unit *target_unit, struct tile *target_tile, struct extra_type *target_extra, const struct act_prob *act_probs)
void popdown_science_report()
static void diplomat_steal(QVariant data1, QVariant data2)
static void unit_upgrade(QVariant data1, QVariant data2)
bool popup_theme_suggestion_dialog(const char *theme_name)
static void enter_hut(QVariant data1, QVariant data2)
static void spy_request_strike_bld_list(QVariant data1, QVariant data2)
static void diplomat_incite_escape(QVariant data1, QVariant data2)
static void found_city(QVariant data1, QVariant data2)
static void diplomat_investigate(QVariant data1, QVariant data2)
void qtg_popup_combat_info(int attacker_unit_id, int defender_unit_id, int attacker_hp, int defender_hp, bool make_att_veteran, bool make_def_veteran)
static void bombard3(QVariant data1, QVariant data2)
static void diplomat_incite(QVariant data1, QVariant data2)
static void paradrop_conquer(QVariant data1, QVariant data2)
void popdown_endgame_report()
static void diplomat_steal_esc(QVariant data1, QVariant data2)
static bool is_more_user_input_needed
static void bombard2(QVariant data1, QVariant data2)
void popup_incite_dialog(struct unit *actor, struct city *tcity, int cost, const struct action *paction)
static const QHash< action_id, pfcn_void > af_map_init(void)
void popdown_all_spaceships_dialogs()
static void nuke_city(QVariant data1, QVariant data2)
void popup_connect_msg(const char *headline, const char *message)
static void diplomat_sabotage_esc(QVariant data1, QVariant data2)
void popdown_units_report()
static void transport_embark2(QVariant data1, QVariant data2)
static void spy_nuke_city(QVariant data1, QVariant data2)
void unit_select_dialog_update_real(void *unused)
static void spy_steal_esc(QVariant data1, QVariant data2)
static void paradrop(QVariant data1, QVariant data2)
static void suicide_attack(QVariant data1, QVariant data2)
void races_toggles_set_sensitive(void)
static action_id get_production_targeted_action_id(action_id tgt_action_id)
static void paradrop_frighten_conquer(QVariant data1, QVariant data2)
static void convert_unit(QVariant data1, QVariant data2)
static bool did_not_decide
static void spy_poison_esc(QVariant data1, QVariant data2)
static void pillage_something(QVariant data1, QVariant data2)
static void spy_request_sabotage_esc_list(QVariant data1, QVariant data2)
static void transform_terrain(QVariant data1, QVariant data2)
static void conquer_extras(QVariant data1, QVariant data2)
static void regular_move(QVariant data1, QVariant data2)
static void heal_unit2(QVariant data1, QVariant data2)
static void spy_embassy(QVariant data1, QVariant data2)
static races_dialog * race_dialog
static void frighten_hut2(QVariant data1, QVariant data2)
static void conquer_city2(QVariant data1, QVariant data2)
static void conquer_extras2(QVariant data1, QVariant data2)
static void frighten_hut(QVariant data1, QVariant data2)
bool qtg_request_transport(struct unit *pcargo, struct tile *ptile)
int action_selection_target_unit(void)
static void irrigate(QVariant data1, QVariant data2)
static void transport_embark3(QVariant data1, QVariant data2)
static void heal_unit(QVariant data1, QVariant data2)
void popdown_city_report()
static void paradrop_enter_conquer(QVariant data1, QVariant data2)
static void unit_home_city(QVariant data1, QVariant data2)
static void transport_embark(QVariant data1, QVariant data2)
bool try_default_city_action(QVariant q1, QVariant q2)
static void keep_moving(QVariant data1, QVariant data2)
static void spy_steal_maps_esc(QVariant data1, QVariant data2)
static void action_entry_update(Choice_dialog_button *button, action_id act, const struct act_prob *act_probs, const char *custom, QVariant data1, QVariant data2)
static void disembark1(QVariant data1, QVariant data2)
void restart_notify_dialogs()
static bool is_showing_pillage_dialog
static void action_entry(choice_dialog *cd, action_id act, const struct act_prob *act_probs, const char *custom, QVariant data1, QVariant data2)
static const QHash< action_id, pfcn_void > af_map
static void caravan_establish_trade(QVariant data1, QVariant data2)
void popdown_all_game_dialogs(void)
static void spy_steal_maps(QVariant data1, QVariant data2)
struct unit struct city struct unit * target_unit
struct unit struct city struct unit struct tile struct extra_type const struct act_prob *act_probs int actor_unit_id struct unit struct unit int const struct action *paction show_tileset_error
struct unit struct city struct unit struct tile struct extra_type const struct act_prob *act_probs int actor_unit_id popup_bribe_dialog
struct unit struct city struct unit struct tile struct extra_type const struct act_prob *act_probs int actor_unit_id struct unit * actor
struct unit struct city struct unit struct tile struct extra_type const struct act_prob *act_probs action_selection_no_longer_in_progress_gui_specific
const char const char * headline
struct unit struct city struct unit struct tile struct extra_type const struct act_prob *act_probs int actor_unit_id struct unit struct unit int const struct action *paction bool fatal
struct unit struct city struct unit struct tile * target_tile
struct unit struct city struct unit struct tile struct extra_type const struct act_prob *act_probs int actor_unit_id struct unit struct unit * punit
struct unit struct city * target_city
struct unit struct city struct unit struct tile struct extra_type const struct act_prob *act_probs int actor_unit_id struct unit struct unit int cost
struct unit struct city struct unit struct tile struct extra_type * target_extra
struct unit struct city struct unit struct tile struct extra_type const struct act_prob *act_probs int actor_unit_id struct unit struct unit int const struct action *paction bool const char * tset_name
#define IDENTITY_NUMBER_ZERO
#define PL_(String1, String2, n)
const struct ft_color ftc_client
struct unit * game_unit_by_number(int id)
struct city * game_city_by_number(int id)
struct government * government_by_number(const Government_type_id gov)
Government_type_id government_number(const struct government *pgovern)
int action_selection_target_extra(void)
static void diplomat_queue_handle_primary(void)
static void diplomat_queue_handle_secondary(void)
void action_selection_refresh(struct unit *actor_unit, struct city *target_city, struct unit *target_unit, struct tile *target_tile, struct extra_type *target_extra, const struct act_prob *act_probs)
void popdown_help_dialog(void)
void(* pfcn_void)(QVariant, QVariant)
#define CAPTURE_DEFAULT_THIS
void nationset_changed(void)
void popup_revolution_dialog(void)
void helptext_nation(char *buf, size_t bufsz, struct nation_type *pnation, const char *user_text)
Impr_type_id improvement_number(const struct impr_type *pimprove)
#define fc_assert_msg(condition, message,...)
#define fc_assert(condition)
#define fc_assert_action(condition, action)
struct tile * index_to_tile(const struct civ_map *imap, int mindex)
void put_unit(const struct unit *punit, struct canvas *pcanvas, float zoom, int canvas_x, int canvas_y)
void center_tile_mapcanvas(const struct tile *ptile)
const char * move_points_text(int mp, bool reduce)
const char *const notify_label
Nation_type_id nation_number(const struct nation_type *pnation)
bool nation_leader_is_male(const struct nation_leader *pleader)
const char * nation_adjective_for_player(const struct player *pplayer)
const char * nation_adjective_translation(const struct nation_type *pnation)
struct nation_type * nation_by_number(const Nation_type_id nation)
int nation_set_index(const struct nation_set *pset)
bool is_nation_pickable(const struct nation_type *nation)
const struct nation_leader_list * nation_leaders(const struct nation_type *pnation)
const char * nation_set_name_translation(const struct nation_set *pset)
bool is_nation_playable(const struct nation_type *nation)
bool nation_is_in_group(const struct nation_type *pnation, const struct nation_group *pgroup)
const char * nation_set_description(const struct nation_set *pset)
const char * nation_group_name_translation(const struct nation_group *pgroup)
int nation_set_count(void)
struct nation_group * nation_group_by_number(int id)
struct nation_set * nation_set_by_rule_name(const char *name)
bool is_nation_group_hidden(struct nation_group *pgroup)
struct nation_set * nation_set_by_setting_value(const char *setting)
const char * nation_leader_name(const struct nation_leader *pleader)
int nation_group_count(void)
const char * nation_set_rule_name(const struct nation_set *pset)
struct nation_style * style_of_nation(const struct nation_type *pnation)
#define nation_leader_list_iterate(leaderlist, pleader)
#define nation_sets_iterate_end
#define nation_sets_iterate(NAME_pset)
#define nations_iterate_end
#define nations_iterate(NAME_pnation)
#define nation_leader_list_iterate_end
const struct option_set * server_optset
bool option_str_set(struct option *poption, const char *str)
const char * option_str_get(const struct option *poption)
struct option * optset_option_by_name(const struct option_set *poptset, const char *name)
#define REQEST_PLAYER_INITIATED
int dsend_packet_nation_select_req(struct connection *pc, int player_no, Nation_type_id nation_no, bool is_male, const char *name, int style)
int dsend_packet_unit_get_actions(struct connection *pc, int actor_unit_id16, int actor_unit_id32, int target_unit_id16, int target_unit_id32, int target_tile_id, int target_extra_id, int request_kind)
int dsend_packet_city_name_suggestion_req(struct connection *pc, int unit_id16, int unit_id32)
void start_revolution(void)
void set_government_choice(struct government *government)
int player_number(const struct player *pplayer)
const char * research_advance_name_translation(const struct research *presearch, Tech_type_id tech)
struct research * research_get(const struct player *pplayer)
enum tech_state research_invention_state(const struct research *presearch, Tech_type_id tech)
bool research_invention_gettable(const struct research *presearch, const Tech_type_id tech, bool allow_holes)
struct packet_ruleset_control control
struct packet_game_info info
bool tech_steal_allow_holes
char preferred_soundset[MAX_LEN_NAME]
char preferred_tileset[MAX_LEN_NAME]
char preferred_musicset[MAX_LEN_NAME]
struct unit * autocaravan
struct unit::@80::@82 client
struct act_prob * act_prob_cache
const char * style_name_translation(const struct nation_style *pstyle)
int style_number(const struct nation_style *pstyle)
int basic_city_style_for_style(struct nation_style *pstyle)
#define styles_iterate(_p)
#define styles_iterate_end
int fc_snprintf(char *str, size_t n, const char *format,...)
#define sz_strlcpy(dest, src)
#define advance_index_iterate_end
#define advance_index_iterate(_start, _index)
struct extra_type * get_preferred_pillage(bv_extras extras)
bool get_units_upgrade_info(char *buf, size_t bufsz, struct unit_list *punits)
const char * get_act_sel_action_custom_text(struct action *paction, const struct act_prob prob, const struct unit *actor_unit, const struct city *target_city)
const char * act_sel_action_tool_tip(const struct action *paction, const struct act_prob prob)
struct city * tile_city(const struct tile *ptile)
int tileset_hex_width(const struct tileset *t)
int tileset_unit_width(const struct tileset *t)
int tileset_unit_height(const struct tileset *t)
bool tileset_is_isometric(const struct tileset *t)
struct sprite * get_sample_city_sprite(const struct tileset *t, int style_idx)
const char * tileset_basename(const struct tileset *t)
int tileset_hex_height(const struct tileset *t)
struct sprite * get_nation_flag_sprite(const struct tileset *t, const struct nation_type *pnation)
void tileset_error(enum log_level level, const char *tset_name, const char *format,...)
bool tilespec_reread(const char *new_tileset_name, bool game_fully_initialized, float scale)
struct unit * transporter_for_unit_at(const struct unit *pcargo, const struct tile *ptile)
bool could_unit_load(const struct unit *pcargo, const struct unit *ptrans)
bool unit_can_do_action(const struct unit *punit, const action_id act_id)
void unit_activity_astr(const struct unit *punit, struct astring *astr)
#define unit_list_iterate(unitlist, punit)
#define unit_list_iterate_end
const struct unit_type * unit_type_get(const struct unit *punit)
const char * unit_name_translation(const struct unit *punit)
#define utype_fuel(ptype)