diff --git a/Qwilight/Compiler/BMSCompiler.cs b/Qwilight/Compiler/BMSCompiler.cs
index 6de45b9..3f40413 100644
--- a/Qwilight/Compiler/BMSCompiler.cs
+++ b/Qwilight/Compiler/BMSCompiler.cs
@@ -748,6 +748,17 @@
catch
{
}
+ try
+ {
+ var bannerDrawingPath = Utility.GetFilePath(defaultComputer.BannerDrawingPath, Utility.FileFormatFlag.Drawing);
+ if (!string.IsNullOrEmpty(bannerDrawingPath))
+ {
+ defaultComputer.BannerDrawing = DrawingSystem.Instance.Load(bannerDrawingPath, defaultComputer);
+ }
+ }
+ catch
+ {
+ }
var isBanalMedia = (!_hasMedia || defaultComputer.AlwaysBanalMedia) && defaultComputer.BanalMedia;
var isBanalFailedMedia = (!_hasFailedMedia || defaultComputer.AlwaysBanalFailedMedia) && defaultComputer.BanalFailedMedia;
defaultComputer.LoadBanalMedia(isBanalMedia, isBanalFailedMedia, parallelItems);
diff --git a/Qwilight/Compiler/BMSONCompiler.cs b/Qwilight/Compiler/BMSONCompiler.cs
index b36e364..74b102b 100644
--- a/Qwilight/Compiler/BMSONCompiler.cs
+++ b/Qwilight/Compiler/BMSONCompiler.cs
@@ -524,6 +524,17 @@
catch
{
}
+ try
+ {
+ var bannerDrawingPath = Utility.GetFilePath(defaultComputer.BannerDrawingPath, Utility.FileFormatFlag.Drawing);
+ if (!string.IsNullOrEmpty(bannerDrawingPath))
+ {
+ defaultComputer.BannerDrawing = DrawingSystem.Instance.Load(bannerDrawingPath, defaultComputer);
+ }
+ }
+ catch
+ {
+ }
var isBanalMedia = (!_hasMedia || defaultComputer.AlwaysBanalMedia) && defaultComputer.BanalMedia;
defaultComputer.LoadBanalMedia(isBanalMedia, defaultComputer.BanalFailedMedia, parallelItems);
foreach (var audioFileName in _text.sound_channels.Select(audioChannel => audioChannel.name).Concat(_text.mine_channels.Select(traoChannel => traoChannel.name)))
diff --git a/Qwilight/Compute/DefaultCompute.cs b/Qwilight/Compute/DefaultCompute.cs
index a5de3af..28d1252 100644
--- a/Qwilight/Compute/DefaultCompute.cs
+++ b/Qwilight/Compute/DefaultCompute.cs
@@ -554,6 +554,8 @@
public HandledDrawingItem? NoteDrawing { get; set; }
+ public DrawingItem? BannerDrawing { get; set; }
+
public double Status { get; set; }
public double LoopingCounter { get; set; }
diff --git a/Qwilight/Computing.cs b/Qwilight/Computing.cs
index 698b4ca..3b39c5e 100644
--- a/Qwilight/Computing.cs
+++ b/Qwilight/Computing.cs
@@ -154,8 +154,8 @@
5.0 => "JUDGE: NM",
7.0 => "JUDGE: HD",
10.0 => "JUDGE: VHD",
- _ => $"LV. {Math.Round(JudgmentStage, 1)}"
- }}, HP: {Math.Round(100 * HitPointsValue, 3)}%";
+ _ => $"JUDGE: LV. {Math.Round(JudgmentStage, 1)}"
+ }}{(double.IsNaN(HitPointsValue) ? string.Empty : $", HP: {Math.Round(100 * HitPointsValue, 3)}%")}";
public string TotalNotesContents => $"{TotalNotes.ToString("#,##0")} (SC: {AutoableNotes.ToString("#,##0")}, {(IsAutoLongNote ? "LN" : "CN")}: {LongNotes.ToString("#,##0")}, MN: {TrapNotes.ToString("#,##0")})";
diff --git a/Qwilight/Qwilight.csproj b/Qwilight/Qwilight.csproj
index da5f6d1..8ad426e 100644
--- a/Qwilight/Qwilight.csproj
+++ b/Qwilight/Qwilight.csproj
@@ -47,7 +47,7 @@
-
+
diff --git a/Qwilight/System/BaseUI/BasePaintProperty.cs b/Qwilight/System/BaseUI/BasePaintProperty.cs
index dcd9671..83d268b 100644
--- a/Qwilight/System/BaseUI/BasePaintProperty.cs
+++ b/Qwilight/System/BaseUI/BasePaintProperty.cs
@@ -143,6 +143,17 @@
targetSession.PaintVisibleText(PoolSystem.Instance.GetDefaultTextItem(noteFile.WantLevelID, Framerate, EtcPaint, r.Length), PoolSystem.Instance.GetDefaultTextItem(noteFile.WantLevelID, Framerate, Paints.Paint0, r.Length), ref r);
}
break;
+ case 14:
+ if (noteFile != null && defaultMediaFaint > 0)
+ {
+ targetSession.PushOpacity(defaultMediaFaint / 100.0);
+ targetSession.DrawRectangle(Paints.Paint0, null, r);
+ var bannerDrawing = noteFile.BannerDrawing;
+ Utility.SetFilledMediaDrawing(ref r, Configure.Instance.IsMediaFill, bannerDrawing.Width, bannerDrawing.Height, PaintBound.Position0, PaintBound.Position1, PaintBound.Length, PaintBound.Height);
+ targetSession.PaintDrawing(ref r, bannerDrawing);
+ targetSession.Pop();
+ }
+ break;
}
}
else if (DrawingFrame >= 0)
@@ -282,6 +293,19 @@
}
}
break;
+ case 14:
+ if (defaultMediaFaint > 0)
+ {
+ targetSession.FillRectangle(r, DrawingSystem.Instance.FaintFilledPaints[(int)(100 * defaultMediaFaint)]);
+ lock (handlingComputer.LoadedCSX)
+ {
+ if (handlingComputer.HasContents)
+ {
+ targetSession.PaintDrawing(ref r, handlingComputer.BannerDrawing, defaultMediaFaint);
+ }
+ }
+ }
+ break;
}
}
else if (DrawingFrame >= 0)
diff --git a/Qwilight/System/DrawingSystem/DrawingSystem.cs b/Qwilight/System/DrawingSystem/DrawingSystem.cs
index 1737893..d1a3136 100644
--- a/Qwilight/System/DrawingSystem/DrawingSystem.cs
+++ b/Qwilight/System/DrawingSystem/DrawingSystem.cs
@@ -1893,8 +1893,7 @@
vsJudgment1 += judgments[i];
}
}
- var judgmentVSVisualizerInt = vsJudgment1 > 0 ? 100 * vsJudgment0 / vsJudgment1 : vsJudgment0 == vsJudgment1 ? 0 : 100 * vsJudgment0;
- var judgmentVSVisualizerStopPointDrawingLength = drawingComponent.judgmentVSVisualizerStopPointDrawingLength;
+ var judgmentVSVisualizerInt = vsJudgment1 > 0 ? 100 * vsJudgment0 / vsJudgment1 : vsJudgment0 == vsJudgment1 ? 0 : null as int?;
var judgmentVSVisualizerPosition0 = drawingComponent.judgmentVSVisualizerPosition0;
var judgmentVSVisualizerPosition1 = drawingComponent.judgmentVSVisualizerPosition1;
var binJudgmentVSVisualizerLength = drawingComponent.binJudgmentVSVisualizerLength;
@@ -1902,45 +1901,61 @@
var judgmentVSVisualizerSystem = drawingComponent.judgmentVSVisualizerSystem;
var altJudgmentVSVisualizer = drawingComponent.altJudgmentVSVisualizer;
var binJudgmentVSVisualizerMap = UI.Instance.BinJudgmentVSVisualizerMap;
- var judgmentVSVisualizerStopPointDrawing = UI.Instance.JudgmentVSVisualizerStopPointDrawing;
- var judgmentVSVisualizerDigit = judgmentVSVisualizerInt < 100 ? 3 : Utility.GetDigit(judgmentVSVisualizerInt);
- for (var i = altJudgmentVSVisualizer >> 1; i >= altJudgmentVSVisualizer % 2; --i)
+ var judgmentVSVisualizerDigit = judgmentVSVisualizerInt.HasValue ? judgmentVSVisualizerInt < 100 ? 3 : Utility.GetDigit(judgmentVSVisualizerInt.Value) : null as int?;
+ if (judgmentVSVisualizerDigit.HasValue)
{
- var distancePoint = i == 1 && has2P ? distance2P : 0F;
- for (var j = judgmentVSVisualizerDigit - 1; j >= 2; --j)
+ var judgmentVSVisualizerDigitValue = judgmentVSVisualizerDigit.Value;
+ var judgmentVSVisualizerStopPointDrawing = UI.Instance.JudgmentVSVisualizerStopPointDrawing;
+ var judgmentVSVisualizerStopPointDrawingLength = drawingComponent.judgmentVSVisualizerStopPointDrawingLength;
+ for (var i = altJudgmentVSVisualizer >> 1; i >= altJudgmentVSVisualizer % 2; --i)
{
- switch (judgmentVSVisualizerSystem)
+ var distancePoint = i == 1 && has2P ? distance2P : 0F;
+ for (var j = judgmentVSVisualizerDigitValue - 1; j >= 2; --j)
{
- case 0:
- r.Set(judgmentVSVisualizerPosition0 + binJudgmentVSVisualizerLength * (judgmentVSVisualizerDigit - j - 1) + distancePoint, judgmentVSVisualizerPosition1, binJudgmentVSVisualizerLength, binJudgmentVSVisualizerHeight);
- break;
- case 1:
- r.Set(judgmentVSVisualizerPosition0 + binJudgmentVSVisualizerLength * (0.5 * judgmentVSVisualizerDigit - j - 1) - judgmentVSVisualizerStopPointDrawingLength * 0.5 + distancePoint, judgmentVSVisualizerPosition1, binJudgmentVSVisualizerLength, binJudgmentVSVisualizerHeight);
- break;
- case 2:
- r.Set(judgmentVSVisualizerPosition0 - binJudgmentVSVisualizerLength * (j + 1) - judgmentVSVisualizerStopPointDrawingLength + distancePoint, judgmentVSVisualizerPosition1, binJudgmentVSVisualizerLength, binJudgmentVSVisualizerHeight);
- break;
+ switch (judgmentVSVisualizerSystem)
+ {
+ case 0:
+ r.Set(judgmentVSVisualizerPosition0 + binJudgmentVSVisualizerLength * (judgmentVSVisualizerDigitValue - j - 1) + distancePoint, judgmentVSVisualizerPosition1, binJudgmentVSVisualizerLength, binJudgmentVSVisualizerHeight);
+ break;
+ case 1:
+ r.Set(judgmentVSVisualizerPosition0 + binJudgmentVSVisualizerLength * (0.5 * judgmentVSVisualizerDigitValue - j - 1) - judgmentVSVisualizerStopPointDrawingLength * 0.5 + distancePoint, judgmentVSVisualizerPosition1, binJudgmentVSVisualizerLength, binJudgmentVSVisualizerHeight);
+ break;
+ case 2:
+ r.Set(judgmentVSVisualizerPosition0 - binJudgmentVSVisualizerLength * (j + 1) - judgmentVSVisualizerStopPointDrawingLength + distancePoint, judgmentVSVisualizerPosition1, binJudgmentVSVisualizerLength, binJudgmentVSVisualizerHeight);
+ break;
+ }
+ targetSession.PaintDrawing(ref r, binJudgmentVSVisualizerMap[(int)(judgmentVSVisualizerInt / Math.Pow(10, j) % 10)]);
}
- targetSession.PaintDrawing(ref r, binJudgmentVSVisualizerMap[(int)(judgmentVSVisualizerInt / Math.Pow(10, j) % 10)]);
+ r.Position0 += binJudgmentVSVisualizerLength;
+ r.Length = judgmentVSVisualizerStopPointDrawingLength;
+ targetSession.PaintDrawing(ref r, judgmentVSVisualizerStopPointDrawing);
+ for (var j = 1; j >= 0; --j)
+ {
+ switch (judgmentVSVisualizerSystem)
+ {
+ case 0:
+ r.Set(judgmentVSVisualizerPosition0 + binJudgmentVSVisualizerLength * (judgmentVSVisualizerDigitValue - j - 1) + judgmentVSVisualizerStopPointDrawingLength + distancePoint, judgmentVSVisualizerPosition1, binJudgmentVSVisualizerLength, binJudgmentVSVisualizerHeight);
+ break;
+ case 1:
+ r.Set(judgmentVSVisualizerPosition0 + binJudgmentVSVisualizerLength * (0.5 * judgmentVSVisualizerDigitValue - j - 1) + 0.5 * judgmentVSVisualizerStopPointDrawingLength + distancePoint, judgmentVSVisualizerPosition1, binJudgmentVSVisualizerLength, binJudgmentVSVisualizerHeight);
+ break;
+ case 2:
+ r.Set(judgmentVSVisualizerPosition0 - binJudgmentVSVisualizerLength * (j + 1) + distancePoint, judgmentVSVisualizerPosition1, binJudgmentVSVisualizerLength, binJudgmentVSVisualizerHeight);
+ break;
+ }
+ targetSession.PaintDrawing(ref r, binJudgmentVSVisualizerMap[(int)(judgmentVSVisualizerInt / Math.Pow(10, j) % 10)]);
+ }
}
- r.Position0 += binJudgmentVSVisualizerLength;
- r.Length = judgmentVSVisualizerStopPointDrawingLength;
- targetSession.PaintDrawing(ref r, judgmentVSVisualizerStopPointDrawing);
- for (var j = 1; j >= 0; --j)
+ }
+ else
+ {
+ var judgmentVSVisualizerInfinityDrawing = UI.Instance.JudgmentVSVisualizerInfinityDrawing;
+ var judgmentVSVisualizerInfinityDrawingLength = drawingComponent.judgmentVSVisualizerInfinityDrawingLength;
+ for (var i = altJudgmentVSVisualizer >> 1; i >= altJudgmentVSVisualizer % 2; --i)
{
- switch (judgmentVSVisualizerSystem)
- {
- case 0:
- r.Set(judgmentVSVisualizerPosition0 + binJudgmentVSVisualizerLength * (judgmentVSVisualizerDigit - j - 1) + judgmentVSVisualizerStopPointDrawingLength + distancePoint, judgmentVSVisualizerPosition1, binJudgmentVSVisualizerLength, binJudgmentVSVisualizerHeight);
- break;
- case 1:
- r.Set(judgmentVSVisualizerPosition0 + binJudgmentVSVisualizerLength * (0.5 * judgmentVSVisualizerDigit - j - 1) + 0.5 * judgmentVSVisualizerStopPointDrawingLength + distancePoint, judgmentVSVisualizerPosition1, binJudgmentVSVisualizerLength, binJudgmentVSVisualizerHeight);
- break;
- case 2:
- r.Set(judgmentVSVisualizerPosition0 - binJudgmentVSVisualizerLength * (j + 1) + distancePoint, judgmentVSVisualizerPosition1, binJudgmentVSVisualizerLength, binJudgmentVSVisualizerHeight);
- break;
- }
- targetSession.PaintDrawing(ref r, binJudgmentVSVisualizerMap[(int)(judgmentVSVisualizerInt / Math.Pow(10, j) % 10)]);
+ var distancePoint = i == 1 && has2P ? distance2P : 0F;
+ r.Set(judgmentVSVisualizerPosition0 + distancePoint, judgmentVSVisualizerPosition1, judgmentVSVisualizerInfinityDrawingLength, binJudgmentVSVisualizerHeight);
+ targetSession.PaintDrawing(ref r, judgmentVSVisualizerInfinityDrawing);
}
}
break;
diff --git a/Qwilight/System/UI/DrawingComponent.cs b/Qwilight/System/UI/DrawingComponent.cs
index ca0e4b1..30f63d5 100644
--- a/Qwilight/System/UI/DrawingComponent.cs
+++ b/Qwilight/System/UI/DrawingComponent.cs
@@ -301,6 +301,7 @@
public float binJudgmentVSVisualizerLength;
public float binJudgmentVSVisualizerHeight;
public float judgmentVSVisualizerStopPointDrawingLength;
+ public float judgmentVSVisualizerInfinityDrawingLength;
public float pausedUnpausePosition0;
public float pausedUnpausePosition1;
diff --git a/Qwilight/System/UI/UI.cs b/Qwilight/System/UI/UI.cs
index 3bc2bb0..cabd953 100644
--- a/Qwilight/System/UI/UI.cs
+++ b/Qwilight/System/UI/UI.cs
@@ -256,6 +256,8 @@
public DrawingItem? JudgmentVSVisualizerStopPointDrawing { get; set; }
+ public DrawingItem? JudgmentVSVisualizerInfinityDrawing { get; set; }
+
public DrawingItem? PointUnitDrawing { get; set; }
public DrawingItem? HitPointsVisualizerUnitDrawing { get; set; }
@@ -856,6 +858,7 @@
SaveValueMapAsDefaultID(pointNode, "binJudgmentVSVisualizerLength", "binLength");
SaveValueMapAsDefaultID(pointNode, "binJudgmentVSVisualizerHeight", "binHeight");
SaveValueMapAsDefaultID(pointNode, "judgmentVSVisualizerStopPointDrawingLength", "stopPointDrawingLength");
+ SaveValueMap(pointNode, "judgmentVSVisualizerInfinityDrawingLength");
SaveAltMap(lambdaNode, "alt-judgment-vs-visualizer");
SaveValueMap(pointNode, "judgmentInputVisualizerPosition0");
@@ -1886,6 +1889,9 @@
case "HH .":
JudgmentVSVisualizerStopPointDrawing = drawingItem;
break;
+ case "HH Infinity":
+ JudgmentVSVisualizerInfinityDrawing = drawingItem;
+ break;
default:
BinJudgmentVSVisualizerMap.SetValue(value1, drawingItem);
break;