Ejemplo n.º 1
0
    public override string GetDescription()
    {
        ResourceMetaData inputResourceData  = GetResource(inputResource);
        ResourceMetaData outputResourceData = GetResource(outputResource);
        string           output             = "";

        if (inputResource != ResourceIdentifiers.NULL)
        {
            output += $"{inputResource}: {(int)inputResourceData.value}";
            output += $"({(int)(inputResourceData.fulfillFactor * 100)}%)";
        }


        if (inputResource != ResourceIdentifiers.NULL)
        {
            output += $"\n{outputResource}: {ScaledOutputByResource(inputResource, idealOutput)}";
        }
        else
        {
            output += $"\n{outputResource}: {idealOutput}";
        }

        if (resourceOutputSplit)
        {
            output += $" (Split amongst {split})";
        }

        // if(_resourceCapacityEnabled)
        // {
        //     output += $"\nCapacity: {_resourceCapacity}";
        // }

        return(output);
    }
Ejemplo n.º 2
0
        public static Stream CheckIfCompressed(string resourceName, Stream sourceStream, AssemblyDefinition sourceAssembly)
        {
            bool compressed = false;

            var metaResource = sourceAssembly.MainModule.Resources.FirstOrDefault(r => r.Name == (resourceName + "_meta"));

            if (metaResource != null && metaResource is EmbeddedResource)
            {
                var embeddedHash = (EmbeddedResource)metaResource;
                using (var metaStream = embeddedHash.GetResourceStream())
                {
                    var meta = ResourceMetaData.FromStream(metaStream);
                    compressed = meta.compressed;
                }
            }
            if (compressed)
            {
                MemoryStream finalStream = new MemoryStream();
                sourceStream.Decompress(finalStream);
                return(finalStream);
            }
            else
            {
                return(sourceStream);
            }
        }
Ejemplo n.º 3
0
    public bool LoadMetaOfResource(string rootPath, string path)
    {
        var xml = XMLParser.LoadXML(Utils.LoadFile(Path.Combine(rootPath, path)));

        if (xml == null)
        {
            return(false);
        }
        foreach (SecurityElement item in xml.Children)
        {
            var meta = new ResourceMetaData();
            meta.RelativePath = item.Attribute("path");
            meta.MD5          = item.Attribute("md5");

            var dependencies = item.Children;
            if (dependencies != null && dependencies.Count > 0)
            {
                meta.Dependencies = new List <string>();

                foreach (SecurityElement dependency in dependencies)
                {
                    meta.Dependencies.Add(dependency.Attribute("path"));
                }
            }
            metaOfResource[meta.RelativePath] = meta;
        }
        return(true);
    }
Ejemplo n.º 4
0
    public bool LoadMetaOfResource(string rootPath, string path)
    {
        var xml = XMLParser.LoadXML(Utils.LoadFile(Path.Combine(rootPath, path)));
        if (xml == null)
        {
            return false;
        }
        foreach (SecurityElement item in xml.Children)
        {
            var meta = new ResourceMetaData();
            meta.RelativePath = item.Attribute("path");
            meta.MD5 = item.Attribute("md5");

            var dependencies = item.Children;
            if (dependencies != null && dependencies.Count > 0)
            {
                meta.Dependencies = new List<string>();

                foreach (SecurityElement dependency in dependencies)
                {
                    meta.Dependencies.Add(dependency.Attribute("path"));
                }
            }
            metaOfResource[meta.RelativePath] = meta;
        }
        return true;
    }
Ejemplo n.º 5
0
 public override void UpgradeHandoverFrom(Building oldBuilding)
 {
     if (NeedsResource(ResourceIdentifiers.DURABILITY))
     {
         ResourceMetaData oldResource        = oldBuilding.GetResource(ResourceIdentifiers.DURABILITY);
         float            previouslyConsumed = oldResource.ideal - oldResource.value;
         ReceiveResource(ResourceIdentifiers.DURABILITY, -previouslyConsumed);
     }
 }
Ejemplo n.º 6
0
    public ResourceMetaData GetResource(ResourceIdentifiers resourceId)
    {
        ResourceMetaData resource = null;

        resources.TryGetValue(resourceId, out resource);
        if (resource == null)
        {
            return(new ResourceMetaData());
        }
        return(resource);
    }
Ejemplo n.º 7
0
    protected float ScaledOutputByResource(ResourceIdentifiers resourceId, float output)
    {
        ResourceMetaData resource = GetResource(resourceId);

        if (resource == null)
        {
            Debug.Log($"Could not scale resource {resourceId} as it is not needed on this consumer");
            return(0);
        }
        return(output * resource.fulfillFactor);
    }
Ejemplo n.º 8
0
 public void ReceiveResource(ResourceIdentifiers resourceId, float amount)
 {
     if (NeedsResource(resourceId))
     {
         ResourceMetaData resource = GetResource(resourceId);
         resource.value += amount;
     }
     // else
     // {
     //     Debug.Log($"{id} does not need {resourceId}");
     // }
 }
Ejemplo n.º 9
0
    private IEnumerator AnalyzeBundleDepends(string versionPath, Dictionary <string, ResourceMetaData> resInfos)
    {
        WWW www = new WWW(versionPath);

        if (bundleVersionBegion != null)
        {
            bundleVersionBegion(www);
        }
        yield return(www);

        if (www.error != null)
        {
            UnityEngine.Debug.LogError("version error");
            yield break;
        }
        byte[] bytes;
        if (www.assetBundle != null)
        {
            bytes = (www.assetBundle.LoadAllAssets <TextAsset>()[0]).bytes;
        }
        else
        {
            bytes = www.bytes;
        }
        MemoryStream ms = new MemoryStream(bytes);
        BinaryReader br = new BinaryReader(ms);
        int          i, j, count = br.ReadInt32(), childCount;

        for (i = 0; i < count; i++)
        {
            var meta = new ResourceMetaData();
            meta.RelativePath = br.ReadString();
            meta.MD5          = br.ReadString();
            childCount        = br.ReadInt32();
            if (childCount > 0)
            {
                meta.Dependencies = new List <string>();
            }
            for (j = 0; j < childCount; j++)
            {
                meta.Dependencies.Add(br.ReadString());
            }
            resInfos[meta.RelativePath] = meta;
        }
        bool isFromRomote = www.url.StartsWith("http://");

        if (isFromRomote)
        {
            WriteResourceToLocal(bytes, versionPath.Replace(URL.url + "/Resources/assetbundles/", ""));
        }
        UnityEngine.Debug.Log("版本配置bundleVersion解析成功");
    }
Ejemplo n.º 10
0
    public float ExpendAllResource(ResourceIdentifiers resourceId)
    {
        ResourceMetaData resource = GetResource(resourceId);

        if (resource == null)
        {
            Debug.Log($"Could not expend resource {resourceId} as it is not needed on this consumer");
            return(0);
        }

        float oldValue = resource.value;

        resource.value = 0;
        return(oldValue);
    }
Ejemplo n.º 11
0
 public async Task <ActionResult <ResourceMetaData> > GetMetaData([FromRouteAttribute] string domain, [FromRouteAttribute] string resource)
 {
     using (var connection = new SqlConnection(ConnectionString))
     {
         var dbReader = new DatabaseReader(connection);
         var metaData = new ResourceMetaData()
         {
             Name   = resource,
             Fields = dbReader.AllTables().First(z => z.Name == resource && z.SchemaOwner == domain).Columns.Select(z => new Field()
             {
                 Name = z.Name,
                 Type = z.IsForeignKey ? Url.Action("GetMetaData", new { domain = z.SchemaOwner, resource = z.Name }) : z.DataType.NetDataTypeCSharpName
             }).ToArray()
         };
         return(Ok(metaData));
     }
 }
Ejemplo n.º 12
0
 internal void OnDeserialize()
 {
     if (string.IsNullOrEmpty(path))
     {
         _parent = ResourceDatabase.get.root;
     }
     else
     {
         _parent = ResourceDatabase.GetFolder(path);
     }
     if (_parent != null)
     {
         parent.children.Add(name, this);
     }
     if (type == Type.Folder)
     {
         children = new Dictionary <string, ResourceMetaData>();
     }
     _objectType = System.Type.GetType(_objectTypeName);
 }
Ejemplo n.º 13
0
            //--------------------------------------------------------------------/
            // Methods
            //--------------------------------------------------------------------/
            public ResourceMetaData GetChild(string path, Type resourceType = Type.Any)
            {
                if (type != Type.Folder)
                {
                    return(null);
                }

                string p     = path;
                int    index = path.IndexOf('/');

                if (index > 0)
                {
                    p    = path.Substring(0, index);
                    path = path.Substring(index + 1);
                }
                else
                {
                    path = "";
                }

                ResourceMetaData item = null;

                if (!children.TryGetValue(p, out item) || item == null)
                {
                    return(null);
                }
                else if (path.Length > 0)
                {
                    return(item.GetChild(path, resourceType));
                }
                else if (resourceType != Type.Unknown && item.type != resourceType)
                {
                    return(null);
                }

                return(item);
            }
Ejemplo n.º 14
0
 public void SetErrorMessage(string errorMessage)
 {
     resourceMeta = new ResourceMetaData(null, null, () => errorMessage);
 }
Ejemplo n.º 15
0
 void LoadAudioClipAndPlayDelayed(ResourceMetaData metaData, float vol, float delay)
 {
     LoadAudioClipAndPlayDelayed(metaData.anyResourcePath, vol, delay);
 }
Ejemplo n.º 16
0
 public void SetErrorMessage(Type errorMessageResourceType, string resourceName)
 {
     resourceMeta = ResourceHelper.BuildResourceAccessor(resourceName, errorMessageResourceType);
 }
Ejemplo n.º 17
0
 protected PropertyValidator(string errorMessageResourceName, Type errorMessageResourceType)
 {
     resourceMeta = ResourceHelper.BuildResourceAccessor(errorMessageResourceName, errorMessageResourceType);
 }
Ejemplo n.º 18
0
 public void SetErrorMessage(Expression<Func<string>> resourceSelector)
 {
     resourceMeta = ResourceHelper.BuildResourceAccessor(resourceSelector);
 }
Ejemplo n.º 19
0
 protected PropertyValidator(string errorMessage)
 {
     resourceMeta = new ResourceMetaData(null, null, () => errorMessage);
 }
Ejemplo n.º 20
0
 protected PropertyValidator(Expression<Func<string>> errorMessageResourceSelector)
 {
     resourceMeta = ResourceHelper.BuildResourceAccessor(errorMessageResourceSelector);
 }
Ejemplo n.º 21
0
    public override string GetDescription()
    {
        ResourceMetaData resource = GetResource(ResourceIdentifiers.ENERGY);

        return($"Energy Input: {resource.value} ({Numbers.OneDP(resource.fulfillFactor*100)}%)");
    }
Ejemplo n.º 22
0
 void LoadAudioClipAndPlayDelayed( ResourceMetaData metaData , float vol , float delay )
 {
     LoadAudioClipAndPlayDelayed( metaData.anyResourcePath , vol , delay );
 }
Ejemplo n.º 23
0
        public static void EmbedResource(string assemblyToEmbedTo, string resourceName, Stream streamToEmbed, string hash = null, CompressionMethod compression = CompressionMethod.Auto)
        {
            if (hash == null)
            {
                hash = streamToEmbed.GetHash();
            }
            double previousTime = GetTime();

            while (GetTime() - previousTime <= 10.0)
            {
                try
                {
                    using (var resolver = new MainResolver())
                    {
                        using (var definition = AssemblyDefinition.ReadAssembly(assemblyToEmbedTo, new ReaderParameters {
                            ReadWrite = true, AssemblyResolver = resolver
                        }))
                        {
                            var finding = definition.MainModule.Resources.FirstOrDefault(r => r.Name == resourceName);
                            if (finding != null)
                            {
                                var metaResource = definition.MainModule.Resources.FirstOrDefault(r => r.Name == (resourceName + "_meta"));
                                if (metaResource != null && metaResource is EmbeddedResource)
                                {
                                    var embeddedHash = (EmbeddedResource)metaResource;
                                    using (var metaStream = embeddedHash.GetResourceStream())
                                    {
                                        var meta = ResourceMetaData.FromStream(metaStream);
                                        if (meta.hash == hash)
                                        {
                                            return;
                                        }
                                    }
                                }
                                definition.MainModule.Resources.Remove(finding);
                                if (metaResource != null)
                                {
                                    definition.MainModule.Resources.Remove(metaResource);
                                }
                            }
                            if (compression == CompressionMethod.Auto || compression == CompressionMethod.UseCompression)
                            {
                                using (var compressedStream = new MemoryStream())
                                {
                                    //Console.WriteLine("E");
                                    using (var compressionStream = new GZipStream(compressedStream, CompressionMode.Compress))
                                    {
                                        streamToEmbed.CopyToStream(compressionStream);
                                        compressedStream.Position = 0;

                                        Stream smallestStream     = compressedStream;
                                        bool   actuallyCompressed = true;
                                        if (streamToEmbed.Length < compressedStream.Length && compression == CompressionMethod.Auto)
                                        {
                                            smallestStream     = streamToEmbed;
                                            actuallyCompressed = false;
                                        }

                                        var er = new EmbeddedResource(resourceName, ManifestResourceAttributes.Public, smallestStream);
                                        definition.MainModule.Resources.Add(er);

                                        using (var metaStream = new ResourceMetaData(actuallyCompressed, hash).ToStream())
                                        {
                                            var hashResource = new EmbeddedResource(resourceName + "_meta", ManifestResourceAttributes.Public, metaStream);
                                            definition.MainModule.Resources.Add(hashResource);
                                            definition.MainModule.Write();
                                        }
                                    }
                                }
                            }
                            else
                            {
                                var er = new EmbeddedResource(resourceName, ManifestResourceAttributes.Public, streamToEmbed);
                                definition.MainModule.Resources.Add(er);
                                using (var metaStream = new ResourceMetaData(false, hash).ToStream())
                                {
                                    var hashResource = new EmbeddedResource(resourceName + "_meta", ManifestResourceAttributes.Public, metaStream);
                                    definition.MainModule.Resources.Add(hashResource);
                                    definition.MainModule.Write();
                                }
                            }
                        }
                    }
                    break;
                }
                catch (Exception e)
                {
                    if (e.Message.Contains("because it is being used by another process"))
                    {
                        continue;
                    }
                    else
                    {
                        throw;
                    }
                }
            }
            if (GetTime() - previousTime > 10.0)
            {
                throw new Exception("Embedding Timeout");
            }
        }