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