Exemplo n.º 1
0
 public void Init()
 {
     if (_data == null)
     {
         _data = new ObstacleEdit();
     }
     SnapToCurrentPosition();
 }
 public TileObstacleEdit(TileEdit tileEdit, ObstacleEdit obstacleEdit)
 {
     TileEdit     = tileEdit;
     ObstacleEdit = obstacleEdit;
 }
Exemplo n.º 3
0
        private void UpdatePlaygroundObjects()
        {
            foreach (var tileEdit in _tileEdits)
            {
                if (tileEdit.Rectangle.IsMouseOver)
                {
                    switch (_selectedItem)
                    {
                    case SelectedItem.Wall:
                        tileEdit.IsWall         = true;
                        tileEdit.HasCoin        = tileEdit.HasObstacle =
                            tileEdit.IsEnd      = tileEdit.IsStart = tileEdit.IsSpawn = false;
                        tileEdit.Rectangle.Fill = Brushes.Black;
                        break;

                    case SelectedItem.Obstacle:
                        if (!tileEdit.IsWall && !tileEdit.HasCoin && !tileEdit.IsStart && !tileEdit.IsEnd &&
                            !tileEdit.IsSpawn)
                        {
                            tileEdit.HasObstacle = true;
                            var obs = new ObstacleEdit(tileEdit.Rectangle.Width * .8,
                                                       tileEdit.Rectangle.Height * .8, tileEdit.X + (tileEdit.Rectangle.Width * .1),
                                                       tileEdit.Y + (tileEdit.Rectangle.Height * .1));
                            _obstacleEdits.Add(obs);
                            Canvas.SetTop(obs.Ellipse, obs.Y);
                            Canvas.SetLeft(obs.Ellipse, obs.X);
                            _editorView.EditorCanvas.Children.Add(obs.Ellipse);
                            _tileObstacleEdits.Add(new TileObstacleEdit(tileEdit, obs));
                        }

                        break;

                    case SelectedItem.Coin:
                        if (!tileEdit.IsWall && !tileEdit.HasObstacle && !tileEdit.IsStart && !tileEdit.IsEnd &&
                            !tileEdit.IsSpawn)
                        {
                            tileEdit.HasCoin = true;
                            var coin = new CoinEdit(tileEdit.Rectangle.Width * .6, tileEdit.Rectangle.Height * .75,
                                                    tileEdit.X + (tileEdit.Rectangle.Width * .2),
                                                    tileEdit.Y + (tileEdit.Rectangle.Height * .15));
                            _coinEdits.Add(coin);
                            Canvas.SetTop(coin.Ellipse, coin.Y);
                            Canvas.SetLeft(coin.Ellipse, coin.X);
                            _editorView.EditorCanvas.Children.Add(coin.Ellipse);
                            _tileCoinEdits.Add(new TileCoinEdit(tileEdit, coin));
                        }

                        break;

                    case SelectedItem.End:
                        tileEdit.IsEnd          = true;
                        tileEdit.HasCoin        = tileEdit.HasObstacle =
                            tileEdit.IsWall     = tileEdit.IsStart = tileEdit.IsSpawn = false;
                        tileEdit.Rectangle.Fill = Brushes.Red;
                        _gotEnd = true;
                        break;

                    case SelectedItem.Start:
                        tileEdit.IsStart        = true;
                        tileEdit.HasCoin        = tileEdit.HasObstacle =
                            tileEdit.IsEnd      = tileEdit.IsWall = tileEdit.IsSpawn = false;
                        tileEdit.Rectangle.Fill = Brushes.Blue;
                        _gotStart = true;
                        break;

                    case SelectedItem.Spawn:
                        tileEdit.IsSpawn        = true;
                        tileEdit.HasCoin        = tileEdit.HasObstacle =
                            tileEdit.IsEnd      = tileEdit.IsWall = tileEdit.IsStart = false;
                        tileEdit.Rectangle.Fill = Brushes.SaddleBrown;
                        _gotSpawn = true;
                        break;

                    case SelectedItem.Erase:
                        if (tileEdit.IsSpawn)
                        {
                            _gotSpawn = false;
                        }

                        if (tileEdit.IsEnd)
                        {
                            _gotEnd = false;
                        }

                        if (tileEdit.IsStart)
                        {
                            _gotStart = false;
                        }

                        tileEdit.HasCoin        = tileEdit.HasObstacle =
                            tileEdit.IsEnd      = tileEdit.IsWall = tileEdit.IsStart = tileEdit.IsSpawn = false;
                        tileEdit.Rectangle.Fill = Brushes.Green;
                        break;
                    }
                }
            }

            foreach (var obstacleEdit in _obstacleEdits)
            {
                if (obstacleEdit.Ellipse.IsMouseOver)
                {
                    if (_selectedItem == SelectedItem.Erase)
                    {
                        //ze blijven wel in de array, maar voorzover ik zie boeit dan niet echt, boeit dus wel voor tileEdits, dit moet worden gematched en worden aangepast
                        foreach (var tileObstacleEdit in _tileObstacleEdits)
                        {
                            if (obstacleEdit.Equals(tileObstacleEdit.ObstacleEdit))
                            {
                                _tileEdits.Find(x => x.Equals(tileObstacleEdit.TileEdit)).HasObstacle = false;
                            }
                        }

                        _editorView.EditorCanvas.Children.Remove(obstacleEdit.Ellipse);
                    }
                }
            }

            foreach (var coinEdit in _coinEdits)
            {
                if (coinEdit.Ellipse.IsMouseOver)
                {
                    if (_selectedItem == SelectedItem.Erase)
                    {
                        //ze blijven wel in de array, maar voorzover ik zie boeit dan niet echt, boeit dus wel voor tileEdits, dit moet worden gematched en worden aangepast
                        foreach (var tileCoinEdit in _tileCoinEdits)
                        {
                            if (coinEdit.Equals(tileCoinEdit.CoinEdit))
                            {
                                _tileEdits.Find(x => x.Equals(tileCoinEdit.TileEdit)).HasCoin = false;
                            }
                        }

                        _editorView.EditorCanvas.Children.Remove(coinEdit.Ellipse);
                    }
                }
            }
        }