private string GetPath(Type recordType, RecordAttribute recordAttribute , string recordName) { var targetRootDirectory = GetTargetRecordRootDirectory(recordType, recordAttribute); string path; string fileRecordName = recordName; if (!recordName.IsValid() && recordAttribute.RecordNumberType != RecordNumberType.Singleton) { var allPath = DirectoryUtility.GetAllDirectoryContainSelf(targetRootDirectory, p => p.EndsWith(".json") && !p.EndsWith("/.json")); if (allPath.Count != 0) { var firstPath = allPath.First(); fileRecordName = FileUtility.GetFileIdWithoutExtension(firstPath); } else { return(null); } } if (recordAttribute.RecordNumberType == RecordNumberType.Singleton) { path = targetRootDirectory + recordType.Name + ".json"; } else { path = targetRootDirectory + fileRecordName + ".json"; } return(path); }
private object LoadRecordAtPath(string path, Type recordType, RecordAttribute recordAttribute) { if (path == null) { return(null); } object record; var recordName = FileUtility.GetFileIdWithoutExtension(path); if (File.Exists(path)) { var content = File.ReadAllText(path); record = JsonUtility.FromJson(content, recordType); } else { record = Activator.CreateInstance(recordType); if (recordAttribute.RecordNumberType == RecordNumberType.Singleton) { singleRecords.Value.Add(recordType, record); } else { ReflectionUtility.SetProperty(record, "RecordName", recordName); } var content = YojoyEditorAgent.GetBeautifiedJson(JsonUtility.ToJson(record)); FileUtility.WriteAllText(path, content); } return(record); }
private string GetTargetRecordRootDirectory(Type recordType, RecordAttribute recordAttribute) { var scopeString = recordAttribute.RecordScopeType + "/"; var parentString = recordAttribute.RecordNumberType == RecordNumberType.Singleton ? null : recordType.Name + "/"; var directory = recordRootDirectory + scopeString + parentString; return(directory); }