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]]); } }
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); }
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); }
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(); }
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); } } } }
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); }
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; }
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; }
public void UpdateActivitySlots(SaveCampaignData saveData) { UpdateActivitySlots(saveData.TavernActivitySlots); }