Пример #1
0
        private static void ParseSalvageType(string path)
        {
            lua = new Lua();
            lua.RegisterFunction("StartSalvageConfig", null, typeof(HWData).GetMethod("StartSalvageConfig"));
            lua.DoFile(path);

            string name = Path.GetFileNameWithoutExtension(path).ToLower();

            float   pixelSize     = 1;
            float   resourceValue = 0;
            Vector4 pixelColor    = Vector4.Zero;

            foreach (KeyValuePair <object, object> de in salvageConfig)
            {
                switch (de.Key.ToString())
                {
                case "pixelSize":
                    string text = de.Value.ToString();
                    text      = text.Replace(",", ".");
                    pixelSize = float.Parse(text, InvariantCulture);
                    break;

                case "resourceValue":
                    text          = de.Value.ToString();
                    text          = text.Replace(",", ".");
                    resourceValue = float.Parse(text, InvariantCulture);
                    break;

                case "pixelColour":
                    pixelColor = LuaMap.LuaTableToVector4((LuaTable)de.Value);
                    break;
                }
            }

            SalvageType existingType = null;

            foreach (SalvageType type in SalvageType.SalvageTypes)
            {
                if (type.Name == name)
                {
                    existingType = type;
                    break;
                }
            }

            //Check if a type with that name already exists (because of multiple data paths)
            if (existingType == null)
            {
                new SalvageType(name, pixelSize, resourceValue, pixelColor);
            }
            else
            {
                //Overwrite existing style
                existingType.Name          = name;
                existingType.PixelSize     = pixelSize;
                existingType.ResourceValue = resourceValue;
                existingType.PixelColor    = pixelColor;
            }
        }
Пример #2
0
        public Salvage(SalvageType type, Vector3 position, Vector3 rotation, float multiplier) : base(position, rotation)
        {
            Type       = type;
            Rotation   = rotation;
            Multiplier = multiplier;

            CreateMesh();

            Salvages.Add(this);
            AllowRotation = true;
        }
Пример #3
0
        public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
        {
            if (value is string)
            {
                SalvageType type = SalvageType.GetTypeFromName((string)value);

                if (type != null)
                {
                    return(type);
                }
                else
                {
                    return(SalvageType.SalvageTypes[0]);
                }
            }
            return(base.ConvertFrom(context, culture, value));
        }
Пример #4
0
        public static void AddSalvage(string type, LuaTable position, float resources, float rotX, float rotY, float rotZ, float unknown)
        {
            Vector3 pos = LuaTableToVector3(position);
            Vector3 rot = Vector3.Zero;

            rot.X = rotX;
            rot.Y = rotY;
            rot.Z = rotZ;

            string      newType     = type.ToLower();
            SalvageType salvageType = SalvageType.GetTypeFromName(newType);

            if (salvageType == null)
            {
                new Problem(ProblemTypes.WARNING, "Salvage type \"" + newType + "\" not found. Skipping salvage.");
                return;
            }

            new Salvage(salvageType, pos, rot, resources);
        }