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); }
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); }
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); }
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); }
public bool IsExecutable(CommandModel command) { return(isExecutable(command as SingleCommandModel)); }
public IEnumerable <CommandModel> GetCommands(CommandModel command) { return((command as CommandGroupModel).CommandsSequence); }
public void RevertImmediately(CommandModel command) { }
public float Revert(CommandModel command) { var playable = command.Playable; return(actionSystems[command.name].ActionReverse(playable, null)); }
public float Execute(CommandModel command) { var playable = command.Playable; return(actionSystems[command.name].Action(playable, null)); }
public float Revert(CommandModel command) { return(actionSystems["move"].ActionReverse(command.Playable, null)); }
public float Execute(CommandModel command) { var front_tile = puzzleManager.ActivePuzzle.FindNeighbourTile(command.Playable, Puzzle.Direction.Front); return(actionSystems["move"].Action(command.Playable, front_tile)); }
public float Revert(CommandModel command) { return(0.0f); }