private void UpdateCommandProviderViews(IMoveCommandProvider <Piece> moveCommandProvider) { if (_pool == null) { _pool = GetComponent <ObjectPool>(); } foreach (var moveComandView in _moveComandsViews) { moveComandView.gameObject.SetActive(false); } _moveComandsViews.Clear(); if (moveCommandProvider != null) { foreach (var moveComand in moveCommandProvider.MoveCommands()) { var go = _pool.GetPooledObject(); var view = go.GetComponent <MoveComandView>(); view.Modal = moveComand; _moveComandsViews.Add(view); } } }
public void Register(string name, IMoveCommandProvider <TPiece> provider) { if (_providers.ContainsKey(name)) { return; } _providers.Add(name, provider); }
public void Excecute(TPiece piece, Tile tile) { if (_validTile.Contains(tile)) { var foundCommand = _activeProvider.MoveCommands().Find((command) => command.Tiles(_board, piece).Contains(tile)); if (foundCommand == null) { return; } foundCommand.Execute(_board, piece, tile); _activeProvider = null; } }
public void ActivateFor(TPiece currentPiece) { _activeProvider = Provider(currentPiece); if (_activeProvider != null) { _validTile = _activeProvider.MoveCommands() .Where((command) => command.CanExecute(_board, currentPiece)) .SelectMany((command) => command.Tiles(_board, currentPiece)).ToList(); } else { _validTile.Clear(); } OnMoveComandProviderChanged(new MoveCommandProviderChanged <TPiece>(_activeProvider)); }
public MoveCommandProviderChanged(IMoveCommandProvider <TPiece> moveCommandProvider) { MoveCommandProvider = moveCommandProvider; }
public void Deactivate() { _validTile.Clear(); _activeProvider = null; OnMoveComandProviderChanged(new MoveCommandProviderChanged <TPiece>(null)); }