private void OnActionModelEdited(string name) { ActionModelType?type = EpisModel.FindTypeOfAction(name); switch (type) { case (ActionModelType.SecretAnnouncement): { SecretAnnouncementEditor ActionModelEditor = new SecretAnnouncementEditor(); SecretAnnouncementInfo modelInfo = EpisModel.GetSecretAnnouncementInfo(name); if (modelInfo != null) { ActionModelEditor.SetOriginalActionModel(modelInfo); ActionModelEditor.ShowDialog(); } break; } case (ActionModelType.PublicAnnouncement): { PublicAnnouncementEditor ActionModelEditor = new PublicAnnouncementEditor(); PublicAnnouncementInfo modelInfo = EpisModel.GetPublicAnnouncementInfo(name); if (modelInfo != null) { ActionModelEditor.SetOriginalActionModel(modelInfo); ActionModelEditor.ShowDialog(); } break; } } }
public void SetOriginalActionModel(SecretAnnouncementInfo info) { _originalSecretAnnouncementInfo = info; foreach (string name in info.Audience.Keys) { Aaud_ARL.AddItemToList(name); } Announcement_FC.SetFormulaExpression(info.Announcement.Expression); }
private void AddSecretAnnouncement(string actionModelName, string secretAnnouncementInfoName) { SecretAnnouncementInfo saInfo = _secretAnnouncementInfos[secretAnnouncementInfoName]; SecretAnnouncement aModel = new SecretAnnouncement(actionModelName, _agents, saInfo.Audience, saInfo.Announcement); _actionModels.Add(actionModelName, aModel); }
public SecretAnnouncementInfo CreateSecretAnnouncementInfo(string name) { if (IsNameConsistentForAnnounceInfo(name)) { SecretAnnouncementInfo newSInfo = new SecretAnnouncementInfo(); _secretAnnouncementInfos.Add(name, newSInfo); return(newSInfo); } return(null); }
private string[] SaveSecretAnnouncementAsText(string name) { SecretAnnouncementInfo info = _secretAnnouncementInfos[name]; int lineNum = 4 + info.Audience.Count; string[] toret = new string[lineNum]; toret[0] = "Secret"; toret[1] = name; toret[2] = info.Announcement.Expression; toret[3] = info.Audience.Count.ToString(); for (int i = 0; i < info.Audience.Count; i++) { toret[i + 4] = info.Audience.Keys.ToArray()[i]; } return(toret); }
public static EpistemicModel FromText(ref string[] lines) { EpistemicModel model = new EpistemicModel(); try { int lineNum = 0; if (lines[lineNum++] == "START_AGENTS") { int agentCount = int.Parse(lines[lineNum++]); int i; for (i = lineNum; i < agentCount + lineNum; i++) { model.AddAgent(lines[i]); } lineNum = i; if (lines[lineNum++] != "END_AGENTS") { return(null); } } else { return(null); } if (lines[lineNum++] == "START_ATOMICS") { int atomicCount = int.Parse(lines[lineNum++]); int i; for (i = lineNum; i < atomicCount + lineNum; i++) { model.AddAtomic(lines[i]); } lineNum = i; if (lines[lineNum++] != "END_ATOMICS") { return(null); } } else { return(null); } if (lines[lineNum++] == "START_ANN_INFO") { int infoCount = int.Parse(lines[lineNum++]); for (int i = 0; i < infoCount; i++) { if (lines[lineNum] == "Secret") { lineNum++; SecretAnnouncementInfo info = new SecretAnnouncementInfo(); string infoName = lines[lineNum++]; info.Announcement.Expression = lines[lineNum++]; int audienceCount = int.Parse(lines[lineNum++]); for (int j = 0; j < audienceCount; j++) { info.AddNewAudience(lines[lineNum++]); } model._secretAnnouncementInfos.Add(infoName, info); } else if (lines[lineNum] == "Public") { lineNum++; PublicAnnouncementInfo info = new PublicAnnouncementInfo(); string infoName = lines[lineNum++]; info.Announcement.Expression = lines[lineNum++]; int audienceCount = int.Parse(lines[lineNum++]); for (int j = 0; j < audienceCount; j++) { info.AddNewAudience(lines[lineNum++]); } model._publicAnnouncementInfos.Add(infoName, info); } } if (lines[lineNum++] != "END_ANN_INFO") { return(null); } } else { return(null); } List <string> newData = lines.ToList(); newData.RemoveRange(0, lineNum); lines = newData.ToArray(); } catch (FormatException) { return(null); } catch (IndexOutOfRangeException) { return(null); } return(model); }