public MirImage CreateImage(int index, ImageType type) { if (!CheckImage(index)) { return(null); } MirImage image = Images[index]; Texture texture; switch (type) { case ImageType.Image: if (!image.ImageValid) { image.CreateImage(_BReader); } texture = image.Image; break; case ImageType.Shadow: if (!image.ShadowValid) { image.CreateShadow(_BReader); } texture = image.Shadow; break; case ImageType.Overlay: if (!image.OverlayValid) { image.CreateOverlay(_BReader); } texture = image.Overlay; break; default: return(null); } if (texture == null) { return(null); } return(image); }
public void Draw(int index, float x, float y, Color4 colour, bool useOffSet, float opacity, ImageType type) { if (!CheckImage(index)) { return; } MirImage image = Images[index]; Texture texture; float oldOpacity = DXManager.Opacity; switch (type) { case ImageType.Image: if (!image.ImageValid) { image.CreateImage(_BReader); } texture = image.Image; if (useOffSet) { x += image.OffSetX; y += image.OffSetY; } break; case ImageType.Shadow: if (!image.ShadowValid) { image.CreateShadow(_BReader); } texture = image.Shadow; if (useOffSet) { x += image.ShadowOffSetX; y += image.ShadowOffSetY; } if (texture == null) { if (!image.ImageValid) { image.CreateImage(_BReader); } texture = image.Image; switch (image.ShadowType) { case 177: case 176: case 49: Matrix m = Matrix.Scaling(1F, 0.5f, 0); m.M21 = -0.50F; DXManager.Sprite.Transform = m * Matrix.Translation(x + image.Height / 2, y, 0); DXManager.Device.SetSamplerState(0, SamplerState.MinFilter, TextureFilter.None); if (oldOpacity != 0.5F) { DXManager.SetOpacity(0.5F); } DXManager.Sprite.Draw(texture, Vector3.Zero, Vector3.Zero, Color.Black); CEnvir.DPSCounter++; DXManager.SetOpacity(oldOpacity); DXManager.Sprite.Transform = Matrix.Identity; DXManager.Device.SetSamplerState(0, SamplerState.MinFilter, TextureFilter.Point); image.ExpireTime = Time.Now + Config.CacheDuration; break; case 50: if (oldOpacity != 0.5F) { DXManager.SetOpacity(0.5F); } DXManager.Sprite.Draw(texture, Vector3.Zero, new Vector3(x, y, 0), Color.Black); CEnvir.DPSCounter++; DXManager.SetOpacity(oldOpacity); image.ExpireTime = Time.Now + Config.CacheDuration; break; } return; } break; case ImageType.Overlay: if (!image.OverlayValid) { image.CreateOverlay(_BReader); } texture = image.Overlay; if (useOffSet) { x += image.OffSetX; y += image.OffSetY; } break; default: return; } if (texture == null) { return; } DXManager.SetOpacity(opacity); DXManager.Sprite.Draw(texture, Vector3.Zero, new Vector3(x, y, 0), colour); CEnvir.DPSCounter++; DXManager.SetOpacity(oldOpacity); image.ExpireTime = Time.Now + Config.CacheDuration; }