equal
deleted
inserted
replaced
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] |