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_); \
809#define ADD_OLD_SHORTCUT(wanted_action_id, sc_id) \
810 if (act_id == wanted_action_id) { \
811 item->setShortcut(QKeySequence(shortcut_to_string( \
812 fc_shortcuts::sc()->get_shortcut(sc_id)))); \
826 QObject::connect(
item, &QAction::triggered, [
this,act_id]() {
845 if (
items.isEmpty()) {
857 item->setVisible(
true);
860 item->setVisible(
false);
912 struct tile *ptile =
nullptr;
925 if (
zunit ==
nullptr) {
934 if (ptile ==
nullptr) {
986 act =
sub_menu->addAction(
_(
"Set local options"));
988 act =
sub_menu->addAction(
_(
"Server Options"));
990 act =
sub_menu->addAction(
_(
"Messages"));
992 act =
sub_menu->addAction(
_(
"Shortcuts"));
994 act =
sub_menu->addAction(
_(
"Load another tileset"));
996 act =
sub_menu->addAction(
_(
"Save Options Now"));
997 act->setIcon(style()->
standardIcon(QStyle::SP_DialogSaveButton));
999 act =
sub_menu->addAction(
_(
"Save Options on Exit"));
1000 act->setCheckable(
true);
1005 act->setIcon(style()->
standardIcon(QStyle::SP_DialogSaveButton));
1008 act =
main_menu->addAction(
_(
"Save Game As..."));
1010 act->setIcon(style()->
standardIcon(QStyle::SP_DialogSaveButton));
1012 act =
main_menu->addAction(
_(
"Save Map to Image"));
1019 act =
main_menu->addAction(
_(
"Volume Down"));
1025 act->setIcon(style()->
standardIcon(QStyle::SP_DialogDiscardButton));
1028 act->setIcon(style()->
standardIcon(QStyle::SP_TitleBarCloseButton));
1033 act =
main_menu->addAction(
_(
"Center View"));
1041 act->setCheckable(
true);
1054 osd_status->setChecked(
gui()->qt_settings.show_new_turn_text);
1055 connect(
osd_status, &QAction::triggered,
this,
1073 act =
main_menu->addAction(
_(
"Zoom default"));
1087 act =
main_menu->addAction(
_(
"City Outlines"));
1089 act->setCheckable(
true);
1092 act =
main_menu->addAction(
_(
"City Output"));
1093 act->setCheckable(
true);
1101 act->setCheckable(
true);
1104 act =
main_menu->addAction(
_(
"National Borders"));
1105 act->setCheckable(
true);
1110 act =
main_menu->addAction(
_(
"Native Tiles"));
1111 act->setCheckable(
true);
1115 act =
main_menu->addAction(
_(
"City Full Bar"));
1116 act->setCheckable(
true);
1122 act->setCheckable(
true);
1127 act =
main_menu->addAction(
_(
"City Growth"));
1128 act->setCheckable(
true);
1132 act =
main_menu->addAction(
_(
"City Production"));
1133 act->setCheckable(
true);
1138 act =
main_menu->addAction(
_(
"City Buy Cost"));
1139 act->setCheckable(
true);
1142 act =
main_menu->addAction(
_(
"City Trade Routes"));
1143 act->setCheckable(
true);
1148 act =
main_menu->addAction(
_(
"Unit Stack Size"));
1149 act->setCheckable(
true);
1157 act =
main_menu->addAction(
_(
"Single Unit (Unselect Others)"));
1161 act =
main_menu->addAction(
_(
"All On Tile"));
1166 act =
main_menu->addAction(
_(
"Same Type on Tile"));
1170 act =
main_menu->addAction(
_(
"Same Type on Continent"));
1173 connect(act, &QAction::triggered,
this,
1175 act =
main_menu->addAction(
_(
"Same Type Everywhere"));
1178 connect(act, &QAction::triggered,
this,
1192 act =
main_menu->addAction(
_(
"Advanced unit selection"));
1208 act =
main_menu->addAction(
_(
"Go to Nearest City"));
1212 act =
main_menu->addAction(
_(
"Go to/Airlift to City..."));
1218 act =
main_menu->addAction(
_(
"Auto Explore"));
1225 act->setEnabled(
false);
1235 act =
main_menu->addAction(
_(
"Unsentry All On Tile"));
1251 act =
main_menu->addAction(
_(
"Unload All From Transporter"));
1259 .replace(
"&",
"&&"));
1280 act =
main_menu->addAction(
_(
"Fortify Unit"));
1286 .replace(
"&",
"&&"));
1291 .replace(
"&",
"&&"));
1316 .replace(
"&",
"&&"));
1321 act =
main_menu->addAction(
_(
"Auto Worker"));
1333 act =
main_menu->addAction(
_(
"Build Irrigation"));
1354 act =
main_menu->addAction(
_(
"Connect With Road"));
1358 act =
main_menu->addAction(
_(
"Connect With Railroad"));
1362 act =
main_menu->addAction(
_(
"Connect With Maglev"));
1366 act =
main_menu->addAction(
_(
"Connect With Irrigation"));
1371 act =
main_menu->addAction(
_(
"Transform Terrain"));
1382 .replace(
"&",
"&&"));
1387 .replace(
"&",
"&&"));
1431 act->setCheckable(
true);
1432 act->setChecked(
true);
1438 act->setCheckable(
true);
1439 act->setChecked(
false);
1445 act->setCheckable(
true);
1446 act->setChecked(
false);
1452 act->setCheckable(
true);
1453 act->setChecked(
false);
1460 act->setCheckable(
true);
1461 act->setChecked(
true);
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);
1523 act->setCheckable(
true);
1524 act->setChecked(
false);
1530 act->setCheckable(
true);
1531 act->setChecked(
false);
1538 act =
main_menu->addAction(
_(
"Tax Rates..."));
1544 act =
main_menu->addAction(
_(
"Policies..."));
1576 act =
main_menu->addAction(
_(
"Wonders of the World"));
1585 act =
main_menu->addAction(
_(
"Demographics"));
1593 act =
main_menu->addAction(
_(
"Achievements"));
1596 act =
main_menu->addAction(
_(
"Endgame report"));
1603 act =
main_menu->addAction(
_(
"Select Battle Group 1"));
1607 act =
main_menu->addAction(
_(
"Assign Battle Group 1"));
1611 act =
main_menu->addAction(
_(
"Append to Battle Group 1"));
1615 act =
main_menu->addAction(
_(
"Select Battle Group 2"));
1619 act =
main_menu->addAction(
_(
"Assign Battle Group 2"));
1623 act =
main_menu->addAction(
_(
"Append to Battle Group 2"));
1627 act =
main_menu->addAction(
_(
"Select Battle Group 3"));
1631 act =
main_menu->addAction(
_(
"Assign Battle Group 3"));
1635 act =
main_menu->addAction(
_(
"Append to Battle Group 3"));
1639 act =
main_menu->addAction(
_(
"Select Battle Group 4"));
1643 act =
main_menu->addAction(
_(
"Assign Battle Group 4"));
1647 act =
main_menu->addAction(
_(
"Append to Battle Group 4"));
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]() {
1732 act->setMenuRole(QAction::NoRole);
1734 QObject::connect(act, &QAction::triggered, [
this]() {
1741 act->setMenuRole(QAction::NoRole);
1743 QObject::connect(act, &QAction::triggered, [
this]() {
1750 act->setMenuRole(QAction::NoRole);
1752 QObject::connect(act, &QAction::triggered, [
this]() {
1759 act->setMenuRole(QAction::NoRole);
1761 QObject::connect(act, &QAction::triggered, [
this]() {
1768 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 QObject::connect(act, &QAction::triggered, [
this]() {
1795 QObject::connect(act, &QAction::triggered, [
this]() {
1800 QObject::connect(act, &QAction::triggered, [
this]() {
1807 act->setMenuRole(QAction::NoRole);
1809 QObject::connect(act, &QAction::triggered, [
this]() {
1814 for (i = 0;
i <
menus.count();
i++) {
1815 menus[
i]->setAttribute(Qt::WA_TranslucentBackground);
1838 foreach (
QAction *a,
m->actions()) {
1839 if (a->shortcut() ==
seq && a->isEnabled()) {
1840 a->activate(QAction::Trigger);
1858 gui()->mapview_wdg->menu_click =
true;
1866 foreach (
const QMenu *
m,
menus) {
1881 foreach (
QAction *a,
m->actions()) {
1882 if (a->shortcut() ==
seq &&
fcs->mouse == Qt::AllButtons) {
1902 foreach (
const QMenu *
m,
menus) {
1921 foreach (
QAction *a,
m->actions()) {
1922 if (a->shortcut() ==
seq) {
1923 *
ret = a->text() +
" ("
1924 + a->shortcut().toString(QKeySequence::NativeText) +
")";
1946 foreach (
const QMenu *
m,
menus) {
1985 .replace(
"&",
"&&"));
1986 act->setCheckable(
true);
1989 act->setChecked(
true);
2002 struct unit_list *
punits =
nullptr;
2003 bool enabled =
false;
2017 if (pextra->buildable) {
2022 .replace(
"&",
"&&"));
2025 QObject::connect(act, &QAction::triggered, [
this,
road_id]() {
2030 act->setEnabled(
true);
2033 act->setDisabled(
true);
2049 struct unit_list *
punits =
nullptr;
2050 bool enabled =
false;
2065 if (pextra->buildable) {
2070 .replace(
"&",
"&&"));
2073 QObject::connect(act, &QAction::triggered, [
this,
base_id]() {
2077 act->setEnabled(
true);
2080 act->setDisabled(
true);
2097 QMultiHash <munit, QAction *>::iterator
i;
2098 struct unit_list *
punits =
nullptr;
2104 const struct tile *ptile =
nullptr;
2116 a->setEnabled(
false);
2133 i.value()->setEnabled(
true);
2138 i.value()->setEnabled(
true);
2143 i.value()->setEnabled(
true);
2144 i.value()->setVisible(
true);
2146 i.value()->setVisible(
false);
2150 if (
gui()->is_repo_dlg_open(
"END")) {
2151 i.value()->setEnabled(
true);
2152 i.value()->setVisible(
true);
2154 i.value()->setVisible(
false);
2160 i.value()->setText(
QString(
PL_(
"Top %1 City",
"Top %1 Cities",
2164 i.value()->setText(
QString(
_(
"Top Cities")));
2213 i.value()->setEnabled(
true);
2218 i.value()->setEnabled(
true);
2224 i.value()->setEnabled(
true);
2230 i.value()->setEnabled(
true);
2236 i.value()->setEnabled(
true);
2242 i.value()->setEnabled(
true);
2248 i.value()->setEnabled(
true);
2260 if (pextra !=
nullptr) {
2265 if (pextra !=
nullptr) {
2270 .replace(
"&",
"&&"));
2272 i.value()->setText(
QString(
_(
"Build Mine")));
2275 i.value()->setText(
QString(
_(
"Build Mine")));
2282 i.value()->setEnabled(
true);
2293 if (pextra !=
nullptr) {
2298 if (pextra !=
nullptr) {
2303 .replace(
"&",
"&&"));
2305 i.value()->setText(
QString(
_(
"Build Irrigation")));
2308 i.value()->setText(
QString(
_(
"Build Irrigation")));
2315 i.value()->setEnabled(
true);
2327 .replace(
"&",
"&&"));
2329 i.value()->setText(
QString(
_(
"Cultivate")));
2332 i.value()->setText(
QString(
_(
"Cultivate")));
2338 i.value()->setEnabled(
true);
2350 .replace(
"&",
"&&"));
2352 i.value()->setText(
QString(
_(
"Plant")));
2355 i.value()->setText(
QString(
_(
"Plant")));
2361 i.value()->setEnabled(
true);
2376 .replace(
"&",
"&&"));
2378 i.value()->setText(
_(
"Transform Terrain"));
2386 i.value()->setEnabled(
true);
2392 .replace(
"&",
"&&"));
2396 .replace(
"&",
"&&"));
2405 i.value()->setEnabled(
true);
2410 if (pextra !=
nullptr) {
2415 if (pextra !=
nullptr) {
2420 .replace(
"&",
"&&"));
2427 i.value()->setEnabled(
true);
2433 i.value()->setEnabled(
true);
2439 i.value()->setEnabled(
true);
2445 i.value()->setEnabled(
true);
2451 i.value()->setEnabled(
true);
2457 i.value()->setEnabled(
true);
2459 .replace(
"&",
"&&"));
2465 i.value()->setEnabled(
true);
2471 i.value()->setEnabled(
true);
2477 i.value()->setEnabled(
true);
2483 i.value()->setEnabled(
true);
2486 i.value()->setText(
_(
"Auto Settler"));
2488 i.value()->setText(
_(
"Auto Worker"));
2493 if (
proad !=
nullptr) {
2499 i.value()->setEnabled(
true);
2505 i.value()->setEnabled(
true);
2511 if (
proad !=
nullptr) {
2517 i.value()->setEnabled(
true);
2523 if (
proad !=
nullptr) {
2529 i.value()->setEnabled(
true);
2542 i.value()->setEnabled(
true);
2550 i.value()->setEnabled(
true);
2556 i.value()->setEnabled(
true);
2563 .replace(
"&",
"&&"));
2565 i.value()->setEnabled(
true);
2571 i.value()->setEnabled(
true);
2578 .replace(
"&",
"&&"));
2580 i.value()->setEnabled(
true);
2586 i.value()->setEnabled(
true);
2592 i.value()->setEnabled(
true);
2619 if (pplayer !=
nullptr) {
2637 ::gui()->game_tab_widget->setCurrentIndex(0);
2693 if (pextra !=
nullptr) {
2722 if (
prail !=
nullptr) {
2768 if (
proad !=
nullptr) {
2924 gui()->rallies.hover_tile =
false;
2925 gui()->rallies.hover_city =
true;
2933 gui()->trade_gen.hover_city =
true;
2941 gui()->trade_gen.add_all_cities();
2949 gui()->trade_gen.calculate();
2957 gui()->trade_gen.clear_trade_planing();
2967 struct city *homecity;
2969 struct tile *dest_tile;
2975 foreach(
gilles,
gui()->trade_gen.lines) {
2977 &&
gilles.autocaravan ==
nullptr) {
2997 gui()->infotab->chtwdg->append(
_(
"Didn't find any trade route"
3090 if (
punit ==
nullptr) {
3218 if (
gui()->interface_locked) {
3223 gui()->interface_locked = !
gui()->interface_locked;
3240 for (
i = 0;
i <
lc.size(); ++
i) {
3243 for (
i = 0;
i <
lm.size(); ++
i) {
3246 for (
i = 0;
i <
lr.size(); ++
i) {
3258 gui()->apply_fullscreen();
3267 ::gui()->minimapview_wdg->show();
3269 ::gui()->minimapview_wdg->hide();
3279 gui()->qt_settings.show_new_turn_text =
true;
3281 gui()->qt_settings.show_new_turn_text =
false;
3291 gui()->qt_settings.show_battle_log =
true;
3293 gui()->qt_settings.show_battle_log =
false;
3334 gui()->map_scale =
gui()->map_scale * 1.2f;
3345 gui()->map_scale = 1.0f;
3361 gui()->map_font_scale =
true;
3367 gui()->map_font_scale =
false;
3377 gui()->map_scale =
gui()->map_scale / 1.2f;
3657 QDialog *dialog =
new QDialog(
this);
3666 sl <<
"default_tileset_overhead_name" <<
"default_tileset_iso_name"
3667 <<
"default_tileset_hex_name" <<
"default_tileset_isohex_name";
3669 dialog->setWindowTitle(
_(
"Available tilesets"));
3671 label->setText(
_(
"Some tilesets might not be compatible with current"
3673 layout->addWidget(label);
3682 but =
new QPushButton(value);
3687 dialog->setSizeGripEnabled(
true);
3688 dialog->setLayout(
layout);
3703 gui()->map_scale = 1.0f;
3704 but->parentWidget()->close();
3712 gui()->trade_gen.calculate();
3746 if (pextra->buildable && pextra->id ==
id
3762 if (pextra->buildable && pextra->id ==
id
3778 gui()->popup_client_options();
3794 gui()->pr_options->popup_server_options();
3849 path = QStandardPaths::writableLocation(QStandardPaths::PicturesLocation);
3852 }
else if (!path.isEmpty()) {
3855 img_name = QStandardPaths::writableLocation(QStandardPaths::HomeLocation)
3860 saved->setStandardButtons(QMessageBox::Ok);
3861 saved->setDefaultButton(QMessageBox::Cancel);
3862 saved->setAttribute(Qt::WA_DeleteOnClose);
3864 saved->set_text_title(
"Image saved as:\n" +
img_name,
_(
"Success"));
3866 saved->set_text_title(
_(
"Failed to save image of the map"),
_(
"Error"));
3894 +
QString(
" (*.sav *.sav.bz2 *.sav.gz *.sav.xz)");
3895 current_file = QFileDialog::getSaveFileName(
gui()->central_wdg,
3896 _(
"Save Game As..."),
3898 if (!current_file.isEmpty()) {
3915 ask->set_text_title(
_(
"Leaving a local game will end it!"),
"Leave game");
3916 ask->setStandardButtons(QMessageBox::Cancel | QMessageBox::Ok);
3917 ask->setDefaultButton(QMessageBox::Cancel);
3918 ask->setAttribute(Qt::WA_DeleteOnClose);
3920 connect(
ask, &hud_message_box::accepted, [=]() {
3922 gui()->infotab->msgwdg->clr();
3923 disconnect_from_server(TRUE);
3963 ask->setIcon(QMessageBox::Warning);
3964 ask->setStandardButtons(QMessageBox::Cancel | QMessageBox::Ok);
3965 ask->setDefaultButton(QMessageBox::Cancel);
3966 ask->setAttribute(Qt::WA_DeleteOnClose);
3967 return (
ask->set_text_title(
_(
"Selection will cancel current assignments!"),
3968 _(
"Confirm Disruptive Selection"),
true)
3969 == 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)
bool audio_is_dummy_plugin(void)
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)
#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