1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
use bwapi_sys as sys; use string::BwString; use iterator::BwIterator; use unit::Unit; use from_raw::FromRaw; use color::Color; use std::os::raw::c_void as void; pub struct Player(*mut sys::Player); impl Player { pub fn name(&self) -> BwString { unsafe { let name = sys::Player_getName(self.0); BwString::from_raw(name as *mut void) } } pub fn units(&self) -> Box<Iterator<Item=Unit>> { unsafe { let iter = sys::Player_getUnits(self.0) as *mut sys::Iterator; Box::new(BwIterator::from(iter)) } } pub fn start_location(&self) -> sys::TilePosition { unsafe { sys::Player_getStartLocation(self.0) } } pub fn color(&self) -> Color { let color = unsafe { sys::Player_getColor(self.0) }; color.into() } } impl FromRaw for Player { unsafe fn from_raw(raw: *mut void) -> Player { assert!(!raw.is_null()); Player(raw as *mut sys::Player) } }