public void RecalculateTarget() { ZoomFrame = 3 - (int)LastZoom; if (Texture != null) { Texture.Dispose(); } if (DrawSkill) { Texture = new RenderTarget2D(GameFacade.GraphicsDevice, 160, 49); return; } if (Sprite != null) { SPRFrame bigFrame = (BGSprite != null) ? BGSprite.Frames[ZoomFrame] : Sprite.Frames[ZoomFrame]; Texture = new RenderTarget2D(GameFacade.GraphicsDevice, Math.Max(1, bigFrame.Width), Math.Max(1, bigFrame.Height)); } else if (Headline.Operand.Group == VMSetBalloonHeadlineOperandGroup.Algorithmic && LastZoom != WorldZoom.Far) { AlgTex = (Headline.IconTarget == null)?WhitePx:Headline.IconTarget.GetIcon(GameFacade.GraphicsDevice, (int)LastZoom - 1); Point bigFrame = (BGSprite != null) ? new Point(BGSprite.Frames[ZoomFrame].Width, BGSprite.Frames[ZoomFrame].Height) : new Point(AlgTex.Width, AlgTex.Height); Texture = new RenderTarget2D(GameFacade.GraphicsDevice, bigFrame.X, bigFrame.Y); } else { AlgTex = null; } Invalidated = true; }
private static ISpriteFrame[] ParseFrames(BinaryReader reader, int numFrames, bool isCompressed) { var frames = new SPRFrame[numFrames]; for (var i = 0; i < numFrames; i++) { var width = reader.ReadUInt16(); var height = reader.ReadUInt16(); var offsetX = reader.ReadUInt16(); var offsetY = reader.ReadUInt16(); frames[i] = new SPRFrame { FrameSize = new Size(width, height), Size = new Size(width, height), Offset = new float2(offsetX, offsetY), Data = new byte[width * height] }; } for (var i = 0; i < numFrames; i++) { if (!isCompressed) { frames[i].Data = reader.ReadBytes(frames[i].Size.Width * frames[i].Size.Height); } else { var compressedSize = reader.ReadUInt32(); var writeOffset = 0; for (var readOffset = 0; readOffset < compressedSize; readOffset++) { var compression = reader.ReadByte(); var isEmpty = (compression & 0b10000000) != 0; var numPixels = compression & 0b01111111; if (isEmpty) { writeOffset += 128 - numPixels; } else { numPixels += 1; readOffset += numPixels; for (var k = 0; k < numPixels; k++) { frames[i].Data[writeOffset++] = reader.ReadByte(); } } } } } return(frames); }
private string ExportSpriteFrame(SPRFrame frame) { var texture = frame.GetTexture(this.Gd); var temp = Path.GetTempFileName(); texture.Save(temp, ImageFileFormat.Png); var hash = FileUtils.ComputeMD5(temp); var filename = id + "_files/" + hash + ".png"; var newDest = Path.Combine(dir, filename); if (File.Exists(newDest)) { File.Delete(temp); } else { File.Move(temp, newDest); } return(filename); }
private string ExportSpriteFrame(SPRFrame frame) { var texture = frame.GetTexture(this.Gd); var temp = Path.GetTempFileName(); texture.SaveAsPng(new FileStream(temp, FileMode.OpenOrCreate), texture.Width, texture.Height); var hash = FileUtils.ComputeMD5(temp); var filename = id + "_files/" + hash + ".png"; var newDest = Path.Combine(dir, filename); if (File.Exists(newDest)) { File.Delete(temp); } else { File.Move(temp, newDest); } return(filename); }
public void AddSprite(SPR Sprite) { m_Sprite = Sprite; m_Frame = (SPRFrame)m_Sprite.GetFrame(0); //Floors only have 1 frame. }