Esempio n. 1
0
    public void SetMusicData(int difficulty, string id)
    {
        try
        {
            MusicDataLoader.MusicProperty data = GetComponent <MusicDataLoader>().getMusicProperty(id);
            if (data.level[difficulty] == -1)
            {
                return;
            }

            //Frame
            RawImage Frame = GetComponent <RawImage>();
            Frame.texture = FrameTexture[difficulty];

            //Title
            MusicTitleUI.text = data.music;

            //Credits
            CreditsUI.text = data.credits;

            //Artwork
            byte[]    bytes   = File.ReadAllBytes("Music/" + id + "/image.png");
            Texture2D texture = new Texture2D(500, 500);
            texture.LoadImage(bytes);
            ArtworkUI.texture = texture;

            //BPM
            BPMUI.text = "BPM " + GetComponent <MusicDataLoader>().getNotesData(difficulty, id).BPM.ToString();

            //Level
            LevelUI.text = data.level[difficulty].ToString();

            //Score & Combo
            ScoreController.Score temp = ScoreController.LoadScore(DataHolder.UserID, difficulty, id);
            ComboUI.text = "COMBO " + temp.MaxCombo.ToString();
            ScoreUI.text = temp.MaxScore.ToString();

            //Time
            string path = "Music/" + id + "/music.wav";
            StartCoroutine(SetAudioTime(path));
        }
        catch (Exception e)
        {
            Debug.LogError(e.Message);
        }
    }
Esempio n. 2
0
    private void Awake()
    {
        if (MusicID == "")
        {
            DebugMode = false;
        }
        else
        {
            DebugMode = true;
        }

        flag     = false;
        sequence = DOTween.Sequence();
        if (!DebugMode)
        {
            SceneChange = GameObject.Find("SceneChangeEnd");
        }

        //初期座標設定
        Background.localPosition = new Vector3(-1100f, Background.localPosition.y, Background.localPosition.z);
        Panel.localPosition      = new Vector3(-950f, Panel.localPosition.y, Panel.localPosition.z);
        Artwork.localPosition    = new Vector3(Artwork.localPosition.x, 180f, Artwork.localPosition.z);
        ArtworkImage.color       = new Color(1f, 1f, 1f, 0f);
        Result.localPosition     = new Vector3(-470f, Result.localPosition.y, Result.localPosition.z);
        Result.gameObject.SetActive(false);
        for (int i = 0; i < 5; i++)
        {
            Judgement[i].gameObject.SetActive(false);
            Judgement[i].localPosition = new Vector3(-300f - i * 20f, Judgement[i].localPosition.y, Judgement[i].localPosition.z);
        }
        Score.localPosition = new Vector3(-600f, Score.localPosition.y, Score.localPosition.z);
        Score.gameObject.SetActive(false);
        NewRecord.gameObject.SetActive(false);
        Rank.localScale   = new Vector3(0f, 0f, 1f);
        RankImage.color   = new Color(1f, 1f, 1f, 0f);
        PressButton.color = new Color(1f, 1f, 1f, 0f);

        //BGM 設定
        string path = "Audio/result.wav";

        StartCoroutine(GetAudioClip(path));


        //値設定
        if (!DebugMode)
        {
            UserID       = DataHolder.UserID;
            ScoreValue   = DataHolder.Score;
            ComboValue   = DataHolder.Combo;
            MaximumScore = DataHolder.MaximumScore;
            MaximumCombo = DataHolder.MaximumCombo;
            Difficulty   = DataHolder.Difficulty;
            MusicID      = DataHolder.NextMusicID;

            ScoreController.Score sc = ScoreController.LoadScore(UserID, Difficulty, MusicID);
            CurrentHighscore = sc.MaxScore;
            CurrentMaxCombo  = sc.MaxCombo;

            OldHighscore.text = LintNumber(7, sc.MaxScore);
            OldMaxcombo.text  = LintNumber(4, sc.MaxCombo);

            for (int i = 0; i < 5; i++)
            {
                Judgement[i].Find("Text").GetComponent <TextMeshProUGUI>().text = LintNumber(4, DataHolder.JudgementAmount[i]);
            }
        }
        MusicDataLoader.MusicProperty MusicData = GetComponent <MusicDataLoader>().getMusicProperty(MusicID);
        if (!DebugMode)
        {
            Panel.Find("Level").Find("Text").GetComponent <Text>().text = MusicData.level[Difficulty].ToString();
            Panel.Find("Difficulty").GetComponent <Text>().text         = DifficultyName[Difficulty];
            ScorePercentage = ((float)ScoreValue / (float)MaximumScore) * 100f;
            ComboPercentage = ((float)ComboValue / (float)MaximumCombo) * 100f;
        }
        Panel.Find("Title").GetComponent <Text>().text  = MusicData.music;
        Panel.Find("Author").GetComponent <Text>().text = MusicData.credits;

        if (ScorePercentage >= 90)
        {
            RankImage.texture = RankImageSoruce[0];
        }
        else if (ScorePercentage < 90 && ScorePercentage >= 80)
        {
            RankImage.texture = RankImageSoruce[1];
        }
        else if (ScorePercentage < 80 && ScorePercentage >= 70)
        {
            RankImage.texture = RankImageSoruce[2];
        }
        else if (ScorePercentage < 70)
        {
            RankImage.texture = RankImageSoruce[3];
        }

        //Artwork
        byte[]    bytes   = System.IO.File.ReadAllBytes("Music/" + MusicID + "/image.png");
        Texture2D texture = new Texture2D(55, 55, TextureFormat.ARGB4444, false);

        texture.LoadImage(bytes);
        texture.Compress(false);
        ArtworkImage.sprite = Sprite.Create(texture, new Rect(0f, 0f, texture.width, texture.width), new Vector2(0.5f, 0.5f));

        //Background
        sequence.Insert(2f,
                        Background.DOLocalMoveX(-410f, 0.5f).SetEase(Ease.OutQuint)
                        );
        //Panel
        sequence.Insert(2.5f,
                        Panel.DOLocalMoveX(-490f, 0.5f).SetEase(Ease.OutQuint)
                        );
        //Artwork
        sequence.Insert(2.5f,
                        Artwork.DOLocalMoveY(125f, 0.5f).SetEase(Ease.OutQuint)
                        );
        sequence.Insert(2.5f,
                        DOTween.ToAlpha(() => ArtworkImage.color,
                                        color => ArtworkImage.color = color, 1f, 0.5f
                                        ).SetEase(Ease.OutQuint)
                        );
        //Result
        sequence.Insert(2.5f,
                        DOVirtual.DelayedCall(0f, () =>
                                              Result.gameObject.SetActive(true)
                                              )
                        );
        sequence.Insert(2.5f,
                        Result.DOLocalMoveX(250f, 0.5f).SetEase(Ease.OutQuint)
                        );

        //Judgement
        sequence.Insert(2.5f,
                        DOVirtual.DelayedCall(0f, () =>
                                              Judgement[0].gameObject.SetActive(true)
                                              )
                        );
        sequence.Insert(2.5f,
                        DOVirtual.DelayedCall(0f, () =>
                                              Judgement[1].gameObject.SetActive(true)
                                              )
                        );
        sequence.Insert(2.5f,
                        DOVirtual.DelayedCall(0f, () =>
                                              Judgement[2].gameObject.SetActive(true)
                                              )
                        );
        sequence.Insert(2.5f,
                        DOVirtual.DelayedCall(0f, () =>
                                              Judgement[3].gameObject.SetActive(true)
                                              )
                        );
        sequence.Insert(2.5f,
                        DOVirtual.DelayedCall(0f, () =>
                                              Judgement[4].gameObject.SetActive(true)
                                              )
                        );
        for (int i = 0; i < 5; i++)
        {
            sequence.Insert(3f + 0.25f * i,
                            Judgement[i].DOLocalMoveX(180f - i * 20f, 0.5f).SetEase(Ease.OutQuint)
                            );
        }

        //Score
        sequence.Insert(2.5f,
                        DOVirtual.DelayedCall(0f, () =>
                                              Score.gameObject.SetActive(true)
                                              )
                        );
        sequence.Insert(4.5f,
                        Score.DOLocalMoveX(250f, 1f).SetEase(Ease.OutQuint)
                        );

        int ScoreNumber = 0;

        sequence.Insert(5f,
                        DOTween.To(() => ScoreNumber, (n) => ScoreNumber = n, ScoreValue, 1.5f)
                        .OnUpdate(() => Score.Find("Score").GetComponent <TextMeshProUGUI>().text = LintNumber(7, ScoreNumber))
                        );
        sequence.Insert(5f,
                        DOVirtual.DelayedCall(0f, () =>
                                              audioSource.PlayOneShot(audioSource.clip)
                                              )
                        );
        sequence.Insert(5.5f,
                        DOVirtual.DelayedCall(0f, () => {
            Score.Find("ScorePercentage").GetComponent <Text>().text = ((int)ScorePercentage).ToString() + "%";
            if (CurrentHighscore < ScoreValue)
            {
                NewRecord.gameObject.SetActive(true);
            }
        }
                                              )
                        );

        int ComboNumber = 0;

        sequence.Insert(5.25f,
                        DOTween.To(() => ComboNumber, (n) => ComboNumber = n, ComboValue, 1f)
                        .OnUpdate(() => Score.Find("Combo").GetComponent <TextMeshProUGUI>().text = LintNumber(4, ComboNumber))
                        );
        sequence.Insert(5.5f,
                        DOVirtual.DelayedCall(0f, () => {
            Score.Find("ComboPercentage").GetComponent <Text>().text = ((int)ComboPercentage).ToString() + "%";
        }
                                              )
                        );

        //Rank
        sequence.Insert(5.5f,
                        DOTween.ToAlpha(() => RankImage.color,
                                        color => RankImage.color = color, 1f, 0.5f
                                        ).SetEase(Ease.OutQuint)
                        );
        sequence.Insert(5.5f,
                        Rank.DOScale(new Vector3(1f, 1f, 1f), 0.5f).SetEase(Ease.OutQuint)
                        );

        //Finish
        sequence.Insert(7f,
                        DOTween.ToAlpha(() => PressButton.color,
                                        color => PressButton.color = color, 1f, 0.5f
                                        ).SetEase(Ease.OutQuint)
                        );
        sequence.Insert(7f,
                        DOVirtual.DelayedCall(0f, () =>
                                              flag = true
                                              )
                        );

        if (!DebugMode)
        {
            float           timeDelay = 0.5f;
            GameObject[]    changer   = new GameObject[4];
            RectTransform[] rectTran  = new RectTransform[4];

            for (int i = 0; i < 4; i++)
            {
                changer[i]  = GameObject.Find("SceneChangeEnd").transform.Find(i.ToString()).gameObject;
                rectTran[i] = changer[i].GetComponent <RectTransform>();
            }

            sceneChangeTween = DOTween.Sequence();
            for (int i = 0; i < 4; i++)
            {
                sceneChangeTween.Insert(1 + 0.25f * (3 - i),
                                        rectTran[i].DOLocalMoveX(-1280, timeDelay).SetEase(Ease.OutQuint)
                                        );
            }

            sceneChangeTween.Join(
                DOVirtual.DelayedCall(6f, () =>
            {
                Destroy(SceneChange);
                sequence.Play();
            })
                );
        }
    }