Example #1
0
File: Map.cs Project: HaKDMoDz/geff
        public void CreateMapWithSamples()
        {
            for (int x = 0; x < Size; x++)
            {
                for (int y = 0; y < Size; y++)
                {
                    Cell cell = new Cell();
                    cell.IsEmpty = true;
                    Cells[x, y] = cell;

                    if (!(x == Size / 2 && y == Size / 2) && Repository.rnd.NextDouble() > 0.809016994)
                    {
                        int center = (Size / 2);
                        int distance = (int)Math.Sqrt((x - center) * (x - center) + (y - center) * (y - center));

                        if (CurrentLibrarySample.ListSampleModel.Count - 1 < distance)
                        {
                            distance = CurrentLibrarySample.ListSampleModel.Count - 1;
                        }

                        cell.TypeSymbol = (TypeSymbol)Repository.rnd.Next(1, 4);
                        cell.Sample = new Sample(CurrentLibrarySample.ListSampleModel[distance - 1]);
                        cell.IsEmpty = false;
                    }

                    CalculCellLayerAndNumber(cell, x, y);
                }
            }
        }
Example #2
0
File: Map.cs Project: HaKDMoDz/geff
        private void CalculCellLayerAndNumber(Cell cell, int x, int y)
        {
            Point center = new Point(Size / 2, Size / 2);
            Point point = new Point(x, y);
            Point delta = new Point(point.X - center.X, point.Y - center.Y);

            for (int layer = 1; layer <= Size / 2; layer++)
            {
                if (delta.Y == -layer && delta.X >= -layer && delta.X <= layer)
                {
                    cell.Layer = layer;
                    cell.NumberOnLayer = delta.X+layer;
                }
                else if (delta.Y == layer && delta.X >= -layer && delta.X <= layer)
                {
                    cell.Layer = layer;
                    cell.NumberOnLayer = layer*5 - delta.X;
                }
                else if (delta.X == layer && delta.Y >= -layer && delta.Y <= layer)
                {
                    cell.Layer = layer;
                    cell.NumberOnLayer = layer * 3 + delta.Y;
                }
                else if (delta.X == -layer && delta.Y >= -layer && delta.Y <= layer)
                {
                    cell.Layer = layer;
                    cell.NumberOnLayer = layer * 7 - delta.Y;
                }
            }

            //--- Ajout de la cellule à la représentation par couche
            if(!this.LayerCells.ContainsKey(cell.Layer))
                this.LayerCells.Add(cell.Layer, new List<Cell>());

            this.LayerCells[cell.Layer].Add(cell);
            //---

            cell.IsOnMeasure = cell.NumberOnLayer % 4 == 0;
        }