19#include <QActionGroup>
20#include <QApplication>
25#include <QStandardPaths>
99 for (
i = 0;
i < s;
i++) {
122 gui()->mapview_wdg->repaint();
133 gui()->infotab->chtwdg->append(
QString(
_(
"Adding city %1 to trade planning"))
148 if (
pcity !=
nullptr) {
160 if (
pcity !=
nullptr) {
180 gui()->infotab->chtwdg->append(
181 QString(
_(
"Removing city %1 from trade planning"))
197 if (c->
tile == ptile) {
199 gui()->infotab->chtwdg->append(
200 QString(
_(
"Removing city %1 from trade planning")).arg(c->
name));
240 int count =
cities.size();
244 for (
i = 0;
i < 100;
i++) {
249 for (
n = 0;
n < count;
n++) {
256 for (
n = 0;
n < count;
n++) {
293 PL_(
"City %s - 1 free trade route.",
294 "City %s - %d free trade routes.",
305 gui()->mapview_wdg->repaint();
351 for (
int i = j;
i > -j;
i--) {
368 ttc->pos_cities.removeOne(tc->
city);
370 ttc->poss_trade_num--;
386 for (
int i =
cities.size() - 1 ;
i >= 0;
i--) {
409 for (
int i =
cities.size() - 1 ;
i >= 0;
i--) {
412 &&
ttc->pos_cities.contains(tc->
city)
431 if (
ttc->done ||
ttc->over_max > 0
436 &&
ttc->pos_cities.contains(tc->
city)) {
440 ttc->pos_cities.removeOne(tc->
city);
442 ttc->poss_trade_num--;
444 ttc->new_tr_cities.append(
ttc->city);
452 gilles.autocaravan =
nullptr;
518 gui()->menu_bar->clear();
519 gui()->menu_bar->setup_menus();
534 gui()->menuBar()->setVisible(
true);
536 gui()->menu_bar->menus_sensitive();
537 gui()->menu_bar->update_airlift_menu();
538 gui()->menu_bar->update_roads_menu();
539 gui()->menu_bar->update_bases_menu();
542 gui()->unitinfo_wdg->update_actions(
nullptr);
545 gui()->menuBar()->setVisible(
false);
596 foreach(
action, QWidget::actions()) {
618 .replace(
"&",
"&&"));
622 QObject::connect(
action, &QAction::triggered, [
this,
i]() {
702 : QMenu(
_(
"Go to and..."),
parent)
742 .replace(
"&",
"&&"));
758#define CREATE_SUB_ITEM(_menu_, _act_id_, _sub_tgt_id_, _sub_tgt_name_) \
760 QAction *_sub_item_ = _menu_->addAction(_sub_tgt_name_); \
761 int _sub_target_id_ = _sub_tgt_id_; \
762 QObject::connect(_sub_item_, &QAction::triggered, \
763 [this, _act_id_, _sub_target_id_]() { \
764 start_go_act(_act_id_, _sub_target_id_); \
815#define ADD_OLD_SHORTCUT(wanted_action_id, sc_id) \
816 if (act_id == wanted_action_id) { \
817 item->setShortcut(QKeySequence(shortcut_to_string( \
818 fc_shortcuts::sc()->get_shortcut(sc_id)))); \
832 QObject::connect(
item, &QAction::triggered, [
this,act_id]() {
851 if (
items.isEmpty()) {
863 item->setVisible(
true);
866 item->setVisible(
false);
918 struct tile *ptile =
nullptr;
931 if (
zunit ==
nullptr) {
940 if (ptile ==
nullptr) {
992 act =
sub_menu->addAction(
_(
"Set local options"));
994 act =
sub_menu->addAction(
_(
"Server Options"));
996 act =
sub_menu->addAction(
_(
"Messages"));
998 act =
sub_menu->addAction(
_(
"Shortcuts"));
1000 act =
sub_menu->addAction(
_(
"Load another tileset"));
1002 act =
sub_menu->addAction(
_(
"Save Options Now"));
1003 act->setIcon(style()->
standardIcon(QStyle::SP_DialogSaveButton));
1005 act =
sub_menu->addAction(
_(
"Save Options on Exit"));
1006 act->setCheckable(
true);
1011 act->setIcon(style()->
standardIcon(QStyle::SP_DialogSaveButton));
1014 act =
main_menu->addAction(
_(
"Save Game As..."));
1016 act->setIcon(style()->
standardIcon(QStyle::SP_DialogSaveButton));
1018 act =
main_menu->addAction(
_(
"Save Map to Image"));
1024 act =
main_menu->addAction(
_(
"Volume Down"));
1029 act->setIcon(style()->
standardIcon(QStyle::SP_DialogDiscardButton));
1032 act->setIcon(style()->
standardIcon(QStyle::SP_TitleBarCloseButton));
1037 act =
main_menu->addAction(
_(
"Center View"));
1045 act->setCheckable(
true);
1058 osd_status->setChecked(
gui()->qt_settings.show_new_turn_text);
1059 connect(
osd_status, &QAction::triggered,
this,
1077 act =
main_menu->addAction(
_(
"Zoom default"));
1091 act =
main_menu->addAction(
_(
"City Outlines"));
1093 act->setCheckable(
true);
1096 act =
main_menu->addAction(
_(
"City Output"));
1097 act->setCheckable(
true);
1105 act->setCheckable(
true);
1108 act =
main_menu->addAction(
_(
"National Borders"));
1109 act->setCheckable(
true);
1114 act =
main_menu->addAction(
_(
"Native Tiles"));
1115 act->setCheckable(
true);
1119 act =
main_menu->addAction(
_(
"City Full Bar"));
1120 act->setCheckable(
true);
1126 act->setCheckable(
true);
1131 act =
main_menu->addAction(
_(
"City Growth"));
1132 act->setCheckable(
true);
1136 act =
main_menu->addAction(
_(
"City Production"));
1137 act->setCheckable(
true);
1142 act =
main_menu->addAction(
_(
"City Buy Cost"));
1143 act->setCheckable(
true);
1146 act =
main_menu->addAction(
_(
"City Trade Routes"));
1147 act->setCheckable(
true);
1152 act =
main_menu->addAction(
_(
"Unit Stack Size"));
1153 act->setCheckable(
true);
1161 act =
main_menu->addAction(
_(
"Single Unit (Unselect Others)"));
1165 act =
main_menu->addAction(
_(
"All On Tile"));
1170 act =
main_menu->addAction(
_(
"Same Type on Tile"));
1174 act =
main_menu->addAction(
_(
"Same Type on Continent"));
1177 connect(act, &QAction::triggered,
this,
1179 act =
main_menu->addAction(
_(
"Same Type Everywhere"));
1182 connect(act, &QAction::triggered,
this,
1196 act =
main_menu->addAction(
_(
"Advanced unit selection"));
1212 act =
main_menu->addAction(
_(
"Go to Nearest City"));
1216 act =
main_menu->addAction(
_(
"Go to/Airlift to City..."));
1222 act =
main_menu->addAction(
_(
"Auto Explore"));
1229 act->setEnabled(
false);
1239 act =
main_menu->addAction(
_(
"Unsentry All On Tile"));
1255 act =
main_menu->addAction(
_(
"Unload All From Transporter"));
1263 .replace(
"&",
"&&"));
1284 act =
main_menu->addAction(
_(
"Fortify Unit"));
1290 .replace(
"&",
"&&"));
1295 .replace(
"&",
"&&"));
1320 .replace(
"&",
"&&"));
1325 act =
main_menu->addAction(
_(
"Auto Worker"));
1337 act =
main_menu->addAction(
_(
"Build Irrigation"));
1358 act =
main_menu->addAction(
_(
"Connect With Road"));
1362 act =
main_menu->addAction(
_(
"Connect With Railroad"));
1366 act =
main_menu->addAction(
_(
"Connect With Maglev"));
1370 act =
main_menu->addAction(
_(
"Connect With Irrigation"));
1375 act =
main_menu->addAction(
_(
"Transform Terrain"));
1386 .replace(
"&",
"&&"));
1391 .replace(
"&",
"&&"));
1435 act->setCheckable(
true);
1436 act->setChecked(
true);
1442 act->setCheckable(
true);
1443 act->setChecked(
false);
1449 act->setCheckable(
true);
1450 act->setChecked(
false);
1456 act->setCheckable(
true);
1457 act->setChecked(
false);
1464 act->setCheckable(
true);
1465 act->setChecked(
true);
1471 act->setCheckable(
true);
1472 act->setChecked(
false);
1478 act->setCheckable(
true);
1479 act->setChecked(
false);
1485 act->setCheckable(
true);
1486 act->setChecked(
false);
1492 act->setCheckable(
true);
1493 act->setChecked(
false);
1499 act->setCheckable(
true);
1500 act->setChecked(
false);
1506 act->setCheckable(
true);
1507 act->setChecked(
false);
1513 act->setCheckable(
true);
1514 act->setChecked(
false);
1520 act->setCheckable(
true);
1521 act->setChecked(
false);
1527 act->setCheckable(
true);
1528 act->setChecked(
false);
1534 act->setCheckable(
true);
1535 act->setChecked(
false);
1542 act =
main_menu->addAction(
_(
"Tax Rates..."));
1548 act =
main_menu->addAction(
_(
"Policies..."));
1580 act =
main_menu->addAction(
_(
"Wonders of the World"));
1589 act =
main_menu->addAction(
_(
"Demographics"));
1597 act =
main_menu->addAction(
_(
"Achievements"));
1600 act =
main_menu->addAction(
_(
"Endgame report"));
1607 act =
main_menu->addAction(
_(
"Select Battle Group 1"));
1611 act =
main_menu->addAction(
_(
"Assign Battle Group 1"));
1615 act =
main_menu->addAction(
_(
"Append to Battle Group 1"));
1619 act =
main_menu->addAction(
_(
"Select Battle Group 2"));
1623 act =
main_menu->addAction(
_(
"Assign Battle Group 2"));
1627 act =
main_menu->addAction(
_(
"Append to Battle Group 2"));
1631 act =
main_menu->addAction(
_(
"Select Battle Group 3"));
1635 act =
main_menu->addAction(
_(
"Assign Battle Group 3"));
1639 act =
main_menu->addAction(
_(
"Append to Battle Group 3"));
1643 act =
main_menu->addAction(
_(
"Select Battle Group 4"));
1647 act =
main_menu->addAction(
_(
"Assign Battle Group 4"));
1651 act =
main_menu->addAction(
_(
"Append to Battle Group 4"));
1659 QObject::connect(act, &QAction::triggered, [
this]() {
1664 QObject::connect(act, &QAction::triggered, [
this]() {
1669 QObject::connect(act, &QAction::triggered, [
this]() {
1674 QObject::connect(act, &QAction::triggered, [
this]() {
1679 QObject::connect(act, &QAction::triggered, [
this]() {
1684 QObject::connect(act, &QAction::triggered, [
this]() {
1689 QObject::connect(act, &QAction::triggered, [
this]() {
1694 QObject::connect(act, &QAction::triggered, [
this]() {
1699 QObject::connect(act, &QAction::triggered, [
this]() {
1704 QObject::connect(act, &QAction::triggered, [
this]() {
1709 QObject::connect(act, &QAction::triggered, [
this]() {
1714 QObject::connect(act, &QAction::triggered, [
this]() {
1719 QObject::connect(act, &QAction::triggered, [
this]() {
1724 QObject::connect(act, &QAction::triggered, [
this]() {
1729 QObject::connect(act, &QAction::triggered, [
this]() {
1736 act->setMenuRole(QAction::NoRole);
1738 QObject::connect(act, &QAction::triggered, [
this]() {
1745 act->setMenuRole(QAction::NoRole);
1747 QObject::connect(act, &QAction::triggered, [
this]() {
1754 act->setMenuRole(QAction::NoRole);
1756 QObject::connect(act, &QAction::triggered, [
this]() {
1763 act->setMenuRole(QAction::NoRole);
1765 QObject::connect(act, &QAction::triggered, [
this]() {
1772 QObject::connect(act, &QAction::triggered, [
this]() {
1777 QObject::connect(act, &QAction::triggered, [
this]() {
1782 QObject::connect(act, &QAction::triggered, [
this]() {
1787 QObject::connect(act, &QAction::triggered, [
this]() {
1792 QObject::connect(act, &QAction::triggered, [
this]() {
1799 QObject::connect(act, &QAction::triggered, [
this]() {
1804 QObject::connect(act, &QAction::triggered, [
this]() {
1811 act->setMenuRole(QAction::NoRole);
1813 QObject::connect(act, &QAction::triggered, [
this]() {
1818 for (i = 0;
i <
menus.count();
i++) {
1819 menus[
i]->setAttribute(Qt::WA_TranslucentBackground);
1842 foreach (
QAction *a,
m->actions()) {
1843 if (a->shortcut() ==
seq && a->isEnabled()) {
1844 a->activate(QAction::Trigger);
1862 gui()->mapview_wdg->menu_click =
true;
1870 foreach (
const QMenu *
m,
menus) {
1885 foreach (
QAction *a,
m->actions()) {
1886 if (a->shortcut() ==
seq &&
fcs->mouse == Qt::AllButtons) {
1906 foreach (
const QMenu *
m,
menus) {
1925 foreach (
QAction *a,
m->actions()) {
1926 if (a->shortcut() ==
seq) {
1927 *
ret = a->text() +
" ("
1928 + a->shortcut().toString(QKeySequence::NativeText) +
")";
1950 foreach (
const QMenu *
m,
menus) {
1989 .replace(
"&",
"&&"));
1990 act->setCheckable(
true);
1993 act->setChecked(
true);
2006 struct unit_list *
punits =
nullptr;
2007 bool enabled =
false;
2021 if (pextra->buildable) {
2026 .replace(
"&",
"&&"));
2029 QObject::connect(act, &QAction::triggered, [
this,
road_id]() {
2034 act->setEnabled(
true);
2037 act->setDisabled(
true);
2053 struct unit_list *
punits =
nullptr;
2054 bool enabled =
false;
2069 if (pextra->buildable) {
2074 .replace(
"&",
"&&"));
2077 QObject::connect(act, &QAction::triggered, [
this,
base_id]() {
2081 act->setEnabled(
true);
2084 act->setDisabled(
true);
2101 QMultiHash <munit, QAction *>::iterator
i;
2102 struct unit_list *
punits =
nullptr;
2108 const struct tile *ptile =
nullptr;
2120 a->setEnabled(
false);
2137 i.value()->setEnabled(
true);
2142 i.value()->setEnabled(
true);
2147 i.value()->setEnabled(
true);
2148 i.value()->setVisible(
true);
2150 i.value()->setVisible(
false);
2154 if (
gui()->is_repo_dlg_open(
"END")) {
2155 i.value()->setEnabled(
true);
2156 i.value()->setVisible(
true);
2158 i.value()->setVisible(
false);
2164 i.value()->setText(
QString(
PL_(
"Top %1 City",
"Top %1 Cities",
2168 i.value()->setText(
QString(
_(
"Top Cities")));
2214 i.value()->setEnabled(
true);
2219 i.value()->setEnabled(
true);
2225 i.value()->setEnabled(
true);
2231 i.value()->setEnabled(
true);
2237 i.value()->setEnabled(
true);
2243 i.value()->setEnabled(
true);
2249 i.value()->setEnabled(
true);
2261 if (pextra !=
nullptr) {
2266 if (pextra !=
nullptr) {
2271 .replace(
"&",
"&&"));
2273 i.value()->setText(
QString(
_(
"Build Mine")));
2276 i.value()->setText(
QString(
_(
"Build Mine")));
2283 i.value()->setEnabled(
true);
2294 if (pextra !=
nullptr) {
2299 if (pextra !=
nullptr) {
2304 .replace(
"&",
"&&"));
2306 i.value()->setText(
QString(
_(
"Build Irrigation")));
2309 i.value()->setText(
QString(
_(
"Build Irrigation")));
2316 i.value()->setEnabled(
true);
2328 .replace(
"&",
"&&"));
2330 i.value()->setText(
QString(
_(
"Cultivate")));
2333 i.value()->setText(
QString(
_(
"Cultivate")));
2339 i.value()->setEnabled(
true);
2351 .replace(
"&",
"&&"));
2353 i.value()->setText(
QString(
_(
"Plant")));
2356 i.value()->setText(
QString(
_(
"Plant")));
2362 i.value()->setEnabled(
true);
2377 .replace(
"&",
"&&"));
2379 i.value()->setText(
_(
"Transform Terrain"));
2387 i.value()->setEnabled(
true);
2393 .replace(
"&",
"&&"));
2397 .replace(
"&",
"&&"));
2406 i.value()->setEnabled(
true);
2411 if (pextra !=
nullptr) {
2416 if (pextra !=
nullptr) {
2421 .replace(
"&",
"&&"));
2428 i.value()->setEnabled(
true);
2434 i.value()->setEnabled(
true);
2440 i.value()->setEnabled(
true);
2446 i.value()->setEnabled(
true);
2452 i.value()->setEnabled(
true);
2458 i.value()->setEnabled(
true);
2460 .replace(
"&",
"&&"));
2466 i.value()->setEnabled(
true);
2472 i.value()->setEnabled(
true);
2478 i.value()->setEnabled(
true);
2484 i.value()->setEnabled(
true);
2487 i.value()->setText(
_(
"Auto Settler"));
2489 i.value()->setText(
_(
"Auto Worker"));
2494 if (
proad !=
nullptr) {
2500 i.value()->setEnabled(
true);
2506 i.value()->setEnabled(
true);
2512 if (
proad !=
nullptr) {
2518 i.value()->setEnabled(
true);
2524 if (
proad !=
nullptr) {
2530 i.value()->setEnabled(
true);
2543 i.value()->setEnabled(
true);
2551 i.value()->setEnabled(
true);
2557 i.value()->setEnabled(
true);
2564 .replace(
"&",
"&&"));
2566 i.value()->setEnabled(
true);
2572 i.value()->setEnabled(
true);
2579 .replace(
"&",
"&&"));
2581 i.value()->setEnabled(
true);
2587 i.value()->setEnabled(
true);
2593 i.value()->setEnabled(
true);
2620 if (pplayer !=
nullptr) {
2638 ::gui()->game_tab_widget->setCurrentIndex(0);
2694 if (pextra !=
nullptr) {
2723 if (
prail !=
nullptr) {
2769 if (
proad !=
nullptr) {
2925 gui()->rallies.hover_tile =
false;
2926 gui()->rallies.hover_city =
true;
2934 gui()->trade_gen.hover_city =
true;
2942 gui()->trade_gen.add_all_cities();
2950 gui()->trade_gen.calculate();
2958 gui()->trade_gen.clear_trade_planing();
2968 struct city *homecity;
2970 struct tile *dest_tile;
2976 foreach(
gilles,
gui()->trade_gen.lines) {
2978 &&
gilles.autocaravan ==
nullptr) {
2998 gui()->infotab->chtwdg->append(
_(
"Didn't find any trade route"
3091 if (
punit ==
nullptr) {
3219 if (
gui()->interface_locked) {
3224 gui()->interface_locked = !
gui()->interface_locked;
3241 for (
i = 0;
i <
lc.size(); ++
i) {
3244 for (
i = 0;
i <
lm.size(); ++
i) {
3247 for (
i = 0;
i <
lr.size(); ++
i) {
3259 gui()->apply_fullscreen();
3268 ::gui()->minimapview_wdg->show();
3270 ::gui()->minimapview_wdg->hide();
3280 gui()->qt_settings.show_new_turn_text =
true;
3282 gui()->qt_settings.show_new_turn_text =
false;
3292 gui()->qt_settings.show_battle_log =
true;
3294 gui()->qt_settings.show_battle_log =
false;
3335 gui()->map_scale =
gui()->map_scale * 1.2f;
3346 gui()->map_scale = 1.0f;
3362 gui()->map_font_scale =
true;
3368 gui()->map_font_scale =
false;
3378 gui()->map_scale =
gui()->map_scale / 1.2f;
3658 QDialog *dialog =
new QDialog(
this);
3667 sl <<
"default_tileset_overhead_name" <<
"default_tileset_iso_name"
3668 <<
"default_tileset_hex_name" <<
"default_tileset_isohex_name";
3670 dialog->setWindowTitle(
_(
"Available tilesets"));
3672 label->setText(
_(
"Some tilesets might not be compatible with current"
3674 layout->addWidget(label);
3683 but =
new QPushButton(value);
3688 dialog->setSizeGripEnabled(
true);
3689 dialog->setLayout(
layout);
3704 gui()->map_scale = 1.0f;
3705 but->parentWidget()->close();
3713 gui()->trade_gen.calculate();
3747 if (pextra->buildable && pextra->id ==
id
3763 if (pextra->buildable && pextra->id ==
id
3779 gui()->popup_client_options();
3795 gui()->pr_options->popup_server_options();
3850 path = QStandardPaths::writableLocation(QStandardPaths::PicturesLocation);
3853 }
else if (!path.isEmpty()) {
3856 img_name = QStandardPaths::writableLocation(QStandardPaths::HomeLocation)
3861 saved->setStandardButtons(QMessageBox::Ok);
3862 saved->setDefaultButton(QMessageBox::Cancel);
3863 saved->setAttribute(Qt::WA_DeleteOnClose);
3865 saved->set_text_title(
"Image saved as:\n" +
img_name,
_(
"Success"));
3867 saved->set_text_title(
_(
"Failed to save image of the map"),
_(
"Error"));
3895 +
QString(
" (*.sav *.sav.bz2 *.sav.gz *.sav.xz)");
3896 current_file = QFileDialog::getSaveFileName(
gui()->central_wdg,
3897 _(
"Save Game As..."),
3899 if (!current_file.isEmpty()) {
3916 ask->set_text_title(
_(
"Leaving a local game will end it!"),
"Leave game");
3917 ask->setStandardButtons(QMessageBox::Cancel | QMessageBox::Ok);
3918 ask->setDefaultButton(QMessageBox::Cancel);
3919 ask->setAttribute(Qt::WA_DeleteOnClose);
3921 connect(
ask, &hud_message_box::accepted, [=]() {
3923 gui()->infotab->msgwdg->clr();
3924 disconnect_from_server(TRUE);
3964 ask->setIcon(QMessageBox::Warning);
3965 ask->setStandardButtons(QMessageBox::Cancel | QMessageBox::Ok);
3966 ask->setDefaultButton(QMessageBox::Cancel);
3967 ask->setAttribute(Qt::WA_DeleteOnClose);
3968 return (
ask->set_text_title(
_(
"Selection will cancel current assignments!"),
3969 _(
"Confirm Disruptive Selection"),
true)
3970 == QMessageBox::Ok);
const char * action_id_name_translation(action_id act_id)
const char * action_name_translation(const struct action *paction)
enum action_sub_target_kind action_get_sub_target_kind(const struct action *paction)
bool actions_are_ready(void)
#define action_noninternal_iterate_end
static struct action * action_by_number(action_id act_id)
#define action_id_get_actor_kind(act_id)
#define action_noninternal_iterate(_act_)
#define action_id_get_target_kind(act_id)
#define action_id_has_complex_target(act_id)
bool actres_removes_extra(enum action_result result, const struct extra_type *pextra)
bool actres_creates_extra(enum action_result result, const struct extra_type *pextra)
void output_window_append(const struct ft_color color, const char *featured_text)
struct city * create_city_virtual(struct player *pplayer, struct tile *ptile, const char *name)
void destroy_city_virtual(struct city *pcity)
static bool is_non_allied_city_tile(const struct tile *ptile, const struct player *pplayer)
#define city_list_iterate(citylist, pcity)
#define city_tile(_pcity_)
#define city_list_iterate_end
static fc_font * instance()
QFont * get_font(QString name)
static fc_shortcuts * sc()
fc_shortcut * get_shortcut(shortcut_id id)
static qdef_act * action()
QList< qfc_delayed_unit_item * > unit_list
void add(qfc_delayed_unit_item *fui)
QList< struct city * > pos_cities
QList< struct city * > new_tr_cities
trade_city(struct city *pcity)
QList< struct city * > curr_tr_cities
void calculate_inner(trade_city *tc)
bool discard_one(trade_city *tc)
void add_city(struct city *pcity)
void find_certain_routes()
QList< trade_city * > cities
void find_certain_routes_inner(trade_city *tc)
trade_city * find_most_free()
void discard_trade(trade_city *tc1, trade_city *tc2)
void add_tile(struct tile *ptile)
void remove_virtual_city(struct tile *ptile)
void clear_trade_planing()
void remove_city(struct city *pcity)
bool discard_any(trade_city *tc, int freeroutes)
void check_if_done(trade_city *tc1, trade_city *tc2)
QList< struct city * > virtual_cities
int find_over_max(struct city *pcity)
bool client_is_observer(void)
enum client_states client_state(void)
bool is_waiting_turn_change(void)
void send_report_request(enum report_type type)
bool can_client_issue_orders(void)
bool client_has_player(void)
bool can_units_do_connect(struct unit_list *punits, enum unit_activity activity, struct extra_type *tgt)
void disconnect_from_server(bool leaving_sound)
@ REPORT_WONDERS_OF_THE_WORLD_LONG
void send_save_game(const char *filename)
bool is_server_running(void)
bool can_client_access_hack(void)
void key_unit_sentry(void)
void request_unit_airlift(struct unit *punit, struct city *pcity)
void key_city_output_toggle(void)
void request_unit_return(struct unit *punit)
void request_unit_caravan_action(struct unit *punit, action_id action)
void key_unit_auto_explore(void)
void key_unit_connect(enum unit_activity activity, struct extra_type *tgt)
void key_city_full_bar_toggle(void)
void key_map_native_toggle(void)
void request_unit_goto(enum unit_orders last_order, action_id act_id, int sub_tgt_id)
void key_unit_paradrop(void)
struct unit_list * get_units_in_focus(void)
void request_center_focus_unit(void)
void key_city_productions_toggle(void)
void key_unit_plant(void)
void key_unit_fortress(void)
void key_unit_pillage(void)
void request_unit_unload(struct unit *pcargo)
void request_new_unit_activity_targeted(struct unit *punit, enum unit_activity act, struct extra_type *tgt)
void key_unit_irrigate(void)
void request_unit_build_city(struct unit *punit)
void key_unit_unload_all(void)
void key_city_outlines_toggle(void)
void key_unit_homecity(void)
void set_hover_state(struct unit_list *punits, enum cursor_hover_state state, enum unit_activity activity, struct extra_type *tgt, int last_tgt, int last_sub_tgt, action_id action, enum unit_orders order)
void key_unit_patrol(void)
void key_unit_wakeup_others(void)
enum cursor_hover_state hover_state
void key_unit_stack_size_toggle(void)
void key_unit_select_battlegroup(int battlegroup, bool append)
void key_map_grid_toggle(void)
struct unit * head_of_units_in_focus(void)
void key_city_growth_toggle(void)
void key_unit_action_select_tgt(void)
void key_city_buycost_toggle(void)
int get_num_units_in_focus(void)
void key_unit_transform(void)
void request_move_unit_direction(struct unit *punit, int dir)
void key_city_trade_routes_toggle(void)
void key_city_names_toggle(void)
void request_unit_select(struct unit_list *punits, enum unit_select_type_mode seltype, enum unit_select_location_mode selloc)
void key_unit_auto_work(void)
void key_unit_airbase(void)
void control_mouse_cursor(struct tile *ptile)
void key_unit_convert(void)
void key_unit_fortify(void)
void key_unit_assign_battlegroup(int battlegroup, bool append)
void key_unit_cultivate(void)
void key_map_borders_toggle(void)
#define can_unit_do_activity_targeted_client(_punit_, _act_, _tgt_)
#define can_units_do_activity_targeted_client(_punits_, _act_, _tgt_)
#define can_units_do_activity_client(_punits_, _act_)
bool qtg_request_transport(struct unit *pcargo, struct tile *ptile)
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
int get_city_bonus(const struct city *pcity, enum effect_type effect_type)
#define PL_(String1, String2, n)
const struct ft_color ftc_client
const char * city_link(const struct city *pcity)
struct city * game_city_by_number(int id)
struct tile * tile_before_end_path(struct unit *punit, struct tile *ptile)
bool send_attack_tile(struct unit *punit, struct tile *ptile)
bool send_goto_tile(struct unit *punit, struct tile *ptile)
void enter_goto_state(struct unit_list *punits)
const char * government_name_translation(const struct government *pgovern)
bool untargeted_revolution_allowed(void)
Government_type_id government_count(void)
struct government * government_by_number(const Government_type_id gov)
bool can_change_to_government(struct player *pplayer, const struct government *gov)
static PangoLayout * layout
void city_report_dialog_popup(bool raise)
void popup_upgrade_dialog(struct unit_list *punits)
void popup_disband_dialog(struct unit_list *punits)
void popup_multiplier_dialog(void)
void popup_rates_dialog(void)
void popup_goto_dialog(void)
void popup_quit_dialog(void)
void popup_help_dialog_typed(const char *item, enum help_page_type htype)
void create_line_at_mouse_pos(void)
void update_city_descriptions(void)
void popup_messageopt_dialog(void)
void popup_players_dialog(bool raise)
void economy_report_dialog_popup(bool raise)
void popup_spaceship_dialog(struct player *pplayer)
void popup_revolution_dialog(void)
#define HELP_MUSICSET_ITEM
#define HELP_TERRAIN_ITEM
#define HELP_LANGUAGES_ITEM
#define HELP_CONNECTING_ITEM
#define HELP_TILESET_ITEM
#define HELP_CHATLINE_ITEM
#define HELP_RULESET_ITEM
#define HELP_GOVERNMENT_ITEM
#define HELP_MULTIPLIER_ITEM
#define HELP_PLAYING_ITEM
#define HELP_IMPROVEMENTS_ITEM
#define HELP_WORKLIST_EDITOR_ITEM
#define HELP_WONDERS_ITEM
#define HELP_SPACE_RACE_ITEM
#define HELP_COPYING_ITEM
#define HELP_OVERVIEW_ITEM
#define HELP_NATIONS_ITEM
#define HELP_DIPLOMACY_ITEM
#define HELP_ECONOMY_ITEM
#define HELP_CONTROLS_ITEM
Impr_type_id improvement_number(const struct impr_type *pimprove)
const char * improvement_name_translation(const struct impr_type *pimprove)
#define improvement_iterate_end
#define improvement_iterate(_p)
#define fc_assert(condition)
int get_direction_for_step(const struct civ_map *nmap, const struct tile *start_tile, const struct tile *end_tile)
bool is_tiles_adjacent(const struct tile *tile0, const struct tile *tile1)
struct terrain_misc terrain_control
bool map_canvas_resized(int width, int height)
Multiplier_type_id multiplier_count(void)
const char *const city_productions
const char *const city_names
const char * nation_plural_for_player(const struct player *pplayer)
void option_changed(struct option *poption)
const struct option_set * client_optset
void options_save(option_save_log_callback log_cb)
struct client_options gui_options
struct option * optset_option_by_name(const struct option_set *poptset, const char *name)
struct city_list * cities
void popup_shortcuts_dialog()
void toggle_units_report(bool)
#define players_iterate_end
#define players_iterate(_pplayer)
void qtg_science_report_dialog_popup(bool raise)
void popup_endgame_report()
struct extra_type * road_extra_get(const struct road_type *proad)
struct road_type * road_by_gui_type(enum road_gui_type gui_type)
const struct strvec * get_save_dirs(void)
void array_shuffle(int *array, int n)
char * freeciv_storage_dir(void)
#define CLIP(lower, current, upper)
QString shortcut_to_string(fc_shortcut *sc)
struct specialist * specialist_by_number(const Specialist_type_id id)
const char * specialist_plural_translation(const struct specialist *sp)
#define specialist_type_iterate_end
#define specialist_type_iterate(sp)
#define strvec_iterate(psv, str)
#define strvec_iterate_end
struct civ_game::@32::@35 client
struct packet_game_info info
struct government * government_during_revolution
bool draw_city_productions
bool draw_unit_stack_size
bool draw_city_trade_routes
bool unit_selection_clears_orders
bool save_options_on_exit
struct city_list * cities
struct terrain * cultivate_result
struct terrain * plant_result
struct terrain * transform_result
const struct unit_type * utype
int fc_snprintf(char *str, size_t n, const char *format,...)
const char * advance_name_translation(const struct advance *padvance)
Tech_type_id advance_number(const struct advance *padvance)
#define advance_iterate(_p)
#define advance_iterate_end
void tile_virtual_destroy(struct tile *vtile)
bool tile_apply_activity(struct tile *ptile, Activity_type_id act, struct extra_type *tgt)
struct tile * tile_virtual_new(const struct tile *ptile)
const char * tile_get_info_text(const struct tile *ptile, bool include_nuisances, int linebreaks)
struct city * tile_city(const struct tile *ptile)
#define tile_terrain(_tile)
struct sprite * get_government_sprite(const struct tileset *t, const struct government *gov)
int tileset_hex_width(const struct tileset *t)
const struct strvec * get_tileset_list(const struct option *poption)
bool tileset_is_isometric(const struct tileset *t)
const char * tileset_basename(const struct tileset *t)
int tileset_tile_height(const struct tileset *t)
int tileset_tile_width(const struct tileset *t)
bool tilespec_reread(const char *new_tileset_name, bool game_fully_initialized, float scale)
int city_num_trade_routes(const struct city *pcity)
unsigned max_trade_routes(const struct city *pcity)
bool can_establish_trade_route(const struct city *pc1, const struct city *pc2, int priority)
bool have_cities_trade_route(const struct city *pc1, const struct city *pc2)
#define GOODS_HIGH_PRIORITY
bool unit_can_est_trade_route_here(const struct unit *punit)
bool unit_can_add_or_build_city(const struct civ_map *nmap, const struct unit *punit)
bool can_unit_change_homecity(const struct civ_map *nmap, const struct unit *punit)
bool unit_contained_in(const struct unit *pcargo, const struct unit *ptrans)
bool can_unit_do_autoworker(const struct unit *punit)
bool can_unit_paradrop(const struct civ_map *nmap, const struct unit *punit)
bool unit_can_help_build_wonder_here(const struct civ_map *nmap, const struct unit *punit)
bool units_can_convert(const struct civ_map *nmap, const struct unit_list *punits)
bool units_are_occupied(const struct unit_list *punits)
bool units_can_unload(const struct civ_map *nmap, const struct unit_list *punits)
bool can_units_do_base_gui(const struct unit_list *punits, enum base_gui_type base_gui)
bool units_contain_cityfounder(const struct unit_list *punits)
bool can_units_do_any_road(const struct civ_map *nmap, const struct unit_list *punits)
struct unit * unit_list_find(const struct unit_list *punitlist, int unit_id)
bool units_can_upgrade(const struct civ_map *nmap, const struct unit_list *punits)
bool units_have_activity_on_tile(const struct unit_list *punits, enum unit_activity activity)
bool units_have_type_flag(const struct unit_list *punits, enum unit_type_flag_id flag, bool has_flag)
bool can_units_do(const struct unit_list *punits, bool(can_fn)(const struct unit *punit))
bool units_can_do_action(const struct unit_list *punits, action_id act_id, bool can_do)
bool units_can_load(const struct unit_list *punits)
bool can_units_do_on_map(const struct civ_map *nmap, const struct unit_list *punits, bool(can_fn)(const struct civ_map *nmap, const struct unit *punit))
#define unit_list_iterate(unitlist, punit)
#define unit_list_iterate_end
const struct unit_type * unit_type_get(const struct unit *punit)
struct unit_type * utype_by_number(const Unit_type_id id)
Unit_type_id utype_index(const struct unit_type *punittype)
bool can_player_build_unit_now(const struct player *p, const struct unit_type *punittype)
const char * utype_name_translation(const struct unit_type *punittype)
bool utype_can_do_action(const struct unit_type *putype, const action_id act_id)
#define unit_type_iterate(_p)
#define unit_type_iterate_end
#define MAP_NATIVE_HEIGHT