19#include <QApplication>
20#include <QButtonGroup>
28#include <QPainterPath>
29#include <QRadioButton>
31#include <QTableWidgetItem>
71#define BUTTON_WAIT (ACTION_COUNT + 1)
72#define BUTTON_CANCEL (BUTTON_WAIT + 1)
73#define BUTTON_COUNT (BUTTON_CANCEL + 1)
433 QStyle *style = this->style();
438 qpal.setColor(QPalette::Active, QPalette::ToolTipText, Qt::white);
451 style->drawComplexControl(QStyle::CC_TitleBar, &
tbar_opt, &p,
this);
453 true,
tbar_opt.text, QPalette::ToolTipText);
454 style->drawItemPixmap(&p,
close_rect, Qt::AlignLeft,
459 win_opt.initFrom(
this);
461 style->drawPrimitive(QStyle::PE_Widget, &
win_opt, &p,
this);
524 styles =
new QTableWidget;
545 nation_tabs->setSelectionMode(QAbstractItemView::SingleSelection);
547 nation_tabs->horizontalHeader()->setVisible(
false);
549 nation_tabs->setEditTriggers(QAbstractItemView::NoEditTriggers);
553 styles->setColumnCount(2);
554 styles->setSelectionMode(QAbstractItemView::SingleSelection);
555 styles->verticalHeader()->setVisible(
false);
556 styles->horizontalHeader()->setVisible(
false);
557 styles->setProperty(
"showGrid",
"false");
558 styles->setProperty(
"selectionBehavior",
"SelectRows");
559 styles->setEditTriggers(QAbstractItemView::NoEditTriggers);
560 styles->setShowGrid(
false);
582 no_name->setTitle(
_(
"Your leader name"));
593 item->setData(Qt::DecorationRole, *pix);
595 size.setWidth(pix->width());
596 size.setHeight(pix->height());
605 header =
styles->horizontalHeader();
606 header->setSectionResizeMode(QHeaderView::Stretch);
607 header->resizeSections(QHeaderView::ResizeToContents);
608 header =
styles->verticalHeader();
609 header->resizeSections(QHeaderView::ResizeToContents);
617 connect(
styles->selectionModel(),
627 connect(
leader_name->lineEdit(), &QLineEdit::returnPressed,
665 }
else if (pplayer !=
nullptr && pplayer ==
client_player()) {
666 title =
_(
"What Nation Will You Be?");
698 item->setText(
_(
"All nations"));
699 item->setData(Qt::UserRole, -99);
722 item->setData(Qt::UserRole,
i - 1);
727 header->resizeSections(QHeaderView::Stretch);
729 header->resizeSections(QHeaderView::ResizeToContents);
787 index =
item->data(Qt::UserRole).toInt();
803 if (pnation->player) {
805 f.setStrikeOut(
true);
810 item->setData(Qt::DecorationRole, (*pix).scaledToHeight(50));
812 item->setData(Qt::DecorationRole, *pix);
821 header->resizeSections(QHeaderView::Stretch);
823 header->resizeSections(QHeaderView::ResizeToContents);
847 qvar = index.data(Qt::UserRole);
870 if (
item->data(Qt::UserRole) ==
qvar) {
890 qvar = index.data(Qt::UserRole);
934 _(
"Nation has been chosen by other player"));
973 gui()->mapview_wdg->find_place(
gui()->mapview_wdg->width() -
x - 4, 4,
991 for (
i = 0;
i <
qlist.size(); ++
i) {
994 if (
i <
qlist.size() - 1) {
1020 for (
i = 0;
i < str_list.count();
i++) {
1021 x =
qMax(
x,
fm.horizontalAdvance(str_list.at(
i)));
1022 y =
y + 3 +
fm.height();
1044 for (
i = 0;
i <
qlist.count();
i++) {
1057 if (
event->button() == Qt::RightButton) {
1208 qlines.replace(
"\n",
" ");
1212 connect(
close_but, &QAbstractButton::pressed,
this, &QWidget::close);
1247 rule_name =
qnation_set->currentData().toString();
1268 gui()->central_wdg);
1277 QMessageBox *msg =
new QMessageBox(
gui()->central_wdg);
1280 msg->setStandardButtons(QMessageBox::Ok);
1282 msg->setAttribute(Qt::WA_DeleteOnClose);
1293 gui()->mapview_wdg);
1327 if (ptile !=
nullptr
1330 gui()->toggle_unit_sel_widget(ptile);
1339 gui()->update_unit_sel();
1384 ask->setStandardButtons(QMessageBox::Cancel | QMessageBox::Ok);
1385 ask->setDefaultButton(QMessageBox::Cancel);
1386 ask->set_text_title(
_(
"You say you wanna revolution?"),
1388 ask->setAttribute(Qt::WA_DeleteOnClose);
1389 QObject::connect(
ask, &hud_message_box::accepted, [=]() {
1413 : QPushButton(
title)
1469 QLabel *
l =
new QLabel(text);
1479 gui()->set_diplo_dialog(
this);
1507 gui()->set_diplo_dialog(
nullptr);
1525 QPushButton *next, *prev;
1527 next =
new QPushButton();
1529 next->setIconSize(
QSize(32, 32));
1530 next->setFixedSize(
QSize(36, 36));
1531 prev =
new QPushButton();
1533 prev->setIconSize(
QSize(32, 32));
1534 prev->setFixedSize(
QSize(36, 36));
1545 unit_skip->addWidget(prev, Qt::AlignCenter);
1547 unit_skip->addWidget(next, Qt::AlignCenter);
1568 QObject::connect(button, &QPushButton::clicked,
1584 layout->addWidget(button);
1595 p.setY(p.y()-
this->height());
1596 p.setX(p.x()-
this->width());
1790 layout->removeWidget(button);
1807 layout->addWidget(button);
1817 int target_city_id = data2.toInt();
1822 target_city_id, 0,
"");
1832 int target_city_id = data2.toInt();
1837 target_city_id, 0,
"");
1861 int actor_id = data1.toInt();
1876 int actor_id = data1.toInt();
1893 int actor_id = data1.toInt();
1912 int actor_id = data1.toInt();
1927 int actor_id = data1.toInt();
1942 int actor_id = data1.toInt();
1957 int actor_id = data1.toInt();
1972 int actor_id = data1.toInt();
1987 int actor_id = data1.toInt();
1988 int target_id = data2.toInt();
1992 actor_id, target_id, 0,
"");
2001 int actor_id = data1.toInt();
2002 int target_id = data2.toInt();
2006 actor_id, target_id, 0,
"");
2015 int actor_id = data1.toInt();
2016 int target_id = data2.toInt();
2020 actor_id, target_id, 0,
"");
2029 int actor_id = data1.toInt();
2030 int target_id = data2.toInt();
2034 actor_id, target_id, 0,
"");
2151 foreach (
caras,
gui()->trade_gen.lines) {
2161 i =
gui()->trade_gen.lines.indexOf(
caras);
2162 gui()->trade_gen.lines.takeAt(
i);
2186 "Diplomat queue problem. Is another diplomat window open?");
2195 _(
"Choose Your %s's Strategy"),
2200 _(
"Your %s from %s reaches the city of %s.\nWhat now?"),
2206 _(
"Your %s has arrived at %s.\nWhat is your command?"),
2212 if (
owner !=
nullptr) {
2215 _(
"Your %s is ready to act against %s %s."),
2223 _(
"Your %s is ready to act against %s."),
2231 "No target specified.");
2235 _(
"Your %s is waiting for your command."),
2239 cd =
gui()->get_diplo_dialog();
2240 if ((
cd !=
nullptr) &&
cd->targeted_unit !=
nullptr) {
2245 gui()->game_tab_widget,
2474 if (!
af_map.contains(act)) {
2520 button->setText(
title);
2529 int actor_id = data1.toInt();
2530 int target_id = data2.toInt();
2541 int actor_id = data1.toInt();
2542 int target_id = data2.toInt();
2555 int actor_id = data1.toInt();
2556 int target_id = data2.toInt();
2569 int actor_id = data1.toInt();
2570 int target_id = data2.toInt();
2581 int actor_id = data1.toInt();
2582 int target_id = data2.toInt();
2654 int actor_id = data1.toInt();
2655 int target_id = data2.toInt();
2665 int actor_id = data1.toInt();
2666 int target_id = data2.toInt();
2676 int actor_id = data1.toInt();
2677 int target_id = data2.toInt();
2687 int actor_id = data1.toInt();
2688 int target_id = data2.toInt();
2698 int actor_id = data1.toInt();
2699 int target_id = data2.toInt();
2709 int actor_id = data1.toInt();
2710 int target_id = data2.toInt();
2720 int actor_id = data1.toInt();
2721 int target_id = data2.toInt();
2731 int actor_id = data1.toInt();
2732 int target_id = data2.toInt();
2742 int actor_id = data1.toInt();
2743 int target_id = data2.toInt();
2753 int actor_id = data1.toInt();
2754 int target_id = data2.toInt();
2764 int actor_id = data1.toInt();
2765 int target_id = data2.toInt();
2775 int actor_id = data1.toInt();
2776 int target_id = data2.toInt();
2786 int actor_id = data1.toInt();
2787 int target_id = data2.toInt();
2797 int actor_id = data1.toInt();
2798 int target_id = data2.toInt();
2808 int actor_id = data1.toInt();
2809 int target_id = data2.toInt();
2814 actor_id, target_id, 0,
"");
2823 int actor_id = data1.toInt();
2824 int target_id = data2.toInt();
2829 actor_id, target_id, 0,
"");
2838 int actor_id = data1.toInt();
2839 int target_id = data2.toInt();
2844 actor_id, target_id, 0,
"");
2853 int actor_id = data1.toInt();
2854 int target_id = data2.toInt();
2859 actor_id, target_id, 0,
"");
2868 int actor_id = data1.toInt();
2869 int target_id = data2.toInt();
2874 actor_id, target_id, 0,
"");
2883 int actor_id = data1.toInt();
2884 int target_id = data2.toInt();
2889 actor_id, target_id, 0,
"");
2898 int actor_id = data1.toInt();
2899 int target_id = data2.toInt();
2904 actor_id, target_id, 0,
"");
2913 int actor_id = data1.toInt();
2914 int target_id = data2.toInt();
2919 actor_id, target_id, 0,
"");
2928 int actor_id = data1.toInt();
2929 int target_id = data2.toInt();
2934 actor_id, target_id, 0,
"");
2943 int actor_id = data1.toInt();
2944 int target_id = data2.toInt();
2949 actor_id, target_id, 0,
"");
2958 int actor_id = data1.toInt();
2959 int target_id = data2.toInt();
2964 actor_id, target_id, 0,
"");
2973 int actor_id = data1.toInt();
2974 int target_id = data2.toInt();
2979 actor_id, target_id, 0,
"");
2988 int actor_id = data1.toInt();
2989 int target_id = data2.toInt();
3000 int actor_id = data1.toInt();
3001 int target_id = data2.toInt();
3012 int actor_id = data1.toInt();
3013 int target_id = data2.toInt();
3024 int actor_id = data1.toInt();
3025 int target_id = data2.toInt();
3036 int actor_id = data1.toInt();
3037 int target_id = data2.toInt();
3048 int actor_id = data1.toInt();
3049 int target_id = data2.toInt();
3060 int actor_id = data1.toInt();
3061 int target_id = data2.toInt();
3072 int actor_id = data1.toInt();
3073 int target_id = data2.toInt();
3084 int actor_id = data1.toInt();
3085 int target_id = data2.toInt();
3096 int actor_id = data1.toInt();
3097 int target_id = data2.toInt();
3108 int actor_id = data1.toInt();
3109 int target_id = data2.toInt();
3120 int actor_id = data1.toInt();
3121 int target_id = data2.toInt();
3132 int actor_id = data1.toInt();
3143 int actor_id = data1.toInt();
3144 int target_id = data2.toInt();
3149 actor_id, target_id, 0,
"");
3158 int actor_id = data1.toInt();
3159 int target_id = data2.toInt();
3164 actor_id, target_id, 0,
"");
3173 int actor_id = data1.toInt();
3174 int target_id = data2.toInt();
3179 actor_id, target_id, 0,
"");
3188 int actor_id = data1.toInt();
3189 int target_id = data2.toInt();
3194 actor_id, target_id, 0,
"");
3203 int actor_id = data1.toInt();
3204 int target_id = data2.toInt();
3209 actor_id, target_id, 0,
"");
3218 int actor_id = data1.toInt();
3219 int target_id = data2.toInt();
3224 actor_id, target_id, 0,
"");
3233 int actor_id = data1.toInt();
3234 int target_id = data2.toInt();
3239 actor_id, target_id,
3253 int actor_id = data1.toInt();
3254 int target_id = data2.toInt();
3259 actor_id, target_id,
3273 int actor_id = data1.toInt();
3274 int target_id = data2.toInt();
3279 actor_id, target_id,
3293 int actor_id = data1.toInt();
3294 int target_id = data2.toInt();
3299 actor_id, target_id,
3313 int actor_id = data1.toInt();
3314 int target_id = data2.toInt();
3320 actor_id, target_id,
3334 int actor_id = data1.toInt();
3335 int target_id = data2.toInt();
3341 actor_id, target_id,
3355 int actor_id = data1.toInt();
3356 int target_id = data2.toInt();
3362 actor_id, target_id,
3376 int actor_id = data1.toInt();
3377 int target_id = data2.toInt();
3383 actor_id, target_id,
3397 int actor_id = data1.toInt();
3398 int target_id = data2.toInt();
3404 actor_id, target_id,
3418 int actor_id = data1.toInt();
3419 int target_id = data2.toInt();
3425 actor_id, target_id,
3439 int actor_id = data1.toInt();
3440 int target_id = data2.toInt();
3446 actor_id, target_id,
3460 int actor_id = data1.toInt();
3461 int target_id = data2.toInt();
3467 actor_id, target_id,
3556 int actor_id = data1.toInt();
3557 int target_id = data2.toInt();
3562 actor_id, target_id, 0,
"");
3571 int actor_id = data1.toInt();
3572 int target_id = data2.toInt();
3577 actor_id, target_id, 0,
"");
3586 int actor_id = data1.toInt();
3587 int target_id = data2.toInt();
3592 actor_id, target_id, 0,
"");
3601 int actor_id = data1.toInt();
3602 int target_id = data2.toInt();
3607 actor_id, target_id, 0,
"");
3616 int actor_id = data1.toInt();
3617 int target_id = data2.toInt();
3622 actor_id, target_id, 0,
"");
3631 int actor_id = data1.toInt();
3632 int target_id = data2.toInt();
3637 actor_id, target_id, 0,
"");
3646 int actor_id = data1.toInt();
3647 int target_id = data2.toInt();
3652 actor_id, target_id, 0,
"");
3661 int actor_id = data1.toInt();
3662 int target_id = data2.toInt();
3667 actor_id, target_id, 0,
"");
3676 int actor_id = data1.toInt();
3677 int target_id = data2.toInt();
3682 actor_id, target_id, 0,
"");
3691 int actor_id = data1.toInt();
3692 int target_id = data2.toInt();
3697 actor_id, target_id, 0,
"");
3706 int actor_id = data1.toInt();
3707 int target_id = data2.toInt();
3712 actor_id, target_id, 0,
"");
3721 int actor_id = data1.toInt();
3722 int target_id = data2.toInt();
3727 actor_id, target_id, 0,
"");
3736 int actor_id = data1.toInt();
3737 int target_id = data2.toInt();
3742 actor_id, target_id, 0,
"");
3751 int actor_id = data1.toInt();
3752 int target_id = data2.toInt();
3757 actor_id, target_id, 0,
"");
3766 int actor_id = data1.toInt();
3767 int target_id = data2.toInt();
3772 actor_id, target_id, 0,
"");
3793 cd =
gui()->get_diplo_dialog();
3794 if (
cd !=
nullptr) {
3809 gui()->game_tab_widget,
3830 .replace(
"&",
"&&");
3873 action_id act_id = data1.toList().at(2).toInt();
3877 if (data2.toInt() ==
A_UNSET) {
3894 int actor_id = data1.toInt();
3895 int target_id = data2.toInt();
4023 int actor_id = data1.toInt();
4024 int target_id = data2.toInt();
4029 actor_id, target_id, 0,
"");
4284 int actor_id = data1.toInt();
4285 int target_id = data2.toInt();
4290 actor_id, target_id, 0,
"");
4299 int actor_id = data1.toInt();
4300 int target_id = data2.toInt();
4305 actor_id, target_id, 0,
"");
4314 int actor_id = data1.toInt();
4315 int target_id = data2.toInt();
4320 actor_id, target_id, 0,
"");
4335 const int act_id =
paction->id;
4341 "Treasury contains %d gold.",
4351 impossible->setStandardButtons(QMessageBox::Ok);
4352 impossible->setAttribute(Qt::WA_DeleteOnClose);
4358 PL_(
"Incite a revolt for %d gold?\n%s",
4359 "Incite a revolt for %d gold?\n%s",
cost),
cost,
buf);
4360 ask->setStandardButtons(QMessageBox::Cancel | QMessageBox::Ok);
4361 ask->setDefaultButton(QMessageBox::Cancel);
4362 ask->set_text_title(
buf2,
_(
"Incite a Revolt!"));
4363 ask->setAttribute(Qt::WA_DeleteOnClose);
4364 QObject::connect(
ask, &hud_message_box::accepted, [=]() {
4374 PL_(
"Inciting a revolt costs %d gold.\n%s",
4375 "Inciting a revolt costs %d gold.\n%s",
cost),
cost,
4378 too_much->setStandardButtons(QMessageBox::Ok);
4379 too_much->setAttribute(Qt::WA_DeleteOnClose);
4398 const int act_id =
paction->id;
4404 "Treasury contains %d gold.",
4410 "Bribe unit for %d gold?\n%s",
4412 ask->set_text_title(
buf2,
_(
"Bribe Enemy Unit"));
4413 ask->setStandardButtons(QMessageBox::Cancel | QMessageBox::Ok);
4414 ask->setDefaultButton(QMessageBox::Cancel);
4415 ask->setAttribute(Qt::WA_DeleteOnClose);
4416 QObject::connect(
ask, &hud_message_box::accepted, [=]() {
4424 PL_(
"Bribing the unit costs %d gold.\n%s",
4425 "Bribing the unit costs %d gold.\n%s",
cost),
cost,
buf);
4426 ask->set_text_title(
buf2,
_(
"Traitors Demand Too Much!"));
4427 ask->setAttribute(Qt::WA_DeleteOnClose);
4446 const int act_id =
paction->id;
4452 "Treasury contains %d gold.",
4458 "Bribe unit stack for %d gold?\n%s",
4460 ask->set_text_title(
buf2,
_(
"Bribe Enemy Stack"));
4461 ask->setStandardButtons(QMessageBox::Cancel | QMessageBox::Ok);
4462 ask->setDefaultButton(QMessageBox::Cancel);
4463 ask->setAttribute(Qt::WA_DeleteOnClose);
4464 QObject::connect(
ask, &hud_message_box::accepted, [=]() {
4472 PL_(
"Bribing the unit stack costs %d gold.\n%s",
4473 "Bribing the unit stack costs %d gold.\n%s",
cost),
cost,
buf);
4474 ask->set_text_title(
buf2,
_(
"Traitors Demand Too Much!"));
4475 ask->setAttribute(Qt::WA_DeleteOnClose);
4492 what = data1.toInt();
4509 action_id act_id = data1.toList().at(2).toInt();
4513 if (data2.toInt() ==
B_LAST) {
4518 }
else if (data2.toInt() == -1) {
4550 _(
"Select Improvement to Strike"),
4551 gui()->game_tab_widget,
4555 _(
"Select Improvement to Sabotage"),
4556 gui()->game_tab_widget,
4578 if (pimprove->sabotage > 0) {
4582 .replace(
"&",
"&&");
4619 gui()->game_tab_widget);
4653 str =
QString(
PL_(
"Are you sure you want to disband that %1 unit?",
4654 "Are you sure you want to disband those %1 units?",
4704 text =
QString(
"It might not work with other tilesets.\n"
4705 "You are currently using tileset %1.")
4707 ask->addButton(
_(
"Keep current tileset"), QMessageBox::RejectRole);
4708 ask->addButton(
_(
"Load tileset"), QMessageBox::AcceptRole);
4710 ask->setAttribute(Qt::WA_DeleteOnClose);
4712 QObject::connect(
ask, &hud_message_box::accepted, [=]() {
4715 gui()->map_scale)) {
4717 _(
"Can't load requested tileset."));
4735 text =
QString(
"It might not work with other tilesets.\n"
4736 "You are currently using soundset %1.")
4738 ask->addButton(
_(
"Keep current soundset"), QMessageBox::RejectRole);
4739 ask->addButton(
_(
"Load soundset"), QMessageBox::AcceptRole);
4741 ask->setAttribute(Qt::WA_DeleteOnClose);
4742 QObject::connect(
ask, &hud_message_box::accepted, [=]() {
4760 text =
QString(
"It might not work with other tilesets.\n"
4761 "You are currently using musicset %1.")
4763 ask->addButton(
_(
"Keep current musicset"), QMessageBox::RejectRole);
4764 ask->addButton(
_(
"Load musicset"), QMessageBox::AcceptRole);
4766 ask->setAttribute(Qt::WA_DeleteOnClose);
4767 QObject::connect(
ask, &hud_message_box::accepted, [=]() {
4809 QApplication::alert(
gui()->central_wdg);
4827 gui()->popdown_unit_sel();
4831 if (gtd !=
nullptr) {
4845 if (
cd !=
nullptr) {
4862 if (
cd !=
nullptr) {
4879 if (
cd !=
nullptr) {
4896 if (
cd !=
nullptr) {
4913 if (
cd !=
nullptr) {
4935 asd =
gui()->get_diplo_dialog();
4936 if (
asd ==
nullptr) {
4938 "The action selection dialog should have been open");
4944 "The action selection dialog is for another actor unit.");
4951 if (cancel_button !=
nullptr) {
4954 asd->stack_button(cancel_button);
4985 "Action enabled against non existing unit!");
4996 "Action enabled against non existing city!");
5009 "Action enabled against all units on "
5010 "non existing tile!");
5024 if (
asd->get_identified_button(act)) {
5036 if (
wait_button !=
nullptr || cancel_button !=
nullptr) {
5039 asd->unstack_all_buttons();
5050 cd =
gui()->get_diplo_dialog();
5051 if (
cd !=
nullptr) {
5078 if (
std_gui !=
nullptr || fatal) {
5080 QMessageBox *
ask =
new QMessageBox(
parent);
5084 _(
"Tileset \"%s\" problem, it's probably incompatible with "
5088 _(
"Tileset problem, it's probably incompatible with "
5089 "the ruleset:\n%s"), msg);
5093 ask->setStandardButtons(QMessageBox::Ok);
5094 ask->setWindowTitle(
_(
"Tileset error"));
5096 if (
std_gui !=
nullptr && !fatal) {
5097 ask->setAttribute(Qt::WA_DeleteOnClose);
5127 title =
_(
"Upgrade Unit!");
5128 ask->setStandardButtons(QMessageBox::Ok);
5130 title =
_(
"Upgrade Obsolete Units");
5131 ask->setStandardButtons(QMessageBox::Cancel | QMessageBox::Ok);
5132 ask->setDefaultButton(QMessageBox::Cancel);
5135 ask->setAttribute(Qt::WA_DeleteOnClose);
5136 QObject::connect(
ask, &hud_message_box::accepted, [=]() {
5140 for (
int id : *
uptr) {
5162 ufont.setItalic(
true);
5175 if (p.y() -
height() < 0) {
5216 if (
pix !=
nullptr) {
5235 if (
h_pix !=
nullptr) {
5254 pix->fill(Qt::transparent);
5266 Qt::KeepAspectRatio,
5267 Qt::SmoothTransformation);
5271 Qt::KeepAspectRatio,
5272 Qt::SmoothTransformation);
5274 pixc = QPixmap::fromImage(
img);
5282 ufont.setPixelSize(a);
5346 ||
y <
fm.height() + 3 ||
x < 11) {
5367 if (
event->button() == Qt::RightButton) {
5441 if (
pix !=
nullptr) {
5455 pen.setColor(
palette().color(QPalette::HighlightedText));
5456 painter->setBrush(
palette().color(QPalette::HighlightedText).darker());
5457 painter->setPen(
palette().color(QPalette::HighlightedText).darker());
5458 painter->drawRect(
pix->width() + 10, h, 8, h +
pix->height());
5505 if (
utile ==
nullptr) {
5512 if (
utile !=
nullptr) {
5533 gui()->mapview_wdg->setFocus();
5534 QWidget::closeEvent(
event);
5548 if (
event->angleDelta().y() < 0) {
5566 if (
event->key() == Qt::Key_Escape) {
5571 QWidget::keyPressEvent(
event);
5608#ifndef FREECIV_NDEBUG
5625 }
else if (
tcount == 1) {
5645 int attacker_hp,
int defender_hp,
5646 bool make_att_veteran,
bool make_def_veteran)
5648 if (
gui()->qt_settings.show_battle_log) {
5651 attacker_hp, defender_hp,
5654 gui()->battlelog_wdg->scale,
5655 gui()->battlelog_wdg);
5657 gui()->battlelog_wdg->add_combat_info(
huc);
5658 gui()->battlelog_wdg->show();
5670 ask->setStandardButtons(QMessageBox::Cancel | QMessageBox::Ok);
5671 ask->setDefaultButton(QMessageBox::Cancel);
5673 ask->setAttribute(Qt::WA_DeleteOnClose);
5674 QObject::connect(
ask, &hud_message_box::accepted, [=]() {
5677 QObject::connect(
ask, &hud_message_box::rejected, [=]() {
5692 hdr =
QString(
_(
"Are you sure you want to do %1?")).
5695 if (
expl !=
nullptr) {
5709 if (
spr !=
nullptr) {
5710 QDialog *win =
new QDialog(
gui());
5713 QLabel *
lbl =
new QLabel;
5718 lbl->setPixmap(*
pm);
5726 log_error(
_(
"No image for tag \"%s\", requested by the server."), tag);
const char * action_prepare_ui_name(action_id act_id, const char *mnemonic, const struct act_prob prob, const char *custom)
const char * action_id_name_translation(action_id act_id)
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
QVBoxLayout * get_layout()
QList< Choice_dialog_button * > buttons_list
void(* run_on_close)(int)
choice_dialog(const QString title, const QString text, QWidget *parent=nullptr, void(*run_on_close_in)(int)=nullptr)
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)
QTableWidget * selected_nation_tabs
QPushButton * random_button
void style_selected(const QItemSelection &selected)
void nationset_changed(int index)
void leader_selected(int index)
void set_index(int index)
QButtonGroup * sex_buttons
void update_nationset_combo()
void group_selected(const QItemSelection &selected)
races_dialog(struct player *pplayer, QWidget *parent=0)
QTableWidget * nation_tabs
QGridLayout * main_layout
void nation_selected(const QItemSelection &selected)
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_confirmation(struct act_confirmation_data *data, bool confirm)
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 mine2(QVariant data1, QVariant data2)
static void attack(QVariant data1, QVariant data2)
static void wipe_units(QVariant data1, QVariant data2)
char forced_tileset_name[512]
static void bombard4(QVariant data1, QVariant data2)
int action_selection_target_extra(void)
static void suicide_attack2(QVariant data1, QVariant data2)
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(QVariant data1, QVariant data2)
static void spy_steal_shared(QVariant data1, QVariant data2, action_id act_id)
static void clean2(QVariant data1, QVariant data2)
static void spy_sabotage(QVariant data1, QVariant data2)
int action_selection_target_tile(void)
static void teleport_enter(QVariant data1, QVariant data2)
static void conquer_extras3(QVariant data1, QVariant data2)
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
static void transport_embark4(QVariant data1, QVariant data2)
bool try_default_unit_action(QVariant q1, QVariant q2)
static void fortify(QVariant data1, QVariant data2)
static void teleport_frighten(QVariant data1, QVariant data2)
static void transport_board(QVariant data1, QVariant data2)
static void diplomat_bribe_unit(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 conquer_city_shrink2(QVariant data1, QVariant data2)
static void spy_escape(QVariant data1, QVariant data2)
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)
static void transport_board2(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)
static void teleport(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 road2(QVariant data1, QVariant data2)
static void homeless(QVariant data1, QVariant data2)
static void caravan_help_build(QVariant data1, QVariant data2)
void qtg_popup_image(const char *tag)
static void bombard(QVariant data1, QVariant data2)
void popup_bribe_stack_dialog(struct unit *actor, struct tile *ttile, int cost, const struct action *paction)
void popdown_races_dialog(void)
void popup_tileset_suggestion_dialog(void)
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 popup_act_confirmation_dialog(QString hdr, QString body, struct act_confirmation_data *data)
static void unit_disband_recover(QVariant data1, QVariant data2)
static void spy_steal(QVariant data1, QVariant data2)
static void conquer_extras4(QVariant data1, QVariant data2)
static void frighten_hut4(QVariant data1, QVariant data2)
static void airlift(QVariant data1, QVariant data2)
void popup_pillage_dialog(struct unit *punit, bv_extras extras)
static void enter_hut3(QVariant data1, QVariant data2)
static void transport_load3(QVariant data1, QVariant data2)
static void spy_attack(QVariant data1, QVariant data2)
static void bombard_lethal(QVariant data1, QVariant data2)
static void plant(QVariant data1, QVariant data2)
static void diplomat_bribe_stack(QVariant data1, QVariant data2)
static void nuke(QVariant data1, QVariant data2)
static void disembark2(QVariant data1, QVariant data2)
static void plant2(QVariant data1, QVariant data2)
static void transport_unload(QVariant data1, QVariant data2)
void qtg_request_action_confirmation(const char *expl, struct act_confirmation_data *data)
static void teleport_conquer(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 transport_load2(QVariant data1, QVariant data2)
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 pillage2(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 transport_deboard(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 void irrigate2(QVariant data1, QVariant data2)
static void cultivate2(QVariant data1, QVariant data2)
static void bombard_lethal2(QVariant data1, QVariant data2)
static void frighten_hut3(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)
static void transform_terrain2(QVariant data1, QVariant data2)
void popup_connect_msg(const char *headline, const char *message)
static void conquer_city_shrink(QVariant data1, QVariant data2)
static void conquer_city_shrink3(QVariant data1, QVariant data2)
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)
static void teleport_frighten_conquer(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 void transport_load(QVariant data1, QVariant data2)
static void fortify2(QVariant data1, QVariant data2)
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 void teleport2(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)
void show_tileset_error(bool fatal, const char *tset_name, const char *msg)
static void transform_terrain(QVariant data1, QVariant data2)
static void attack2(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 transport_board3(QVariant data1, QVariant data2)
static void spy_embassy(QVariant data1, QVariant data2)
static races_dialog * race_dialog
static void conquer_city_shrink4(QVariant data1, QVariant data2)
static void teleport3(QVariant data1, QVariant data2)
static void base2(QVariant data1, QVariant data2)
static void frighten_hut2(QVariant data1, QVariant data2)
static void conquer_extras2(QVariant data1, QVariant data2)
static void regular_move2(QVariant data1, QVariant data2)
static void frighten_hut(QVariant data1, QVariant data2)
bool qtg_request_transport(struct unit *pcargo, struct tile *ptile)
static void disembark4(QVariant data1, QVariant data2)
int action_selection_target_unit(void)
static void irrigate(QVariant data1, QVariant data2)
static void transport_embark3(QVariant data1, QVariant data2)
static void collect_ransom(QVariant data1, QVariant data2)
static void heal_unit(QVariant data1, QVariant data2)
void popdown_city_report()
static void teleport_enter_conquer(QVariant data1, QVariant data2)
static void regular_move3(QVariant data1, QVariant data2)
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 void disembark3(QVariant data1, QVariant data2)
static bool is_showing_pillage_dialog
static void spy_spread_plague(QVariant data1, QVariant data2)
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 enter_hut4(QVariant data1, QVariant data2)
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 struct tile struct extra_type const struct act_prob *act_probs int actor_unit_id popup_bribe_unit_dialog
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 struct unit struct city const struct action *paction const char * expl
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 popup_sabotage_dialog
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 * 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 * 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 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 struct unit struct city * pcity
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
#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)
static PangoLayout * layout
void popdown_help_dialog(void)
void(* pfcn_void)(QVariant, QVariant)
#define mevent_gpos(__ev__)
#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)
#define log_error(message,...)
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)
static const void * body(MD5_CTX *ctx, const void *data, unsigned long size)
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_unit_get_actions(struct connection *pc, int actor_unit_id, int target_unit_id, int target_tile_id, int target_extra_id, int request_kind)
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_city_name_suggestion_req(struct connection *pc, int unit_id)
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)
const char * sex_name_translation(sex_t kind)
struct sprite int int int int struct sprite int int float bool smooth get_sprite_dimensions
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::@84::@86 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 is_svg_flag_enabled()
#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)
struct sprite * load_popup_sprite(const char *tag)
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)
void unload_popup_sprite(const char *tag)
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)