// Copyright (C) Oscar Shrimpton 2019 // This program is free software: you can redistribute it and/or modify it // under the terms of the GNU General Public License as published by the Free // Software Foundation, either version 3 of the License, or (at your option) // any later version. // This program is distributed in the hope that it will be useful, but WITHOUT // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for // more details. // You should have received a copy of the GNU General Public License along // with this program. If not, see . /// Convenience function for creating mappers for `World::new()`. #[macro_export] macro_rules! ent_map { ( $ ( $name:expr => $type:ident [ $( $key:expr => $target:ident ),* ] ),* ) => { { use stockton_bsp::lumps::entities::Entity as BSPEntity; use stockton_types::Entity; |ent: &BSPEntity| -> Box { $( if ent.attributes["classname"] == $name { return Box::new($type { $( $target : ent.attributes[$key].into() ),* }); } );* panic!("Unrecognised Entity type: {:?}", ent); } } } }