@inject IGameDataService GameDataService @inject HttpClient Client @inject LoginService LoginService @page "/Cards/{baid:int}/DaniDojo"

Dani Dojo

@if (LoginService.LoginRequired) { Card: @LoginService.GetCardNum() } else { Card: @Baid } @if (LoginService.LoginRequired && (!LoginService.IsLoggedIn || (LoginService.Baid != Baid && !LoginService.IsAdmin))) { Please log in by clicking on "cards" tab first. } else { @for (uint i = 1; i <= 19; i++) { var danId = i; var danData = GameDataService.GetDanDataById(danId); Details Result @{ var danResultState = GetDanResultState(danId); var danClearStateString = GetDanClearStateString(danResultState); } danResultState.ToString() @danClearStateString High Score @{ var totalScore = GetTotalScore(danId); } @totalScore Totals @{ var totalGoods = GetTotalGoodHits(danId); var totalOks = GetTotalOkHits(danId); var totalBads = GetTotalBadHits(danId); var totalDrumroll = GetTotalDrumrollHits(danId); var totalMaxCombo = GetTotalMaxCombo(danId); var totalHits = GetTotalHits(danId); } Good @totalGoods OK @totalOks Bad @totalBads Drumroll @totalDrumroll MAX Combo @totalMaxCombo Total Hits @totalHits Songs @for (uint j = 0; j <= 2; j++) { var index = (int)j; var danDataOdaiSong = danData.OdaiSongList[index]; var stageNumber = j + 1; var difficulty = (Difficulty)danDataOdaiSong.Level;

@stageNumber

@difficulty @GameDataService.GetMusicStarLevel(danDataOdaiSong.SongNo, difficulty) @GameDataService.GetMusicNameBySongId(danDataOdaiSong.SongNo) @GameDataService.GetMusicArtistBySongId(danDataOdaiSong.SongNo) @if (bestDataMap.TryGetValue(danId, out var danBestData)) { if (danBestData.DanBestStageDataList.Count > index) { var bestStage = danBestData.DanBestStageDataList[index]; Good @bestStage.GoodCount OK @bestStage.OkCount Bad @bestStage.BadCount Drumroll @bestStage.DrumrollCount MAX Combo @bestStage.ComboCount Total Hits @bestStage.TotalHitCount } }
}
Conditions Soul Gauge @{ var redRequirement = GetSoulGauge(danData, false); var goldRequirement = GetSoulGauge(danData, true); var barClass = "bar-default"; var resultText = "Failed"; } Result @if (bestDataMap.TryGetValue(danId, out var danBestData)) { if (danBestData.SoulGaugeTotal >= redRequirement) { barClass = "bar-pass-red"; resultText = "Pass"; } if (danBestData.SoulGaugeTotal >= goldRequirement) { barClass = "bar-pass-gold"; resultText = "Gold"; } @danBestData.SoulGaugeTotal% @resultText } else { 0% N/A } Conditions Red > @redRequirement% Gold > @goldRequirement% @for (var j = 1; j < danData.OdaiBorderList.Count; j++) { var border = danData.OdaiBorderList[j]; @GetDanRequirementTitle(border) @{ var borderType = (DanBorderType)border.BorderType; } @if (borderType == DanBorderType.All) { @{ var redRequirement = border.RedBorderTotal; var goldRequirement = border.GoldBorderTotal; var barClass = "bar-default"; var resultText = "Failed"; } Result @if (bestDataMap.TryGetValue(danId, out var danBestData)) { var bestData = GetAllBestFromData((DanConditionType)border.OdaiType, danBestData); if ((DanConditionType)border.OdaiType is DanConditionType.BadCount or DanConditionType.OkCount) { if (bestData <= redRequirement) { barClass = "bar-pass-red"; resultText = "Pass"; } if (bestData <= goldRequirement) { barClass = "bar-pass-gold"; resultText = "Gold"; } var resultValue = redRequirement - bestData; if (resultValue < 0) resultValue = 0; @resultValue @resultText } else { if (bestData >= redRequirement) { barClass = "bar-pass-red"; resultText = "Pass"; } if (bestData >= goldRequirement) { barClass = "bar-pass-gold"; resultText = "Gold"; } @bestData @resultText } } else { 0 N/A } @{ var conditionOperator = GetDanConditionOperator((DanConditionType)border.OdaiType); } Conditions Red @conditionOperator @redRequirement Gold @conditionOperator @goldRequirement } else { @for (var k = 0; k < 3; k++) { var songNumber = k; var redRequirement = GetSongBorderCondition(border, songNumber, false); var goldRequirement = GetSongBorderCondition(border, songNumber, true); var barClass = "bar-default"; var resultText = "Failed"; Stage @(songNumber + 1) Result @if (bestDataMap.TryGetValue(danId, out var danBestData)) { var bestData = GetSongBestFromData((DanConditionType)border.OdaiType, danBestData, songNumber); if ((DanConditionType)border.OdaiType is DanConditionType.BadCount or DanConditionType.OkCount) { if (bestData <= redRequirement) { barClass = "bar-pass-red"; resultText = "Pass"; } if (bestData <= goldRequirement) { barClass = "bar-pass-gold"; resultText = "Gold"; } var resultValue = redRequirement - bestData; if (bestData >= redRequirement) resultValue = 0; @resultValue @resultText } else { if (bestData >= redRequirement) { barClass = "bar-pass-red"; resultText = "Pass"; } if (bestData >= goldRequirement) { barClass = "bar-pass-gold"; resultText = "Gold"; } @bestData @resultText } } else { 0 N/A } @{ var conditionOperator = GetDanConditionOperator((DanConditionType)border.OdaiType); if (redRequirement == 0) { conditionOperator = ""; } } Conditions Red @conditionOperator @redRequirement Gold @conditionOperator @goldRequirement } } }
}
}