rust/lib-hedgewars-engine/src/lib.rs
changeset 15891 d52f5d8e75e6
parent 15775 95402fa4e191
child 15893 5b3beb90e1a6
equal deleted inserted replaced
15890:8a6a2d931bae 15891:d52f5d8e75e6
     3 mod render;
     3 mod render;
     4 mod time;
     4 mod time;
     5 mod world;
     5 mod world;
     6 
     6 
     7 use std::{
     7 use std::{
     8     ffi::CString,
     8     ffi::{CString, CStr},
     9     io::{Read, Write},
     9     io::{Read, Write},
    10     mem::replace,
    10     mem::replace,
    11     os::raw::{c_char, c_void},
    11     os::raw::{c_char, c_void},
       
    12     path::Path,
    12 };
    13 };
    13 
    14 
    14 use integral_geometry::Point;
    15 use integral_geometry::Point;
    15 
    16 
    16 use self::instance::EngineInstance;
    17 use self::instance::EngineInstance;
    85 pub extern "C" fn hedgewars_engine_protocol_version() -> u32 {
    86 pub extern "C" fn hedgewars_engine_protocol_version() -> u32 {
    86     58
    87     58
    87 }
    88 }
    88 
    89 
    89 #[no_mangle]
    90 #[no_mangle]
    90 pub extern "C" fn start_engine() -> *mut EngineInstance {
    91 pub extern "C" fn start_engine(data_path: *const i8) -> *mut EngineInstance {
    91     let engine_state = Box::new(EngineInstance::new());
    92     let data_path: &str = unsafe { CStr::from_ptr(data_path) }.to_str().unwrap();
       
    93 
       
    94     let engine_state = Box::new(EngineInstance::new(Path::new(&data_path)));
    92 
    95 
    93     Box::leak(engine_state)
    96     Box::leak(engine_state)
    94 }
    97 }
    95 
    98 
    96 #[no_mangle]
    99 #[no_mangle]