示例#1
0
        public ActionResult StarSystemDetails(int gameID, int hexX, int hexY)
        {
            Debug.WriteLine($"StarSystemDetails HexX:{hexX} HexY:{hexY}");
            Game game = GameState.Game;

            if (hexX < 0 || hexY < 0 ||
                game == null || game.Sector == null)
            {
                return(PartialView("_Starsystem", new ViewStarSystem()));
            }

            SafeUser   user   = Auth.User;
            Starsystem system = game.Sector.StarsystemFromHex(new HexCoordinate(hexX, hexY));

            // Check to determine if the player is within a civilization that has visited the system
            var playerCivilizations = game.Civilizations
                                      .Where(x => x.PlayerOwnsCivilization(user.ID))
                                      .Where(x => x.HasVisitedSystem(system.ID))
                                      .ToList();

            if (!RequireGMAdminAttribute.IsGMOrAdmin() && playerCivilizations.Count == 0)
            {
                return(PartialView("_Starsystem", new ViewStarSystem()));
            }

            return(PartialView("_Starsystem", new ViewStarSystem
            {
                User = game.Players.Where(x => x.User.ID == user.ID).First(),
                System = system,
                HeaderHotLink = true
            }));
        }
示例#2
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 }));
        }
示例#3
0
        public ActionResult Edit(CivilizationInfrastructureForm form)
        {
            Debug.WriteLine($"POST: Civilization Infrastructure Controller: Edit");
            DB_users user = Auth.User;
            var      game = GameState.Game;

            DB_civilization_infrastructure infrastructure = FindCivilizationInfrastructure(form.ID).CivilizationInfo;

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

            var planet   = game.Sector.PlanetFromID(form.PlanetID.Value);
            var dbStruct = game.GameStatistics.InfrastructureRaw
                           .Where(x => x.id == form.SelectedInfrastructureID.Value)
                           .FirstOrDefault();

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

            infrastructure.name = form.Name;
            if (RequireGMAdminAttribute.IsGMOrAdmin())
            {
                infrastructure.civilization_id = form.CivilizationID.Value;
                infrastructure.planet_id       = planet.PlanetID;
                infrastructure.struct_id       = dbStruct.id;
                infrastructure.current_health  = form.CurrentHealth;
                infrastructure.experience      = form.Experience;
                infrastructure.can_upgrade     = form.CanUpgrade;
                infrastructure.is_military     = form.IsMilitary;
                infrastructure.gmnotes         = form.GMNotes;
            }
            Database.Session.Update(infrastructure);

            Database.Session.Flush();
            return(RedirectToRoute("ViewCivilization", new { civilizationID = form.CivilizationID.Value }));
        }
        public ActionResult Edit(RnDColonialDevelopmentForm form)
        {
            Debug.WriteLine($"POST: Civilization R&D Colonial Development Controller: Edit");
            DB_users user = Auth.User;
            var      game = GameState.Game;

            DB_civilization_rnd_infrastructure infrastructure = FindRNDCivilizationInfrastructure(form.ID).Info;

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

            var planet   = game.Sector.PlanetFromID(form.PlanetID.Value);
            var dbStruct = game.GameStatistics.InfrastructureRaw
                           .Where(x => x.id == form.SelectedInfrastructureID.Value)
                           .FirstOrDefault();
            var dbBuildAtStruct = game.GetCivilization(form.CivilizationID.Value).Assets.CompletedInfrastructure
                                  .Where(x => x.CivilizationInfo.id == form.SelectedBuildAtInfrastructureID)
                                  .FirstOrDefault();

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

            infrastructure.name = form.Name;
            if (RequireGMAdminAttribute.IsGMOrAdmin())
            {
                infrastructure.civilization_id  = form.CivilizationID.Value;
                infrastructure.planet_id        = planet.PlanetID;
                infrastructure.civ_struct_id    = dbBuildAtStruct.CivilizationInfo.id;
                infrastructure.struct_id        = dbStruct.id;
                infrastructure.build_percentage = form.BuildPercentage;
            }
            Database.Session.Update(infrastructure);

            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 }));
        }
        public ActionResult Edit(CivilizationResearchForm form)
        {
            Debug.WriteLine($"POST: Civilization Research Controller: Edit");
            DB_users user = Auth.User;
            var      game = GameState.Game;

            DB_civilization_research research = FindCivilizationResearch(form.ID).CivilizationInfo;

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

            if (RequireGMAdminAttribute.IsGMOrAdmin())
            {
                research.research_id     = form.SelectedResearchID.Value;
                research.civilization_id = form.CivilizationID.Value;
            }
            Database.Session.Update(research);

            Database.Session.Flush();
            return(RedirectToRoute("ViewCivilization", new { civilizationID = form.CivilizationID.Value }));
        }
示例#7
0
        public ActionResult Edit(CivilizationUnitsForm form)
        {
            Debug.WriteLine($"POST: Civilization Units Controller: Edit");
            DB_users user = Auth.User;
            var      game = GameState.Game;

            DB_civilization_units unit = FindCivilizationUnit(form.ID).CivilizationInfo;

            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();

            if (dbUnit == null)
            {
                return(View(form));
            }

            unit.name = form.Name;
            if (RequireGMAdminAttribute.IsGMOrAdmin())
            {
                unit.civilization_id = form.CivilizationID.Value;
                unit.unit_id         = dbUnit.id;
                unit.species_id      = (form.SelectedSpeciesID == -1) ? null : form.SelectedSpeciesID;
                unit.current_health  = form.CurrentHealth;
                unit.experience      = form.Experience;
                unit.gmnotes         = form.GMNotes;
            }
            Database.Session.Update(unit);

            Database.Session.Flush();
            return(RedirectToRoute("ViewCivilization", new { civilizationID = form.CivilizationID.Value }));
        }
        public ActionResult Delete(int gameID, int civilizationID, int?rndUnitID)
        {
            Debug.WriteLine($"POST: Civilization RND Unit Controller: Delete - {nameof(rndUnitID)}={rndUnitID}");

            var unit = Database.Session.Load <DB_civilization_rnd_units>(rndUnitID);

            if (unit == null)
            {
                return(HttpNotFound());
            }

            DB_users user         = Auth.User;
            Game     game         = GameState.Game;
            var      civilization = game.GetCivilization(unit.civilization_id);

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

            // Calculate the Refund
            var rndUnit = FindRNDCivilizationUnit(unit.id);
            int refund  = civilization.CalculateRefund(rndUnit.BeingBuilt.Info.rp_cost, unit.build_percentage);

            // Now Delete the Unit
            Database.Session.Delete(unit);

            // Then Update the Refund
            civilization.Info.rp += refund;
            Database.Session.Update(civilization.Info);

            // Flush for Good Measure
            Database.Session.Flush();
            return(RedirectToRoute("game", new { gameID = GameState.GameID }));
        }
        public ActionResult Edit(RnDResearchForm form)
        {
            Debug.WriteLine($"POST: Civilization RND Research Controller: Edit");
            DB_users user = Auth.User;
            var      game = GameState.Game;

            DB_civilization_rnd_research research = FindRNDCivilizationResearch(form.ID).Info;

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

            var dbResearch = game.GameStatistics.Research
                             .Where(x => x.id == form.SelectedResearchID.Value)
                             .FirstOrDefault();
            var dbBuildAtStruct = game.GetCivilization(form.CivilizationID.Value).Assets.CompletedInfrastructure
                                  .Where(x => x.CivilizationInfo.id == form.SelectedBuildAtInfrastructureID)
                                  .FirstOrDefault();

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

            if (RequireGMAdminAttribute.IsGMOrAdmin())
            {
                research.civilization_id = form.CivilizationID.Value;
                research.research_id     = dbResearch.id;
                research.civ_struct_id   = dbBuildAtStruct.CivilizationInfo.id;
            }
            Database.Session.Update(research);

            Database.Session.Flush();
            return(RedirectToRoute("ViewCivilization", new { civilizationID = form.CivilizationID.Value }));
        }
        public ActionResult Delete(int gameID, int civilizationID, int?civilizationInfrastructureID)
        {
            Debug.WriteLine($"POST: Civilization R&D Colonial Development Controller: Delete - {nameof(civilizationInfrastructureID)}={civilizationInfrastructureID}");

            var infrastructure = Database.Session.Load <DB_civilization_rnd_infrastructure>(civilizationInfrastructureID);

            if (infrastructure == null)
            {
                return(HttpNotFound());
            }

            DB_users user         = Auth.User;
            Game     game         = GameState.Game;
            var      civilization = game.GetCivilization(infrastructure.civilization_id);

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

            // Calculate the Refund
            var rndInfrastructure = FindRNDCivilizationInfrastructure(infrastructure.id);
            int refund            = civilization.CalculateRefund(rndInfrastructure.BeingBuilt.Infrastructure.rp_cost, infrastructure.build_percentage);

            // Now Delete the Research
            Database.Session.Delete(infrastructure);

            // Then Update the Refund
            civilization.Info.rp += refund;
            Database.Session.Update(civilization.Info);

            // Flush for Good Measure
            Database.Session.Flush();
            return(RedirectToRoute("game", new { gameID = GameState.GameID }));
        }
示例#11
0
        public ActionResult Delete(int gameID, int civilizationID, int?civilizationInfrastructureID)
        {
            Debug.WriteLine($"POST: Civilization Infrastructure Controller: Delete - {nameof(civilizationInfrastructureID)}={civilizationInfrastructureID}");

            var infrastructure = Database.Session.Load <DB_civilization_infrastructure>(civilizationInfrastructureID);

            if (infrastructure == null)
            {
                return(HttpNotFound());
            }

            DB_users user = Auth.User;
            Game     game = GameState.Game;

            if ((!game.GetCivilization(infrastructure.civilization_id).PlayerOwnsCivilization(user.id) && !RequireGMAdminAttribute.IsGMOrAdmin()) ||
                infrastructure.game_id != game.ID)
            {
                return(RedirectToRoute("game", new { gameID = game.Info.id }));
            }

            Database.Session.Delete(infrastructure);

            Database.Session.Flush();
            return(RedirectToRoute("game", new { gameID = GameState.GameID }));
        }
        public ActionResult Delete(int gameID, int civilizationID, int?civilizationResearchID)
        {
            Debug.WriteLine(string.Format("POST: R&D Research Controller: Delete - civilizationResearchID={0}", civilizationResearchID));

            var research = Database.Session.Load <DB_civilization_research>(civilizationResearchID);

            if (research == null)
            {
                return(HttpNotFound());
            }

            DB_users user = Auth.User;
            Game     game = GameState.Game;

            if ((!game.GetCivilization(research.civilization_id).PlayerOwnsCivilization(user.id) && !RequireGMAdminAttribute.IsGMOrAdmin()) ||
                research.game_id != game.ID)
            {
                return(RedirectToRoute("game", new { gameID = game.Info.id }));
            }

            int tmpCivilizationID = research.civilization_id;

            Database.Session.Delete(research);

            Database.Session.Flush();
            return(RedirectToRoute("ViewCivilization", new { civilizationID = tmpCivilizationID }));
        }
示例#13
0
        public ActionResult Delete(int gameID, int civilizationID, int?battlegroupID)
        {
            Debug.WriteLine($"POST: Battlegroup Ship Controller: Delete - {nameof(battlegroupID)}={battlegroupID}");

            var battlegroup = Database.Session.Load <DB_civilization_battlegroups>(battlegroupID);

            if (battlegroup == null)
            {
                return(HttpNotFound());
            }

            DB_users user = Auth.User;
            Game     game = GameState.Game;

            if ((!game.GetCivilization(battlegroup.civilization_id).PlayerOwnsCivilization(user.id) && !RequireGMAdminAttribute.IsGMOrAdmin()) ||
                battlegroup.game_id != game.ID)
            {
                return(RedirectToRoute("game", new { gameID = game.Info.id }));
            }

            int tempCivilizationID = battlegroup.civilization_id;

            Database.Session.Delete(battlegroup);

            Database.Session.Flush();
            return(RedirectToRoute("ViewCivilization", new { civilizationID = tempCivilizationID }));
        }
示例#14
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 }));
        }