Exemplo n.º 1
0
        public Task Process(FieldUser sender, Queue <string> args)
        {
            if (args.Count > 0)
            {
                var first   = args.Peek();
                var command = GetCommand(first);

                if (command != null)
                {
                    args.Dequeue();
                    return(command.Process(sender, args));
                }
            }

            var result = _parser.ParseArguments <T>(args);

            return(Task.Run(() => result
                            .WithParsed(o => Execute(sender, o))
                            .WithNotParsed(errs =>
            {
                var helpText = HelpText.AutoBuild(result, _parser.Settings.MaximumDisplayWidth);

                helpText.Heading = string.Empty;
                helpText.Copyright = string.Empty;

                helpText.AddPostOptionsLines(
                    Commands.Select(c => $"{c.Name}\t\t\t\t{c.Description}")
                    );

                Regex
                .Split(helpText.ToString(), "\r\n|\r|\n")
                .ForEach((s, i) => sender.Message(s));
            }
                                           )));
        }
Exemplo n.º 2
0
 public abstract Task Handle(
     RecvPacketOperations operation,
     IPacket packet,
     FieldUser user,
     T template,
     ItemSlot item
     );
Exemplo n.º 3
0
        protected override async Task Execute(FieldUser sender, object option)
        {
            var continents = sender.Service.ContinentManager.Continents;
            var templateID = await sender.Prompt <int>(target => target.AskMenu(
                                                           "Here are the ship schedules",
                                                           continents.ToDictionary(
                                                               c =>
            {
                switch (c.State)
                {
                case ContinentState.Wait:
                    return(c.Template.WaitFieldID);

                case ContinentState.Move:
                    return(c.Template.MoveFieldID);

                default:
                    return(c.Template.StartShipMoveFieldID);
                }
            },
                                                               c =>
            {
                var ret = $"{c.Template.Info} ({c.State})";

                if (c.NextEvent.HasValue)
                {
                    ret += $" #r(Event at {c.NextEvent.Value:H:mm tt})#b";
                }
 public FieldUserSpeaker(
     ConversationContext context,
     FieldUser fieldUser
     ) : base(context)
 {
     _fieldUser = fieldUser;
 }
Exemplo n.º 5
0
        protected override async Task ExecuteAfter(FieldUser user, BuffCommandOptions option)
        {
            var type = await user.Prompt <int>((self, target) => self.AskMenu(
                                                   "Which temporary stat?",
                                                   Enum.GetValues(typeof(TemporaryStatType))
                                                   .Cast <TemporaryStatType>()
                                                   .ToDictionary(
                                                       t => (int)t,
                                                       t => t.ToString()
                                                       )
                                                   ), 0);

            var options = await user.Prompt <int>((self, target) => self.AskNumber(
                                                      "What option?",
                                                      1,
                                                      1,
                                                      short.MaxValue
                                                      ), 0);

            var duration = await user.Prompt <int>((self, target) => self.AskNumber(
                                                       "How long? (in seconds)",
                                                       0,
                                                       0
                                                       ), 0);

            await user.ModifyTemporaryStat(s =>
                                           s.Set(
                                               (TemporaryStatType)type,
                                               30001000,
                                               (short)options,
                                               duration > 0
                        ? DateTime.Now.AddSeconds(duration)
                        : (DateTime?)null)
                                           );
        }
Exemplo n.º 6
0
        public bool OnPacket(FieldUser user, GameRecvOperations operation, InPacket packet)
        {
            switch (operation)
            {
            case GameRecvOperations.MobMove:
            {
                var objectID = packet.Decode <int>();
                var mob      = Objects
                               .OfType <FieldMob>()
                               .FirstOrDefault(m => m.ID == objectID);
                return(mob?.OnPacket(user, operation, packet) ?? true);
            }

            case GameRecvOperations.NpcMove:
            {
                var objectID = packet.Decode <int>();
                var npc      = Objects
                               .OfType <FieldNPC>()
                               .FirstOrDefault(n => n.ID == objectID);
                return(npc?.OnPacket(user, operation, packet) ?? true);
            }

            case GameRecvOperations.DropPickUpRequest:
                OnDropPickUpRequest(user, packet);
                break;

            default:
                return(user.OnPacket(operation, packet));
            }

            return(true);
        }
Exemplo n.º 7
0
 public FieldUserInformation(FieldUser field) : base(field)
 {
     Group        = field.SelectionGroup;
     Mode         = (uint)field.SelectionMode;
     AllowDisplay = field.AllowDisplay;
     Presence     = field.Presence;
 }
Exemplo n.º 8
0
 public FieldUserInventorySpeaker(
     IConversationContext context,
     FieldUser fieldUser,
     int templateID           = 9010000,
     ScriptMessageParam param = (ScriptMessageParam)0
     ) : base(context, templateID, param)
     => _fieldUser = fieldUser;
Exemplo n.º 9
0
        protected override async Task ExecuteAfter(FieldUser user, ContiMoveCommandOption option)
        {
            var continents = user.Socket.WvsGame.ContinentManager.Continents;
            var templateID = await user.Prompt <int>((self, target) => self.AskMenu(
                                                         "Here are the ship schedules",
                                                         continents.ToDictionary(
                                                             c =>
            {
                switch (c.State)
                {
                case ContinentState.Wait:
                    return(c.Template.WaitFieldID);

                case ContinentState.Move:
                    return(c.Template.MoveFieldID);

                default:
                    return(c.Template.StartShipMoveFieldID);
                }
            },
                                                             c => $"{c.Template.Info} ({c.State})"
                                                             )
                                                         ), 0);

            var fieldManager = user.Socket.WvsGame.FieldManager;
            var field        = fieldManager.Get(templateID);

            await field.Enter(user);
        }
Exemplo n.º 10
0
        protected override Task ExecuteAfter(FieldUser user, FieldTemplate template, TemplateCommandOption option)
        {
            var fieldManager = user.Socket.WvsGame.FieldManager;
            var field        = fieldManager.Get(template.ID);

            return(field.Enter(user));
        }
Exemplo n.º 11
0
        public AttackInfo(AttackType type, FieldUser user, IPacket packet)
        {
            _type = type;
            _user = user;

            Decode(packet);
        }
Exemplo n.º 12
0
        public void GraphUserInfoProvider_Test_GetCurrentUser()
        {
            //Arrange
            MockHttpProvider mockHttpProvider = new MockHttpProvider();

            mockHttpProvider.Responses.Add("GET:https://graph.microsoft.com/v1.0/me", new User()
            {
                DisplayName = "Test User",
                Mail        = "*****@*****.**",
                Id          = "test-user-id"
            });
            mockHttpProvider.Responses.Add("GET:https://graph.microsoft.com/v1.0/sites/test-site-id/lists/User Information List/items?$filter=fields/EMail eq '*****@*****.**'", new ListItemsCollectionResponse()
            {
                Value = new ListItemsCollectionPage()
                {
                    new ListItem()
                    {
                        Id = "10"
                    }
                }
            });

            //Act
            GraphServiceClient    client           = new GraphServiceClient(new MockAuthenticationHelper(), mockHttpProvider);
            GraphUserInfoProvider userInfoProvider = new GraphUserInfoProvider(client, "test-site-id");

            FieldUser user = userInfoProvider.GetCurrentUserInfo();

            //Assert
            Assert.AreEqual("Test User", user.DisplayName);
            Assert.AreEqual("*****@*****.**", user.Email);
            Assert.AreEqual("test-user-id", user.Id);
            Assert.AreEqual(10, user.SPId);
        }
Exemplo n.º 13
0
 protected override async Task ExecuteAfter(
     FieldUser sender,
     ItemTemplate template,
     ItemCommandOption option
     )
 {
     await sender.ModifyInventory(i => i.Add(template, option.Quantity ?? 1));
 }
Exemplo n.º 14
0
        public override Task Handle(RecvPacketOperations operation, IPacket packet, FieldUser user)
        {
            var npc = user.Field.GetControlledObject <FieldNPC>(user, packet.Decode <int>());

            return(npc == null
                ? Task.CompletedTask
                : Handle(operation, packet, npc));
        }
Exemplo n.º 15
0
        private async Task OnMigrateIn(IPacket packet)
        {
            var characterID = packet.Decode <int>();

            using (var db = WvsGame.DataContextFactory.Create())
            {
                var character = db.Characters
                                .Include(c => c.Data)
                                .ThenInclude(a => a.Account)
                                .Include(c => c.Data)
                                .ThenInclude(c => c.Trunk)
                                .ThenInclude(c => c.Items)
                                .Include(c => c.Inventories)
                                .ThenInclude(c => c.Items)
                                .Include(c => c.WishList)
                                .Single(c => c.ID == characterID);

                character.CoupleRecords = db.CoupleRecord
                                          .Where(c => c.CharacterID == character.ID)
                                          .ToList();
                character.FriendRecords = db.FriendRecord
                                          .Where(c => c.CharacterID == character.ID)
                                          .ToList();
                character.Memos = db.Memos
                                  .Where(m => m.CharacterID == character.ID)
                                  .ToList();

                if (!await WvsGame.TryMigrateFrom(character, WvsGame.Info))
                {
                    await Disconnect();
                }

                var field     = WvsGame.FieldManager.Get(character.FieldID);
                var fieldUser = new FieldUser(this, character);

                FieldUser = fieldUser;
                await field.Enter(fieldUser);

                var memos = character.Memos;
                if (memos.Count > 0)
                {
                    using (var p = new Packet(SendPacketOperations.MemoResult))
                    {
                        p.Encode <byte>((byte)MemoResult.Load);
                        p.Encode <byte>((byte)memos.Count);
                        memos.ForEach(m =>
                        {
                            p.Encode <int>(m.ID);
                            p.Encode <string>(m.Sender);
                            p.Encode <string>(m.Content);
                            p.Encode <DateTime>(m.DateSent);
                            p.Encode <byte>((byte)m.Flag);
                        });
                        await SendPacket(p);
                    }
                }
            }
        }
Exemplo n.º 16
0
        public override bool OnPacket(FieldUser user, GameRecvOperations operation, InPacket packet)
        {
            if (operation == GameRecvOperations.UserShopRequest)
            {
                OnUserShopRequest(user, packet);
            }

            return(true);
        }
Exemplo n.º 17
0
 private async Task OnTrunkSortItemRequest(FieldUser user, IPacket packet)
 {
     using (var p = new Packet(SendPacketOperations.TrunkResult))
     {
         p.Encode <byte>((byte)TrunkResult.SortItem);
         EncodeData(user, p);
         await user.SendPacket(p);
     }
 }
Exemplo n.º 18
0
 protected override async Task ExecuteAfter(FieldUser sender, SkillTemplate template, SkillCommandOption option)
 {
     await sender.ModifySkills(s =>
                               s.Set(
                                   template.ID,
                                   option.Level ?? sender.Character.GetSkillLevel(template.ID),
                                   option.MasterLevel ?? sender.Character.GetSkillMasterLevel(template.ID)
                                   ));
 }
Exemplo n.º 19
0
 public override async Task Handle(
     RecvPacketOperations operation,
     IPacket packet,
     FieldUser user,
     AbstractFieldDrop drop
     )
 {
     await drop.PickUp(user);
 }
Exemplo n.º 20
0
        public override Task Handle(RecvPacketOperations operation, IPacket packet, FieldUser user)
        {
            for (var i = 0; i < 8; i++)
            {
                user.Character.QuickSlotKeys[i] = packet.Decode <int>();
            }

            return(Task.CompletedTask);
        }
        public override Task Handle(RecvPacketOperations operation, IPacket packet, FieldUser user)
        {
            var sn  = packet.Decode <long>();
            var pet = user.Pets.FirstOrDefault(p => p.Item.CashItemSN == sn);

            return(pet == null
                ? Task.CompletedTask
                : Handle(operation, packet, pet));
        }
Exemplo n.º 22
0
 public QuestSpeaker(
     IConversationContext context,
     FieldUser fieldUser,
     short questTemplateID,
     int npcTemplateID
     ) : base(context, npcTemplateID)
 {
     _fieldUser       = fieldUser;
     _questTemplateID = questTemplateID;
 }
Exemplo n.º 23
0
        public override Task Handle(RecvPacketOperations operation, IPacket packet, FieldUser user)
        {
            var summoned = user.Owned
                           .OfType <FieldDragon>()
                           .FirstOrDefault();

            return(summoned == null
                ? Task.CompletedTask
                : Handle(operation, packet, summoned));
        }
Exemplo n.º 24
0
        protected override async Task Execute(FieldUser sender, object option)
        {
            var field          = sender.Field;
            var stringTemplate = sender.Service.TemplateManager.Get <FieldStringTemplate>(field.ID);

            await sender.Message($"{stringTemplate.StreetName}: {stringTemplate.MapName} ({field.ID})");

            await sender.Message(
                $"Object count: {field.GetObjects().Count()} (Controlled: {field.GetControlledObjects(sender).Count()} / {field.GetObjects<IFieldControlledObj>().Count()})");
        }
Exemplo n.º 25
0
        protected override async Task Execute(FieldUser sender, BuffCommandOption option)
        {
            var type = (TemporaryStatType)(option.List
                ? await sender.Prompt <int>(target => target.AskMenu(
                                                "These are your current temporary stats",
                                                sender.TemporaryStats
                                                .ToDictionary(
                                                    kv => (int)kv.Key,
                                                    kv => $"{kv.Key}: {kv.Value.Option}"
                                                    )
                                                ))
                : await sender.Prompt <int>(target => target.AskMenu(
                                                "Which temporary stat type?",
                                                Enum.GetValues(typeof(TemporaryStatType))
                                                .Cast <TemporaryStatType>()
                                                .ToDictionary(
                                                    t => (int)t,
                                                    t => t.ToString()
                                                    )
                                                )));

            if (option.List &&
                await sender.Prompt <int>(target => target.AskMenu(
                                              $"What would you like to do with {type}?",
                                              new Dictionary <int, string>
            {
                [0] = "Modify the stat option",
                [1] = "#rRemove the stat"
            }
                                              )) > 0)
            {
                await sender.ModifyTemporaryStats(s => s.Reset(type));

                return;
            }

            var options = await sender.Prompt <int>(target => target.AskNumber(
                                                        "What option?",
                                                        1,
                                                        1
                                                        ));

            var templateID = await sender.Prompt <int>(target => target.AskNumber(
                                                           "What template ID?",
                                                           (int)Skill.CitizenCristalThrow
                                                           ));

            await sender.ModifyTemporaryStats(s =>
                                              s.Set(
                                                  type,
                                                  templateID,
                                                  options
                                                  ));
        }
Exemplo n.º 26
0
        public override Task Handle(RecvPacketOperations operation, IPacket packet, FieldUser user)
        {
            var id       = packet.Decode <int>();
            var summoned = user.Owned
                           .OfType <FieldSummoned>()
                           .FirstOrDefault(s => s.ID == id);

            return(summoned == null
                ? Task.CompletedTask
                : Handle(operation, packet, summoned));
        }
Exemplo n.º 27
0
        protected override async Task ExecuteAfter(
            FieldUser sender,
            FieldTemplate template,
            TemplateCommandOption option
            )
        {
            var fieldManager = sender.Service.FieldManager;
            var field        = fieldManager.Get(template.ID);

            await field.Enter(sender);
        }
Exemplo n.º 28
0
 protected override async Task Execute(FieldUser sender, object option)
 {
     /*
      * var tradingRoom = new TradingRoom();
      * var tradingDialog = new MiniroomDialog(sender, tradingRoom);
      *
      * await sender.Interact(tradingDialog);
      */
     await sender.Message(
         $"{sender.Character.Level} : {GameConstants.CharacterEXPTable[sender.Character.Level]}");
 }
Exemplo n.º 29
0
        public override Task Handle(RecvPacketOperations operation, IPacket packet, FieldUser user)
        {
            packet.Decode <byte>();
            packet.Decode <int>();
            packet.Decode <short>();
            packet.Decode <short>();
            var objectID = packet.Decode <int>();

            packet.Decode <int>();

            return(Handle(operation, packet, user, user.Field.GetObject <AbstractFieldDrop>(objectID)));
        }
Exemplo n.º 30
0
        private async Task OnTrunkMoneyRequest(FieldUser user, IPacket packet)
        {
            var amount = packet.Decode <int>();

            using (var p = new Packet(SendPacketOperations.TrunkResult))
            {
                var result = TrunkResult.MoneySuccess;

                if (amount < 0)
                {
                    amount = -amount;
                    if (amount > int.MaxValue - _trunk.Money)
                    {
                        result = TrunkResult.MoneyUnknown;
                    }
                    else if (user.Character.Money >= amount)
                    {
                        await user.ModifyStats(s => s.Money -= amount);

                        _trunk.Money += amount;
                    }
                    else
                    {
                        result = TrunkResult.PutNoMoney;
                    }
                }
                else
                {
                    if (amount > int.MaxValue - user.Character.Money)
                    {
                        result = TrunkResult.MoneyUnknown;
                    }
                    if (_trunk.Money >= amount)
                    {
                        _trunk.Money -= amount;
                        await user.ModifyStats(s => s.Money += amount);
                    }
                    else
                    {
                        result = TrunkResult.PutNoMoney;
                    }
                }

                p.Encode <byte>((byte)result);
                if (result == TrunkResult.MoneySuccess)
                {
                    EncodeData(user, p);
                }

                await user.SendPacket(p);
            }
        }