Beispiel #1
0
        public static void AddSubstance(SubstanceEntry entry, SubstanceTable substanceTable)
        {
            Log.Spam($"Adding substance {entry.elementId}");

            SimHashes elementHash = SimHashUtil.CreateHash(entry.elementId);

            if (entry.baseSubstance == null)
            {
                Log.Error($"Missing baseSubstance for substance {entry.elementId}");
                return;
            }

            var baseSubstance = substanceTable.GetSubstance((SimHashes)Hash.SDBMLower(entry.baseSubstance));

            if (baseSubstance == null)
            {
                Log.Error($"Invalid baseSubstance {entry.baseSubstance} for substance {entry.elementId}");
                return;
            }

            Color32 color        = entry.color ?? baseSubstance.colour;
            Color32 uiColor      = entry.uiColor ?? baseSubstance.uiColour;
            Color32 conduitColor = entry.conduitColor ?? baseSubstance.conduitColour;

            var substance = ModUtil.CreateSubstance(entry.elementId, entry.state, baseSubstance.anim, baseSubstance.material, color, uiColor, conduitColor);

            substanceTable.GetList().Add(substance);
        }
    private static bool ManifestSubstanceForElement(Element elem, ref Hashtable substanceList, SubstanceTable substanceTable)
    {
        elem.substance = null;
        if (substanceList.ContainsKey(elem.id))
        {
            elem.substance = (substanceList[elem.id] as Substance);
            return(false);
        }
        if ((UnityEngine.Object)substanceTable != (UnityEngine.Object)null)
        {
            elem.substance = substanceTable.GetSubstance(elem.id);
        }
        if (elem.substance == null)
        {
            elem.substance = new Substance();
            substanceTable.GetList().Add(elem.substance);
        }
        elem.substance.elementID       = elem.id;
        elem.substance.renderedByWorld = elem.IsSolid;
        elem.substance.idx             = substanceList.Count;
        if ((Color)elem.substance.uiColour == noColour)
        {
            int count = elements.Count;
            int idx   = elem.substance.idx;
            elem.substance.uiColour = Color.HSVToRGB((float)idx / (float)count, 1f, 1f);
        }
        string text = UI.StripLinkFormatting(elem.name);

        elem.substance.name = text;
        if (Array.IndexOf((SimHashes[])Enum.GetValues(typeof(SimHashes)), elem.id) >= 0)
        {
            elem.substance.nameTag = GameTagExtensions.Create(elem.id);
        }
        else
        {
            elem.substance.nameTag = ((text == null) ? Tag.Invalid : TagManager.Create(text));
        }
        elem.substance.audioConfig = ElementsAudio.Instance.GetConfigForElement(elem.id);
        substanceList.Add(elem.id, elem.substance);
        return(true);
    }