public RealmInventory(SaveCampaignData saveData)
 {
     Trinkets = new List <Trinket>();
     for (int i = 0; i < saveData.trinketData.Count; i++)
     {
         Trinkets.Add((Trinket)DarkestDungeonManager.Data.Items["trinket"][saveData.trinketData[i]]);
     }
 }
Esempio n. 2
0
    public RaidInfo(SaveCampaignData saveData)
    {
        QuestCompleted = saveData.QuestCompleted;
        Quest          = saveData.Quest;
        Dungeon        = saveData.Dungeon;
        RaidParty      = new RaidParty(saveData.RaidParty);

        ExploredRoomCount = saveData.ExploredRoomCount;
        if (Dungeon.Rooms.ContainsKey(saveData.CurrentLocation))
        {
            CurrentLocation = Dungeon.Rooms[saveData.CurrentLocation];
        }
        else
        {
            foreach (var hallway in Dungeon.Hallways)
            {
                CurrentLocation = hallway.Value.Halls.Find(hallSector => hallSector.Id == saveData.CurrentLocation);
                if (CurrentLocation != null)
                {
                    break;
                }
            }
        }
        if (saveData.LastRoom != "")
        {
            LastRoom = Dungeon.Rooms[saveData.LastRoom];
        }
        if (saveData.PreviousLastSector != "")
        {
            foreach (var hallway in Dungeon.Hallways)
            {
                PreviousLastSector = hallway.Value.Halls.Find(hallSector => hallSector.Id == saveData.PreviousLastSector);
                if (PreviousLastSector != null)
                {
                    break;
                }
            }
        }
        if (saveData.LastSector != "")
        {
            foreach (var hallway in Dungeon.Hallways)
            {
                LastSector = hallway.Value.Halls.Find(hallSector => hallSector.Id == saveData.LastSector);
                if (LastSector != null)
                {
                    break;
                }
            }
        }

        KilledMonsters     = new List <string>(saveData.KilledMonsters);
        InvestigatedCurios = new List <string>(saveData.InvestigatedCurios);
    }
Esempio n. 3
0
    public Estate(SaveCampaignData saveData)
    {
        RosterIds = new List <int>();
        for (int i = 1; i < 100; i++)
        {
            RosterIds.Add(i);
        }

        EstateTitle = saveData.HamletTitle;

        Currencies = new Dictionary <string, int>();
        Currencies.Add("gold", saveData.GoldAmount);
        Currencies.Add("bust", saveData.BustsAmount);
        Currencies.Add("deed", saveData.DeedsAmount);
        Currencies.Add("portrait", saveData.PortraitsAmount);
        Currencies.Add("crest", saveData.CrestsAmount);

        HeroPurchases = saveData.InstancedPurchases;
        TownPurchases = saveData.BuildingUpgrades;

        Buildings = new Dictionary <BuildingType, Building>();
        Abbey     = DarkestDungeonManager.Data.Buildings["abbey"] as Abbey;
        Buildings.Add(BuildingType.Abbey, Abbey);
        Tavern = DarkestDungeonManager.Data.Buildings["tavern"] as Tavern;
        Buildings.Add(BuildingType.Tavern, Tavern);
        Sanitarium = DarkestDungeonManager.Data.Buildings["sanitarium"] as Sanitarium;
        Buildings.Add(BuildingType.Sanitarium, Sanitarium);
        Blacksmith = DarkestDungeonManager.Data.Buildings["blacksmith"] as Blacksmith;
        Buildings.Add(BuildingType.Blacksmith, Blacksmith);
        Guild = DarkestDungeonManager.Data.Buildings["guild"] as Guild;
        Buildings.Add(BuildingType.Guild, Guild);
        NomadWagon = DarkestDungeonManager.Data.Buildings["nomad_wagon"] as NomadWagon;
        Buildings.Add(BuildingType.NomadWagon, NomadWagon);
        StageCoach = DarkestDungeonManager.Data.Buildings["stage_coach"] as StageCoach;
        Buildings.Add(BuildingType.StageCoach, StageCoach);
        CampingTrainer = DarkestDungeonManager.Data.Buildings["camping_trainer"] as CampingTrainer;
        Buildings.Add(BuildingType.CampingTrainer, CampingTrainer);
        Graveyard = new Graveyard();
        Buildings.Add(BuildingType.Graveyard, Graveyard);
        Statue = new Statue();
        Buildings.Add(BuildingType.Statue, Statue);

        Abbey.InitializeBuilding(TownPurchases);
        Tavern.InitializeBuilding(TownPurchases);
        Sanitarium.InitializeBuilding(TownPurchases);
        Blacksmith.InitializeBuilding(TownPurchases);
        Guild.InitializeBuilding(TownPurchases);
        CampingTrainer.InitializeBuilding(TownPurchases);
        NomadWagon.InitializeBuilding(TownPurchases);
        StageCoach.InitializeBuilding(TownPurchases);
        Graveyard.Records.AddRange(saveData.DeathRecords);
    }
    public void LoadSaveFrame()
    {
        saveData = SaveLoadManager.ReadSave(slotId);

        if (saveData == null)
        {
            FillEmptySave();
        }
        else
        {
            FillPopulatedSave();
        }
    }
    void FillEmptySave()
    {
        saveData = null;
        Color color;

        ColorUtility.TryParseHtmlString("#323232FF", out color);
        title.color      = color;
        title.text       = "Click here to begin campaign...";
        location.text    = "";
        currentWeek.text = "";
        saveEnvelopeAnimator.SetBool("Opened", false);
        nukeFrame.gameObject.SetActive(false);
    }
Esempio n. 6
0
    public void UpdateActivitySlots(SaveCampaignData saveData)
    {
        bool  isActivityFree = DarkestDungeonManager.Campaign.EventModifiers.IsActivityFree(Id);
        float costModifier   = DarkestDungeonManager.Campaign.EventModifiers.ActivityCostModifier(Id);

        for (int i = 0; i < 3; i++)
        {
            if (i + 1 <= QuirkSlots)
            {
                if (saveData.sanitariumActivitySlots.Count > 0 && saveData.sanitariumActivitySlots[0].Count >= i)
                {
                    var activityHero = DarkestDungeonManager.Campaign.Heroes.Find(hero =>
                                                                                  hero.RosterId == saveData.sanitariumActivitySlots[0][i].HeroRosterId);

                    TreatmentSlots[i].Hero = activityHero;
                    if (activityHero != null)
                    {
                        TreatmentSlots[i].Status = saveData.sanitariumActivitySlots[0][i].Status;
                    }
                    else
                    {
                        TreatmentSlots[i].Status = ActivitySlotStatus.Available;
                    }

                    TreatmentSlots[i].TargetDiseaseQuirk  = saveData.sanitariumActivitySlots[0][i].TargetDiseaseQuirk;
                    TreatmentSlots[i].TargetPositiveQuirk = saveData.sanitariumActivitySlots[0][i].TargetPositiveQuirk;
                    TreatmentSlots[i].TargetNegativeQuirk = saveData.sanitariumActivitySlots[0][i].TargetNegativeQuirk;
                }

                if (isActivityFree)
                {
                    TreatmentSlots[i].UpdateTreatmentSlot(true, 0, 0, 0, 0);
                }
                else
                {
                    TreatmentSlots[i].UpdateTreatmentSlot(true, (int)(NegativeQuirkCost.Amount * costModifier),
                                                          (int)(PositiveQuirkCost.Amount * costModifier), (int)(PermNegativeQuirkCost.Amount * costModifier), 0);
                }
            }
            else
            {
                TreatmentSlots[i].UpdateTreatmentSlot(false, (int)(NegativeQuirkCost.Amount * costModifier),
                                                      (int)(PositiveQuirkCost.Amount * costModifier), (int)(PermNegativeQuirkCost.Amount * costModifier), 0);
            }
        }
    }
    public void SaveNamingCompleted()
    {
        if (titleInput.text.Length == 0)
        {
            FillEmptySave();
            return;
        }
        saveData             = new SaveCampaignData();
        saveData.HamletTitle = titleInput.text;
        saveData.SaveId      = slotId;
        SaveLoadManager.WriteStartingSave(saveData);
        saveData = SaveLoadManager.ReadSave(slotId);
        FillPopulatedSave();

        titleInput.interactable = false;
        titleInput.enabled      = false;
        DarkestSoundManager.PlayOneShot("event:/ui/town/button_click");
        SaveSelector.SaveNamingCompleted();
    }
Esempio n. 8
0
    public void UpdateActivitySlots(SaveCampaignData saveData)
    {
        for (int activityIndex = 0; activityIndex < Activities.Count; activityIndex++)
        {
            bool  isActivityLocked = DarkestDungeonManager.Campaign.EventModifiers.IsActivityLocked(Activities[activityIndex].Id);
            bool  isActivityFree   = DarkestDungeonManager.Campaign.EventModifiers.IsActivityFree(Activities[activityIndex].Id);
            float costModifier     = DarkestDungeonManager.Campaign.EventModifiers.ActivityCostModifier(Activities[activityIndex].Id);

            for (int i = 0; i < 3; i++)
            {
                if (i + 1 <= Activities[activityIndex].NumberOfSlots)
                {
                    if (saveData.abbeyActivitySlots.Count > activityIndex && saveData.abbeyActivitySlots[activityIndex].Count > i)
                    {
                        var activityHero = DarkestDungeonManager.Campaign.Heroes.Find(hero =>
                                                                                      hero.RosterId == saveData.abbeyActivitySlots[activityIndex][i].HeroRosterId);

                        Activities[activityIndex].ActivitySlots[i].Hero = activityHero;
                        Activities[activityIndex].ActivitySlots[i].UpdateSlot(isActivityLocked ? false : true,
                                                                              isActivityFree ? 0 : (int)(Activities[activityIndex].ActivityCost.Amount * costModifier));
                    }
                    else
                    {
                        Activities[activityIndex].ActivitySlots[i].UpdateSlot(isActivityLocked ? false : true,
                                                                              isActivityFree ? 0 : (int)(Activities[activityIndex].ActivityCost.Amount * costModifier));
                    }
                }
                else
                {
                    Activities[activityIndex].ActivitySlots[i].UpdateSlot(false,
                                                                          isActivityFree ? 0 : (int)(Activities[activityIndex].ActivityCost.Amount * costModifier));
                }

                Activities[activityIndex].ActivitySlots[i].Status = saveData.abbeyActivitySlots[activityIndex][i].Status;

                if (Activities[activityIndex].ActivitySlots[i].Hero == null && Activities[activityIndex].ActivitySlots[i].Status == ActivitySlotStatus.Paid)
                {
                    Activities[activityIndex].ActivitySlots[i].Status = ActivitySlotStatus.Available;
                    UnityEngine.Debug.LogError("Empty paid place in abbey! Activity: " + Activities[activityIndex].Id + " Slot: " + i);
                }
            }
        }
    }
Esempio n. 9
0
    public Estate(SaveCampaignData saveData)
    {
        rosterIds = new List <int>();
        for (int i = 1; i < 100; i++)
        {
            rosterIds.Add(i);
        }

        EstateTitle = saveData.hamletTitle;

        Currencies = new Dictionary <string, EstateCurrency>();
        Currencies.Add("gold", new EstateCurrency(saveData.goldAmount, false));
        Currencies.Add("bust", new EstateCurrency(saveData.bustsAmount, true));
        Currencies.Add("deed", new EstateCurrency(saveData.deedsAmount, true));
        Currencies.Add("portrait", new EstateCurrency(saveData.portraitsAmount, true));
        Currencies.Add("crest", new EstateCurrency(saveData.crestsAmount, true));

        HeroPurchases = saveData.instancedPurchases;
        TownPurchases = saveData.buildingUpgrades;

        Abbey          = DarkestDungeonManager.Data.Buildings["abbey"] as Abbey;
        Tavern         = DarkestDungeonManager.Data.Buildings["tavern"] as Tavern;
        Sanitarium     = DarkestDungeonManager.Data.Buildings["sanitarium"] as Sanitarium;
        Blacksmith     = DarkestDungeonManager.Data.Buildings["blacksmith"] as Blacksmith;
        Guild          = DarkestDungeonManager.Data.Buildings["guild"] as Guild;
        NomadWagon     = DarkestDungeonManager.Data.Buildings["nomad_wagon"] as NomadWagon;
        StageCoach     = DarkestDungeonManager.Data.Buildings["stage_coach"] as StageCoach;
        CampingTrainer = DarkestDungeonManager.Data.Buildings["camping_trainer"] as CampingTrainer;
        Graveyard      = new Graveyard();
        Statue         = new Statue();
        Abbey.InitializeBuilding(TownPurchases);
        Tavern.InitializeBuilding(TownPurchases);
        Sanitarium.InitializeBuilding(TownPurchases);
        Blacksmith.InitializeBuilding(TownPurchases);
        Guild.InitializeBuilding(TownPurchases);
        CampingTrainer.InitializeBuilding(TownPurchases);
        NomadWagon.InitializeBuilding(TownPurchases);
        StageCoach.InitializeBuilding(TownPurchases);
        Graveyard.Records.AddRange(saveData.deathRecords);
    }
Esempio n. 10
0
    public void Load(SaveCampaignData saveData)
    {
        EventModifiers = saveData.EventModifers;

        foreach (var townEvent in DarkestDungeonManager.Data.EventDatabase.Events)
        {
            townEvent.SetDefaultState();
        }

        SaveSlotId     = saveData.SaveId;
        CurrentWeek    = saveData.CurrentWeek;
        QuestsComleted = saveData.QuestsCompleted;

        Estate         = new Estate(saveData);
        RealmInventory = new RealmInventory(saveData);
        CompletedPlot  = saveData.CompletedPlot;

        Heroes = new List <Hero>();
        saveData.RosterHeroes.ForEach(hero => Heroes.Add(new Hero(Estate, hero)));
        saveData.StageCoachHeroes.ForEach(hero => Estate.StageCoach.Heroes.Add(new Hero(Estate, hero)));
        saveData.StageEventHeroes.ForEach(hero => Estate.StageCoach.EventHeroes.Add(new Hero(Estate, hero)));
        saveData.WagonTrinkets.ForEach(trinketName => Estate.NomadWagon.Trinkets.Add(DarkestDungeonManager.Data.Items["trinket"][trinketName] as Trinket));

        Estate.StageCoach.GraveIndexes = saveData.DeathEventData;
        Estate.Abbey.UpdateActivitySlots(saveData);
        Estate.Tavern.UpdateActivitySlots(saveData);
        Estate.Sanitarium.QuirkActivity.UpdateActivitySlots(saveData);
        Estate.Sanitarium.DiseaseActivity.UpdateActivitySlots(saveData);

        Dungeons = saveData.DungeonProgress;
        Quests   = saveData.GeneratedQuests;
        if (Quests.Count == 0 && saveData.InRaid == false)
        {
            GenerateQuests();
        }

        Logs = new List <WeekActivityLog>(saveData.ActivityLog);
        if (Logs.Count == 0)
        {
            Logs.Add(new WeekActivityLog(CurrentWeek));
        }

        EventsOption = DarkestDungeonManager.Data.EventDatabase.Settings[2];

        if (saveData.CurrentEvent != "")
        {
            TriggeredEvent = DarkestDungeonManager.Data.EventDatabase.Events.Find(townEvent => townEvent.Id == saveData.CurrentEvent);
            if (TriggeredEvent != null)
            {
                EventModifiers.EventData.AddRange(TriggeredEvent.Data);
            }
        }

        if (saveData.GuaranteedEvent != "")
        {
            GuaranteedEvent = DarkestDungeonManager.Data.EventDatabase.Events.Find(townEvent => townEvent.Id == saveData.GuaranteedEvent);
            if (GuaranteedEvent != null)
            {
                EventModifiers.EventData.AddRange(GuaranteedEvent.Data);
            }
        }

        foreach (var saveEventEntry in saveData.EventData)
        {
            var targetEvent = DarkestDungeonManager.Data.EventDatabase.Events.Find(townEvent => townEvent.Id == saveEventEntry.EventId);
            if (targetEvent != null)
            {
                targetEvent.UpdateFromSave(saveEventEntry);
            }
        }

        NarrationCampaignInfo = saveData.CampaignNarrations;
        NarrationRaidInfo     = saveData.RaidNarrations;
        NarrationTownInfo     = saveData.TownNarrations;
    }
Esempio n. 11
0
    public void Load(SaveCampaignData saveData)
    {
        EventModifiers = saveData.eventModifers;

        foreach (var townEvent in DarkestDungeonManager.Data.EventDatabase.Events)
            townEvent.SetDefaultState();

        SaveSlotId = saveData.saveId;
        CurrentWeek = saveData.currentWeek;

        QuestsComleted = saveData.questsCompleted;

        Estate = new Estate(saveData);
        RealmInventory = new RealmInventory(saveData);
        CompletedPlot = saveData.completedPlot;

        Heroes = new List<Hero>();
        for (int i = 0; i < saveData.saveHeroData.Length; i++)
            Heroes.Add(new Hero(Estate, saveData.saveHeroData[i]));
        for (int i = 0; i < saveData.stageCoachData.Length; i++)
            Estate.StageCoach.Heroes.Add(new Hero(Estate, saveData.stageCoachData[i]));
        for (int i = 0; i < saveData.stageEventData.Length; i++)
            Estate.StageCoach.EventHeroes.Add(new Hero(Estate, saveData.stageEventData[i]));
        for (int i = 0; i < saveData.wagonData.Count; i++)
            Estate.NomadWagon.Trinkets.Add(DarkestDungeonManager.Data.Items["trinket"][saveData.wagonData[i]] as Trinket);
        Estate.StageCoach.GraveIndexes = saveData.deathEventData;

        Estate.Abbey.UpdateActivitySlots(saveData);
        Estate.Tavern.UpdateActivitySlots(saveData);
        Estate.Sanitarium.QuirkActivity.UpdateActivitySlots(saveData);
        Estate.Sanitarium.DiseaseActivity.UpdateActivitySlots(saveData);

        Dungeons = saveData.saveDungeonData;
        Quests = saveData.generatedQuests;
        if (Quests.Count == 0 && saveData.InRaid == false)
            GenerateQuests();

        Logs = new List<WeekActivityLog>(saveData.activityLog);
        if (Logs.Count == 0)
            Logs.Add(new WeekActivityLog(CurrentWeek));

        EventsOption = DarkestDungeonManager.Data.EventDatabase.Settings[2];

        if(saveData.currentEvent != "")
        {
            TriggeredEvent = DarkestDungeonManager.Data.EventDatabase.Events.Find(townEvent => townEvent.Id == saveData.currentEvent);
            if (TriggeredEvent != null)
                EventModifiers.EventData.AddRange(TriggeredEvent.Data);
        }

        if(saveData.guaranteedEvent != "")
        {
            GuaranteedEvent = DarkestDungeonManager.Data.EventDatabase.Events.Find(townEvent => townEvent.Id == saveData.guaranteedEvent);
            if (GuaranteedEvent != null)
                EventModifiers.EventData.AddRange(GuaranteedEvent.Data);
        }

        foreach(var saveEventEntry in saveData.eventData)
        {
            var targetEvent = DarkestDungeonManager.Data.EventDatabase.Events.Find(townEvent => townEvent.Id == saveEventEntry.EventId);
            if(targetEvent != null)
                targetEvent.UpdateFromSave(saveEventEntry);
        }

        NarrationCampaignInfo = saveData.campaignNarrations;
        NarrationRaidInfo = saveData.raidNarrations;
        NarrationTownInfo = saveData.townNarrations;
    }
Esempio n. 12
0
 public void UpdateActivitySlots(SaveCampaignData saveData)
 {
     UpdateActivitySlots(saveData.TavernActivitySlots);
 }