示例#1
0
        void cmdOk_Click(object sender, EventArgs e)
        {
            //[JB] Add test
            BaseBriefing brief = (_platform == Settings.Platform.TIE ? (BaseBriefing)_tieBriefing : (_platform == Settings.Platform.XvT ? (BaseBriefing)_xvtBriefing : (BaseBriefing)_xwaBriefing));
            if(hasAvailableEventSpace(2 + brief.EventParameterCount[_eventType]) == false) //Check space for a full event
            {
                MessageBox.Show("Event list is full, cannot add more.", "Error");
                cmdCancel_Click(0, new EventArgs());
                return;
            }

            if (_eventType == BaseBriefing.EventType.ClearFGTags) if (optText.Checked) _eventType = BaseBriefing.EventType.ClearTextTags;
            int i = -1;
            switch (_eventType)
            {
                case BaseBriefing.EventType.PageBreak:
                    #region page break
                    i = findExisting(_eventType);
                    if (i < 10000) { _page--; break; }	// no further action, existing break found
                    i -= 10000;
                    try
                    {
                        lstEvents.SelectedIndex = i;	// this will throw for last event
                        insertEvent();
                    }
                    catch (ArgumentOutOfRangeException)
                    {
                        lstEvents.Items.Add("");
                        for (int n=i+2;n>i;n--)
                        {
                            if (_events[n-1, 1] == 0) continue;
                            for (int h=0;h<6;h++) _events[n, h] = _events[n-1, h];
                        }
                    }
                    _events[i, 0] = (short)hsbTimer.Value;
                    _events[i, 1] = (short)_eventType;
                    for (int n=2;n<6;n++) _events[i, n] = 0;
                    if (_platform == Settings.Platform.TIE) lblTitle.Text = "";
                    lblCaption.Text = "";
                    break;
                    #endregion
                case BaseBriefing.EventType.TitleText:
                    #region title
                    i = findExisting(_eventType);
                    if (i >= 10000)  //[JB] Need to change all these conditional checks to >= 10000.  If the event list is empty, none will be found, returning exactly 10000 (which isn't caught) and produces an out of bounds exception trying to insert at _events[10000,0]
                    {
                        i -= 10000;	// if one wasn't found, remove marker, create it.
                        try
                        {
                            lstEvents.SelectedIndex = i;
                            insertEvent();
                        }
                        catch (ArgumentOutOfRangeException)
                        {
                            lstEvents.Items.Add("");
                            for (int n=i+2;n>i;n--)
                            {
                                if (_events[n-1, 1] == 0) continue;
                                for (int h=0;h<6;h++) _events[n, h] = _events[n-1, h];
                            }
                        }
                    }
                    _events[i, 0] = (short)hsbTimer.Value;
                    _events[i, 1] = (short)_eventType;
                    _events[i, 2] = (short)cboText.SelectedIndex;
                    for (int n=3;n<6;n++) _events[i, n] = 0;
                    if (_strings[_events[i, 2]].StartsWith(">"))
                    {
                        lblTitle.TextAlign = ContentAlignment.TopCenter;
                        lblTitle.ForeColor = _titleColor;
                        lblTitle.Text = _strings[_events[i, 2]].Replace(">", "");
                    }
                    else
                    {
                        lblTitle.TextAlign = ContentAlignment.TopLeft;
                        lblTitle.ForeColor = _normalColor;
                        lblTitle.Text = _strings[_events[i, 2]];
                    }
                    break;
                    #endregion
                case BaseBriefing.EventType.CaptionText:
                    #region caption
                    i = findExisting(_eventType);
                    if (i >= 10000)
                    {
                        i -= 10000;	// if one wasn't found, remove marker, create it.
                        try
                        {
                            lstEvents.SelectedIndex = i;
                            insertEvent();
                        }
                        catch (ArgumentOutOfRangeException)
                        {
                            lstEvents.Items.Add("");
                            for (int n=i+2;n>i;n--)
                            {
                                if (_events[n-1, 1] == 0) continue;
                                for (int h=0;h<6;h++) _events[n, h] = _events[n-1, h];
                            }
                        }
                    }
                    _events[i, 0] = (short)hsbTimer.Value;
                    _events[i, 1] = (short)_eventType;
                    _events[i, 2] = (short)cboText.SelectedIndex;
                    for (int n=3;n<6;n++) _events[i, n] = 0;
                    if (_strings[_events[i, 2]].StartsWith(">"))
                    {
                        lblCaption.TextAlign = ContentAlignment.TopCenter;
                        lblCaption.ForeColor = _titleColor;
                        lblCaption.Text = _strings[_events[i, 2]].Replace(">", "");
                    }
                    else
                    {
                        lblCaption.TextAlign = ContentAlignment.TopLeft;
                        lblCaption.ForeColor = _normalColor;
                        lblCaption.Text = _strings[_events[i, 2]];
                    }
                    break;
                    #endregion
                case BaseBriefing.EventType.MoveMap:
                    #region move
                    i = findExisting(_eventType);
                    if (i >= 10000)
                    {
                        i -= 10000;	// if one wasn't found, remove marker, create it.
                        try
                        {
                            lstEvents.SelectedIndex = i;
                            insertEvent();
                        }
                        catch (ArgumentOutOfRangeException)
                        {
                            lstEvents.Items.Add("");
                            for (int n=i+2;n>i;n--)
                            {
                                if (_events[n-1, 1] == 0) continue;
                                for (int h=0;h<6;h++) _events[n, h] = _events[n-1, h];
                            }
                        }
                    }
                    _events[i, 0] = (short)hsbTimer.Value;
                    _events[i, 1] = (short)_eventType;
                    _events[i, 2] = _mapX;
                    _events[i, 3] = _mapY;
                    // don't need to repaint, done while adjusting values
                    break;
                    #endregion
                case BaseBriefing.EventType.ZoomMap:
                    #region zoom
                    i = findExisting(_eventType);
                    if (i >= 10000)
                    {
                        i -= 10000;	// if one wasn't found, remove marker, create it.
                        try
                        {
                            lstEvents.SelectedIndex = i;
                            insertEvent();
                        }
                        catch (ArgumentOutOfRangeException)
                        {
                            lstEvents.Items.Add("");
                            for (int n=i+2;n>i;n--)
                            {
                                if (_events[n-1, 1] == 0) continue;
                                for (int h=0;h<6;h++) _events[n, h] = _events[n-1, h];
                            }
                        }
                    }
                    _events[i, 0] = (short)hsbTimer.Value;
                    _events[i, 1] = (short)_eventType;
                    _events[i, 2] = _zoomX;
                    _events[i, 3] = _zoomY;
                    // don't need to repaint, done while adjusting values
                    break;
                    #endregion
                case BaseBriefing.EventType.ClearFGTags:
                    #region clear FG
                    i = findExisting(_eventType);
                    if (i < 10000) break;	// no further action, existing break found
                    i -= 10000;
                    try
                    {
                        lstEvents.SelectedIndex = i;	// this will throw for last event
                        insertEvent();
                    }
                    catch (ArgumentOutOfRangeException)
                    {
                        lstEvents.Items.Add("");
                        for (int n=i+2;n>i;n--)
                        {
                            if (_events[n-1, 1] == 0) continue;
                            for (int h=0;h<6;h++) _events[n, h] = _events[n-1, h];
                        }
                    }
                    _events[i, 0] = (short)hsbTimer.Value;
                    _events[i, 1] = (short)_eventType;
                    for (int n=2;n<6;n++) _events[i, n] = 0;
                    for (int n=0;n<8;n++)
                    {
                        _fgTags[n, 0] = -1;
                        _fgTags[n, 1] = 0;
                    }
                    break;
                    #endregion
                case BaseBriefing.EventType.FGTag1:
                    #region FG
                    _eventType = (BaseBriefing.EventType)((int)_eventType + numFG.Value - 1);
                    i = findExisting(_eventType);
                    if (i >= 10000)
                    {
                        i -= 10000;	// if one wasn't found, remove marker, create it.
                        try
                        {
                            lstEvents.SelectedIndex = i;
                            insertEvent();
                        }
                        catch (ArgumentOutOfRangeException)
                        {
                            lstEvents.Items.Add("");
                            for (int n=i+2;n>i;n--)
                            {
                                if (_events[n-1, 1] == 0) continue;
                                for (int h=0;h<6;h++) _events[n, h] = _events[n-1, h];
                            }
                        }
                    }
                    _events[i, 0] = (short)hsbTimer.Value;
                    _events[i, 1] = (short)_eventType;
                    _events[i, 2] = (short)cboFGTag.SelectedIndex;
                    for (int n=3;n<6;n++) _events[i, n] = 0;
                    _fgTags[(int)_eventType-9, 0] = _events[i, 2];
                    _fgTags[(int)_eventType-9, 1] = _events[i, 0];
                    MapPaint();
                    break;
                    #endregion
                case BaseBriefing.EventType.ClearTextTags:
                    #region clear text
                    i = findExisting(_eventType);
                    if (i < 10000) break;	// no further action, existing break found
                    i -= 10000;
                    try
                    {
                        lstEvents.SelectedIndex = i;	// this will throw for last event
                        insertEvent();
                    }
                    catch (ArgumentOutOfRangeException)
                    {
                        lstEvents.Items.Add("");
                        for (int n=i+2;n>i;n--)
                        {
                            if (_events[n-1, 1] == 0) continue;
                            for (int h=0;h<6;h++) _events[n, h] = _events[n-1, h];
                        }
                    }
                    _events[i, 0] = (short)hsbTimer.Value;
                    _events[i, 1] = (short)_eventType;
                    for (int n=2;n<6;n++) _events[i, n] = 0;
                    for (int n=0;n<8;n++)
                    {
                        _textTags[n, 0] = -1;
                        _textTags[n, 1] = 0;
                    }
                    break;
                    #endregion
                case BaseBriefing.EventType.TextTag1:
                    #region text
                    _eventType = (BaseBriefing.EventType)((int)_eventType + numText.Value - 1);
                    // can't use FindExisting, due to extra parameter
                    i = findExisting(_eventType);
                    if (i >= 10000)
                    {
                        if (_tempX == -621 && _tempY == -621)
                        {
                            MessageBox.Show("No tag location selected!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            i = 0;
                            break;
                        }
                        i -= 10000;	// if one wasn't found, remove marker, create it.
                        try
                        {
                            lstEvents.SelectedIndex = i;
                            insertEvent();
                        }
                        catch (ArgumentOutOfRangeException)
                        {
                            lstEvents.Items.Add("");
                            for (int n=i+2;n>i;n--)
                            {
                                if (_events[n-1, 1] == 0) continue;
                                for (int h=0;h<6;h++) _events[n, h] = _events[n-1, h];
                            }
                        }
                    }
                    else
                    {
                        // found existing, just see if we change location or not
                        if (_tempX == -621 && _tempY == -621)
                        {
                            _tempX = _events[i, 3];
                            _tempY = _events[i, 4];
                        }
                    }
                    _events[i, 0] = (short)hsbTimer.Value;
                    _events[i, 1] = (short)_eventType;
                    _events[i, 2] = (short)cboTextTag.SelectedIndex;
                    _events[i, 3] = _tempX;
                    _events[i, 4] = _tempY;
                    _events[i, 5] = (short)cboColorTag.SelectedIndex;
                    // don't need to repaint or restore/edit from backup, as it's taken care of during placement
                    break;
                    #endregion
                case BaseBriefing.EventType.XwaNewIcon:
                    #region new icon
                    if (_tempX == -621 && _tempY == -621 && cboNCraft.SelectedIndex == 0)
                    {
                        MessageBox.Show("No craft location selected!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        i = 0;
                        break;
                    }
                    // start with the NewIcon command
                    i = findNext();
                    try
                    {
                        lstEvents.SelectedIndex = i;	// this will throw for last event
                        insertEvent();
                    }
                    catch (ArgumentOutOfRangeException)
                    {
                        lstEvents.Items.Add("");
                        for (int n=i+2;n>i;n--)
                        {
                            if (_events[n-1, 1] == 0) continue;
                            for (int h=0;h<6;h++) _events[n, h] = _events[n-1, h];
                        }
                    }
                    _events[i, 0] = (short)hsbTimer.Value;
                    _events[i, 1] = (short)_eventType;
                    _events[i, 2] = _icon;
                    _events[i, 3] = (short)cboNCraft.SelectedIndex;
                    _events[i, 4] = (short)cboIconIff.SelectedIndex;
                    _events[i, 5] = 0;
                    updateList(i);
                    // and now the MoveIcon
                    if (cboNCraft.SelectedIndex != 0)
                    {
                        i = findNext();
                        try
                        {
                            lstEvents.SelectedIndex = i;	// this will throw for last event
                            insertEvent();
                        }
                        catch (ArgumentOutOfRangeException)
                        {
                            lstEvents.Items.Add("");
                            for (int n=i+2;n>i;n--)
                            {
                                if (_events[n-1, 1] == 0) continue;
                                for (int h=0;h<6;h++) _events[n, h] = _events[n-1, h];
                            }
                        }
                        _events[i, 0] = (short)hsbTimer.Value;
                        _events[i, 1] = (short)BaseBriefing.EventType.XwaMoveIcon;
                        _events[i, 2] = _icon;
                        _events[i, 3] = _tempX;
                        _events[i, 4] = _tempY;
                        _events[i, 5] = 0;
                    }
                    break;
                    #endregion
                case BaseBriefing.EventType.XwaShipInfo:
                    #region info
                    i = findExisting(_eventType);
                    if (i >= 10000)
                    {
                        i -= 10000;
                        try
                        {
                            lstEvents.SelectedIndex = i;	// this will throw for last event
                            insertEvent();
                        }
                        catch (ArgumentOutOfRangeException)
                        {
                            lstEvents.Items.Add("");
                            for (int n=i+2;n>i;n--)
                            {
                                if (_events[n-1, 1] == 0) continue;
                                for (int h=0;h<6;h++) _events[n, h] = _events[n-1, h];
                            }
                        }
                    }
                    _events[i, 0] = (short)hsbTimer.Value;
                    _events[i, 1] = (short)_eventType;
                    _events[i, 2] = (short)(optInfoOn.Checked ? 1 : 0);
                    _events[i, 3] = (short)cboInfoCraft.SelectedIndex;
                    for (int n=4;n<6;n++) _events[i, n] = 0;
                    break;
                    #endregion
                case BaseBriefing.EventType.XwaMoveIcon:
                    #region move icon
                    if (_tempX == -621 && _tempY == -621)
                    {
                        MessageBox.Show("No craft location or valid icon selected!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        i = 0;
                        break;
                    }
                    if (numMoveTime.Value == 0)
                    {
                        i = findNext();		// could be lots of Moves at one time
                        try
                        {
                            lstEvents.SelectedIndex = i;	// this will throw for last event
                            insertEvent();
                        }
                        catch (ArgumentOutOfRangeException)
                        {
                            lstEvents.Items.Add("");
                            for (int n=i+2;n>i;n--)
                            {
                                if (_events[n-1, 1] == 0) continue;
                                for (int h=0;h<6;h++) _events[n, h] = _events[n-1, h];
                            }
                        }
                        _events[i, 0] = (short)hsbTimer.Value;
                        _events[i, 1] = (short)_eventType;
                        _events[i, 2] = _icon;
                        _events[i, 3] = _briefData[_icon].Waypoint[0];
                        _events[i, 4] = _briefData[_icon].Waypoint[1];
                        _events[i, 5] = 0;
                    }
                    else
                    {
                        int t0 = hsbTimer.Value, x = _briefData[_icon].Waypoint[0], y = _briefData[_icon].Waypoint[1];
                        int total = (int)Math.Round(numMoveTime.Value * _timerInterval);
                        for (int j=0;j<=total;j++)
                        {
                            i = findNext(j + t0);
                            try
                            {
                                lstEvents.SelectedIndex = i;	// this will throw for last event
                                insertEvent();
                            }
                            catch (ArgumentOutOfRangeException)
                            {
                                lstEvents.Items.Add("");
                                for (int n=i+2;n>i;n--)
                                {
                                    if (_events[n-1, 1] == 0) continue;
                                    for (int h=0;h<6;h++) _events[n, h] = _events[n-1, h];
                                }
                            }
                            _events[i, 0] = (short)(j + t0);
                            _events[i, 1] = (short)_eventType;
                            _events[i, 2] = _icon;
                            _events[i, 3] = (short)((x-_tempX) * j / total + _tempX);
                            _events[i, 4] = (short)((y-_tempY) * j / total + _tempY);
                            _events[i, 5] = 0;
                            updateList(i);
                        }
                    }
                    break;
                    #endregion
                case BaseBriefing.EventType.XwaRotateIcon:
                    #region rotate
                    i = findNext();		// could be lots of Rotates at one time
                    try
                    {
                        lstEvents.SelectedIndex = i;	// this will throw for last event
                        insertEvent();
                    }
                    catch (ArgumentOutOfRangeException)
                    {
                        lstEvents.Items.Add("");
                        for (int n=i+2;n>i;n--)
                        {
                            if (_events[n-1, 1] == 0) continue;
                            for (int h=0;h<6;h++) _events[n, h] = _events[n-1, h];
                        }
                    }
                    _events[i, 0] = (short)hsbTimer.Value;
                    _events[i, 1] = (short)_eventType;
                    _events[i, 2] = _icon;
                    _events[i, 3] = (short)cboRotateAmount.SelectedIndex;
                    for (int n=4;n<6;n++) _events[i, n] = 0;
                    break;
                    #endregion
                case BaseBriefing.EventType.XwaChangeRegion:
                    #region region
                    i = findExisting(_eventType);
                    if (i >= 10000)
                    {
                        i -= 10000;
                        try
                        {
                            lstEvents.SelectedIndex = i;	// this will throw for last event
                            insertEvent();
                        }
                        catch (ArgumentOutOfRangeException)
                        {
                            lstEvents.Items.Add("");
                            for (int n=i+2;n>i;n--)
                            {
                                if (_events[n-1, 1] == 0) continue;
                                for (int h=0;h<6;h++) _events[n, h] = _events[n-1, h];
                            }
                        }
                    }
                    _events[i, 0] = (short)hsbTimer.Value;
                    _events[i, 1] = (short)_eventType;
                    _events[i, 2] = (short)(numNewRegion.Value - 1);
                    for (int n=3;n<6;n++) _events[i, n] = 0;
                    break;
                    #endregion
                default:	// this shouldn't be possible
                    break;
            }
            lstEvents.SelectedIndex = i;
            updateList(i);
            cmdCancel_Click("OK", new System.EventArgs());
        }
示例#2
0
 void cmdMove_Click(object sender, EventArgs e)
 {
     lblTitle.Visible = false;
     lblCaption.Visible = false;
     hsbBRF.Maximum = 32768;
     hsbBRF.Minimum = -32767;
     hsbBRF.Value = _mapX;
     hsbBRF.Visible = true;
     vsbBRF.Maximum = 32768;
     vsbBRF.Minimum = -32767;
     vsbBRF.Value = _mapY;
     vsbBRF.Visible = true;
     _tempX = _mapX;
     _tempY = _mapY;
     _eventType = BaseBriefing.EventType.MoveMap;
     enableOkCancel(true);
 }
示例#3
0
 void cmdNewShip_Click(object sender, EventArgs e)
 {
     _eventType = BaseBriefing.EventType.XwaNewIcon;
     enableOkCancel(true);
     pnlNew.Visible = true;
     lblTitle.Visible = false;
     lblCaption.Visible = false;
     lblInstruction.Visible = true;
     _tempX = -621;
     _tempY = -621;
     _icon = (short)cboNewIcon.SelectedIndex;
     _tempBD = _briefData[_icon];
 }
示例#4
0
 void cmdFG_Click(object sender, EventArgs e)
 {
     _eventType = BaseBriefing.EventType.FGTag1;
     pnlShipTag.Visible = true;
     enableOkCancel(true);
 }
示例#5
0
 void cmdMoveShip_Click(object sender, EventArgs e)
 {
     _eventType = BaseBriefing.EventType.XwaMoveIcon;
     enableOkCancel(true);
     pnlMove.Visible = true;
     lblTitle.Visible = false;
     lblCaption.Visible = false;
     lblInstruction.Visible = true;
     _tempX = -621;
     _tempY = -621;
     _icon = (short)cboMoveIcon.SelectedIndex;
 }
示例#6
0
 void cmdCaption_Click(object sender, EventArgs e)
 {
     cboText.Enabled = true;
     _eventType = BaseBriefing.EventType.CaptionText;
     enableOkCancel(true);
 }
示例#7
0
 void cmdClear_Click(object sender, EventArgs e)
 {
     optFG.Enabled = true;
     optText.Enabled = true;
     _eventType = BaseBriefing.EventType.ClearFGTags;
     enableOkCancel(true);
 }
示例#8
0
 void cmdBreak_Click(object sender, EventArgs e)
 {
     _eventType = BaseBriefing.EventType.PageBreak;
     _page++;
     enableOkCancel(true);
 }
示例#9
0
 void cmdCancel_Click(object sender, EventArgs e)
 {
     cboText.Enabled = false;
     optFG.Enabled = false;
     optText.Enabled = false;
     lblTitle.Visible = true;
     lblCaption.Visible = true;
     hsbBRF.Visible = false;
     vsbBRF.Visible = false;
     lblInstruction.Visible = false;
     if (_eventType == BaseBriefing.EventType.PageBreak && sender.ToString() != "OK") { _page--; }
     else if (_eventType == BaseBriefing.EventType.TextTag1 && sender.ToString() != "OK") { _textTags = _tempTags; }
     else if (_eventType == BaseBriefing.EventType.MoveMap && sender.ToString() != "OK")
     {
         _mapX = _tempX;
         _mapY = _tempY;
     }
     else if (_eventType == BaseBriefing.EventType.ZoomMap && sender.ToString() != "OK")
     {
         _zoomX = _tempX;
         _zoomY = _tempY;
     }
     else if (_eventType == BaseBriefing.EventType.XwaRotateIcon && sender.ToString() != "OK")
     {
         try { _briefData[_icon].Waypoint[2] = _tempX; }
         catch (NullReferenceException) { /* do nothing */ }
     }
     else if (_eventType == BaseBriefing.EventType.XwaMoveIcon && sender.ToString() != "OK")
     {
         try
         {
             _briefData[_icon].Waypoint[0] = _tempX;
             _briefData[_icon].Waypoint[1] = _tempY;
         }
         catch (NullReferenceException) { /* do nothing */ }
     }
     _eventType = 0;
     enableOkCancel(false);
     MapPaint();
 }
示例#10
0
 void cmdZoom_Click(object sender, EventArgs e)
 {
     lblTitle.Visible = false;
     lblCaption.Visible = false;
     hsbBRF.Value = _zoomX;
     hsbBRF.Minimum = 1;
     hsbBRF.Maximum = 300;
     hsbBRF.Visible = true;
     vsbBRF.Value = _zoomY;
     vsbBRF.Minimum = 1;
     vsbBRF.Maximum = 300;
     vsbBRF.Visible = true;
     _tempX = _zoomX;
     _tempY = _zoomY;
     _eventType = BaseBriefing.EventType.ZoomMap;
     enableOkCancel(true);
 }
示例#11
0
 void cmdText_Click(object sender, EventArgs e)
 {
     _eventType = BaseBriefing.EventType.TextTag1;
     pnlTextTag.Visible = true;
     lblTitle.Visible = false;
     lblCaption.Visible = false;
     lblInstruction.Visible = true;
     _tempTags = _textTags;
     _tempX = -621;
     _tempY = -621;
     enableOkCancel(true);
 }
示例#12
0
 void cmdShipInfo_Click(object sender, EventArgs e)
 {
     _eventType = BaseBriefing.EventType.XwaShipInfo;
     enableOkCancel(true);
     pnlShipInfo.Visible = true;
 }
示例#13
0
 void cmdRotate_Click(object sender, EventArgs e)
 {
     _eventType = BaseBriefing.EventType.XwaRotateIcon;
     enableOkCancel(true);
     pnlRotate.Visible = true;
     _icon = (short)cboRCraft.SelectedIndex;
     try { cboRotateAmount.SelectedIndex = _briefData[_icon].Waypoint[2]; }
     catch (NullReferenceException) { cboRotateAmount.SelectedIndex = 0; }
     _tempX = (short)cboRotateAmount.SelectedIndex;
 }
示例#14
0
 void cmdRegion_Click(object sender, EventArgs e)
 {
     _eventType = BaseBriefing.EventType.XwaChangeRegion;
     enableOkCancel(true);
     pnlRegion.Visible = true;
 }