예제 #1
0
        public async Task <IActionResult> Update(Advantage advantage)
        {
            if (User.Identity.IsAuthenticated && User.IsInRole("admin"))
            {
                if (advantage == null)
                {
                    return(NotFound());
                }
                if (advantage.Content == string.Empty || advantage.Content == "")
                {
                    ModelState.AddModelError("Content", "Qısa məlumat boş olmamalıdır");
                    return(View(advantage));
                }
                Advantage db_advantage = await _context.advantages.FindAsync(advantage.Id);

                if (advantage.Icon != null)
                {
                    if (!advantage.Icon.ContentType.Contains("image/"))
                    {
                        ModelState.AddModelError("Icon", "Şəkilin formatı düzgün deyil");
                        return(View(db_advantage));
                    }
                    RemovePhoto(_env.WebRootPath, db_advantage.IconUrl);
                    db_advantage.IconUrl = await advantage.Icon.SavePhotoAsync(_env.WebRootPath, "advantages");
                }
                db_advantage.Content = advantage.Content;
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            else
            {
                return(Redirect("/egmedia_admin/login"));
            }
        }
예제 #2
0
        public async Task <IActionResult> Edit(int id, [Bind("Id,Title,Text")] Advantage advantage)
        {
            if (id != advantage.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(advantage);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!AdvantageExists(advantage.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(advantage));
        }
예제 #3
0
 public AdvantageModel(Advantage model)
 {
     Id          = model.Id;
     Name        = model.Name;
     Description = model.Description;
     Cost        = model.Cost;
     Skillable   = model.Skillable != 0;
 }
예제 #4
0
        public static int Roll(String diceFormula, Advantage advantage = Advantage.None)
        {
            String formula = diceFormula.Replace(" ", "").ToLower(); //filter out uppercase and spaces

            int c      = 0;
            int result = 0;

            bool applyPlusMinus = true;
            int  indexD         = formula.IndexOf('d');
            int  indexPlusMinus = formula.IndexOfAny(PLUS_MINUS_CHARS);

            if (indexPlusMinus == -1)
            {
                applyPlusMinus = false;
                indexPlusMinus = formula.Length;
            }

            try
            {
                int n = int.Parse(formula.Substring(0, indexD));
                int d = int.Parse(formula.Substring(indexD + 1, indexPlusMinus - indexD - 1));
                if (applyPlusMinus)
                {
                    c = int.Parse(formula.Substring(indexPlusMinus + 1, formula.Length - indexPlusMinus - 1));
                    if (formula[indexPlusMinus] == '-')
                    {
                        c = 0 - c;
                    }
                }

                switch (advantage)
                {
                case Advantage.None:
                    result = ND(n, d) + c;
                    break;

                case Advantage.Advantage:
                    result = Math.Max(ND(n, d), ND(n, d)) + c;
                    break;

                case Advantage.Disadvantage:
                    result = Math.Min(ND(n, d), ND(n, d)) + c;
                    break;
                }
            }
            catch (FormatException e)
            {
                MessageBox.Show("Dice formula not valid. Must be of the form \"XdY\", \"XdY+Z\", or \"XdY-Z\"."
                                + "\r\n" + "If dice formula is not applicable to the unit, use an empty string: \"\", or \"n/a\". "
                                + "\r\n" + e.Message);
            }

            return(result);
        }
예제 #5
0
 //Подсчет баллов
 public static void ScoringPoints(Advantage value, ref int firstCount, ref int secondCount)
 {
     if (value == Advantage.FirstOneWon)
     {
         firstCount++;
     }
     else if (value == Advantage.SecondOneWon)
     {
         secondCount++;
     }
 }
예제 #6
0
        public async Task <IActionResult> Create([Bind("Id,Title,Text")] Advantage advantage)
        {
            if (ModelState.IsValid)
            {
                _context.Add(advantage);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(advantage));
        }
        private Advantage GetOrCreateAdvantage(AdvantageModel model)
        {
            var dbItem = _dataContext.Advantages.FirstOrDefault(i => i.Name == model.Name);

            if (dbItem == null)
            {
                dbItem = new Advantage(model);
                _dataContext.Advantages.Add(dbItem);
                _dataContext.SaveChanges();
            }

            return(dbItem);
        }
        public AdvantageModel Put([FromBody] AdvantageModel model, long characterId)
        {
            var item   = _dataContext.Advantages.First(item => item.Id == model.Id);
            var dbItem = new Advantage(model)
            {
                Id = model.Id
            };

            _dataContext.Entry(item).CurrentValues.SetValues(dbItem);
            _dataContext.CharacterAdvantageAssociations
            .First(caa => caa.AdvantageFk == model.Id && caa.CharacterFk == characterId)
            .Level = model.Level;
            _dataContext.SaveChanges();
            return(new AdvantageModel(item));
        }
예제 #9
0
 public static void BattleResults(Advantage winnerGroup, string firstTankName, string secondTankName)
 {
     if (winnerGroup == Advantage.FirstOneWon)
     {
         Menu.PrintBattleResults(firstTankName);
     }
     else if (winnerGroup == Advantage.SecondOneWon)
     {
         Menu.PrintBattleResults(secondTankName);
     }
     else if (winnerGroup == Advantage.Nobody)
     {
         Menu.PrintDraw();//Ничья
     }
 }
예제 #10
0
        public ActionResult AddAdvantage(Advantage advantage)
        {
            var list = new AdvantageDataAccess().FindAll <Advantage>();

            advantage.Id          = list.Count == 0 ? 1 : list.Last().Id + 1;
            advantage.Name        = Request.Form["Name"];
            advantage.Description = Request.Form["Description"];
            advantage.Cost        = int.Parse(Request.Form["Cost"]);
            advantage.Level       = 0;
            advantage.LevelCap    = int.Parse(Request.Form["LevelCap"]);
            if (advantage.LevelCap == 0)
            {
                advantage.LevelCap = int.MaxValue;
            }
            advantage.Formula = Request.Form["Formula"];
            advantage.Types.AddRange(Request.Form.Where(x => x.Value.Contains("true")).Select(x => x.Key));
            new AdvantageDataAccess().InsertOne(advantage);
            return(RedirectToAction("Main", "Admin"));
        }
예제 #11
0
        public static GameObject LoadGameObject(this XElement xml)
        {
            if (xml.Name.LocalName != GameObjectNode)
            {
                throw new ArgumentException("Load GameObject: xml is not a GameObject");
            }

            var type = (ObjectType)Enum.Parse(typeof(ObjectType), xml.Attribute("Type").Value);

            switch (type)
            {
            case ObjectType.Character:
                return(Character.FromXml(xml));

            case ObjectType.Demeanor:
                return(Demeanor.FromXml(xml));

            case ObjectType.Advantage:
                return(Advantage.FromXml(xml));

            case ObjectType.Disadvantage:
                return(Disadvantage.FromXml(xml));

            case ObjectType.Ability:
                return(Ability.FromXml(xml));

            case ObjectType.Equipment:
                return(Gear.FromXml(xml));

            case ObjectType.Template:
                return(Template.FromXml(xml));

            default:
                throw new ArgumentException("Load GameObject: xml GameObject unknown type.");
            }
        }
예제 #12
0
        override public Control ConstructUIElement()
        {
            uiElement.RowCount    = advantages.Count;
            uiElement.ColumnCount = 1;
            uiElement.Dock        = DockStyle.Fill;
            uiElement.Size        = new Size(componentWidth, rowHeight * advantages.Count);
            uiElement.TabIndex    = 0;

            uiElement.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F));
            for (int a = 0; a < advantages.Count; ++a)
            {
                Advantage advantage = advantages[a];
                uiElement.RowStyles.Add(new RowStyle(SizeType.Percent, 100F / advantages.Count));

                TableLayoutPanel advantageElement = new TableLayoutPanel
                {
                    Name = "advantageTable" + advantage.name,
                    Size = new Size(componentWidth, rowHeight)
                };

                Label label = new Label
                {
                    Anchor = AnchorStyles.Left,
                    Text   = advantage.name.Replace('_', ' ') + ": "
                };
                advantageElement.ColumnStyles.Add(new ColumnStyle(SizeType.AutoSize, label.Width));
                advantageElement.Controls.Add(label, 0, 0);

                advantageElement.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F));
                advantageElement.Controls.Add(advantage.ConstructUIElement(this), 1, 0);

                uiElement.Controls.Add(advantageElement, 0, a);
            }
            OnValueChanged();
            return(uiElement);
        }
 public void UpdateAdvantage(Advantage advantage)
 {
     SetAdvantage(advantage.Player, advantage.Amount);
 }
 public void RemoveAdvantage(Advantage advantage)
 {
     Advantages.Remove(advantage);
     advantage.Deactivate(this);
 }
 public void AddAdvantage(Advantage advantage)
 {
     Advantages.Add(advantage);
     advantage.Activate(this);
 }
예제 #16
0
 public AdvantageSaveData(Advantage advantage)
 {
     Name        = advantage.Name;
     Description = advantage.Description;
     EffectIDs   = advantage.GetEffectIds();
 }