예제 #1
0
 public static bool drawInMenu_Prefix(GreenhouseBuilding __instance)
 {
     try
     {
         __instance.texture = new Lazy <Texture2D>(delegate
         {
             Texture2D texture2D = Game1.content.Load <Texture2D>("Buildings\\Greenhouse");
             if (__instance.paintedTexture != null)
             {
                 __instance.paintedTexture.Dispose();
                 __instance.paintedTexture = null;
             }
             __instance.paintedTexture = BuildingPainter.Apply(texture2D, "Buildings\\Greenhouse" + "_PaintMask", __instance.netBuildingPaintColor.Value);
             if (__instance.paintedTexture != null)
             {
                 texture2D = __instance.paintedTexture;
             }
             return(texture2D);
         });
     }
     catch (Exception ex)
     {
         Monitor.Log($"Failed in {nameof(drawInMenu_Prefix)}:\n{ex}", LogLevel.Error);
     }
     return(true);
 }
예제 #2
0
        private void PaintBlueprint(Blueprint blueprint)
        {
            buildingTabPage.Controls.Clear();
            BitmapPainter blueprintPainter = new BuildingPainter(blueprint, iconToolTip);
            Image         paintedBlueprint = ((blueprintPainter as BuildingPainter).Paint());

            buildingTabPage.Controls.Add(new PictureBox()
            {
                Image     = paintedBlueprint,
                Size      = paintedBlueprint.Size,
                BackColor = System.Drawing.Color.DimGray
            });

            electricTabPage.Controls.Clear();
            blueprintPainter = new ElectricalPainter(blueprint, iconToolTip, paintedBlueprint);
            Image electricOverlay = (blueprintPainter as ElectricalPainter).Paint();

            electricTabPage.Controls.Add(
                new PictureBox()
            {
                Image     = electricOverlay,
                Size      = paintedBlueprint.Size,
                BackColor = System.Drawing.Color.DimGray
            });

            liquidTabPage.Controls.Clear();
            blueprintPainter = new LiquidPainter(blueprint, iconToolTip, paintedBlueprint);
            Image liquidOverlay = (blueprintPainter as LiquidPainter).Paint();

            liquidTabPage.Controls.Add(
                new PictureBox()
            {
                Image     = liquidOverlay,
                Size      = paintedBlueprint.Size,
                BackColor = System.Drawing.Color.DimGray
            });

            gasTabPage.Controls.Clear();
            blueprintPainter = new GasPainter(blueprint, iconToolTip, paintedBlueprint);
            Image gasOverlay = (blueprintPainter as GasPainter).Paint();

            gasTabPage.Controls.Add(
                new PictureBox()
            {
                Image     = gasOverlay,
                Size      = paintedBlueprint.Size,
                BackColor = System.Drawing.Color.DimGray
            });
        }
예제 #3
0
        private static void ApplyHousePaintPostfix(Farm __instance)
        {
            if (__instance.modData.ContainsKey("AlternativeTextureName"))
            {
                var buildingType = $"Farmhouse_{Game1.MasterPlayer.HouseUpgradeLevel}";
                if (!__instance.modData["AlternativeTextureName"].Contains(buildingType))
                {
                    var instanceSeasonName = $"{AlternativeTextureModel.TextureType.Building}_{buildingType}_{Game1.currentSeason}";
                    AssignDefaultModData(__instance, instanceSeasonName, true);

                    if (__instance.paintedHouseTexture != null)
                    {
                        __instance.paintedHouseTexture.Dispose();
                        __instance.paintedHouseTexture = BuildingPainter.Apply(Farm.houseTextures, "Buildings\\houses_PaintMask", __instance.housePaintColor);
                    }
                }

                var textureModel = AlternativeTextures.textureManager.GetSpecificTextureModel(__instance.modData["AlternativeTextureName"]);
                if (textureModel is null)
                {
                    return;
                }

                var textureVariation = Int32.Parse(__instance.modData["AlternativeTextureVariation"]);
                if (textureVariation == -1 || AlternativeTextures.modConfig.IsTextureVariationDisabled(textureModel.GetId(), textureVariation))
                {
                    return;
                }

                if (__instance.paintedHouseTexture != null)
                {
                    __instance.paintedHouseTexture.Dispose();
                    __instance.paintedHouseTexture = null;
                }

                var targetedBuilding = new Building();
                targetedBuilding.buildingType.Value    = buildingType;
                targetedBuilding.netBuildingPaintColor = __instance.housePaintColor;
                targetedBuilding.tileX.Value           = __instance.GetHouseRect().X;
                targetedBuilding.tileY.Value           = __instance.GetHouseRect().Y;
                targetedBuilding.tilesWide.Value       = __instance.GetHouseRect().Width + 1;
                targetedBuilding.tilesHigh.Value       = __instance.GetHouseRect().Height + 1;

                __instance.paintedHouseTexture = BuildingPatch.GetBuildingTextureWithPaint(targetedBuilding, textureModel, textureVariation, true);
            }
        }