Example #1
0
        private static void ParseAsteroidType(string path)
        {
            lua = new Lua();
            Type classType = typeof(HWData);

            lua.RegisterFunction("StartAsteroidConfig", null, classType.GetMethod("StartAsteroidConfig"));
            lua.RegisterFunction("setCollisionDamageToModifier", null, classType.GetMethod("SetCollisionDamageToModifier"));
            lua.RegisterFunction("setCollisionDamageFromModifier", null, classType.GetMethod("SetCollisionDamageFromModifier"));
            lua.RegisterFunction("SpawnAsteroidOnDeath", null, classType.GetMethod("SpawnAsteroidOnDeath"));
            lua.RegisterFunction("resourceAttackMode", null, classType.GetMethod("ResourceAttackMode"));
            lua.DoFile(path);

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

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

            foreach (KeyValuePair <object, object> de in asteroidConfig)
            {
                switch (de.Key.ToString())
                {
                case "pixelColour":
                    pixelColor = LuaMap.LuaTableToVector4((LuaTable)de.Value);
                    break;

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

            AsteroidType existingType = null;

            foreach (AsteroidType type in AsteroidType.AsteroidTypes)
            {
                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 AsteroidType(name, pixelColor, resourceValue);
            }
            else
            {
                //Overwrite existing style
                existingType.Name          = name;
                existingType.PixelColor    = pixelColor;
                existingType.ResourceValue = resourceValue;
            }
        }
Example #2
0
        public Asteroid(AsteroidType type, Vector3 position, Vector3 rotation, float multiplier, float rotSpeed) : base(position, rotation)
        {
            Mesh = new Mesh(position, rotation, Mesh.Asteroid);

            Multiplier = multiplier;
            RotSpeed   = rotSpeed;

            Type = type;

            Asteroids.Add(this);

            AllowRotation = true;
        }
        public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
        {
            if (value is string)
            {
                AsteroidType type = AsteroidType.GetTypeFromName((string)value);

                if (type != null)
                {
                    return(type);
                }
                else
                {
                    return(AsteroidType.AsteroidTypes[0]);
                }
            }
            return(base.ConvertFrom(context, culture, value));
        }
Example #4
0
        public Asteroid() : base(Vector3.Zero, Vector3.Zero)
        {
            if (lastType != null)
            {
                type = lastType;
            }
            else
            {
                type = AsteroidType.AsteroidTypes[0];
            }

            Mesh = new Mesh(Vector3.Zero, Vector3.Zero, Mesh.Asteroid);

            Type       = type;
            Multiplier = lastMultiplier;
            RotSpeed   = lastRotSpeed;

            Asteroids.Add(this);
            AllowRotation = true;
        }
Example #5
0
        public static void AddAsteroid(string type, LuaTable position, float multiplier, float rotX, float rotY, float rotZ, float rotSpeed)
        {
            //Log.WriteLine("Adding asteroid \"" + type + "\".");

            Vector3 pos = LuaTableToVector3(position);

            Vector3 rot = Vector3.Zero;

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

            string       newType      = type.ToLower();
            AsteroidType asteroidType = AsteroidType.GetTypeFromName(newType);

            if (asteroidType == null)
            {
                new Problem(ProblemTypes.WARNING, "Asteroid type \"" + newType + "\" not found. Skipping asteroid.");
                return;
            }

            new Asteroid(asteroidType, pos, rot, multiplier, rotSpeed);
        }