コード例 #1
0
        public IEnumerable <CommandModel> GetCommands(CommandModel command)
        {
            var command_group = command as CommandGroupModel;

            if (command_group.Condition-- < 1)
            {
                return(null);
            }

            IEnumerable <CommandModel> commands_sequence = command_group.CommandsSequence;

            commands_sequence = commands_sequence.Concat(new CommandModel[] { command_group });

            return(commands_sequence);
        }
コード例 #2
0
        public IEnumerable <CommandModel> GetCommands(CommandModel command)
        {
            var command_group = command as CommandGroupModel;

            var current_tile_condition = puzzleManager.ActivePuzzle.FindNeighbourTile(command_group.Playable, Puzzle.Direction.Current).Condition;

            if (command_group.ConditionalCommand.Condition != -1 &&
                command_group.ConditionalCommand.Condition != current_tile_condition)
            {
                return(null);
            }

            IEnumerable <CommandModel> commands_sequence = command_group.CommandsSequence;

            commands_sequence = commands_sequence.Concat(new CommandModel[] { command_group });

            return(commands_sequence);
        }
コード例 #3
0
        public IEnumerable <CommandModel> GetCommands(CommandModel command)
        {
            var command_group          = command as CommandGroupModel;
            var current_tile_condition = puzzleManager.ActivePuzzle.FindNeighbourTile(command_group.Playable, Puzzle.Direction.Current).Condition;

            var commands_sequence = from command_model in command_group.CommandsSequence
                                    where command_model.Condition == current_tile_condition
                                    select command_model;

            if (commands_sequence.Any())
            {
                return(commands_sequence);
            }

            return(from command_model in command_group.CommandsSequence
                   where command_model.Condition == -1
                   select command_model);
        }
コード例 #4
0
        public float Execute(CommandModel command)
        {
            var playable = command.Playable;

            var current_tile = puzzleManager.ActivePuzzle.FindNeighbourTile(playable, Puzzle.Direction.Current);
            var warpable     = current_tile.GetComponent <WarpableModel>();

            if (warpable)
            {
                if (warpable.Neighbour.Count == 0)
                {
                    return(actionSystems["puzzle_clear"].Action(playable, null));
                }

                return(actionSystems["warp"].Action(playable, current_tile));
            }

            var front_tile = puzzleManager.ActivePuzzle.FindNeighbourTile(playable, Puzzle.Direction.Front);

            if (!front_tile)
            {
                return(0.0f);
            }

            var tile_model = front_tile.GetComponent <TileModel>();

            if (tile_model.PuzzleEntity)
            {
                return(actionSystems["attack"].Action(playable, front_tile));
            }

            var cleanable = front_tile.GetComponent <CleanableModel>();

            if (cleanable && !cleanable.IsClean)
            {
                return(actionSystems["purify"].Action(playable, front_tile));
            }


            return(0.0f);
        }
コード例 #5
0
 public bool IsExecutable(CommandModel command)
 {
     return(isExecutable(command as SingleCommandModel));
 }
コード例 #6
0
 public IEnumerable <CommandModel> GetCommands(CommandModel command)
 {
     return((command as CommandGroupModel).CommandsSequence);
 }
コード例 #7
0
 public void RevertImmediately(CommandModel command)
 {
 }
コード例 #8
0
        public float Revert(CommandModel command)
        {
            var playable = command.Playable;

            return(actionSystems[command.name].ActionReverse(playable, null));
        }
コード例 #9
0
        public float Execute(CommandModel command)
        {
            var playable = command.Playable;

            return(actionSystems[command.name].Action(playable, null));
        }
コード例 #10
0
 public float Revert(CommandModel command)
 {
     return(actionSystems["move"].ActionReverse(command.Playable, null));
 }
コード例 #11
0
        public float Execute(CommandModel command)
        {
            var front_tile = puzzleManager.ActivePuzzle.FindNeighbourTile(command.Playable, Puzzle.Direction.Front);

            return(actionSystems["move"].Action(command.Playable, front_tile));
        }
コード例 #12
0
 public float Revert(CommandModel command)
 {
     return(0.0f);
 }