///|
/// Flag 的通用观察视图。
pub struct Flag {
priv raw : @raw.JsFlag
priv relation : Relation
}
///|
/// 从 raw flag 构造高层视图。通常下游无需直接调用。
pub fn Flag::create(raw : @raw.JsFlag) -> Flag {
Flag::{ raw, relation: relation_of_my_flag(raw.my().to_option()) }
}
///|
/// 返回底层 raw flag 句柄。通常下游无需直接调用。
pub fn Flag::to_raw(self : Flag) -> @raw.JsFlag {
self.raw
}
///|
/// 将 flag 转成通用 `GameObject` 视图。
pub fn Flag::as_game_object(self : Flag) -> GameObject {
GameObject::create(self.raw.to_game_object())
}
///|
/// 返回 flag 的敌我关系。
pub fn Flag::relation(self : Flag) -> Relation {
self.relation
}
///|
/// 返回该 flag 是否属于己方。
pub fn Flag::is_my(self : Flag) -> Bool {
self.relation == Mine
}
///|
/// 返回该 flag 是否属于敌方。
pub fn Flag::is_enemy(self : Flag) -> Bool {
self.relation == Enemy
}
///|
/// 返回 flag 的唯一 id。
pub fn Flag::id(self : Flag) -> String {
self.as_game_object().id()
}
///|
/// 返回 flag 当前的 x 坐标。
pub fn Flag::x(self : Flag) -> Int {
self.as_game_object().x()
}
///|
/// 返回 flag 当前的 y 坐标。
pub fn Flag::y(self : Flag) -> Int {
self.as_game_object().y()
}
///|
/// 返回 flag 当前是否仍存在于场上。
pub fn Flag::exists(self : Flag) -> Bool {
self.as_game_object().exists()
}