예제 #1
0
        public Result <bool> AddToolCategory(ToolCategory ctg)
        {
            Result <bool> rlt = new Result <bool>();

            try
            {
                var old = Db.ToolCategories.FirstOrDefault(p => p.Code == ctg.Code);
                if (old != null)
                {
                    rlt.HasError = true;
                    rlt.Msg      = "工具状态编码重复!";
                }
                else
                {
                    Db.ToolCategories.Add(ctg);
                    Db.SaveChanges();
                }
            }
            catch (Exception ex)
            {
                LogUtil.WriteLog(ex);
                rlt.HasError = true;
                rlt.Msg      = ex.Message;
            }
            return(rlt);
        }
예제 #2
0
        private void AddToolGroupButton(ToolCategory category)
        {
            ToolGroupButton toolGroupButton = new ToolGroupButton(category.ToString(), category == ToolCategory.Asset);

            this.toolGroupButtons[category] = toolGroupButton;
            if (this.currentToolGroupPanel == null)
            {
                this.currentToolGroupPanel = this.ToolsRoot;
            }
            toolGroupButton.SetBinding(ToolGroupButton.ToolSelectionPlacementProperty, (BindingBase) new Binding()
            {
                Source    = (object)this.ToolsRoot,
                Path      = new PropertyPath("Orientation", new object[0]),
                Converter = (IValueConverter) new InverseOrientationToPopupPlacementConverter(),
                Mode      = BindingMode.OneWay
            });
            toolGroupButton.SetBinding(ToolPane.ParentOrientationProperty, (BindingBase) new Binding()
            {
                Source = (object)this.ToolsRoot,
                Path   = new PropertyPath("Orientation", new object[0])
            });
            this.currentToolGroupPanel.Children.Add((UIElement)toolGroupButton);
            toolGroupButton.ToolGroupSelectionChanged += new EventHandler(this.ToolGroupButton_ToolGroupSelectionChanged);
            toolGroupButton.ToolGroupActiveChanged    += new EventHandler(this.ToolGroupButton_ToolGroupActiveChanged);
            toolGroupButton.Focusable = false;
        }
예제 #3
0
        public void BundleCategoriesAddRangeTest()
        {
            var        testCategory  = new ToolCategory("Test", "0.0.0.1");
            var        categoryToAdd = new ToolCategory("Test2", "0.0.0.1");
            ToolBundle bundle        = new ToolBundle("TestBundle", "0.0.0.1");

            Assert.AreEqual(bundle.Categories.Count, 0);
            bundle.Categories.Add(categoryToAdd, testCategory);
            Assert.AreEqual(bundle.Categories.Count, 2);
        }
예제 #4
0
        public void SetCategoryActiveTool(ToolCategory category, Tool tool)
        {
            ToolCategoryGroup toolCategoryGroup;

            if (!this.toolCategoryGroups.TryGetValue(category, out toolCategoryGroup))
            {
                return;
            }
            toolCategoryGroup.ActiveTool = tool;
        }
예제 #5
0
        public Key GetToolCategoryKey(ToolCategory category)
        {
            ToolCategoryGroup toolCategoryGroup;

            if (this.toolCategoryGroups.TryGetValue(category, out toolCategoryGroup))
            {
                return(toolCategoryGroup.Key);
            }
            return(Key.None);
        }
예제 #6
0
        public void CategoryToolsAddRangeTest()
        {
            Tool         procDump = new Tool("ProcDump", "0.0.0.1", @"d:\sysinternals\procdump.exe -n 10 -cpu 90");
            Tool         procExp  = new Tool("ProcExp", "0.0.0.1", @"d:\sysinternals\procexp.exe");
            ToolCategory category = new ToolCategory("SysInternals", "0.0.0.1");

            Assert.AreEqual(category.Tools.Count, 0);
            category.Tools.Add(procDump, procExp);
            Assert.AreEqual(category.Tools.Count, 2);
        }
예제 #7
0
        public static EquipmentSlot[] GetToolCategorySlots(ToolCategory toolCat)
        {
            var templ = FirstTotemsPerCat[(int)toolCat];

            if (templ == null)
            {
                return(null);
            }

            return(templ.EquipmentSlots);
        }
예제 #8
0
        private void Add()
        {
            if (!Global.HasRight("0102"))
            {
                MessageAlert.Alert("权限不足!");
                return;
            }
            ToolCategory toolCategory = new ToolCategory();

            MessengerInstance.Send <object>(toolCategory, MsgToken.OpenToolCategoryInfo);
        }
예제 #9
0
        public void CategoryInstanceTests()
        {
            ToolCategory category = new ToolCategory("SysInternals", "0.0.0.1");

            Assert.IsNotNull(category);
            Assert.AreNotEqual(category.ID, Guid.Empty);
            Assert.AreEqual(category.Name, "SysInternals");
            Assert.AreEqual(category.Version, "0.0.0.1");
            Assert.IsNotNull(category.Tools);
            Assert.AreEqual(category.Tools.Count, 0);
        }
예제 #10
0
        public void CategoryToolsRemoveTest()
        {
            Tool         procDump = new Tool("ProcDump", "0.0.0.1", @"d:\sysinternals\procdump.exe -n 10 -cpu 90");
            Tool         procExp  = new Tool("ProcExp", "0.0.0.1", @"d:\sysinternals\procexp.exe");
            ToolCategory category = new ToolCategory("SysInternals", "0.0.0.1");

            category.Tools.Add(procDump, procExp);

            var isRemoved = category.Tools.Remove(procDump);

            Assert.AreEqual(isRemoved, true);
            Assert.AreEqual(category.Tools.Count, 1);

            isRemoved = category.Tools.Remove(procDump);
            Assert.AreEqual(isRemoved, false);
            Assert.AreEqual(category.Tools.Count, 1);
        }
예제 #11
0
        public Result <bool> EditToolCategory(ToolCategory ctg)
        {
            Result <bool> rlt = new Result <bool>();

            try
            {
                var old = Db.Entry(ctg);
                old.State = System.Data.Entity.EntityState.Modified;
                Db.SaveChanges();
            }
            catch (Exception ex)
            {
                LogUtil.WriteLog(ex);
                rlt.HasError = true;
                rlt.Msg      = ex.Message;
            }
            return(rlt);
        }
예제 #12
0
        public void BundleCategoriesRemoveTest()
        {
            var        testCategory  = new ToolCategory("Test", "0.0.0.1");
            var        categoryToAdd = new ToolCategory("Test2", "0.0.0.1");
            ToolBundle bundle        = new ToolBundle("TestBundle", "0.0.0.1");

            bundle.Categories.Add(categoryToAdd, testCategory);
            Assert.AreEqual(bundle.Categories.Count, 2);

            var isRemoved = bundle.Categories.Remove(testCategory);

            Assert.AreEqual(isRemoved, true);
            Assert.AreEqual(bundle.Categories.Count, 1);

            var isRemovedAgain = bundle.Categories.Remove(testCategory);

            Assert.AreEqual(isRemovedAgain, false);
            Assert.AreEqual(bundle.Categories.Count, 1);
        }
예제 #13
0
        public void CategoryToolsIndexerTest()
        {
            Tool         procDump = new Tool("ProcDump", "0.0.0.1", @"d:\sysinternals\procdump.exe -n 10 -cpu 90");
            Tool         procExp  = new Tool("ProcExp", "0.0.0.1", @"d:\sysinternals\procexp.exe");
            ToolCategory category = new ToolCategory("SysInternals", "0.0.0.1");

            category.Tools.Add(procDump, procExp);

            var toolByProcDumpIndex = category.Tools["ProcDump"];

            Assert.AreEqual(toolByProcDumpIndex.FirstOrDefault(), procDump);

            var isRemoved = category.Tools.Remove(procDump);

            Assert.AreEqual(isRemoved, true);
            Assert.AreEqual(category.Tools.Count, 1);

            toolByProcDumpIndex = category.Tools["ProcDump"];
            Assert.AreEqual(toolByProcDumpIndex.Count(), 0);
        }
예제 #14
0
        public SelectToolViewModel()
        {
            ToolCategoryDao deptDao = new ToolCategoryDao();
            var             deptrlt = deptDao.GetToolCategorys();

            if (deptrlt.HasError)
            {
                MessageAlert.Alert(deptrlt.Msg);
                return;
            }
            ToolCategory ctgAll = new ToolCategory()
            {
                Id   = 0,
                Name = "全部"
            };

            deptrlt.Entities.Insert(0, ctgAll);
            Categorys = deptrlt.Entities;
            Search();
        }
예제 #15
0
        public void BundleCategoriesIndexerTest()
        {
            var        testCategory  = new ToolCategory("Test", "0.0.0.0");
            var        categoryToAdd = new ToolCategory("Test2", "0.0.0.0");
            ToolBundle bundle        = new ToolBundle("TestBundle", "0.0.0.0");

            bundle.Categories.Add(categoryToAdd, testCategory);
            Assert.AreEqual(bundle.Categories.Count, 2);

            var categoryByTestIndex = bundle.Categories["Test"];

            Assert.AreEqual(categoryByTestIndex.FirstOrDefault(), testCategory);

            var isRemoved = bundle.Categories.Remove(testCategory);

            Assert.AreEqual(isRemoved, true);
            Assert.AreEqual(bundle.Categories.Count, 1);

            categoryByTestIndex = bundle.Categories["Test"];
            Assert.AreEqual(categoryByTestIndex.Count(), 0);
        }
예제 #16
0
        public ToolListViewModel()
        {
            MessengerInstance.Register <object>(this, MsgToken.RefreshToolList, RefreshList);
            RefreshList(null);

            ToolStateDao stateDao = new ToolStateDao();
            var          deptrlt  = stateDao.GetToolStates();

            if (deptrlt.HasError)
            {
                MessageAlert.Alert(deptrlt.Msg);
            }
            ToolCategoryDao toolCategoryDao = new ToolCategoryDao();
            var             categoryrlt     = toolCategoryDao.GetToolCategorys();

            if (categoryrlt.HasError)
            {
                MessageAlert.Alert(categoryrlt.Msg);
            }
            ToolCategory categoryAll = new ToolCategory()
            {
                Id   = 0,
                Name = "全部"
            };

            categoryrlt.Entities.Insert(0, categoryAll);
            Categorys = categoryrlt.Entities;

            ToolState deptAll = new ToolState()
            {
                Id   = 0,
                Name = "全部"
            };

            deptrlt.Entities.Insert(0, deptAll);
            States = deptrlt.Entities;
        }
예제 #17
0
        public void BundleSerializationTest()
        {
            ToolBundle serializedBundle = new ToolBundle("SysInternals", "0.0.0.1")
            {
                Description = "SysInternals Bundle"
            };

            var debugging = new ToolCategory("Debugging", "0.0.0.1")
            {
                Description = "Debugging Tools from SysInternals.Com"
            };

            var monitoring = new ToolCategory("Monitoring", "0.0.0.1")
            {
                Description = "Monitoring Tools from SysInternals.Com"
            };

            Tool procDump = new Tool("ProcDump", "0.0.0.1", @"d:\sysinternals\procdump.exe -n 10 -cpu 90")
            {
                Description = "Automatic Dump capture",
                IsPortable  = true
            };

            Tool procExp = new Tool("ProcExp", "0.0.0.1", @"d:\sysinternals\procexp.exe")
            {
                Description = "Process Explorer -- TaskMgr on steroids!",
                UpdateURL   = "http://sysinternals.com",
                CanUpdate   = true
            };

            procExp.Properties.Add("Company", "Microsoft");
            procExp.Properties.Add("Published", "2015");

            debugging.Tools.Add(procDump);
            monitoring.Tools.Add(procExp);

            serializedBundle.Categories.Add(debugging);
            serializedBundle.Categories.Add(monitoring);
            Assert.AreEqual(serializedBundle.Categories.Count, 2);

            var xml = serializedBundle.ToString();

            Assert.IsNotNull(xml);

            var deserializedBundle = ToolBundle.Parse(xml);

            Assert.AreEqual(serializedBundle.ID, deserializedBundle.ID);
            Assert.AreEqual(serializedBundle.Name, deserializedBundle.Name);
            Assert.AreEqual(serializedBundle.Version, deserializedBundle.Version);
            Assert.AreEqual(serializedBundle.Description, deserializedBundle.Description);

            foreach (var category in serializedBundle.Categories)
            {
                var deserializedCategory = deserializedBundle.Categories[category.Name].First();

                Assert.AreEqual(deserializedCategory.ID, category.ID);
                Assert.AreEqual(deserializedCategory.Name, category.Name);
                Assert.AreEqual(deserializedCategory.Version, category.Version);
                Assert.AreEqual(deserializedCategory.Description, category.Description);

                foreach (var tool in category.Tools)
                {
                    var deserializedTool = deserializedCategory.Tools[tool.Name].First();

                    Assert.AreEqual(deserializedTool.ID, tool.ID);
                    Assert.AreEqual(deserializedTool.Name, tool.Name);
                    Assert.AreEqual(deserializedTool.Version, tool.Version);
                    Assert.AreEqual(deserializedTool.Description, tool.Description);
                    Assert.AreEqual(deserializedTool.CanUpdate, tool.CanUpdate);
                    if (tool.CanUpdate)
                    {
                        Assert.AreEqual(deserializedTool.UpdateURL, tool.UpdateURL);
                    }
                    Assert.AreEqual(deserializedTool.CommandLine, tool.CommandLine);
                    Assert.AreEqual(deserializedTool.IsPortable, tool.IsPortable);

                    foreach (var prop in tool.Properties)
                    {
                        string deserializedValue = null;
                        Assert.IsTrue(deserializedTool.Properties.TryGetValue(prop.Key, out deserializedValue));
                        Assert.AreEqual(deserializedValue, prop.Value);
                    }
                }
            }
        }
예제 #18
0
 public static EquipmentSlot[] GetToolCategorySlots(ToolCategory toolCat)
 {
     return(FirstTotemsPerCat[(int)toolCat]?.EquipmentSlots);
 }
예제 #19
0
		/// <summary>
		/// Check for whether there is at least one Item of each Category in this Inventory.
		/// </summary>
		/// <param name="cats"></param>
		/// <returns></returns>
		public bool CheckTotemCategories(ToolCategory[] cats)
		{
			for (var i = 0; i < cats.Length; i++)
			{
				var cat = cats[i];
				var slots = ItemMgr.GetToolCategorySlots(cat);
				var found = false;
				if (slots != null)
				{
					// tools that must be equipped
					for (var j = 0; j < slots.Length; j++)
					{
						var slot = slots[j];
						var item = this[slot];
						if (item != null && item.Template.ToolCategory == cat)
						{
							found = true;
							break;
						}
					}
				}
				else
				{
					// unequippable tools
					if (this[EquipmentSlot.MainHand] == null || this[EquipmentSlot.MainHand].Template.ToolCategory != cat)
					{
						found = !Iterate(item =>
						{
							if (item.Template.ToolCategory == cat)
							{
								return false;
							}
							return true;
						});
					}
					else
					{
						found = true;
					}
				}
				if (!found)
				{
					return false;
				}
			}
			return true;
		}
예제 #20
0
 public static ItemTemplate GetFirstItemOfToolCategory(ToolCategory toolCat)
 {
     return(FirstTotemsPerCat[(int)toolCat]);
 }
예제 #21
0
 protected ToolCategoryGroup(ToolCategory category)
 {
     this.category = category;
 }
예제 #22
0
 public GenericControlTool(ToolContext toolContext, ITypeId controlType, ToolCategory category)
     : base(toolContext, controlType, category)
 {
     this.assetLibrary = toolContext.AssetLibrary;
 }
예제 #23
0
 public GenericShapeTool(ToolContext toolContext, ITypeId shapeType, ToolCategory category)
     : base(toolContext)
 {
     this.shapeType = shapeType;
     this.category  = category;
 }
예제 #24
0
        public ToolCategory[] getToolBox()
        {
            string tools = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);

            tools        = tools + "/BeamNG.IDE/Tools.xml";
            toolArray[0] = new Tool(null, null, null, null);
            string      xmlFile = File.ReadAllText(tools);
            XmlDocument xmldoc  = new XmlDocument();

            xmldoc.LoadXml(xmlFile);
            XmlNodeList nodeList = xmldoc.GetElementsByTagName("type");

            toolCategories = new ToolCategory[nodeList.Count];
            for (int j = 0; j < toolCategories.Length; j++)
            {
                toolCategories[j] = new ToolCategory();
            }
            int t = 0;
            int g = 0;

            foreach (XmlNode node in nodeList)
            {
                XmlNodeList Tools = node.ChildNodes;
                toolCategories[g].category = node.Attributes["name"].Value;
                t = 0;
                toolCategories[g].Tools = new Tool[node.ChildNodes.Count];
                foreach (XmlNode ToolList in node.ChildNodes)
                {
                    Tool Tmp = new Tool(null, null, null, null);
                    foreach (XmlNode tool in ToolList.ChildNodes)
                    {
                        //VALUES FOR PROPERTIES ARE GIVEN OUT HERE
                        switch (tool.Name)
                        {
                        case "name":
                            Tmp.toolName = tool.InnerText;
                            break;

                        case "header":
                            Tmp.toolHeader = tool.InnerText;
                            break;

                        case "source":
                            Tmp.bitmapSrc = tool.InnerText;
                            break;

                        case "helpText":
                            Tmp.helpText = tool.InnerText;
                            break;

                        case "helpLink":
                            Tmp.helpLink = tool.InnerText;
                            break;

                        case "amount":
                            Tmp.amount = tool.InnerText;
                            break;

                        case "fatherSection":
                            Tmp.fatherSection = tool.InnerText;
                            break;

                        case "Childs":
                            Tmp.hasChildrens = Convert.ToBoolean(tool.InnerText);
                            break;
                        }
                    }
                    toolCategories[g].Tools[t] = Tmp;
                    t++;
                }
                g++;
            }
            createBitmapsforTools();
            createBitmapsforCategory();
            return(toolCategories);
        }
예제 #25
0
 public TextToolCategoryGroup(ToolCategory category)
     : base(category)
 {
 }
예제 #26
0
        public void FinalizeDataHolder()
        {
            try
            {
                //Id
                SpellId   = (SpellId)Id;
                PowerType = PowerType.Mana;
                Durations = new DurationEntry()
                {
                    Min = Duration, Max = Duration
                };

                Range = new SimpleRange(0, MaxRange);

                ProjectileSpeed   = 1;
                RequiredToolIds   = new uint[2];
                Reagents          = ItemStackDescription.EmptyArray;
                RequiredItemClass = ItemClass.None;

                RequiredItemSubClassMask = ItemSubClassMask.None;
                if (Id == 2228 || Id == 2231 || Id == 2234 || Id == 2237 || Id == 2240 || Id == 2243 || Id == 2246 || Id == 2249 || Id == 2252)
                {
                    SoulGuardProffLevel = 1;
                }
                if (Id == 2229 || Id == 2232 || Id == 2235 || Id == 2238 || Id == 2241 || Id == 2244 || Id == 2247 || Id == 2250 || Id == 2253)
                {
                    SoulGuardProffLevel = 2;
                }
                if (Id == 2230 || Id == 2233 || Id == 2236 || Id == 2239 || Id == 2242 || Id == 2245 || Id == 2248 || Id == 2251 || Id == 2254)
                {
                    SoulGuardProffLevel = 3;
                }

                RequiredItemInventorySlotMask = InventorySlotTypeMask.None;


                var effects = new List <SpellEffect>(3); // 71 - 127+

                #region read effects

                var effect = new SpellEffect(this, EffectIndex.Zero)
                {
                    EffectType          = Effect0_EffectType,
                    DiceSides           = 0,
                    RealPointsPerLevel  = 0,
                    BasePoints          = 0,
                    Mechanic            = Effect0_Mehanic,
                    ImplicitTargetA     = Effect0_ImplicitTargetA,
                    ImplicitTargetB     = Effect0_ImplicitTargetB,
                    Radius              = Effect0_Radius,
                    AuraType            = Effect0_AuraType,
                    Amplitude           = Effect0_Amplitude,
                    ProcValue           = Effect0_ProcValue,
                    ChainTargets        = 0,
                    MiscValue           = Effect0_MiscValue,
                    MiscValueB          = Effect0_MiscValueB,
                    MiscValueC          = Effect0_MiscValueC,
                    TriggerSpellId      = SpellId.None,
                    PointsPerComboPoint = 0
                };
                effect.AffectMask[0] = 0;
                effect.AffectMask[1] = 0;
                effect.AffectMask[2] = 0;
                // Fix: This is a default AoE effect, thus doesn't have a fact at destination
                if (effect.ImplicitTargetA == ImplicitSpellTargetType.AllEnemiesAroundCaster &&
                    effect.ImplicitTargetB == ImplicitSpellTargetType.AllEnemiesInArea)
                {
                    effect.ImplicitTargetB = ImplicitSpellTargetType.None;
                }
                effects.Add(effect);

                effect = new SpellEffect(this, EffectIndex.One)
                {
                    EffectType          = Effect1_EffectType,
                    DiceSides           = 0,
                    RealPointsPerLevel  = 0,
                    BasePoints          = 0,
                    Mechanic            = Effect1_Mehanic,
                    ImplicitTargetA     = Effect1_ImplicitTargetA,
                    ImplicitTargetB     = Effect1_ImplicitTargetB,
                    Radius              = Effect1_Radius,
                    AuraType            = Effect1_AuraType,
                    Amplitude           = Effect1_Amplitude,
                    ProcValue           = Effect1_ProcValue,
                    ChainTargets        = 0,
                    MiscValue           = Effect1_MiscValue,
                    MiscValueB          = Effect1_MiscValueB,
                    MiscValueC          = Effect1_MiscValueC,
                    TriggerSpellId      = SpellId.None,
                    PointsPerComboPoint = 0
                };
                effect.AffectMask[0] = 0;
                effect.AffectMask[1] = 0;
                effect.AffectMask[2] = 0; // Fix: This is a default AoE effect, thus doesn't have a fact at destination
                if (effect.ImplicitTargetA == ImplicitSpellTargetType.AllEnemiesAroundCaster &&
                    effect.ImplicitTargetB == ImplicitSpellTargetType.AllEnemiesInArea)
                {
                    effect.ImplicitTargetB = ImplicitSpellTargetType.None;
                }
                effects.Add(effect);

                #endregion

                Effects = effects.ToArray();

                PowerCostPercentage = 0;                     // 127+-
                SpellClassSet       = SpellClassSet.Generic; // 131+
                MaxTargets          = 100;                   // 135+

                PreventionType = DamageType == DamageType.Magic ? SpellPreventionType.Magic : SpellPreventionType.Melee;
                //DamageMultipliers

                RequiredToolCategories = new ToolCategory[2]; // 145-146+
                for (int i = 0; i < RequiredToolCategories.Length; i++)
                {
                    RequiredToolCategories[i] = ToolCategory.None;
                }
                RuneCostEntry = new RuneCostEntry();
                if (CooldownTime > 5000)
                {
                    CooldownTime -= 1000;
                }
                else if (CooldownTime > 0)
                {
                    CooldownTime -= 500;
                }

                if (Name.Contains("Party"))
                {
                    Effect0_ImplicitTargetA = ImplicitSpellTargetType.AllParty;
                    Effect1_ImplicitTargetA = ImplicitSpellTargetType.AllParty;
                }
                SpellHandler.AddSpell(this);
            }
            catch (Exception ex)
            {
                LogUtil.WarnException("Error when finalizing data holder of spell {0}. {1}", Name, ex);
            }
        }