Esempio n. 1
0
        private void ShowSkills(object sender, MouseButtonEventArgs e)
        {
            e.Handled = true;

            if (_windowSkill == null)
            {
                _windowSkill = new Skills(this, PlayerDamageDealt, EntityInformation, Skills, _buffs, _timedEncounter)
                {
                    Title      = PlayerName,
                    CloseMeter = { Content = LP.ResourceManager.GetString(PlayerDamageDealt.Source.Class.ToString(), LP.Culture) + " " + PlayerName + ": " + LP.Close }
                };
                Window main   = Window.GetWindow(this);
                Screen screen = Screen.FromHandle(new WindowInteropHelper(main).Handle);
                // Transform screen point to WPF device independent point
                PresentationSource source = PresentationSource.FromVisual(this);

                if (source?.CompositionTarget == null)
                {   //if this can't be determined, just use the center screen logic
                    _windowSkill.WindowStartupLocation = WindowStartupLocation.CenterScreen;
                }
                else
                {
                    // WindowStartupLocation.CenterScreen sometimes put window out of screen in multi monitor environment
                    _windowSkill.WindowStartupLocation = WindowStartupLocation.Manual;
                    Matrix m  = source.CompositionTarget.TransformToDevice;
                    double dx = m.M11;
                    double dy = m.M22;
                    ((System.Windows.UIElement)_windowSkill.DpsPanel.Content).Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));
                    var   maxWidth = (((System.Windows.UIElement)_windowSkill.DpsPanel.Content).DesiredSize.Width + 6) * BasicTeraData.Instance.WindowData.Scale;
                    Point locationFromScreen;
                    if (screen.WorkingArea.X + screen.WorkingArea.Width > (main.Left + main.Width + maxWidth) * dx)
                    {
                        locationFromScreen = new Point(
                            (main.Left + main.Width) * dx,
                            main.Top * dy);
                    }
                    else if (screen.WorkingArea.X + maxWidth * dx < main.Left * dx)
                    {
                        locationFromScreen = new Point(
                            (main.Left - maxWidth) * dx,
                            main.Top * dy);
                    }
                    else
                    {
                        locationFromScreen = new Point(
                            screen.WorkingArea.X + (screen.WorkingArea.Width - maxWidth * dx) / 2,
                            screen.WorkingArea.Y + (screen.WorkingArea.Height - 600 * dy) / 2);
                    }
                    Point targetPoints = source.CompositionTarget.TransformFromDevice.Transform(locationFromScreen);
                    _windowSkill.Left = targetPoints.X;
                    _windowSkill.Top  = targetPoints.Y;
                }
            }
            NetworkController.Instance.SendFullDetails = true;
            _windowSkill.Show();
        }
Esempio n. 2
0
        private void ShowSkills(object sender, MouseButtonEventArgs e)
        {
            e.Handled = true;
            var skills    = Skills(_timedEncounter);
            var allSkills = AllSkills(_timedEncounter);

            if (_windowSkill == null)
            {
                _windowSkill = new Skills(skills, allSkills, this, PlayerInfo, _buffs, _currentBoss, _timedEncounter, _firstHit, _lastHit)
                {
                    Title      = PlayerName,
                    CloseMeter = { Content = PlayerInfo.Class + " " + PlayerName + ": CLOSE" }
                };
                _windowSkill.Show();
                return;
            }

            _windowSkill.Update(skills, allSkills, PlayerInfo, _buffs, _currentBoss, _timedEncounter, _firstHit, _lastHit);
            _windowSkill.Show();
        }
Esempio n. 3
0
        private void ShowSkills(object sender, MouseButtonEventArgs e)
        {
            e.Handled = true;
            var skills    = Skills();
            var allSkills = AllSkills();

            if (_windowSkill == null)
            {
                _windowSkill = new Skills(skills, allSkills, this, PlayerInfo)
                {
                    Title      = PlayerName,
                    CloseMeter = { Content = PlayerInfo.Class + " " + PlayerName + ": CLOSE" }
                };
                _windowSkill.Show();
                return;
            }

            _windowSkill.Update(skills, allSkills, PlayerInfo);
            _windowSkill.Show();
        }