示例#1
0
        public override CellsGroup GetArea(GridCell gCell)
        {
            CellsGroup cG = new CellsGroup();

            //  Debug.Log(gCell);
            if (!gCell)
            {
                return(cG);
            }
            switch (OData.bombType)
            {
            case BombDir.Vertical:
                cG.AddRange(gCell.GColumn.cells);      //cG.AddRange(gCell.GColumn.GetDynamicArea());
                break;

            case BombDir.Horizontal:
                cG.AddRange(gCell.GRow.cells);     // cG.AddRange(gCell.GRow.GetDynamicArea());
                break;

            case BombDir.Radial:
                List <GridCell> areaRad = MBoard.grid.GetAroundArea(gCell, 1).Cells;
                cG.Add(gCell);
                foreach (var item in areaRad)
                {
                    cG.Add(item);        // if (item.IsMatchable)
                }
                break;

            case BombDir.Color:
                cG.AddRange(MGrid.GetAllByID(OData.matchID).SortByDistanceTo(gCell));
                break;
            }
            return(cG);
        }
示例#2
0
        public static async Task ImportFile <T>(MGrid <T> pGrid, Stream pFile)
        {
            using var doc = SpreadsheetDocument.Open(pFile, false);

            var worksheetPart = doc.WorkbookPart.WorksheetParts.FirstOrDefault();

            var worksheet = worksheetPart.Worksheet;

            SharedStringTablePart sstpart = doc.WorkbookPart.GetPartsOfType <SharedStringTablePart>().FirstOrDefault();
            SharedStringTable     sst     = sstpart?.SharedStringTable;

            var sheetdata = worksheet.OfType <SheetData>().FirstOrDefault();

            var rows = sheetdata.OfType <Row>();

            var firstValues = GetRow(doc, sst, rows.First());

            var propInfo = GetPropertyInfos(pGrid.PropertyInfos, firstValues);

            if (!propInfo.Any())
            {
                return;
            }

            foreach (var row in rows.Skip(1))
            {
                var rowValues = GetRow(doc, sst, row);

                ProgressRow(propInfo, rowValues, (rowVal, pi) =>
                {
                    if (pi.GetCustomAttribute <RequiredAttribute>() != null && rowVal == null)
                    {
                        throw new UserMessageException($"Column {pi.Name} has an empty value!");
                    }
                });
            }

            foreach (var row in rows.Skip(1))
            {
                var rowValues = GetRow(doc, sst, row);

                T obj = pGrid.CreateNewT();

                var proceeded = ProgressRow(propInfo, rowValues, (object rowVal, IMPropertyInfo pi) =>
                {
                    pi.SetValue(obj, rowVal);
                });

                if (!proceeded)
                {
                    continue;
                }

                pGrid.NewValue = obj;
                await pGrid.OnFormSubmit(new MFormSubmitArgs(null, new Dictionary <string, object>(), obj, true));
            }
        }
        public override CellsGroup GetArea(GridCell gCell)
        {
            CellsGroup cG = new CellsGroup();

            if (!gCell)
            {
                return(cG);
            }

            cG.AddRange(MGrid.GetAllByID(OData.matchID).SortByDistanceTo(gCell));
            return(cG);
        }
示例#4
0
    public static void Save(MGrid grid)
    {
        BinaryFormatter formatter = new BinaryFormatter();
        string          path      = Application.persistentDataPath + "/GridData.save";
        FileStream      stream    = new FileStream(path, FileMode.Create);

        GridData data = new GridData
        {
            grid = grid.Tiles
        };

        ;
        data.size = grid.Size;
        formatter.Serialize(stream, data);
        stream.Close();
    }
示例#5
0
 public void Initialize()
 {
     this.grid = new MGrid(32);
 }
示例#6
0
 private void Awake()
 {
     requestManager = GetComponent <PathRequestManager>();
     grid           = GetComponent <MGrid>();
 }
示例#7
0
    public void Save()
    {
        MGrid grid = this;

        GridSaveControler.Save(grid);
    }