Esempio n. 1
0
    public void OnPointerClick(PointerEventData eventData)
    {
        if (_dragging || Input.touchCount > 1 || eventData.button != PointerEventData.InputButton.Left)
        {
            return;
        }

        if (nextClickOverride != null)
        {
            nextClickOverride();
            nextClickOverride = null;
            return;
        }

        Utils.GetInputCoords(out var x, out var y);
        if (FieldMatrix.Get(x, y, out var block))
        {
            block.logic.Click(eventData);
        }
        else
        {
            PixelDriver.Add(PixelRoad.Circle(Colors.GetPalette(-1)[3],
                                             3f, 3f, 0.05f, 0.5f, x, y).SetWeight(0.05f));
        }
    }
Esempio n. 2
0
 void OnEnable()
 {
     Instance     = this;
     OnNextFrame += LoadFromMemoryOrFile;
     PixelDriver.Add(PixelRoad.Checkerboard(Color.white, new Color(0.97f, 0.97f, 0.97f)).SetWeight(0.3f));
     PixelDriver.Add(PixelRoad.NodeBackground().SetWeight(0.1f));
 }
Esempio n. 3
0
    public static PixelRoad Circle(Color c, float radius, float spread, float timeScale, float timeFade, int fromX, int fromY)
    {
        var pr = new PixelRoad(timeScale + timeFade);

        pr._colorFunc = (x, y) =>
        {
            var dist       = Vector2.Distance(new Vector2(x, y), new Vector2(fromX, fromY));
            var distCircle = Mathf.Lerp(0f, radius, pr.T / timeScale);

            if (dist > distCircle + spread)
            {
                return(WeightedColor.Clear);
            }

            var weight = pr._weight * (1f - Mathf.Max(0, pr.T - timeScale) / timeFade);

            if (dist <= distCircle + spread)
            {
                weight = Mathf.Lerp(0f, weight, 1 - (dist - distCircle) / spread);
            }

            return(new WeightedColor(c, weight));
        };
        return(pr);
    }
Esempio n. 4
0
    public static PixelRoad Checkerboard(Color a, Color b)
    {
        var pr = new PixelRoad(-1f);

        pr._colorFunc = (x, y) =>
        {
            var c = (x + 1000000) % 2 == (y + 1000000) % 2 ? a : b;
            return(new WeightedColor(c, pr._weight));
        };
        return(pr);
    }
Esempio n. 5
0
    void OnPulseDeadEnd(Block from)
    {
        if (from == null || BindMatrix.GetOutBindsCount(this) != 0)
        {
            return;
        }
        var dir  = Utils.DirFromCoords(logic.Position - from.logic.Position);
        var root = Roots.Root[rootId].block;

        root.soundsPlayer.Play(dir);
        PixelDriver.Add(PixelRoad.Circle(root.view.PrimaryPainter.palette.GetColor(dir),
                                         2f, 3f, 0.05f, 0.5f, logic.X, logic.Y).SetWeight(0.3f));
    }
Esempio n. 6
0
    public static PixelRoad NodeBackground()
    {
        var pr = new PixelRoad(-1f);

        pr._colorFunc = (x, y) =>
        {
            if (FieldMatrix.Get(x, y, out var block))
            {
                return(new WeightedColor(Roots.Root[block.rootId].block.view.PrimaryPainter.palette.GetColor(2),
                                         pr._weight));
            }
            return(WeightedColor.Clear);
        };
        return(pr);
    }
Esempio n. 7
0
 public static void Add(PixelRoad road)
 {
     _roads.Add(road);
 }