private void missionsDataGridView_NewRowNeeded(object sender, DataGridViewRowEventArgs e)
 {
     mockMission = new TeamTypeMission {
         Mission = plugin.Map.TeamMissionTypes.First(), Argument = 0
     };
     missionEditRow = missionsDataGridView.RowCount - 1;
 }
        private void missionsDataGridView_CellValuePushed(object sender, DataGridViewCellValueEventArgs e)
        {
            if (SelectedTeamType == null)
            {
                return;
            }

            if (mockMission == null)
            {
                mockMission = (e.RowIndex < SelectedTeamType.Missions.Count) ?
                              new TeamTypeMission {
                    Mission = SelectedTeamType.Missions[e.RowIndex].Mission, Argument = SelectedTeamType.Missions[e.RowIndex].Argument
                } :
                new TeamTypeMission {
                    Mission = plugin.Map.TeamMissionTypes.First(), Argument = 0
                };
            }
            missionEditRow = e.RowIndex;

            switch (e.ColumnIndex)
            {
            case 0:
                mockMission.Mission = e.Value as string;
                break;

            case 1:
                mockMission.Argument = int.TryParse(e.Value as string, out int value) ? value : 0;
                break;
            }
        }
        private void missionsDataGridView_CellValueNeeded(object sender, DataGridViewCellValueEventArgs e)
        {
            if (SelectedTeamType == null)
            {
                return;
            }

            TeamTypeMission teamMissionType = null;

            if (e.RowIndex == missionEditRow)
            {
                teamMissionType = mockMission;
            }
            else if (e.RowIndex < SelectedTeamType.Missions.Count)
            {
                teamMissionType = SelectedTeamType.Missions[e.RowIndex];
            }

            if (teamMissionType == null)
            {
                return;
            }

            switch (e.ColumnIndex)
            {
            case 0:
                e.Value = teamMissionType.Mission;
                break;

            case 1:
                e.Value = teamMissionType.Argument;
                break;
            }
        }
        private void teamTypesListView_SelectedIndexChanged(object sender, EventArgs e)
        {
            houseComboBox.DataBindings.Clear();
            roundaboutCheckBox.DataBindings.Clear();
            learningCheckBox.DataBindings.Clear();
            suicideCheckBox.DataBindings.Clear();
            autocreateCheckBox.DataBindings.Clear();
            mercernaryCheckBox.DataBindings.Clear();
            reinforcableCheckBox.DataBindings.Clear();
            prebuiltCheckBox.DataBindings.Clear();
            recruitPriorityNud.DataBindings.Clear();
            initNumNud.DataBindings.Clear();
            maxAllowedNud.DataBindings.Clear();
            fearNud.DataBindings.Clear();
            waypointComboBox.DataBindings.Clear();
            triggerComboBox.DataBindings.Clear();

            if (SelectedTeamType != null)
            {
                houseComboBox.DataBindings.Add("SelectedValue", SelectedTeamType, "House");
                roundaboutCheckBox.DataBindings.Add("Checked", SelectedTeamType, "IsRoundAbout");
                learningCheckBox.DataBindings.Add("Checked", SelectedTeamType, "IsLearning");
                suicideCheckBox.DataBindings.Add("Checked", SelectedTeamType, "IsSuicide");
                autocreateCheckBox.DataBindings.Add("Checked", SelectedTeamType, "IsAutocreate");
                mercernaryCheckBox.DataBindings.Add("Checked", SelectedTeamType, "IsMercenary");
                reinforcableCheckBox.DataBindings.Add("Checked", SelectedTeamType, "IsReinforcable");
                prebuiltCheckBox.DataBindings.Add("Checked", SelectedTeamType, "IsPrebuilt");
                recruitPriorityNud.DataBindings.Add("Value", SelectedTeamType, "RecruitPriority");
                initNumNud.DataBindings.Add("Value", SelectedTeamType, "InitNum");
                maxAllowedNud.DataBindings.Add("Value", SelectedTeamType, "MaxAllowed");
                fearNud.DataBindings.Add("Value", SelectedTeamType, "Fear");
                waypointComboBox.DataBindings.Add("SelectedIndex", SelectedTeamType, "Origin");
                triggerComboBox.DataBindings.Add("SelectedItem", SelectedTeamType, "Trigger");

                mockClass      = null;
                mockMission    = null;
                classEditRow   = -1;
                missionEditRow = -1;

                teamsDataGridView.Rows.Clear();
                missionsDataGridView.Rows.Clear();

                teamsDataGridView.RowCount    = SelectedTeamType.Classes.Count + 1;
                missionsDataGridView.RowCount = SelectedTeamType.Missions.Count + 1;

                updateDataGridViewAddRows(teamsDataGridView, Globals.MaxTeamClasses);
                updateDataGridViewAddRows(missionsDataGridView, Globals.MaxTeamMissions);

                teamTypeTableLayoutPanel.Visible = true;
            }
            else
            {
                teamTypeTableLayoutPanel.Visible = false;
            }
        }
        private void missionsDataGridView_UserDeletingRow(object sender, DataGridViewRowCancelEventArgs e)
        {
            if (e.Row.Index < SelectedTeamType.Missions.Count)
            {
                SelectedTeamType.Missions.RemoveAt(e.Row.Index);
            }

            if (e.Row.Index == missionEditRow)
            {
                mockMission    = null;
                missionEditRow = -1;
            }
        }
 private void missionsDataGridView_CancelRowEdit(object sender, QuestionEventArgs e)
 {
     if ((missionEditRow == (missionsDataGridView.Rows.Count - 2)) && (missionEditRow == SelectedTeamType.Missions.Count))
     {
         mockMission = new TeamTypeMission {
             Mission = plugin.Map.TeamMissionTypes.First(), Argument = 0
         };
     }
     else
     {
         mockMission    = null;
         missionEditRow = -1;
     }
 }
 private void missionsDataGridView_RowValidated(object sender, DataGridViewCellEventArgs e)
 {
     if ((mockMission != null) && (e.RowIndex >= SelectedTeamType.Missions.Count) && ((missionsDataGridView.Rows.Count > 1) || (e.RowIndex < (missionsDataGridView.Rows.Count - 1))))
     {
         SelectedTeamType.Missions.Add(mockMission);
         mockMission    = null;
         missionEditRow = -1;
     }
     else if ((mockMission != null) && (e.RowIndex < SelectedTeamType.Missions.Count))
     {
         SelectedTeamType.Missions[e.RowIndex] = mockMission;
         mockMission    = null;
         missionEditRow = -1;
     }
     else if (missionsDataGridView.ContainsFocus)
     {
         mockMission    = null;
         missionEditRow = -1;
     }
 }