Beispiel #1
0
 public UpdateSimViewSharedData(SimDebugView instance, byte[] texture_bytes, HashedString sim_view_mode, SimDebugView sim_debug_view)
 {
     this.instance = instance;
     textureBytes  = texture_bytes;
     simViewMode   = sim_view_mode;
     simDebugView  = sim_debug_view;
 }
Beispiel #2
0
    public static Color GetJoulesColour(SimDebugView instance, int cell)
    {
        float num = Grid.Element[cell].specificHeatCapacity * Grid.Temperature[cell] * (Grid.Mass[cell] * 1000f);
        float t   = 0.5f * num / (ElementLoader.FindElementByHash(SimHashes.SandStone).specificHeatCapacity * 294f * 1000000f);

        return(Color.Lerp(Color.black, Color.red, t));
    }
Beispiel #3
0
    private static Color GetSimCheckErrorMapColour(SimDebugView instance, int cell)
    {
        Color   result  = Color.black;
        Element element = Grid.Element[cell];
        float   num     = Grid.Mass[cell];
        float   num2    = Grid.Temperature[cell];

        if (float.IsNaN(num) || float.IsNaN(num2) || num > 10000f || num2 > 10000f)
        {
            return(Color.red);
        }
        if (element.IsVacuum)
        {
            result = ((num2 != 0f) ? Color.yellow : ((num == 0f) ? Color.gray : Color.blue));
        }
        else if (num2 < 10f)
        {
            result = Color.red;
        }
        else if (Grid.Mass[cell] < 1f && Grid.Pressure[cell] < 1f)
        {
            result = Color.green;
        }
        else if (num2 > element.highTemp + 3f && element.highTempTransition != null)
        {
            result = Color.magenta;
        }
        else if (num2 < element.lowTemp + 3f && element.lowTempTransition != null)
        {
            result = Color.cyan;
        }
        return(result);
    }
Beispiel #4
0
    private static Color GetGameGridColour(SimDebugView instance, int cell)
    {
        Color result = new Color32(0, 0, 0, byte.MaxValue);

        switch (instance.gameGridMode)
        {
        case GameGridMode.DigAmount:
            if (Grid.Element[cell].IsSolid)
            {
                float num = Grid.Damage[cell] / 255f;
                result = Color.HSVToRGB(1f - num, 1f, 1f);
            }
            break;

        case GameGridMode.GameSolidMap:
            result = ((!Grid.Solid[cell]) ? Color.black : Color.white);
            break;

        case GameGridMode.Lighting:
            result = ((Grid.LightCount[cell] <= 0 && LightGridManager.previewLux[cell] <= 0) ? Color.black : Color.white);
            break;

        case GameGridMode.DupePassable:
            result = ((!Grid.DupePassable[cell]) ? Color.black : Color.white);
            break;
        }
        return(result);
    }
Beispiel #5
0
        /// <summary>
        /// Retrieves the overlay color for a particular cell when in the crop view.
        /// </summary>
        /// <param name="cell">The cell to check.</param>
        /// <returns>The overlay color for this cell.</returns>
        internal static Color GetColor(SimDebugView _, int cell)
        {
            var shade  = Color.black;
            var colors = GlobalAssets.Instance.colorSet;
            var reason = Instance.cells[cell];

            switch (reason)
            {
            case PipPlantFailedReasons.PlantCount:
                shade = colors.cropGrowing;
                break;

            case PipPlantFailedReasons.NoPlantablePlot:
                break;

            case PipPlantFailedReasons.CanPlant:
                shade = colors.cropGrown;
                break;

            case PipPlantFailedReasons.Pressure:
                shade = colors.heatflowThreshold0;
                break;

            case PipPlantFailedReasons.Temperature:
            default:
                shade = colors.cropHalted;
                break;
            }
            return(shade);
        }
Beispiel #6
0
    private static void SetDisease(SimDebugView instance, Texture texture)
    {
        Renderer component = instance.plane.GetComponent <Renderer>();

        component.sharedMaterial             = instance.diseaseMaterial;
        component.sharedMaterial.mainTexture = instance.tex;
        texture.filterMode = FilterMode.Bilinear;
    }
Beispiel #7
0
    private static void SetDefaultPoint(SimDebugView instance, Texture texture)
    {
        Renderer component = instance.plane.GetComponent <Renderer>();

        component.sharedMaterial             = instance.material;
        component.sharedMaterial.mainTexture = instance.tex;
        texture.filterMode = FilterMode.Point;
    }
Beispiel #8
0
    private static Color GetDangerColour(SimDebugView instance, int cell)
    {
        Color        result       = Color.black;
        DangerAmount dangerAmount = DangerAmount.None;

        if (!Grid.Element[cell].IsSolid)
        {
            float num = 0f;
            if (Grid.Temperature[cell] < minMinionTemperature)
            {
                num = Mathf.Abs(Grid.Temperature[cell] - minMinionTemperature);
            }
            if (Grid.Temperature[cell] > maxMinionTemperature)
            {
                num = Mathf.Abs(Grid.Temperature[cell] - maxMinionTemperature);
            }
            if (num > 0f)
            {
                if (num < 10f)
                {
                    dangerAmount = DangerAmount.VeryLow;
                }
                else if (num < 30f)
                {
                    dangerAmount = DangerAmount.Low;
                }
                else if (num < 100f)
                {
                    dangerAmount = DangerAmount.Moderate;
                }
                else if (num < 200f)
                {
                    dangerAmount = DangerAmount.High;
                }
                else if (num < 400f)
                {
                    dangerAmount = DangerAmount.VeryHigh;
                }
                else if (num > 800f)
                {
                    dangerAmount = DangerAmount.Extreme;
                }
            }
        }
        if (dangerAmount < DangerAmount.VeryHigh && (Grid.Element[cell].IsVacuum || (Grid.Element[cell].IsGas && (Grid.Element[cell].id != SimHashes.Oxygen || Grid.Pressure[cell] < minMinionPressure))))
        {
            dangerAmount++;
        }
        if (dangerAmount != 0)
        {
            float num2 = (float)dangerAmount / 6f;
            result = Color.HSVToRGB((80f - num2 * 80f) / 360f, 1f, 1f);
        }
        return(result);
    }
Beispiel #9
0
    private static Color GetDecorColour(SimDebugView instance, int cell)
    {
        Color result = Color.black;

        if (!Grid.Solid[cell])
        {
            float decorAtCell = GameUtil.GetDecorAtCell(cell);
            float num         = decorAtCell / 100f;
            result = ((!(num > 0f)) ? Color.Lerp(new Color(0.15f, 0f, 0f), new Color(1f, 0f, 0f), Mathf.Abs(num)) : Color.Lerp(new Color(0.15f, 0f, 0f), new Color(0f, 1f, 0f), Mathf.Abs(num)));
        }
        return(result);
    }
Beispiel #10
0
    private static Color GetPressureMapColour(SimDebugView instance, int cell)
    {
        Color32 c = Color.black;

        if (Grid.Pressure[cell] > 0f)
        {
            float value = (Grid.Pressure[cell] - instance.minPressureExpected) / (instance.maxPressureExpected - instance.minPressureExpected);
            float num   = Mathf.Clamp(value, 0f, 1f);
            float num2  = num * 0.9f;
            c = new Color(num2, num2, num2, 1f);
        }
        return(c);
    }
Beispiel #11
0
    private static Color GetMassColour(SimDebugView instance, int cell)
    {
        Color result = Color.black;

        if (!IsInsulated(cell))
        {
            float num = Grid.Mass[cell];
            if (num > 0f)
            {
                float num2 = (num - Instance.minMassExpected) / (Instance.maxMassExpected - Instance.minMassExpected);
                result = Color.HSVToRGB(1f - num2, 1f, 1f);
            }
        }
        return(result);
    }
Beispiel #12
0
    private static Color GetThermalConductivityColour(SimDebugView instance, int cell)
    {
        bool  flag   = IsInsulated(cell);
        Color result = Color.black;
        float num    = instance.maxThermalConductivity - instance.minThermalConductivity;

        if (!flag && num != 0f)
        {
            float a = (Grid.Element[cell].thermalConductivity - instance.minThermalConductivity) / num;
            a      = Mathf.Max(a, 0f);
            a      = Mathf.Min(a, 1f);
            result = new Color(a, a, a);
        }
        return(result);
    }
Beispiel #13
0
    private static Color GetSolidLiquidMapColour(SimDebugView instance, int cell)
    {
        Color result = Color.black;

        switch (Grid.Element[cell].state & Element.State.Solid)
        {
        case Element.State.Solid:
            result = Color.blue;
            break;

        case Element.State.Liquid:
            result = Color.green;
            break;
        }
        return(result);
    }
Beispiel #14
0
    private static Color GetDiseaseColour(SimDebugView instance, int cell)
    {
        Color result = Color.black;

        if (Grid.DiseaseIdx[cell] != 255)
        {
            Disease disease = Db.Get().Diseases[Grid.DiseaseIdx[cell]];
            result   = disease.overlayColour;
            result.a = SimUtil.DiseaseCountToAlpha(Grid.DiseaseCount[cell]);
        }
        else
        {
            result.a = 0f;
        }
        return(result);
    }
Beispiel #15
0
    public static Color GetRadiationColour(SimDebugView instance, int cell)
    {
        Color result = new Color(0.2f, 0.9f, 0.3f, Mathf.Clamp(Mathf.Sqrt((float)(Grid.RadiationCount[cell] + RadiationGridManager.previewLux[cell])) / Mathf.Sqrt(80000f), 0f, 1f));

        if (Grid.RadiationCount[cell] > 71999)
        {
            float num = ((float)Grid.RadiationCount[cell] + (float)LightGridManager.previewLux[cell] - 71999f) / 8001f;
            num /= 10f;
            float   r       = result.r;
            Vector3 vector  = Grid.CellToPos2D(cell);
            float   xin     = vector.x / 8f;
            Vector3 vector2 = Grid.CellToPos2D(cell);
            result.r = r + Mathf.Min(0.1f, PerlinSimplexNoise.noise(xin, vector2.y / 8f + (float)instance.currentFrame / 32f) * num);
        }
        return(result);
    }
Beispiel #16
0
    private static Color GetOxygenMapColour(SimDebugView instance, int cell)
    {
        Color result = Color.black;

        if (!Grid.IsLiquid(cell) && !Grid.Solid[cell])
        {
            if (Grid.Mass[cell] > minimumBreathable && (Grid.Element[cell].id == SimHashes.Oxygen || Grid.Element[cell].id == SimHashes.ContaminatedOxygen))
            {
                float time = Mathf.Clamp((Grid.Mass[cell] - minimumBreathable) / optimallyBreathable, 0f, 1f);
                result = instance.breathableGradient.Evaluate(time);
            }
            else
            {
                result = instance.unbreathableColour;
            }
        }
        return(result);
    }
Beispiel #17
0
    private static Color GetStateChangeColour(SimDebugView instance, int cell)
    {
        Color   result  = Color.black;
        Element element = Grid.Element[cell];

        if (!element.IsVacuum)
        {
            float num  = Grid.Temperature[cell];
            float num2 = element.lowTemp * 0.05f;
            float num3 = Mathf.Abs(num - element.lowTemp);
            float a    = num3 / num2;
            float num4 = element.highTemp * 0.05f;
            float num5 = Mathf.Abs(num - element.highTemp);
            float b    = num5 / num4;
            float t    = Mathf.Max(0f, 1f - Mathf.Min(a, b));
            result = Color.Lerp(Color.black, Color.red, t);
        }
        return(result);
    }
Beispiel #18
0
    public static Color GetStateChangeProximityColour(SimDebugView instance, int cell)
    {
        float   temperature = Grid.Temperature[cell];
        Element element     = Grid.Element[cell];
        float   lowTemp     = element.lowTemp;
        float   highTemp    = element.highTemp;

        if (element.IsGas)
        {
            highTemp = Mathf.Min(lowTemp + 150f, highTemp);
            return(GasTemperatureToColor(temperature, lowTemp, highTemp));
        }
        if (element.IsSolid)
        {
            lowTemp = Mathf.Max(highTemp - 150f, lowTemp);
            return(SolidTemperatureToColor(temperature, lowTemp, highTemp));
        }
        return(TemperatureToColor(temperature, lowTemp, highTemp));
    }
Beispiel #19
0
    private static Color GetTileColour(SimDebugView instance, int cell)
    {
        float   num     = 0.33f;
        Color   result  = new Color(num, num, num);
        Element element = Grid.Element[cell];
        bool    flag    = false;

        foreach (Tag tileOverlayFilter in Game.Instance.tileOverlayFilters)
        {
            if (element.HasTag(tileOverlayFilter))
            {
                flag = true;
            }
        }
        if (!flag)
        {
            return(result);
        }
        return(element.substance.uiColour);
    }
Beispiel #20
0
    public static Color GetNormalizedTemperatureColourMode(SimDebugView instance, int cell)
    {
        switch (Game.Instance.temperatureOverlayMode)
        {
        case Game.TemperatureOverlayModes.AbsoluteTemperature:
            return(GetNormalizedTemperatureColour(instance, cell));

        case Game.TemperatureOverlayModes.HeatFlow:
            return(GetHeatFlowColour(instance, cell));

        case Game.TemperatureOverlayModes.AdaptiveTemperature:
            return(GetNormalizedTemperatureColour(instance, cell));

        case Game.TemperatureOverlayModes.StateChange:
            return(GetStateChangeProximityColour(instance, cell));

        default:
            return(GetNormalizedTemperatureColour(instance, cell));
        }
    }
Beispiel #21
0
    public static Color GetRoomsColour(SimDebugView instance, int cell)
    {
        Color result = Color.black;

        if (Grid.IsValidCell(instance.selectedCell))
        {
            CavityInfo cavityForCell = Game.Instance.roomProber.GetCavityForCell(cell);
            if (cavityForCell != null && cavityForCell.room != null)
            {
                Room room = cavityForCell.room;
                result   = room.roomType.category.color;
                result.a = 0.45f;
                CavityInfo cavityForCell2 = Game.Instance.roomProber.GetCavityForCell(instance.selectedCell);
                if (cavityForCell2 == cavityForCell)
                {
                    result.a += 0.3f;
                }
            }
        }
        return(result);
    }
Beispiel #22
0
        public static Color GetNavColor(SimDebugView instance, int cell)
        {
            var ratio = NavigatorRecordManager.GetRatio(cell);

            return(ratio > Threshold?Color.Lerp(Low, High, ratio) : None);
        }
 private static Color GetCellColor(SimDebugView instance, int cell)
 {
     return(cell == selectedCell ? new Color(0f, 1f, 0.3f, 0.3f) : Color.clear);
 }
Beispiel #24
0
 private static Color GetReservedColour(SimDebugView instance, int cell)
 {
     return((!Grid.Reserved[cell]) ? Color.black : Color.white);
 }
Beispiel #25
0
    public static Color GetNormalizedTemperatureColour(SimDebugView instance, int cell)
    {
        float temperature = Grid.Temperature[cell];

        return(instance.NormalizedTemperature(temperature));
    }
Beispiel #26
0
 private static Color GetAllowPathFindingColour(SimDebugView instance, int cell)
 {
     return((!Grid.AllowPathfinding[cell]) ? Color.black : Color.white);
 }
Beispiel #27
0
 public static void DestroyInstance()
 {
     Instance = null;
 }
Beispiel #28
0
 private static Color GetBlack(SimDebugView instance, int cell)
 {
     return(Color.black);
 }
Beispiel #29
0
 private static Color GetHeatFlowColour(SimDebugView instance, int cell)
 {
     return(instance.NormalizedHeatFlow(cell));
 }
Beispiel #30
0
 protected override void OnPrefabInit()
 {
     Instance        = this;
     material        = UnityEngine.Object.Instantiate(material);
     diseaseMaterial = UnityEngine.Object.Instantiate(diseaseMaterial);
 }