private void BtnAddCtrlClick(object sender, EventArgs e) { if (AI == null) { MessageBox.Show(Resources.NullAI + Resources.AddAController); return; } if (txtCtrlID.Text != "") { var acCount = AI.ActionControllerCount; if (!StringType.IsNumber(txtCtrlID.Text)) { MessageBox.Show(Resources.NoNumCtrl); return; } var ctrlID = Convert.ToInt32(txtCtrlID.Text); for (var i = 0; i < acCount; i++) { if (ctrlID != AI.ActionController[i].ID || ctrlID <= 0) continue; MessageBox.Show(Resources.CtrlExists); return; } acCount++; var aiPolicy = new Model.AIPolicy(); aiPolicy.Signature = 0; aiPolicy.ActionControllerCount = acCount; aiPolicy.ActionController = new ActionController[acCount]; for (var j = 0; j < aiPolicy.ActionController.Length - 1; j++) { aiPolicy.ActionController[j] = AI.ActionController[j]; aiPolicy.ActionController[j].Signature = AI.ActionController[j].Signature; aiPolicy.ActionController[j].ID = AI.ActionController[j].ID; aiPolicy.ActionController[j].ActionSetsCount = AI.ActionController[j].ActionSetsCount; aiPolicy.ActionController[j].ActionSet = AI.ActionController[j].ActionSet; } AI = aiPolicy; AI.ActionController[acCount - 1] = new ActionController(); AI.ActionController[acCount - 1].Signature = 0; AI.ActionController[acCount - 1].ActionSetsCount = 0; AI.ActionController[acCount - 1].ActionSet = new ActionSet[aiPolicy.ActionController[acCount - 1].ActionSetsCount]; AI.ActionController[acCount - 1].ID = ctrlID; listController.Items.Clear(); for (var k = 0; k < AI.ActionControllerCount; k++) { var iD = AI.ActionController[k].ID; listController.Items.Add(iD.ToString(CultureInfo.InvariantCulture)); } listActionSet.Items.Clear(); txtCondition.Clear(); listProcedure.Items.Clear(); } MessageBox.Show(Resources.CtrlWithID + txtCtrlID.Text + Resources.BeenAdded); }
private void BtnDelCtrlClick(object sender, EventArgs e) { if (AI == null) { MessageBox.Show(Resources.NullAI + Resources.DeleteACtrl); return; } if (AI != null && txtCtrlID.Text != "") { var actionControllerCount = AI.ActionControllerCount; var ctrlID = -1; if (!StringType.IsNumber(txtCtrlID.Text)) { MessageBox.Show(Resources.EnterCtrlID); return; } var delCtrlID = Convert.ToInt32(txtCtrlID.Text); for (var i = 0; i < actionControllerCount; i++) if (delCtrlID == AI.ActionController[i].ID) ctrlID = i; if (ctrlID < 0) { MessageBox.Show(Resources.CtrlNotExist); return; } var aiPolicy = new Model.AIPolicy(); aiPolicy.Signature = 0; aiPolicy.ActionControllerCount = actionControllerCount - 1; aiPolicy.ActionController = new ActionController[aiPolicy.ActionControllerCount]; for (var i = 0; i < aiPolicy.ActionController.Length; i++) { if (i < ctrlID) aiPolicy.ActionController[i] = AI.ActionController[i]; if (i >= ctrlID) aiPolicy.ActionController[i] = AI.ActionController[i + 1]; } AI = aiPolicy; listController.Items.Clear(); for (var k = 0; k < AI.ActionControllerCount; k++) listController.Items.Add(AI.ActionController[k].ID.ToString(CultureInfo.InvariantCulture)); listActionSet.Items.Clear(); txtCondition.Clear(); listProcedure.Items.Clear(); } MessageBox.Show(Resources.CtrlWithID + txtCtrlID.Text + Resources.BeenDeleted); }
private void MenuFileOpenClick(object sender, EventArgs e) { var open = new OpenFileDialog(); open.Filter = Resources.AIPolicyFilter; open.Title = Resources.OpenAIPolicy; open.FileName = "aipolicy.data"; if (open.ShowDialog() != DialogResult.OK || !File.Exists(open.FileName)) return; try { Cursor = Cursors.WaitCursor; listController.Items.Clear(); listActionSet.Items.Clear(); listProcedure.Items.Clear(); txtCondition.Clear(); var ofs = File.OpenRead(open.FileName); var br = new BinaryReader(ofs); AI = new Model.AIPolicy(); AI.Signature = br.ReadInt32(); AI.ActionControllerCount = br.ReadInt32(); AI.ActionController = new ActionController[AI.ActionControllerCount]; for (var i = 0; i < AI.ActionController.Length; i++) { AI.ActionController[i] = new ActionController(); var ac = AI.ActionController[i]; ac.Signature = br.ReadInt32(); ac.ID = br.ReadInt32(); ac.ActionSetsCount = br.ReadInt32(); ac.ActionSet = new ActionSet[ac.ActionSetsCount]; listController.Items.Add(ac.ID.ToString(CultureInfo.InvariantCulture)); for (var j = 0; j < ac.ActionSet.Length; j++) { ac.ActionSet[j] = new ActionSet(); var aSet = AI.ActionController[i].ActionSet[j]; aSet.Version = br.ReadInt32(); aSet.ID = br.ReadInt32(); aSet.Flags = br.ReadBytes(3); aSet.ActionSetName = br.ReadBytes(128); aSet.Condition = Condition.LoadCondition(br); aSet.ProcedureCount = br.ReadInt32(); aSet.Procedure = new Procedure[aSet.ProcedureCount]; for (var k = 0; k < aSet.Procedure.Length; ++k) { aSet.Procedure[k] = new Procedure(); var proc = AI.ActionController[i].ActionSet[j].Procedure[k]; proc.Type = br.ReadInt32(); proc.Parameter = Procedure.ReadParameters(proc.Type, br); proc.Target = br.ReadInt32(); if (proc.Target == 6) proc.TargetParameters = Procedure.ReadTargetParameters(proc.Target, br); } } } br.Dispose(); ofs.Dispose(); open.Dispose(); Cursor = Cursors.Default; } catch (Exception ex) { Cursor = Cursors.Default; MessageBox.Show(Resources.ErrLoadAIPolicy + ex.Message); } }