try to fix weird score bug

controller only gets re-assigned on first boot
don't stall the cpu to queue frames
This commit is contained in:
minenice55 2024-01-16 15:21:22 -05:00
parent 1a910be4c8
commit 1e4235bf91
5 changed files with 22 additions and 21 deletions

View file

@ -104,16 +104,6 @@ namespace HeavenStudio
} }
// input accuracy (%) // input accuracy (%)
double totalInputs = 0;
double totalPlayerAccuracy = 0;
public double PlayerAccuracy
{
get
{
if (totalInputs == 0) return 0;
return totalPlayerAccuracy / totalInputs;
}
}
bool skillStarCollected = false; bool skillStarCollected = false;
// cleared sections // cleared sections
@ -342,9 +332,6 @@ namespace HeavenStudio
if (weight > 0 && MarkerWeight > 0) if (weight > 0 && MarkerWeight > 0)
{ {
totalInputs += weight * MarkerWeight;
totalPlayerAccuracy += Math.Abs(accuracy) * weight * MarkerWeight;
judgementInfo.inputs.Add(new JudgementManager.InputInfo judgementInfo.inputs.Add(new JudgementManager.InputInfo
{ {
beat = beat, beat = beat,
@ -675,9 +662,6 @@ namespace HeavenStudio
inputOffsetSamples.Clear(); inputOffsetSamples.Clear();
averageInputOffset = 0; averageInputOffset = 0;
totalInputs = 0;
totalPlayerAccuracy = 0;
TimingAccuracyDisplay.instance.ResetArrow(); TimingAccuracyDisplay.instance.ResetArrow();
SkillStarManager.instance.Reset(); SkillStarManager.instance.Reset();
skillStarCollected = false; skillStarCollected = false;
@ -807,7 +791,6 @@ namespace HeavenStudio
} }
else if (playMode) else if (playMode)
{ {
judgementInfo.finalScore = (float)PlayerAccuracy;
judgementInfo.star = skillStarCollected; judgementInfo.star = skillStarCollected;
judgementInfo.perfect = GoForAPerfect.instance.perfect; judgementInfo.perfect = GoForAPerfect.instance.perfect;
judgementInfo.time = DateTime.Now; judgementInfo.time = DateTime.Now;

View file

@ -114,7 +114,7 @@ namespace HeavenStudio
Application.targetFrameRate = -1; Application.targetFrameRate = -1;
QualitySettings.vSyncCount = 0; QualitySettings.vSyncCount = 0;
QualitySettings.maxQueuedFrames = 2; QualitySettings.maxQueuedFrames = 1;
if (PersistentDataManager.gameSettings.isFullscreen) if (PersistentDataManager.gameSettings.isFullscreen)
{ {
Screen.SetResolution(Display.main.systemWidth, Display.main.systemHeight, FullScreenMode.FullScreenWindow); Screen.SetResolution(Display.main.systemWidth, Display.main.systemHeight, FullScreenMode.FullScreenWindow);

View file

@ -55,7 +55,7 @@ namespace HeavenStudio.InputSystem
(int)KeyCode.U, (int)KeyCode.U,
(int)KeyCode.I, (int)KeyCode.I,
(int)KeyCode.E, (int)KeyCode.E,
(int)KeyCode.U, (int)KeyCode.O,
(int)KeyCode.Escape, (int)KeyCode.Escape,
}, },
PointerSensitivity = 3, PointerSensitivity = 3,

View file

@ -134,6 +134,21 @@ namespace HeavenStudio
barSlider.fillRect.GetComponent<Image>().color = barColourNg; barSlider.fillRect.GetComponent<Image>().color = barColourNg;
string propSuffix = "ng"; string propSuffix = "ng";
double inputs = 0, score = 0;
foreach (var input in judgementInfo.inputs)
{
inputs += input.weight;
score += Math.Clamp(input.accuracyState, 0, 1) * input.weight;
}
if (inputs > 0)
{
score /= inputs;
}
else
{
score = 0;
}
judgementInfo.finalScore = score;
if (judgementInfo.finalScore < Minigame.rankOkThreshold) if (judgementInfo.finalScore < Minigame.rankOkThreshold)
{ {
rank = Rank.Ng; rank = Rank.Ng;

View file

@ -56,6 +56,7 @@ namespace HeavenStudio
[SerializeField] private RectTransform selectedDisplayRect; [SerializeField] private RectTransform selectedDisplayRect;
[SerializeField] private GameObject selectedDisplayIcon; [SerializeField] private GameObject selectedDisplayIcon;
[SerializeField] private GameObject[] otherHiddenOnMouse; [SerializeField] private GameObject[] otherHiddenOnMouse;
static bool firstBoot = true;
private AudioSource musicSource; private AudioSource musicSource;
@ -80,6 +81,7 @@ namespace HeavenStudio
private RectTransform currentSelectableRect, lastSelectableRect; private RectTransform currentSelectableRect, lastSelectableRect;
private float selectableLerpTimer; private float selectableLerpTimer;
private void Start() private void Start()
{ {
exiting = false; exiting = false;
@ -151,15 +153,16 @@ namespace HeavenStudio
var nextController = newController; var nextController = newController;
var lastController = PlayerInput.GetInputController(1); var lastController = PlayerInput.GetInputController(1);
if ((newController is InputMouse) && (lastController is not InputMouse)) if ((newController is InputMouse) && !(lastController is InputMouse))
{ {
Debug.Log("Mouse used, selecting keyboard instead"); Debug.Log("Mouse used, selecting keyboard instead");
nextController = controllers[0]; nextController = controllers[0];
} }
Debug.Log("Assigning controller: " + newController.GetDeviceName()); Debug.Log("Assigning controller: " + newController.GetDeviceName());
if (lastController != nextController) if (lastController != nextController && !firstBoot)
{ {
firstBoot = false;
if (nextController == null) if (nextController == null)
{ {
Debug.Log("invalid controller, using keyboard"); Debug.Log("invalid controller, using keyboard");