Ejemplo n.º 1
0
        // Отстреляться по вражеской армии
        public void FireTo(Army targetArmy)
        {
            // Определить сколько у нашего меха пушек и какого калибра
            Design designAttacker = GetDesign();

            if (designAttacker.guns < 1) { return; } // Нечем стрелять, нет пушек
            // Огонь из всех орудий!
            for (int i = 1; i <= designAttacker.guns; i++)
            {
                // получить список живых мехов вражеской армии
                var listOfTargets = targetArmy.GetLiveBattleMechs();
                if (listOfTargets.Count == 0) { break; } // цели кончились
                var rn = new Random();
                int target = rn.Next(listOfTargets.Count);
                Design designTarget = listOfTargets[target].GetDesign();
                if (designAttacker.caliber >= designTarget.shield)
                {
                    listOfTargets[target].Kill(); // Цель уничтожена!
                }
                else
                {
                    // Броня не пробиваема!
                }
            }
        }
Ejemplo n.º 2
0
 public void SaveArmy(Army army)
 {
     if (army.rid == 0)
     {
         context.Armies.Add(army);
     }
     else
     {
         Army dbEntry = context.Armies.Find(army.rid);
         if (dbEntry != null)
         {
             dbEntry.name = army.name;
             dbEntry.ridcountry = army.ridcountry;
             dbEntry.ridgamer = army.ridgamer;
         }
     }
     context.SaveChanges();
 }
Ejemplo n.º 3
0
        public ActionResult CreateMech(int designesDropDown, int qnt)
        {
            int manufactureQnt = qnt;

            Game game = Session["Game"] as Game;
            Country country = game.selectedCountry;

            int userId = WebSecurity.GetUserId(User.Identity.Name);
            Gamer gamer = gamerRepository.Gamers.FirstOrDefault(x => x.type == "human" && x.UserId == userId);
            Gamer owner = gamerRepository.Gamers.FirstOrDefault(x => x.rid == country.ridgamer && x.UserId == userId);
            Boolean our = false;
            if (gamer.rid == owner.rid) { our = true; }
            // Дизайн заказанный к производству
            Design design = designRepository.Designs.FirstOrDefault(x => x.rid == designesDropDown && x.UserId == userId);

            // Проверить есть ли у игрока-человека в этой стране армия
            Army army = armyRepository.Armies.FirstOrDefault(x => x.ridcountry == country.rid && x.ridgamer == gamer.rid && x.UserId == userId);
            // Если армии нет - создать
            if (army == null) {
                army = new Army
                {
                    name = (gamer.name + " in " + country.nameEng).Trim(),
                    ridcountry = country.rid,
                    //ridgamer = country.ridgamer,
                    ridgamer = gamer.rid,
                    UserId = userId
                };
                armyRepository.SaveArmy(army);
            }

            // увеличиваем количество мехов в таблице Battlemech
            for (int qi = 1; qi <= manufactureQnt; qi++)
            {
                // Если хватает ресурсов
                if (country.mineral >= design.weight)
                {
                    Battlemech battlemech = new Battlemech
                    {
                        riddesign = design.rid,
                        ridarmy = army.rid,
                        name = "Mech-" + design.name,
                        qnt = 1,
                        UserId = userId
                    };
                    battlemechRepository.SaveBattlemech(battlemech);
                    country.mineral = country.mineral - design.weight;
                }
                else {
                    break;
                }
            }
            countryRepository.SaveCountry(country);

            ModelState.Clear();

            Factory factory = new Factory
            {
                designes = designRepository.Designs.Where(x => x.UserId == userId && x.ridgamer == gamer.rid).ToList(),
                qnt = 0,
                ours = our
            };

            return View(factory);
        }
Ejemplo n.º 4
0
        public ActionResult Bunker(int? sendAllTo, List<int?> sendOneTo)
        {
            logger.Info("BunkerController: SendMechs");
            Game game = Session["Game"] as Game;
            int userId = WebSecurity.GetUserId(User.Identity.Name);
            Gamer gamer = gamerRepository.Gamers.FirstOrDefault(x => x.type == "human" && x.UserId == userId);

            // Выбрать всех мехов, что сидят в этой стране
            List<Battlemech> listOfMechs = armyRepository.Armies.Where(x => x.ridcountry == game.selectedCountry.rid && x.ridgamer == gamer.rid && x.UserId == userId)
                .Join(battlemechRepository.Battlemechs.Where(x => x.UserId == userId), a => a.rid, b => b.ridarmy, (a, b) => b).ToList();

            if (sendAllTo != null)
            {
                // Проверить, есть ли у игрока армия в стране куда отправляются мехи
                Country toCountry = countryRepository.Countries.FirstOrDefault(x => x.rid == sendAllTo && x.UserId == userId);
                Army toArmy = armyRepository.Armies.FirstOrDefault(x => x.ridcountry == toCountry.rid && x.ridgamer == gamer.rid && x.UserId == userId);

                // Если армии нет - создать

                if (toArmy == null)
                {
                    toArmy = new Army
                    {
                        name = (gamer.name + " in " + toCountry.nameEng).Trim(),
                        ridcountry = toCountry.rid,
                        //ridgamer = country.ridgamer,
                        ridgamer = gamer.rid,
                        UserId = userId
                    };
                    armyRepository.SaveArmy(toArmy);
                }

                // Отправить всех мехов по указанному адресу
                foreach (Battlemech mech in listOfMechs)
                {
                    mech.ridarmy = toArmy.rid;
                    battlemechRepository.SaveBattlemech(mech);
                }
            }
            else
            {
                int i = -1;
                foreach (var sendTo in sendOneTo)
                {
                    i++;
                    if (sendTo == null) { continue; } // Этого оставляем дома

                    // Остальных рассылаем согласно назначениям

                    // Проверить, есть ли у игрока армия в стране куда отправляются мехи
                    Country toCountry = countryRepository.Countries.FirstOrDefault(x => x.rid == sendTo && x.UserId == userId);
                    Army toArmy = armyRepository.Armies.FirstOrDefault(x => x.ridcountry == toCountry.rid && x.ridgamer == gamer.rid && x.UserId == userId);

                    // Если армии нет - создать
                    if (toArmy == null)
                    {
                        toArmy = new Army
                        {
                            name = (gamer.name + " in " + toCountry.nameEng).Trim(),
                            ridcountry = toCountry.rid,
                            //ridgamer = country.ridgamer,
                            ridgamer = gamer.rid,
                            UserId = userId
                        };
                        armyRepository.SaveArmy(toArmy);
                    }

                    // Отправить меха по указанному адресу
                    // TODO: Сомнительное решение - нужно переделать так, чтобы получать связку значений (rid-mech,rid-country)
                    listOfMechs[i].ridarmy = toArmy.rid;
                    battlemechRepository.SaveBattlemech(listOfMechs[i]);
                }
            }

            ModelState.Clear();
            Bunker bunker = new Bunker();
            // Выбрать все страны кроме выделенной
            bunker.listOfCountries = countryRepository.Countries.Where(x => x.rid != game.selectedCountry.rid && x.UserId == userId).ToList();
            // Выбрать всех мехов, что сидят в этой стране
            bunker.listOfMechs = armyRepository.Armies.Where(x => x.ridcountry == game.selectedCountry.rid && x.ridgamer == gamer.rid && x.UserId == userId)
                .Join(battlemechRepository.Battlemechs.Where(x => x.UserId == userId), a => a.rid, b => b.ridarmy, (a, b) => b).ToList();

            return View(bunker);
        }