Resolve errors + auto-format

This commit is contained in:
smoogipoo 2020-05-11 14:53:42 +09:00
parent d613888803
commit 779af48802
6 changed files with 25 additions and 37 deletions

View File

@ -1,15 +1,12 @@
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
// See the LICENCE file in the repository root for full licence text.
using System;
using System.Collections.Generic;
using osu.Game.Rulesets.Difficulty.Preprocessing;
namespace osu.Game.Rulesets.Taiko.Difficulty.Preprocessing
{
public class StaminaCheeseDetector
{
private const int roll_min_repetitions = 12;
private const int tl_min_repetitions = 16;
@ -39,6 +36,7 @@ private void findRolls(int patternLength)
if (history.Count > 2 * patternLength) history.RemoveAt(0);
bool isRepeat = true;
for (int j = 0; j < patternLength; j++)
{
if (history[j].IsKat != history[j + patternLength].IsKat)
@ -62,13 +60,13 @@ private void findRolls(int patternLength)
(hitObjects[i]).StaminaCheese = true;
}
}
}
}
private void findTLTap(int parity, bool kat)
{
int tl_length = -2;
for (int i = parity; i < hitObjects.Count; i += 2)
{
if (kat == hitObjects[i].IsKat)
@ -90,6 +88,5 @@ private void findTLTap(int parity, bool kat)
}
}
}
}
}

View File

@ -1,7 +1,6 @@
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
// See the LICENCE file in the repository root for full licence text.
using System;
using osu.Game.Rulesets.Difficulty.Preprocessing;
using osu.Game.Rulesets.Objects;
using osu.Game.Rulesets.Taiko.Objects;
@ -27,12 +26,15 @@ public class TaikoDifficultyHitObject : DifficultyHitObject
public TaikoDifficultyHitObject(HitObject hitObject, HitObject lastObject, HitObject lastLastObject, double clockRate)
: base(hitObject, lastObject, clockRate)
{
var lastHit = lastObject as Hit;
var currentHit = hitObject as Hit;
NoteLength = DeltaTime;
double prevLength = (lastObject.StartTime - lastLastObject.StartTime) / clockRate;
Rhythm = TaikoDifficultyHitObjectRhythm.GetClosest(NoteLength / prevLength);
RhythmID = Rhythm.ID;
HasTypeChange = lastObject is RimHit != hitObject is RimHit;
IsKat = lastObject is RimHit;
HasTypeChange = lastHit?.Type != currentHit?.Type;
IsKat = lastHit?.Type == HitType.Rim;
HasTimingChange = !TaikoDifficultyHitObjectRhythm.IsRepeat(RhythmID);
n = counter;
@ -40,7 +42,5 @@ public TaikoDifficultyHitObject(HitObject hitObject, HitObject lastObject, HitOb
}
public const int CONST_RHYTHM_ID = 0;
}
}

View File

@ -17,8 +17,10 @@ public class Colour : Skill
private ColourSwitch lastColourSwitch = ColourSwitch.None;
private int sameColourCount = 1;
private int[] previousDonLengths = {0, 0}, previousKatLengths = {0, 0};
private int[] previousDonLengths = { 0, 0 }, previousKatLengths = { 0, 0 };
private int sameTypeCount = 1;
// TODO: make this smarter (dont initialise with "Don")
private bool previousIsKat = false;
@ -29,11 +31,10 @@ protected override double StrainValueOf(DifficultyHitObject current)
protected double StrainValueOfNew(DifficultyHitObject current)
{
double returnVal = 0.0;
double returnMultiplier = 1.0;
if (previousIsKat != ((TaikoDifficultyHitObject) current).IsKat)
if (previousIsKat != ((TaikoDifficultyHitObject)current).IsKat)
{
returnVal = 1.5 - (1.75 / (sameTypeCount + 0.65));
@ -78,10 +79,8 @@ protected double StrainValueOfNew(DifficultyHitObject current)
previousDonLengths[0] = sameTypeCount;
}
sameTypeCount = 1;
previousIsKat = ((TaikoDifficultyHitObject) current).IsKat;
previousIsKat = ((TaikoDifficultyHitObject)current).IsKat;
}
else
@ -94,7 +93,6 @@ protected double StrainValueOfNew(DifficultyHitObject current)
protected double StrainValueOfOld(DifficultyHitObject current)
{
double addition = 0;
// We get an extra addition if we are not a slider or spinner
@ -112,10 +110,9 @@ protected double StrainValueOfOld(DifficultyHitObject current)
return addition;
}
private bool hasColourChange(DifficultyHitObject current)
{
var taikoCurrent = (TaikoDifficultyHitObject) current;
var taikoCurrent = (TaikoDifficultyHitObject)current;
if (!taikoCurrent.HasTypeChange)
{
@ -139,6 +136,5 @@ private enum ColourSwitch
Even,
Odd
}
}
}

View File

@ -11,7 +11,6 @@ namespace osu.Game.Rulesets.Taiko.Difficulty.Skills
{
public class Rhythm : Skill
{
protected override double SkillMultiplier => 1;
protected override double StrainDecayBase => 0;
private const double strain_decay = 0.96;
@ -64,8 +63,9 @@ protected override double StrainValueOf(DifficultyHitObject dho)
{
currentStrain *= strain_decay;
TaikoDifficultyHitObject currentHO = (TaikoDifficultyHitObject) dho;
TaikoDifficultyHitObject currentHO = (TaikoDifficultyHitObject)dho;
rhythmLength += 1;
if (!currentHO.HasTimingChange)
{
return 0.0;
@ -77,6 +77,7 @@ protected override double StrainValueOf(DifficultyHitObject dho)
ratioObjectHistory.Add(currentHO);
ratioHistoryLength += 1;
if (ratioHistoryLength > ratio_history_max_length)
{
ratioObjectHistory.RemoveAt(0);
@ -88,6 +89,7 @@ protected override double StrainValueOf(DifficultyHitObject dho)
for (int start = ratioHistoryLength - l - 1; start >= 0; start--)
{
bool samePattern = true;
for (int i = 0; i < l; i++)
{
if (ratioObjectHistory[start + i].RhythmID != ratioObjectHistory[ratioHistoryLength - l + i].RhythmID)
@ -105,7 +107,6 @@ protected override double StrainValueOf(DifficultyHitObject dho)
}
}
if (currentHO.Rhythm.IsSpeedup())
{
objectDifficulty *= 1;
@ -126,8 +127,6 @@ protected override double StrainValueOf(DifficultyHitObject dho)
currentStrain += objectDifficulty;
return currentStrain;
}
}
}

View File

@ -1,24 +1,20 @@
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
// See the LICENCE file in the repository root for full licence text.
using System;
using System.Linq;
using System.Collections.Generic;
using osu.Game.Rulesets.Difficulty.Preprocessing;
using osu.Game.Rulesets.Difficulty.Skills;
using osu.Game.Rulesets.Objects;
using osu.Game.Rulesets.Taiko.Difficulty.Preprocessing;
using osu.Game.Rulesets.Taiko.Objects;
namespace osu.Game.Rulesets.Taiko.Difficulty.Skills
{
public class Stamina : Skill
{
private int hand;
private int noteNumber = 0;
protected override double SkillMultiplier => 1;
protected override double StrainDecayBase => 0.4;
// i only add strain every second note so its kind of like using 0.16
@ -51,7 +47,7 @@ protected override double StrainValueOf(DifficultyHitObject current)
{
noteNumber += 1;
TaikoDifficultyHitObject currentHO = (TaikoDifficultyHitObject) current;
TaikoDifficultyHitObject currentHO = (TaikoDifficultyHitObject)current;
if (noteNumber % 2 == hand)
{
@ -87,17 +83,18 @@ private static double min(List<double> l)
if (d < minimum)
minimum = d;
}
return minimum;
}
public Stamina(bool rightHand)
{
hand = 0;
if (rightHand)
{
hand = 1;
}
}
}
}

View File

@ -20,7 +20,6 @@ namespace osu.Game.Rulesets.Taiko.Difficulty
{
public class TaikoDifficultyCalculator : DifficultyCalculator
{
private const double rhythmSkillMultiplier = 0.15;
private const double colourSkillMultiplier = 0.01;
private const double staminaSkillMultiplier = 0.02;
@ -56,14 +55,13 @@ private double rescale(double sr)
private double combinedDifficulty(Skill colour, Skill rhythm, Skill stamina1, Skill stamina2)
{
double staminaRating = (stamina1.DifficultyValue() + stamina2.DifficultyValue()) * staminaSkillMultiplier;
double readingPenalty = this.readingPenalty(staminaRating);
double difficulty = 0;
double weight = 1;
List<double> peaks = new List<double>();
for (int i = 0; i < colour.StrainPeaks.Count; i++)
{
double colourPeak = colour.StrainPeaks[i] * colourSkillMultiplier * readingPenalty;
@ -71,6 +69,7 @@ private double combinedDifficulty(Skill colour, Skill rhythm, Skill stamina1, Sk
double staminaPeak = (stamina1.StrainPeaks[i] + stamina2.StrainPeaks[i]) * staminaSkillMultiplier;
peaks.Add(norm(2, colourPeak, rhythmPeak, staminaPeak));
}
foreach (double strain in peaks.OrderByDescending(d => d))
{
difficulty += strain * weight;
@ -113,16 +112,17 @@ protected override DifficultyAttributes CreateDifficultyAttributes(IBeatmap beat
MaxCombo = beatmap.HitObjects.Count(h => h is Hit),
Skills = skills
};
}
protected override IEnumerable<DifficultyHitObject> CreateDifficultyHitObjects(IBeatmap beatmap, double clockRate)
{
List<TaikoDifficultyHitObject> taikoDifficultyHitObjects = new List<TaikoDifficultyHitObject>();
for (int i = 2; i < beatmap.HitObjects.Count; i++)
{
taikoDifficultyHitObjects.Add(new TaikoDifficultyHitObject(beatmap.HitObjects[i], beatmap.HitObjects[i - 1], beatmap.HitObjects[i - 2], clockRate));
}
new StaminaCheeseDetector().FindCheese(taikoDifficultyHitObjects);
for (int i = 0; i < taikoDifficultyHitObjects.Count; i++)
yield return taikoDifficultyHitObjects[i];
@ -148,6 +148,5 @@ protected override IEnumerable<DifficultyHitObject> CreateDifficultyHitObjects(I
protected override DifficultyAttributes VirtualCalculate(IBeatmap beatmap, Mod[] mods, double clockRate)
=> taikoCalculate(beatmap, mods, clockRate);
*/
}
}