implements PLN-0107

This commit is contained in:
bQUARKz 2026-06-15 06:01:49 +01:00
parent 5381ae02b1
commit f45b3a38cb
Signed by: bquarkz
SSH Key Fingerprint: SHA256:Z7dgqoglWwoK6j6u4QC87OveEq74WOhFN+gitsxtkf8

View File

@ -1350,8 +1350,9 @@ fn input_touch_x(
ctx: &mut HostContext<'_>, ctx: &mut HostContext<'_>,
) -> Result<Vec<Value>, IntrinsicExecutionError> { ) -> Result<Vec<Value>, IntrinsicExecutionError> {
expect_touch_handle(args, "x")?; expect_touch_handle(args, "x")?;
let hw = ctx.require_hw().map_err(|_| IntrinsicExecutionError::HardwareUnavailable)?; let platform =
Ok(vec![Value::Int64(hw.touch().x() as i64)]) ctx.require_platform().map_err(|_| IntrinsicExecutionError::HardwareUnavailable)?;
Ok(vec![Value::Int64(platform.input().touch().x() as i64)])
} }
fn input_touch_y( fn input_touch_y(
@ -1359,8 +1360,9 @@ fn input_touch_y(
ctx: &mut HostContext<'_>, ctx: &mut HostContext<'_>,
) -> Result<Vec<Value>, IntrinsicExecutionError> { ) -> Result<Vec<Value>, IntrinsicExecutionError> {
expect_touch_handle(args, "y")?; expect_touch_handle(args, "y")?;
let hw = ctx.require_hw().map_err(|_| IntrinsicExecutionError::HardwareUnavailable)?; let platform =
Ok(vec![Value::Int64(hw.touch().y() as i64)]) ctx.require_platform().map_err(|_| IntrinsicExecutionError::HardwareUnavailable)?;
Ok(vec![Value::Int64(platform.input().touch().y() as i64)])
} }
fn input_button_pressed( fn input_button_pressed(
@ -1435,9 +1437,11 @@ fn resolve_button(
ctx: &mut HostContext<'_>, ctx: &mut HostContext<'_>,
) -> Result<prometeu_hal::button::Button, IntrinsicExecutionError> { ) -> Result<prometeu_hal::button::Button, IntrinsicExecutionError> {
let carrier = expect_builtin_carrier(args, 0)?; let carrier = expect_builtin_carrier(args, 0)?;
let hw = ctx.require_hw().map_err(|_| IntrinsicExecutionError::HardwareUnavailable)?; let platform =
ctx.require_platform().map_err(|_| IntrinsicExecutionError::HardwareUnavailable)?;
let input = platform.input();
if carrier == TOUCH_BUTTON_CARRIER { if carrier == TOUCH_BUTTON_CARRIER {
return Ok(*hw.touch().f()); return Ok(*input.touch().f());
} }
let Some(index) = carrier.checked_sub(PAD_BUTTON_BASE) else { let Some(index) = carrier.checked_sub(PAD_BUTTON_BASE) else {
@ -1448,18 +1452,18 @@ fn resolve_button(
}); });
}; };
let button = match index { let button = match index {
0 => *hw.pad().up(), 0 => *input.pad().up(),
1 => *hw.pad().down(), 1 => *input.pad().down(),
2 => *hw.pad().left(), 2 => *input.pad().left(),
3 => *hw.pad().right(), 3 => *input.pad().right(),
4 => *hw.pad().a(), 4 => *input.pad().a(),
5 => *hw.pad().b(), 5 => *input.pad().b(),
6 => *hw.pad().x(), 6 => *input.pad().x(),
7 => *hw.pad().y(), 7 => *input.pad().y(),
8 => *hw.pad().l(), 8 => *input.pad().l(),
9 => *hw.pad().r(), 9 => *input.pad().r(),
10 => *hw.pad().start(), 10 => *input.pad().start(),
11 => *hw.pad().select(), 11 => *input.pad().select(),
_ => { _ => {
return Err(IntrinsicExecutionError::InvalidBuiltinCarrier { return Err(IntrinsicExecutionError::InvalidBuiltinCarrier {
owner: "input.button", owner: "input.button",