示例#1
0
    public void SetParam(UIDataStruct uiData)
    {
        conboCount   = uiData.conboCount;
        barrageCount = uiData.barrageCount;

        for (int i = 0; i < uiData.judgeCount.Length; i++)
        {
            judgeCount[i] = uiData.judgeCount[i];
        }

        totalGaugeCount = uiData.totalGaugeCount;
        maxScoreCount   = uiData.maxScoreCount;
        maxConbo        = uiData.maxConbo;
        scoreCount      = uiData.scoreCount;
        bpm             = uiData.bpm;
        noteSpeed       = uiData.noteSpeed;
        gaugePer        = uiData.gaugePer;
    }
示例#2
0
    public void Init(UIDataStruct uiData, RuleStruct gaugeRule, int trackCount, string musicName, string artistName, Difficulty difficulty, float level, float timeLength, bool isDemo, bool isTutorial)
    {
        SetComboText(0);
        SetMaxConboText(0);

        chartTimeLength = timeLength;

        System.Array.Resize(ref beforeUIData.judgeCount, uiData.judgeCount.Length);

        for (int i = 0; i < uiData.judgeCount.Length; i++)
        {
            SetJudgeCountText(0, i);
        }

        SetBPMText(uiData.bpm, uiData.noteSpeed);

        // 表示が変わらないUIはここで値を代入
        trackText.SetText("Track {0}", trackCount);
        musicText.SetText(musicName);
        artistText.SetText(artistName);
        difficultyText.SetText(difficulty.ToString());
        difficultyText.color = new Color(
            r: difficultyData.difficlties[(int)difficulty].color.r,
            g: difficultyData.difficlties[(int)difficulty].color.g,
            b: difficultyData.difficlties[(int)difficulty].color.b,
            a: difficultyText.color.a
            );
        levelText.SetText("{0:2}", level);

        demoCanvas.enabled = isDemo;
        // 通常のゲームでAutoPlayの場合は、専用テキストを表示させる
        if (!isTutorial && !isDemo && StaticValue.isAuto)
        {
            autoPlayText.gameObject.SetActive(true);
        }

        InitGauge(gaugeRule);
        SetTimeGauge();
    }
示例#3
0
    public void UpdateManage(UIDataStruct uiData, RuleStruct gaugeRule, bool isEnd)
    {
        if (uiData.conboCount != beforeUIData.conboCount)
        {
            if (uiData.conboCount < beforeUIData.conboCount)
            {
                //コンボが途切れた場合はグラデーションを切る
                if (comboCountText.enableVertexGradient)
                {
                    comboCountText.enableVertexGradient = false;
                }
            }

            if ((uiData.conboCount / comboAnimCount) != (beforeUIData.conboCount / comboAnimCount) && uiData.conboCount != 0)
            {
                comboAnimText.SetText("{0}", uiData.conboCount / comboAnimCount * comboAnimCount);
                countComboAnim.SetTrigger("Show");
            }

            SetComboText(uiData.conboCount);
        }

        if (uiData.barrageCount != beforeUIData.barrageCount)
        {
            SetBarrageText(uiData.barrageCount);
        }

        if (uiData.maxConbo != beforeUIData.maxConbo)
        {
            SetMaxConboText(uiData.maxConbo);
        }

        for (int i = 0; i < uiData.judgeCount.Length; i++)
        {
            if (uiData.judgeCount[i] != beforeUIData.judgeCount[i])
            {
                SetJudgeCountText(uiData.judgeCount[i], i);
            }
        }

        if (uiData.scoreCount != beforeUIData.scoreCount)
        {
            InitScoreAnim(uiData.maxScoreCount, uiData.scoreCount);
        }

        if (isAnimScore)
        {
            AnimScoreText();
        }

        if ((uiData.bpm != beforeUIData.bpm) || (uiData.noteSpeed != beforeUIData.noteSpeed))
        {
            SetBPMText(uiData.bpm, uiData.noteSpeed);
        }

        if (uiData.gaugePer != beforeUIData.gaugePer)
        {
            SetGauge(uiData.gaugePer, gaugeRule.clearPar);
        }

        SetTimeGauge();

        if (gaugeRule.death)
        {
            if (isEnd)
            {
                parcentageTextAnim.SetBool("Dying", false);
            }
            else if (uiData.gaugePer <= gaugeRule.dyingRate)
            {
                if (!parcentageTextAnim.GetBool("Dying"))
                {
                    parcentageTextAnim.SetBool("Dying", true);
                    growSprite.color = Color.red;
                }
            }
            else
            {
                if (parcentageTextAnim.GetBool("Dying"))
                {
                    parcentageTextAnim.SetBool("Dying", false);
                    growSprite.color = Color.white;
                }
            }
        }

        beforeUIData.SetParam(uiData);
    }
    public void UpdateManage(ref UIDataStruct uiData, RuleStruct gaugeRule, GameObject[] laneObjs, JudgeData timingRange, bool isStarted)
    {
        int currentFlame = timeCountroller.PlayFlame;
        int deltaFlame   = timeCountroller.DeltaFlame;

        for (int i = 0; i < laneObjs.Length; i++)
        {
            NotesType type        = NotesType.Normal;
            JudgeType judgeResult = JudgeType.None;

            if (isStarted)
            {
                type        = NotesType.Normal;
                judgeResult = Judge(
                    type: ref type,
                    currentFlame: currentFlame,
                    judgeLane: i,
                    deltaFlame: deltaFlame,
                    judgeData: timingRange
                    );

                uiData.barrageCount = targetBarrageCount;
            }

            LaneBeamManage(i);

            if (judgeResult == JudgeType.None)
            {
                continue;
            }

            uiData.judgeCount[(int)judgeResult]++;
            uiData.scoreCount += timingRange.judges[(int)judgeResult].scoreCount;

            float typeRate = 1.0f;
            if (type == NotesType.Hold)
            {
                typeRate = gaugeRule.holdParRate;
            }

            if (judgeResult == JudgeType.Miss)
            {
                float missPenalty = gaugeRule.missPenalty;

                if (gaugeRule.dyingRate >= uiData.gaugePer)
                {
                    missPenalty /= 2;
                }

                uiData.conboCount = 0;
                uiData.gaugePer   = Mathf.Clamp01(uiData.gaugePer - missPenalty * typeRate / 100);
            }
            else
            {
                float addPer = gaugeRule.gaugeCount[(int)judgeResult] / (float)uiData.totalGaugeCount * gaugeRule.parRate * typeRate;
                uiData.gaugePer = Mathf.Clamp01(uiData.gaugePer + addPer);

                uiData.conboCount++;
                judgeLineAnim.SetTrigger("Shiny");

                if (uiData.maxConbo < uiData.conboCount)
                {
                    uiData.maxConbo = uiData.conboCount;
                }
            }
        }

        judgeLineMaterial.SetFloat("_Shiny", judgeLineShiny);
    }