/// <summary>
        /// Process the struct field from a cache file
        /// </summary>
        /// <param name="c">Cache file</param>
        /// <param name="iop">Processing method</param>
        public void Read(BlamLib.Blam.CacheFile c, IOProcess iop)
        {
            VersionCtorAttribute upgrade_parameters;

            if (c.EngineVersion == BlamVersion.Halo2_Alpha || c.EngineVersion == BlamVersion.Halo2_Epsilon || c.EngineVersion == BlamVersion.Halo3_Beta)
            {
                if ((upgrade_parameters = kState.VersionForEngine(c.EngineVersion)) != null)
                {
                    // It is ASSUMED that the group tag won't ever be needed for version construction
                    Value          = (T)kState.NewInstance(this, upgrade_parameters.Major, upgrade_parameters.Minor);
                    NeedsUpgrading = true;
                }
                else
                {
                    NeedsUpgrading = false;
                }
            }

            Value.Read(c, iop);

            if (NeedsUpgrading)
#if DEBUG
            { Debug.Assert.If(Value.Upgrade(), "Failed to upgrade struct. {0} {1}", typeof(T).Name, Value.ToVersionString()); }
#else
            { Value.Upgrade(); }
#endif
        }
Ejemplo n.º 2
0
        public static byte[] GetInput(TypeOfInput type, string input)
        {
            IOProcess inp = new IOProcess();

            byte[] res = new byte[1 << 10];
            if (type == TypeOfInput.Arr)
            {
                string t = input;
                int    n = inp.NextInt();
                string a = inp.NextLine();
                res = Encoding.ASCII.GetBytes(t + "|" + n + " " + a);
            }
            else if (type == TypeOfInput.Matrix)
            {
                string        t       = input;
                int           n       = inp.NextInt();
                int           m       = inp.NextInt();
                StringBuilder builder = new StringBuilder();
                builder.Append(t + " " + n + " " + m + "|");
                //builder.Append(inp.NextLine());
                for (int i = 0; i < n; i++)
                {
                    builder.Append(inp.NextLine() + ",");
                }
                res = Encoding.ASCII.GetBytes(builder.ToString());
            }
            inp.Dispose();
            return(res);
        }
Ejemplo n.º 3
0
 public EntityConverterForm()
 {
     InitializeComponent();
     InitializeOpenFileDialog();
     InitializeDataGridProperites();
     this.MinimumSize = new Size(350, 350);
     iOProcess        = Program.container.GetInstance <IOProcess>();
 }
        /// <summary>
        /// Process the struct field from a tag stream
        /// </summary>
        /// <param name="ts"></param>
        /// <param name="iop">Processing method</param>
        public void Read(IO.ITagStream ts, IOProcess iop)
        {
            Value.Read(ts, iop);

            if (NeedsUpgrading)
            {
                if (Value.VersionImplicitUpgradeIsActive)
                {
                    Value.VersionImplicitUpgradeEnd();
                }
                else
                {
#if DEBUG
                    if (!Value.Upgrade())
                    {
                        Debug.Assert.If(false, "Failed to upgrade struct. {0} {1} in {2} @{3:X8}", DefinitionType.Name, Value.ToVersionString(), ts.GetExceptionDescription(), base.relativeOffset);
                    }
#else
                    Value.Upgrade();
#endif
                }
            }
        }
 /// <summary>
 /// Process the struct field to a stream
 /// </summary>
 /// <param name="output">Stream</param>
 /// <param name="iop">Processing method</param>
 public void Write(IO.EndianWriter output, IOProcess iop)
 {
     Value.Write(output, iop);
 }
 /// <summary>
 /// Process the struct field from a stream
 /// </summary>
 /// <param name="s"></param>
 /// <param name="iop">Processing method</param>
 public void Read(IO.EndianReader s, IOProcess iop)
 {
     Value.Read(s, iop);
 }
 /// <summary>
 /// Process the struct field to a tag stream
 /// </summary>
 /// <param name="ts"></param>
 /// <param name="iop">Processing method</param>
 public void Write(IO.ITagStream ts, IOProcess iop)
 {
     Value.Write(ts, iop);
 }
 /// <summary>
 /// Process the struct field to a cache file
 /// </summary>
 /// <param name="c">Cache file</param>
 /// <param name="iop">Processing method</param>
 public void Write(BlamLib.Blam.CacheFile c, IOProcess iop)
 {
     Value.Write(c, iop);
 }