예제 #1
0
 private void MainGFX_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
 {
     if (Keyboard.Modifiers == ModifierKeys.None)
     {
         Visual v = MainGFX.GetObjectXY((Point)e.GetPosition(MainGFX)) as Visual;
         if (v != null)
         {
             var res = from s in ThisLevel.Sprites
                       where s.ContainsVisual(v)
                       select s;
             try
             {
                 var spriteSel = res.First();
                 lstSprites.SelectedItem = spriteSel;
                 foreach (var sprite in ThisLevel.Sprites)
                 {
                     if (sprite != null)
                     {
                         sprite.Highlight = false;
                     }
                 }
                 spriteSel.Highlight = true;
             }
             catch (Exception) { }
         }
     }
 }
예제 #2
0
        private void lstSprites_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
        {
            SpriteObject obj = (lstSprites.SelectedItem as SpriteObject);

            if (obj != null)
            {
                // Space not possible
                switch (e.Key)
                {
                case Key.Delete:
                    ThisLevel.Sprites.Remove(obj);
                    MainGFX.RemoveObject(obj);
                    lstSprites.Items.Refresh();
                    break;

                case Key.Enter:
                    obj.Animated = !obj.Animated;
                    lstSprites.Items.Refresh();
                    break;

                default:
                    break;
                }
            }
        }
예제 #3
0
        private void cmdAddSprite_Click(object sender, RoutedEventArgs e)
        {
            var sobj = Activator.CreateInstance(dbNewObj.SelectedItem as Type) as SpriteObject;

            sobj.Name     = txtSpriteName.Text;
            sobj.Position = new Vector(GameSlider.Value, 100);
            //sobj.CenterOfMass = new Vector(0, 0);
            sobj.IsMovable  = false;
            sobj.CanCollide = true;
            sobj.IsObstacle = false;
            //ThisLevel.selectImage(sobj);
            int idx = ThisLevel.Sprites.IndexOf(lstSprites.SelectedItem as SpriteObject);

            if ((idx >= 0) && (idx < ThisLevel.Sprites.Count - 1))
            {
                idx++;
                ThisLevel.Sprites.Insert(idx, sobj);
            }
            else
            {
                ThisLevel.Sprites.Add(sobj);
            }
            MainGFX.AddObject(sobj);
            lstSprites.Items.Refresh();
            txtSpriteName.Text = "";
        }
예제 #4
0
        private void cmdTest_Click(object sender, RoutedEventArgs e)
        {
            // Objekte erstellen
            IGFXObject obj1 = new SpriteObject("Test Sprite");
            //IGFXObject obj2 = new CarObject("Test Auto");  // erstellt ParticleSystem. passt nicht zu neuer Baumstruktur
            IGFXObject         obj2  = new SpriteObjectElastic("Fussball");
            IGFXObjComposition comp2 = new GFXComposition("Blumenbeet");

            comp2.AddObject(new SpriteObject("Sehr grüne Pflanze"));
            comp2.AddObject(new SpriteObject("Maiglöckchen"));

            IGFXObjComposition comp1 = new GFXComposition("Zusammengebautes Object");

            comp1.AddObject(new SpriteObject("Teil 1"));
            comp1.AddObject(new SpriteObject("Teil 2"));
            comp1.AddObject(comp2);
            comp1.AddObject(new SpriteObject("Teil 3"));

            MainGFX.AddObject(obj1);
            MainGFX.AddObject(obj2);
            MainGFX.AddObject(comp1);


            // Objekt-Baum listen
            lstTree.ItemsSource = MainGFX.ToList();
        }
예제 #5
0
 private void GameMainWindow_Loaded(object sender, RoutedEventArgs e)
 {
     // After everything has loaded, rendered and so on
     Dispatcher.BeginInvoke(DispatcherPriority.ContextIdle, new Action(() =>
     {
         //System.Windows.Forms.MessageBox.Show("dispatched");
         MainGFX.Start();
         GameStarting();
     }));
 }
예제 #6
0
 private void Window_Loaded(object sender, RoutedEventArgs e)
 {
     // After everything has loaded, rendered and so on
     Dispatcher.BeginInvoke(DispatcherPriority.ContextIdle, new Action(() =>
     {
         lstSprites.ItemsSource = ThisLevel.Sprites;
         Scroller = new GameScroller(GameSlider, MainGFX, GameWrapper);
         MainGFX.Start();
     }));
 }
예제 #7
0
 private void cmdSetLevelBkg_Click(object sender, RoutedEventArgs e)
 {
     MainGFX.RemoveObject(ThisLevel.LevelBkg);
     ThisLevel.LevelBkg              = new SpriteObject();
     ThisLevel.LevelBkg.Name         = "LevelBkg";
     ThisLevel.LevelBkg.CenterOfMass = new Vector(0, 0);
     ThisLevel.LevelBkg.IsMovable    = false;
     ThisLevel.LevelBkg.IsObstacle   = false;
     ThisLevel.selectImage(ThisLevel.LevelBkg);
     (ThisLevel.LevelBkg as SpriteObject).ZoomPreserveAspectRatio(height: GameWrapper.Height);
     (ThisLevel.Background as SpriteObject).ScrollScaling = (ThisLevel.Background.SizeV.X - (GameWrapper.Width / 2)) / ThisLevel.LevelBkg.SizeV.X;
     MainGFX.AddObject(ThisLevel.LevelBkg);
     MainGFX.Width = ThisLevel.LevelBkg.SizeV.X;
 }
예제 #8
0
 private void cmdSetParBkg_Click(object sender, RoutedEventArgs e)
 {
     //MainGFX.Height = 50;
     //GameWrapper.Width = 50;
     MainGFX.RemoveObject(ThisLevel.Background);
     ThisLevel.Background              = new SpriteObject();
     ThisLevel.Background.Name         = "Background";
     ThisLevel.Background.CenterOfMass = new Vector(0, 0);
     ThisLevel.Background.IsMovable    = false;
     ThisLevel.Background.IsObstacle   = false;
     ThisLevel.selectImage(ThisLevel.Background);
     (ThisLevel.Background as SpriteObject).ZoomPreserveAspectRatio(height: GameWrapper.Height);
     MainGFX.AddObject(ThisLevel.Background);
     MainGFX.Width = ThisLevel.Background.SizeV.X;
     // todo: eigentlich in setlvlbackg
     //MainGFX.Width = thisLevel.Background.SizeV.X;
     // MainGFX.Height = 500;
 }
예제 #9
0
        private async void MetroWindow_Closing_Async(object sender, System.ComponentModel.CancelEventArgs e)
        {
            e.Cancel = !_shutdown;
            if (_shutdown)
            {
                return;
            }

            var mySettings = new MetroDialogSettings()
            {
                AffirmativeButtonText = "Quit",
                NegativeButtonText    = "Cancel",
                AnimateShow           = true,
                AnimateHide           = false
            };

            var result = await this.ShowMessageAsync("Quit",
                                                     "Close Game?",
                                                     MessageDialogStyle.AffirmativeAndNegative, mySettings);

            bool affirm = result == MessageDialogResult.Affirmative;

            if (affirm)
            {
                // Close Game
                // Todo: save score
                // Todo: save score on dispose
            }
            _shutdown = affirm;

            if (_shutdown)
            {
                MainGFX.Dispose();
                //this.Close();
                System.Windows.Application.Current.Shutdown();
            }
        }
예제 #10
0
        private async void MetroWindow_Closing_Async(object sender, System.ComponentModel.CancelEventArgs e)
        {
            e.Cancel = !_shutdown;
            if (_shutdown)
            {
                return;
            }

            var mySettings = new MetroDialogSettings()
            {
                AffirmativeButtonText = "Save & Quit",
                NegativeButtonText    = "Quit",
                AnimateShow           = true,
                AnimateHide           = false
            };

            var result = await this.ShowMessageAsync("Quit Gamedesigner?",
                                                     "Do you want to save changes?",
                                                     MessageDialogStyle.AffirmativeAndNegative, mySettings);

            bool affirm = result == MessageDialogResult.Affirmative;

            if (affirm)
            {
                cmdSaveLevel_Click(this, new RoutedEventArgs());
            }

            _shutdown = true;

            if (_shutdown)
            {
                MainGFX.Dispose();
                System.Windows.Application.Current.Shutdown();
                //this.Close();
            }
        }
예제 #11
0
 private void GameWindow_PreviewKeyUp(object sender, System.Windows.Input.KeyEventArgs e)
 {
     MainGFX.RaiseWindowKeyUp(this, e);
 }
예제 #12
0
 private void DesignerWindow_PreviewKeyDown(object sender, System.Windows.Input.KeyEventArgs e)
 {
     MainGFX.RaiseWindowKeyDown(this, e);
 }