コード例 #1
0
        internal static Texture2D GetBuildingTextureWithPaint(Building building, AlternativeTextureModel textureModel, int textureVariation, bool canBePaintedOverride = false)
        {
            var xOffset = building.tilesWide * 16;
            var yOffset = textureModel.GetTextureOffset(textureVariation);

            var textureWidth = building.CanBePainted() || canBePaintedOverride ? xOffset : textureModel.TextureWidth;

            var texture2D = textureModel.GetTexture(textureVariation).CreateSelectiveCopy(Game1.graphics.GraphicsDevice, new Rectangle(0, yOffset, textureWidth, textureModel.TextureHeight));

            if (building.paintedTexture != null)
            {
                building.paintedTexture = null;
            }

            if ((building.CanBePainted() || canBePaintedOverride) && xOffset * 2 <= textureModel.GetTexture(textureVariation).Width)
            {
                var paintedTexture2D = textureModel.GetTexture(textureVariation).CreateSelectiveCopy(Game1.graphics.GraphicsDevice, new Rectangle(xOffset, yOffset, xOffset, textureModel.TextureHeight));
                building.paintedTexture = GetPaintedOverlay(building, texture2D, paintedTexture2D, building.netBuildingPaintColor.Value);
                if (building.paintedTexture != null)
                {
                    texture2D = building.paintedTexture;
                }
            }

            return(texture2D);
        }
コード例 #2
0
        private static void SetTexture(Monster monster, AlternativeTextureModel textureModel)
        {
            if (textureModel is null)
            {
                monster.Sprite.loadedTexture = String.Empty;
                return;
            }

            var textureVariation = Int32.Parse(monster.modData["AlternativeTextureVariation"]);

            if (textureVariation == -1 || AlternativeTextures.modConfig.IsTextureVariationDisabled(textureModel.GetId(), textureVariation))
            {
                monster.Sprite.loadedTexture = String.Empty;
                return;
            }
            var textureOffset = textureModel.GetTextureOffset(textureVariation);

            monster.Sprite.spriteTexture = textureModel.GetTexture(textureVariation);
            monster.Sprite.sourceRect.Y  = textureOffset + (monster.Sprite.currentFrame * monster.Sprite.SpriteWidth / monster.Sprite.Texture.Width * monster.Sprite.SpriteHeight);
        }