Beispiel #1
0
        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"));
        }
Beispiel #2
0
        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
            }));
        }
Beispiel #3
0
        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;
        }
Beispiel #4
0
        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"));
        }