diff --git a/Assets/Art/Fonts/FontSprites.asset b/Assets/Art/Fonts/FontSprites.asset
index e4d35af9f..5f75fd688 100644
--- a/Assets/Art/Fonts/FontSprites.asset
+++ b/Assets/Art/Fonts/FontSprites.asset
@@ -144,6 +144,18 @@ MonoBehaviour:
m_Scale: 1.3
m_Name: harmVocals
m_HashCode: 240351634
+ - m_ElementType: 2
+ m_Unicode: 65534
+ m_GlyphIndex: 15
+ m_Scale: 1.3
+ m_Name: rhythm
+ m_HashCode: 216518066
+ - m_ElementType: 2
+ m_Unicode: 65534
+ m_GlyphIndex: 16
+ m_Scale: 1.3
+ m_Name: guitar_coop
+ m_HashCode: -1086307536
m_SpriteGlyphTable:
- m_Index: 0
m_Metrics:
@@ -385,5 +397,37 @@ MonoBehaviour:
m_AtlasIndex: 0
m_ClassDefinitionType: 0
sprite: {fileID: 1676829369, guid: 66fae0a679753ea4a9110a183b8d2af9, type: 3}
+ - m_Index: 15
+ m_Metrics:
+ m_Width: 256
+ m_Height: 256
+ m_HorizontalBearingX: 0
+ m_HorizontalBearingY: 198
+ m_HorizontalAdvance: 256
+ m_GlyphRect:
+ m_X: 0
+ m_Y: 0
+ m_Width: 256
+ m_Height: 256
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ sprite: {fileID: -413506960, guid: 66fae0a679753ea4a9110a183b8d2af9, type: 3}
+ - m_Index: 16
+ m_Metrics:
+ m_Width: 256
+ m_Height: 256
+ m_HorizontalBearingX: 0
+ m_HorizontalBearingY: 198
+ m_HorizontalAdvance: 256
+ m_GlyphRect:
+ m_X: 768
+ m_Y: 256
+ m_Width: 256
+ m_Height: 256
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ sprite: {fileID: 1095511443, guid: 66fae0a679753ea4a9110a183b8d2af9, type: 3}
spriteInfoList: []
fallbackSpriteAssets: []
diff --git a/Assets/Art/Meshes/Notes_Tap.prefab b/Assets/Art/Meshes/Notes_Tap.prefab
index d4062d200..3e253cce8 100644
--- a/Assets/Art/Meshes/Notes_Tap.prefab
+++ b/Assets/Art/Meshes/Notes_Tap.prefab
@@ -94,8 +94,8 @@ MeshRenderer:
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: ab191d4162f80b741b282594e23f14ca, type: 2}
- - {fileID: 2100000, guid: 0e410b84cdc264544a6ba5b805c80fb3, type: 2}
- {fileID: 2100000, guid: 8427df3402388ca4e80f4411ae8ee82e, type: 2}
+ - {fileID: 2100000, guid: 0e410b84cdc264544a6ba5b805c80fb3, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
diff --git a/Assets/Prefabs/DrumsNote.prefab b/Assets/Prefabs/DrumsNote.prefab
index cf93c2f7d..305d9e254 100644
--- a/Assets/Prefabs/DrumsNote.prefab
+++ b/Assets/Prefabs/DrumsNote.prefab
@@ -31,6 +31,7 @@ Transform:
m_Children:
- {fileID: 3676109393068581280}
- {fileID: 7677582505515718665}
+ - {fileID: 173717695566584398}
- {fileID: 7437171449997926572}
- {fileID: 3083436502393406622}
m_Father: {fileID: 0}
@@ -57,6 +58,7 @@ MonoBehaviour:
meshRendererMiddleIndices: 020000000000000001000000
noteGroup: {fileID: 1397812567785855241}
hopoGroup: {fileID: 5887489561296935717}
+ tapGroup: {fileID: 6027034360231535167}
fullGroup: {fileID: 4634473573192609450}
fretNumber: {fileID: 0}
lineRenderer: {fileID: 5864461325193466425}
@@ -122,7 +124,7 @@ Transform:
m_Children:
- {fileID: 5342919547348619199}
m_Father: {fileID: 861361446070616035}
- m_RootOrder: 2
+ m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &5887489561296935717
GameObject:
@@ -156,6 +158,37 @@ Transform:
m_Father: {fileID: 861361446070616035}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 18.49, y: 0, z: 0}
+--- !u!1 &6027034360231535167
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 173717695566584398}
+ m_Layer: 6
+ m_Name: TapGroupDummy
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 0
+--- !u!4 &173717695566584398
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6027034360231535167}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 861361446070616035}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &7189655996071686276
GameObject:
m_ObjectHideFlags: 0
@@ -186,7 +219,7 @@ Transform:
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 861361446070616035}
- m_RootOrder: 3
+ m_RootOrder: 4
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!120 &5864461325193466425
LineRenderer:
diff --git a/Assets/Prefabs/Note.prefab b/Assets/Prefabs/Note.prefab
index 5877e36e0..42c37190c 100644
--- a/Assets/Prefabs/Note.prefab
+++ b/Assets/Prefabs/Note.prefab
@@ -56,7 +56,7 @@ MonoBehaviour:
- {fileID: 6846950644507852135}
- {fileID: 6376229487116774476}
- {fileID: 7147253800328892818}
- meshRendererMiddleIndices: 02000000010000000200000001000000
+ meshRendererMiddleIndices: 02000000010000000100000001000000
noteGroup: {fileID: 1397812567785855241}
hopoGroup: {fileID: 1294466957868725440}
tapGroup: {fileID: 3624981743589644049}
@@ -78,7 +78,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
- m_IsActive: 1
+ m_IsActive: 0
--- !u!4 &2485029377005370073
Transform:
m_ObjectHideFlags: 0
@@ -142,7 +142,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
- m_IsActive: 1
+ m_IsActive: 0
--- !u!4 &2078363896503798061
Transform:
m_ObjectHideFlags: 0
@@ -174,7 +174,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
- m_IsActive: 1
+ m_IsActive: 0
--- !u!4 &7437171449997926572
Transform:
m_ObjectHideFlags: 0
diff --git a/Assets/Prefabs/RealGuitarNote.prefab b/Assets/Prefabs/RealGuitarNote.prefab
index 373c278c9..6299a3511 100644
--- a/Assets/Prefabs/RealGuitarNote.prefab
+++ b/Assets/Prefabs/RealGuitarNote.prefab
@@ -31,7 +31,7 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 861361446070616035}
- m_RootOrder: 4
+ m_RootOrder: 5
m_LocalEulerAnglesHint: {x: 68.559, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
@@ -203,6 +203,7 @@ Transform:
m_Children:
- {fileID: 3676109393068581280}
- {fileID: 2485029377005370073}
+ - {fileID: 7774362077026621734}
- {fileID: 969241233629970397}
- {fileID: 3083436502393406622}
- {fileID: 6247713159172371674}
@@ -229,7 +230,7 @@ MonoBehaviour:
meshRendererMiddleIndices: 0200000002000000
noteGroup: {fileID: 1397812567785855241}
hopoGroup: {fileID: 1294466957868725440}
- tapGroup: {fileID: 0}
+ tapGroup: {fileID: 8745650086612154010}
fullGroup: {fileID: 5879953073027725293}
fretNumber: {fileID: 5134052872940096443}
lineRenderer: {fileID: 5864461325193466425}
@@ -326,7 +327,7 @@ Transform:
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 861361446070616035}
- m_RootOrder: 2
+ m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &7189655996071686276
GameObject:
@@ -358,7 +359,7 @@ Transform:
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 861361446070616035}
- m_RootOrder: 3
+ m_RootOrder: 4
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!120 &5864461325193466425
LineRenderer:
@@ -459,6 +460,37 @@ LineRenderer:
generateLightingData: 0
m_UseWorldSpace: 0
m_Loop: 0
+--- !u!1 &8745650086612154010
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 7774362077026621734}
+ m_Layer: 6
+ m_Name: TapGroupDummy
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 0
+--- !u!4 &7774362077026621734
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 8745650086612154010}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 861361446070616035}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &3999898006346069272
PrefabInstance:
m_ObjectHideFlags: 0
diff --git a/Assets/Scenes/MenuScene.unity b/Assets/Scenes/MenuScene.unity
index 4417e7e10..f42fcce0f 100644
--- a/Assets/Scenes/MenuScene.unity
+++ b/Assets/Scenes/MenuScene.unity
@@ -2608,7 +2608,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
- m_AnchoredPosition: {x: 0, y: -13.5000305}
+ m_AnchoredPosition: {x: 0, y: -13.500061}
m_SizeDelta: {x: -6, y: -33}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &226426086
diff --git a/Assets/Script/Data/NoteInfo.cs b/Assets/Script/Data/NoteInfo.cs
index 022af9e84..1cf7fdace 100644
--- a/Assets/Script/Data/NoteInfo.cs
+++ b/Assets/Script/Data/NoteInfo.cs
@@ -9,7 +9,7 @@ public class NoteInfo : AbstractInfo {
///
public bool hopo;
///
- /// Tap note. Only used for guitar, coop guitar, rhythm, and bass.
+ /// Tap note. Only used for five fret.
///
public bool tap;
///
diff --git a/Assets/Script/PlayMode/FiveFretTrack.cs b/Assets/Script/PlayMode/FiveFretTrack.cs
index 1f0cc7aa6..c0bf96110 100644
--- a/Assets/Script/PlayMode/FiveFretTrack.cs
+++ b/Assets/Script/PlayMode/FiveFretTrack.cs
@@ -28,7 +28,7 @@ public class FiveFretTrack : AbstractTrack {
private List heldNotes = new();
private float? latestInput = null;
private bool latestInputIsStrum = false;
- private bool[] extendedSustain = new bool[] {false,false,false,false,false};
+ private bool[] extendedSustain = new bool[] { false, false, false, false, false };
private int notesHit = 0;
// private int notesMissed = 0;
@@ -343,7 +343,7 @@ private void UpdateInput() {
// add it to the allowed overstrums. This is so the player
// doesn't lose their combo when they strum AFTER they hit
// the tap note.
- if ((chord[0].hopo||chord[0].tap) && !strummedCurrentNote) {
+ if ((chord[0].hopo || chord[0].tap) && !strummedCurrentNote) {
allowedOverstrums.Clear(); // Only allow overstrumming latest HO/PO
allowedOverstrums.Add(chord);
} else if (allowedOverstrums.Count > 0 && !chord[0].hopo && !chord[0].tap) {
@@ -358,7 +358,6 @@ private void UpdateInput() {
}
}
}
-
}
}
@@ -572,11 +571,10 @@ private void SpawnNote(NoteInfo noteInfo, float time) {
model = NoteComponent.ModelType.FULL;
} else if (noteInfo.hopo) {
model = NoteComponent.ModelType.HOPO;
- } else if (noteInfo.tap){
+ } else if (noteInfo.tap) {
model = NoteComponent.ModelType.TAP;
}
-
// Set note info
var noteComp = notePool.AddNote(noteInfo, pos);
startFCDetection = true;
@@ -586,7 +584,6 @@ private void SpawnNote(NoteInfo noteInfo, float time) {
noteInfo.length,
model
);
-
}
private string PrintFrets() { // Debug function; remove later?
diff --git a/Assets/Script/Serialization/Parser/MidiParser.FiveFret.cs b/Assets/Script/Serialization/Parser/MidiParser.FiveFret.cs
index c60baab7d..855f06197 100644
--- a/Assets/Script/Serialization/Parser/MidiParser.FiveFret.cs
+++ b/Assets/Script/Serialization/Parser/MidiParser.FiveFret.cs
@@ -23,7 +23,9 @@ private enum ForceState {
OPEN,
TAP
}
- private bool isCurrentlyTap=false;
+
+ private bool isCurrentlyTap = false;
+
private class FiveFretIR {
public long startTick;
// This is an array due to extended sustains
@@ -32,6 +34,7 @@ private class FiveFretIR {
public FretFlag fretFlag;
public bool hopo;
public bool tap;
+
// Used for difficulty downsampling
public bool autoHopo;
}
@@ -97,15 +100,15 @@ private List FiveFretGetForceState(TrackChunk trackChunk, int diff
// If it is a flag on, wait until we get the flag
// off so we can get the length of the flag period.
forceStateArray[i] = totalDelta;
- if(forceState==ForceState.TAP){
- isCurrentlyTap=true;
+ if (forceState == ForceState.TAP) {
+ isCurrentlyTap = true;
}
} else {
if (forceStateArray[i] == null) {
continue;
}
- if(forceState==ForceState.TAP){
- isCurrentlyTap=false;
+ if (forceState == ForceState.TAP) {
+ isCurrentlyTap = false;
}
forceIR.Add(new ForceStateIR {
startTick = forceStateArray[i].Value,
@@ -123,22 +126,20 @@ private List FiveFretGetForceState(TrackChunk trackChunk, int diff
continue;
}
ForceState forceState = ForceState.NONE;
- if(noteEvent.GetNoteOctave() == 7 && noteEvent.GetNoteName()==NoteName.GSharp){
+ if (noteEvent.GetNoteOctave() == 7 && noteEvent.GetNoteName() == NoteName.GSharp) {
forceState = ForceState.TAP;
- }else{
- // Convert note to force state
+ } else {
+ // Convert note to force state
forceState = noteEvent.GetNoteName() switch {
- // Force HOPO
- NoteName.F => ForceState.HOPO,
- // Force strum
- NoteName.FSharp => ForceState.STRUM,
- // Default
- _ => ForceState.NONE
- };
+ // Force HOPO
+ NoteName.F => ForceState.HOPO,
+ // Force strum
+ NoteName.FSharp => ForceState.STRUM,
+ // Default
+ _ => ForceState.NONE
+ };
}
-
-
// Skip if not an actual state
if (forceState == ForceState.NONE) {
continue;
@@ -209,7 +210,7 @@ private List FiveFretNotePass(TrackChunk trackChunk, int difficulty)
// Default
_ => -1
};
-
+
// Skip if not an actual note
if (fret == -1) {
continue;
@@ -300,14 +301,14 @@ private void FiveFretNoteStatePass(List noteIR, List f
// Set as open if requested
note.fretFlag = FretFlag.OPEN;
note.hopo = false;
- } else{
+ } else {
// Otherwise, just set as a HOPO if requested
note.hopo = force == ForceState.HOPO;
}
if (force == ForceState.TAP) {
- note.tap=true;
- note.hopo=false;
- note.autoHopo=false;
+ note.tap = true;
+ note.hopo = false;
+ note.autoHopo = false;
}
lastTime = note.startTick;
lastFret = note.fretFlag;
@@ -335,10 +336,11 @@ private List FiveFretIrToRealPass(List noteIR, TempoMap te
int fret = i - 1;
- if(noteInfo.tap){
- noteInfo.hopo=false;
- noteInfo.autoHopo=false;
+ if (noteInfo.tap) {
+ noteInfo.hopo = false;
+ noteInfo.autoHopo = false;
}
+
// Get the end tick (different for open notes)
long endTick;
if (fret == 5) {