IEnumerable <IRenderable> IResourceRenderer.RenderUIPreview(WorldRenderer wr, string resourceType, int2 origin, float scale) { if (resourceType != info.ResourceType) { yield break; } var sprite = veinSequence.GetSprite(HeavyIndices.First()); var palette = wr.Palette(info.Palette); yield return(new UISpriteRenderable(sprite, WPos.Zero, origin, 0, palette, scale)); }
static IEnumerable <IFinalizedRenderable> DrawZap(WorldRenderer wr, float2 from, float2 to, ISpriteSequence s, out float2 p, string palette) { var dist = to - from; var q = new float2(-dist.Y, dist.X); var c = -float2.Dot(from, q); var rs = new List <IFinalizedRenderable>(); var z = from; var pal = wr.Palette(palette); while ((to - z).X > 5 || (to - z).X < -5 || (to - z).Y > 5 || (to - z).Y < -5) { var step = steps.Where(t => (to - (z + new float2(t[0], t[1]))).LengthSquared < (to - z).LengthSquared) .MinBy(t => Math.Abs(float2.Dot(z + new float2(t[0], t[1]), q) + c)); var pos = wr.Position((z + new float2(step[2], step[3])).ToInt2()); rs.Add(new SpriteRenderable(s.GetSprite(step[4]), pos, WVec.Zero, 0, pal, 1f, true).PrepareRender(wr)); z += new float2(step[0], step[1]); if (rs.Count >= 1000) { break; } } p = z; return(rs); }
void IWorldLoaded.WorldLoaded(World w, WorldRenderer wr) { // Cache locations of veinhole actors // TODO: Add support for monitoring actors placed in the map editor! w.ActorAdded += ActorAddedToWorld; w.ActorRemoved += ActorRemovedFromWorld; foreach (var a in w.Actors) { ActorAddedToWorld(a); } veinSequence = w.Map.Rules.Sequences.GetSequence(info.Image, info.Sequence); veinPalette = wr.Palette(info.Palette); var first = veinSequence.GetSprite(0); var emptySprite = new Sprite(first.Sheet, Rectangle.Empty, TextureChannel.Alpha); spriteLayer = new TerrainSpriteLayer(w, wr, emptySprite, first.BlendMode, wr.World.Type != WorldType.Editor); // Initialize the renderIndices with the initial map state so it is visible // through the fog with the Explored Map option enabled foreach (var cell in w.Map.AllCells) { var resource = resourceLayer.GetResource(cell); var cellIndices = CalculateCellIndices(resource, cell); if (cellIndices != null) { renderIndices[cell] = cellIndices; UpdateRenderedSprite(cell, cellIndices); } } }
public CashWidget(World world, WorldRenderer worldRenderer) { sp = world.Map.Rules.Sequences; dsp = (ISpriteSequence)sp.GetSequence("cashnums", "nums"); numsprites = new Sprite[10]; numsprites[0] = dsp.GetSprite(0); numsprites[1] = dsp.GetSprite(1); numsprites[2] = dsp.GetSprite(2); numsprites[3] = dsp.GetSprite(3); numsprites[4] = dsp.GetSprite(4); numsprites[5] = dsp.GetSprite(5); numsprites[6] = dsp.GetSprite(6); numsprites[7] = dsp.GetSprite(7); numsprites[8] = dsp.GetSprite(8); numsprites[9] = dsp.GetSprite(9); pr = worldRenderer.Palette("d2"); player = world.LocalPlayer; playerResources = player.PlayerActor.Trait <PlayerResources>(); }
public void Update(CPos cell, ISpriteSequence sequence, PaletteReference palette, int frame) { Update(cell, sequence.GetSprite(frame), palette, sequence.Scale, sequence.GetAlpha(frame), sequence.IgnoreWorldTint); }
public void Update(CPos cell, ISpriteSequence sequence, int frame) { Update(cell, sequence.GetSprite(frame), sequence.IgnoreWorldTint); }
static IEnumerable<IFinalizedRenderable> DrawZap(WorldRenderer wr, float2 from, float2 to, ISpriteSequence s, out float2 p, string palette) { var dist = to - from; var q = new float2(-dist.Y, dist.X); var c = -float2.Dot(from, q); var rs = new List<IFinalizedRenderable>(); var z = from; var pal = wr.Palette(palette); while ((to - z).X > 5 || (to - z).X < -5 || (to - z).Y > 5 || (to - z).Y < -5) { var step = steps.Where(t => (to - (z + new float2(t[0], t[1]))).LengthSquared < (to - z).LengthSquared) .MinBy(t => Math.Abs(float2.Dot(z + new float2(t[0], t[1]), q) + c)); var pos = wr.Position((z + new float2(step[2], step[3])).ToInt2()); rs.Add(new SpriteRenderable(s.GetSprite(step[4]), pos, WVec.Zero, 0, pal, 1f, true).PrepareRender(wr)); z += new float2(step[0], step[1]); if (rs.Count >= 1000) break; } p = z; return rs; }