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