public void ApplyChangesAndNotifyAsync_WhenMankdebolIsSet_UpdateValue_LogInGroupHistory() { var group = new Group { Data = GroupDataJson }; var groupData = new GroupData(); var groupHistoryEntry = new GroupHistoryEntry(); var request = new PatchGroupRequest { Mankdebol = 4 }; _groupHistoryUtil.CreateLogChangeMankdebol(group, null, 4) .Returns(groupHistoryEntry); _jsonUtil.Deserialize <GroupData>(GroupDataJson) .Returns(groupData); _jsonUtil.Serialize(groupData) .Returns(UpdatedGroupDataJson); _util.ApplyChangesAndNotify(group, request, _notificationSession); group.Data.Should().BeEquivalentTo(UpdatedGroupDataJson); groupData.Mankdebol.Should().Be(4); group.HistoryEntries.Should().Contain(groupHistoryEntry); }
public async Task <ActiveStatsModifier> AddModifierAsync(NaheulbookExecutionContext executionContext, int monsterId, ActiveStatsModifier statsModifier) { using (var uow = _unitOfWorkFactory.CreateUnitOfWork()) { var monster = await uow.Monsters.GetAsync(monsterId); if (monster == null) { throw new MonsterNotFoundException(monsterId); } var group = await uow.Groups.GetAsync(monster.GroupId); if (group == null) { throw new GroupNotFoundException(monster.GroupId); } _authorizationUtil.EnsureIsGroupOwner(executionContext, group); var modifiers = _jsonUtil.Deserialize <List <ActiveStatsModifier> >(monster.Modifiers) ?? new List <ActiveStatsModifier>(); _activeStatsModifierUtil.AddModifier(modifiers, statsModifier); monster.Modifiers = _jsonUtil.Serialize(modifiers); await uow.SaveChangesAsync(); var notificationSession = _notificationSessionFactory.CreateSession(); notificationSession.NotifyMonsterAddModifier(monster.Id, statsModifier); await notificationSession.CommitAsync(); return(statsModifier); } }
public T Serdes(T existing, AssetInfo info, AssetMapping mapping, ISerializer s, IJsonUtil jsonUtil) { if (s == null) { throw new ArgumentNullException(nameof(s)); } if (jsonUtil == null) { throw new ArgumentNullException(nameof(jsonUtil)); } if (s.IsWriting()) { if (existing == null) { throw new ArgumentNullException(nameof(existing)); } var json = Encoding.UTF8.GetBytes(jsonUtil.Serialize(existing)); s.Bytes(null, json, json.Length); return(existing); } else { var json = s.Bytes(null, null, (int)s.BytesRemaining); return(jsonUtil.Deserialize <T>(json)); } }
public bool HasFlag(Origin origin, string flagName) { var originFlags = _jsonUtil.Deserialize<IList<NhbkFlag>>(origin.Flags) ?? new List<NhbkFlag>(); if (originFlags.Any(f => f.Type == flagName)) return true; foreach (var bonus in origin.Bonuses) { var flags = _jsonUtil.Deserialize<IList<NhbkFlag>>(bonus.Flags) ?? new List<NhbkFlag>(); if (flags.Any(f => f.Type == flagName)) return true; } foreach (var restrict in origin.Restrictions) { var flags = _jsonUtil.Deserialize<IList<NhbkFlag>>(restrict.Flags) ?? new List<NhbkFlag>(); if (flags.Any(f => f.Type == flagName)) return true; } return false; }
public object Serdes(object existing, AssetInfo info, AssetMapping mapping, ISerializer s, IJsonUtil jsonUtil) { if (s == null) { throw new ArgumentNullException(nameof(s)); } if (jsonUtil == null) { throw new ArgumentNullException(nameof(jsonUtil)); } var bytes = s.Bytes(null, null, (int)s.BytesRemaining); return(jsonUtil.Deserialize <IntStringDictionary>(bytes)); }
public void ApplyChangesAndNotify(Group group, PatchGroupRequest request, INotificationSession notificationSession) { var groupData = _jsonUtil.Deserialize <GroupData>(group.Data) ?? new GroupData(); if (request.Mankdebol.HasValue) { group.AddHistoryEntry(_groupHistoryUtil.CreateLogChangeMankdebol(group, groupData.Mankdebol, request.Mankdebol.Value)); groupData.Mankdebol = request.Mankdebol.Value; } if (request.Debilibeuk.HasValue) { group.AddHistoryEntry(_groupHistoryUtil.CreateLogChangeDebilibeuk(group, groupData.Debilibeuk, request.Debilibeuk.Value)); groupData.Debilibeuk = request.Debilibeuk.Value; } if (request.Date != null) { var newDate = new NhbkDate(request.Date); group.AddHistoryEntry(_groupHistoryUtil.CreateLogChangeDate(group, groupData.Date, newDate)); groupData.Date = newDate; } if (request.FighterIndex != null) { groupData.CurrentFighterIndex = request.FighterIndex.Value; } if (request.Name != null) { group.Name = request.Name; } notificationSession.NotifyGroupChangeGroupData(group.Id, groupData); group.Data = _jsonUtil.Serialize(groupData); }
public static InputConfig Load(string basePath, IFileSystem disk, IJsonUtil jsonUtil) { if (disk == null) { throw new ArgumentNullException(nameof(disk)); } if (jsonUtil == null) { throw new ArgumentNullException(nameof(jsonUtil)); } var inputConfig = new InputConfig(basePath); var configPath = Path.Combine(basePath, "data", "input.json"); if (disk.FileExists(configPath)) { var configText = disk.ReadAllBytes(configPath); inputConfig.Bindings = jsonUtil.Deserialize <IDictionary <InputMode, IDictionary <string, string> > >(configText); } return(inputConfig); }
public static GeneralSettings Load(IGeneralConfig config, IFileSystem disk, IJsonUtil jsonUtil) { if (config == null) { throw new ArgumentNullException(nameof(config)); } if (disk == null) { throw new ArgumentNullException(nameof(disk)); } if (jsonUtil == null) { throw new ArgumentNullException(nameof(jsonUtil)); } var path = config.ResolvePath(UserPath); if (!disk.FileExists(path)) { path = config.ResolvePath(DefaultsPath); } if (!disk.FileExists(path)) { throw new FileNotFoundException($"Could not find default settings file (expected at {path})"); } var settings = disk.FileExists(path) ? jsonUtil.Deserialize <GeneralSettings>(disk.ReadAllBytes(path)) : new GeneralSettings(); if (!settings.ActiveMods.Any()) { settings.ActiveMods.Add("Base"); } return(settings); }
public ItemTemplateData GetItemTemplateData(ItemTemplate itemTemplate) { return(_jsonUtil.Deserialize <ItemTemplateData>(itemTemplate.Data) ?? new ItemTemplateData()); }
public void ApplyCharactersChange(NaheulbookExecutionContext executionContext, PatchCharacterRequest request, Character character, INotificationSession notificationSession) { if (request.Debilibeuk.HasValue) { _authorizationUtil.EnsureIsGroupOwner(executionContext, character.Group); var gmData = _jsonUtil.Deserialize <CharacterGmData>(character.GmData) ?? new CharacterGmData(); gmData.Debilibeuk = request.Debilibeuk.Value; character.GmData = _jsonUtil.Serialize(gmData); notificationSession.NotifyCharacterGmChangeData(character, gmData); } if (request.Mankdebol.HasValue) { _authorizationUtil.EnsureIsGroupOwner(executionContext, character.Group); var gmData = _jsonUtil.Deserialize <CharacterGmData>(character.GmData) ?? new CharacterGmData(); gmData.Mankdebol = request.Mankdebol.Value; character.GmData = _jsonUtil.Serialize(gmData); notificationSession.NotifyCharacterGmChangeData(character, gmData); } if (request.IsActive.HasValue) { _authorizationUtil.EnsureIsGroupOwner(executionContext, character.Group); character.IsActive = request.IsActive.Value; notificationSession.NotifyCharacterGmChangeActive(character); } if (request.Color != null) { _authorizationUtil.EnsureIsGroupOwner(executionContext, character.Group); character.Color = request.Color; notificationSession.NotifyCharacterGmChangeColor(character); } if (request.OwnerId != null) { _authorizationUtil.EnsureIsGroupOwner(executionContext, character.Group); character.OwnerId = request.OwnerId.Value; } if (request.Target != null) { _authorizationUtil.EnsureIsGroupOwner(executionContext, character.Group); if (request.Target.IsMonster) { character.TargetedCharacterId = null; character.TargetedMonsterId = request.Target.Id; } else { character.TargetedMonsterId = null; character.TargetedCharacterId = request.Target.Id; } notificationSession.NotifyCharacterGmChangeTarget(character, request.Target); } if (request.Ev.HasValue) { character.AddHistoryEntry(_characterHistoryUtil.CreateLogChangeEv(character, character.Ev, request.Ev)); character.Ev = request.Ev; notificationSession.NotifyCharacterChangeEv(character); } if (request.Ea.HasValue) { character.AddHistoryEntry(_characterHistoryUtil.CreateLogChangeEa(character, character.Ea, request.Ea)); character.Ea = request.Ea; notificationSession.NotifyCharacterChangeEa(character); } if (request.FatePoint.HasValue) { character.AddHistoryEntry(_characterHistoryUtil.CreateLogChangeFatePoint(character, character.FatePoint, request.FatePoint)); character.FatePoint = request.FatePoint.Value; notificationSession.NotifyCharacterChangeFatePoint(character); } if (request.Experience.HasValue) { character.AddHistoryEntry(_characterHistoryUtil.CreateLogChangeExperience(character, character.Experience, request.Experience)); character.Experience = request.Experience.Value; notificationSession.NotifyCharacterChangeExperience(character); } if (request.Sex != null) { character.AddHistoryEntry(_characterHistoryUtil.CreateLogChangeSex(character, character.Sex, request.Sex)); character.Sex = request.Sex; notificationSession.NotifyCharacterChangeSex(character); } if (request.Name != null) { character.AddHistoryEntry(_characterHistoryUtil.CreateLogChangeName(character, character.Name, request.Name)); character.Name = request.Name; notificationSession.NotifyCharacterChangeName(character); } if (request.Notes != null) { character.Notes = request.Notes; notificationSession.NotifyCharacterChangeNotes(character); } }