Ejemplo n.º 1
0
 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);
     }
 }
Ejemplo n.º 2
0
        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);
            }
        }
Ejemplo n.º 3
0
        /// <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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        /// <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);
        }