Example #1
0
        public bool TryGetBlobGroup(WellKnownBlob kind,
                                    out BlobGroup group)
        {
            group = null;

            foreach (var kvp in Groups)
            {
                if (kvp.Value.KnownAs == kind)
                {
                    group = kvp.Value;
                    break;
                }
            }

            return(group != null);
        }
Example #2
0
        public BlobObject CreateObject(Engine.BlamEngineTargetHandle gameTarget,
                                       WellKnownBlob knownBlob)
        {
            if (gameTarget.IsNone)
            {
                throw new ArgumentNoneException(nameof(gameTarget));
            }
            if (!gameTarget.Build.IsFullyFormed)
            {
                throw new ArgumentException("Target build needs to be fully formed", nameof(gameTarget));
            }
            if (knownBlob == WellKnownBlob.NotWellKnown)
            {
                throw new ArgumentException(nameof(WellKnownBlob.NotWellKnown), nameof(knownBlob));
            }

            BlobGroup known_blob_group;

            if (!TryGetBlobGroup(knownBlob, out known_blob_group))
            {
                throw new InvalidOperationException(string.Format(
                                                        "No blob groups marked to be known as {0} under {1}",
                                                        knownBlob,
                                                        this.Prototype.Engine));
            }

            BlobGroupVersionAndBuildInfo known_blob_group_version_info =
                known_blob_group.FindMostRelaventVersionInfo(gameTarget.Build);

            if (known_blob_group_version_info == null)
            {
                throw new InvalidOperationException(string.Format(
                                                        "No {0} blob group versions resolved possibly for {1} under {2}",
                                                        knownBlob,
                                                        gameTarget.Build,
                                                        this.Prototype.Engine));
            }

            return(CreateObject(gameTarget, known_blob_group, known_blob_group_version_info.MajorVersion));
        }
Example #3
0
 public BlobGroup()
 {
     mGroupTag           = GroupTagDatum.Null;
     mKnownAs            = WellKnownBlob.NotWellKnown;
     mVersionAndBuildMap = new Dictionary <int, BlobGroupVersionAndBuildInfo>();
 }