Project

General

Profile

Feature #1500 ยป 0093-Send-government-flags-to-client.patch

Marko Lindqvist, 06/12/2025 07:02 AM

View differences:

client/packhand.c
sz_strlcpy(gov->sound_str, p->sound_str);
sz_strlcpy(gov->sound_alt, p->sound_alt);
sz_strlcpy(gov->sound_alt2, p->sound_alt2);
gov->flags = p->flags;
PACKET_STRVEC_EXTRACT(gov->helptext, p->helptext);
......
packet->female_title);
}
/************************************************************************//**
Packet ruleset_gov_flag handler.
****************************************************************************/
void handle_ruleset_gov_flag(const struct packet_ruleset_gov_flag *p)
{
const char *flagname;
const char *helptxt;
fc_assert_ret_msg(p->id >= GOVF_USER_FLAG_1 && p->id <= GOVF_LAST_USER_FLAG,
"Bad user flag %d.", p->id);
if (p->name[0] == '\0') {
flagname = nullptr;
} else {
flagname = p->name;
}
if (p->helptxt[0] == '\0') {
helptxt = nullptr;
} else {
helptxt = p->helptxt;
}
set_user_gov_flag_name(p->id, flagname, helptxt);
}
/************************************************************************//**
Packet ruleset_terrain handler.
****************************************************************************/
common/generate_packets.py
#include "conn_types.h"
#include "disaster.h"
#include "events.h"
#include "government.h"
#include "player.h"
#include "tech.h"
#include "unit.h"
common/networking/packets.def
Max used id:
============
Max id: 518
Max id: 519
Packets are not ordered by their id, but by their category. New packet
with higher id may get added to existing category, and not to the end of file.
......
type BV_RMCAUSES = bitvector(bv_rmcauses)
type BV_CITY_OPTIONS = bitvector(bv_city_options)
type BV_IMPR_FLAGS = bitvector(bv_impr_flags)
type BV_GOV_FLAGS = bitvector(bv_gov_flags)
type BV_IMPRS = bitvector(bv_imprs)
type BV_PLAYER = bitvector(bv_player)
type BV_STARTPOS_NATIONS= bitvector(bv_startpos_nations)
......
STRING sound_str[MAX_LEN_NAME];
STRING sound_alt[MAX_LEN_NAME];
STRING sound_alt2[MAX_LEN_NAME];
BV_GOV_FLAGS flags;
STRVEC helptext;
end
PACKET_RULESET_GOV_FLAG = 519; sc, lsend
UINT8 id;
STRING name[MAX_LEN_NAME];
STRING helptxt[MAX_LEN_PACKET];
end
PACKET_RULESET_TERRAIN_CONTROL = 146; sc, lsend
UINT8 ocean_reclaim_requirement_pct; /* # adjacent land tiles for reclaim */
UINT8 land_channel_requirement_pct; /* # adjacent ocean tiles for channel */
server/ruleset/ruleload.c
{
struct packet_ruleset_government gov;
struct packet_ruleset_government_ruler_title title;
int i;
for (i = 0; i < MAX_NUM_USER_GOVERNMENT_FLAGS; i++) {
struct packet_ruleset_gov_flag fpacket;
const char *flagname;
const char *helptxt;
fpacket.id = i + GOVF_USER_FLAG_1;
flagname = impr_flag_id_name(i + GOVF_USER_FLAG_1);
if (flagname == nullptr) {
fpacket.name[0] = '\0';
} else {
sz_strlcpy(fpacket.name, flagname);
}
helptxt = gov_flag_helptxt(i + GOVF_USER_FLAG_1);
if (helptxt == nullptr) {
fpacket.helptxt[0] = '\0';
} else {
sz_strlcpy(fpacket.helptxt, helptxt);
}
lsend_packet_ruleset_gov_flag(dest, &fpacket);
}
governments_iterate(g) {
/* Send one packet_government */
......
/* Shallow-copy (borrow) requirement vector */
gov.reqs = g->reqs;
gov.flags = g->flags;
sz_strlcpy(gov.name, untranslated_name(&g->name));
sz_strlcpy(gov.rule_name, rule_name_get(&g->name));
sz_strlcpy(gov.graphic_str, g->graphic_str);
    (1-1/1)