19#include <QActionGroup>
20#include <QApplication>
25#include <QStandardPaths>
96 for (
i = 0;
i < s;
i++) {
119 gui()->mapview_wdg->repaint();
130 gui()->infotab->chtwdg->append(
QString(
_(
"Adding city %1 to trade planning"))
145 if (pcity !=
nullptr) {
146 if (tc->
city == pcity) {
157 if (pcity !=
nullptr) {
177 gui()->infotab->chtwdg->append(
178 QString(
_(
"Removing city %1 from trade planning"))
194 if (c->
tile == ptile) {
196 gui()->infotab->chtwdg->append(
197 QString(
_(
"Removing city %1 from trade planning")).arg(c->
name));
237 int count =
cities.size();
241 for (
i = 0;
i < 100;
i++) {
246 for (
n = 0;
n < count;
n++) {
253 for (
n = 0;
n < count;
n++) {
290 PL_(
"City %s - 1 free trade route.",
291 "City %s - %d free trade routes.",
302 gui()->mapview_wdg->repaint();
315 if (pcity != tc->
city) {
348 for (
int i = j;
i > -j;
i--) {
365 ttc->pos_cities.removeOne(tc->
city);
367 ttc->poss_trade_num--;
383 for (
int i =
cities.size() - 1 ;
i >= 0;
i--) {
406 for (
int i =
cities.size() - 1 ;
i >= 0;
i--) {
409 &&
ttc->pos_cities.contains(tc->
city)
428 if (
ttc->done ||
ttc->over_max > 0
433 &&
ttc->pos_cities.contains(tc->
city)) {
437 ttc->pos_cities.removeOne(tc->
city);
439 ttc->poss_trade_num--;
441 ttc->new_tr_cities.append(
ttc->city);
449 gilles.autocaravan =
nullptr;
515 gui()->menu_bar->clear();
516 gui()->menu_bar->setup_menus();
531 gui()->menuBar()->setVisible(
true);
533 gui()->menu_bar->menus_sensitive();
534 gui()->menu_bar->update_airlift_menu();
535 gui()->menu_bar->update_roads_menu();
536 gui()->menu_bar->update_bases_menu();
539 gui()->unitinfo_wdg->update_actions(
nullptr);
542 gui()->menuBar()->setVisible(
false);
593 foreach(
action, QWidget::actions()) {
618 QObject::connect(
action, &QAction::triggered, [
this,
i]() {
698 : QMenu(
_(
"Go to and..."),
parent)
738 .replace(
"&",
"&&"));
754#define CREATE_SUB_ITEM(_menu_, _act_id_, _sub_tgt_id_, _sub_tgt_name_) \
756 QAction *_sub_item_ = _menu_->addAction(_sub_tgt_name_); \
757 int _sub_target_id_ = _sub_tgt_id_; \
758 QObject::connect(_sub_item_, &QAction::triggered, \
759 [this, _act_id_, _sub_target_id_]() { \
760 start_go_act(_act_id_, _sub_target_id_); \
805#define ADD_OLD_SHORTCUT(wanted_action_id, sc_id) \
806 if (act_id == wanted_action_id) { \
807 item->setShortcut(QKeySequence(shortcut_to_string( \
808 fc_shortcuts::sc()->get_shortcut(sc_id)))); \
822 QObject::connect(
item, &QAction::triggered, [
this,act_id]() {
841 if (
items.isEmpty()) {
853 item->setVisible(
true);
856 item->setVisible(
false);
908 struct tile *ptile =
nullptr;
921 if (
zunit ==
nullptr) {
930 if (ptile ==
nullptr) {
982 act =
sub_menu->addAction(
_(
"Set local options"));
984 act =
sub_menu->addAction(
_(
"Server Options"));
986 act =
sub_menu->addAction(
_(
"Messages"));
988 act =
sub_menu->addAction(
_(
"Shortcuts"));
990 act =
sub_menu->addAction(
_(
"Load another tileset"));
992 act =
sub_menu->addAction(
_(
"Save Options Now"));
993 act->setIcon(style()->
standardIcon(QStyle::SP_DialogSaveButton));
995 act =
sub_menu->addAction(
_(
"Save Options on Exit"));
996 act->setCheckable(
true);
1001 act->setIcon(style()->
standardIcon(QStyle::SP_DialogSaveButton));
1004 act =
main_menu->addAction(
_(
"Save Game As..."));
1006 act->setIcon(style()->
standardIcon(QStyle::SP_DialogSaveButton));
1008 act =
main_menu->addAction(
_(
"Save Map to Image"));
1012 act->setIcon(style()->
standardIcon(QStyle::SP_DialogDiscardButton));
1015 act->setIcon(style()->
standardIcon(QStyle::SP_TitleBarCloseButton));
1020 act =
main_menu->addAction(
_(
"Center View"));
1028 act->setCheckable(
true);
1041 osd_status->setChecked(
gui()->qt_settings.show_new_turn_text);
1042 connect(
osd_status, &QAction::triggered,
this,
1060 act =
main_menu->addAction(
_(
"Zoom default"));
1074 act =
main_menu->addAction(
_(
"City Outlines"));
1075 act->setCheckable(
true);
1078 act =
main_menu->addAction(
_(
"City Output"));
1079 act->setCheckable(
true);
1087 act->setCheckable(
true);
1090 act =
main_menu->addAction(
_(
"National Borders"));
1091 act->setCheckable(
true);
1096 act =
main_menu->addAction(
_(
"Native Tiles"));
1097 act->setCheckable(
true);
1101 act =
main_menu->addAction(
_(
"City Full Bar"));
1102 act->setCheckable(
true);
1108 act->setCheckable(
true);
1113 act =
main_menu->addAction(
_(
"City Growth"));
1114 act->setCheckable(
true);
1118 act =
main_menu->addAction(
_(
"City Production"));
1119 act->setCheckable(
true);
1124 act =
main_menu->addAction(
_(
"City Buy Cost"));
1125 act->setCheckable(
true);
1128 act =
main_menu->addAction(
_(
"City Trade Routes"));
1129 act->setCheckable(
true);
1134 act =
main_menu->addAction(
_(
"Unit Stack Size"));
1135 act->setCheckable(
true);
1143 act =
main_menu->addAction(
_(
"Single Unit (Unselect Others)"));
1147 act =
main_menu->addAction(
_(
"All On Tile"));
1152 act =
main_menu->addAction(
_(
"Same Type on Tile"));
1156 act =
main_menu->addAction(
_(
"Same Type on Continent"));
1159 connect(act, &QAction::triggered,
this,
1161 act =
main_menu->addAction(
_(
"Same Type Everywhere"));
1164 connect(act, &QAction::triggered,
this,
1178 act =
main_menu->addAction(
_(
"Advanced unit selection"));
1194 act =
main_menu->addAction(
_(
"Go to Nearest City"));
1198 act =
main_menu->addAction(
_(
"Go to/Airlift to City..."));
1204 act =
main_menu->addAction(
_(
"Auto Explore"));
1211 act->setEnabled(
false);
1221 act =
main_menu->addAction(
_(
"Unsentry All On Tile"));
1237 act =
main_menu->addAction(
_(
"Unload All From Transporter"));
1266 act =
main_menu->addAction(
_(
"Fortify Unit"));
1272 .replace(
"&",
"&&"));
1277 .replace(
"&",
"&&"));
1307 act =
main_menu->addAction(
_(
"Auto Settler"));
1319 act =
main_menu->addAction(
_(
"Build Irrigation"));
1340 act =
main_menu->addAction(
_(
"Connect With Road"));
1344 act =
main_menu->addAction(
_(
"Connect With Railroad"));
1348 act =
main_menu->addAction(
_(
"Connect With Maglev"));
1352 act =
main_menu->addAction(
_(
"Connect With Irrigation"));
1357 act =
main_menu->addAction(
_(
"Transform Terrain"));
1417 act->setCheckable(
true);
1418 act->setChecked(
true);
1424 act->setCheckable(
true);
1425 act->setChecked(
false);
1431 act->setCheckable(
true);
1432 act->setChecked(
false);
1438 act->setCheckable(
true);
1439 act->setChecked(
false);
1446 act->setCheckable(
true);
1447 act->setChecked(
true);
1453 act->setCheckable(
true);
1454 act->setChecked(
false);
1460 act->setCheckable(
true);
1461 act->setChecked(
false);
1467 act->setCheckable(
true);
1468 act->setChecked(
false);
1474 act->setCheckable(
true);
1475 act->setChecked(
false);
1481 act->setCheckable(
true);
1482 act->setChecked(
false);
1488 act->setCheckable(
true);
1489 act->setChecked(
false);
1495 act->setCheckable(
true);
1496 act->setChecked(
false);
1502 act->setCheckable(
true);
1503 act->setChecked(
false);
1509 act->setCheckable(
true);
1510 act->setChecked(
false);
1516 act->setCheckable(
true);
1517 act->setChecked(
false);
1524 act =
main_menu->addAction(
_(
"Tax Rates..."));
1529 act =
main_menu->addAction(
_(
"Policies..."));
1561 act =
main_menu->addAction(
_(
"Wonders of the World"));
1570 act =
main_menu->addAction(
_(
"Demographics"));
1578 act =
main_menu->addAction(
_(
"Achievements"));
1581 act =
main_menu->addAction(
_(
"Endgame report"));
1588 act =
main_menu->addAction(
_(
"Select Battle Group 1"));
1592 act =
main_menu->addAction(
_(
"Assign Battle Group 1"));
1596 act =
main_menu->addAction(
_(
"Append to Battle Group 1"));
1600 act =
main_menu->addAction(
_(
"Select Battle Group 2"));
1604 act =
main_menu->addAction(
_(
"Assign Battle Group 2"));
1608 act =
main_menu->addAction(
_(
"Append to Battle Group 2"));
1612 act =
main_menu->addAction(
_(
"Select Battle Group 3"));
1616 act =
main_menu->addAction(
_(
"Assign Battle Group 3"));
1620 act =
main_menu->addAction(
_(
"Append to Battle Group 3"));
1624 act =
main_menu->addAction(
_(
"Select Battle Group 4"));
1628 act =
main_menu->addAction(
_(
"Assign Battle Group 4"));
1632 act =
main_menu->addAction(
_(
"Append to Battle Group 4"));
1640 QObject::connect(act, &QAction::triggered, [
this]() {
1645 QObject::connect(act, &QAction::triggered, [
this]() {
1650 QObject::connect(act, &QAction::triggered, [
this]() {
1655 QObject::connect(act, &QAction::triggered, [
this]() {
1660 QObject::connect(act, &QAction::triggered, [
this]() {
1665 QObject::connect(act, &QAction::triggered, [
this]() {
1670 QObject::connect(act, &QAction::triggered, [
this]() {
1675 QObject::connect(act, &QAction::triggered, [
this]() {
1680 QObject::connect(act, &QAction::triggered, [
this]() {
1685 QObject::connect(act, &QAction::triggered, [
this]() {
1690 QObject::connect(act, &QAction::triggered, [
this]() {
1695 QObject::connect(act, &QAction::triggered, [
this]() {
1700 QObject::connect(act, &QAction::triggered, [
this]() {
1705 QObject::connect(act, &QAction::triggered, [
this]() {
1710 QObject::connect(act, &QAction::triggered, [
this]() {
1715 QObject::connect(act, &QAction::triggered, [
this]() {
1720 QObject::connect(act, &QAction::triggered, [
this]() {
1725 QObject::connect(act, &QAction::triggered, [
this]() {
1730 QObject::connect(act, &QAction::triggered, [
this]() {
1737 QObject::connect(act, &QAction::triggered, [
this]() {
1742 QObject::connect(act, &QAction::triggered, [
this]() {
1747 QObject::connect(act, &QAction::triggered, [
this]() {
1752 QObject::connect(act, &QAction::triggered, [
this]() {
1757 QObject::connect(act, &QAction::triggered, [
this]() {
1764 QObject::connect(act, &QAction::triggered, [
this]() {
1769 QObject::connect(act, &QAction::triggered, [
this]() {
1774 QObject::connect(act, &QAction::triggered, [
this]() {
1779 for (i = 0;
i <
menus.count();
i++) {
1780 menus[
i]->setAttribute(Qt::WA_TranslucentBackground);
1803 foreach (
QAction *a,
m->actions()) {
1804 if (a->shortcut() ==
seq && a->isEnabled()) {
1805 a->activate(QAction::Trigger);
1823 gui()->mapview_wdg->menu_click =
true;
1831 foreach (
const QMenu *
m,
menus) {
1846 foreach (
QAction *a,
m->actions()) {
1847 if (a->shortcut() ==
seq &&
fcs->mouse == Qt::AllButtons) {
1867 foreach (
const QMenu *
m,
menus) {
1886 foreach (
QAction *a,
m->actions()) {
1887 if (a->shortcut() ==
seq) {
1888 *
ret = a->text() +
" ("
1889 + a->shortcut().toString(QKeySequence::NativeText) +
")";
1911 foreach (
const QMenu *
m,
menus) {
1948 act->setCheckable(
true);
1951 act->setChecked(
true);
1964 struct unit_list *
punits =
nullptr;
1965 bool enabled =
false;
1979 if (pextra->buildable) {
1987 QObject::connect(act, &QAction::triggered, [
this,
road_id]() {
1992 act->setEnabled(
true);
1995 act->setDisabled(
true);
2011 struct unit_list *
punits =
nullptr;
2012 bool enabled =
false;
2027 if (pextra->buildable) {
2035 QObject::connect(act, &QAction::triggered, [
this,
base_id]() {
2039 act->setEnabled(
true);
2042 act->setDisabled(
true);
2059 QMultiHash <munit, QAction *>::iterator
i;
2060 struct unit_list *
punits =
nullptr;
2078 a->setEnabled(
false);
2095 i.value()->setEnabled(
true);
2100 i.value()->setEnabled(
true);
2105 i.value()->setEnabled(
true);
2106 i.value()->setVisible(
true);
2108 i.value()->setVisible(
false);
2112 if (
gui()->is_repo_dlg_open(
"END")) {
2113 i.value()->setEnabled(
true);
2114 i.value()->setVisible(
true);
2116 i.value()->setVisible(
false);
2122 i.value()->setText(
QString(
PL_(
"Top %1 City",
"Top %1 Cities",
2126 i.value()->setText(
QString(
_(
"Top Cities")));
2172 i.value()->setEnabled(
true);
2177 i.value()->setEnabled(
true);
2183 i.value()->setEnabled(
true);
2189 i.value()->setEnabled(
true);
2195 i.value()->setEnabled(
true);
2201 i.value()->setEnabled(
true);
2207 i.value()->setEnabled(
true);
2219 if (pextra !=
NULL) {
2224 if (pextra !=
NULL) {
2231 i.value()->setText(
QString(
_(
"Build Mine")));
2234 i.value()->setText(
QString(
_(
"Build Mine")));
2241 i.value()->setEnabled(
true);
2252 if (pextra !=
NULL) {
2257 if (pextra !=
NULL) {
2264 i.value()->setText(
QString(
_(
"Build Irrigation")));
2267 i.value()->setText(
QString(
_(
"Build Irrigation")));
2274 i.value()->setEnabled(
true);
2288 i.value()->setText(
QString(
_(
"Cultivate")));
2291 i.value()->setText(
QString(
_(
"Cultivate")));
2297 i.value()->setEnabled(
true);
2311 i.value()->setText(
QString(
_(
"Plant")));
2314 i.value()->setText(
QString(
_(
"Plant")));
2320 i.value()->setEnabled(
true);
2337 i.value()->setText(
_(
"Transform Terrain"));
2345 i.value()->setEnabled(
true);
2364 i.value()->setEnabled(
true);
2369 if (pextra !=
nullptr) {
2374 if (pextra !=
nullptr) {
2386 i.value()->setEnabled(
true);
2392 i.value()->setEnabled(
true);
2398 i.value()->setEnabled(
true);
2404 i.value()->setEnabled(
true);
2410 i.value()->setEnabled(
true);
2416 i.value()->setEnabled(
true);
2424 i.value()->setEnabled(
true);
2430 i.value()->setEnabled(
true);
2436 i.value()->setEnabled(
true);
2442 i.value()->setEnabled(
true);
2445 i.value()->setText(
_(
"Auto Settler"));
2447 i.value()->setText(
_(
"Auto Worker"));
2458 i.value()->setEnabled(
true);
2464 i.value()->setEnabled(
true);
2476 i.value()->setEnabled(
true);
2488 i.value()->setEnabled(
true);
2501 i.value()->setEnabled(
true);
2509 i.value()->setEnabled(
true);
2515 i.value()->setEnabled(
true);
2524 i.value()->setEnabled(
true);
2530 i.value()->setEnabled(
true);
2539 i.value()->setEnabled(
true);
2545 i.value()->setEnabled(
true);
2551 i.value()->setEnabled(
true);
2594 ::gui()->game_tab_widget->setCurrentIndex(0);
2650 if (pextra !=
NULL) {
2881 gui()->rallies.hover_tile =
false;
2882 gui()->rallies.hover_city =
true;
2890 gui()->trade_gen.hover_city =
true;
2898 gui()->trade_gen.add_all_cities();
2906 gui()->trade_gen.calculate();
2914 gui()->trade_gen.clear_trade_planing();
2924 struct city *homecity;
2926 struct tile *dest_tile;
2932 foreach(
gilles,
gui()->trade_gen.lines) {
2934 &&
gilles.autocaravan ==
nullptr) {
2954 gui()->infotab->chtwdg->append(
_(
"Didn't find any trade route"
3047 if (
punit ==
nullptr) {
3175 if (
gui()->interface_locked) {
3180 gui()->interface_locked = !
gui()->interface_locked;
3197 for (
i = 0;
i <
lc.size(); ++
i) {
3200 for (
i = 0;
i <
lm.size(); ++
i) {
3203 for (
i = 0;
i <
lr.size(); ++
i) {
3215 gui()->apply_fullscreen();
3224 ::gui()->minimapview_wdg->show();
3226 ::gui()->minimapview_wdg->hide();
3236 gui()->qt_settings.show_new_turn_text =
true;
3238 gui()->qt_settings.show_new_turn_text =
false;
3248 gui()->qt_settings.show_battle_log =
true;
3250 gui()->qt_settings.show_battle_log =
false;
3291 gui()->map_scale =
gui()->map_scale * 1.2f;
3302 gui()->map_scale = 1.0f;
3318 gui()->map_font_scale =
true;
3324 gui()->map_font_scale =
false;
3334 gui()->map_scale =
gui()->map_scale / 1.2f;
3614 QDialog *dialog =
new QDialog(
this);
3623 sl <<
"default_tileset_overhead_name" <<
"default_tileset_iso_name"
3624 <<
"default_tileset_hex_name" <<
"default_tileset_isohex_name";
3626 dialog->setWindowTitle(
_(
"Available tilesets"));
3628 label->setText(
_(
"Some tilesets might not be compatible with current"
3630 layout->addWidget(label);
3639 but =
new QPushButton(value);
3644 dialog->setSizeGripEnabled(
true);
3645 dialog->setLayout(
layout);
3660 gui()->map_scale = 1.0f;
3661 but->parentWidget()->close();
3669 gui()->trade_gen.calculate();
3703 if (pextra->buildable && pextra->id ==
id
3719 if (pextra->buildable && pextra->id ==
id
3735 gui()->popup_client_options();
3751 gui()->pr_options->popup_server_options();
3806 path = QStandardPaths::writableLocation(QStandardPaths::PicturesLocation);
3809 }
else if (!path.isEmpty()) {
3812 img_name = QStandardPaths::writableLocation(QStandardPaths::HomeLocation)
3817 saved->setStandardButtons(QMessageBox::Ok);
3818 saved->setDefaultButton(QMessageBox::Cancel);
3819 saved->setAttribute(Qt::WA_DeleteOnClose);
3821 saved->set_text_title(
"Image saved as:\n" +
img_name,
_(
"Success"));
3823 saved->set_text_title(
_(
"Failed to save image of the map"),
_(
"Error"));
3851 +
QString(
" (*.sav *.sav.bz2 *.sav.gz *.sav.xz)");
3852 current_file = QFileDialog::getSaveFileName(
gui()->central_wdg,
3853 _(
"Save Game As..."),
3855 if (!current_file.isEmpty()) {
3872 ask->set_text_title(
_(
"Leaving a local game will end it!"),
"Leave game");
3873 ask->setStandardButtons(QMessageBox::Cancel | QMessageBox::Ok);
3874 ask->setDefaultButton(QMessageBox::Cancel);
3875 ask->setAttribute(Qt::WA_DeleteOnClose);
3877 connect(
ask, &hud_message_box::accepted, [=]() {
3879 disconnect_from_server(TRUE);
3895 ask->setIcon(QMessageBox::Warning);
3896 ask->setStandardButtons(QMessageBox::Cancel | QMessageBox::Ok);
3897 ask->setDefaultButton(QMessageBox::Cancel);
3898 ask->setAttribute(Qt::WA_DeleteOnClose);
3899 return (
ask->set_text_title(
_(
"Selection will cancel current assignments!"),
3900 _(
"Confirm Disruptive Selection"),
true)
3901 == QMessageBox::Ok);
const char * action_name_translation(const struct action *action)
const char * action_id_name_translation(action_id act_id)
enum action_sub_target_kind action_get_sub_target_kind(const struct action *paction)
bool actions_are_ready(void)
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)
#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_auto_settle(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_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
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 science_report_dialog_popup(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)
void popup_shortcuts_dialog()
void toggle_units_report(bool)
#define players_iterate_end
#define players_iterate(_pplayer)
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)
#define strvec_iterate(psv, str)
#define strvec_iterate_end
struct packet_game_info info
struct civ_game::@31::@34 client
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)
bool have_cities_trade_route(const struct city *pc1, const struct city *pc2)
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_autosettlers(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 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_can_unload(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