/// <summary> /// 是否处于目标屏范围内 /// </summary> /// <param name="target">目标精灵</param> /// <returns></returns> public bool InSight(SpriteBase target) { bool result = true; switch (target.SpaceLayer) { case SpaceLayers.Ground: switch (this.SpaceLayer) { case SpaceLayers.Ground: result = Math.Abs(this.Position.X - target.Position.X) > Application.Current.Host.Content.ActualWidth || Math.Abs(this.Position.Y - target.Position.Y) > Application.Current.Host.Content.ActualHeight ? false : true; break; case SpaceLayers.Sky: result = false; break; } break; case SpaceLayers.Sky: switch (this.SpaceLayer) { case SpaceLayers.Ground: result = Math.Abs(this.Position.X - target.Position.X) > Application.Current.Host.Content.ActualWidth || Math.Abs(this.Position.Y - target.Position.Y) > Application.Current.Host.Content.ActualHeight ? false : true; break; case SpaceLayers.Sky: result = Math.Abs(this.Position.X - target.Position.X) > Application.Current.Host.Content.ActualWidth * 2 || Math.Abs(this.Position.Y - target.Position.Y) > Application.Current.Host.Content.ActualHeight * 2 ? false : true; break; } break; } return result; }
/// <summary> /// 设置影子是否可见 /// </summary> /// <param name="sprite">精灵</param> public void SetShadowVisibleTo(SpriteBase sprite) { EntityObject shadow = shadowList.SingleOrDefault(X => X.ID == sprite.ID); if (shadow != null) { shadow.IsVisible = sprite.IsVisible; } }
/// <summary> /// 设置影子缩放 /// </summary> /// <param name="sprite"></param> public void SetShadowScale(SpriteBase sprite, double value) { EntityObject shadow = shadowList.SingleOrDefault(X => X.ID == sprite.ID); if (shadow != null) { shadow.RenderTransform = new ScaleTransform() { CenterX = shadow.Center.X, CenterY = shadow.Center.Y, ScaleX = value, ScaleY = value }; } }
/// <summary> /// 设置影子位置 /// </summary> /// <param name="sprite">精灵</param> public void SetShadowPositionTo(SpriteBase sprite) { if (sprite.IsVisible && ShadowType != ShadowTypes.None) { //if (sprite is AnimationBase) { MessageBox.Show(sprite.ID.ToString()); } EntityObject shadow = shadowList.SingleOrDefault(X => X.ID == sprite.ID); if (shadow != null) { shadow.Position = sprite.Position; } } }
/// <summary> /// 设置精灵是否可见 /// </summary> /// <param name="sprite"></param> /// <param name="visible"></param> public void SetSpriteVisible(SpriteBase sprite, bool visible) { sprite.IsVisible = visible; if (ShadowType != ShadowTypes.None) { SetShadowVisibleTo(sprite); SetShadowPositionTo(sprite); } }