Example #1
0
 private WireShowLayer()
 {
     //IsTouchEnable = true;
     Chessboard = new int[GameConfig.WidthX, GameConfig.HightY];
     Wires = new List<Wire>();
     WireDictionary = new Dictionary<IntVector, Wire>();
     NewWireList = new List<Wire>();
     RevolutionAnchors = new List<RevolutionAnchor>();
     Together = new List<Wire>();
     Clears = new List<Wire>();
     _rightLints = new List<Lint>();
     _leftLints = new List<Lint>();
     Thunders = new List<ThunderSprite>();
     for (int i = 0; i < 40; i++)
     {
         var sp = new ThunderSprite();
         AddChild(sp, 9);
         Thunders.Add(sp);
         sp.Visible = false;
     }
 }
Example #2
0
        private void YSub(Wire wire)
        {
            wire.BYSub = true;
            if (wire.Vector.Y > 0)
            {
                var v = wire.Vector - new IntVector(0, 1);
                var w = WireDictionary[v];
                if (Clears.Contains(w) && w.WireData[0] != 0)
                {
                    YDown.Add(wire);
                    if (w.WireData[2] != 0)
                    {
                        if (!w.BYSub)
                        {
                            YSub(w);
                        }
                    }
                }
            }

            if (YDown.Count >= 1)
            {
                ThunderSprite sp;
                if (Thunders.Count - 1 > _thunderindex)
                {
                    sp = Thunders[_thunderindex];
                }
                else
                {
                    sp = new ThunderSprite();
                    AddChild(sp, 9);
                    Thunders.Add(sp);
                }
                _thunderindex++;
                sp.Points.Clear();
                sp.AddPoint(new Vector2(wire.Vector.X * 94 + 94 / 2 + GameConfig.RelativeOrigin.X, 768 - (wire.Vector.Y * 94 + 47 + GameConfig.RelativeOrigin.Y)));
                sp.EndPoint(new Vector2(wire.Vector.X * 94 + 94 / 2 + GameConfig.RelativeOrigin.X, 768 - (wire.Vector.Y * 94 + 47 - YDown.Count * 94 / 2 + GameConfig.RelativeOrigin.Y)));
                sp.Visible = true;
            }
        }
Example #3
0
 private void XAdd(Wire wire)
 {
     wire.BXAdd = true;
     if (wire.Vector.X < GameConfig.WidthX - 1)
     {
         var v = wire.Vector + new IntVector(1, 0);
         var w = WireDictionary[v];
         if (Clears.Contains(w) && w.WireData[1] != 0)
         {
             XRight.Add(wire);
             if (w.WireData[3] != 0)
             {
                 if (!w.BXAdd)
                 {
                     XAdd(w);
                 }
             }
         }
     }
     if (XRight.Count >= 1)
     {
         ThunderSprite sp;
         if (Thunders.Count - 1 > _thunderindex)
         {
             sp = Thunders[_thunderindex];
         }
         else
         {
             sp = new ThunderSprite();
             AddChild(sp, 9);
             Thunders.Add(sp);
         }
         _thunderindex++;
         sp.Points.Clear();
         sp.AddPoint(new Vector2(wire.Vector.X * 94 + 94 / 2 + GameConfig.RelativeOrigin.X, 768 - (wire.Vector.Y * 94 + 47 + GameConfig.RelativeOrigin.Y)));
         sp.EndPoint(new Vector2(wire.Vector.X * 94 + 94 / 2 + GameConfig.RelativeOrigin.X + XRight.Count * 94 / 2, 768 - (wire.Vector.Y * 94 + 47 + GameConfig.RelativeOrigin.Y)));
         sp.Visible = true;
     }
 }