Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion C3X.h
Original file line number Diff line number Diff line change
Expand Up @@ -934,7 +934,7 @@ const struct district_config special_district_defaults[USED_SPECIAL_DISTRICT_TYP
.buildable_square_types_mask = DEFAULT_DISTRICT_BUILDABLE_MASK,
.img_path_count = 5, .img_column_count = 4, .btn_tile_sheet_column = 0, .btn_tile_sheet_row = 0,
.culture_bonus = 1, .science_bonus = 1, .food_bonus = 0, .gold_bonus = 1, .shield_bonus = 0, .happiness_bonus = 0, .defense_bonus_percent = 25,
.generated_resource = NULL, .generated_resource_id = -1, .generated_resource_flags = 0
.generated_resource = NULL, .generated_resource_id = -1, .generated_resource_flags = 0, .auto_add_road = true

},
{
Expand Down
1 change: 0 additions & 1 deletion civ_prog_objects.csv
Original file line number Diff line number Diff line change
Expand Up @@ -493,7 +493,6 @@ inlead, 0x5D2150, 0x5E13F0, 0x5D2080, "Map_build_trade_network", "void (__f
inlead, 0x57DE90, 0x58ABD0, 0x57DBF0, "Trade_Net_recompute_city_cons_and_res", "void (__fastcall *) (Trade_Net * this, int edx, bool param_1)"
repl call, 0x57DAF1, 0x58A7F9, 0x57D851, "Trade_Net_set_unit_path_to_fill_road_net", ""
repl call, 0x57DE29, 0x58AB4E, 0x57DB89, "Trade_Net_set_unit_path_to_find_sea_route", ""
define, 0x5EA6E0, 0x5F9F30, 0x5EA610, "Tile_has_colony", "bool (__fastcall *) (Tile * this)"
repl call, 0x5C1559, 0x5D00ED, 0x5C1269, "City_count_airports_for_airdrop", ""
define, 0x437CF0, 0x4398A0, 0x437D70, "Leader_get_city_count_on_continent", "int (__fastcall *) (Leader * this, int edx, int cont_id)"
repl call, 0x42EB3F, 0x430615, 0x42EBBF, "Leader_get_cont_city_count_for_worker_req", ""
Expand Down
31 changes: 25 additions & 6 deletions injected_code.c
Original file line number Diff line number Diff line change
Expand Up @@ -15844,6 +15844,11 @@ compare_resource_tiles (void const * vp_a, void const * vp_b)
void __fastcall
patch_Trade_Net_recompute_resources (Trade_Net * this, int edx, bool skip_popups)
{
if (is->saved_tile_count >= 0) {
(*p_OutputDebugStringA) ("[C3X] Skipping nested Trade_Net::recompute_resources call\n");
return;
}

int extra_resource_count = not_below (0, p_bic_data->ResourceTypeCount - 32);
int ints_per_city = 1 + extra_resource_count/32;
memset (is->extra_available_resources, 0, is->extra_available_resources_capacity * ints_per_city * sizeof (unsigned));
Expand Down Expand Up @@ -15936,16 +15941,31 @@ patch_Trade_Net_recompute_resources (Trade_Net * this, int edx, bool skip_popups
Tile *
get_resource_tile (int index)
{
if ((index < 0) || (index >= is->count_resource_tiles)) {
is->got_resource_tile = NULL;
return p_null_tile;
}

struct extra_resource_tile * rt = &is->resource_tiles[index];
is->got_resource_tile = rt;
return rt->tile;
}

Tile * __fastcall patch_Map_get_tile_when_recomputing_resources_1 (Map * map, int edx, int index) { return (index < is->saved_tile_count) ? Map_get_tile (map, __, index) : get_resource_tile (index - is->saved_tile_count); }
Tile * __fastcall patch_Map_get_tile_when_recomputing_resources_2 (Map * map, int edx, int index) { return (index < is->saved_tile_count) ? Map_get_tile (map, __, index) : get_resource_tile (index - is->saved_tile_count); }
Tile * __fastcall patch_Map_get_tile_when_recomputing_resources_3 (Map * map, int edx, int index) { return (index < is->saved_tile_count) ? Map_get_tile (map, __, index) : get_resource_tile (index - is->saved_tile_count); }
Tile * __fastcall patch_Map_get_tile_when_recomputing_resources_4 (Map * map, int edx, int index) { return (index < is->saved_tile_count) ? Map_get_tile (map, __, index) : get_resource_tile (index - is->saved_tile_count); }
Tile * __fastcall patch_Map_get_tile_when_recomputing_resources_5 (Map * map, int edx, int index) { return (index < is->saved_tile_count) ? Map_get_tile (map, __, index) : get_resource_tile (index - is->saved_tile_count); }
Tile *
get_tile_when_recomputing_resources (Map * map, int index)
{
if ((is->saved_tile_count < 0) || (index < is->saved_tile_count)) {
is->got_resource_tile = NULL;
return Map_get_tile (map, __, index);
}
return get_resource_tile (index - is->saved_tile_count);
}

Tile * __fastcall patch_Map_get_tile_when_recomputing_resources_1 (Map * map, int edx, int index) { return get_tile_when_recomputing_resources (map, index); }
Tile * __fastcall patch_Map_get_tile_when_recomputing_resources_2 (Map * map, int edx, int index) { return get_tile_when_recomputing_resources (map, index); }
Tile * __fastcall patch_Map_get_tile_when_recomputing_resources_3 (Map * map, int edx, int index) { return get_tile_when_recomputing_resources (map, index); }
Tile * __fastcall patch_Map_get_tile_when_recomputing_resources_4 (Map * map, int edx, int index) { return get_tile_when_recomputing_resources (map, index); }
Tile * __fastcall patch_Map_get_tile_when_recomputing_resources_5 (Map * map, int edx, int index) { return get_tile_when_recomputing_resources (map, index); }

int __fastcall
patch_Tile_get_visible_resource_when_recomputing (Tile * tile, int edx, int civ_id)
Expand Down Expand Up @@ -34787,7 +34807,6 @@ patch_Unit_ai_move_terraformer (Unit * this)
bool is_human = (*p_human_player_bits & (1 << this->Body.CivID)) != 0;
int territory_owner = ((tile != NULL) && (tile != p_null_tile)) ? tile->vtable->m38_Get_Territory_OwnerID (tile) : -1;


if (is->current_config.enable_districts && ! is_human && is_worker (this)) {
update_tracked_worker_for_unit (this);
struct district_instance * inst = get_district_instance (tile);
Expand Down