public void Close()
    {
        openCount = Mathf.Max(0, openCount - 1);
        if (openCount == 0 && DisplacesGas(doorType))
        {
            StructureTemperatureComponents structureTemperatures = GameComps.StructureTemperatures;
            HandleVector <int> .Handle     handle = structureTemperatures.GetHandle(base.gameObject);
            PrimaryElement component = GetComponent <PrimaryElement>();
            if (handle.IsValid() && !structureTemperatures.IsBypassed(handle))
            {
                float num = component.Temperature = structureTemperatures.GetPayload(handle).Temperature;
            }
        }
        switch (controlState)
        {
        case ControlState.Locked:
            controller.sm.isOpen.Set(false, controller);
            break;

        case ControlState.Auto:
            if (openCount == 0)
            {
                controller.sm.isOpen.Set(false, controller);
                Game.Instance.userMenu.Refresh(base.gameObject);
            }
            break;
        }
    }
    public float Open()
    {
        if (openCount == 0 && DisplacesGas(doorType))
        {
            StructureTemperatureComponents structureTemperatures = GameComps.StructureTemperatures;
            HandleVector <int> .Handle     handle = structureTemperatures.GetHandle(base.gameObject);
            if (handle.IsValid() && structureTemperatures.IsBypassed(handle))
            {
                int[] placementCells = building.PlacementCells;
                float num            = 0f;
                int   num2           = 0;
                foreach (int i2 in placementCells)
                {
                    if (Grid.Mass[i2] > 0f)
                    {
                        num2++;
                        num += Grid.Temperature[i2];
                    }
                }
                if (num2 > 0)
                {
                    num /= (float)placementCells.Length;
                    PrimaryElement component = GetComponent <PrimaryElement>();
                    KCrashReporter.Assert(num > 0f, "Door has calculated an invalid temperature");
                    component.Temperature = num;
                }
            }
        }
        openCount++;
        float result = 1f;

        if ((Object)consumer != (Object)null)
        {
            result = ((!consumer.IsPowered) ? 0.5f : 1f);
        }
        switch (controlState)
        {
        case ControlState.Auto:
        case ControlState.Opened:
            controller.sm.isOpen.Set(true, controller);
            break;
        }
        return(result);
    }