public void AddOrUpdate(string name, string value) { if (_settings.TryGetValue(name, out var setting)) { setting.Data = value; } else { _settings[name] = new Setting(_idGeneratorService.GetNextId(IdKind.Setting), value); } }
public async Task <bool> SendAsync(string receiver, string title, string message) { // ToDo consume pen // ToDo check for ignore AccountEntity account; using (var db = _databaseService.Open <AuthContext>()) account = await db.Accounts.FirstOrDefaultAsync(x => x.Nickname == receiver); if (account == null) { return(false); } using (var db = _databaseService.Open <GameContext>()) { var entity = new PlayerMailEntity { Id = _idGeneratorService.GetNextId(IdKind.Mail), PlayerId = account.Id, SenderPlayerId = (int)Player.Account.Id, SentDate = DateTimeOffset.Now.ToUnixTimeSeconds(), Title = title, Message = message, IsMailNew = true, IsMailDeleted = false }; db.PlayerMails.Add(entity); var plr = _playerManager.GetByNickname(receiver); plr?.Mailbox.Add(new Mail(entity, receiver)); return(true); } }
/// <summary> /// Creates a new item /// </summary> public PlayerItem Create(ShopItemInfo shopItemInfo, ShopPrice price, byte color, uint effect, uint count) { var itemId = _idGeneratorService.GetNextId(IdKind.Item); var item = new PlayerItem(_gameDataService, this, itemId, shopItemInfo, price, color, effect, DateTimeOffset.Now, count); _items.TryAdd(item.Id, item); Player.Session.Send(new SInventoryActionAckMessage(InventoryAction.Add, item.Map <PlayerItem, ItemDto>())); return(item); }
public Deny Add(ulong accountId, string nickname) { if (_denies.ContainsKey(accountId)) { return(null); } var deny = new Deny(_idGeneratorService.GetNextId(IdKind.Deny), accountId, nickname); _denies.TryAdd(deny.DenyId, deny); return(deny); }
public License Acquire(ItemLicense itemLicense) { _logger.Information("Acquiring {License}", itemLicense); var licenseReward = _gameDataService.LicenseRewards.GetValueOrDefault(itemLicense); // TODO Should we require license rewards or no? // If no we need some other way to determine if a license is available to be acquired or no //if (!shop.Licenses.TryGetValue(license, out licenseInfo)) //throw new LicenseNotFoundException($"License {license} does not exist"); var license = this[itemLicense]; // If this is the first time completing this license // give the player the item reward if (license == null && licenseReward != null) { _player.Inventory.Create(licenseReward.ShopItemInfo, licenseReward.ShopPrice, licenseReward.Color, 0, 0); _player.Session.Send(new SLicensedAckMessage(itemLicense, licenseReward.ItemNumber)); } if (license != null) { ++license.TimesCompleted; } else { license = new License(_idGeneratorService.GetNextId(IdKind.License), itemLicense, DateTimeOffset.Now, 1); _licenses.TryAdd(itemLicense, license); // _player.Session.SendAsync(new SLicensedAckMessage(itemLicense, licenseReward?.ItemNumber ?? 0)); _logger.Information("Acquired {License}", itemLicense); } return(license); }
/// <summary> /// Creates a new character /// </summary> public (Character character, CharacterCreateResult result) Create(byte slot, CharacterGender gender, byte hair, byte face, byte shirt, byte pants, byte gloves, byte shoes) { var logger = _logger.ForContext( ("Method", "Create"), ("Slot", slot), ("Gender", gender), ("Hair", hair), ("Face", face), ("Shirt", shirt), ("Pants", pants), ("Gloves", gloves), ("Shoes", shoes)); if (Count >= 3) { return(null, CharacterCreateResult.LimitReached); } if (_characters.ContainsKey(slot)) { return(null, CharacterCreateResult.SlotInUse); } var defaultHair = _gameDataService.GetDefaultItem(gender, CostumeSlot.Hair, hair); if (defaultHair == null) { logger.Warning("Invalid hair"); return(null, CharacterCreateResult.InvalidDefaultItem); } var defaultFace = _gameDataService.GetDefaultItem(gender, CostumeSlot.Face, face); if (defaultFace == null) { logger.Warning("Invalid face"); return(null, CharacterCreateResult.InvalidDefaultItem); } var defaultShirt = _gameDataService.GetDefaultItem(gender, CostumeSlot.Shirt, shirt); if (defaultShirt == null) { logger.Warning("Invalid shirt"); return(null, CharacterCreateResult.InvalidDefaultItem); } var defaultPants = _gameDataService.GetDefaultItem(gender, CostumeSlot.Pants, pants); if (defaultPants == null) { logger.Warning("Invalid pants"); return(null, CharacterCreateResult.InvalidDefaultItem); } var defaultGloves = _gameDataService.GetDefaultItem(gender, CostumeSlot.Gloves, gloves); if (defaultGloves == null) { logger.Warning("Invalid gloves"); return(null, CharacterCreateResult.InvalidDefaultItem); } var defaultShoes = _gameDataService.GetDefaultItem(gender, CostumeSlot.Shoes, shoes); if (defaultShoes == null) { logger.Warning("Invalid shoes"); return(null, CharacterCreateResult.InvalidDefaultItem); } var character = new Character(this, _idGeneratorService.GetNextId(IdKind.Character), slot, gender, defaultHair, defaultFace, defaultShirt, defaultPants, defaultGloves, defaultShoes); _characters.Add(slot, character); var charStyle = new CharacterStyle(character.Gender, character.Slot, character.Hair.Variation, character.Face.Variation, character.Shirt.Variation, character.Pants.Variation); Player.Session.Send(new SSuccessCreateCharacterAckMessage(character.Slot, charStyle)); return(character, CharacterCreateResult.Success); }