///|
/// 将 body part 列表转换为 raw 层需要的原始字符串数组。
fn body_to_raw(body : Array[BodyPartKind]) -> Array[String] {
body.map(part => part.to_raw())
}
///|
/// 让己方 spawn 开始孵化一个指定 body 的 creep。
pub fn MySpawn::spawn_creep(
self : MySpawn,
body : Array[BodyPartKind],
) -> SpawnResult {
let result = self.to_raw().spawn_creep_raw(body_to_raw(body))
match result.object().to_option() {
Some(creep) => Spawned(MyCreep::create(creep))
None =>
match result.error().to_option() {
Some(code) => SpawnFailed(spawn_failure_of(code))
None => SpawnFailed(SpawnUnknownRawError(-9999))
}
}
}