Пример #1
0
        private IEnumerable <ClientAction> GetActions(Point visibleDestination)
        {
            var destination = Map.GetRealDestinationFromVisibleDestination(visibleDestination);
            var destObject  = Map.GetHRealObjectFromDestination(destination);

            if (destObject == null)
            {
                return(new List <ClientAction>
                {
                    new ClientAction
                    {
                        Name = "Go",
                        //CanDo = true,
                        Do = () => MoveToDest(destination)
                    }
                });
            }

            var possibleActions = ActionRepository.GetPossibleActions(_hero, destObject).ToList();

            var objects = new List <GameObject>(new[] { destObject });

            //  var removableObjects = objects.Select(o => this.PrepareRemovableObject(o, destination));
            return(possibleActions.SelectMany(pa =>
            {
                var dest = pa.GetDestination(destination, destObject, _hero);
                return pa.GetActionsWithNecessaryObjects(objects, _hero).Select(objectsForAction =>
                                                                                new ClientAction
                {
                    Name = pa.GetName(objectsForAction, _hero),
                    //CanDo = pa.CanDo(_hero, objects),
                    Do = () => MoveAndDoAction(pa, dest, objectsForAction)
                }
                                                                                );
            }));
        }