private void ExportRules(ProjectContent projectContent, string directoryName)
 {
     var expression = ExpressionBuilder.GetFinalExpression(RulesEditElement);
     FileManager.SaveFile(projectContent.RuleSetName + RulesSuffix, expression, directoryName);
 }
 private void ExportEntities(ProjectContent projectContent, string directoryName)
 {
     var baseClass = GetBaseClassName(projectContent);
     foreach (var entity in projectContent.Entities)
     {
         var entityName = entity.EntityName;
         var builder = new StringBuilder();
         builder.AppendFormat(Templates.EntityClassBeginningTemplate, entityName, baseClass);
         var literalDictionaryBuilder = new StringBuilder();
         foreach (var attribute in entity.Attributes)
         {
             var literalName = Literal.GenerateLiteralName(entityName, attribute);
             builder.AppendFormat(Templates.EntityPropertyTemplate, literalName, attribute);
             literalDictionaryBuilder.AppendFormat(Templates.DictionaryKeyPairTemplate, literalName, attribute);
         }
         builder.AppendFormat(Templates.EntityClassEndTemplate, literalDictionaryBuilder.ToString());
         FileManager.SaveFile(entityName + BaseSuffix, builder.ToString(), directoryName, CsFileSuffix);
     }
 }
 private string GetBaseClassName(ProjectContent projectContent)
 {
     return projectContent.RuleSetName + BaseSuffix;
 }
 private void ExportStates(ProjectContent projectContent, string exportedProjectDirectory)
 {
     FileManager.SaveFile(WinningStateFilename, ExportStates(projectContent.WinningStates), exportedProjectDirectory);
     FileManager.SaveFile(LoosingStateFilename, ExportStates(projectContent.LoosingStates), exportedProjectDirectory);
     FileManager.SaveFile(StartStateFilename, ExportStates(projectContent.StartStates), exportedProjectDirectory);
 }
 private void SaveEntities(ProjectContent projectContent)
 {
     projectContent.Entities = new List<EntityDefinition>();
     foreach (Transform entity in EntitiesContainer.transform)
     {
         var entityElement = entity.GetComponent<EntityElement>();
         if (entityElement != null)
         {
             projectContent.Entities.Add(entityElement.EntityDefinition);
         }
     }
 }
 private void SaveStates(ProjectContent projectContent)
 {
     projectContent.LoosingStates = SaveStates(LoosingStatesContainer);
     projectContent.WinningStates = SaveStates(WinningStatesContainer);
     projectContent.StartStates = SaveStates(StartStatesContainer);
 }
 private void SaveRules(ProjectContent projectContent)
 {
     projectContent.Rules = new List<RuleDefinition>();
     foreach (Transform rule in RulesContainer)
     {
         var components = new List<ExpressionElement>();
         foreach (Transform ruleComponents in rule)
         {
             var literal = ruleComponents.GetComponent<LiteralComponent>();
             if (literal != null)
             {
                 components.Add(literal.Literal);
             }
             else
             {
                 var connective = ruleComponents.GetComponent<ConnectiveComponent>();
                 if (connective != null)
                 {
                     components.Add(new Connective { Type = connective.ConnectiveType });
                 }
             }
         }
         projectContent.Rules.Add(new RuleDefinition(components));
     }
 }
 private void LoadStates(ProjectContent projectContent)
 {
     LoadStates(WinningStatesContainer, projectContent.WinningStates);
     LoadStates(LoosingStatesContainer, projectContent.LoosingStates);
     LoadStates(StartStatesContainer, projectContent.StartStates);
 }
 public ProjectContent GetProjectContent(string name)
 {
     if (name == null)
     {
         return null;
     }
     ProjectContent projectContent = new ProjectContent();
     projectContent.RuleSetName = name;
     SaveEntities(projectContent);
     SaveRules(projectContent);
     SaveStates(projectContent);
     return projectContent;
 }