Merge branch 'enhanced_viewport_overlay' into jgrpp
# Conflicts: # src/saveload/extended_ver_sl.cpp
This commit is contained in:
@@ -61,7 +61,7 @@ const SlxiSubChunkInfo _sl_xv_sub_chunk_infos[] = {
|
|||||||
{ XSLFI_TT_WAIT_IN_DEPOT, XSCF_NULL, 1, 1, "tt_wait_in_depot", NULL, NULL, NULL },
|
{ XSLFI_TT_WAIT_IN_DEPOT, XSCF_NULL, 1, 1, "tt_wait_in_depot", NULL, NULL, NULL },
|
||||||
{ XSLFI_AUTO_TIMETABLE, XSCF_NULL, 4, 4, "auto_timetables", NULL, NULL, NULL },
|
{ XSLFI_AUTO_TIMETABLE, XSCF_NULL, 4, 4, "auto_timetables", NULL, NULL, NULL },
|
||||||
{ XSLFI_VEHICLE_REPAIR_COST, XSCF_NULL, 2, 2, "vehicle_repair_cost", NULL, NULL, NULL },
|
{ XSLFI_VEHICLE_REPAIR_COST, XSCF_NULL, 2, 2, "vehicle_repair_cost", NULL, NULL, NULL },
|
||||||
{ XSLFI_ENH_VIEWPORT_PLANS, XSCF_IGNORABLE_ALL, 1, 1, "enh_viewport_plans", NULL, NULL, "PLAN,PLLN" },
|
{ XSLFI_ENH_VIEWPORT_PLANS, XSCF_IGNORABLE_ALL, 2, 2, "enh_viewport_plans", NULL, NULL, "PLAN" },
|
||||||
{ XSLFI_INFRA_SHARING, XSCF_NULL, 2, 2, "infra_sharing", NULL, NULL, "CPDP" },
|
{ XSLFI_INFRA_SHARING, XSCF_NULL, 2, 2, "infra_sharing", NULL, NULL, "CPDP" },
|
||||||
{ XSLFI_VARIABLE_DAY_LENGTH, XSCF_NULL, 2, 2, "variable_day_length", NULL, NULL, NULL },
|
{ XSLFI_VARIABLE_DAY_LENGTH, XSCF_NULL, 2, 2, "variable_day_length", NULL, NULL, NULL },
|
||||||
{ XSLFI_ORDER_OCCUPANCY, XSCF_NULL, 2, 2, "order_occupancy", NULL, NULL, NULL },
|
{ XSLFI_ORDER_OCCUPANCY, XSCF_NULL, 2, 2, "order_occupancy", NULL, NULL, NULL },
|
||||||
|
@@ -24,13 +24,24 @@ static const SaveLoad _plan_desc[] = {
|
|||||||
SLE_END()
|
SLE_END()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static void RealSave_PLAN(Plan *p)
|
||||||
|
{
|
||||||
|
SlObject(p, _plan_desc);
|
||||||
|
SlWriteUint32(p->lines.size());
|
||||||
|
for (size_t i = 0; i < p->lines.size(); i++) {
|
||||||
|
PlanLine *pl = p->lines[i];
|
||||||
|
SlWriteUint32(pl->tiles.size());
|
||||||
|
SlArray(&pl->tiles[0], pl->tiles.size(), SLE_UINT32);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/** Save all plans. */
|
/** Save all plans. */
|
||||||
static void Save_PLAN()
|
static void Save_PLAN()
|
||||||
{
|
{
|
||||||
Plan *p;
|
Plan *p;
|
||||||
FOR_ALL_PLANS(p) {
|
FOR_ALL_PLANS(p) {
|
||||||
SlSetArrayIndex(p->index);
|
SlSetArrayIndex(p->index);
|
||||||
SlObject(p, _plan_desc);
|
SlAutolength((AutolengthProc*) RealSave_PLAN, p);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -41,20 +52,17 @@ static void Load_PLAN()
|
|||||||
while ((index = SlIterateArray()) != -1) {
|
while ((index = SlIterateArray()) != -1) {
|
||||||
Plan *p = new (index) Plan();
|
Plan *p = new (index) Plan();
|
||||||
SlObject(p, _plan_desc);
|
SlObject(p, _plan_desc);
|
||||||
}
|
if (SlXvIsFeaturePresent(XSLFI_ENH_VIEWPORT_PLANS, 2)) {
|
||||||
}
|
const size_t line_count = SlReadUint32();
|
||||||
|
p->lines.resize(line_count);
|
||||||
/** Save all plan lines. */
|
for (size_t i = 0; i < line_count; i++) {
|
||||||
static void Save_PLANLINE()
|
PlanLine *pl = new PlanLine();
|
||||||
{
|
p->lines[i] = pl;
|
||||||
Plan *p;
|
const size_t tile_count = SlReadUint32();
|
||||||
FOR_ALL_PLANS(p) {
|
pl->tiles.resize(tile_count);
|
||||||
for (size_t i = 0; i < p->lines.size(); i++) {
|
SlArray(&pl->tiles[0], tile_count, SLE_UINT32);
|
||||||
SlSetArrayIndex((uint) p->index << 16 | (uint) i);
|
}
|
||||||
PlanLine *pl = p->lines[i];
|
p->SetVisibility(false);
|
||||||
size_t plsz = pl->tiles.size();
|
|
||||||
SlSetLength(plsz * sizeof(TileIndex));
|
|
||||||
SlArray(&pl->tiles[0], plsz, SLE_UINT32);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -83,5 +91,5 @@ static void Load_PLANLINE()
|
|||||||
/** Chunk handlers related to plans. */
|
/** Chunk handlers related to plans. */
|
||||||
extern const ChunkHandler _plan_chunk_handlers[] = {
|
extern const ChunkHandler _plan_chunk_handlers[] = {
|
||||||
{ 'PLAN', Save_PLAN, Load_PLAN, NULL, NULL, CH_ARRAY},
|
{ 'PLAN', Save_PLAN, Load_PLAN, NULL, NULL, CH_ARRAY},
|
||||||
{ 'PLLN', Save_PLANLINE, Load_PLANLINE, NULL, NULL, CH_ARRAY | CH_LAST},
|
{ 'PLLN', NULL, Load_PLANLINE, NULL, NULL, CH_ARRAY | CH_LAST},
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user