示例#1
0
        public WallWindow(MainWindowManager manager, bool edit, BackgroundItem bgItem)
        {
            InitializeComponent();

            this.manager = manager;
            openFileManager = new OpenFileManager();
            this.edit = edit;
            this.bgItem = bgItem;

            if (edit)
            {
                SetValues();
            }
        }
示例#2
0
        /// <summary>
        /// Inserts the selected element in the stage.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void CanvasGame_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            string errorMessage = "An error ocurred when introducing the element.";

            try
            {
                if (currentID < 0)
                {
                    throw new NullReferenceException();
                }

                if (textureSelected != null)
                {
                    if (textureSelected.Uid == "Eraser")
                    {
                        CanvasGame_MouseRightButtonDown(sender, e);
                    }

                    textureCanvas = new Image();

                    textureCanvas.Source = textureSelected.Source;
                    textureCanvas.Width = textureSelected.Width;
                    textureCanvas.Height = textureSelected.Height;
                    textureCanvas.Uid = textureSelected.Uid;
                    textureCanvas.Name = textureSelected.Name;

                    Point pos = Mouse.GetPosition(CanvasGame);

                    pos.X -= textureCanvas.Width;
                    pos.Y -= textureCanvas.Height;

                    if (pos.X  < 0)
                    {
                        pos.X = 0;
                    }

                    if (pos.Y < 0)
                    {
                        pos.Y = 0;
                    }

                    //if ((pos.X + textureCanvas.Width) > 640)
                    //{
                    //    pos.X = 640 - textureCanvas.Width;
                    //}

                    //if ((pos.Y + textureCanvas.Height) > 380)
                    //{
                    //    pos.Y = 380 - textureCanvas.Height;
                    //}

                    pos.X = Math.Round(pos.X, 2);
                    pos.Y = Math.Round(pos.Y, 2);

                    Stage currentStage = manager.GetStage(currentID);

                    if (textureCanvas.Uid == "Character")
                    {
                        if (manager.Player.IsSet == true)
                        {
                            errorMessage = "The main character is already set.";
                            throw new Exception();
                        }

                        CanvasGame.Children.Add(textureCanvas);

                        Canvas.SetLeft(textureCanvas, pos.X);
                        Canvas.SetTop(textureCanvas, pos.Y);

                        currentStage.Player = manager.Player;

                        currentStage.Player.PositionX = (int)pos.X;
                        currentStage.Player.PositionY = (int)pos.Y;
                        currentStage.Player.CurrentImage = textureCanvas;

                        manager.Player.IsSet = true;
                    }
                    else if (textureCanvas.Uid == "Consumable")
                    {
                        CanvasGame.Children.Add(textureCanvas);

                        Canvas.SetLeft(textureCanvas, pos.X);
                        Canvas.SetTop(textureCanvas, pos.Y);

                        Consumable consumableStage = manager.GetConsumable(textureCanvas.Name);
                        Consumable newConsumable = new Consumable(consumableStage.Name, consumableStage.Type, consumableStage.Effect, consumableStage.Image);

                        newConsumable.PositionX = (int)pos.X;
                        newConsumable.PositionY = (int)pos.Y;
                        newConsumable.CurrentImage = textureCanvas;

                        currentStage.Consumables.Add(newConsumable);
                    }
                    else if (textureCanvas.Uid == "Weapon")
                    {
                        CanvasGame.Children.Add(textureCanvas);

                        Canvas.SetLeft(textureCanvas, pos.X);
                        Canvas.SetTop(textureCanvas, pos.Y);

                        Weapon weaponStage = manager.GetWeapon(textureCanvas.Name);
                        Weapon newWeapon = new Weapon(weaponStage.Name, weaponStage.Type, weaponStage.Damage, weaponStage.Speed, weaponStage.ImageWeapon,
                            weaponStage.ImageArrowUp, weaponStage.ImageArrowDown, weaponStage.ImageArrowLeft, weaponStage.ImageArrowRight);

                        newWeapon.PositionX = (int)pos.X;
                        newWeapon.PositionY = (int)pos.Y;
                        newWeapon.CurrentImage = textureCanvas;

                        currentStage.Weapons.Add(newWeapon);
                    }
                    else if (textureCanvas.Uid == "Enemy")
                    {
                        CanvasGame.Children.Add(textureCanvas);

                        Canvas.SetLeft(textureCanvas, pos.X);
                        Canvas.SetTop(textureCanvas, pos.Y);

                        Enemy enemyStage = manager.GetEnemy(textureCanvas.Name);
                        Enemy newEnemy = new Enemy(enemyStage.Name, enemyStage.Strenght, enemyStage.Intelligence, enemyStage.Dexterity, enemyStage.HitPoints,
                            enemyStage.ImageMovingUp, enemyStage.ImageMovingDown, enemyStage.ImageMovingLeft, enemyStage.ImageMovingRight, enemyStage.FrameCount,
                            enemyStage.ImageArrowUp, enemyStage.ImageArrowDown, enemyStage.ImageArrowLeft, enemyStage.ImageArrowRight, enemyStage.Loot,
                            enemyStage.Behavoir, enemyStage.Preference, enemyStage.Boss, enemyStage.InitialState, enemyStage.PatrolZone, enemyStage.DetectZone,
                            enemyStage.Speed);

                        newEnemy.PositionX = (int)pos.X;
                        newEnemy.PositionY = (int)pos.Y;
                        newEnemy.CurrentImage = textureCanvas;

                        currentStage.Enemies.Add(newEnemy);
                    }
                    else if (textureCanvas.Uid == "NPC")
                    {
                        CanvasGame.Children.Add(textureCanvas);

                        Canvas.SetLeft(textureCanvas, pos.X);
                        Canvas.SetTop(textureCanvas, pos.Y);

                        NPC npcStage = manager.GetNPC(textureCanvas.Name);
                        NPC newNPC = new NPC(npcStage.Name, npcStage.Image, npcStage.DialogImage);

                        newNPC.PositionX = (int)pos.X;
                        newNPC.PositionY = (int)pos.Y;
                        newNPC.CurrentImage = textureCanvas;

                        currentStage.NonPlayers.Add(newNPC);
                    }
                    else if (textureCanvas.Uid == "Wall")
                    {
                        CanvasGame.Children.Add(textureCanvas);

                        Canvas.SetLeft(textureCanvas, pos.X);
                        Canvas.SetTop(textureCanvas, pos.Y);

                        BackgroundItem wallStage = manager.GetBgItem(textureCanvas.Name);
                        BackgroundItem newWall = new BackgroundItem(wallStage.Name, wallStage.Solid, wallStage.BulletProof, wallStage.Image);

                        newWall.PositionX = (int)pos.X;
                        newWall.PositionY = (int)pos.Y;
                        newWall.CurrentImage = textureCanvas;

                        currentStage.BgItems.Add(newWall);
                    }
                    else if (textureCanvas.Uid == "Key")
                    {
                        CanvasGame.Children.Add(textureCanvas);

                        Canvas.SetLeft(textureCanvas, pos.X);
                        Canvas.SetTop(textureCanvas, pos.Y);

                        KeyItem keyStage = manager.GetKey(textureCanvas.Name);
                        KeyItem newKey = new KeyItem(keyStage.Name, keyStage.Image, keyStage.ID);

                        newKey.PositionX = (int)pos.X;
                        newKey.PositionY = (int)pos.Y;
                        newKey.CurrentImage = textureCanvas;

                        currentStage.Keys.Add(newKey);
                    }
                    else if (textureCanvas.Uid == "Door")
                    {
                        CanvasGame.Children.Add(textureCanvas);

                        Canvas.SetLeft(textureCanvas, pos.X);
                        Canvas.SetTop(textureCanvas, pos.Y);

                        Door doorStage = manager.GetDoor(textureCanvas.Name);
                        Door newDoor = new Door(doorStage.Name, doorStage.Image, doorStage.ID);

                        newDoor.PositionX = (int)pos.X;
                        newDoor.PositionY = (int)pos.Y;
                        newDoor.CurrentImage = textureCanvas;

                        currentStage.Doors.Add(newDoor);
                    }
                }
            }
            catch(NullReferenceException)
            {
                MessageBox.Show("You have to create a stage first.", "Attention", MessageBoxButton.OK, MessageBoxImage.Warning);
            }
            catch (Exception)
            {
                MessageBox.Show(errorMessage, "Attention", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }
示例#3
0
        /// <summary>
        /// Saves the wall's information and closes the window.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void AcceptWall_Click(object sender, RoutedEventArgs e)
        {
            string errorMessage = null;

            try
            {
                if (String.IsNullOrEmpty(name))
                {
                    errorMessage = "You have to input a name.";
                    throw new NullReferenceException();
                }

                if (String.IsNullOrEmpty(image))
                {
                    errorMessage = "You have to select an image for the wall.";
                    throw new NullReferenceException();
                }

                name = name.Replace(" ", "_");

                if (manager.CheckIfNumber(name))
                {
                    errorMessage = "The name cannot be only numbers.";
                    throw new Exception();
                }

                if (edit)
                {
                    manager.BgItems.Remove(bgItem);
                }
                if (manager.NameRepeated(name))
                {
                    errorMessage = "This name already exists";
                    throw new NullReferenceException();
                }

                BackgroundItem auxBgItem = new BackgroundItem(name, solid, bulletProof, image);

                manager.BgItems.Add(auxBgItem);
                manager.BgItems.OrderBy(x => x.Name);

                this.Close();
            }
            catch (Exception)
            {
                MessageBox.Show(errorMessage, "Attention", MessageBoxButton.OK, MessageBoxImage.Warning);
            }
        }