void Start() { GameObject co = GameObject.Find("UICam"); if (co != null) guiCam = (Camera)co.GetComponent("Camera"); co = GameObject.FindGameObjectWithTag("Player"); if (co != null) player = (CH_Player)co.GetComponent("CH_Player"); co = GameObject.Find("UI_PauseMenu"); if (co != null) { menu = co.transform; } if (menu != null) { menu.gameObject.SetActive(false); Color c1 = Color.white, c2 = Color.white; for (int i = 0; i < 4; i++) { Transform ss = menu.GetChild(i).Find("Background"); if (i == 0) // Equip { c1 = new Color(.039216f, .196078f, .156863f); c2 = new Color(.352941f, .392157f, .235294f); } else if (i == 1) // Select { c1 = new Color(.039216f, .196078f, .313725f); c2 = new Color(.327451f, .392157f, .509804f); } else if (i == 2) // Map { c1 = new Color(.313725f, .156863f, .117647f); c2 = new Color(.549020f, .156863f, .156863f); } else if (i == 3) // Quest { c1 = new Color(.313725f, .313725f, .196078f); c2 = new Color(.470588f, .470588f, .327451f); } for (int j = 0; j < 3; j++) { Transform p = ss.GetChild(j); MeshFilter mf = (MeshFilter)p.GetComponent("MeshFilter"); mf.mesh = new Mesh(); mf.mesh.vertices = new Vector3[] { new Vector3(5f, 0f, 5f), new Vector3(5f, 0f, -5f), new Vector3(-5f, 0f,-5f), new Vector3(-5f, 0f, 5f) }; if (j == 0) mf.mesh.colors = new Color[] { c1, c1, c2, c2 }; else if (j == 1) mf.mesh.colors = new Color[] { c2, c2, c2, c2 }; else mf.mesh.colors = new Color[] { c2, c2, c1, c1 }; mf.mesh.uv = new Vector2[] { new Vector2(0f, 0f), new Vector2(0f, 1f), new Vector2(1f, 1f), new Vector2(1f, 0f) }; mf.mesh.triangles = new int[] { 0, 1, 2, 2, 3, 0 }; mf.mesh.Optimize(); } } } // Initialize sound effects menuSounds = new AudioSource[4]; menuSounds[0] = gameObject.AddComponent<AudioSource>(); menuSounds[0].clip = GameEngine.GetSound("OoT:Interface/PauseMenu_Open"); menuSounds[1] = gameObject.AddComponent<AudioSource>(); menuSounds[1].clip = GameEngine.GetSound("OoT:Interface/PauseMenu_Close"); menuSounds[2] = gameObject.AddComponent<AudioSource>(); menuSounds[2].clip = GameEngine.GetSound("OoT:Interface/PauseMenu_Turn_Left"); menuSounds[3] = gameObject.AddComponent<AudioSource>(); menuSounds[3].clip = GameEngine.GetSound("OoT:Interface/PauseMenu_Turn_Right"); scaleBoost = 1.0f; scaleDir = 0.5f; //Debug.Log(player.health); playerOldHearts = player.health; GameObject heartContainerObject = GameObject.Find("Health"); for (int i = 0; i < heartContainerObject.transform.childCount; i++) { GameObject.DestroyObject(heartContainerObject.transform.GetChild(i).gameObject); } }
void Start() { int i; GameObject equipmentPanel = GameObject.Find("UI_PauseMenu/Equip/Items"); GameObject itemPanel = GameObject.Find("UI_PauseMenu/Select/Items"); GameObject questPanel = GameObject.Find("UI_PauseMenu/Quest/Items"); player = GameObject.Find("CH_Player").GetComponent<CH_Player>(); InitCursor(); items = new Item[90]; items[0] = new Item(0, "DekuStick"); items[1] = new Item(1, "DekuNut"); items[2] = new Item(2, "Bomb"); items[3] = new Item(3, "BowFairy"); items[4] = new Item(4, "ArrowFire1"); items[5] = new Item(5, "MagicDinsFire"); items[6] = new Item(6, "SlingshotFairy"); items[7] = new Item(7, "OcarinaFairy"); items[8] = new Item(8, "OcarinaOfTime"); items[9] = new Item(9, "Bombchu"); items[10] = new Item(10, "Hookshot1"); items[11] = new Item(11, "Longshot"); items[12] = new Item(12, "ArrowIce1"); items[13] = new Item(13, "MagicFaroresWind"); items[14] = new Item(14, "Boomerang"); items[15] = new Item(15, "LensOfTruth"); items[16] = new Item(16, "MagicBeans"); items[17] = new Item(17, "HammerMegaton"); items[18] = new Item(18, "ArrowLight1"); items[19] = new Item(19, "MagicNayrusLove"); items[20] = new Item(20, "Bottle"); items[21] = new Item(21, "BottlePotionRed"); items[22] = new Item(22, "BottlePotionGreen"); items[23] = new Item(23, "BottlePotionBlue"); items[24] = new Item(24, "BottleFairy"); items[25] = new Item(25, "BottleFish"); items[26] = new Item(26, "BottleMilkFull"); items[27] = new Item(27, "BottleLetter"); items[28] = new Item(28, "BottleBlueFire"); items[29] = new Item(29, "BottleBug"); items[30] = new Item(30, "BottlePoeBig"); items[31] = new Item(31, "BottleMilkHalf"); items[32] = new Item(32, "BottlePoe"); items[33] = new Item(33, "EggWeird"); items[34] = new Item(34, "Cucco"); items[35] = new Item(35, "ZeldasLetter"); items[36] = new Item(36, "MaskKeaton"); items[37] = new Item(37, "MaskSkull"); items[38] = new Item(38, "MaskSpooky"); items[39] = new Item(39, "MaskBunny"); items[40] = new Item(40, "MaskGoron"); items[41] = new Item(41, "MaskZora"); items[42] = new Item(42, "MaskGerudo"); items[43] = new Item(43, "MaskOfTruth"); items[44] = new Item(44, "SoldOut"); items[45] = new Item(45, "EggPocket"); items[46] = new Item(46, "CuccoPocket"); items[47] = new Item(47, "Cojiro"); items[48] = new Item(48, "OddMushroom"); items[49] = new Item(49, "OddPotion"); items[50] = new Item(50, "PoachersSaw"); items[51] = new Item(51, "BrokenGoronsSword"); items[52] = new Item(52, "Prescription"); items[53] = new Item(53, "EyeballFrag"); items[54] = new Item(54, "Eyedrops"); items[55] = new Item(55, "ClaimCheck"); items[56] = new Item(56, "ArrowFire1"); items[57] = new Item(57, "ArrowIce1"); items[58] = new Item(58, "ArrowLight1"); items[59] = new Item(59, "SwordKokiri1"); items[60] = new Item(60, "SwordMaster"); items[61] = new Item(61, "SwordBiggorons"); items[62] = new Item(62, "ShieldDeku"); items[63] = new Item(63, "ShieldHylian"); items[64] = new Item(64, "ShieldMirror2"); items[65] = new Item(65, "TunicKokiri"); items[66] = new Item(66, "TunicGoron"); items[67] = new Item(67, "TunicZora"); items[68] = new Item(68, "BootsKokiri"); items[69] = new Item(69, "BootsIron"); items[70] = new Item(70, "BootsHover"); items[71] = new Item(71, "BulletBagSmall"); items[72] = new Item(72, "BulletBagMedium"); items[73] = new Item(73, "BulletBagLarge"); items[74] = new Item(74, "QuiverSmall"); items[75] = new Item(75, "QuiverMedium"); items[76] = new Item(76, "QuiverLarge"); items[77] = new Item(77, "BombBagSmall"); items[78] = new Item(78, "BombBagMedium"); items[79] = new Item(79, "BombBagLarge"); items[80] = new Item(80, "BraceletGorons"); items[81] = new Item(81, "GauntletsSilver"); items[82] = new Item(82, "GauntletsGolden"); items[83] = new Item(83, "ScaleSilver"); items[84] = new Item(84, "ScaleGolden"); items[85] = new Item(85, "BrokenGiantsKnife"); items[86] = new Item(86, "WalletAdults"); items[87] = new Item(87, "WalletGiants"); items[88] = new Item(88, "DekuSeeds"); items[89] = new Item(89, "FishingPole"); int[] equipment = new int[] { 72, 59, 60, 61, 77, 62, 63, 64, 80, 65, 66, 67, 84, 68, 69, 70 }; int[] inventory = new int[] { 0, 1, 2, 3, 4, 5, 6, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 55, 44 }; GameObject item; float xOffset; Texture2D texture; Sprite sprite; SpriteRenderer renderer; for (i = 0; i < equipment.Length; i++) { if (equipment[i] == 0xFF) { continue; } if (i % 4 == 0) { xOffset = 6; } else { xOffset = 134 + (33 * ((i % 4) - 1)); } item = new GameObject(); item.name = "Slot_" + (i % 4) + "_" + Mathf.Floor(i / 4); item.transform.parent = equipmentPanel.transform; item.transform.localPosition = new Vector3(xOffset, -24 - (32 * (Mathf.Floor(i / 4))), 0); item.transform.localRotation = Quaternion.identity; item.transform.localScale = new Vector3(28, 28, 1); item.layer = LayerMask.NameToLayer("TransparentFX"); texture = UnityEngine.Resources.Load<Texture2D>(items[equipment[i]].icon); sprite = Sprite.Create(texture, new Rect(0, 0, 32, 32), new Vector2(0, 1), 32); renderer = item.AddComponent<SpriteRenderer>(); renderer.sprite = sprite; } for (i = 0; i < inventory.Length; i++) { if (inventory[i] == 0xFF) { continue; } item = new GameObject(); item.name = "Slot_" + (i % 6) + "_" + Mathf.Floor(i / 6); item.transform.parent = itemPanel.transform; item.transform.localPosition = new Vector3(-28 - (32 * (i % 6)), -24 - (32 * (Mathf.Floor(i / 6))), 0); item.transform.localRotation = Quaternion.AngleAxis(180, Vector3.up); item.transform.localScale = new Vector3(28, 28, 1); item.layer = LayerMask.NameToLayer("TransparentFX"); texture = UnityEngine.Resources.Load<Texture2D>(items[inventory[i]].icon); sprite = Sprite.Create(texture, new Rect(0, 0, 32, 32), new Vector2(0, 1), 32); renderer = item.AddComponent<SpriteRenderer>(); renderer.sprite = sprite; } string[] qsName = new string[] { "MedallionForest", "MedallionFire", "MedallionWater", "MedallionSpirit", "MedallionShadow", "MedallionLight", "", "", "", "", "", "", "", "", "", "", "", "", "SSKokirisEmerald", "SSGoronsRuby", "SSZorasSapphire", "StoneOfAgony", "GerudoCard", "GoldSkulltula", "" }; int itemSize; for (i = 0; i < 25; i++) { if (i < 24) { itemSize = 24; } else if (i == 24) { itemSize = 48; } else { itemSize = 16; } item = new GameObject(); item.name = "Slot_" + i; item.transform.parent = questPanel.transform; item.transform.localPosition = new Vector3(qsX[i] - 40, -1 * (qsY[i] - 40), 0); item.transform.localRotation = Quaternion.identity; item.transform.localScale = new Vector3(itemSize, itemSize, 1); item.layer = LayerMask.NameToLayer("TransparentFX"); texture = UnityEngine.Resources.Load<Texture2D>("OoT/Actors/Interface/PauseMenu/Textures/QI_" + qsName[i]); sprite = Sprite.Create(texture, new Rect(0, 0, itemSize, itemSize), new Vector2(0, 1), itemSize); renderer = item.AddComponent<SpriteRenderer>(); renderer.sprite = sprite; } }
void Start() { GameObject co = GameObject.Find("UICam"); if (co != null) { guiCam = (Camera)co.GetComponent("Camera"); } co = GameObject.FindGameObjectWithTag("Player"); if (co != null) { player = (CH_Player)co.GetComponent("CH_Player"); } co = GameObject.Find("UI_PauseMenu"); if (co != null) { menu = co.transform; } if (menu != null) { menu.gameObject.SetActive(false); Color c1 = Color.white, c2 = Color.white; for (int i = 0; i < 4; i++) { Transform ss = menu.GetChild(i).Find("Background"); if (i == 0) // Equip { c1 = new Color(.039216f, .196078f, .156863f); c2 = new Color(.352941f, .392157f, .235294f); } else if (i == 1) // Select { c1 = new Color(.039216f, .196078f, .313725f); c2 = new Color(.327451f, .392157f, .509804f); } else if (i == 2) // Map { c1 = new Color(.313725f, .156863f, .117647f); c2 = new Color(.549020f, .156863f, .156863f); } else if (i == 3) // Quest { c1 = new Color(.313725f, .313725f, .196078f); c2 = new Color(.470588f, .470588f, .327451f); } for (int j = 0; j < 3; j++) { Transform p = ss.GetChild(j); MeshFilter mf = (MeshFilter)p.GetComponent("MeshFilter"); mf.mesh = new Mesh(); mf.mesh.vertices = new Vector3[] { new Vector3(5f, 0f, 5f), new Vector3(5f, 0f, -5f), new Vector3(-5f, 0f, -5f), new Vector3(-5f, 0f, 5f) }; if (j == 0) { mf.mesh.colors = new Color[] { c1, c1, c2, c2 } } ; else if (j == 1) { mf.mesh.colors = new Color[] { c2, c2, c2, c2 } } ; else { mf.mesh.colors = new Color[] { c2, c2, c1, c1 } }; mf.mesh.uv = new Vector2[] { new Vector2(0f, 0f), new Vector2(0f, 1f), new Vector2(1f, 1f), new Vector2(1f, 0f) }; mf.mesh.triangles = new int[] { 0, 1, 2, 2, 3, 0 }; mf.mesh.Optimize(); } } } // Initialize sound effects menuSounds = new AudioSource[4]; menuSounds[0] = gameObject.AddComponent <AudioSource>(); menuSounds[0].clip = GameEngine.GetSound("OoT:Interface/PauseMenu_Open"); menuSounds[1] = gameObject.AddComponent <AudioSource>(); menuSounds[1].clip = GameEngine.GetSound("OoT:Interface/PauseMenu_Close"); menuSounds[2] = gameObject.AddComponent <AudioSource>(); menuSounds[2].clip = GameEngine.GetSound("OoT:Interface/PauseMenu_Turn_Left"); menuSounds[3] = gameObject.AddComponent <AudioSource>(); menuSounds[3].clip = GameEngine.GetSound("OoT:Interface/PauseMenu_Turn_Right"); scaleBoost = 1.0f; scaleDir = 0.5f; playerOldHearts = player.health; GameObject heartContainerObject = GameObject.Find("Health"); for (int i = 0; i < heartContainerObject.transform.childCount; i++) { GameObject.DestroyObject(heartContainerObject.transform.GetChild(i).gameObject); } } void Update() { if (guiCam != null) { transform.localScale = new Vector3(guiCam.aspect, 1, 1); if (menu != null) { menu.localScale = new Vector3(guiCam.aspect, 1, guiCam.aspect); } DrawHearts(); AButtonDraw(); } if (menu != null) { if (Input.GetKeyDown(KeyCode.Return)) { isShowing = !isShowing; player.enabled = !isShowing; menu.gameObject.SetActive(isShowing); if (isShowing) { menuSounds[0].Play(); } else { menuSounds[1].Play(); } } if (menu.gameObject.activeSelf) { if (rotSpeed == 0.0f) { if (Input.GetKeyDown(KeyCode.A)) { rotSpeed = 175.0f; targetRot = rotation + 90.0f; menuSounds[2].Play(); } else if (Input.GetKeyDown(KeyCode.S)) { rotSpeed = -175.0f; targetRot = rotation - 90.0f; menuSounds[3].Play(); } } else if (!Mathf.Approximately(rotation, targetRot)) { rotation += rotSpeed * Time.deltaTime; if ((rotSpeed > 0.0f && rotation > targetRot) || (rotSpeed < 0.0f && rotation < targetRot)) { rotSpeed = 0.0f; rotation = targetRot; if (rotation >= 360.0f) { rotation -= 360.0f; } else if (rotation < 0.0f) { rotation += 360.0f; } } menu.localRotation = Quaternion.AngleAxis((float)(rotation), Vector3.up); } else { rotSpeed = 0.0f; } } } } // Todo: Clean code. void AButtonDraw() { GameObject aButtonObject = GameObject.Find("AButton"); //GameObject aButtonTextObject = GameObject.Find("AButtonText"); if (aFlip == false) { if (player.state != oldPlayerState) { aFlip = true; aBoost = 2; aButtonObject.transform.Rotate(7, 0, 0); oldPlayerState = player.state; } } if (aFlip == true) { if (aButtonObject.transform.localEulerAngles.x >= 90) { aBoost = -4; } if (aButtonObject.transform.localEulerAngles.x <= 4) { aBoost = 4; aFlip = false; return; } aButtonObject.transform.Rotate(aBoost, 0, 0); } oldPlayerState = player.state; } void DrawHearts() { if (scaleBoost > 1.2f) { scaleDir = -0.5f; } if (scaleBoost < 1.0f) { scaleDir = 0.5f; } scaleBoost += scaleDir * Time.deltaTime; int desiredHearts = player.maxHealth / 4; // Check if we need to add heart objects // This code is a mess... GameObject heartContainerObject = GameObject.Find("Health"); if (heartContainerObject.transform.childCount != desiredHearts || playerOldHearts != player.health) { for (int i = 0; i < heartContainerObject.transform.childCount; i++) { GameObject.DestroyObject(heartContainerObject.transform.GetChild(i).gameObject); } for (int i = 0; i < desiredHearts; i++) { GameObject heartObject = new GameObject("Heart " + i); heartObject.transform.parent = heartContainerObject.transform; heartObject.transform.localPosition = new Vector3(0.0f + ((i % 10) * 0.415f), 0.0f - ((i / 10) * 0.415f), 0.0f); heartObject.transform.localRotation = Quaternion.identity; heartObject.transform.localScale = baseScale; SpriteRenderer spriteRenderer = heartObject.AddComponent <SpriteRenderer>(); if (i > (player.health / 4)) { spriteRenderer.sprite = GameEngine.GetSprite(GameEngine.GetActorPath("OoT:UI_HUD"), "0-4 Heart1"); Debug.Log("Upper " + i); } else if (i == (player.health / 4)) { switch (player.health % 4) { case 0: spriteRenderer.sprite = GameEngine.GetSprite(GameEngine.GetActorPath("OoT:UI_HUD"), "0-4 Heart1"); break; case 1: spriteRenderer.sprite = GameEngine.GetSprite(GameEngine.GetActorPath("OoT:UI_HUD"), "1-4 Heart1"); break; case 2: spriteRenderer.sprite = GameEngine.GetSprite(GameEngine.GetActorPath("OoT:UI_HUD"), "2-4 Heart1"); break; case 3: spriteRenderer.sprite = GameEngine.GetSprite(GameEngine.GetActorPath("OoT:UI_HUD"), "3-4 Heart1"); break; case 4: spriteRenderer.sprite = GameEngine.GetSprite(GameEngine.GetActorPath("OoT:UI_HUD"), "4-4 Heart1"); break; } } else { spriteRenderer.sprite = GameEngine.GetSprite(GameEngine.GetActorPath("OoT:UI_HUD"), "4-4 Heart1"); Debug.Log(i); } spriteRenderer.GetComponent <Renderer>().material.shader = Resources.Load <Shader>("_All_/Data/Static/Shaders/Default/Sprite"); spriteRenderer.GetComponent <Renderer>().material.SetColor("_Color", new Color32(253, 98, 98, 255)); heartObject.layer = 5; } } playerOldHearts = player.health; // Make the last heart scale dynamically //Debug.Log(((float)player.health / 4)); GameObject lastHeart = GameObject.Find("Heart " + Mathf.CeilToInt(((float)player.health / 4) - 1)); if (lastHeart == null) { return; } lastHeart.transform.localScale = baseScale * scaleBoost; } }