Example #1
0
        private static void CreateJSONCorp(FileInfo Json, bool l = false)
        {
            try
            {
                L("Get locals for " + Json.Name, l);
                JObject     jObject = JObject.Parse(DirectoryBlockLoader.StripComments(File.ReadAllText(Json.FullName)));
                CorpBuilder jCorp   = jObject.ToObject <CorpBuilder>(new JsonSerializer()
                {
                    MissingMemberHandling = MissingMemberHandling.Ignore
                });

                L("Read JSON", l);
                bool CorpAlreadyExists = BlockLoader.CustomCorps.TryGetValue(jCorp.ID, out var ExistingJSONCorp);
                if (CorpAlreadyExists)
                {
                    string name = ExistingJSONCorp.Name;
                    Console.WriteLine("Could not read corp " + Json.Name + "\n at " + Json.FullName + "\n\nCorp ID collides with " + name);
                    return;
                }

                CustomCorporation corp = new CustomCorporation(jCorp.ID, jCorp.Name);

                if (jCorp.GradesAmount != 0)
                {
                    L("Set GradesAmount", l);
                    corp.GradesAmount = jCorp.GradesAmount;
                }

                if (jCorp.XPLevels != null)
                {
                    L("Set XPLevels", l);
                    corp.XPLevels = jCorp.XPLevels;
                }

                corp.HasLicense = false;// jCorp.HasLicense;

                if (!jCorp.CorpIconName.NullOrEmpty())
                {
                    L("Set CorpIcon", l);
                    var Spr = GameObjectJSON.GetObjectFromUserResources <Sprite>(jCorp.CorpIconName);
                    if (Spr != null)
                    {
                        corp.CorpIcon = Spr;
                    }
                }

                if (!jCorp.SelectedCorpIconName.NullOrEmpty())
                {
                    L("Set SelectedCorpIcon", l);
                    var Spr = GameObjectJSON.GetObjectFromUserResources <Sprite>(jCorp.SelectedCorpIconName);
                    if (Spr != null)
                    {
                        corp.SelectedCorpIcon = Spr;
                    }
                }

                if (!jCorp.ModernCorpIconName.NullOrEmpty())
                {
                    L("Set ModernCorpIcon", l);
                    var Spr = GameObjectJSON.GetObjectFromUserResources <Sprite>(jCorp.ModernCorpIconName);
                    if (Spr != null)
                    {
                        corp.ModernCorpIcon = Spr;
                    }
                }

                /*if (!jCorp.Material.Equals(default(CorpMaterial)))
                 * {
                 *  L("Set Material");
                 *  Console.WriteLine(jCorp.Material.TextureName + " " + jCorp.Material.MetallicTextureName + " " + jCorp.Material.EmissionTextureName);
                 *  Material corpMat = GameObjectJSON.GetObjectFromGameResources<Material>("GSO_Main");
                 *  corpMat = GameObjectJSON.SetTexturesToMaterial(true, corpMat,
                 *          jCorp.Material.TextureName.NullOrEmpty() ? null : GameObjectJSON.GetObjectFromUserResources<Texture2D>(jCorp.Material.TextureName),
                 *          jCorp.Material.MetallicTextureName.NullOrEmpty() ? null : GameObjectJSON.GetObjectFromUserResources<Texture2D>(jCorp.Material.MetallicTextureName),
                 *          jCorp.Material.EmissionTextureName.NullOrEmpty() ? null : GameObjectJSON.GetObjectFromUserResources<Texture2D>(jCorp.Material.EmissionTextureName));
                 *  corpMat.name = corp.Name + "_Main";
                 *  GameObjectJSON.AddToResourceCache(corpMat, corpMat.name);
                 *  corp.Material = corpMat;
                 * }*/

                if (!jCorp.SkinInfo.Equals(default(CorpSkinInfo)))
                {
                    var Material = jCorp.SkinInfo.Material;
                    if (!Material.Equals(default(CorpMaterial)))
                    {
                        var Albedo   = Material.TextureName.NullOrEmpty() ? null : GameObjectJSON.GetObjectFromUserResources <Texture2D>(Material.TextureName);
                        var Metallic = Material.MetallicTextureName.NullOrEmpty() ? null : GameObjectJSON.GetObjectFromUserResources <Texture2D>(Material.MetallicTextureName);
                        var Emissive = Material.EmissionTextureName.NullOrEmpty() ? null : GameObjectJSON.GetObjectFromUserResources <Texture2D>(Material.EmissionTextureName);


                        L("Set Material", l);
                        Material corpMat = GameObjectJSON.GetObjectFromGameResources <Material>("GSO_Main");
                        corpMat      = GameObjectJSON.SetTexturesToMaterial(true, corpMat, Albedo, Metallic, Emissive);
                        corpMat.name = corp.Name + "_Main";
                        GameObjectJSON.AddToResourceCache(corpMat, corpMat.name);
                        corp.Material = corpMat;

                        L("Set Skin basis", l);
                        corp.SkinInfo = ScriptableObject.CreateInstance <CorporationSkinInfo>();
                        corp.SkinInfo.m_Corporation     = (FactionSubTypes)corp.CorpID;
                        corp.SkinInfo.m_SkinUniqueID    = 0;
                        corp.SkinInfo.m_SkinTextureInfo = new SkinTextures
                        {
                            m_Albedo   = Albedo,
                            m_Emissive = Emissive,
                            m_Metal    = Metallic,
                        };

                        var SkinUIInfo = jCorp.SkinInfo.SkinUIInfo;

                        var Preview    = SkinUIInfo.PreviewImage.NullOrEmpty() ? null : GameObjectJSON.GetObjectFromUserResources <Texture2D>(SkinUIInfo.PreviewImage);
                        var Button     = SkinUIInfo.ButtonImage.NullOrEmpty() ? null : GameObjectJSON.GetObjectFromUserResources <Texture2D>(SkinUIInfo.ButtonImage);
                        var ButtonMini = SkinUIInfo.MiniPaletteImage.NullOrEmpty() ? null : GameObjectJSON.GetObjectFromUserResources <Texture2D>(SkinUIInfo.MiniPaletteImage);

                        var preview = Preview != null?GameObjectJSON.SpriteFromImage(Preview) : GameObjectJSON.SpriteFromImage(Albedo);

                        var button = Button != null?GameObjectJSON.SpriteFromImage(Button) : preview;

                        var buttonMini = ButtonMini != null?GameObjectJSON.SpriteFromImage(ButtonMini) : button;

                        corp.SkinInfo.m_SkinUIInfo = new CorporationSkinUIInfo()
                        {
                            m_LocalisedString = new LocalisedString()
                            {
                                m_Bank = corp.Name
                            },
                            m_PreviewImage         = preview,
                            m_SkinButtonImage      = button,
                            m_SkinMiniPaletteImage = buttonMini,
                            m_SkinLocked           = false
                        };
                    }
                }

                corp.Register();
            }
            catch (Exception E)
            {
                Console.WriteLine("Could not read corp " + Json.Name + "\n at " + Json.FullName + "\n\n" + E);
                BlockLoader.Timer.Log($" ! Could not read #{Json.Name} - \"{E.Message}\"");
            }
        }