From dd68a7c8e94885af8c67361557517417c845a8b0 Mon Sep 17 00:00:00 2001 From: kercylan98 Date: Tue, 6 Jun 2023 11:28:06 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A7=BB=E9=99=A4=E7=89=B9=E5=AE=9A=E4=BD=8D?= =?UTF-8?q?=E7=BD=AE=E7=9A=84=E8=BE=90=E5=B0=84=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- utils/g2d/radiation_pattern.go | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/utils/g2d/radiation_pattern.go b/utils/g2d/radiation_pattern.go index f07a9a6..7422a8a 100644 --- a/utils/g2d/radiation_pattern.go +++ b/utils/g2d/radiation_pattern.go @@ -58,8 +58,8 @@ func (slf *RadiationPattern[ItemType, Item]) GetPosition(guid int64) [2]int { return slf.positions[guid] } -// Refresh 刷新特定位置成员并且更新其辐射信息 -func (slf *RadiationPattern[ItemType, Item]) Refresh(x, y int, item Item) { +// Remove 移除特定位置的辐射信息 +func (slf *RadiationPattern[ItemType, Item]) Remove(x, y int) { old := slf.matrix[x][y] oldGuid := old.GetGuid() for linkGuid := range slf.links.Get(oldGuid) { @@ -68,6 +68,11 @@ func (slf *RadiationPattern[ItemType, Item]) Refresh(x, y int, item Item) { } slf.links.Delete(oldGuid) delete(slf.positions, oldGuid) +} + +// Refresh 刷新特定位置成员并且更新其辐射信息 +func (slf *RadiationPattern[ItemType, Item]) Refresh(x, y int, item Item) { + slf.Remove(x, y) slf.matrix[x][y] = item slf.positions[item.GetGuid()] = PositionToArray(x, y) @@ -79,14 +84,7 @@ func (slf *RadiationPattern[ItemType, Item]) RefreshBySwap(x1, y1, x2, y2 int, i var xys = [][2]int{PositionToArray(x1, y1), PositionToArray(x2, y2)} for _, xy := range xys { x, y := PositionArrayToXY(xy) - old := slf.matrix[x][y] - oldGuid := old.GetGuid() - for linkGuid := range slf.links.Get(oldGuid) { - xy := slf.positions[linkGuid] - slf.searchNeighbour(xy[0], xy[1], synchronization.NewMap[int64, bool](), synchronization.NewMap[int64, bool]()) - } - slf.links.Delete(oldGuid) - delete(slf.positions, oldGuid) + slf.Remove(x, y) } for i, item := range []Item{item1, item2} { x, y := PositionArrayToXY(xys[i])