Beispiel #1
0
        private void Form1_MouseDown(object sender, MouseEventArgs e)
        {
            try
            {
                switch (e.Button)
                {
                case MouseButtons.Left:

                    #region f_addnewAffect - commit
                    if (f_addnewAffect)
                    {
                        foreach (var c in m_states)
                        {
                            if (c.HitTest(e.Location))
                            {
                                m_affects.Add(new SimsAffect(_selectedState, c, +1.0f));
                                this.SetSelectedObject(null, false);
                                return;
                            }
                        }
                        return;
                    }
                    //# 若有選取 SimsAffect 則移動 amid
                    else if (_selectedAffect != null)
                    {
                        _selectedAffect.SetAmidPoint(e.Location);
                        this.SetSelectedObject(null, false);
                        return;
                    }
                    #endregion

                    #region # 選取 SimsState
                    foreach (var c in m_states)
                    {
                        if (c.HistTestOutline(e.Location))
                        {
                            this.StatusLabel1.Text += "  hit outline";
                            return;
                        }
                        else if (c.HitTest(e.Location))
                        {
                            this.StatusLabel1.Text += "  hit inside";
                            this.SetSelectedObject(c);
                            return;
                        }
                    }
                    #endregion

                    // cancel all action
                    SetSelectedObject(null, false);

                    break;

                case MouseButtons.Right:

                    #region f_addnewAffect - cancel
                    if (f_addnewAffect)
                    {
                        SetSelectedObject(null, false);
                        return;
                    }     // ------------------------------
                    #endregion

                    #region # 選取 SimsAffect
                    foreach (var c in m_affects)
                    {
                        if (c.HitTest(e.Location))
                        {
                            this.SetSelectedObject(c);
                            return;
                        }
                    }
                    #endregion

                    #region # 選取 SimsState 以新增 SimsAffect
                    foreach (var c in m_states)
                    {
                        if (c.HitTest(e.Location))
                        {
                            this.SetSelectedObject(c, true, e.Location);
                            return;
                        }
                    }
                    #endregion

                    // cancel all action
                    SetSelectedObject(null, false);

                    break;
                }
            }
            finally
            {
                this.Invalidate();
            }
        }