Esempio n. 1
0
        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));
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
                }
            }
        }
Esempio n. 4
0
        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>();
        }
Esempio n. 5
0
 public void Update(CPos cell, ISpriteSequence sequence, PaletteReference palette, int frame)
 {
     Update(cell, sequence.GetSprite(frame), palette, sequence.Scale, sequence.GetAlpha(frame), sequence.IgnoreWorldTint);
 }
Esempio n. 6
0
 public void Update(CPos cell, ISpriteSequence sequence, int frame)
 {
     Update(cell, sequence.GetSprite(frame), sequence.IgnoreWorldTint);
 }
Esempio n. 7
0
        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;
        }