using Cryville.Common.ComponentModel;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.ComponentModel;

namespace Cryville.Crtr.Config {
	public class RulesetConfig {
		public Generic generic = new Generic();
		public class Generic {
			[Category("basic")]
			[JsonProperty("skin")]
			public string Skin { get; set; }

			[Category("gameplay")]
			[JsonProperty("sound_offset")]
			[Step(0.04)]
			[Precision(1e-3)]
			public float SoundOffset { get; set; }

			[Category("deprecated")][Obsolete]
			[JsonProperty("scroll_velocity")][DefaultValue(1)]
			[LogarithmicScale][Step(0.5)][Precision(1e-1)]
			public float ScrollVelocity { get; set; }

			public Generic() {
				Skin = "";
				SoundOffset = 0;
				ScrollVelocity = 1;
			}
		}
		public Dictionary<string, object> configs
			= new Dictionary<string, object>();
		public Dictionary<string, InputEntry> inputs
			= new Dictionary<string, InputEntry>();
		public class InputEntry {
			public string handler;
			public int type;
		}
	}
}
