Пример #1
0
        public static void UnwindVisuals(Dictionary <Point16, byte> visited, Point16 startPoint)
        {
            Point16 p = startPoint;

            while (visited.ContainsKey(p))
            {
                TransferAgent.Direction dir = (TransferAgent.Direction)visited[p];
                visited[p] = (byte)TransferAgent.Direction.stop; //Stops multiple particles, if multiple containers receive

                switch (dir)
                {
                case TransferAgent.Direction.up: p = new Point16(p.X, p.Y - 1); break;

                case TransferAgent.Direction.down: p = new Point16(p.X, p.Y + 1); break;

                case TransferAgent.Direction.left: p = new Point16(p.X - 1, p.Y); break;

                case TransferAgent.Direction.right: p = new Point16(p.X + 1, p.Y); break;

                case TransferAgent.Direction.stop: return;
                }

                if (Main.netMode == 0)
                {
                    CreateVisual(p, dir);
                }
                else
                {
                    ModPacket packet = NetRouter.GetPacketTo(ModContent.GetInstance <TransferAgent>(), mod);
                    packet.WritePackedVector2(p.ToVector2());
                    packet.Write((byte)dir);
                    packet.Send();
                }
            }
        }
Пример #2
0
        public static void CreateVisual(Point16 point, TransferAgent.Direction dir)
        {
            Vector2 location = new Vector2(point.X * 16 + 8, point.Y * 16 + 8);
            Vector2 velocity = Vector2.Zero;

            switch (dir)
            {
            case TransferAgent.Direction.up: velocity.Y = dustVelocity; break;

            case TransferAgent.Direction.down: velocity.Y = -dustVelocity; break;

            case TransferAgent.Direction.left: velocity.X = dustVelocity; break;

            case TransferAgent.Direction.right: velocity.X = -dustVelocity; break;

            case TransferAgent.Direction.stop: return;
            }

            Dust dust = Dust.NewDustPerfect(location, DustID.Silver, velocity);

            dust.noGravity = true;

            if (Main.xMas)
            {
                if (point.X % 2 == point.Y % 2)
                {
                    dust.color = Color.Red;
                }
                else
                {
                    dust.color = Color.LightGreen;
                }
            }

            if (Main.halloween)
            {
                if (point.X % 2 == point.Y % 2)
                {
                    dust.color = Color.MediumPurple;
                }
                else
                {
                    dust.color = Color.Orange;
                }
            }
        }