Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
MikiraSora committed Sep 2, 2024
2 parents 494ddf8 + 03a496a commit 5ed40b0
Show file tree
Hide file tree
Showing 9 changed files with 38 additions and 16 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/BuildProgram.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ jobs:
- name: Setup .NET7
uses: actions/[email protected]
with:
dotnet-version: 7.0.x
dotnet-version: 8.0.x
- name: get-version-action
id: project-version
uses: euberdeveloper/ga-project-version@main
Expand Down
2 changes: 2 additions & 0 deletions OngekiFumenEditor/App.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@
</ResourceDictionary>
<ResourceDictionary Source="UI\Themes\TextBlock.xaml">
</ResourceDictionary>
<!-- Theme setting -->
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Themes/Light.Blue.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
Expand Down
2 changes: 1 addition & 1 deletion OngekiFumenEditor/Base/OngekiObjects/Beam/BeamStart.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ namespace OngekiFumenEditor.Base.OngekiObjects.Beam
{
public class BeamStart : ConnectableStartObject, IBeamObject
{
public const int LEAD_IN_DURATION = 1000;
public const float LEAD_IN_DURATION_FRAME = 50f;
public const int LEAD_IN_BODY_DURATION = 250;
public const int LEAD_OUT_DURATION = 250;

Expand Down
7 changes: 6 additions & 1 deletion OngekiFumenEditor/Base/OngekiObjects/BulletPallete.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
using OngekiFumenEditor.Base.EditorObjects;
using OngekiFumenEditor.Base.OngekiObjects.BulletPalleteEnums;
using OngekiFumenEditor.Base.OngekiObjects.Lane;
using OngekiFumenEditor.Modules.FumenVisualEditor;

using System;
using System.Linq;
using System.Windows.Media;
Expand All @@ -17,7 +19,10 @@ public double CalculateToXGridTotalUnit(IBulletPalleteReferencable refObject, On
switch (TargetValue)
{
case Target.Player:
var tGrid = refObject.TGrid;
var frameOffset = (40f - 7.5f) / (0.47f * MathF.Min(refObject.ReferenceBulletPallete.Speed, 1));
var targetAudioTime = TGridCalculator.ConvertTGridToAudioTime(refObject.TGrid, fumen.BpmList) - TGridCalculator.ConvertFrameToAudioTime(frameOffset);
if(targetAudioTime < TimeSpan.Zero) targetAudioTime = TimeSpan.Zero;
var tGrid = TGridCalculator.ConvertAudioTimeToTGrid(targetAudioTime, fumen.BpmList);
var apfLane = fumen.Lanes.GetVisibleStartObjects(tGrid, tGrid).OfType<AutoplayFaderLaneStart>().LastOrDefault();
var xGrid = apfLane?.CalulateXGrid(tGrid);
xGridTotalUnit = xGrid?.TotalUnit ?? 0d;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -294,7 +294,7 @@ void AddDurationSound(SoundControl sound, TGrid tGrid, TGrid endTGrid, int loopI
//generate stop
AddSound(SoundControl.BeamEnd, beam.MaxTGrid);
AddDurationSound(SoundControl.BeamLoop, beam.TGrid, beam.MaxTGrid, loopId);
var leadBodyInTGrid = TGridCalculator.ConvertAudioTimeToTGrid(TGridCalculator.ConvertTGridToAudioTime(beam.TGrid, editor) - TimeSpan.FromMilliseconds(BeamStart.LEAD_IN_DURATION), editor);
var leadBodyInTGrid = TGridCalculator.ConvertAudioTimeToTGrid(TGridCalculator.ConvertTGridToAudioTime(beam.TGrid, editor) - TGridCalculator.ConvertFrameToAudioTime(BeamStart.LEAD_IN_DURATION_FRAME), editor);
if (leadBodyInTGrid is null)
leadBodyInTGrid = TGrid.Zero;
AddSound(SoundControl.BeamPrepare, leadBodyInTGrid);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -127,14 +127,15 @@ public override void Draw(IFumenEditorDrawingContext target, BeamStart obj)
if (prepareWarn)
{
var audioTime = TGridCalculator.ConvertTGridToAudioTime(beginTGrid, target.Editor);
var leadAudioTime = audioTime - TimeSpan.FromMilliseconds(BeamStart.LEAD_IN_DURATION);
var leadAudioTime = audioTime - TGridCalculator.ConvertFrameToAudioTime(BeamStart.LEAD_IN_DURATION_FRAME);
var leadInTGrid = TGridCalculator.ConvertAudioTimeToTGrid(leadAudioTime, target.Editor);
if (leadInTGrid is null)
leadInTGrid = TGrid.Zero;
var warnProgress = MathUtils.Normalize(leadInTGrid.TotalGrid, beginTGrid.TotalGrid, curTGrid.TotalGrid) - 0.25;
var warnProgress = MathUtils.Normalize(leadInTGrid.TotalGrid, beginTGrid.TotalGrid, curTGrid.TotalGrid);
if(warnProgress < 0) warnProgress = -1;
lazerDrawing.Draw(target, textureWarn, (int)width, x, (float)warnProgress, new(1, 215 / 255.0f, 0, 0.5f), rotate, judgeOffset);
}

lazerDrawing.Draw(target, textureBody, (int)width, x, (float)progress, OpenTK.Mathematics.Vector4.One, rotate, judgeOffset);
}

Expand Down
14 changes: 13 additions & 1 deletion OngekiFumenEditor/Modules/FumenVisualEditor/TGridCalculator.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
using OngekiFumenEditor.Base;
using Microsoft.CodeAnalysis.Differencing;

using OngekiFumenEditor.Base;
using OngekiFumenEditor.Base.Collections;
using OngekiFumenEditor.Base.OngekiObjects;
using OngekiFumenEditor.Modules.FumenVisualEditor.ViewModels;
Expand All @@ -13,6 +15,16 @@ namespace OngekiFumenEditor.Modules.FumenVisualEditor
{
public static class TGridCalculator
{
#region Frame -> AudioTime

public const float FRAME_DURATION = 16.666666f;

[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static TimeSpan ConvertFrameToAudioTime(float frame)
=> TimeSpan.FromMilliseconds(FRAME_DURATION * frame);

#endregion

#region AudioTime -> TGrid

[MethodImpl(MethodImplOptions.AggressiveInlining)]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -213,7 +213,7 @@ private IEnumerable<IDisplayableObject> GetDisplayableObjects(OngekiFumen fumen,

if (containBeams)
{
var leadInTGrid = TGridCalculator.ConvertAudioTimeToTGrid(TGridCalculator.ConvertTGridToAudioTime(min, this) - TimeSpan.FromMilliseconds(BeamStart.LEAD_IN_DURATION), this);
var leadInTGrid = TGridCalculator.ConvertAudioTimeToTGrid(TGridCalculator.ConvertTGridToAudioTime(min, this) - TGridCalculator.ConvertFrameToAudioTime(BeamStart.LEAD_IN_DURATION_FRAME), this);
var leadOutTGrid = TGridCalculator.ConvertAudioTimeToTGrid(TGridCalculator.ConvertTGridToAudioTime(max, this) + TimeSpan.FromMilliseconds(BeamStart.LEAD_OUT_DURATION), this);

r = r.Concat(fumen.Beams.GetVisibleStartObjects(leadInTGrid, leadOutTGrid));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,23 +12,25 @@
xmlns:res="clr-namespace:OngekiFumenEditor.Properties"
xmlns:vm="clr-namespace:OngekiFumenEditor.Modules.SplashScreen.ViewModels"
Title="Welcome"
WindowTitleBrush="Transparent"
Width="1000"
Height="700"
BorderThickness="0"
GlowBrush="Black"
d:DataContext="{d:DesignInstance Type=vm:SplashScreenViewModel}"
Background="{StaticResource EnvironmentWindowBackground}"
ResizeMode="NoResize"
SaveWindowPosition="True"
mc:Ignorable="d">
<mah:MetroWindow.Resources>
<Style TargetType="Border">
<Style x:Key="BorderStyle" TargetType="Border">
<Style.Triggers>
<DataTrigger Binding="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}" Value="True">
<Setter Property="BorderBrush" Value="LightBlue" />
<Setter Property="BorderThickness" Value="2" />
</DataTrigger>
</Style.Triggers>
<Setter Property="Cursor" Value="Hand" />
<Setter Property="BorderThickness" Value="1" />
<Setter Property="BorderThickness" Value="2" />
<Setter Property="Background" Value="{DynamicResource Button.Static.Background}" />
</Style>
</mah:MetroWindow.Resources>
Expand Down Expand Up @@ -182,7 +184,7 @@
HorizontalContentAlignment="Stretch"
cal:Message.Attach="[Event MouseLeftButtonDown] = [Action CreateNewProject()]"
Cursor="Hand">
<Border>
<Border Style="{StaticResource BorderStyle}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
Expand Down Expand Up @@ -215,7 +217,7 @@
HorizontalContentAlignment="Stretch"
cal:Message.Attach="[Event MouseLeftButtonDown] = [Action OpenProject()]"
Cursor="Hand">
<Border>
<Border Style="{StaticResource BorderStyle}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
Expand Down Expand Up @@ -248,7 +250,7 @@
HorizontalContentAlignment="Stretch"
cal:Message.Attach="[Event MouseLeftButtonDown] = [Action FastOpen()]"
Cursor="Hand">
<Border>
<Border Style="{StaticResource BorderStyle}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
Expand Down Expand Up @@ -285,7 +287,7 @@
HorizontalContentAlignment="Stretch"
cal:Message.Attach="[Event MouseLeftButtonDown] = [Action OpenTutorial()]"
Cursor="Hand">
<Border>
<Border Style="{StaticResource BorderStyle}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
Expand Down

0 comments on commit 5ed40b0

Please sign in to comment.