예제 #1
0
        public ActionResult New(BattlegroupForm form)
        {
            Debug.WriteLine($"POST: Battlegroup Ship Controller: New");
            DB_users user = Auth.User;
            var      game = GameState.Game;

            var civilization = game.GetCivilization(form.CivilizationID.Value);

            if (!civilization.PlayerOwnsCivilization(user.id) && !RequireGMAdminAttribute.IsGMOrAdmin())
            {
                return(RedirectToRoute("game", new { gameID = game.Info.id }));
            }

            var system = game.Sector.StarsystemFromHex(form.HexX, form.HexY);

            if (system != null && system.Info.game_id != game.Info.id)
            {
                return(RedirectToRoute("game", new { gameID = game.Info.id }));
            }

            // Create the Battlegroup and save it to the DB
            DB_civilization_battlegroups battlegroup = new DB_civilization_battlegroups();

            battlegroup.game_id         = game.ID;
            battlegroup.civilization_id = civilization.ID;
            battlegroup.starsystem_id   = system.ID;
            battlegroup.name            = form.Name;
            battlegroup.gmnotes         = form.GMNotes;
            Database.Session.Save(battlegroup);

            // Add in all the checked Ships
            foreach (var unitCheckbox in form.UnassignedUnits)
            {
                if (unitCheckbox.IsChecked)
                {
                    var ship = FindCivilizationUnit(unitCheckbox.ID);
                    ship.CivilizationInfo.battlegroup_id = battlegroup.id;
                    Database.Session.Update(ship.CivilizationInfo);
                }
            }

            Database.Session.Flush();
            return(RedirectToRoute("ViewCivilization", new { civilizationID = form.CivilizationID.Value }));
        }
예제 #2
0
        public ActionResult Edit(BattlegroupForm form)
        {
            Debug.WriteLine($"POST: Battlegroup Ship Controller: Edit");
            DB_users user = Auth.User;
            var      game = GameState.Game;

            var civilization = game.GetCivilization(form.CivilizationID.Value);

            if (!civilization.PlayerOwnsCivilization(user.id) && !RequireGMAdminAttribute.IsGMOrAdmin())
            {
                return(RedirectToRoute("game", new { gameID = game.Info.id }));
            }

            var system = game.Sector.StarsystemFromHex(form.HexX, form.HexY);

            if (system != null && system.Info.game_id != game.Info.id)
            {
                return(RedirectToRoute("game", new { gameID = game.Info.id }));
            }

            var battlegroup = FindBattlegroup(form.ID);

            if (battlegroup != null && battlegroup.Info.game_id != game.ID)
            {
                return(RedirectToRoute("game", new { gameID = game.Info.id }));
            }

            // Update the Battlegroup and Update it in the DB
            battlegroup.Info.starsystem_id = system.ID;
            battlegroup.Info.name          = form.Name;
            if (RequireGMAdminAttribute.IsGMOrAdmin())
            {
                battlegroup.Info.gmnotes = form.GMNotes;
            }
            Database.Session.Update(battlegroup.Info);

            // Add in all of the newly checked Ships
            foreach (var unitCheckbox in form.UnassignedUnits)
            {
                if (unitCheckbox.IsChecked)
                {
                    var ship = FindCivilizationUnit(unitCheckbox.ID);
                    ship.CivilizationInfo.battlegroup_id = battlegroup.ID;
                    Database.Session.Update(ship.CivilizationInfo);
                }
            }

            // Remove all the Ships no longer checked
            foreach (var unitCheckbox in form.BattlegroupUnits)
            {
                if (!unitCheckbox.IsChecked)
                {
                    var ship = FindCivilizationUnit(unitCheckbox.ID);
                    ship.CivilizationInfo.battlegroup_id = null;
                    Database.Session.Update(ship.CivilizationInfo);
                }
            }

            Database.Session.Flush();
            return(RedirectToRoute("ViewCivilization", new { civilizationID = form.CivilizationID.Value }));
        }