protected override void HandleCommand(IChatClient chatClient, CommandReceivedEventArgs eventArgs)
        {
            Survivor survivor       = _gameRepository.GetOrCreate(eventArgs.ChatUser);
            var      inventoryItems = survivor.InventoryItems.Select(HeldItemDto.FromInventoryItem);

            _notification.StartGame(survivor.DisplayName, survivor.UserId, inventoryItems);
        }
        protected override void HandleCommand(IChatClient chatClient, CommandReceivedEventArgs eventArgs)
        {
            Survivor survivor = _survivorRepo.GetOrCreate(eventArgs.ChatUser);
            var      items    = survivor.InventoryItems;

            string itemText = items.Any()
                ? string.Join(", ", items
                              .Select((item, index) => $"({(char)('A' + index)}){item.Name}-Uses:{item.Uses}"))
                : "none";
            string message = $"You have these items: {itemText}.";

            chatClient.SendDirectMessage(eventArgs.ChatUser.DisplayName, message);
        }
示例#3
0
        protected override void HandleCommand(IChatClient chatClient, CommandReceivedEventArgs eventArgs)
        {
            string firstArg = eventArgs.Arguments.FirstOrDefault();
            var    survivor = _survivorRepo.GetOrCreate(eventArgs.ChatUser);


            var operation = _operations.SingleOrDefault(op => op.ShouldExecute(firstArg));

            if (operation != null)
            {
                string messageToSend = operation.TryToExecute(eventArgs, survivor);
                chatClient.SendMessage(messageToSend);
            }
            else
            {
                chatClient.SendMessage(survivor.Team?.Name ?? "No Team");
            }
        }
示例#4
0
        protected override void HandleCommand(IChatClient chatClient,
                                              CommandReceivedEventArgs eventArgs)
        {
            var    survivor = _survivorRepo.GetOrCreate(eventArgs.ChatUser);
            string operand  = eventArgs.Arguments.FirstOrDefault();

            var operation = _operations.SingleOrDefault(op => op.ShouldExecute(operand));

            if (operation != null)
            {
                string message = operation.TryToExecute(eventArgs, survivor);
                chatClient.SendMessage(message);
            }
            else
            {
                var    items       = _gameRepository.List(ShopItemPolicy.All());
                string itemDisplay = string.Join(", ", items.Select(x => $"{x.Id}:{x.Name}-{x.Price}"));
                chatClient.SendMessage($"Buy somethin' will ya! For sale: {itemDisplay}");
            }
        }
示例#5
0
        public void GameEnd(int points, string playerName,
                            string userId, EndTypes endType, int levelNumber,
                            List <HeldItemDto> items, int money, string escapeType)
        {
            string itemDisplayText = items.Any()
                ? string.Join(", ", items.Select(x => x.Name))
                : "nothing";
            string message = $"{playerName} has {endType} on level {levelNumber} with {points} points while holding {itemDisplayText} and {money} coins.";

            _chatClients.ForEach(c => c.SendMessage(message));

            Survivor survivor = _survivorRepo.GetOrCreate(playerName, userId);
            Location location = _repo.Single(LocationSpecification.ByEscapeType(escapeType));

            survivor.Money += money; // You get to keep money even if dead.

            var inventoryItems = items.Select(x => x.ToInventoryItem()).ToList();

            survivor.ApplyEndGame(levelNumber, points, endType,
                                  inventoryItems, location);

            _survivorRepo.Save(survivor);
        }