public ActionResult New(SpeciesForm form) { Debug.WriteLine(string.Format("POST: Species Controller: New - gameID={0}", GameState.GameID)); var game = GameState.Game; DB_species species = new DB_species(); species.game_id = game.Info.id; species.name = form.Name; species.description = form.Description; species.base_attack = form.BaseAttack; species.base_special_attack = form.BaseSpecialAttack; species.base_health = form.BaseHealth; species.base_regeneration = form.BaseRegeneration; species.base_agility = form.BaseAgility; species.gmnotes = form.GMNotes; Database.Session.Save(species); var checkedCivilizations = form.Civilizations .Where(x => x.IsChecked) .ToList(); foreach (var civilizations in checkedCivilizations) { DB_civilization_species civilizationSpecies = new DB_civilization_species(); civilizationSpecies.game_id = game.ID; civilizationSpecies.civilization_id = civilizations.ID; civilizationSpecies.species_id = species.id; Database.Session.Save(civilizationSpecies); } Database.Session.Flush(); return(RedirectToRoute("Statistics")); }
public ActionResult Edit(int gameID, int?speciesID) { Debug.WriteLine(string.Format("GET: Infrastructure Controller: Edit - speciesID={0}", speciesID)); var game = GameState.Game; DB_species species = game.GameStatistics.Species.Find(x => x.id == speciesID); var civilizations = game.Civilizations.Select(x => new Checkbox(x.Info.id, x.Info.name, x.CivilizationHasSpecies(species.id))).ToList(); return(View(new SpeciesForm { ID = species.id, Name = species.name, Description = species.description, BaseAttack = species.base_attack, BaseSpecialAttack = species.base_special_attack, BaseHealth = species.base_health, BaseRegeneration = species.base_regeneration, BaseAgility = species.base_agility, GMNotes = species.gmnotes, Civilizations = civilizations })); }
private void CreateSpeciesAndCivilization(Game game, DB_planets planet, DB_starsystems starsystem, Fotiv_Automator.Models.StarMapGenerator.Models.SentientSpecies species) { // Create the Civilization DB_civilization dbCivilization = new DB_civilization(); dbCivilization.game_id = game.ID; dbCivilization.civilization_traits_1_id = RetrieveCivilizationTrait(species.Traits[0].ToString().SpaceUppercaseLetters()).id; dbCivilization.civilization_traits_2_id = RetrieveCivilizationTrait(species.Traits[1].ToString().SpaceUppercaseLetters()).id; dbCivilization.civilization_traits_3_id = RetrieveCivilizationTrait(species.Traits[2].ToString().SpaceUppercaseLetters()).id; dbCivilization.tech_level_id = RetrieveTechLevel($"TL{(int)species.TechLevel} {species.TechLevel.ToString().SpaceUppercaseLetters()}").id; dbCivilization.colour = "#E4D12F"; dbCivilization.name = $"Civilization {game.Random.Next(int.MaxValue)}"; dbCivilization.rp = 0; Database.Session.Save(dbCivilization); DB_species dbSpecies = new DB_species(); dbSpecies.game_id = game.ID; dbSpecies.name = $"Species {game.Random.Next(int.MaxValue)}"; dbSpecies.description = string.Join(",", species.Classifications.Select(x => x.ToString())); Database.Session.Save(dbSpecies); DB_civilization_species dbCivSpecies = new DB_civilization_species(); dbCivSpecies.game_id = game.ID; dbCivSpecies.civilization_id = dbCivilization.id; dbCivSpecies.species_id = dbSpecies.id; Database.Session.Save(dbCivSpecies); var homeworldInfrastructure = RetrieveInfrastructure("Homeworld"); DB_civilization_infrastructure dbInfrastructure = new DB_civilization_infrastructure(); dbInfrastructure.game_id = game.ID; dbInfrastructure.struct_id = homeworldInfrastructure.id; dbInfrastructure.civilization_id = dbCivilization.id; dbInfrastructure.planet_id = planet.id; dbInfrastructure.current_health = homeworldInfrastructure.base_health; dbInfrastructure.experience = 0; dbInfrastructure.name = homeworldInfrastructure.name; dbInfrastructure.can_upgrade = false; dbInfrastructure.is_military = true; Database.Session.Save(dbInfrastructure); DB_visited_starsystems dbVisitedStarSystem = new DB_visited_starsystems(); dbVisitedStarSystem.game_id = game.ID; dbVisitedStarSystem.civilization_id = dbCivilization.id; dbVisitedStarSystem.starsystem_id = starsystem.id; }
public ActionResult Edit(SpeciesForm form) { Debug.WriteLine(string.Format("POST: Species Controller: Edit - speciesID={0}", form.ID)); var game = GameState.Game; DB_species species = game.GameStatistics.Species.Find(x => x.id == form.ID); if (species.game_id == null || species.game_id != game.Info.id) { return(RedirectToRoute("game", new { gameID = game.Info.id })); } species.name = form.Name; species.description = form.Description; species.base_attack = form.BaseAttack; species.base_special_attack = form.BaseSpecialAttack; species.base_health = form.BaseHealth; species.base_regeneration = form.BaseRegeneration; species.base_agility = form.BaseAgility; species.gmnotes = form.GMNotes; Database.Session.Update(species); var civilizationSpecies = Database.Session.Query <DB_civilization_species>() .Where(x => x.species_id == species.id) .ToList(); var checkedCivilizations = form.Civilizations .Where(x => x.IsChecked) .ToList(); List <DB_civilization_species> toRemove = new List <DB_civilization_species>(); List <Checkbox> toAdd = new List <Checkbox>(); foreach (var civSpecie in civilizationSpecies) { bool foundMatch = false; // First determine what to remove foreach (var checkBox in checkedCivilizations) { // Civilization is already set if (civSpecie.civilization_id == checkBox.ID) { foundMatch = true; break; } } // No longer an Upgrade to this Infrastructure if (!foundMatch) { toRemove.Add(civSpecie); } } // Next determine what is new foreach (var checkBox in checkedCivilizations) { bool foundMatch = false; foreach (var civSpecie in civilizationSpecies) { // Infrastructure Upgrade is already set if (checkBox.ID == civSpecie.civilization_id) { foundMatch = true; break; } } // We have a new upgrade if (!foundMatch) { toAdd.Add(checkBox); } } // Now apply the changes foreach (var remove in toRemove) { Database.Session.Delete(remove); } foreach (var add in toAdd) { Database.Session.Save(new DB_civilization_species(species.id, add.ID, game.Info.id)); } Database.Session.Flush(); return(RedirectToRoute("Statistics")); }