Skip to main content

gizmo_scripting/
api_vehicle.rs

1//! Vehicle API — Lua'ya sunulan araç kontrol fonksiyonları
2//!
3//! Lua scriptlerinden VehicleController bileşenine gaz, fren ve direksiyon komutları yolları sağlar.
4
5use crate::commands::{CommandQueue, ScriptCommand};
6use mlua::prelude::*;
7use std::sync::Arc;
8
9/// Vehicle API fonksiyonlarını Lua'ya kaydeder
10pub fn register_vehicle_api(lua: &Lua, command_queue: Arc<CommandQueue>) -> Result<(), LuaError> {
11    let vehicle_table = lua.create_table()?;
12
13    // === ENGINE FORCE (GAZ) ===
14    {
15        let cq = command_queue.clone();
16        vehicle_table.set(
17            "set_engine_force",
18            lua.create_function(move |_, (id, force): (u32, f32)| {
19                cq.push(ScriptCommand::SetVehicleEngineForce(id, force));
20                Ok(())
21            })?,
22        )?;
23    }
24
25    // === STEERING (DİREKSİYON) ===
26    {
27        let cq = command_queue.clone();
28        vehicle_table.set(
29            "set_steering",
30            lua.create_function(move |_, (id, angle): (u32, f32)| {
31                cq.push(ScriptCommand::SetVehicleSteering(id, angle));
32                Ok(())
33            })?,
34        )?;
35    }
36
37    // === BRAKE (FREN) ===
38    {
39        let cq = command_queue.clone();
40        vehicle_table.set(
41            "set_brake",
42            lua.create_function(move |_, (id, force): (u32, f32)| {
43                cq.push(ScriptCommand::SetVehicleBrake(id, force));
44                Ok(())
45            })?,
46        )?;
47    }
48
49    lua.globals().set("vehicle", vehicle_table)?;
50
51    Ok(())
52}