예제 #1
0
 internal void RegisterHmeResource(long id, IHmeResource hmeResource)
 {
     lock (_resourceManager)
     {
         _resourceManager.AddHmeResource(id, hmeResource);
     }
 }
예제 #2
0
        private IHmeResource ResourceToHmeResource(Events.ResourceInfo resourceInfo, Resource resource)
        {
            IHmeResource hmeResource = null;

            lock (_resourceManager)
            {
                if (_resourceManager.TryGetHmeResource(resourceInfo.ResourceId, out hmeResource))
                {
                    return(hmeResource);
                }
            }
            if (resource.IsMusic)
            {
                hmeResource = new StreamedMusic(this, resource.Name, resourceInfo.ResourceId);
            }
            else if (resource.IsResourceType(ResourceType.Image))
            {
                hmeResource = new ImageResource(this, resource.Name, resourceInfo.ResourceId);
            }
            else if (resource.IsResourceType(ResourceType.Sound))
            {
                hmeResource = new Sound(this, resource.Name, resourceInfo.ResourceId);
            }
            else if (resource.IsResourceType(ResourceType.TrueTypeFont))
            {
                hmeResource = new TrueTypeFontResource(this, resource.Name, resourceInfo.ResourceId);
            }
            else
            {
                hmeResource = new GenericResource(this, resource.Name, resourceInfo.ResourceId);
            }

            return(hmeResource);
        }
예제 #3
0
 internal void OnResourceInfoReceived(Events.ResourceInfo resourceInfo)
 {
     if (resourceInfo.Status == (long)ResourceStatus.Error)
     {
         int    errorCode;
         string value;
         if (!resourceInfo.Info.TryGetValue("error.code", out value) ||
             !int.TryParse(value, out errorCode))
         {
             errorCode = (int)ResourceErrorCode.Unknown;
         }
         string errorText;
         if (!resourceInfo.Info.TryGetValue("error.text", out errorText))
         {
             errorText = string.Empty;
         }
         IHmeResource hmeResource = null;
         lock (_resourceManager)
         {
             Resource resource;
             if (_resourceManager.TryGetResource(resourceInfo.ResourceId, out resource))
             {
                 hmeResource = ResourceToHmeResource(resourceInfo, resource);
             }
         }
         EventHandler <ResourceErrorArgs> handler = ResourceErrorOccurred;
         if (handler != null)
         {
             handler(this, new ResourceErrorArgs(hmeResource, (ResourceErrorCode)errorCode, errorText));
         }
     }
     else
     {
         IHmeResource hmeResource = null;
         lock (_resourceManager)
         {
             Resource resource;
             if (_resourceManager.TryGetResource(resourceInfo.ResourceId, out resource))
             {
                 hmeResource = ResourceToHmeResource(resourceInfo, resource);
             }
         }
         EventHandler <ResourceStateChangedArgs> handler = ResourceStateChanged;
         if (handler != null)
         {
             handler(this, new ResourceStateChangedArgs(hmeResource, (ResourceStatus)resourceInfo.Status, resourceInfo.Info));
         }
     }
 }
예제 #4
0
 /// <summary>
 /// Tests equality between two resources
 /// </summary>
 /// <param name="other">Must be a TrueTypeFontResource.</param>
 /// <returns>true if the resources represent the same item; false otherwise.</returns>
 public bool Equals(IHmeResource other)
 {
     return(Equals((object)other));
 }
예제 #5
0
 public bool Equals(IHmeResource other)
 {
     return(ReferenceEquals(this, other));
 }
 /// <summary>
 /// Creates a <see cref="ResourceStateChangedArgs"/>.
 /// </summary>
 /// <param name="resource">The resource that changed state.</param>
 /// <param name="status">The status of the resource.</param>
 /// <param name="info">A collection of name/value pairs defining additional resource information.</param>
 public ResourceStateChangedArgs(IHmeResource resource, ResourceStatus status, Dictionary <string, string> info)
 {
     _resource     = resource;
     _status       = status;
     _resourceInfo = info;
 }
 /// <summary>
 /// Creates a <see cref="ResourceErrorArgs"/>.
 /// </summary>
 /// <param name="resource">The resource with an error.</param>
 /// <param name="code">The code for the error.</param>
 /// <param name="text">A textual representation of the error.</param>
 public ResourceErrorArgs(IHmeResource resource, ResourceErrorCode code, string text)
 {
     _resource = resource;
     _code     = code;
     _text     = text;
 }
예제 #8
0
 internal void AddHmeResource(long id, IHmeResource hmeResource)
 {
     _hmeResources.Add(id, hmeResource);
 }
예제 #9
0
 internal bool TryGetHmeResource(long id, out IHmeResource hmeResource)
 {
     return(_hmeResources.TryGetValue(id, out hmeResource));
 }