/// <summary> /// <para>Sends a <see cref="ModPacket"/> with <see cref="OriPlayer"/> data.</para> /// <inheritdoc cref="ModPacket.Send(int, int)"/> /// </summary> /// <param name="toWho">Who to send to. <see langword="255"/> for server, <see langword="-1"/> for all players.</param> /// <param name="fromWho">Sender, client to ignore.</param> internal void SendOriState(int toWho, int fromWho) { ModPacket packet = GetPacket(fromWho); OriPlayer fromPlayer = Main.player[fromWho].GetModPlayer <OriPlayer>(); BitsByte flags = new BitsByte { [0] = fromPlayer.IsOri, [1] = fromPlayer.Transforming, [2] = fromPlayer.UnrestrictedMovement, [3] = fromPlayer.SeinMinionActive, [4] = fromPlayer.multiplayerPlayerLight, }; packet.Write(flags); if (fromPlayer.Transforming) { packet.Write((ushort)fromPlayer.transformTimer); } if (fromPlayer.SeinMinionActive) { packet.Write((byte)fromPlayer.SeinMinionType); } packet.WriteRGB(fromPlayer.SpriteColorPrimary); packet.WriteRGBA(fromPlayer.SpriteColorSecondary); fromPlayer.input.WritePacket(packet); packet.Send(toWho, fromWho); }