예제 #1
0
        public PixelField(PipeGrid pipeGrid, PictureBox pictureBox)
        {
            Color[,] colorArray = pipeGrid.GetColorArray();
            Width          = colorArray.GetLength(0);
            Height         = colorArray.GetLength(1);
            Pixels         = new Pixel[Width, Height];
            Buffer         = new Bitmap(Width, Height);
            BaseBrush      = new SolidBrush(BaseColor);
            PipeBrush      = new SolidBrush(PipeColor);
            WaterBrush     = new SolidBrush(WaterColor);
            GridPictureBox = pictureBox;
            GridGraphics   = Graphics.FromImage(Buffer);
            for (int x = 0; x < Width; x++)
            {
                for (int y = 0; y < Height; y++)
                {
                    if (colorArray[x, y].ToArgb().Equals(pipeGrid.PipeColor.ToArgb()))
                    {
                        Pixels[x, y] = new WallPixel();
                    }
                }
            }
            StartPointInPixels   = pipeGrid.StartPointInPixels;
            DeepestLevelInPixels = pipeGrid.DeepestLevelInPixels;

            Pixels[StartPointInPixels.X, StartPointInPixels.Y] = new WaterPixel();
        }
예제 #2
0
    public PipeGrid GetNearestGrid(Vector3 v)
    {
        var      dist    = float.MaxValue;
        PipeGrid nearest = null;

        foreach (var g in grids)
        {
            var d = Vector3.Distance(v, g.transform.position);
            if (d < dist)
            {
                dist    = d;
                nearest = g;
            }
        }
        return(nearest);
    }
예제 #3
0
        private GameObject buildPipeGrid()
        {
            var obj = new GameObject();

            obj.AddComponent <PipeGrid>();

            PipeGrid grid = obj.GetComponent <PipeGrid>();

            grid.cellPrefab = new GameObject();
            grid.cellPrefab.AddComponent <CellInitializer>();
            grid.width  = 5;
            grid.height = 5;

            var texture = new Texture2D(4, 4, TextureFormat.DXT1, false);

            return(obj);
        }
예제 #4
0
 public PipePlayForm()
 {
     InitializeComponent();
     PipeGrid = new PipeGridNamespace.PipeGrid(50, 30, pictureBoxPipeGrid);
     PipeGrid.DrawGrid();
 }
예제 #5
0
 private void Awake()
 {
     instance = this;
 }