/// <summary>Adds the new unit.</summary>
        /// <param name="sender">The sender.</param>
        /// <param name="e">The <see cref="ButtonNewUnitEventArgs"/> instance containing the event data.</param>
        private void AddNewUnit(object sender, ButtonNewUnitEventArgs e)
        {
            var myUnit = MakeUnitFromString(e.UnitName);

            using (var context = new ArmyDataContext())
            {
                var newUnit = new Engage_Unit
                {
                    ArmyId   = this.View.Model.ArmyID,
                    Size     = myUnit.InitialSize,
                    UnitType = myUnit.ServerID,
                    Squad    = null
                };

                context.Engage_Units.InsertOnSubmit(newUnit);
                context.SubmitChanges();

                var newWargear = from wargear in myUnit.SelectedWargearUpgrades
                                 join wargearName in context.Engage_WargearUpgrades on wargear.Key equals wargearName.Wargear
                                 select new Engage_Unit_Wargear {
                    UnitID = newUnit.UnitId, WargearID = wargearName.WargearID, Amount = wargear.Value
                };

                context.Engage_Unit_Wargears.InsertAllOnSubmit(newWargear);
                context.SubmitChanges();

                var editUrl    = this.ModuleContext.EditUrl("UnitId", newUnit.UnitId.ToString(CultureInfo.InvariantCulture), "EditUnit");
                var insertUnit = new ViewArmyManagerViewModel.UnitViewModel(myUnit, editUrl);
                this.View.Model.Army.Append(insertUnit);
            }

            this.RefreshView();
        }
        /// <summary>Deletes the unit.</summary>
        /// <param name="sender">The sender.</param>
        /// <param name="e">The <see cref="ButtonDeleteUnitEventArgs"/> instance containing the event data.</param>
        private void DeleteUnit(object sender, ButtonDeleteUnitEventArgs e)
        {
            using (var context = new ArmyDataContext())
            {
                var myUnit =
                    (from unit in context.Engage_Units
                     where unit.UnitId == e.UnitId
                     where unit.ArmyId == this.View.Model.ArmyID
                     select unit).SingleOrDefault();

                var myRules = from unitRules in context.Engage_Unit_Rules
                              where unitRules.UnitID == e.UnitId
                              select unitRules;

                var myWargear = from unitWargear in context.Engage_Unit_Wargears
                                where unitWargear.UnitID == e.UnitId
                                select unitWargear;

                context.Engage_Unit_Rules.DeleteAllOnSubmit(myRules);
                context.Engage_Unit_Wargears.DeleteAllOnSubmit(myWargear);
                context.Engage_Units.DeleteOnSubmit(myUnit);
                context.SubmitChanges();
            }

            this.RefreshView();
        }
        /// <summary>Refreshes the view.</summary>
        private void RefreshView()
        {
            try
            {
                var armyId = this.Request.QueryString.GetValueOrDefault("ArmyId", 0);

                if (armyId == 0)
                {
                    return;
                }

                using (var context = new ArmyDataContext())
                {
                    var army = context.Engage_Armies.Single(a => a.ArmyID == armyId);
                    this.View.Model.Name      = army.ArmyName;
                    this.View.Model.MaxPoints = army.MaxPoints;

                    this.View.Model.Army = (from unit in army.Units
                                            select this.MakeUnitFromServerData(unit.UnitType, unit.Size, unit.UnitId, context))
                                           .ToArray();
                }

                this.View.Model.ArmyID = (int)armyId;
            }
            catch (Exception exc)
            {
                this.ProcessModuleLoadException(exc);
            }
        }
Exemple #4
0
        /// <summary>Updates the rules.</summary>
        /// <param name="sender">The sender.</param>
        /// <param name="e">The <see cref="RuleUpgradeCheckedEventArgs"/> instance containing the event data.</param>
        private void UpdateRules(object sender, RuleUpgradeCheckedEventArgs e)
        {
            var checkUnit = this.View.Model.DisplayUnit;

            var newRules     = e.SelectedValues.Except(checkUnit.Unit.SelectedRuleUpgrades);
            var deletedRules = checkUnit.Unit.SelectedRuleUpgrades.Except(e.SelectedValues);

            using (var context = new ArmyDataContext())
            {
                var myUnit = context.Engage_Units.SingleOrDefault(unit => unit.UnitId == e.UnitId);

                var rules = (from rule in context.Engage_RulesUpgrades
                             where newRules.Contains(rule.RuleName)
                             select new { rule.RuleID, UnitID = myUnit.UnitId, })
                            .AsEnumerable()
                            .Select(rule => new Engage_Unit_Rule {
                    RuleID = rule.RuleID, UnitID = rule.UnitID,
                });

                var deleteRules = from rule in context.Engage_Unit_Rules
                                  join ruleName in context.Engage_RulesUpgrades on rule.RuleID equals ruleName.RuleID
                                  where rule.UnitID == myUnit.UnitId
                                  where deletedRules.Contains(ruleName.RuleName)
                                  select rule;

                context.Engage_Unit_Rules.DeleteAllOnSubmit(deleteRules);
                context.Engage_Unit_Rules.InsertAllOnSubmit(rules);

                context.SubmitChanges();
            }

            this.RefreshEditView();
        }
Exemple #5
0
        /// <summary>Updates the wargear.</summary>
        /// <param name="sender">The sender.</param>
        /// <param name="e">The <see cref="ButtonWargearEventArgs"/> instance containing the event data.</param>
        private void UpdateWargear(object sender, ButtonWargearEventArgs e)
        {
            var checkUnit        = this.View.Model.DisplayUnit;
            var newWargearValues = e.Wargear;

            foreach (var upgrade in newWargearValues)
            {
                checkUnit.Unit.SetWargear(upgrade.Key, upgrade.Value);
            }

            using (var context = new ArmyDataContext())
            {
                var myUnit = context.Engage_Units.SingleOrDefault(unit => unit.UnitId == e.UnitID);

                foreach (var wargear in checkUnit.Unit.SelectedWargearUpgrades)
                {
                    var myWargear = (from wargearTable in myUnit.Engage_Unit_Wargears
                                     join wargearNames in context.Engage_WargearUpgrades on wargearTable.WargearID equals wargearNames.WargearID
                                     where wargearNames.Wargear == wargear.Key
                                     select wargearTable).SingleOrDefault();

                    myWargear.Amount = wargear.Value;
                }

                context.SubmitChanges();
            }

            this.RefreshEditView();
        }
Exemple #6
0
        /// <summary>Refreshes the edit view.</summary>
        private void RefreshEditView()
        {
            var unitId = this.Request.QueryString.GetValueOrDefault("UnitId", 0);

            using (var context = new ArmyDataContext())
            {
                var myUnit = (from unit in context.Engage_Units where unit.UnitId == unitId select unit).FirstOrDefault();

                this.View.Model.DisplayUnit = this.MakeUnitFromServerData(myUnit.UnitType, myUnit.Size, myUnit.UnitId, context);
            }
        }
        /// <summary>Loads the armies.</summary>
        /// <param name="sender">The sender.</param>
        /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
        private void LoadArmies(object sender, EventArgs e)
        {
            using (var context = new ArmyDataContext())
            {
                var myArmies =
                    (from armies in context.Engage_Armies
                     select new { armies.ArmyID, armies.ArmyName })
                    .ToDictionary(a => a.ArmyID, a => a.ArmyName);

                this.View.Model.ArmiesToLoad = myArmies;
            }

            this.View.Model.IsLoading = true;
        }
        /// <summary>Makes the army.</summary>
        /// <param name="sender">The sender.</param>
        /// <param name="e">The <see cref="ButtonNewArmyEventArgs"/> instance containing the event data.</param>
        private void MakeArmy(object sender, ButtonNewArmyEventArgs e)
        {
            using (var context = new ArmyDataContext())
            {
                var newArmy = new Engage_Army();
                newArmy.ArmyName  = e.ArmyName;
                newArmy.MaxPoints = e.Points;

                context.Engage_Armies.InsertOnSubmit(newArmy);
                context.SubmitChanges();
                this.View.Model.MaxPoints = newArmy.MaxPoints;
                this.View.Model.Name      = newArmy.ArmyName;
                this.View.Model.ArmyID    = newArmy.ArmyID;
            }

            this.Response.Redirect(Globals.NavigateURL(this.TabId, string.Empty, "ArmyId=" + this.View.Model.ArmyID.ToString(CultureInfo.InvariantCulture)));
        }
Exemple #9
0
        /// <summary>Updates the size.</summary>
        /// <param name="sender">The sender.</param>
        /// <param name="e">The <see cref="ButtonSetSizeEventArgs"/> instance containing the event data.</param>
        /// <exception cref="System.InvalidOperationException">Cannot update a unit that does not exist.</exception>
        private void UpdateSize(object sender, ButtonSetSizeEventArgs e)
        {
            var checkUnit = this.View.Model.DisplayUnit;

            checkUnit.Unit.CurrentSize = e.Size;
            var size = checkUnit.Unit.CurrentSize;

            using (var context = new ArmyDataContext())
            {
                var myUnit = context.Engage_Units.SingleOrDefault(unit => unit.UnitId == e.UnitID);

                if (myUnit == null)
                {
                    throw new InvalidOperationException("Cannot update a unit that does not exist.");
                }

                myUnit.Size = size;
                context.SubmitChanges();
            }

            this.RefreshEditView();
        }
        /// <summary>Makes the unit from server data.</summary>
        /// <param name="unitType">Type of the unit.</param>
        /// <param name="size">The size.</param>
        /// <param name="unitID">The unit identifier.</param>
        /// <param name="context">The context.</param>
        /// <returns>A <see cref="EditUnitViewModel"/></returns>
        public ViewArmyManagerViewModel.UnitViewModel MakeUnitFromServerData(int unitType, int size, int unitID, ArmyDataContext context)
        {
            Unit newUnit;

            switch (unitType)
            {
            case 1:
                newUnit = new Termagant();
                break;

            case 2:
                newUnit = new HiveTyrant();
                break;

            case 3:
                newUnit = new HiveGuard();
                break;

            case 4:
                newUnit = new Lictor();
                break;

            case 5:
                newUnit = new Zoanthrope();
                break;

            case 6:
                newUnit = new Venomthrope();
                break;

            case 7:
                newUnit = new Haruspex();
                break;

            case 8:
                newUnit = new Pyrovore();
                break;

            case 9:
                newUnit = new Gargoyle();
                break;

            case 10:
                newUnit = new Harpy();
                break;

            case 11:
                newUnit = new HiveCrone();
                break;

            case 12:
                newUnit = new SporeMine();
                break;

            case 13:
                newUnit = new Biovore();
                break;

            case 14:
                newUnit = new Tyrannofex();
                break;

            case 15:
                newUnit = new Deathleaper();
                break;

            case 16:
                newUnit = new OldOneEye();
                break;

            case 17:
                newUnit = new Hormagaunt();
                break;

            case 18:
                newUnit = new RipperSwarm();
                break;

            default:
                newUnit = new Termagant();
                break;
            }

            newUnit.CurrentSize = size;
            newUnit.UnitID      = unitID;

            var listWargear = (from wargear in context.Engage_Unit_Wargears
                               join names in context.Engage_WargearUpgrades on wargear.WargearID equals names.WargearID
                               where wargear.UnitID == unitID
                               select new { wargear.Amount, names.Wargear })
                              .ToDictionary(a => a.Wargear, a => a.Amount);

            foreach (var wargear in listWargear)
            {
                newUnit.SetWargear(wargear.Key, wargear.Value);
            }

            var listRules = from rules in context.Engage_Unit_Rules
                            join names in context.Engage_RulesUpgrades on rules.RuleID equals names.RuleID
                            where rules.UnitID == unitID
                            select names.RuleName;

            foreach (var rule in listRules)
            {
                newUnit.SetUpgrade(rule);
            }

            var editUrl = this.ModuleContext.EditUrl(
                "UnitId",
                unitID.ToString(CultureInfo.InvariantCulture),
                "EditUnit");

            var newUnitModel = new ViewArmyManagerViewModel.UnitViewModel(newUnit, editUrl);

            return(newUnitModel);
        }