private static HashSet <ResourceData> ScanObjectData(NodeObjectData parentNodeData) { PropertyAccessorHandler[] resourceProperties = parentNodeData.GetResourceProperties(); HashSet <ResourceData> hashSet = new HashSet <ResourceData>(); if (resourceProperties != null) { PropertyAccessorHandler[] array = resourceProperties; for (int i = 0; i < array.Length; i++) { PropertyAccessorHandler propertyAccessorHandler = array[i]; ResourceItemData resourceItemData = propertyAccessorHandler.GetValue(parentNodeData, null) as ResourceItemData; if (resourceItemData != null) { hashSet.Add(resourceItemData); } } } if (parentNodeData.Children != null) { foreach (NodeObjectData current in parentNodeData.Children) { hashSet.UnionWith(GameProjectContent.ScanObjectData(current)); } } return(hashSet); }
private static bool UpdateResourcesInAnimationData(TimelineActionData timelineActionData, ChangedResourceCollection changedResourceCollection) { bool flag = false; foreach (TimelineData timeline in timelineActionData.Timelines) { if (!(timeline.FrameType != typeof(TextureFrame).Name)) { foreach (TextureFrameData frame in timeline.Frames) { ResourceItemData textureFile = frame.TextureFile; if (!((ResourceData)textureFile == (ResourceData)null)) { ResourceFile resourceFile = (ResourceFile)null; if (changedResourceCollection.TryGetValue((ResourceData)textureFile, out resourceFile)) { if (resourceFile != null) { textureFile.Update(resourceFile.GetResourceData()); } else { frame.TextureFile = (ResourceItemData)null; } if (!flag) { flag = true; } } } } } } return(flag); }
private static HashSet <ResourceData> ScanObjectData(NodeObjectData parentNodeData) { PropertyAccessorHandler[] resourceProperties = parentNodeData.GetResourceProperties(); HashSet <ResourceData> resourceDataSet = new HashSet <ResourceData>(); if (resourceProperties != null) { foreach (PropertyAccessorHandler propertyAccessorHandler in resourceProperties) { ResourceItemData resourceItemData = propertyAccessorHandler.GetValue((object)parentNodeData, (object[])null) as ResourceItemData; if ((ResourceData)resourceItemData != (ResourceData)null) { resourceDataSet.Add((ResourceData)resourceItemData); } } } if (parentNodeData.Children != null) { foreach (NodeObjectData child in parentNodeData.Children) { resourceDataSet.UnionWith((IEnumerable <ResourceData>)GameProjectContent.ScanObjectData(child)); } } return(resourceDataSet); }
private void AreaOpened(AreaDataObservable area) { TilesetData tileset = _moduleDataService.Load <TilesetData>(area.TilesetGlobalID); ResourceItemData data = _resourceService.GetResourceByName(ResourceType.Tileset, tileset.ResourceName); ActiveTilesetImage = BitmapImageHelpers.LoadFromBytes(data.Data); ActiveTilesetImageWidth = ActiveTilesetImage.Width; ActiveTilesetImageHeight = ActiveTilesetImage.Height; TileGridVisibility = Visibility.Visible; }
private static bool UpdateResourcesInObjectData(NodeObjectData parentNodeData, ChangedResourceCollection changedResourceCollection) { PropertyAccessorHandler[] resourceProperties = parentNodeData.GetResourceProperties(); bool result; if (resourceProperties == null) { result = false; } else { bool flag = false; PropertyAccessorHandler[] array = resourceProperties; for (int i = 0; i < array.Length; i++) { PropertyAccessorHandler propertyAccessorHandler = array[i]; ResourceItemData resourceItemData = propertyAccessorHandler.GetValue(parentNodeData, null) as ResourceItemData; if (!(resourceItemData == null)) { ResourceFile resourceFile = null; if (changedResourceCollection.TryGetValue(resourceItemData, out resourceFile)) { if (resourceFile != null) { resourceItemData.Update(resourceFile.GetResourceData()); } else { propertyAccessorHandler.SetValue(parentNodeData, null, null); } if (!flag) { flag = true; } } } } if (parentNodeData.Children != null) { foreach (NodeObjectData current in parentNodeData.Children) { bool flag2 = GameProjectContent.UpdateResourcesInObjectData(current, changedResourceCollection); if (!flag && flag2) { flag = flag2; } } } result = flag; } return(result); }
private static bool CheckReferenceProjectInObjectData(NodeObjectData parentNode, Project project, ResourceData projectPath) { bool result; if (parentNode == null) { result = false; } else { ProjectNodeObjectData projectNodeObjectData = parentNode as ProjectNodeObjectData; if (projectNodeObjectData != null) { ResourceItemData fileData = projectNodeObjectData.FileData; if (projectPath.Equals(fileData)) { result = true; return(result); } if (fileData != null) { Project project2 = Services.ProjectsService.CurrentResourceGroup.FindResourceItem(fileData) as Project; if (project2 != null) { bool flag = project2.HasReferencedProject(project); if (flag) { result = true; return(result); } } } } if (parentNode.Children != null) { foreach (NodeObjectData current in parentNode.Children) { bool flag2 = GameProjectContent.CheckReferenceProjectInObjectData(current, project, projectPath); if (flag2) { result = true; return(result); } } } result = false; } return(result); }
private void AddResource() { _addResourceDialog.Filter = BuildFilter(); if (_addResourceDialog.ShowDialog() != true) { return; } List <string> errorFiles = new List <string>(); foreach (var filePath in _addResourceDialog.FileNames) { bool isValid; try { isValid = ValidateResource(filePath); } catch (Exception) { isValid = false; } if (!isValid) { errorFiles.Add(filePath); } else { ResourceItemData item = new ResourceItemData { FilePath = filePath, Extension = Path.GetExtension(filePath), FileName = Path.GetFileNameWithoutExtension(filePath), Size = new FileInfo(filePath).Length, ResourceType = SelectedResourceType }; AddOrUpdateResource(item); } } if (errorFiles.Count > 0) { string detailedError = string.Join(Environment.NewLine, errorFiles); RaiseDetailedError("The following files were unable to be added. Please ensure they meet the required dimensions.", detailedError); } }
private static bool UpdateResourcesInObjectData(NodeObjectData parentNodeData, ChangedResourceCollection changedResourceCollection) { PropertyAccessorHandler[] resourceProperties = parentNodeData.GetResourceProperties(); if (resourceProperties == null) { return(false); } bool flag1 = false; foreach (PropertyAccessorHandler propertyAccessorHandler in resourceProperties) { ResourceItemData resourceItemData = propertyAccessorHandler.GetValue((object)parentNodeData, (object[])null) as ResourceItemData; if (!((ResourceData)resourceItemData == (ResourceData)null)) { ResourceFile resourceFile = (ResourceFile)null; if (changedResourceCollection.TryGetValue((ResourceData)resourceItemData, out resourceFile)) { if (resourceFile != null) { resourceItemData.Update(resourceFile.GetResourceData()); } else { propertyAccessorHandler.SetValue((object)parentNodeData, (object)null, (object[])null); } if (!flag1) { flag1 = true; } } } } if (parentNodeData.Children != null) { foreach (NodeObjectData child in parentNodeData.Children) { bool flag2 = GameProjectContent.UpdateResourcesInObjectData(child, changedResourceCollection); if (!flag1 && flag2) { flag1 = flag2; } } } return(flag1); }
/// <inheritdoc /> public Texture2D LoadTexture2D(ResourceType resourceType, string resourceName) { ResourceType[] validTypes = { ResourceType.Creature, ResourceType.Icon, ResourceType.Item, ResourceType.Portrait, ResourceType.Tileset }; if (!validTypes.Contains(resourceType)) { throw new ArgumentException($"{nameof(resourceType)} is of an invalid type. Must be one of the following: Creature, Icon, Item, Portrait, or Tileset."); } if (string.IsNullOrWhiteSpace(resourceName)) { throw new ArgumentException($"{nameof(resourceName)} cannot be blank or null."); } // Search for the resource in attached packages first. ResourceItemData data = GetResourceByName(resourceType, resourceName); // Couldn't find in attached resource packages. Look for an engine resource. if (data == null) { string path = _pathService.EngineGraphicsDirectory + GetResourceTypePrefix(resourceType) + "/" + resourceName; if (File.Exists(path)) { using (FileStream stream = File.OpenRead(path)) { return(Texture2D.FromStream(_graphicsDevice, stream)); } } } // Still couldn't find it. Throw exception. if (data == null) { throw new FileNotFoundException($"Couldn't find resource in attached resource packages or engine resources. Resource name: {resourceName}"); } using (MemoryStream stream = new MemoryStream(data.Data)) { return(Texture2D.FromStream(_graphicsDevice, stream)); } }
private static bool UpdateResourcesInAnimationData(TimelineActionData timelineActionData, ChangedResourceCollection changedResourceCollection) { bool flag = false; foreach (TimelineData current in timelineActionData.Timelines) { if (!(current.FrameType != typeof(TextureFrame).Name)) { using (List <FrameData> .Enumerator enumerator2 = current.Frames.GetEnumerator()) { while (enumerator2.MoveNext()) { TextureFrameData textureFrameData = (TextureFrameData)enumerator2.Current; ResourceItemData textureFile = textureFrameData.TextureFile; if (!(textureFile == null)) { ResourceFile resourceFile = null; if (changedResourceCollection.TryGetValue(textureFile, out resourceFile)) { if (resourceFile != null) { textureFile.Update(resourceFile.GetResourceData()); } else { textureFrameData.TextureFile = null; } if (!flag) { flag = true; } } } } } } } return(flag); }
private static bool CheckReferenceProjectInObjectData(NodeObjectData parentNode, Project project, ResourceData projectPath) { if (parentNode == null) { return(false); } ProjectNodeObjectData projectNodeObjectData = parentNode as ProjectNodeObjectData; if (projectNodeObjectData != null) { ResourceItemData fileData = projectNodeObjectData.FileData; if (projectPath.Equals((ResourceData)fileData)) { return(true); } if ((ResourceData)fileData != (ResourceData)null) { Project resourceItem = Services.ProjectsService.CurrentResourceGroup.FindResourceItem((ResourceData)fileData) as Project; if (resourceItem != null && resourceItem.HasReferencedProject(project)) { return(true); } } } if (parentNode.Children != null) { foreach (NodeObjectData child in parentNode.Children) { if (GameProjectContent.CheckReferenceProjectInObjectData(child, project, projectPath)) { return(true); } } } return(false); }
private static string GetKeyOfResourceItem(ResourceItemData resource) { return(Enum.GetName(typeof(ResourceType), resource.ResourceType) + "/" + resource.FileName + resource.Extension); }
private void AddOrUpdateResource(ResourceItemData item) { ResourceItemData existing; switch (SelectedTab) { case Tab.BGM: existing = BGMResources.SingleOrDefault(x => x.FileName == item.FileName); if (existing != null) { BGMResources.Remove(existing); } BGMResources.Add(item); break; case Tab.SFX: existing = SFXResources.SingleOrDefault(x => x.FileName == item.FileName); if (existing != null) { SFXResources.Remove(existing); } SFXResources.Add(item); break; case Tab.Creatures: existing = CreatureResources.SingleOrDefault(x => x.FileName == item.FileName); if (existing != null) { CreatureResources.Remove(existing); } CreatureResources.Add(item); break; case Tab.Icons: existing = IconResources.SingleOrDefault(x => x.FileName == item.FileName); if (existing != null) { IconResources.Remove(existing); } IconResources.Add(item); break; case Tab.Items: existing = ItemResources.SingleOrDefault(x => x.FileName == item.FileName); if (existing != null) { ItemResources.Remove(existing); } ItemResources.Add(item); break; case Tab.Portraits: existing = PortraitResources.SingleOrDefault(x => x.FileName == item.FileName); if (existing != null) { PortraitResources.Remove(existing); } PortraitResources.Add(item); break; case Tab.Tilesets: existing = TilesetResources.SingleOrDefault(x => x.FileName == item.FileName); if (existing != null) { TilesetResources.Remove(existing); } TilesetResources.Add(item); break; } }