예제 #1
0
        private static TdfNode ToTdfNode(Tdf weapon)
        {
            var n = new TdfNode(weapon.ID);

            n.Entries["ID"]                 = TdfConvert.ToStringInfo(weapon.WeaponId);
            n.Entries["Name"]               = TdfConvert.ToStringInfo(weapon.Name);
            n.Entries["Range"]              = TdfConvert.ToStringInfo(weapon.Range);
            n.Entries["Reloadtime"]         = TdfConvert.ToStringInfo(weapon.Reloadtime);
            n.Entries["Weaponvelocity"]     = TdfConvert.ToStringInfo(weapon.Weaponvelocity);
            n.Entries["Areaofeffect"]       = TdfConvert.ToStringInfo(weapon.Areaofeffect);
            n.Entries["Burst"]              = TdfConvert.ToStringInfo(weapon.Burst);
            n.Entries["BurstRate"]          = TdfConvert.ToStringInfo(weapon.BurstRate);
            n.Entries["EnergyPerShot"]      = TdfConvert.ToStringInfo(weapon.EnergyPerShot);
            n.Entries["Accuracy"]           = TdfConvert.ToStringInfo(weapon.Accuracy);
            n.Entries["StartVelocity"]      = TdfConvert.ToStringInfo(weapon.StartVelocity);
            n.Entries["WeaponAcceleration"] = TdfConvert.ToStringInfo(weapon.WeaponAcceleration);
            n.Entries["WeaponTimer"]        = TdfConvert.ToStringInfo(weapon.WeaponTimer);
            n.Entries["Tolerance"]          = TdfConvert.ToStringInfo(weapon.Tolerance);
            n.Entries["EdgeEffectiveness"]  = TdfConvert.ToStringInfo(weapon.EdgeEffectiveness);
            n.Entries["Color1"]             = TdfConvert.ToStringInfo(weapon.Color);
            n.Entries["Color2"]             = TdfConvert.ToStringInfo(weapon.Color2);
            n.Entries["SprayAngle"]         = TdfConvert.ToStringInfo(weapon.SprayAngle);
            n.Entries["PitchTolerance"]     = TdfConvert.ToStringInfo(weapon.PitchTolerance);
            n.Entries["MinBarrelAngle"]     = TdfConvert.ToStringInfo(weapon.MinBarrelAngle);

            var damage = new TdfNode("DAMAGE");

            damage.Entries["DEFAULT"] = TdfConvert.ToStringInfo(weapon.Default);
            n.Keys["DAMAGE"]          = damage;

            return(n);
        }
예제 #2
0
        public static void WriteWeaponTdfFile(Tdf weapon)
        {
            TdfNode sourceRoot;

            using (var f = new StreamReader(weapon.File, Encoding.GetEncoding(1252)))
            {
                sourceRoot = TdfNode.LoadTdf(f);
            }

            var targetWeaponInfo = ToTdfNode(weapon);

            var instructions = TdfCompare.ComputePropertyMapping(sourceRoot.Keys[weapon.ID], targetWeaponInfo, 1);

            if (sourceRoot.Keys[weapon.ID].Keys.ContainsKey("DAMAGE"))
            {
                instructions.AddRange(TdfCompare.ComputePropertyMapping(sourceRoot.Keys[weapon.ID].Keys["DAMAGE"], targetWeaponInfo.Keys["DAMAGE"], 2));
            }

            TdfCompare.PerformInstructions(weapon.File, instructions);
        }
예제 #3
0
        private static Tdf ToTdf(string file, TdfNode weaponInfo)
        {
            var tdf = new Tdf();

            tdf.File = file;

            tdf.ID                 = weaponInfo.Name;
            tdf.WeaponId           = weaponInfo.GetStringOrDefault("ID");
            tdf.Name               = weaponInfo.GetStringOrDefault("Name");
            tdf.Range              = weaponInfo.GetDoubleOrDefault("Range");
            tdf.Reloadtime         = weaponInfo.GetDoubleOrDefault("Reloadtime");
            tdf.Weaponvelocity     = weaponInfo.GetDoubleOrDefault("Weaponvelocity");
            tdf.Areaofeffect       = weaponInfo.GetDoubleOrDefault("Areaofeffect");
            tdf.Burst              = weaponInfo.GetDoubleOrDefault("Burst");
            tdf.BurstRate          = weaponInfo.GetDoubleOrDefault("BurstRate");
            tdf.EnergyPerShot      = weaponInfo.GetDoubleOrDefault("EnergyPerShot");
            tdf.Accuracy           = weaponInfo.GetDoubleOrDefault("Accuracy");
            tdf.StartVelocity      = weaponInfo.GetDoubleOrDefault("StartVelocity");
            tdf.WeaponAcceleration = weaponInfo.GetDoubleOrDefault("WeaponAcceleration");
            tdf.WeaponTimer        = weaponInfo.GetDoubleOrDefault("WeaponTimer");
            tdf.Tolerance          = weaponInfo.GetDoubleOrDefault("Tolerance");
            tdf.EdgeEffectiveness  = weaponInfo.GetDoubleOrDefault("EdgeEffectiveness");
            tdf.Color              = weaponInfo.GetStringOrDefault("Color");
            tdf.Color2             = weaponInfo.GetStringOrDefault("Color2");
            tdf.SprayAngle         = weaponInfo.GetDoubleOrDefault("SprayAngle");
            tdf.PitchTolerance     = weaponInfo.GetDoubleOrDefault("PitchTolerance");
            tdf.MinBarrelAngle     = weaponInfo.GetDoubleOrDefault("MinBarrelAngle");

            if (weaponInfo.Keys.TryGetValue("DAMAGE", out var damageInfo))
            {
                tdf.Default = damageInfo.GetDoubleOrDefault("DEFAULT");
            }

            tdf.Changed = false;
            return(tdf);
        }