using MainShell.Common; using System; using System.Collections.Generic; using System.Windows; namespace MainShell.Resources.CustomControl { /// /// 芯片Map的数据模型,用于MVVM绑定 /// public class DieMapModel { public int Rows { get; private set; } public int Columns { get; private set; } public Point[,] Coordinates { get; private set; } public DieState[,] States { get; private set; } public event EventHandler MapInitialized; public event EventHandler<(int Row, int Col, DieState State)> DieStateChanged; public event EventHandler> DieStatesChanged; /// /// 初始化Map图大小和坐标 /// public void Initialize(int rows, int columns, Point[,] coordinates = null) { Rows = rows; Columns = columns; Coordinates = coordinates; States = new DieState[rows, columns]; // 默认全部设置为NotExist,或者根据需要设置 for (int r = 0; r < rows; r++) { for (int c = 0; c < columns; c++) { States[r, c] = DieState.Available; } } MapInitialized?.Invoke(this, EventArgs.Empty); } /// /// 更新单个芯片状态 /// public void SetDieState(int row, int col, DieState state) { if (States != null && row >= 0 && row < Rows && col >= 0 && col < Columns) { if (States[row, col] != state) { States[row, col] = state; DieStateChanged?.Invoke(this, (row, col, state)); } } } /// /// 批量更新芯片状态 /// public void SetDieStates(IEnumerable<(int row, int col, DieState state)> updates) { if (States == null) return; bool changed = false; foreach (var update in updates) { if (update.row >= 0 && update.row < Rows && update.col >= 0 && update.col < Columns) { if (States[update.row, update.col] != update.state) { States[update.row, update.col] = update.state; changed = true; } } } if (changed) { DieStatesChanged?.Invoke(this, updates); } } } }