コード例 #1
0
ファイル: D2ResourceRenderer.cs プロジェクト: CastleJing/d2
 void UpdateRenderedSpriteInner(CPos cell)
 {
     if (RenderContent.Contains(cell))
     {
         UpdateRenderedSpriteInner(cell, RenderContent[cell]);
     }
 }
コード例 #2
0
ファイル: D2ResourceRenderer.cs プロジェクト: CastleJing/d2
        bool CellContainsMaxDensity(CPos c, ResourceType t)
        {
            if (!RenderContent.Contains(c))
            {
                return(false);
            }

            if (FindClearSides(t, c) != ClearSides.None)
            {
                return(false);
            }

            var tile = RenderContent[c];

            return(tile.Density > tile.Type.Info.MaxDensity / 2);
        }
コード例 #3
0
        void UpdateRenderedTileInner(CPos p)
        {
            if (!RenderContent.Contains(p))
            {
                return;
            }

            var t = RenderContent[p];

            if (t.Density > 0)
            {
                var clear = FindClearSides(t.Type, p);
                int index;

                if (clear == ClearSides.None && CellContainsMaxDensity(p, t.Type))
                {
                    var maxDensityClear = FindMaxDensityClearSides(t.Type, p);
                    if (SpriteMap.TryGetValue(maxDensityClear, out index))
                    {
                        t.Sprite = t.Type.Variants.First().Value[16 + index];
                    }

                    else
                    {
                        t.Sprite = null;                         //ресурс закончился. ничего не рендерим
                    }
                }
                else if (SpriteMap.TryGetValue(clear, out index))
                {
                    t.Sprite = t.Type.Variants.First().Value[index];
                }

                else
                {
                    t.Sprite = null;                      //ресурс закончился. ничего не рендерим
                }
            }
            else
            {
                t.Sprite = null;                  //ресурс закончился. ничего не рендерим
            }
            int temp = RenderContent.Index(p);

            RenderContent.entries[temp].Sprite = t.Sprite;
        }
コード例 #4
0
ファイル: D2ResourceLayer.cs プロジェクト: azure-hu/d2
        void UpdateRenderedTileInner(CPos p)
        {
            if (!RenderContent.Contains(p))
            {
                return;
            }

            var t = RenderContent[p];

            if (t.Density > 0)
            {
                var clear = FindClearSides(t.Type, p);
                int index;

                if (clear == ClearSides.None && CellContainsMaxDensity(p, t.Type))
                {
                    var maxDensityClear = FindMaxDensityClearSides(t.Type, p);
                    if (SpriteMap.TryGetValue(maxDensityClear, out index))
                    {
                        t.Sprite = t.Type.Variants.First().Value[16 + index];
                    }
                    else
                    {
                        t.Sprite = null;
                    }
                }
                else if (SpriteMap.TryGetValue(clear, out index))
                {
                    t.Sprite = t.Type.Variants.First().Value[index];
                }
                else
                {
                    t.Sprite = null;
                }
            }
            else
            {
                t.Sprite = null;
            }

            RenderContent[p] = t;
        }
コード例 #5
0
        void UpdateRenderedTileInner(CPos p)
        {
            if (!RenderContent.Contains(p))
            {
                return;
            }

            var t = RenderContent[p];

            if (t.Density > 0)
            {
                var clear = FindClearSides(t.Type, p);
                int index;

                if (clear == ClearSides.None)
                {
                    var sprites = Variants[t.Variant];
                    var frame   = t.Density > t.Type.Info.MaxDensity / 2 ? 1 : 0;
                    t.Sprite = t.Type.Variants.First().Value[sprites[frame]];
                }
                else if (SpriteMap.TryGetValue(clear, out index))
                {
                    t.Sprite = t.Type.Variants.First().Value[index];
                }
                else
                {
                    t.Sprite = null;
                }
            }
            else
            {
                t.Sprite = null;
            }

            RenderContent[p] = t;
        }
コード例 #6
0
 bool CellContains(CPos c, ResourceType t)
 {
     return(RenderContent.Contains(c) && RenderContent[c].Type == t);
 }