Esempio n. 1
0
        public void loadDungeon(int x, int y, string dungeonName, string[] party, bool combat = false)
        {
            //Verify that the dungeon selection is legitimate
            if (combat || MapDataClasses.MapDataManager.validateDungeonSelection(currentMap.name, x, y, currentMap, dungeonName))
            {
                this.combatCountdown = rng.getNumber(MapDataClasses.MapDataManager.getMinCombatCount(dungeonName), MapDataClasses.MapDataManager.getMaxCombatCount(dungeonName));
                if (MapDataClasses.MapDataManager.getHubMap(dungeonName) == dungeonName)
                {
                    //Need to disband the party that is currently being used
                    currentMap = MapDataClasses.MapDataManager.createMap(dungeonName);
                    this.player.getActiveParty().location = currentMap;
                    ObjectiveDirector.markCompletedObjectives(this.player);
                    player.rootX = currentMap.startX;
                    player.rootY = currentMap.startY;
                    setMap(dungeonName);

                    var currentParty = new PlayerModels.Models.PartyModel();
                    foreach (PlayerModels.Models.PartyModel pm in player.parties)
                    {
                        if (pm.uniq == player.activeParty)
                        {
                            currentParty = pm;
                        }
                    }

                    if (player.parties.Contains(currentParty))
                    {
                        player.parties.Remove(currentParty);
                    }

                    player.activeParty = 0;

                    db.SaveChanges();
                }
                else
                {
                    currentMap = MapDataClasses.MapDataManager.createMap(dungeonName);

                    //Create party and set to default
                    PlayerModels.Models.PartyModel pm = new PlayerModels.Models.PartyModel();
                    pm.x          = currentMap.startX;
                    pm.y          = currentMap.startY;
                    pm.location   = currentMap;
                    pm.maxSize    = party.Length;
                    pm.characters = new List <PlayerModels.Models.PartyCharacterModel>();
                    foreach (string s in party)
                    {
                        foreach (PlayerModels.Models.CharacterModel cm in player.characters)
                        {
                            if (cm.name == s)
                            {
                                pm.characters.Add(new PlayerModels.Models.PartyCharacterModel()
                                {
                                    characterUniq = cm.uniq, hp = cm.stats.maxHP, mp = cm.stats.maxMP, usedAbilities = new List <string>()
                                });
                            }
                        }
                    }

                    player.parties.Add(pm);

                    player.copyTo(user.player);
                    db.SaveChanges();
                    player.activeParty = pm.uniq;
                    player.copyTo(user.player);
                    this.player.getActiveParty().location = currentMap;
                    ObjectiveDirector.markCompletedObjectives(this.player);
                    player.rootX = currentMap.startX;
                    player.rootY = currentMap.startY;
                    setMap(dungeonName);
                    db.SaveChanges();
                }
            }
        }
Esempio n. 2
0
        public void loadDungeon(int x, int y, string dungeonName, string[] party, bool combat = false)
        {
            //Verify that the dungeon selection is legitimate
            if (combat || MapDataClasses.MapDataManager.validateDungeonSelection(currentMap.name, x, y, currentMap, dungeonName))
            {
                this.combatCountdown = rng.getNumber(MapDataClasses.MapDataManager.getMinCombatCount(dungeonName), MapDataClasses.MapDataManager.getMaxCombatCount(dungeonName));
                if (MapDataClasses.MapDataManager.getHubMap(dungeonName) == dungeonName)
                {
                    //Need to disband the party that is currently being used
                    currentMap = MapDataClasses.MapDataManager.createMap(dungeonName);
                    this.player.getActiveParty().location = currentMap;
                    ObjectiveDirector.markCompletedObjectives(this.player);
                    player.rootX = currentMap.startX;
                    player.rootY = currentMap.startY;
                    setMap(dungeonName);

                    var currentParty = new PlayerModels.Models.PartyModel();
                    foreach (PlayerModels.Models.PartyModel pm in player.parties)
                    {
                        if (pm.uniq == player.activeParty)
                        {
                            currentParty = pm;
                        }
                    }

                    if (player.parties.Contains(currentParty))
                    {
                        player.parties.Remove(currentParty);
                    }

                    player.activeParty = 0;

                    db.SaveChanges();
                }
                else
                {
                    currentMap = MapDataClasses.MapDataManager.createMap(dungeonName);

                    //Create party and set to default
                    PlayerModels.Models.PartyModel pm = new PlayerModels.Models.PartyModel();
                    pm.x = currentMap.startX;
                    pm.y = currentMap.startY;
                    pm.location = currentMap;
                    pm.maxSize = party.Length;
                    pm.characters = new List<PlayerModels.Models.PartyCharacterModel>();
                    foreach (string s in party)
                    {
                        foreach (PlayerModels.Models.CharacterModel cm in player.characters)
                        {
                            if (cm.name == s)
                            {
                                pm.characters.Add(new PlayerModels.Models.PartyCharacterModel() { characterUniq = cm.uniq, hp = cm.stats.maxHP, mp = cm.stats.maxMP, usedAbilities = new List<string>() });
                            }
                        }
                    }

                    player.parties.Add(pm);

                    player.copyTo(user.player);
                    db.SaveChanges();
                    player.activeParty = pm.uniq;
                    player.copyTo(user.player);
                    this.player.getActiveParty().location = currentMap;
                    ObjectiveDirector.markCompletedObjectives(this.player);
                    player.rootX = currentMap.startX;
                    player.rootY = currentMap.startY;
                    setMap(dungeonName);
                    db.SaveChanges();
                }

            }
        }