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);
        }
Example #4
0
        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);
        }
Example #7
0
        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);
        }
Example #9
0
        /// <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);
        }
Example #12
0
 private static string GetKeyOfResourceItem(ResourceItemData resource)
 {
     return(Enum.GetName(typeof(ResourceType), resource.ResourceType) + "/" + resource.FileName + resource.Extension);
 }
Example #13
0
        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;
            }
        }