private void ShowWithSideData <T>(WithSideData <T> data, dataShower <T> shower) { GUILayout.Label(" Light:"); shower(data.Light); GUILayout.Label(" Conflict:"); shower(data.Conflict); }
private void LoadThemeDatas(SkinDatas skinData, CollectionDataSpec <ThemeSideDataSpec> spec) { skinData.ThemeDatas = new Dictionary <string, WithSideData <ThemeSideData> >(); WithSideData <ThemeSideData> internalDefaultThemeData = new WithSideData <ThemeSideData>(); internalDefaultThemeData.Light = new ThemeSideData(); internalDefaultThemeData.Conflict = new ThemeSideData(); internalDefaultThemeData.Light.Track = new Labelled <Sprite> { value = rawDefaultData.TrackLight, label = "<internal:light>" }; internalDefaultThemeData.Conflict.Track = new Labelled <Sprite> { value = rawDefaultData.TrackConflict, label = "<internal:conflict>" }; internalDefaultThemeData.Light.CriticalLine = new Labelled <Sprite> { value = rawDefaultData.CriticalLine, label = "<internal>" }; internalDefaultThemeData.Conflict.CriticalLine = new Labelled <Sprite> { value = rawDefaultData.CriticalLine, label = "<internal>" }; internalDefaultThemeData.Light.ComboTextColor = rawDefaultData.ComboTextColorLight; internalDefaultThemeData.Conflict.ComboTextColor = rawDefaultData.ComboTextColorConflict; internalDefaultThemeData.Light.ParticleNote = new Labelled <Texture2D> { value = rawDefaultData.ParticleNote, label = "<internal>" }; internalDefaultThemeData.Conflict.ParticleNote = new Labelled <Texture2D> { value = rawDefaultData.ParticleNote, label = "<internal>" }; internalDefaultThemeData.Light.ParticleArcStartColor = rawDefaultData.ParticleArcStartColor; internalDefaultThemeData.Conflict.ParticleArcStartColor = rawDefaultData.ParticleArcStartColor; internalDefaultThemeData.Light.ParticleArcEndColor = rawDefaultData.ParticleArcEndColor; internalDefaultThemeData.Conflict.ParticleArcEndColor = rawDefaultData.ParticleArcEndColor; LoadCollectionData <ThemeSideData, ThemeSideDataSpec>(internalDefaultThemeData, skinData.ThemeDatas, (name) => { skinData.DefaultThemeData = name; }, spec, LoadThemeSideData); }
private void LoadCollectionData <T, S>(WithSideData <T> internalDefault, Dictionary <string, WithSideData <T> > datas, NameSetter defaultNameSetter, CollectionDataSpec <S> spec, SideDataLoader <T, S> sideDataLoader) { string internalDefaultName = "\"Default\""; if (spec == null) { defaultNameSetter(internalDefaultName); datas.Add(internalDefaultName, internalDefault); return; } string defaultName = spec.defaultName ?? internalDefaultName; defaultNameSetter(defaultName); WithSideDataSpec <S> defaultSpec = new WithSideDataSpec <S>(); defaultSpec.name = defaultName; defaultSpec.light = spec.light; defaultSpec.conflict = spec.conflict; LoadWithSideData <T, S>(datas, defaultSpec, internalDefault, sideDataLoader); WithSideData <T> defaultData = datas[defaultName]; if (spec.additional != null) { foreach (WithSideDataSpec <S> additionalSpec in spec.additional) { LoadWithSideData <T, S>(datas, additionalSpec, defaultData, sideDataLoader); } } }
private void LoadNoteDatas(SkinDatas skinData, CollectionDataSpec <NoteSideDataSpec> spec) { skinData.NoteDatas = new Dictionary <string, WithSideData <NoteSideData> >(); WithSideData <NoteSideData> internalDefaultNoteData = new WithSideData <NoteSideData>(); internalDefaultNoteData.Light = new NoteSideData(); internalDefaultNoteData.Conflict = new NoteSideData(); internalDefaultNoteData.Light.TapNote = new Labelled <Sprite> { value = rawDefaultData.TapNoteLight, label = "<internal:light>" }; internalDefaultNoteData.Conflict.TapNote = new Labelled <Sprite> { value = rawDefaultData.TapNoteConflict, label = "<internal:conflict>" }; internalDefaultNoteData.Light.HoldNote = new Labelled <Sprite> { value = rawDefaultData.HoldNoteLight, label = "<internal:light>" }; internalDefaultNoteData.Conflict.HoldNote = new Labelled <Sprite> { value = rawDefaultData.HoldNoteConflict, label = "<internal:conflict>" }; internalDefaultNoteData.Light.HoldNoteHighlight = new Labelled <Sprite> { value = rawDefaultData.HoldNoteHighlightLight, label = "<internal:light>" }; internalDefaultNoteData.Conflict.HoldNoteHighlight = new Labelled <Sprite> { value = rawDefaultData.HoldNoteHighlightConflict, label = "<internal:conflict>" }; internalDefaultNoteData.Light.ArcTap = new Labelled <Texture2D> { value = rawDefaultData.ArcTapLight, label = "<internal:light>" }; internalDefaultNoteData.Conflict.ArcTap = new Labelled <Texture2D> { value = rawDefaultData.ArcTapConflict, label = "<internal:conflict>" }; internalDefaultNoteData.Light.ConnectionLineColor = rawDefaultData.ConnectionLineColorLight; internalDefaultNoteData.Conflict.ConnectionLineColor = rawDefaultData.ConnectionLineColorConflict; internalDefaultNoteData.Light.ArcRedLow = rawDefaultData.ArcRedLow; internalDefaultNoteData.Conflict.ArcRedLow = rawDefaultData.ArcRedLow; internalDefaultNoteData.Light.ArcBlueLow = rawDefaultData.ArcBlueLow; internalDefaultNoteData.Conflict.ArcBlueLow = rawDefaultData.ArcBlueLow; internalDefaultNoteData.Light.ArcGreenLow = rawDefaultData.ArcGreenLow; internalDefaultNoteData.Conflict.ArcGreenLow = rawDefaultData.ArcGreenLow; internalDefaultNoteData.Light.ArcRedHigh = rawDefaultData.ArcRedHigh; internalDefaultNoteData.Conflict.ArcRedHigh = rawDefaultData.ArcRedHigh; internalDefaultNoteData.Light.ArcBlueHigh = rawDefaultData.ArcBlueHigh; internalDefaultNoteData.Conflict.ArcBlueHigh = rawDefaultData.ArcBlueHigh; internalDefaultNoteData.Light.ArcGreenHigh = rawDefaultData.ArcGreenHigh; internalDefaultNoteData.Conflict.ArcGreenHigh = rawDefaultData.ArcGreenHigh; internalDefaultNoteData.Light.ArcVoid = rawDefaultData.ArcVoid; internalDefaultNoteData.Conflict.ArcVoid = rawDefaultData.ArcVoid; LoadCollectionData <NoteSideData, NoteSideDataSpec>(internalDefaultNoteData, skinData.NoteDatas, (name) => { skinData.DefaultNoteData = name; }, spec, LoadNoteSideData); }
private void LoadWithSideData <T, S>(Dictionary <string, WithSideData <T> > datas, WithSideDataSpec <S> spec, WithSideData <T> fallback, SideDataLoader <T, S> sideDataLoader) { if (spec == null) { return; } if (spec.name == null) { Debug.LogWarning($"WithSideDataSpec without a name will be ignored. spec:\n{JsonConvert.SerializeObject(spec)}"); return; } if (datas.ContainsKey(spec.name)) { Debug.LogWarning($"WithSideDataSpec with a duplicated name will be ignored. spec:\n{JsonConvert.SerializeObject(spec)}"); return; } WithSideData <T> sideData = new WithSideData <T>(); sideData.Light = sideDataLoader(spec.light, fallback.Light); sideData.Conflict = sideDataLoader(spec.conflict, fallback.Conflict); datas.Add(spec.name, sideData); }