修改本体,添加CrossTrackPoint兼容层,兼容StaticTrack Hold,为难度选项扩增全屏可选,添加和调整某些谱面
Signed-off-by: TRADER_FOER <lhf190@outlook.com>
This commit is contained in:
8
Assets/Scripts/DataCore/DataTypes/ES3Types.meta
Normal file
8
Assets/Scripts/DataCore/DataTypes/ES3Types.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8d864bbb5c0709643b7ac651fbf00311
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,51 @@
|
||||
using System.Collections.Generic;
|
||||
using Ichni.RhythmGame;
|
||||
using Ichni.RhythmGame.Beatmap;
|
||||
|
||||
namespace ES3Types
|
||||
{
|
||||
[UnityEngine.Scripting.Preserve]
|
||||
public class ES3Type_FlexibleBool_BM : ES3ObjectType
|
||||
{
|
||||
public static ES3Type Instance = null;
|
||||
|
||||
public ES3Type_FlexibleBool_BM() : base(typeof(FlexibleBool_BM))
|
||||
{
|
||||
Instance = this;
|
||||
priority = 1;
|
||||
}
|
||||
|
||||
protected override void WriteObject(object obj, ES3Writer writer)
|
||||
{
|
||||
var instance = (FlexibleBool_BM)obj;
|
||||
writer.WriteProperty("animatedBoolList", instance.animatedBoolList);
|
||||
}
|
||||
|
||||
protected override void ReadObject<T>(ES3Reader reader, object obj)
|
||||
{
|
||||
var instance = (FlexibleBool_BM)obj;
|
||||
foreach (string propertyName in reader.Properties)
|
||||
{
|
||||
switch (propertyName)
|
||||
{
|
||||
case "animatedBoolList":
|
||||
case "animations":
|
||||
instance.animatedBoolList = reader.Read<List<AnimatedBool>>();
|
||||
break;
|
||||
default:
|
||||
reader.Skip();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
instance.animatedBoolList ??= new List<AnimatedBool>();
|
||||
}
|
||||
|
||||
protected override object ReadObject<T>(ES3Reader reader)
|
||||
{
|
||||
var instance = new FlexibleBool_BM();
|
||||
ReadObject<T>(reader, instance);
|
||||
return instance;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3d28b97050e8b4b418d3cb79369e51a2
|
||||
@@ -0,0 +1,51 @@
|
||||
using System.Collections.Generic;
|
||||
using Ichni.RhythmGame;
|
||||
using Ichni.RhythmGame.Beatmap;
|
||||
|
||||
namespace ES3Types
|
||||
{
|
||||
[UnityEngine.Scripting.Preserve]
|
||||
public class ES3Type_FlexibleFloat_BM : ES3ObjectType
|
||||
{
|
||||
public static ES3Type Instance = null;
|
||||
|
||||
public ES3Type_FlexibleFloat_BM() : base(typeof(FlexibleFloat_BM))
|
||||
{
|
||||
Instance = this;
|
||||
priority = 1;
|
||||
}
|
||||
|
||||
protected override void WriteObject(object obj, ES3Writer writer)
|
||||
{
|
||||
var instance = (FlexibleFloat_BM)obj;
|
||||
writer.WriteProperty("animatedFloatList", instance.animatedFloatList);
|
||||
}
|
||||
|
||||
protected override void ReadObject<T>(ES3Reader reader, object obj)
|
||||
{
|
||||
var instance = (FlexibleFloat_BM)obj;
|
||||
foreach (string propertyName in reader.Properties)
|
||||
{
|
||||
switch (propertyName)
|
||||
{
|
||||
case "animatedFloatList":
|
||||
case "animations":
|
||||
instance.animatedFloatList = reader.Read<List<AnimatedFloat>>();
|
||||
break;
|
||||
default:
|
||||
reader.Skip();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
instance.animatedFloatList ??= new List<AnimatedFloat>();
|
||||
}
|
||||
|
||||
protected override object ReadObject<T>(ES3Reader reader)
|
||||
{
|
||||
var instance = new FlexibleFloat_BM();
|
||||
ReadObject<T>(reader, instance);
|
||||
return instance;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 44246e8e433f04748926353a4242ef0b
|
||||
@@ -0,0 +1,51 @@
|
||||
using System.Collections.Generic;
|
||||
using Ichni.RhythmGame;
|
||||
using Ichni.RhythmGame.Beatmap;
|
||||
|
||||
namespace ES3Types
|
||||
{
|
||||
[UnityEngine.Scripting.Preserve]
|
||||
public class ES3Type_FlexibleInt_BM : ES3ObjectType
|
||||
{
|
||||
public static ES3Type Instance = null;
|
||||
|
||||
public ES3Type_FlexibleInt_BM() : base(typeof(FlexibleInt_BM))
|
||||
{
|
||||
Instance = this;
|
||||
priority = 1;
|
||||
}
|
||||
|
||||
protected override void WriteObject(object obj, ES3Writer writer)
|
||||
{
|
||||
var instance = (FlexibleInt_BM)obj;
|
||||
writer.WriteProperty("animatedIntList", instance.animatedIntList);
|
||||
}
|
||||
|
||||
protected override void ReadObject<T>(ES3Reader reader, object obj)
|
||||
{
|
||||
var instance = (FlexibleInt_BM)obj;
|
||||
foreach (string propertyName in reader.Properties)
|
||||
{
|
||||
switch (propertyName)
|
||||
{
|
||||
case "animatedIntList":
|
||||
case "animations":
|
||||
instance.animatedIntList = reader.Read<List<AnimatedInt>>();
|
||||
break;
|
||||
default:
|
||||
reader.Skip();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
instance.animatedIntList ??= new List<AnimatedInt>();
|
||||
}
|
||||
|
||||
protected override object ReadObject<T>(ES3Reader reader)
|
||||
{
|
||||
var instance = new FlexibleInt_BM();
|
||||
ReadObject<T>(reader, instance);
|
||||
return instance;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 526f6c8e10ef19448b07a14433c76b5c
|
||||
8
Assets/Scripts/DataCore/ES3Types.meta
Normal file
8
Assets/Scripts/DataCore/ES3Types.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b3fedf623afb11744ad76c6d4fb5994c
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
106
Assets/Scripts/DataCore/ES3Types/ES3Type_CrossTrackPoint_BM.cs
Normal file
106
Assets/Scripts/DataCore/ES3Types/ES3Type_CrossTrackPoint_BM.cs
Normal file
@@ -0,0 +1,106 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Ichni.RhythmGame;
|
||||
using Ichni.RhythmGame.Beatmap;
|
||||
|
||||
namespace ES3Types
|
||||
{
|
||||
[UnityEngine.Scripting.Preserve]
|
||||
[ES3Properties("attachedElementGuid", "elementName", "tags", "elementGuid", "trackSwitch", "trackPercent")]
|
||||
public class ES3Type_CrossTrackPoint_BM : ES3ObjectType
|
||||
{
|
||||
public static ES3Type Instance = null;
|
||||
|
||||
public ES3Type_CrossTrackPoint_BM() : base(typeof(CrossTrackPoint_BM))
|
||||
{
|
||||
Instance = this;
|
||||
priority = 1;
|
||||
}
|
||||
|
||||
protected override void WriteObject(object obj, ES3Writer writer)
|
||||
{
|
||||
var instance = (CrossTrackPoint_BM)obj;
|
||||
instance.NormalizeFlexibleFields();
|
||||
|
||||
writer.WriteProperty("attachedElementGuid", instance.attachedElementGuid, ES3Type_Guid.Instance);
|
||||
writer.WriteProperty("elementName", instance.elementName, ES3Type_string.Instance);
|
||||
writer.WriteProperty("tags", instance.tags);
|
||||
writer.WriteProperty("elementGuid", instance.elementGuid, ES3Type_Guid.Instance);
|
||||
writer.WriteProperty("trackSwitch", instance.trackSwitch);
|
||||
writer.WriteProperty("trackPercent", instance.trackPercent);
|
||||
}
|
||||
|
||||
protected override void ReadObject<T>(ES3Reader reader, object obj)
|
||||
{
|
||||
var instance = (CrossTrackPoint_BM)obj;
|
||||
foreach (string propertyName in reader.Properties)
|
||||
{
|
||||
switch (propertyName)
|
||||
{
|
||||
case "attachedElementGuid":
|
||||
instance.attachedElementGuid = reader.Read<Guid>(ES3Type_Guid.Instance);
|
||||
break;
|
||||
case "elementName":
|
||||
instance.elementName = reader.Read<string>(ES3Type_string.Instance);
|
||||
break;
|
||||
case "tags":
|
||||
instance.tags = reader.Read<List<string>>();
|
||||
break;
|
||||
case "elementGuid":
|
||||
instance.elementGuid = reader.Read<Guid>(ES3Type_Guid.Instance);
|
||||
break;
|
||||
case "trackSwitch":
|
||||
instance.trackSwitch = ReadFlexibleIntBM(reader);
|
||||
break;
|
||||
case "trackPercent":
|
||||
instance.trackPercent = ReadFlexibleFloatBM(reader);
|
||||
break;
|
||||
default:
|
||||
reader.Skip();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
instance.NormalizeFlexibleFields();
|
||||
}
|
||||
|
||||
protected override object ReadObject<T>(ES3Reader reader)
|
||||
{
|
||||
var instance = new CrossTrackPoint_BM();
|
||||
ReadObject<T>(reader, instance);
|
||||
return instance;
|
||||
}
|
||||
|
||||
private static FlexibleInt_BM ReadFlexibleIntBM(ES3Reader reader)
|
||||
{
|
||||
return EnsureFlexibleIntBM(reader.Read<FlexibleInt_BM>() ?? new FlexibleInt_BM());
|
||||
}
|
||||
|
||||
private static FlexibleFloat_BM ReadFlexibleFloatBM(ES3Reader reader)
|
||||
{
|
||||
return EnsureFlexibleFloatBM(reader.Read<FlexibleFloat_BM>() ?? new FlexibleFloat_BM());
|
||||
}
|
||||
|
||||
private static FlexibleInt_BM EnsureFlexibleIntBM(FlexibleInt_BM value)
|
||||
{
|
||||
value.animatedIntList ??= new List<AnimatedInt>();
|
||||
return value;
|
||||
}
|
||||
|
||||
private static FlexibleFloat_BM EnsureFlexibleFloatBM(FlexibleFloat_BM value)
|
||||
{
|
||||
value.animatedFloatList ??= new List<AnimatedFloat>();
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
public class ES3Type_CrossTrackPoint_BMArray : ES3ArrayType
|
||||
{
|
||||
public static ES3Type Instance;
|
||||
|
||||
public ES3Type_CrossTrackPoint_BMArray() : base(typeof(CrossTrackPoint_BM[]), ES3Type_CrossTrackPoint_BM.Instance)
|
||||
{
|
||||
Instance = this;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 89971996fb6f16743b057517ae4b87a7
|
||||
@@ -21,7 +21,7 @@ namespace Ichni.RhythmGame.Beatmap
|
||||
#if UNITY_STANDALONE
|
||||
return new FullScreenNearTimeJudgeUnit(attachedNote);
|
||||
#elif UNITY_ANDROID || UNITY_IOS
|
||||
if (SettingsManager.instance.gameSettings.judgeType)
|
||||
if (SettingsManager.instance.gameSettings.ShouldUseFullScreenJudge())
|
||||
{
|
||||
return new FullScreenNearTimeJudgeUnit(attachedNote);
|
||||
}
|
||||
@@ -29,6 +29,10 @@ namespace Ichni.RhythmGame.Beatmap
|
||||
{
|
||||
return new TouchAreaJudgeUnit(attachedNote, areaRadius);
|
||||
}
|
||||
#else
|
||||
return SettingsManager.instance.gameSettings.ShouldUseFullScreenJudge()
|
||||
? new FullScreenNearTimeJudgeUnit(attachedNote)
|
||||
: new TouchAreaJudgeUnit(attachedNote, areaRadius);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,29 +1,47 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Ichni.RhythmGame.Beatmap
|
||||
{
|
||||
public class CrossTrackPoint_BM : GameElement_BM
|
||||
{
|
||||
public FlexibleInt trackSwitch;
|
||||
public FlexibleFloat trackPercent;
|
||||
public FlexibleInt_BM trackSwitch;
|
||||
public FlexibleFloat_BM trackPercent;
|
||||
|
||||
public CrossTrackPoint_BM()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public CrossTrackPoint_BM(string elementName, Guid elementGuid, System.Collections.Generic.List<string> tags,
|
||||
GameElement_BM attachedElement, FlexibleInt trackSwitch, FlexibleFloat trackPercent)
|
||||
public CrossTrackPoint_BM(string elementName, Guid elementGuid, List<string> tags,
|
||||
GameElement_BM attachedElement, FlexibleInt_BM trackSwitch, FlexibleFloat_BM trackPercent)
|
||||
: base(elementName, elementGuid, tags, attachedElement)
|
||||
{
|
||||
this.trackSwitch = trackSwitch;
|
||||
this.trackPercent = trackPercent;
|
||||
}
|
||||
|
||||
public CrossTrackPoint_BM(string elementName, Guid elementGuid, List<string> tags,
|
||||
GameElement_BM attachedElement, FlexibleInt trackSwitch, FlexibleFloat trackPercent)
|
||||
: this(elementName, elementGuid, tags, attachedElement, trackSwitch?.ConvertToBM(), trackPercent?.ConvertToBM())
|
||||
{
|
||||
}
|
||||
|
||||
public override void ExecuteBM()
|
||||
{
|
||||
NormalizeFlexibleFields();
|
||||
matchedElement = CrossTrackPoint.GenerateElement(elementName, elementGuid, tags, false,
|
||||
GetElement(attachedElementGuid) as ElementFolder, trackSwitch, trackPercent);
|
||||
GetElement(attachedElementGuid) as ElementFolder,
|
||||
trackSwitch?.ConvertToGameType() ?? new FlexibleInt(),
|
||||
trackPercent?.ConvertToGameType() ?? new FlexibleFloat());
|
||||
}
|
||||
|
||||
internal void NormalizeFlexibleFields()
|
||||
{
|
||||
trackSwitch ??= new FlexibleInt_BM();
|
||||
trackSwitch.animatedIntList ??= new List<AnimatedInt>();
|
||||
|
||||
trackPercent ??= new FlexibleFloat_BM();
|
||||
trackPercent.animatedFloatList ??= new List<AnimatedFloat>();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -54,9 +54,9 @@ namespace Ichni.RhythmGame
|
||||
(colorB.returnType is FlexibleReturnType.MiddleExecuting || colorB.isSwitchingReturnType) ||
|
||||
(colorA.returnType is FlexibleReturnType.MiddleExecuting || colorA.isSwitchingReturnType))
|
||||
{
|
||||
if(!forceUpdate) animationReturnType = FlexibleReturnType.MiddleExecuting;
|
||||
if (!forceUpdate) animationReturnType = FlexibleReturnType.MiddleExecuting;
|
||||
Color color = new Color(colorR.value, colorG.value, colorB.value, colorA.value);
|
||||
((Track)animatedObject).trackRendererSubmodule.meshGenerator.color = color;
|
||||
((Track)animatedObject).trackRendererSubmodule.SetColor(color, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -71,13 +71,13 @@ namespace Ichni.RhythmGame
|
||||
foreach (var item in colorB.animations) item.ApplyTimeOffset(offset);
|
||||
foreach (var item in colorA.animations) item.ApplyTimeOffset(offset);
|
||||
}
|
||||
|
||||
|
||||
public override void Refresh()
|
||||
{
|
||||
base.Refresh();
|
||||
if (colorR.animations.Count == 0 && colorG.animations.Count == 0 && colorB.animations.Count == 0 && colorA.animations.Count == 0)
|
||||
{
|
||||
((Track)animatedObject).trackRendererSubmodule.meshGenerator.color = Color.white;
|
||||
((Track)animatedObject).trackRendererSubmodule.SetColor(Color.white, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -87,4 +87,4 @@ namespace Ichni.RhythmGame
|
||||
#endregion
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,6 +60,16 @@ namespace Ichni.RhythmGame
|
||||
animations = anim;
|
||||
}
|
||||
|
||||
public FlexibleFloat_BM ConvertToBM()
|
||||
{
|
||||
if (animations == null || animations.Count == 0)
|
||||
{
|
||||
return new FlexibleFloat_BM();
|
||||
}
|
||||
|
||||
return new FlexibleFloat_BM(new List<AnimatedFloat>(animations));
|
||||
}
|
||||
|
||||
public void Add(AnimatedFloat animatedFloat)
|
||||
{
|
||||
animations.Add(animatedFloat);
|
||||
|
||||
@@ -44,6 +44,16 @@ namespace Ichni.RhythmGame
|
||||
this.animations = anim;
|
||||
}
|
||||
|
||||
public FlexibleInt_BM ConvertToBM()
|
||||
{
|
||||
if (animations == null || animations.Count == 0)
|
||||
{
|
||||
return new FlexibleInt_BM();
|
||||
}
|
||||
|
||||
return new FlexibleInt_BM(new List<AnimatedInt>(animations));
|
||||
}
|
||||
|
||||
public void Add(AnimatedInt animatedInt)
|
||||
{
|
||||
animations.Add(animatedInt);
|
||||
|
||||
@@ -261,7 +261,7 @@ namespace Ichni.RhythmGame
|
||||
public override void UpdateNoteInStaticTrack(float songTime)
|
||||
{
|
||||
base.UpdateNoteInStaticTrack(songTime);
|
||||
if (noteVisual is INoteVisualHold noteVisualHold) noteVisualHold.UpdateHoldInStaticTrack();
|
||||
if (noteVisual is INoteVisualHold noteVisualHold) noteVisualHold.UpdateHoldInStaticTrack(songTime);
|
||||
}
|
||||
|
||||
public override void SetPerfectPosition()
|
||||
|
||||
@@ -17,7 +17,7 @@ namespace Ichni.RhythmGame
|
||||
|
||||
}
|
||||
|
||||
public virtual void UpdateHoldInStaticTrack()
|
||||
public virtual void UpdateHoldInStaticTrack(float songTime)
|
||||
{
|
||||
|
||||
}
|
||||
@@ -28,6 +28,6 @@ namespace Ichni.RhythmGame
|
||||
{
|
||||
public Hold hold { get; set; }
|
||||
public void UpdateHoldInMovableTrack();
|
||||
public void UpdateHoldInStaticTrack();
|
||||
public void UpdateHoldInStaticTrack(float songTime);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -68,6 +68,21 @@ namespace Ichni.RhythmGame
|
||||
SetUV();
|
||||
}
|
||||
|
||||
public void SetColor(Color color, bool forceImmediateRebuild = false)
|
||||
{
|
||||
if (meshGenerator == null) return;
|
||||
|
||||
if (meshGenerator.color != color)
|
||||
{
|
||||
meshGenerator.color = color;
|
||||
}
|
||||
|
||||
if (forceImmediateRebuild && track.trackTimeSubmodule is not TrackTimeSubmoduleMovable)
|
||||
{
|
||||
meshGenerator.RebuildImmediate();
|
||||
}
|
||||
}
|
||||
|
||||
protected void SetMesh()
|
||||
{
|
||||
if (track.trackTimeSubmodule is TrackTimeSubmoduleMovable trackTimeSubmoduleMovable)
|
||||
|
||||
@@ -20,26 +20,26 @@ namespace Ichni.Menu
|
||||
public Color themeColor;
|
||||
public Sprite avatar;
|
||||
public Switch chapterSwitch;
|
||||
|
||||
|
||||
[Searchable]
|
||||
public List<SongItemData> songs = new List<SongItemData>();
|
||||
|
||||
|
||||
[Button]
|
||||
public void SetUpDefaultDifficulties()
|
||||
{
|
||||
foreach (SongItemData song in songs)
|
||||
{
|
||||
if(song.difficultyDataList.All(d => d.difficultyName != "Easy"))
|
||||
if (song.difficultyDataList.All(d => d.difficultyName != "Easy"))
|
||||
{
|
||||
song.difficultyDataList.Add(new DifficultyData(
|
||||
0, "Easy","Easy", 0, "",
|
||||
0, "Easy", "Easy", 0, "",
|
||||
new Color(0f, 0.7f, 0.2f, 1f)));
|
||||
}
|
||||
|
||||
if (song.difficultyDataList.All(d => d.difficultyName != "Hard"))
|
||||
{
|
||||
song.difficultyDataList.Add(new DifficultyData(
|
||||
1,"Hard", "Hard", 0, "",
|
||||
1, "Hard", "Hard", 0, "",
|
||||
new Color(1f, 0.2f, 0.2f, 1f)));
|
||||
}
|
||||
}
|
||||
@@ -58,7 +58,7 @@ namespace Ichni.Menu
|
||||
{
|
||||
return (from song in songs where song.storyUnlockKey == key select song.songName).ToList();
|
||||
}
|
||||
|
||||
|
||||
public (int, int, int, int, int) GetChapterSaveInfo()
|
||||
{
|
||||
int beatmapCount = 0;
|
||||
@@ -66,7 +66,7 @@ namespace Ichni.Menu
|
||||
int finishedBeatmapCount = 0;
|
||||
int fullComboCount = 0;
|
||||
int allPerfectCount = 0;
|
||||
|
||||
|
||||
foreach (SongItemData song in songs)
|
||||
{
|
||||
if (GameSaveManager.instance.SongSaveModule.songStatusSaves.TryGetValue(song.songName, out var songStatus))
|
||||
@@ -79,65 +79,65 @@ namespace Ichni.Menu
|
||||
{
|
||||
thisSongFinished = true;
|
||||
finishedBeatmapCount++;
|
||||
|
||||
|
||||
if (beatmapSave.isFullCombo)
|
||||
{
|
||||
fullComboCount++;
|
||||
}
|
||||
|
||||
|
||||
if (beatmapSave.isAllPerfect)
|
||||
{
|
||||
allPerfectCount++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (thisSongFinished)
|
||||
{
|
||||
finishedSongCount++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return (beatmapCount, finishedSongCount, finishedBeatmapCount, fullComboCount, allPerfectCount);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
[InlineProperty]
|
||||
[Serializable]
|
||||
public class SongItemData
|
||||
{
|
||||
[FoldoutGroup("$songName", false)]
|
||||
public string songName;
|
||||
|
||||
|
||||
[FoldoutGroup("$songName")]
|
||||
public string displaySongName;
|
||||
|
||||
|
||||
[FoldoutGroup("$songName")]
|
||||
public string composer;
|
||||
|
||||
|
||||
[FoldoutGroup("$songName")]
|
||||
public Switch songSwitch;
|
||||
|
||||
|
||||
[FoldoutGroup("$songName")]
|
||||
public Sprite illustration;
|
||||
|
||||
|
||||
[FoldoutGroup("$songName")]
|
||||
public string illustratorName;
|
||||
|
||||
|
||||
[FoldoutGroup("$songName")]
|
||||
public string additionalInformation;
|
||||
|
||||
|
||||
[FoldoutGroup("$songName")]
|
||||
public List<DifficultyData> difficultyDataList;
|
||||
|
||||
[FoldoutGroup("$songName")]
|
||||
|
||||
[FoldoutGroup("$songName")]
|
||||
public string storyUnlockKey;
|
||||
|
||||
[FoldoutGroup("$songName")]
|
||||
[FoldoutGroup("$songName")]
|
||||
public string paymentUnlockKey;
|
||||
}
|
||||
|
||||
|
||||
[Serializable]
|
||||
public class DifficultyData
|
||||
{
|
||||
@@ -148,13 +148,13 @@ namespace Ichni.Menu
|
||||
public string charterName;
|
||||
public Color color;
|
||||
public bool isAvailable;
|
||||
|
||||
public bool ForceFullScreenJudge = false;
|
||||
public DifficultyData()
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
public DifficultyData(int difficultyIndex, string difficultyName, string displayDifficultyName, int difficultyValue, string charterName, Color color)
|
||||
|
||||
public DifficultyData(int difficultyIndex, string difficultyName, string displayDifficultyName, int difficultyValue, string charterName, Color color, bool ForceFullScreenJudge = false)
|
||||
{
|
||||
this.difficultyIndex = difficultyIndex;
|
||||
this.difficultyName = difficultyName;
|
||||
@@ -163,8 +163,9 @@ namespace Ichni.Menu
|
||||
this.difficultyValue = difficultyValue;
|
||||
this.color = color;
|
||||
this.isAvailable = true;
|
||||
this.ForceFullScreenJudge = ForceFullScreenJudge;
|
||||
}
|
||||
|
||||
|
||||
public string GetDifficultyName()
|
||||
{
|
||||
return string.IsNullOrEmpty(displayDifficultyName) ? difficultyName : displayDifficultyName;
|
||||
|
||||
@@ -26,6 +26,11 @@ namespace Ichni
|
||||
public bool judgeType = false;
|
||||
public bool autoPlay = false;
|
||||
|
||||
public bool ShouldUseFullScreenJudge()
|
||||
{
|
||||
return judgeType || InformationTransistor.instance?.difficulty?.ForceFullScreenJudge == true;
|
||||
}
|
||||
|
||||
public GameSettings()
|
||||
{
|
||||
|
||||
@@ -70,4 +75,4 @@ namespace Ichni
|
||||
I2.Loc.LocalizationManager.UpdateSources();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ namespace Ichni.Menu
|
||||
{
|
||||
public List<DifficultySelectionButton> buttons;
|
||||
public DifficultySelectionButton selectedButton;
|
||||
|
||||
|
||||
public void SetUp(List<DifficultyData> difficulties)
|
||||
{
|
||||
int difficultyCount = difficulties.Count;
|
||||
@@ -24,13 +24,13 @@ namespace Ichni.Menu
|
||||
}
|
||||
|
||||
SongSelectionRecord songSelectionRecord = MenuInformationRecorder.instance.GetRecordOfThisChapter();
|
||||
|
||||
|
||||
if (songSelectionRecord.difficultyIndex >= difficultyCount)
|
||||
{
|
||||
songSelectionRecord.difficultyIndex = difficultyCount - 1;
|
||||
}
|
||||
|
||||
buttons[songSelectionRecord.difficultyIndex].Select();
|
||||
|
||||
buttons[songSelectionRecord.difficultyIndex % buttons.Count].Select();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user