Exemple #1
0
        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);
        }