public static HumanPersonStorageData Create(HumanPerson humanPerson) { if (humanPerson is null) { throw new ArgumentNullException(nameof(humanPerson)); } var storageData = new HumanPersonStorageData { Survival = humanPerson.GetModule <ISurvivalModule>().Stats.Select(x => new HumanSurvivalStatStorageData { Type = x.Type, Value = x.ValueShare }).ToArray(), Equipments = humanPerson.GetModule <IEquipmentModule>().Select(CreateEquipmentStorageData).ToArray(), Inventory = humanPerson.GetModule <IInventoryModule>().CalcActualItems().Select(CreatePropStorageData) .ToArray(), Perks = humanPerson.GetModule <IEvolutionModule>().Perks.Select(CreatePerkStorageData).ToArray() }; return(storageData); }
private static void RestoreEvolutionData(ISchemeService schemeService, HumanPersonStorageData storedPerson, EvolutionModule evolutionData) { var perksFromSave = new List <IPerk>(); foreach (var storedPerk in storedPerson.Perks) { var perkScheme = schemeService.GetScheme <IPerkScheme>(storedPerk.Sid); var perk = new Perk { Scheme = perkScheme }; if (storedPerk.Level != null) { perk.CurrentLevel = new PerkLevel(storedPerk.Level.Value, storedPerk.SubLevel.Value); } // TODO Доработать, когда будет доработана прокачка больше, чем на один лвл var currentLevelScheme = perkScheme.Levels[0]; perk.CurrentJobs = currentLevelScheme.Jobs.Select(job => new PerkJob(job) { IsComplete = storedPerk.Jobs.Single(storedJob => storedJob.Type == job.Type && storedJob.Scope == job.Scope).IsComplete, Progress = storedPerk.Jobs.Single(storedJob => storedJob.Type == job.Type && storedJob.Scope == job.Scope).Progress, }).ToArray(); perksFromSave.Add(perk); } evolutionData.SetPerksForced(perksFromSave); }
public static HumanPersonStorageData Create(HumanPerson humanPerson) { var storageData = new HumanPersonStorageData(); storageData.Survival = humanPerson.Survival.Stats.Select(x => new HumanSurvivalStatStorageData { Type = x.Type, Value = x.ValueShare }).ToArray(); storageData.Equipments = humanPerson.EquipmentCarrier.Select(CreateEquipmentStorageData).ToArray(); storageData.Inventory = humanPerson.Inventory.CalcActualItems().Select(CreatePropStorageData).ToArray(); storageData.Perks = humanPerson.EvolutionData.Perks.Select(CreatePerkStorageData).ToArray(); return(storageData); }