public override void DoCell(Rect rect, Pawn pawn, PawnTable table)
        {
            if (!this.HasCheckbox(pawn))
            {
                return;
            }
            int     num    = (int)((rect.width - 24f) / 2f);
            int     num2   = Mathf.Max(3, 0);
            Vector2 vector = new Vector2(rect.x + (float)num, rect.y + (float)num2);
            Rect    rect2  = new Rect(vector.x, vector.y, 24f, 24f);

            if (Find.TickManager.TicksGame % 60 == 0)
            {
                pawn.UpdatePermissions();
                //Log.Message("GetDisabled UpdateCanDesignateService for " + xxx.get_pawnname(pawn));
                //Log.Message("UpdateCanDesignateService " + pawn.UpdateCanDesignateService());
                //Log.Message("CanDesignateService " + pawn.CanDesignateService());
                //Log.Message("GetDisabled " + GetDisabled(pawn));
            }
            bool disabled = this.GetDisabled(pawn);
            bool value;

            if (disabled)
            {
                value = false;
            }
            else
            {
                value = this.GetValue(pawn);
            }

            bool    flag    = value;
            Vector2 topLeft = vector;

            WhoreCheckbox.Checkbox(topLeft, ref value, 24f, disabled, WhoreCheckbox.WhoreCheckboxOnTex, WhoreCheckbox.WhoreCheckboxOffTex, WhoreCheckbox.WhoreCheckboxDisabledTex);
            if (Mouse.IsOver(rect2))
            {
                string tip = this.GetTip(pawn);
                if (!tip.NullOrEmpty())
                {
                    TooltipHandler.TipRegion(rect2, tip);
                }
            }
            if (value != flag)
            {
                this.SetValue(pawn, value);
            }
        }
        public static void Checkbox(float x, float y, ref bool checkOn, float size = 24f, bool disabled = false, Texture2D texChecked = null, Texture2D texUnchecked = null, Texture2D texDisabled = null)
        {
            Rect rect = new Rect(x, y, size, size);

            WhoreCheckbox.CheckboxDraw(x, y, checkOn, disabled, size, texChecked, texUnchecked, texDisabled);
            if (!disabled)
            {
                MouseoverSounds.DoRegion(rect);
                bool flag = false;
                Widgets.DraggableResult draggableResult = Widgets.ButtonInvisibleDraggable(rect, false);
                if (draggableResult == Widgets.DraggableResult.Pressed)
                {
                    checkOn = !checkOn;
                    flag    = true;
                }
                else if (draggableResult == Widgets.DraggableResult.Dragged)
                {
                    checkOn = !checkOn;
                    flag    = true;
                    WhoreCheckbox.checkboxPainting      = true;
                    WhoreCheckbox.checkboxPaintingState = checkOn;
                }
                if (Mouse.IsOver(rect) && WhoreCheckbox.checkboxPainting && Input.GetMouseButton(0) && checkOn != WhoreCheckbox.checkboxPaintingState)
                {
                    checkOn = WhoreCheckbox.checkboxPaintingState;
                    flag    = true;
                }
                if (flag)
                {
                    if (checkOn)
                    {
                        SoundDefOf.Checkbox_TurnedOn.PlayOneShotOnCamera(null);
                    }
                    else
                    {
                        SoundDefOf.Checkbox_TurnedOff.PlayOneShotOnCamera(null);
                    }
                }
            }
        }
 public static void Checkbox(Vector2 topLeft, ref bool checkOn, float size = 24f, bool disabled = false, Texture2D texChecked = null, Texture2D texUnchecked = null, Texture2D texDisabled = null)
 {
     WhoreCheckbox.Checkbox(topLeft.x, topLeft.y, ref checkOn, size, disabled, texChecked, texUnchecked);
 }