//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(); }
//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); } }