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()); }
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); }
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]; }
void cmdFG_Click(object sender, EventArgs e) { _eventType = BaseBriefing.EventType.FGTag1; pnlShipTag.Visible = true; enableOkCancel(true); }
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; }
void cmdCaption_Click(object sender, EventArgs e) { cboText.Enabled = true; _eventType = BaseBriefing.EventType.CaptionText; enableOkCancel(true); }
void cmdClear_Click(object sender, EventArgs e) { optFG.Enabled = true; optText.Enabled = true; _eventType = BaseBriefing.EventType.ClearFGTags; enableOkCancel(true); }
void cmdBreak_Click(object sender, EventArgs e) { _eventType = BaseBriefing.EventType.PageBreak; _page++; enableOkCancel(true); }
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(); }
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); }
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); }
void cmdShipInfo_Click(object sender, EventArgs e) { _eventType = BaseBriefing.EventType.XwaShipInfo; enableOkCancel(true); pnlShipInfo.Visible = true; }
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; }
void cmdRegion_Click(object sender, EventArgs e) { _eventType = BaseBriefing.EventType.XwaChangeRegion; enableOkCancel(true); pnlRegion.Visible = true; }