Exemplo n.º 1
0
 public void AddRecipe(RecipeMode mode, List <CommandEntry> determiner, int adj, params ItemStack[] input)
 {
     Recipes.Add(new ItemRecipe()
     {
         Mode = mode, Determinant = new CommandScript("recipe_" + Recipes.Count, determiner, adj), Input = input, TheServer = TheServer, Index = Recipes.Count
     });
 }
Exemplo n.º 2
0
        protected override void FillTab()
        {
            if (modeButtonLabel == null)
            {
                modeButtonLabel      = "BillsTab_MaterialButton_label".Translate();
                modeButtonComponents = "BillsTab_MaterialButton_component_mode".Translate();
                modeButtonSteel      = "BillsTab_MaterialButton_steel_mode".Translate();
                modeButtonTooltip    = "BillsTab_MaterialButton_tooltip".Translate();
            }

            var canvasRect = new Rect(0f, 0f, WinSize.x, WinSize.y).ContractedBy(10f);

            var buttonRect = new Rect(canvasRect.x + 160f, canvasRect.y, 170f, 29f);

            TooltipHandler.TipRegion(buttonRect, modeButtonTooltip);
            if (Widgets.ButtonText(buttonRect, String.Format(modeButtonLabel, currentRecipeMode == RecipeMode.Components ? modeButtonComponents : modeButtonSteel)))
            {
                currentRecipeMode = currentRecipeMode == RecipeMode.Components ? RecipeMode.Steel : RecipeMode.Components;
            }

            Func <List <FloatMenuOption> > recipeOptionsMaker = delegate {
                var list = new List <FloatMenuOption>();
                for (int i = 0; i < SelTable.def.AllRecipes.Count; i++)
                {
                    var recipe = SelTable.def.AllRecipes[i];
                    if (currentRecipeMode == RecipeMode.Components && IsInjectedSteelRecipe(recipe) || currentRecipeMode == RecipeMode.Steel && !IsInjectedSteelRecipe(recipe))
                    {
                        continue;
                    }

                    var    locked      = recipe.researchPrerequisite != null && !recipe.AvailableNow;
                    string researchTip = "";
                    if (locked)
                    {
                        researchTip = "BillsTab_ResearchRequired".Translate(recipe.researchPrerequisite.label);
                    }
                    var option = new FloatMenuOptionWithTooltip(recipe.LabelCap, delegate {
                        var map = Find.VisibleMap;
                        if (map == null || !map.mapPawns.FreeColonists.Any(recipe.PawnSatisfiesSkillRequirements))
                        {
                            Bill.CreateNoPawnsWithSkillDialog(recipe);
                        }
                        var bill = recipe.MakeNewBill();
                        SelTable.billStack.AddBill(bill);
                    }, researchTip);
                    option.Disabled = locked;
                    list.Add(option);
                }
                if (list.Count == 0)
                {
                    list.Add(new FloatMenuOption("(no recipes)", null));
                }
                return(list);
            };

            mouseoverBill = SelTable.billStack.DoListing(canvasRect, recipeOptionsMaker, ref scrollPosition, ref viewHeight);
        }
Exemplo n.º 3
0
        public static RecipeMode ModeFor(ListTag modeinput)
        {
            if (modeinput.Internal.Count == 1 && modeinput.Internal[0].ToString().ToLowerFast() == "strict")
            {
                return(RecipeMode.BOUND | RecipeMode.COLOR | RecipeMode.DATUM | RecipeMode.DESCRIPTION | RecipeMode.DISPLAY | RecipeMode.LOCAL
                       | RecipeMode.MODEL | RecipeMode.SECONDARY | RecipeMode.SHARED | RecipeMode.TEXTURE | RecipeMode.TYPE | RecipeMode.WEIGHT | RecipeMode.VOLUME);
            }
            RecipeMode mode = 0;

            foreach (TemplateObject obj in modeinput.Internal)
            {
                if (Enum.TryParse(obj.ToString().ToUpperInvariant(), out RecipeMode adder))
                {
                    mode |= adder;
                }
            }
            return(mode);
        }
Exemplo n.º 4
0
        private void SwitchToMode(RecipeMode selectRecipeMode)
        {
            switch (selectRecipeMode)
            {
            case RecipeMode.View:
            {
                this.IsViewMode   = true;
                this.IsEditMode   = false;
                this.IsInsertMode = false;
                this.IsUpdateMode = false;
                break;
            }

            case RecipeMode.Edit:
            {
                this.IsEditMode = true;
                this.IsViewMode = false;
                break;
            }

            case RecipeMode.Insert:
            {
                this.IsViewMode   = false;
                this.IsEditMode   = true;
                this.IsInsertMode = true;
                this.IsUpdateMode = false;
                break;
            }

            case RecipeMode.Update:
            {
                this.IsViewMode   = false;
                this.IsEditMode   = true;
                this.IsInsertMode = false;
                this.IsUpdateMode = true;
                break;
            }
            }
        }
Exemplo n.º 5
0
        public RecipeViewModel(long recipeID, RecipeMode selectRecipeMode)
        {
            this.Hours = new int[]
            {
                0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
            };
            this.Minutes = new int[]
            {
                0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55
            };
            this.ServesArray = new int[]
            {
                1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
            };

            this.RecommendationArray = new string[]
            {
                "Да", "Не"
            };

            switch (selectRecipeMode)
            {
            case RecipeMode.View:
            {
                this.RecipeID = recipeID;
                this.Name     = this.Recipe.Title;

                this.SwitchToMode(RecipeMode.View);

                this.RecipeCategory  = this.Recipe.Categories.ToList()[0];
                this.OldImageName    = this.Recipe.ImageURL;
                this.OldImageVersion = this.Recipe.ImageVersion;

                break;
            }

            case RecipeMode.Edit:
            {
                this.RecipeID = recipeID;
                this.Name     = this.Recipe.Title;
                this.SwitchToMode(RecipeMode.Edit);

                this.RecipeCategory = this.Recipe.Categories.ToList()[0];

                break;
            }

            case RecipeMode.Insert:
            {
                this.SwitchToMode(RecipeMode.Insert);

                this.recipe          = new Recipe();
                this.NewImageName    = "null_image.png";
                this.Recipe.ImageURL = this.RecipesImagesFolderPath + "null_image.png";
                this.Recipe.RecipeItems.Add(new RecipeItem());

                foreach (var item in this.Recipe.RecipeItems)
                {
                    item.RecipeItems_Ingredients.Add(new RecipeItems_Ingredients());
                    item.Steps.Add(new Step());
                }
                break;
            }
            }
        }
Exemplo n.º 6
0
 public bool HasRequirement(RecipeMode mode, ItemStack requirement, ItemStack[] input, out int used)
 {
     for (int i = 0; i < input.Length; i++)
     {
         if (input[i] == null)
         {
             continue;
         }
         bool thisone = true;
         if (input[i].Count < requirement.Count)
         {
             thisone = false;
         }
         else if (mode.HasFlag(RecipeMode.TYPE) && requirement.Name != input[i].Name)
         {
             thisone = false;
         }
         else if (mode.HasFlag(RecipeMode.SECONDARY) && requirement.SecondaryName != input[i].SecondaryName)
         {
             thisone = false;
         }
         else if (mode.HasFlag(RecipeMode.TEXTURE) && requirement.GetTextureName() != input[i].GetTextureName())
         {
             thisone = false;
         }
         else if (mode.HasFlag(RecipeMode.MODEL) && requirement.GetModelName() != input[i].GetModelName())
         {
             thisone = false;
         }
         else if (mode.HasFlag(RecipeMode.MODEL) && requirement.GetModelName() != input[i].GetModelName())
         {
             thisone = false;
         }
         else if (mode.HasFlag(RecipeMode.SHARED) && !Inventory.ItemSharedAttrsMatch(requirement, input[i]))
         {
             thisone = false;
         }
         else if (mode.HasFlag(RecipeMode.LOCAL) && !Inventory.ItemAttrsMatch(requirement, input[i]))
         {
             thisone = false;
         }
         else if (mode.HasFlag(RecipeMode.DISPLAY) && requirement.DisplayName != input[i].DisplayName)
         {
             thisone = false;
         }
         else if (mode.HasFlag(RecipeMode.DESCRIPTION) && requirement.Description != input[i].Description)
         {
             thisone = false;
         }
         else if (mode.HasFlag(RecipeMode.COLOR) && requirement.DrawColor.A != input[i].DrawColor.A && requirement.DrawColor.R != input[i].DrawColor.R &&
                  requirement.DrawColor.G != input[i].DrawColor.G && requirement.DrawColor.B != input[i].DrawColor.B)
         {
             thisone = false;
         }
         else if (mode.HasFlag(RecipeMode.DATUM) && requirement.Datum != input[i].Datum)
         {
             thisone = false;
         }
         else if (mode.HasFlag(RecipeMode.BOUND) && requirement.IsBound != input[i].IsBound)
         {
             thisone = false;
         }
         else if (mode.HasFlag(RecipeMode.WEIGHT) && requirement.Weight != input[i].Weight)
         {
             thisone = false;
         }
         else if (mode.HasFlag(RecipeMode.VOLUME) && requirement.Volume != input[i].Volume)
         {
             thisone = false;
         }
         else if (thisone)
         {
             used = i;
             return(true);
         }
     }
     used = -1;
     return(false);
 }
Exemplo n.º 7
0
 public void AddRecipe(RecipeMode mode, List<CommandEntry> determiner, int adj, params ItemStack[] input)
 {
     Recipes.Add(new ItemRecipe() { Mode = mode, Determinant = new CommandScript("recipe_" + Recipes.Count, determiner, adj), Input = input, TheServer = TheServer, Index = Recipes.Count });
 }
Exemplo n.º 8
0
 public bool HasRequirement(RecipeMode mode, ItemStack requirement, ItemStack[] input, out int used)
 {
     for (int i = 0; i < input.Length; i++)
     {
         if (input[i] == null)
         {
             continue;
         }
         bool thisone = true;
         if (input[i].Count < requirement.Count)
         {
             thisone = false;
         }
         else if (mode.HasFlag(RecipeMode.TYPE) && requirement.Name != input[i].Name)
         {
             thisone = false;
         }
         else if (mode.HasFlag(RecipeMode.SECONDARY) && requirement.SecondaryName != input[i].SecondaryName)
         {
             thisone = false;
         }
         else if (mode.HasFlag(RecipeMode.TEXTURE) && requirement.GetTextureName() != input[i].GetTextureName())
         {
             thisone = false;
         }
         else if (mode.HasFlag(RecipeMode.MODEL) && requirement.GetModelName() != input[i].GetModelName())
         {
             thisone = false;
         }
         else if (mode.HasFlag(RecipeMode.MODEL) && requirement.GetModelName() != input[i].GetModelName())
         {
             thisone = false;
         }
         else if (mode.HasFlag(RecipeMode.SHARED) && !Inventory.ItemSharedAttrsMatch(requirement, input[i]))
         {
             thisone = false;
         }
         else if (mode.HasFlag(RecipeMode.LOCAL) && !Inventory.ItemAttrsMatch(requirement, input[i]))
         {
             thisone = false;
         }
         else if (mode.HasFlag(RecipeMode.DISPLAY) && requirement.DisplayName != input[i].DisplayName)
         {
             thisone = false;
         }
         else if (mode.HasFlag(RecipeMode.DESCRIPTION) && requirement.Description != input[i].Description)
         {
             thisone = false;
         }
         else if (mode.HasFlag(RecipeMode.COLOR) && requirement.DrawColor.A != input[i].DrawColor.A && requirement.DrawColor.R != input[i].DrawColor.R
              && requirement.DrawColor.G != input[i].DrawColor.G && requirement.DrawColor.B != input[i].DrawColor.B)
         {
             thisone = false;
         }
         else if (mode.HasFlag(RecipeMode.DATUM) && requirement.Datum != input[i].Datum)
         {
             thisone = false;
         }
         else if (mode.HasFlag(RecipeMode.BOUND) && requirement.IsBound != input[i].IsBound)
         {
             thisone = false;
         }
         else if (mode.HasFlag(RecipeMode.WEIGHT) && requirement.Weight != input[i].Weight)
         {
             thisone = false;
         }
         else if (mode.HasFlag(RecipeMode.VOLUME) && requirement.Volume != input[i].Volume)
         {
             thisone = false;
         }
         else if (thisone)
         {
             used = i;
             return true;
         }
     }
     used = -1;
     return false;
 }