diff --git a/Cargo.toml b/Cargo.toml index e5e960d..5128077 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,4 +18,5 @@ glutin-winit = "0.3.0" image = "0.25.1" raw-window-handle = "0.6.1" ron = "0.8.1" +serde = { version = "1.0.199", features = ["derive"] } winit = "0.28.7" diff --git a/src/config.rs b/src/config.rs new file mode 100644 index 0000000..70aab49 --- /dev/null +++ b/src/config.rs @@ -0,0 +1,169 @@ +/// Configs Module +/// +/// + +use serde::{Deserialize, Serialize}; +use ron; + +#[derive(Deserialize, Serialize)] +pub struct Configs +{ + +} + + +#[derive(Deserialize, Serialize)] +pub struct DisplayConfigs +{ + // TODO set Resolutions + //Resolution: + // i think thats it tbqh +} + + +#[derive(Deserialize, Serialize)] +pub struct InputConfigs +{ + +} + + + +#[derive(Deserialize, Serialize)] +pub struct KeyboardConfig +{ + // directionals + Up: u32, + Down: u32, + Right: u32, + Left: u32, + + // the punches + LightPunch: u32, + MediumPunch: u32, + HeavyPunch: u32, + + // the kicks + LightKick: u32, + MediumKick: u32, + HeavyKick: u32, + + // Macros + PunchMacro: u32, + KickMacro: u32 +} + +impl Default for KeyboardConfig +{ + fn default() -> Self + { + KeyboardConfig { + Up: ScanCodes::W, + Down: ScanCodes::S, + Right: ScanCodes::D, + Left: ScanCodes::A, + LightPunch: ScanCodes::U, + MediumPunch: ScanCodes::I, + HeavyPunch: ScanCodes::O, + LightKick: ScanCodes::H, + MediumKick: ScanCodes::J, + HeavyKick: ScanCodes::K, + PunchMacro: ScanCodes::P, + KickMacro: ScanCodes::L + } + + } +} + +/// these ones are written after this +/// https://www.win.tue.nl/~aeb/linux/kbd/scancodes-1.html +/// TODO finish this +/// UNTESTED AND UNFINISHED +#[repr(u32)] +pub enum ScanCodes +{ + Escape = 0x01, + Key1 = 0x02, + Key2 = 0x03, + Key3 = 0x04, + Key4 = 0x05, + Key5 = 0x06, + Key6 = 0x07, + Key7 = 0x08, + Key8 = 0x09, + Key9 = 0x0a, + Key0 = 0x0b, + Minus = 0x0c, + Equal = 0x0d, + BackSpace = 0x0e, + Tab = 0x0f, + Q = 0x10, + W = 0x11, + E = 0x12, + R = 0x13, + T = 0x14, + Y = 0x15, + U = 0x16, + I = 0x17, + O = 0x18, + P = 0x19, + OpenBracket = 0x1a, + CloseBrack = 0x1b, + Enter = 0x1c, + LCtrl = 0x1d, + A = 0x1e, + S = 0x1f, + D = 0x20, + F = 0x21, + G = 0x22, + H = 0x23, + J = 0x24, + K = 0x25, + L = 0x26, + SemiColon = 0x27, + Quote = 0x28, + Tilde = 0x29, + LShift = 0x2a, + Pipe = 0x2b, + Z = 0x2c, + X = 0x2d, + C = 0x2e, + V = 0x2f, + B = 0x30, + N = 0x31, + M = 0x32, + // TODO figure out what these are called lmao + // "<" and ">" + LeftTri = 0x33, + RightTri = 0x34, + QMark = 0x35, + RShift = 0x36, + KeyPad = 0x37, + LAlt = 0x38, + Space = 0x39, + Caps = 0x3a, + // NOTE Skip the Function Keys, + // Delusional + // will have to do logic later to just ignore the call for that lmao + Numlock = 0x45, + ScrollLock = 0x46, + KeyPad7 = 0x47, + KeyPad8 = 0x48, + KeyPad9 = 0x49, + KeyPadMinus = 0x4a, + KeyPad4 = 0x4b, + KeyPad5 = 0x4c, + KeyPad6 = 0x4d, + KeyPadPlus = 0x4e, + KeyPad1 = 0x4f, + KeyPad2 = 0x50, + KeyPad3 = 0x51, + KeyPad0 = 0x52, + KeyPadDot = 0x53, + // NOTE don't bother with the ones after this, these are super important + // (for some degenerates) + UpArrow = 0x67, + LeftArrow = 0x69, + RightArrow = 0x6a, + DownArrow = 0x6c +}