Feature #152 ยป 0041-Add-either_reqs-support-for-clauses.patch
| client/packhand.c | ||
|---|---|---|
|
requirement_vector_append(&info->receiver_reqs, p->receiver_reqs[i]);
|
||
|
}
|
||
|
fc_assert(info->receiver_reqs.size == p->receiver_reqs_count);
|
||
|
for (i = 0; i < p->either_reqs_count; i++) {
|
||
|
requirement_vector_append(&info->either_reqs, p->either_reqs[i]);
|
||
|
}
|
||
|
fc_assert(info->either_reqs.size == p->either_reqs_count);
|
||
|
}
|
||
|
/************************************************************************//**
|
||
| common/diptreaty.c | ||
|---|---|---|
|
return FALSE;
|
||
|
}
|
||
|
}
|
||
|
if (client_player == NULL) {
|
||
|
if (!are_reqs_active(&(const struct req_context) { .player = pfrom },
|
||
|
pfrom, &clause_infos[type].either_reqs,
|
||
|
RPT_POSSIBLE)
|
||
|
&& !are_reqs_active(&(const struct req_context) { .player = pto },
|
||
|
pfrom, &clause_infos[type].either_reqs,
|
||
|
RPT_POSSIBLE)) {
|
||
|
return FALSE;
|
||
|
}
|
||
|
}
|
||
|
clause_list_iterate(ptreaty->clauses, old_clause) {
|
||
|
if (old_clause->type == type
|
||
| common/diptreaty.h | ||
|---|---|---|
|
bool enabled;
|
||
|
struct requirement_vector giver_reqs;
|
||
|
struct requirement_vector receiver_reqs;
|
||
|
struct requirement_vector either_reqs;
|
||
|
};
|
||
|
/* For when we need to iterate over treaties */
|
||
| common/networking/packets.def | ||
|---|---|---|
|
REQUIREMENT giver_reqs[MAX_NUM_REQS:giver_reqs_count];
|
||
|
UINT8 receiver_reqs_count;
|
||
|
REQUIREMENT receiver_reqs[MAX_NUM_REQS:receiver_reqs_count];
|
||
|
UINT8 either_reqs_count;
|
||
|
REQUIREMENT either_reqs[MAX_NUM_REQS:either_reqs_count];
|
||
|
end
|
||
|
/**************************************************************************
|
||
| data/alien/game.ruleset | ||
|---|---|---|
|
; type = Type of the clause, one of "Advance", "Gold", "Map", "Seamap",
|
||
|
; "City", "Ceasefire", "Peace", "Alliance", "Vision", "Embassy",
|
||
|
; "SharedTiles"
|
||
|
; giver_reqs = requirements that the giving side of the clause needs to fulfill
|
||
|
; giver_reqs = requirements that the giving side of the clause needs to meet
|
||
|
; (see effects.ruleset and README.effects for help on requirements)
|
||
|
; receiver_reqs = requirements that the receiving side of the clause needs to fulfill
|
||
|
; receiver_reqs = requirements that the receiving side of the clause needs to meet
|
||
|
; either_reqs = requirements that either side of the clause transaction would need to meet
|
||
|
;
|
||
|
; */ <-- avoid gettext warnings
|
||
| data/civ1/game.ruleset | ||
|---|---|---|
|
; type = Type of the clause, one of "Advance", "Gold", "Map", "Seamap",
|
||
|
; "City", "Ceasefire", "Peace", "Alliance", "Vision", "Embassy",
|
||
|
; "SharedTiles"
|
||
|
; giver_reqs = requirements that the giving side of the clause needs to fulfill
|
||
|
; giver_reqs = requirements that the giving side of the clause needs to meet
|
||
|
; (see effects.ruleset and README.effects for help on requirements)
|
||
|
; receiver_reqs = requirements that the receiving side of the clause needs to fulfill
|
||
|
; receiver_reqs = requirements that the receiving side of the clause needs to meet
|
||
|
; either_reqs = requirements that either side of the clause transaction would need to meet
|
||
|
;
|
||
|
; */ <-- avoid gettext warnings
|
||
| data/civ2/game.ruleset | ||
|---|---|---|
|
; type = Type of the clause, one of "Advance", "Gold", "Map", "Seamap",
|
||
|
; "City", "Ceasefire", "Peace", "Alliance", "Vision", "Embassy",
|
||
|
; "SharedTiles"
|
||
|
; giver_reqs = requirements that the giving side of the clause needs to fulfill
|
||
|
; giver_reqs = requirements that the giving side of the clause needs to meet
|
||
|
; (see effects.ruleset and README.effects for help on requirements)
|
||
|
; receiver_reqs = requirements that the receiving side of the clause needs to fulfill
|
||
|
; receiver_reqs = requirements that the receiving side of the clause needs to meet
|
||
|
; either_reqs = requirements that either side of the clause transaction would need to meet
|
||
|
;
|
||
|
; */ <-- avoid gettext warnings
|
||
| data/civ2civ3/game.ruleset | ||
|---|---|---|
|
; type = Type of the clause, one of "Advance", "Gold", "Map", "Seamap",
|
||
|
; "City", "Ceasefire", "Peace", "Alliance", "Vision", "Embassy",
|
||
|
; "SharedTiles"
|
||
|
; giver_reqs = requirements that the giving side of the clause needs to fulfill
|
||
|
; giver_reqs = requirements that the giving side of the clause needs to meet
|
||
|
; (see effects.ruleset and README.effects for help on requirements)
|
||
|
; receiver_reqs = requirements that the receiving side of the clause needs to fulfill
|
||
|
; receiver_reqs = requirements that the receiving side of the clause needs to meet
|
||
|
; either_reqs = requirements that either side of the clause transaction would need to meet
|
||
|
;
|
||
|
; */ <-- avoid gettext warnings
|
||
| data/classic/game.ruleset | ||
|---|---|---|
|
; type = Type of the clause, one of "Advance", "Gold", "Map", "Seamap",
|
||
|
; "City", "Ceasefire", "Peace", "Alliance", "Vision", "Embassy",
|
||
|
; "SharedTiles"
|
||
|
; giver_reqs = requirements that the giving side of the clause needs to fulfill
|
||
|
; giver_reqs = requirements that the giving side of the clause needs to meet
|
||
|
; (see effects.ruleset and README.effects for help on requirements)
|
||
|
; receiver_reqs = requirements that the receiving side of the clause needs to fulfill
|
||
|
; receiver_reqs = requirements that the receiving side of the clause needs to meet
|
||
|
; either_reqs = requirements that either side of the clause transaction would need to meet
|
||
|
;
|
||
|
; */ <-- avoid gettext warnings
|
||
| data/goldkeep/game.ruleset | ||
|---|---|---|
|
; type = Type of the clause, one of "Advance", "Gold", "Map", "Seamap",
|
||
|
; "City", "Ceasefire", "Peace", "Alliance", "Vision", "Embassy",
|
||
|
; "SharedTiles"
|
||
|
; giver_reqs = requirements that the giving side of the clause needs to fulfill
|
||
|
; giver_reqs = requirements that the giving side of the clause needs to meet
|
||
|
; (see effects.ruleset and README.effects for help on requirements)
|
||
|
; receiver_reqs = requirements that the receiving side of the clause needs to fulfill
|
||
|
; receiver_reqs = requirements that the receiving side of the clause needs to meet
|
||
|
; either_reqs = requirements that either side of the clause transaction would need to meet
|
||
|
;
|
||
|
; */ <-- avoid gettext warnings
|
||
| data/granularity/game.ruleset | ||
|---|---|---|
|
; type = Type of the clause, one of "Advance", "Gold", "Map", "Seamap",
|
||
|
; "City", "Ceasefire", "Peace", "Alliance", "Vision", "Embassy",
|
||
|
; "SharedTiles"
|
||
|
; giver_reqs = requirements that the giving side of the clause needs to fulfill
|
||
|
; giver_reqs = requirements that the giving side of the clause needs to meet
|
||
|
; (see effects.ruleset and README.effects for help on requirements)
|
||
|
; receiver_reqs = requirements that the receiving side of the clause needs to fulfill
|
||
|
; receiver_reqs = requirements that the receiving side of the clause needs to meet
|
||
|
; either_reqs = requirements that either side of the clause transaction would need to meet
|
||
|
;
|
||
|
; */ <-- avoid gettext warnings
|
||
| data/multiplayer/game.ruleset | ||
|---|---|---|
|
; type = Type of the clause, one of "Advance", "Gold", "Map", "Seamap",
|
||
|
; "City", "Ceasefire", "Peace", "Alliance", "Vision", "Embassy",
|
||
|
; "SharedTiles"
|
||
|
; giver_reqs = requirements that the giving side of the clause needs to fulfill
|
||
|
; giver_reqs = requirements that the giving side of the clause needs to meet
|
||
|
; (see effects.ruleset and README.effects for help on requirements)
|
||
|
; receiver_reqs = requirements that the receiving side of the clause needs to fulfill
|
||
|
; receiver_reqs = requirements that the receiving side of the clause needs to meet
|
||
|
; either_reqs = requirements that either side of the clause transaction would need to meet
|
||
|
;
|
||
|
; */ <-- avoid gettext warnings
|
||
| data/ruledit/comments-3.3.txt | ||
|---|---|---|
|
; type = Type of the clause, one of \"Advance\", \"Gold\", \"Map\", \"Seamap\",\n\
|
||
|
; \"City\", \"Ceasefire\", \"Peace\", \"Alliance\", \"Vision\", \"Embassy\",\n\
|
||
|
; \"SharedTiles\"\n\
|
||
|
; giver_reqs = requirements that the giving side of the clause needs to fulfill\n\
|
||
|
; giver_reqs = requirements that the giving side of the clause needs to meet\n\
|
||
|
; (see effects.ruleset and README.effects for help on requirements)\n\
|
||
|
; receiver_reqs = requirements that the receiving side of the clause needs to fulfill\n\
|
||
|
; receiver_reqs = requirements that the receiving side of the clause needs to meet\n\
|
||
|
; either_reqs = requirements that either side of the clause transaction would need to meet\n\
|
||
|
;\n\
|
||
|
; */ <-- avoid gettext warnings\n\
|
||
|
"
|
||
| data/sandbox/game.ruleset | ||
|---|---|---|
|
; type = Type of the clause, one of "Advance", "Gold", "Map", "Seamap",
|
||
|
; "City", "Ceasefire", "Peace", "Alliance", "Vision", "Embassy",
|
||
|
; "SharedTiles"
|
||
|
; giver_reqs = requirements that the giving side of the clause needs to fulfill
|
||
|
; giver_reqs = requirements that the giving side of the clause needs to meet
|
||
|
; (see effects.ruleset and README.effects for help on requirements)
|
||
|
; receiver_reqs = requirements that the receiving side of the clause needs to fulfill
|
||
|
; receiver_reqs = requirements that the receiving side of the clause needs to meet
|
||
|
; either_reqs = requirements that either side of the clause transaction would need to meet
|
||
|
;
|
||
|
; */ <-- avoid gettext warnings
|
||
| data/stub/game.ruleset | ||
|---|---|---|
|
; type = Type of the clause, one of "Advance", "Gold", "Map", "Seamap",
|
||
|
; "City", "Ceasefire", "Peace", "Alliance", "Vision", "Embassy",
|
||
|
; "SharedTiles"
|
||
|
; giver_reqs = requirements that the giving side of the clause needs to fulfill
|
||
|
; giver_reqs = requirements that the giving side of the clause needs to meet
|
||
|
; (see effects.ruleset and README.effects for help on requirements)
|
||
|
; receiver_reqs = requirements that the receiving side of the clause needs to fulfill
|
||
|
; receiver_reqs = requirements that the receiving side of the clause needs to meet
|
||
|
; either_reqs = requirements that either side of the clause transaction would need to meet
|
||
|
;
|
||
|
; */ <-- avoid gettext warnings
|
||
| data/webperimental/game.ruleset | ||
|---|---|---|
|
; type = Type of the clause, one of "Advance", "Gold", "Map", "Seamap",
|
||
|
; "City", "Ceasefire", "Peace", "Alliance", "Vision", "Embassy",
|
||
|
; "SharedTiles"
|
||
|
; giver_reqs = requirements that the giving side of the clause needs to fulfill
|
||
|
; giver_reqs = requirements that the giving side of the clause needs to meet
|
||
|
; (see effects.ruleset and README.effects for help on requirements)
|
||
|
; receiver_reqs = requirements that the receiving side of the clause needs to fulfill
|
||
|
; receiver_reqs = requirements that the receiving side of the clause needs to meet
|
||
|
; either_reqs = requirements that either side of the clause transaction would need to meet
|
||
|
;
|
||
|
; */ <-- avoid gettext warnings
|
||
| server/ruleset/ruleload.c | ||
|---|---|---|
|
}
|
||
|
requirement_vector_copy(&info->receiver_reqs, reqs);
|
||
|
reqs = lookup_req_list(file, compat, sec_name, "either_reqs", clause_name);
|
||
|
if (reqs == NULL) {
|
||
|
ok = FALSE;
|
||
|
break;
|
||
|
}
|
||
|
requirement_vector_copy(&info->either_reqs, reqs);
|
||
|
info->enabled = TRUE;
|
||
|
}
|
||
|
}
|
||
| ... | ... | |
|
} requirement_vector_iterate_end;
|
||
|
packet.receiver_reqs_count = j;
|
||
|
j = 0;
|
||
|
requirement_vector_iterate(&info->either_reqs, preq) {
|
||
|
packet.either_reqs[j++] = *preq;
|
||
|
} requirement_vector_iterate_end;
|
||
|
packet.either_reqs_count = j;
|
||
|
lsend_packet_ruleset_clause(dest, &packet);
|
||
|
}
|
||
|
}
|
||
| tools/ruleutil/rulesave.c | ||
|---|---|---|
|
"%s.type", path);
|
||
|
save_reqs_vector(sfile, &(info->giver_reqs), path, "giver_reqs");
|
||
|
save_reqs_vector(sfile, &(info->receiver_reqs), path, "receiver_reqs");
|
||
|
save_reqs_vector(sfile, &(info->either_reqs), path, "either_reqs");
|
||
|
}
|
||
|
}
|
||