use super::integer::Time;

#[binrw::binrw]
#[brw(little)]
pub enum EncodedMouseDelta{
	//X did not move Y has 1 byte, time has 2 bytes
	X0Y1T2{
		y:i8,
		t:u16,
	},
	X1Y1T2
}
///TODO: delta delta encoding lol

#[binrw::binrw]
#[brw(little)]
pub struct MouseState{
	pub pos:[i32;2],
	pub time:Time,
}

impl Into<strafesnet_common::mouse::MouseState> for MouseState{
	fn into(self)->strafesnet_common::mouse::MouseState{
		strafesnet_common::mouse::MouseState{
			pos:self.pos.into(),
			time:strafesnet_common::integer::Time::raw(self.time),
		}
	}
}
impl From<strafesnet_common::mouse::MouseState> for MouseState{
	fn from(value:strafesnet_common::mouse::MouseState)->Self{
		Self{
			pos:value.pos.to_array(),
			time:value.time.get(),
		}
	}
}