Exemplo n.º 1
0
        //Called when mod is loading
        public override void OnLoad()
        {
            //f**k playmaker, use AssetBundle!
            AssetBundle ab = LoadAssets.LoadBundle(this, "cdplayer.unity3d");

            rack10    = GameObject.Instantiate(ab.LoadAsset <GameObject>("rack10.prefab"));
            cdp       = ab.LoadAsset <GameObject>("cd.prefab");
            cdCaseP   = ab.LoadAsset <GameObject>("cd case.prefab");
            cd_icon   = ab.LoadAsset <Sprite>("cd.png");
            rack_icon = ab.LoadAsset <Sprite>("rackicon.png");
            ab.Unload(false);

            rack10.name = "CD Rack(item4)";
            LoadAssets.MakeGameObjectPickable(rack10);
            rack10.transform.position = new Vector3(-9.76f, 0.17f, 6.47f);
            rack10.AddComponent <CDRack>();
            rack10.SetActive(false);
            //it's now 3 disks, they works, but f**k them for safety reasons
            if (GameObject.Find("cd(item1") != null)
            {
                //if player loaded CD's they would spawn and we need to turn off them
                GameObject.Find("cd(item1)").SetActive(false);
                GameObject.Find("cd case(item1)").SetActive(false);
            }
            //there might be all 3 disks and only 1
            if (GameObject.Find("cd(item2)") != null)
            {
                GameObject.Find("cd(item2)").SetActive(false);
                GameObject.Find("cd case(item2)").SetActive(false);
            }
            if (GameObject.Find("cd(item3)") != null)
            {
                GameObject.Find("cd(item3)").SetActive(false);
                GameObject.Find("cd case(item3)").SetActive(false);
            }

            string[] dirs = Directory.GetDirectories(path);
            int      i    = 0;

            listOfCDs   = new List <GameObject>();
            listOfCases = new List <GameObject>();
            foreach (string dir in dirs)
            {
                //Quaternion e = Quaternion.Euler(new Vector3(270, 0, 0));
                GameObject cd = (GameObject)Object.Instantiate(cdp);
                cd.layer = 0;
                GameObject cdCase = GameObject.Instantiate(cdCaseP);
                LoadAssets.MakeGameObjectPickable(cdCase);
                cd.name     = "cd(item4)";
                cdCase.name = "cd case(item4)";
                cd.AddComponent <CD>().CDName         = new DirectoryInfo(dir).Name;
                cdCase.AddComponent <CDCase>().CDName = new DirectoryInfo(dir).Name;
                if (i == dirs.Length - 1)
                {
                    cdCase.GetComponent <CDCase>().cdp = this;
                }
                if (File.Exists(Path.Combine(dir, "folder.txt")))
                {
                    string[] txtDirs = File.ReadAllLines(Path.Combine(dir, "folder.txt"));
                    cd.GetComponent <CD>().CDPath = Path.GetFullPath(txtDirs[0]);
                }
                else
                {
                    cd.GetComponent <CD>().CDPath = Path.GetFullPath(dir);
                }
                cd.GetComponent <CD>().cdCase = cdCase.GetComponent <CDCase>();

                cd.GetComponent <CD>().InCase();
                cd.transform.SetParent(cdCase.transform.GetChild(2), false);

                //Load coverart.png if exists, else leave default.
                if (File.Exists(Path.Combine(dir, "coverart.png")))
                {
                    Texture2D t2d = new Texture2D(1, 1);
                    t2d.LoadImage(File.ReadAllBytes(Path.Combine(dir, "coverart.png")));
                    cd.transform.GetChild(0).GetComponent <MeshRenderer>().material.mainTexture                 = t2d;
                    cdCase.transform.GetChild(3).GetComponent <MeshRenderer>().material.mainTexture             = t2d;
                    cdCase.transform.GetChild(0).GetChild(0).GetComponent <MeshRenderer>().material.mainTexture = t2d;
                }
                listOfCDs.Add(cd);
                listOfCases.Add(cdCase);
                cdCase.SetActive(false);
                i++;
            }
            Load();
            if (GameObject.Find("Shop for mods") != null)
            {
                ModsShop.ShopItem shop;
                //Shop for mods is installed
                shop = GameObject.Find("Shop for mods").GetComponent <ModsShop.ShopItem>();
                if (!rack10.activeSelf)
                {
                    ModsShop.ProductDetails cdRack = new ModsShop.ProductDetails
                    {
                        productName       = "Rack for 10 CDs",
                        multiplePurchases = false,
                        productCategory   = "Accesories",
                        productIcon       = rack_icon,
                        productPrice      = 50
                    };
                    shop.Add(this, cdRack, ModsShop.ShopType.Teimo, BuyCDRack, rack10);
                }
                foreach (GameObject go in listOfCases)
                {
                    if (!go.activeSelf)
                    {
                        ModsShop.ProductDetails cases = new ModsShop.ProductDetails
                        {
                            productName       = go.GetComponent <CDCase>().CDName,
                            multiplePurchases = false,
                            productCategory   = "CDs",
                            productIcon       = cd_icon,
                            productPrice      = 100
                        };
                        shop.Add(this, cases, ModsShop.ShopType.Teimo, BuyCDs, go);
                    }
                }
            }
            else
            {
                //if no shop catalog installed.
                rack10.SetActive(true);
                foreach (GameObject go in listOfCases)
                {
                    go.SetActive(true);
                }
            }
            FindPlayer();
        }
Exemplo n.º 2
0
        //Called when mod is loading
        public override void OnLoad()
        {
            //f**k playmaker, use AssetBundle!
            AssetBundle ab = LoadAssets.LoadBundle(this, "cdplayer.unity3d");

            rack10    = GameObject.Instantiate(ab.LoadAsset <GameObject>("rack10.prefab"));
            cdp       = ab.LoadAsset <GameObject>("cd.prefab");
            cdCaseP   = ab.LoadAsset <GameObject>("cd case.prefab");
            cd_icon   = ab.LoadAsset <Sprite>("cd.png");
            rack_icon = ab.LoadAsset <Sprite>("rackicon.png");
            ab.Unload(false);

            rack10.name = "CD Rack(itemy)";
            LoadAssets.MakeGameObjectPickable(rack10);
            rack10.transform.position = new Vector3(-9.76f, 0.17f, 6.47f);
            rack10.AddComponent <CDRack>();
            rack10.SetActive(false);
            if (!Directory.Exists(path)) //CD folder was renamed to CD1/2/3
            {
                Directory.CreateDirectory(path);
            }
            if (!File.Exists(Path.Combine(path, "CD Player Enhanced.txt")))
            {
                File.WriteAllText(Path.Combine(path, "CD Player Enhanced.txt"), readme);
            }
            string[] dirs = Directory.GetDirectories(path);
            int      i    = 0;

            listOfCDs   = new List <GameObject>();
            listOfCases = new List <GameObject>();
            foreach (string dir in dirs)
            {
                //Quaternion e = Quaternion.Euler(new Vector3(270, 0, 0));
                GameObject cd = (GameObject)Object.Instantiate(cdp);
                cd.layer = 0;
                GameObject cdCase = GameObject.Instantiate(cdCaseP);
                LoadAssets.MakeGameObjectPickable(cdCase);
                cd.name     = "cd(itemy)";
                cdCase.name = "cd case(itemy)";
                cd.AddComponent <CD>().CDName         = new DirectoryInfo(dir).Name;
                cdCase.AddComponent <CDCase>().CDName = new DirectoryInfo(dir).Name;

                string[] pls = Directory.GetFiles(dir, "*.*").Where(file => file.ToLower().EndsWith(".m3u", System.StringComparison.OrdinalIgnoreCase) ||
                                                                    file.ToLower().EndsWith(".m3u8", System.StringComparison.OrdinalIgnoreCase) ||
                                                                    file.ToLower().EndsWith(".pls", System.StringComparison.OrdinalIgnoreCase)).ToArray();
                if (pls.Length > 0)
                {
                    cd.GetComponent <CD>().isPlaylist = true;
                    cd.GetComponent <CD>().CDPath     = Path.GetFullPath(pls[0]);
                }
                else
                {
                    if (File.Exists(Path.Combine(dir, "folder.txt")))
                    {
                        string[] txtDirs = File.ReadAllLines(Path.Combine(dir, "folder.txt"));
                        cd.GetComponent <CD>().CDPath = Path.GetFullPath(txtDirs[0]);
                    }
                    else
                    {
                        cd.GetComponent <CD>().CDPath = Path.GetFullPath(dir);
                    }
                }
                cd.GetComponent <CD>().cdCase = cdCase.GetComponent <CDCase>();

                cd.GetComponent <CD>().InCase();
                cd.transform.SetParent(cdCase.transform.GetChild(2), false);

                //Load coverart.png if exists, else leave default.
                if (File.Exists(Path.Combine(dir, "coverart.png")))
                {
                    Texture2D t2d = new Texture2D(1, 1);
                    t2d.LoadImage(File.ReadAllBytes(Path.Combine(dir, "coverart.png")));
                    cd.transform.GetChild(0).GetComponent <MeshRenderer>().material.mainTexture                 = t2d;
                    cdCase.transform.GetChild(3).GetComponent <MeshRenderer>().material.mainTexture             = t2d;
                    cdCase.transform.GetChild(0).GetChild(0).GetComponent <MeshRenderer>().material.mainTexture = t2d;
                }
                listOfCDs.Add(cd);
                listOfCases.Add(cdCase);
                cdCase.SetActive(false);
                i++;
            }
            Load();
            if (GameObject.Find("Shop for mods") != null)
            {
                ModsShop.ShopItem shop;
                //Shop for mods is installed
                shop = GameObject.Find("Shop for mods").GetComponent <ModsShop.ShopItem>();
                if (!rack10.activeSelf)
                {
                    ModsShop.ProductDetails cdRack = new ModsShop.ProductDetails
                    {
                        productName       = "Rack for 10 CDs",
                        multiplePurchases = false,
                        productCategory   = "Accesories",
                        productIcon       = rack_icon,
                        productPrice      = 50
                    };
                    shop.Add(this, cdRack, ModsShop.ShopType.Teimo, BuyCDRack, rack10);
                }
                foreach (GameObject go in listOfCases)
                {
                    if (!go.activeSelf)
                    {
                        ModsShop.ProductDetails cases = new ModsShop.ProductDetails
                        {
                            productName       = go.GetComponent <CDCase>().CDName,
                            multiplePurchases = false,
                            productCategory   = "CDs",
                            productIcon       = cd_icon,
                            productPrice      = 100
                        };
                        shop.Add(this, cases, ModsShop.ShopType.Teimo, BuyCDs, go);
                    }
                }
            }
            else
            {
                //if no shop catalog installed.
                rack10.SetActive(true);
                foreach (GameObject go in listOfCases)
                {
                    go.SetActive(true);
                }
            }
            FindPlayer();
            if (GameObject.Find("cd(item1)") != null)
            {
                GameObject.Find("cd(item1)").SetActive(false);
            }
            if (GameObject.Find("cd case(item1)") != null)
            {
                GameObject.Find("cd case(item1)").SetActive(false);
            }
            if (GameObject.Find("cd(item2)") != null)
            {
                GameObject.Find("cd(item2)").SetActive(false);
            }
            if (GameObject.Find("cd case(item2)") != null)
            {
                GameObject.Find("cd case(item2)").SetActive(false);
            }
            if (GameObject.Find("cd(item3)") != null)
            {
                GameObject.Find("cd(item3)").SetActive(false);
            }
            if (GameObject.Find("cd case(item3)") != null)
            {
                GameObject.Find("cd case(item3)").SetActive(false);
            }
        }