public void ChangeState(ChocolatePieceStates state)
        {
            //stop current state and cleanup.
            if (_state != null)
                _state.Stop();

            //start new state.
            _state = _stateFactory.Create(state, this);
            _state.Start();
        }
        public ChocolatePieceState Create(ChocolatePieceStates state, ChocolatePiece piece)
        {
            switch (state)
            {
                case ChocolatePieceStates.ConnectedToBar:
                    return new ChocolatePieceStateConnectedToBar(piece);
                case ChocolatePieceStates.Selected:
                    return new ChocolatePieceStateSelected(piece);
                case ChocolatePieceStates.Broken:
                    return new ChocolatePieceStateBroken(piece);
                case ChocolatePieceStates.Inactive:
                    return new ChocolatePieceStateInactive(piece);
            }

            Assert.IsTrue(false);
            return null;
        }