示例#1
0
        public List <AreaChange> Clear()
        {
            var newArea = new GameArea(area.Fields.GetLength(0));
            var diffs   = GameAreaHelper.FindDiffs(area, newArea);

            area = newArea;
            return(diffs);
        }
示例#2
0
        public List <AreaChange> LoadGame(string file)
        {
            var loadedArea = LoadArea(file);

            if (loadedArea == null)
            {
                return(null);
            }
            var result = GameAreaHelper.FindDiffs(area, loadedArea);

            area = loadedArea;
            return(result);
        }
示例#3
0
        public List <AreaChange> CellClicked(int row, int col)
        {
            area.Fields[row, col].Toggle();
            var headers    = GameAreaHelper.GetHeaders(orgArea);
            var orgRowProj = new Row(orgArea, row).Projection;
            var rowProj    = new Row(area, row).Projection;

            var orgColProj = new Column(orgArea, col).Projection;
            var colProj    = new Column(area, col).Projection;

            var rowDiff = !Same(orgRowProj, rowProj);
            var colDiff = !Same(orgColProj, colProj);

            var rowHeader = headers[row].RowHeader + (rowDiff ? " *" : "");
            var colHeader = headers[col].ColumnHeader + (colDiff ? " *" : "");

            var val = area.Fields[row, col].Enabled;

            return(new List <AreaChange> {
                new AreaChange {
                    Row = row, Col = col, Value = val, RowHeader = rowHeader, ColumnHeader = colHeader
                }
            });
        }
示例#4
0
 public bool IsDifference()
 {
     return(GameAreaHelper.FindDiffs(orgArea, area).Count > 0);
 }
示例#5
0
 public List <AreaChange> GetInitialState()
 {
     return(GameAreaHelper.GetHeaders(orgArea).Select(a => MarkChanges(a)).ToList());
 }