Beispiel #1
0
        ///-------------------------------------------------------------------------------------------------
        /// <summary>   Creates a station. </summary>
        ///
        /// <remarks>   MelodicAlbuild, 3/8/2021. </remarks>
        ///
        /// <param name="factoryType">  Type of the factory. </param>
        /// <param name="codename">     The codename. </param>
        /// <param name="maxStack">     Max Stack Size of this Item. </param>
        /// <param name="name">         The name. </param>
        /// <param name="desc">         The description. </param>
        /// <param name="guidString">   The unique identifier string. </param>
        /// <param name="icon">         The icon. </param>
        /// <param name="variantname">  The variantname. </param>
        /// <param name="categories">   The categories. </param>
        ///-------------------------------------------------------------------------------------------------

        public static void CreateStation(FactoryType factoryType, string codename, int maxStack, LocalizedString name, LocalizedString desc, string guidString, Sprite icon, string variantname, RecipeCategory[] categories)
        {
            var category = GameResources.Instance.Items.FirstOrDefault(s => s.AssetId == productionStationGUID)?.Category;
            var item     = ScriptableObject.CreateInstance <ItemDefinition>();

            if (item == null)
            {
                Debug.Log("Item is null"); return;
            }
            if (category == null)
            {
                Debug.Log("Category is null"); return;
            }
            item.name     = codename;
            item.Category = category;
            item.MaxStack = maxStack;
            item.Icon     = icon;

            var prefabParent = new GameObject();
            var olditem      = GameResources.Instance.Items.FirstOrDefault(s => s.AssetId == productionStationGUID);

            prefabParent.SetActive(false);
            var newmodule = UnityEngine.Object.Instantiate(olditem.Prefabs[0], prefabParent.transform);
            var module    = newmodule.GetComponentInChildren <FactoryStation>();
            var producer  = newmodule.GetComponentInChildren <Producer>();

            newmodule.SetName("AlloyForgeStation");
            var gridmodule = newmodule.GetComponent <GridModule>();

            gridmodule.VariantName = variantname;
            gridmodule.Item        = item;

            var productionGroup = Typings.GetOrCreateTyping(factoryType);

            LocalizedString nameStr = name;
            LocalizedString descStr = desc;

            Initialize(ref nameStr);
            Initialize(ref descStr);

            item.SetPrivateField("m_name", nameStr);
            item.SetPrivateField("m_description", descStr);
            typeof(FactoryStation).GetField("m_factoryType", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(module, factoryType);
            typeof(FactoryStation).GetField("m_productionGroup", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(module, productionGroup);
            typeof(Producer).GetField("m_categories", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(producer, categories);

            var guid = GUID.Parse(guidString);

            typeof(Definition).GetField("m_assetId", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance).SetValue(item, guid);

            item.Prefabs = new GameObject[] { newmodule };

            AssetReference[] assets = new AssetReference[] { new AssetReference()
                                                             {
                                                                 Object = item, Guid = guid, Labels = new string[0]
                                                             } };
            RuntimeAssetStorage.Add(assets, default);
        }
Beispiel #2
0
 public ScriptConversion(string outputDirectory)
 {
     _outputDirectory = outputDirectory;
     workspace        = new AdhocWorkspace();
     project          = workspace.AddProject(ProjectInfo.Create(ProjectId.CreateNewId(), VersionStamp.Default, "Scripts",
                                                                "Scripts", LanguageNames.CSharp));
     _typings  = new Typings();
     converter = new ScriptConverter(_typings);
 }
    public ScriptConverter(Typings typings)
    {
        _typings = typings;

        _engine = Python.CreateEngine();

        var languageContext = HostingHelpers.GetLanguageContext(_engine);

        _compilerOptions = languageContext.GetCompilerOptions();
    }
Beispiel #4
0
        public CodeGeneration(Context ctx)
        {
            ctx.put(CONTEXT_KEY, this);

            typings      = Typings.instance(ctx);
            typeResolver = new LLVMTypeResolver();
            options      = CommandLineOptions.instance(ctx);
            symtab       = Symtab.instance(ctx);
            log          = Log.instance(ctx);

            targetOS = getTargetOS();
        }
        ///-------------------------------------------------------------------------------------------------
        /// <summary>   Creates production module. </summary>
        ///
        /// <remarks>   MelodicAlbuild, 3/8/2021. </remarks>
        ///
        /// <param name="codename">         The codename. </param>
        /// <param name="variantname">      The variantname. </param>
        /// <param name="maxstack">         The maxstack. </param>
        /// <param name="baseitem">         The baseitem. </param>
        /// <param name="name">             The name. </param>
        /// <param name="desc">             The description. </param>
        /// <param name="guidstring">       The guidstring. </param>
        /// <param name="categoryname">     The categoryname. </param>
        /// <param name="factorytypename">  The factorytypename. </param>
        /// <param name="icon">             The icon. </param>
        /// <param name="categories">       The categories. </param>
        ///-------------------------------------------------------------------------------------------------

        public static void CreateProductionModule(string codename, string variantname, int maxstack, string baseitem, LocalizedString name, LocalizedString desc, string guidstring, string categoryname, string factorytypename, Sprite icon, RecipeCategory[] categories)
        {
            var category = GameResources.Instance.Items.FirstOrDefault(s => s.name == categoryname).Category;
            var item     = ScriptableObject.CreateInstance <ItemDefinition>();

            item.name     = codename;
            item.Category = category;
            item.MaxStack = maxstack;
            item.Icon     = icon;

            var prefabParent = new GameObject();
            var olditem      = GameResources.Instance.Items.FirstOrDefault(s => s.name == baseitem);
            var factorytype  = GameResources.Instance.FactoryTypes.FirstOrDefault(s => s.name == factorytypename);

            prefabParent.SetActive(false);
            var newmodule  = Object.Instantiate(olditem.Prefabs[0], prefabParent.transform);
            var module     = newmodule.GetComponentInChildren <ProductionModule>();
            var gridmodule = newmodule.GetComponent <GridModule>();

            gridmodule.VariantName = variantname;
            gridmodule.Item        = item;
            newmodule.name         = codename;
            item.Prefabs           = new GameObject[] { newmodule };
            var modulecategory = RuntimeAssetCacheLookup.Get <ModuleCategory>().First(s => s.name == factorytypename);

            modulecategory.Modules = modulecategory.Modules.Concat(new ItemDefinition[] { item }).ToArray();

            var productionGroup = Typings.GetOrCreateTyping(factorytype);

            LocalizedString nameStr = name;
            LocalizedString descStr = desc;

            Initialize(ref nameStr);
            Initialize(ref descStr);

            typeof(ProductionModule).GetField("m_factoryType", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(module, factorytype);
            typeof(ProductionModule).GetField("m_module", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(module, gridmodule);
            typeof(ProductionModule).GetField("m_categories", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(module, categories);
            typeof(ProductionModule).GetField("m_productionGroup", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(module, productionGroup);
            typeof(ItemDefinition).GetField("m_name", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(item, nameStr);
            typeof(ItemDefinition).GetField("m_description", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(item, descStr);

            var guid = GUID.Parse(guidstring);

            typeof(Definition).GetField("m_assetId", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance).SetValue(item, guid);

            AssetReference[] assets = new AssetReference[] { new AssetReference()
                                                             {
                                                                 Object = item, Guid = guid, Labels = new string[0]
                                                             } };
            RuntimeAssetStorage.Add(assets, default);
        }
Beispiel #6
0
        private void DetectSerogroup()
        {
            var serogroup     = Typings.SingleOrDefault(t => t.Attribute == "Serogruppe")?.Value;
            var serogenogroup = Typings.SingleOrDefault(t => t.Attribute == "Serogenogruppe")?.Value;

            if (serogroup != null && serogenogroup == null)
            {
                Serogroup = serogroup;
            }
            if (serogenogroup != null && serogroup == null)
            {
                Serogroup = serogenogroup;
            }
            if (serogenogroup != null && serogroup != null)
            {
                if (serogenogroup == serogroup)
                {
                    Serogroup = serogenogroup;
                }
                else if (serogroup.Contains("deutet auf unbekapselte Meningokokken hin") || serogroup.Contains("Nicht-invasiv"))
                {
                    Serogroup = serogenogroup;
                }
            }

            var molecularTyping = Typings.SingleOrDefault(t => t.Attribute == "Molekulare Typisierung")?.Value;

            if (molecularTyping != null)
            {
                var match = Regex.Match(molecularTyping, "Das Serogruppe.?-(.*)-spezifische .*-Gen wurde nachgewiesen.");
                if (match.Success)
                {
                    Serogroup = match.Groups[1].Value;
                }
            }

            if (Serogroup != null)
            {
                if (Serogroup == "nicht gruppierbar" || Serogroup.Contains("Poly") || Serogroup.Contains("Auto"))
                {
                    Serogroup = "NG";
                }
                else if (Serogroup.Contains("cnl"))
                {
                    Serogroup = "cnl";
                }
                Serogroup = Regex.Replace(Serogroup, ".\\(.*\\)", "");
            }
        }
Beispiel #7
0
 public EntityTypes(Typings type1, Typings type2)
 {
     Type1 = type1;
     Type2 = type2;
 }