public ActionResult NewUnit(RnDUnitForm form)
        {
            Debug.WriteLine($"POST: Civilization RnD Unit Controller: New");
            DB_users user = Auth.User;
            var      game = GameState.Game;

            var dbUnit = game.GameStatistics.UnitsRaw
                         .Where(x => x.id == form.SelectedUnitID.Value)
                         .FirstOrDefault();
            var dbBuildAtStruct = game.GetCivilization(form.CivilizationID.Value).Assets.CompletedInfrastructure
                                  .Where(x => x.CivilizationInfo.id == form.SelectedBuildAtInfrastructureID)
                                  .FirstOrDefault();

            if (dbUnit == null || dbBuildAtStruct == null)
            {
                return(RedirectToRoute("ViewCivilization", new { civilizationID = form.CivilizationID.Value }));
            }

            // Check to ensure there are slots remaining
            var civilization = game.GetCivilization(form.CivilizationID.Value);

            if (UnitTypes.IsSpaceship(dbUnit.unit_type))
            {
                if (!civilization.Assets.HasShipConstructionSlots)
                {
                    return(RedirectToRoute("ViewCivilization", new { civilizationID = form.CivilizationID.Value }));
                }
            }
            else
            {
                if (!civilization.Assets.HasUnitTrainingSlots)
                {
                    return(RedirectToRoute("ViewCivilization", new { civilizationID = form.CivilizationID.Value }));
                }
            }

            // Save the Unit to the DB
            DB_civilization_rnd_units unit = new DB_civilization_rnd_units();

            unit.game_id          = game.ID;
            unit.civilization_id  = form.CivilizationID.Value;
            unit.unit_id          = dbUnit.id;
            unit.civ_struct_id    = dbBuildAtStruct.CivilizationInfo.id;
            unit.species_id       = form.SelectedSpeciesID == -1 ? null : form.SelectedSpeciesID;
            unit.name             = form.Name;
            unit.build_percentage = form.BuildPercentage;
            Database.Session.Save(unit);

            Database.Session.Flush();
            return(RedirectToRoute("ViewCivilization", new { civilizationID = form.CivilizationID.Value }));
        }
        public ActionResult EditUnit(RnDUnitForm form)
        {
            Debug.WriteLine($"POST: Civilization RND Unit Controller: Edit");
            DB_users user = Auth.User;
            var      game = GameState.Game;

            DB_civilization_rnd_units unit = FindRNDCivilizationUnit(form.ID).Info;

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

            var dbUnit = game.GameStatistics.UnitsRaw
                         .Where(x => x.id == form.SelectedUnitID.Value)
                         .FirstOrDefault();
            var dbBuildAtStruct = game.GetCivilization(form.CivilizationID.Value).Assets.CompletedInfrastructure
                                  .Where(x => x.CivilizationInfo.id == form.SelectedBuildAtInfrastructureID)
                                  .FirstOrDefault();

            if (dbUnit == null || dbBuildAtStruct == null)
            {
                return(RedirectToRoute("ViewCivilization", new { civilizationID = form.CivilizationID.Value }));
            }

            unit.name = form.Name;
            if (RequireGMAdminAttribute.IsGMOrAdmin())
            {
                unit.civilization_id  = form.CivilizationID.Value;
                unit.unit_id          = dbUnit.id;
                unit.civ_struct_id    = dbBuildAtStruct.CivilizationInfo.id;
                unit.species_id       = form.SelectedSpeciesID == -1 ? null : form.SelectedSpeciesID;
                unit.build_percentage = form.BuildPercentage;
            }
            Database.Session.Update(unit);

            Database.Session.Flush();
            return(RedirectToRoute("ViewCivilization", new { civilizationID = form.CivilizationID.Value }));
        }
Esempio n. 3
0
 public RnDUnit(DB_civilization_rnd_units info, Civilization owner)
 {
     Info  = info;
     Owner = owner;
 }