Example #1
0
        public override string ComposeSaveDirective(EntityDefinition entDef)
        {
            string body = "+staticMovement";

            entDef.MovementSystem.MovementCommands
            .ForEach(x => body = body + "\n" + x.ComposeSaveDefinition());

            return(body);
        }
Example #2
0
 private static void AddPolarAccelerateTo(string[] parameters, EntityDefinition entDef)
 {
     entDef.MovementSystem.AddMovementCommand(
         Int32.Parse(parameters[0]),
         new MovementPolarAccelerateTo(
             Double.Parse(parameters[2]),
             Int32.Parse(parameters[1])
             )
         );
 }
Example #3
0
 // Reloads a single entity definition
 public void EvaluateEntity(EntityDefinition ent)
 {
     foreach (var enemy in ent.Instances)
     {
         this.entities.Remove(enemy);
     }
     ent.ReloadTemplates();
     ent.ReloadMovement();
     ent.RegenerateEntities();
     entities.AddRange(ent.Instances);
 }
Example #4
0
        // Sets position
        override public void Initialise(string[] parameters, EntityDefinition entDef)
        {
            double x = 0;
            double y = 0;

            double.TryParse(parameters[0], out x);
            double.TryParse(parameters[1], out y);


            entDef.MovementSystem.GetStartingState().Position = (Math.Floor(x), Math.Floor(y));
        }
Example #5
0
        public override string ComposeSaveDirective(EntityDefinition entDef)
        {
            string body = "+bulletMaster " + Name;

            body = body + (Delay != 0 ? " " + Delay.ToString() : "");

            if (!(AdditionalParameters is null))
            {
                body = body + " " + string.Join(" ", AdditionalParameters);
            }
            return(body);
        }
Example #6
0
 // Sets position
 override public void Initialise(string[] parameters, EntityDefinition entDef)
 {
     Name = parameters[0];
     if (parameters.Length > 1)
     {
         Delay = Int32.Parse(parameters[1]);
     }
     if (parameters.Length > 2)
     {
         AdditionalParameters = parameters.Skip(2).ToArray();
     }
 }
Example #7
0
        // Remove a loadable
        public void RemoveLoadable(Loadable loadable)
        {
            Loadables.Remove(loadable);

            if (loadable is EntityDefinition)
            {
                EntityDefinition ent = (EntityDefinition)loadable;
                // Remove existing elements
                foreach (var enemy in ent.Instances)
                {
                    this.entities.Remove(enemy);
                }
            }
        }
Example #8
0
        // Loads level
        public void LoadLevel()
        {
            // Reset loadables
            Loadables.Clear();

            // Get level's load table
            var loadTable = GetExpandedLevelLoadTable().Split('\n');

            // Variables used in parsing
            List <int> cycles = new List <int>();

            // Current Entity definition being worked on
            Loadable loadable = null;

            // Current component
            Component component = null;

            foreach (string line in loadTable)
            {
                var vec = line.Split(' ');

                // Look for starting cycle
                if (line.StartsWith("@cycle") || line.StartsWith("@immediate"))
                {
                    // Clear old loadable
                    loadable = null;
                    cycles.Clear();
                    for (int i = 1; i < vec.Length; i++)
                    {
                        cycles.Add(Int32.Parse(vec[i]));
                    }
                }

                // Look for an ent declaration
                else if (line.StartsWith("ent"))
                {
                    // Generate new entities
                    loadable = new EntityDefinition(cycles);
                    Loadables.Add(loadable);
                }

                // Sets flags on which component to update
                else if (line.StartsWith("+"))
                {
                    string   name       = line.Substring(1).Split(' ')[0];
                    string[] parameters = line.Split(' ').Skip(1).ToArray();

                    component = Component.TranslateToComponentType(name);
                    if (component is Object)
                    {
                        component.Initialise(parameters, (EntityDefinition)loadable);
                        ((EntityDefinition)loadable).AddComponent(name, component);
                    }
                }

                // Conduct update to component
                else if (line.StartsWith("->"))
                {
                    if (component is Object)
                    {
                        component.UpdateEntity(line, (EntityDefinition)loadable);
                    }
                }

                // Update script
                else if (line.StartsWith("<<"))
                {
                    // Either extend or generate new script
                    if (!(loadable is Script))
                    {
                        loadable = new Script(cycles);
                        Loadables.Add(loadable);
                    }
                    ((Script)loadable).Extend(line.Substring(2));
                }

                // Add a template
                else if (line.StartsWith("#"))
                {
                    // Look up template
                    string        templateName = line.Substring(1).Split(' ')[0];
                    List <string> parameters   = line.Substring(1).Split(' ').Skip(1).ToList();

                    if (Templates.ContainsKey(templateName))
                    {
                        var template = Templates[templateName];
                        ((EntityDefinition)loadable).AddTemplate(template, parameters);
                    }
                }
            }

            EvaluateEntities();
        }
Example #9
0
 public override string ComposeSaveDirective(EntityDefinition entDef)
 {
     return("+movement");
 }
Example #10
0
        public override string ComposeSaveDirective(EntityDefinition entDef)
        {
            var startingPosition = entDef.MovementSystem.GetStartingState().Position;

            return("+postion " + startingPosition.Item1.ToString() + " " + startingPosition.Item2.ToString() + " 0");
        }
Example #11
0
 public UserControl GetPanel(EntityDefinition entDef)
 {
     return(new BulletMasterPanel(entDef));
 }