Exemple #1
0
        public override string GetDisplayName(SubsystemTerrain subsystemTerrain, int value)
        {
            var item = GetItem(ref value);

            return(item != null
                                ? SubsystemPalette.GetName(subsystemTerrain, GetPaintColor(value), item.GetDisplayName(subsystemTerrain, value))
                                : base.GetDisplayName(subsystemTerrain, value));
        }
        public override string GetDisplayName(SubsystemTerrain subsystemTerrain, int value)
        {
            int          data          = Terrain.ExtractData(value);
            ClothingData clothingData  = GetClothingData(data);
            int          clothingColor = GetClothingColor(data);
            string       displayName   = LanguageControl.GetBlock(string.Format("{0}:{1}", GetType().Name, data), "DisplayName");

            if (string.IsNullOrEmpty(displayName))
            {
                displayName = clothingData.DisplayName;
            }
            if (clothingColor != 0)
            {
                return(SubsystemPalette.GetName(subsystemTerrain, clothingColor, displayName));
            }
            return(displayName);
        }
        public override IEnumerable <CraftingRecipe> GetProceduralCraftingRecipes()
        {
            string[] additives = new string[4]
            {
                BlocksManager.Blocks[43].CraftingId,
                BlocksManager.Blocks[24].CraftingId,
                BlocksManager.Blocks[103].CraftingId,
                BlocksManager.Blocks[22].CraftingId
            };
            int color = 0;

            while (color < 16)
            {
                int num2;
                for (int additive = 0; additive < 4; additive = num2)
                {
                    int num = CombineColors(color, 1 << additive);
                    if (num != color)
                    {
                        CraftingRecipe craftingRecipe = new CraftingRecipe
                        {
                            Description       = $"ÖÆ×÷ {SubsystemPalette.GetName(null, num, null)} ÑÕÁÏ",
                            ResultValue       = Terrain.MakeBlockValue(129, 0, num),
                            ResultCount       = 1,
                            RequiredHeatLevel = 1f
                        };
                        craftingRecipe.Ingredients[0] = BlocksManager.Blocks[129].CraftingId + ":" + color.ToString(CultureInfo.InvariantCulture);
                        craftingRecipe.Ingredients[1] = additives[additive];
                        yield return(craftingRecipe);
                    }
                    num2 = additive + 1;
                }
                num2  = color + 1;
                color = num2;
            }
        }
        public override CraftingRecipe GetAdHocCraftingRecipe(SubsystemTerrain terrain, string[] ingredients, float heatLevel, float playerLevel)
        {
            if (heatLevel < 1f)
            {
                return(null);
            }
            List <string> list = ingredients.Where((string i) => !string.IsNullOrEmpty(i)).ToList();

            if (list.Count == 2)
            {
                int num  = 0;
                int num2 = 0;
                int num3 = 0;
                foreach (string item in list)
                {
                    CraftingRecipesManager.DecodeIngredient(item, out string craftingId, out int?data);
                    if (craftingId == BlocksManager.Blocks[203].CraftingId)
                    {
                        num3 = Terrain.MakeBlockValue(203, 0, data.HasValue ? data.Value : 0);
                    }
                    else if (craftingId == BlocksManager.Blocks[129].CraftingId)
                    {
                        num = Terrain.MakeBlockValue(129, 0, data.HasValue ? data.Value : 0);
                    }
                    else if (craftingId == BlocksManager.Blocks[128].CraftingId)
                    {
                        num2 = Terrain.MakeBlockValue(128, 0, data.HasValue ? data.Value : 0);
                    }
                }
                if (num != 0 && num3 != 0)
                {
                    int   data2         = Terrain.ExtractData(num3);
                    int   clothingColor = GetClothingColor(data2);
                    int   clothingIndex = GetClothingIndex(data2);
                    bool  canBeDyed     = GetClothingData(data2).CanBeDyed;
                    int   damage        = BlocksManager.Blocks[203].GetDamage(num3);
                    int   color         = PaintBucketBlock.GetColor(Terrain.ExtractData(num));
                    int   damage2       = BlocksManager.Blocks[129].GetDamage(num);
                    Block block         = BlocksManager.Blocks[129];
                    Block block2        = BlocksManager.Blocks[203];
                    if (!canBeDyed)
                    {
                        return(null);
                    }
                    int num4 = PaintBucketBlock.CombineColors(clothingColor, color);
                    if (num4 != clothingColor)
                    {
                        return(new CraftingRecipe
                        {
                            ResultCount = 1,
                            ResultValue = block2.SetDamage(Terrain.MakeBlockValue(203, 0, SetClothingIndex(SetClothingColor(0, num4), clothingIndex)), damage),
                            RemainsCount = 1,
                            RemainsValue = BlocksManager.DamageItem(Terrain.MakeBlockValue(129, 0, color), damage2 + MathUtils.Max(block.Durability / 4, 1)),
                            RequiredHeatLevel = 1f,
                            Description = $"{LanguageControl.Get("BlocksManager", "Dyed")} {SubsystemPalette.GetName(terrain, color, null)}",
                            Ingredients = (string[])ingredients.Clone()
                        });
                    }
                }
                if (num2 != 0 && num3 != 0)
                {
                    int   data3          = Terrain.ExtractData(num3);
                    int   clothingColor2 = GetClothingColor(data3);
                    int   clothingIndex2 = GetClothingIndex(data3);
                    bool  canBeDyed2     = GetClothingData(data3).CanBeDyed;
                    int   damage3        = BlocksManager.Blocks[203].GetDamage(num3);
                    int   damage4        = BlocksManager.Blocks[128].GetDamage(num2);
                    Block block3         = BlocksManager.Blocks[128];
                    Block block4         = BlocksManager.Blocks[203];
                    if (!canBeDyed2)
                    {
                        return(null);
                    }
                    if (clothingColor2 != 0)
                    {
                        return(new CraftingRecipe
                        {
                            ResultCount = 1,
                            ResultValue = block4.SetDamage(Terrain.MakeBlockValue(203, 0, SetClothingIndex(SetClothingColor(0, 0), clothingIndex2)), damage3),
                            RemainsCount = 1,
                            RemainsValue = BlocksManager.DamageItem(Terrain.MakeBlockValue(128, 0, 0), damage4 + MathUtils.Max(block3.Durability / 4, 1)),
                            RequiredHeatLevel = 1f,
                            Description = LanguageControl.Get("BlocksManager", "Not Dyed") + " " + LanguageControl.Get("BlocksManager", "Clothes"),
                            Ingredients = (string[])ingredients.Clone()
                        });
                    }
                }
            }
            return(null);
        }
        public override CraftingRecipe GetAdHocCraftingRecipe(SubsystemTerrain subsystemTerrain, string[] ingredients, float heatLevel, float playerLevel)
        {
            if (heatLevel < 1f)
            {
                return(null);
            }
            List <string> list = ingredients.Where((string i) => !string.IsNullOrEmpty(i)).ToList();

            if (list.Count == 2)
            {
                int num  = 0;
                int num2 = 0;
                int num3 = 0;
                foreach (string item in list)
                {
                    CraftingRecipesManager.DecodeIngredient(item, out string craftingId, out int?data);
                    if (craftingId == BlocksManager.Blocks[208].CraftingId)
                    {
                        num3 = Terrain.MakeBlockValue(208, 0, data.HasValue ? data.Value : 0);
                    }
                    else if (craftingId == BlocksManager.Blocks[129].CraftingId)
                    {
                        num = Terrain.MakeBlockValue(129, 0, data.HasValue ? data.Value : 0);
                    }
                    else if (craftingId == BlocksManager.Blocks[128].CraftingId)
                    {
                        num2 = Terrain.MakeBlockValue(128, 0, data.HasValue ? data.Value : 0);
                    }
                }
                if (num != 0 && num3 != 0)
                {
                    int   num4   = Terrain.ExtractData(num3);
                    int   color  = PaintBucketBlock.GetColor(Terrain.ExtractData(num));
                    int   damage = BlocksManager.Blocks[129].GetDamage(num);
                    Block block  = BlocksManager.Blocks[129];
                    int   num5   = PaintBucketBlock.CombineColors(num4, color);
                    if (num5 != num4)
                    {
                        return(new CraftingRecipe
                        {
                            ResultCount = 1,
                            ResultValue = Terrain.MakeBlockValue(208, 0, num5),
                            RemainsCount = 1,
                            RemainsValue = BlocksManager.DamageItem(Terrain.MakeBlockValue(129, 0, color), damage + MathUtils.Max(block.Durability / 4, 1)),
                            RequiredHeatLevel = 1f,
                            Description = $"Dye carpet {SubsystemPalette.GetName(subsystemTerrain, color, null)}",
                            Ingredients = (string[])ingredients.Clone()
                        });
                    }
                }
                if (num2 != 0 && num3 != 0)
                {
                    int   num6    = Terrain.ExtractData(num3);
                    int   damage2 = BlocksManager.Blocks[128].GetDamage(num2);
                    Block block2  = BlocksManager.Blocks[128];
                    if (num6 != 0)
                    {
                        return(new CraftingRecipe
                        {
                            ResultCount = 1,
                            ResultValue = Terrain.MakeBlockValue(208, 0, 0),
                            RemainsCount = 1,
                            RemainsValue = BlocksManager.DamageItem(Terrain.MakeBlockValue(128, 0, 0), damage2 + MathUtils.Max(block2.Durability / 4, 1)),
                            RequiredHeatLevel = 1f,
                            Description = "Undye carpet",
                            Ingredients = (string[])ingredients.Clone()
                        });
                    }
                }
            }
            return(null);
        }
        public override string GetDisplayName(SubsystemTerrain subsystemTerrain, int value)
        {
            int value2 = Terrain.ExtractData(value);

            return(SubsystemPalette.GetName(subsystemTerrain, value2, "µØ̺"));
        }
Exemple #7
0
 public override string GetDisplayName(SubsystemTerrain subsystemTerrain, int value)
 {
     return(SubsystemPalette.GetName(subsystemTerrain, Utils.GetColor(value), DefaultDisplayName));
 }
Exemple #8
0
        public static CraftingRecipe GetAdHocCraftingRecipe(int index, SubsystemTerrain subsystemTerrain, string[] ingredients, float heatLevel)
        {
            if (heatLevel < 1f)
            {
                return(null);
            }
            int i = 0, num = 0;
            var array = new string[2];

            for (; i < ingredients.Length; i++)
            {
                if (!string.IsNullOrEmpty(ingredients[i]))
                {
                    if (num > 1)
                    {
                        return(null);
                    }
                    array[num] = ingredients[i];
                    num++;
                }
            }
            if (num != 2)
            {
                return(null);
            }
            num = 0;
            int num2 = 0;
            int num3 = 0;

            for (i = 0; i < array.Length; i++)
            {
                string item = array[i];
                CraftingRecipesManager.DecodeIngredient(item, out string craftingId, out int?data);
                int d = data ?? 0;
                if (craftingId == BlocksManager.Blocks[index].CraftingId)
                {
                    num3 = Terrain.MakeBlockValue(index, 0, d);
                }
                else if (craftingId == BlocksManager.Blocks[129].CraftingId)
                {
                    num = Terrain.MakeBlockValue(129, 0, d);
                }
                else if (craftingId == BlocksManager.Blocks[128].CraftingId)
                {
                    num2 = Terrain.MakeBlockValue(128, 0, d);
                }
            }
            if (num != 0 && num3 != 0)
            {
                int num4  = GetColor(Terrain.ExtractData(num3));
                int color = PaintBucketBlock.GetColor(Terrain.ExtractData(num));
                int num5  = PaintBucketBlock.CombineColors(num4, color);
                if (num5 != num4)
                {
                    return(new CraftingRecipe
                    {
                        ResultCount = 1,
                        ResultValue = Terrain.MakeBlockValue(index, 0, SetColor(Terrain.ExtractData(num3), num5)),
                        RemainsCount = 1,
                        RemainsValue = BlocksManager.DamageItem(Terrain.MakeBlockValue(129, 0, color), BlocksManager.Blocks[129].GetDamage(num) + 1),
                        RequiredHeatLevel = 1f,
                        Description = "Dye tool " + SubsystemPalette.GetName(subsystemTerrain, color, null),
                        Ingredients = (string[])ingredients.Clone()
                    });
                }
            }
            if (num2 != 0 && num3 != 0)
            {
                if (GetColor(num3) != 0)
                {
                    return(new CraftingRecipe
                    {
                        ResultCount = 1,
                        ResultValue = Terrain.MakeBlockValue(index, 0, SetColor(Terrain.ExtractData(num3), 0)),
                        RemainsCount = 1,
                        RemainsValue = BlocksManager.DamageItem(128, BlocksManager.Blocks[128].GetDamage(num2) + 1),
                        RequiredHeatLevel = 1f,
                        Description = "Undye tool",
                        Ingredients = (string[])ingredients.Clone()
                    });
                }
            }
            return(null);
        }
Exemple #9
0
        public override string GetDisplayName(SubsystemTerrain subsystemTerrain, int value)
        {
            int?color = GetColor(Terrain.ExtractData(value));

            return(SubsystemPalette.GetName(subsystemTerrain, color, base.GetDisplayName(subsystemTerrain, value)));
        }
 public override string GetDisplayName(SubsystemTerrain subsystemTerrain, int value)
 {
     return(SubsystemPalette.GetName(subsystemTerrain, GetPaintColor(value), Terrain.ExtractData(value) >> 10 != 0 ? Names[(Terrain.ExtractData(value) >> 10) - 1] : DefaultDisplayName));
 }
        public override string GetDisplayName(SubsystemTerrain subsystemTerrain, int value)
        {
            int data = Terrain.ExtractData(value);

            return(SubsystemPalette.GetName(subsystemTerrain, GetColor(data), LanguageControl.GetBlock(string.Format("{0}:{1}", GetType().Name, data.ToString()), "DisplayName")));
        }
Exemple #12
0
        public override string GetDisplayName(SubsystemTerrain subsystemTerrain, int value)
        {
            int?paintColor = GetPaintColor(value);

            return(SubsystemPalette.GetName(subsystemTerrain, paintColor, base.GetDisplayName(subsystemTerrain, value)));
        }
Exemple #13
0
        public override string GetDisplayName(SubsystemTerrain subsystemTerrain, int value)
        {
            int index = Terrain.ExtractData(value) >> 13 & 15;

            return(SubsystemPalette.GetName(subsystemTerrain, index == 0 ? default(int?) : index, GetType(value).ToString()));
        }
Exemple #14
0
        public override string GetDisplayName(SubsystemTerrain subsystemTerrain, int value)
        {
            int?color = GetColor(Terrain.ExtractData(value));

            return(SubsystemPalette.GetName(subsystemTerrain, color, LanguageControl.Get(fName, 1)));
        }