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()) {
617 .replace(
"&",
"&&"));
621 QObject::connect(
action, &QAction::triggered, [
this,
i]() {
701 : QMenu(
_(
"Go to and..."),
parent)
741 .replace(
"&",
"&&"));
757#define CREATE_SUB_ITEM(_menu_, _act_id_, _sub_tgt_id_, _sub_tgt_name_) \
759 QAction *_sub_item_ = _menu_->addAction(_sub_tgt_name_); \
760 int _sub_target_id_ = _sub_tgt_id_; \
761 QObject::connect(_sub_item_, &QAction::triggered, \
762 [this, _act_id_, _sub_target_id_]() { \
763 start_go_act(_act_id_, _sub_target_id_); \
814#define ADD_OLD_SHORTCUT(wanted_action_id, sc_id) \
815 if (act_id == wanted_action_id) { \
816 item->setShortcut(QKeySequence(shortcut_to_string( \
817 fc_shortcuts::sc()->get_shortcut(sc_id)))); \
831 QObject::connect(
item, &QAction::triggered, [
this,act_id]() {
850 if (
items.isEmpty()) {
862 item->setVisible(
true);
865 item->setVisible(
false);
917 struct tile *ptile =
nullptr;
930 if (
zunit ==
nullptr) {
939 if (ptile ==
nullptr) {
991 act =
sub_menu->addAction(
_(
"Set local options"));
993 act =
sub_menu->addAction(
_(
"Server Options"));
995 act =
sub_menu->addAction(
_(
"Messages"));
997 act =
sub_menu->addAction(
_(
"Shortcuts"));
999 act =
sub_menu->addAction(
_(
"Load another tileset"));
1001 act =
sub_menu->addAction(
_(
"Save Options Now"));
1002 act->setIcon(style()->
standardIcon(QStyle::SP_DialogSaveButton));
1004 act =
sub_menu->addAction(
_(
"Save Options on Exit"));
1005 act->setCheckable(
true);
1010 act->setIcon(style()->
standardIcon(QStyle::SP_DialogSaveButton));
1013 act =
main_menu->addAction(
_(
"Save Game As..."));
1015 act->setIcon(style()->
standardIcon(QStyle::SP_DialogSaveButton));
1017 act =
main_menu->addAction(
_(
"Save Map to Image"));
1021 act->setIcon(style()->
standardIcon(QStyle::SP_DialogDiscardButton));
1024 act->setIcon(style()->
standardIcon(QStyle::SP_TitleBarCloseButton));
1029 act =
main_menu->addAction(
_(
"Center View"));
1037 act->setCheckable(
true);
1050 osd_status->setChecked(
gui()->qt_settings.show_new_turn_text);
1051 connect(
osd_status, &QAction::triggered,
this,
1069 act =
main_menu->addAction(
_(
"Zoom default"));
1083 act =
main_menu->addAction(
_(
"City Outlines"));
1084 act->setCheckable(
true);
1087 act =
main_menu->addAction(
_(
"City Output"));
1088 act->setCheckable(
true);
1096 act->setCheckable(
true);
1099 act =
main_menu->addAction(
_(
"National Borders"));
1100 act->setCheckable(
true);
1105 act =
main_menu->addAction(
_(
"Native Tiles"));
1106 act->setCheckable(
true);
1110 act =
main_menu->addAction(
_(
"City Full Bar"));
1111 act->setCheckable(
true);
1117 act->setCheckable(
true);
1122 act =
main_menu->addAction(
_(
"City Growth"));
1123 act->setCheckable(
true);
1127 act =
main_menu->addAction(
_(
"City Production"));
1128 act->setCheckable(
true);
1133 act =
main_menu->addAction(
_(
"City Buy Cost"));
1134 act->setCheckable(
true);
1137 act =
main_menu->addAction(
_(
"City Trade Routes"));
1138 act->setCheckable(
true);
1143 act =
main_menu->addAction(
_(
"Unit Stack Size"));
1144 act->setCheckable(
true);
1152 act =
main_menu->addAction(
_(
"Single Unit (Unselect Others)"));
1156 act =
main_menu->addAction(
_(
"All On Tile"));
1161 act =
main_menu->addAction(
_(
"Same Type on Tile"));
1165 act =
main_menu->addAction(
_(
"Same Type on Continent"));
1168 connect(act, &QAction::triggered,
this,
1170 act =
main_menu->addAction(
_(
"Same Type Everywhere"));
1173 connect(act, &QAction::triggered,
this,
1187 act =
main_menu->addAction(
_(
"Advanced unit selection"));
1203 act =
main_menu->addAction(
_(
"Go to Nearest City"));
1207 act =
main_menu->addAction(
_(
"Go to/Airlift to City..."));
1213 act =
main_menu->addAction(
_(
"Auto Explore"));
1220 act->setEnabled(
false);
1230 act =
main_menu->addAction(
_(
"Unsentry All On Tile"));
1246 act =
main_menu->addAction(
_(
"Unload All From Transporter"));
1254 .replace(
"&",
"&&"));
1275 act =
main_menu->addAction(
_(
"Fortify Unit"));
1281 .replace(
"&",
"&&"));
1286 .replace(
"&",
"&&"));
1311 .replace(
"&",
"&&"));
1316 act =
main_menu->addAction(
_(
"Auto Worker"));
1328 act =
main_menu->addAction(
_(
"Build Irrigation"));
1349 act =
main_menu->addAction(
_(
"Connect With Road"));
1353 act =
main_menu->addAction(
_(
"Connect With Railroad"));
1357 act =
main_menu->addAction(
_(
"Connect With Maglev"));
1361 act =
main_menu->addAction(
_(
"Connect With Irrigation"));
1366 act =
main_menu->addAction(
_(
"Transform Terrain"));
1377 .replace(
"&",
"&&"));
1382 .replace(
"&",
"&&"));
1426 act->setCheckable(
true);
1427 act->setChecked(
true);
1433 act->setCheckable(
true);
1434 act->setChecked(
false);
1440 act->setCheckable(
true);
1441 act->setChecked(
false);
1447 act->setCheckable(
true);
1448 act->setChecked(
false);
1455 act->setCheckable(
true);
1456 act->setChecked(
true);
1462 act->setCheckable(
true);
1463 act->setChecked(
false);
1469 act->setCheckable(
true);
1470 act->setChecked(
false);
1476 act->setCheckable(
true);
1477 act->setChecked(
false);
1483 act->setCheckable(
true);
1484 act->setChecked(
false);
1490 act->setCheckable(
true);
1491 act->setChecked(
false);
1497 act->setCheckable(
true);
1498 act->setChecked(
false);
1504 act->setCheckable(
true);
1505 act->setChecked(
false);
1511 act->setCheckable(
true);
1512 act->setChecked(
false);
1518 act->setCheckable(
true);
1519 act->setChecked(
false);
1525 act->setCheckable(
true);
1526 act->setChecked(
false);
1533 act =
main_menu->addAction(
_(
"Tax Rates..."));
1538 act =
main_menu->addAction(
_(
"Policies..."));
1570 act =
main_menu->addAction(
_(
"Wonders of the World"));
1579 act =
main_menu->addAction(
_(
"Demographics"));
1587 act =
main_menu->addAction(
_(
"Achievements"));
1590 act =
main_menu->addAction(
_(
"Endgame report"));
1597 act =
main_menu->addAction(
_(
"Select Battle Group 1"));
1601 act =
main_menu->addAction(
_(
"Assign Battle Group 1"));
1605 act =
main_menu->addAction(
_(
"Append to Battle Group 1"));
1609 act =
main_menu->addAction(
_(
"Select Battle Group 2"));
1613 act =
main_menu->addAction(
_(
"Assign Battle Group 2"));
1617 act =
main_menu->addAction(
_(
"Append to Battle Group 2"));
1621 act =
main_menu->addAction(
_(
"Select Battle Group 3"));
1625 act =
main_menu->addAction(
_(
"Assign Battle Group 3"));
1629 act =
main_menu->addAction(
_(
"Append to Battle Group 3"));
1633 act =
main_menu->addAction(
_(
"Select Battle Group 4"));
1637 act =
main_menu->addAction(
_(
"Assign Battle Group 4"));
1641 act =
main_menu->addAction(
_(
"Append to Battle Group 4"));
1649 QObject::connect(act, &QAction::triggered, [
this]() {
1654 QObject::connect(act, &QAction::triggered, [
this]() {
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]() {
1734 QObject::connect(act, &QAction::triggered, [
this]() {
1739 QObject::connect(act, &QAction::triggered, [
this]() {
1746 QObject::connect(act, &QAction::triggered, [
this]() {
1751 QObject::connect(act, &QAction::triggered, [
this]() {
1756 QObject::connect(act, &QAction::triggered, [
this]() {
1761 QObject::connect(act, &QAction::triggered, [
this]() {
1766 QObject::connect(act, &QAction::triggered, [
this]() {
1773 QObject::connect(act, &QAction::triggered, [
this]() {
1778 QObject::connect(act, &QAction::triggered, [
this]() {
1783 QObject::connect(act, &QAction::triggered, [
this]() {
1788 for (i = 0;
i <
menus.count();
i++) {
1789 menus[
i]->setAttribute(Qt::WA_TranslucentBackground);
1812 foreach (
QAction *a,
m->actions()) {
1813 if (a->shortcut() ==
seq && a->isEnabled()) {
1814 a->activate(QAction::Trigger);
1832 gui()->mapview_wdg->menu_click =
true;
1840 foreach (
const QMenu *
m,
menus) {
1855 foreach (
QAction *a,
m->actions()) {
1856 if (a->shortcut() ==
seq &&
fcs->mouse == Qt::AllButtons) {
1876 foreach (
const QMenu *
m,
menus) {
1895 foreach (
QAction *a,
m->actions()) {
1896 if (a->shortcut() ==
seq) {
1897 *
ret = a->text() +
" ("
1898 + a->shortcut().toString(QKeySequence::NativeText) +
")";
1920 foreach (
const QMenu *
m,
menus) {
1959 .replace(
"&",
"&&"));
1960 act->setCheckable(
true);
1963 act->setChecked(
true);
1976 struct unit_list *
punits =
nullptr;
1977 bool enabled =
false;
1991 if (pextra->buildable) {
1996 .replace(
"&",
"&&"));
1999 QObject::connect(act, &QAction::triggered, [
this,
road_id]() {
2004 act->setEnabled(
true);
2007 act->setDisabled(
true);
2023 struct unit_list *
punits =
nullptr;
2024 bool enabled =
false;
2039 if (pextra->buildable) {
2044 .replace(
"&",
"&&"));
2047 QObject::connect(act, &QAction::triggered, [
this,
base_id]() {
2051 act->setEnabled(
true);
2054 act->setDisabled(
true);
2071 QMultiHash <munit, QAction *>::iterator
i;
2072 struct unit_list *
punits =
nullptr;
2078 const struct tile *ptile =
nullptr;
2090 a->setEnabled(
false);
2107 i.value()->setEnabled(
true);
2112 i.value()->setEnabled(
true);
2117 i.value()->setEnabled(
true);
2118 i.value()->setVisible(
true);
2120 i.value()->setVisible(
false);
2124 if (
gui()->is_repo_dlg_open(
"END")) {
2125 i.value()->setEnabled(
true);
2126 i.value()->setVisible(
true);
2128 i.value()->setVisible(
false);
2134 i.value()->setText(
QString(
PL_(
"Top %1 City",
"Top %1 Cities",
2138 i.value()->setText(
QString(
_(
"Top Cities")));
2184 i.value()->setEnabled(
true);
2189 i.value()->setEnabled(
true);
2195 i.value()->setEnabled(
true);
2201 i.value()->setEnabled(
true);
2207 i.value()->setEnabled(
true);
2213 i.value()->setEnabled(
true);
2219 i.value()->setEnabled(
true);
2231 if (pextra !=
nullptr) {
2236 if (pextra !=
nullptr) {
2241 .replace(
"&",
"&&"));
2243 i.value()->setText(
QString(
_(
"Build Mine")));
2246 i.value()->setText(
QString(
_(
"Build Mine")));
2253 i.value()->setEnabled(
true);
2264 if (pextra !=
nullptr) {
2269 if (pextra !=
nullptr) {
2274 .replace(
"&",
"&&"));
2276 i.value()->setText(
QString(
_(
"Build Irrigation")));
2279 i.value()->setText(
QString(
_(
"Build Irrigation")));
2286 i.value()->setEnabled(
true);
2298 .replace(
"&",
"&&"));
2300 i.value()->setText(
QString(
_(
"Cultivate")));
2303 i.value()->setText(
QString(
_(
"Cultivate")));
2309 i.value()->setEnabled(
true);
2321 .replace(
"&",
"&&"));
2323 i.value()->setText(
QString(
_(
"Plant")));
2326 i.value()->setText(
QString(
_(
"Plant")));
2332 i.value()->setEnabled(
true);
2347 .replace(
"&",
"&&"));
2349 i.value()->setText(
_(
"Transform Terrain"));
2357 i.value()->setEnabled(
true);
2363 .replace(
"&",
"&&"));
2367 .replace(
"&",
"&&"));
2376 i.value()->setEnabled(
true);
2381 if (pextra !=
nullptr) {
2386 if (pextra !=
nullptr) {
2391 .replace(
"&",
"&&"));
2398 i.value()->setEnabled(
true);
2404 i.value()->setEnabled(
true);
2410 i.value()->setEnabled(
true);
2416 i.value()->setEnabled(
true);
2422 i.value()->setEnabled(
true);
2428 i.value()->setEnabled(
true);
2430 .replace(
"&",
"&&"));
2436 i.value()->setEnabled(
true);
2442 i.value()->setEnabled(
true);
2448 i.value()->setEnabled(
true);
2454 i.value()->setEnabled(
true);
2457 i.value()->setText(
_(
"Auto Settler"));
2459 i.value()->setText(
_(
"Auto Worker"));
2464 if (
proad !=
nullptr) {
2470 i.value()->setEnabled(
true);
2476 i.value()->setEnabled(
true);
2482 if (
proad !=
nullptr) {
2488 i.value()->setEnabled(
true);
2494 if (
proad !=
nullptr) {
2500 i.value()->setEnabled(
true);
2513 i.value()->setEnabled(
true);
2521 i.value()->setEnabled(
true);
2527 i.value()->setEnabled(
true);
2534 .replace(
"&",
"&&"));
2536 i.value()->setEnabled(
true);
2542 i.value()->setEnabled(
true);
2549 .replace(
"&",
"&&"));
2551 i.value()->setEnabled(
true);
2557 i.value()->setEnabled(
true);
2563 i.value()->setEnabled(
true);
2590 if (pplayer !=
nullptr) {
2608 ::gui()->game_tab_widget->setCurrentIndex(0);
2664 if (pextra !=
nullptr) {
2693 if (
prail !=
nullptr) {
2739 if (
proad !=
nullptr) {
2895 gui()->rallies.hover_tile =
false;
2896 gui()->rallies.hover_city =
true;
2904 gui()->trade_gen.hover_city =
true;
2912 gui()->trade_gen.add_all_cities();
2920 gui()->trade_gen.calculate();
2928 gui()->trade_gen.clear_trade_planing();
2938 struct city *homecity;
2940 struct tile *dest_tile;
2946 foreach(
gilles,
gui()->trade_gen.lines) {
2948 &&
gilles.autocaravan ==
nullptr) {
2968 gui()->infotab->chtwdg->append(
_(
"Didn't find any trade route"
3061 if (
punit ==
nullptr) {
3189 if (
gui()->interface_locked) {
3194 gui()->interface_locked = !
gui()->interface_locked;
3211 for (
i = 0;
i <
lc.size(); ++
i) {
3214 for (
i = 0;
i <
lm.size(); ++
i) {
3217 for (
i = 0;
i <
lr.size(); ++
i) {
3229 gui()->apply_fullscreen();
3238 ::gui()->minimapview_wdg->show();
3240 ::gui()->minimapview_wdg->hide();
3250 gui()->qt_settings.show_new_turn_text =
true;
3252 gui()->qt_settings.show_new_turn_text =
false;
3262 gui()->qt_settings.show_battle_log =
true;
3264 gui()->qt_settings.show_battle_log =
false;
3305 gui()->map_scale =
gui()->map_scale * 1.2f;
3316 gui()->map_scale = 1.0f;
3332 gui()->map_font_scale =
true;
3338 gui()->map_font_scale =
false;
3348 gui()->map_scale =
gui()->map_scale / 1.2f;
3628 QDialog *dialog =
new QDialog(
this);
3637 sl <<
"default_tileset_overhead_name" <<
"default_tileset_iso_name"
3638 <<
"default_tileset_hex_name" <<
"default_tileset_isohex_name";
3640 dialog->setWindowTitle(
_(
"Available tilesets"));
3642 label->setText(
_(
"Some tilesets might not be compatible with current"
3644 layout->addWidget(label);
3653 but =
new QPushButton(value);
3658 dialog->setSizeGripEnabled(
true);
3659 dialog->setLayout(
layout);
3674 gui()->map_scale = 1.0f;
3675 but->parentWidget()->close();
3683 gui()->trade_gen.calculate();
3717 if (pextra->buildable && pextra->id ==
id
3733 if (pextra->buildable && pextra->id ==
id
3749 gui()->popup_client_options();
3765 gui()->pr_options->popup_server_options();
3820 path = QStandardPaths::writableLocation(QStandardPaths::PicturesLocation);
3823 }
else if (!path.isEmpty()) {
3826 img_name = QStandardPaths::writableLocation(QStandardPaths::HomeLocation)
3831 saved->setStandardButtons(QMessageBox::Ok);
3832 saved->setDefaultButton(QMessageBox::Cancel);
3833 saved->setAttribute(Qt::WA_DeleteOnClose);
3835 saved->set_text_title(
"Image saved as:\n" +
img_name,
_(
"Success"));
3837 saved->set_text_title(
_(
"Failed to save image of the map"),
_(
"Error"));
3865 +
QString(
" (*.sav *.sav.bz2 *.sav.gz *.sav.xz)");
3866 current_file = QFileDialog::getSaveFileName(
gui()->central_wdg,
3867 _(
"Save Game As..."),
3869 if (!current_file.isEmpty()) {
3886 ask->set_text_title(
_(
"Leaving a local game will end it!"),
"Leave game");
3887 ask->setStandardButtons(QMessageBox::Cancel | QMessageBox::Ok);
3888 ask->setDefaultButton(QMessageBox::Cancel);
3889 ask->setAttribute(Qt::WA_DeleteOnClose);
3891 connect(
ask, &hud_message_box::accepted, [=]() {
3893 disconnect_from_server(TRUE);
3909 ask->setIcon(QMessageBox::Warning);
3910 ask->setStandardButtons(QMessageBox::Cancel | QMessageBox::Ok);
3911 ask->setDefaultButton(QMessageBox::Cancel);
3912 ask->setAttribute(Qt::WA_DeleteOnClose);
3913 return (
ask->set_text_title(
_(
"Selection will cancel current assignments!"),
3914 _(
"Confirm Disruptive Selection"),
true)
3915 == 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)
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)
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