feat(ignore): 增加 seen 统计与 ResetStat,便于对比栅栏与地面的形状类型

seen = 本车接触到的所有非坦克形状的 cat/type 直方图(不论是否忽略);新增 ResetStat() 清零,便于「平地 1 秒」与「顶住栅栏 1 秒」两次对比定位栅栏的真实形状类型。
This commit is contained in:
TermiNexus committed 2026-10-21 00:45:50 +08:00
1 parent f455fe5c35
commit d4a260ac92
3 files changed
+63 -9

No files matched your search

@@ -6591,6 +6591,7 @@
skippedFence: 0,
skippedOverlap: 0, // x9o 形状相交查询被拦下的次数
byType: {}, // cat/type → 被忽略次数(诊断)
seen: {}, // cat/type → 本车接触到的非坦克形状次数(诊断)
patched: false,
overlapPatched: false
};
@@ -6848,6 +6849,13 @@
var FenceShape = null;
if (TankA && OwnerOf(ShapeA) === Local) FenceShape = ShapeB;
else if (TankB && OwnerOf(ShapeB) === Local) FenceShape = ShapeA;
// 统计:本车接触到的所有非坦克形状(不论是否跳过)→ cat/type 直方图
if (FenceShape) {
var SeenKey = FenceShape[FShapeCategory] + '/' + FenceShape[FShapeType];
Stat.seen[SeenKey] = (Stat.seen[SeenKey] || 0) + 1;
}
if (FenceShape && IsFenceLike(FenceShape)) {
Stat.skippedFence++;
var Key = FenceShape[FShapeCategory] + '/' + FenceShape[FShapeType];
@@ -6855,8 +6863,7 @@
return true;
}
// 诊断:本车与任意非坦克形状配对但没跳过 → 记录样本(含被挡住的栅栏)
if (TankA && OwnerOf(ShapeA) === Local && !TankB) RecordFenceSample(ShapeB);
if (TankB && OwnerOf(ShapeB) === Local && !TankA) RecordFenceSample(ShapeA);
if (FenceShape) RecordFenceSample(FenceShape);
}
return false;
@@ -7003,8 +7010,19 @@
running: Stat.running, mode: Stat.mode, ignoreFence: Stat.ignoreFence,
skippedTank: Stat.skippedTank, skippedFence: Stat.skippedFence,
skippedOverlap: Stat.skippedOverlap,
byType: Stat.byType, patched: Stat.patched, overlapPatched: Stat.overlapPatched
byType: Stat.byType, seen: Stat.seen,
patched: Stat.patched, overlapPatched: Stat.overlapPatched
};
},
// 清零统计:便于「平地 1 秒」与「顶住栅栏 1 秒」两次对比 seen 里的 cat/type
ResetStat: function () {
Stat.skippedTank = 0;
Stat.skippedFence = 0;
Stat.skippedOverlap = 0;
Stat.byType = {};
Stat.seen = {};
FenceSampleKeys = {};
console.log('[忽略] 统计已清零');
}
};
+21 -3
View File
@@ -6591,6 +6591,7 @@
skippedFence: 0,
skippedOverlap: 0, // x9o 形状相交查询被拦下的次数
byType: {}, // cat/type → 被忽略次数(诊断)
seen: {}, // cat/type → 本车接触到的非坦克形状次数(诊断)
patched: false,
overlapPatched: false
};
@@ -6848,6 +6849,13 @@
var FenceShape = null;
if (TankA && OwnerOf(ShapeA) === Local) FenceShape = ShapeB;
else if (TankB && OwnerOf(ShapeB) === Local) FenceShape = ShapeA;
// 统计:本车接触到的所有非坦克形状(不论是否跳过)→ cat/type 直方图
if (FenceShape) {
var SeenKey = FenceShape[FShapeCategory] + '/' + FenceShape[FShapeType];
Stat.seen[SeenKey] = (Stat.seen[SeenKey] || 0) + 1;
}
if (FenceShape && IsFenceLike(FenceShape)) {
Stat.skippedFence++;
var Key = FenceShape[FShapeCategory] + '/' + FenceShape[FShapeType];
@@ -6855,8 +6863,7 @@
return true;
}
// 诊断:本车与任意非坦克形状配对但没跳过 → 记录样本(含被挡住的栅栏)
if (TankA && OwnerOf(ShapeA) === Local && !TankB) RecordFenceSample(ShapeB);
if (TankB && OwnerOf(ShapeB) === Local && !TankA) RecordFenceSample(ShapeA);
if (FenceShape) RecordFenceSample(FenceShape);
}
return false;
@@ -7003,8 +7010,19 @@
running: Stat.running, mode: Stat.mode, ignoreFence: Stat.ignoreFence,
skippedTank: Stat.skippedTank, skippedFence: Stat.skippedFence,
skippedOverlap: Stat.skippedOverlap,
byType: Stat.byType, patched: Stat.patched, overlapPatched: Stat.overlapPatched
byType: Stat.byType, seen: Stat.seen,
patched: Stat.patched, overlapPatched: Stat.overlapPatched
};
},
// 清零统计:便于「平地 1 秒」与「顶住栅栏 1 秒」两次对比 seen 里的 cat/type
ResetStat: function () {
Stat.skippedTank = 0;
Stat.skippedFence = 0;
Stat.skippedOverlap = 0;
Stat.byType = {};
Stat.seen = {};
FenceSampleKeys = {};
console.log('[忽略] 统计已清零');
}
};
+21 -3
View File
@@ -66,6 +66,7 @@
skippedFence: 0,
skippedOverlap: 0, // x9o 形状相交查询被拦下的次数
byType: {}, // cat/type → 被忽略次数(诊断)
seen: {}, // cat/type → 本车接触到的非坦克形状次数(诊断)
patched: false,
overlapPatched: false
};
@@ -323,6 +324,13 @@
var FenceShape = null;
if (TankA && OwnerOf(ShapeA) === Local) FenceShape = ShapeB;
else if (TankB && OwnerOf(ShapeB) === Local) FenceShape = ShapeA;
// 统计:本车接触到的所有非坦克形状(不论是否跳过)→ cat/type 直方图
if (FenceShape) {
var SeenKey = FenceShape[FShapeCategory] + '/' + FenceShape[FShapeType];
Stat.seen[SeenKey] = (Stat.seen[SeenKey] || 0) + 1;
}
if (FenceShape && IsFenceLike(FenceShape)) {
Stat.skippedFence++;
var Key = FenceShape[FShapeCategory] + '/' + FenceShape[FShapeType];
@@ -330,8 +338,7 @@
return true;
}
// 诊断:本车与任意非坦克形状配对但没跳过 → 记录样本(含被挡住的栅栏)
if (TankA && OwnerOf(ShapeA) === Local && !TankB) RecordFenceSample(ShapeB);
if (TankB && OwnerOf(ShapeB) === Local && !TankA) RecordFenceSample(ShapeA);
if (FenceShape) RecordFenceSample(FenceShape);
}
return false;
@@ -478,8 +485,19 @@
running: Stat.running, mode: Stat.mode, ignoreFence: Stat.ignoreFence,
skippedTank: Stat.skippedTank, skippedFence: Stat.skippedFence,
skippedOverlap: Stat.skippedOverlap,
byType: Stat.byType, patched: Stat.patched, overlapPatched: Stat.overlapPatched
byType: Stat.byType, seen: Stat.seen,
patched: Stat.patched, overlapPatched: Stat.overlapPatched
};
},
// 清零统计:便于「平地 1 秒」与「顶住栅栏 1 秒」两次对比 seen 里的 cat/type
ResetStat: function () {
Stat.skippedTank = 0;
Stat.skippedFence = 0;
Stat.skippedOverlap = 0;
Stat.byType = {};
Stat.seen = {};
FenceSampleKeys = {};
console.log('[忽略] 统计已清零');
}
};