public Effect Load(IEffectPartInfo info)
        {
            var colInfo = (CollisionEffectPartInfo)info;

            Effect effect = entity => {};

            if (colInfo.Enabled.HasValue)
            {
                var enable = colInfo.Enabled.Value;
                effect += entity => {
                    CollisionComponent col = entity.GetComponent <CollisionComponent>();
                    if (col != null)
                    {
                        col.Enabled = enable;
                    }
                };
            }

            if (colInfo.HitBoxes.Any() || colInfo.EnabledBoxes.Any() || colInfo.ClearEnabled)
            {
                var collisionBoxes = colInfo.HitBoxes.Select(b => new CollisionBox(b));
                effect += entity => {
                    HitBoxMessage msg = new HitBoxMessage(entity, collisionBoxes, colInfo.EnabledBoxes, colInfo.ClearEnabled);
                    entity.SendMessage(msg);
                };
            }

            return(effect);
        }
        public Effect Load(IEffectPartInfo info)
        {
            var ladderInfo = (LadderEffectPartInfo)info;

            Effect effect = e => { };

            if (ladderInfo.Action == LadderAction.Grab)
                effect = entity =>
                {
                    LadderComponent ladder = entity.GetComponent<LadderComponent>();
                    if (ladder != null) ladder.Grab();
                };
            else if (ladderInfo.Action == LadderAction.LetGo)
                effect = entity =>
                {
                    LadderComponent ladder = entity.GetComponent<LadderComponent>();
                    if (ladder != null) ladder.LetGo();
                };
            else if (ladderInfo.Action == LadderAction.StandOn)
                effect = entity =>
                {
                    LadderComponent ladder = entity.GetComponent<LadderComponent>();
                    if (ladder != null) ladder.StandOn();
                };
            else if (ladderInfo.Action == LadderAction.ClimbDown)
                effect = entity =>
                {
                    LadderComponent ladder = entity.GetComponent<LadderComponent>();
                    if (ladder != null) ladder.ClimbDown();
                };

            return effect;
        }
        public void Write(IEffectPartInfo info, XmlWriter writer)
        {
            var weapon = (WeaponEffectPartInfo)info;

            writer.WriteStartElement("Weapon");

            switch (weapon.Action)
            {
                case WeaponAction.Shoot:
                case WeaponAction.RotateForward:
                case WeaponAction.RotateBackward:
                    writer.WriteValue(weapon.Action.ToString());
                    break;

                case WeaponAction.Ammo:
                    writer.WriteAttributeString("val", weapon.Ammo.ToString());
                    break;

                case WeaponAction.Change:
                    writer.WriteAttributeString("name", weapon.ChangeName);
                    break;
            }

            writer.WriteEndElement();
        }
 public void Write(IEffectPartInfo info, XmlWriter writer)
 {
     var lives = (LivesEffectPartInfo)info;
     writer.WriteStartElement("Lives");
     writer.WriteAttributeString("add", lives.Add.ToString());
     writer.WriteEndElement();
 }
示例#5
0
        public Effect Load(IEffectPartInfo info)
        {
            var varInfo = (VarsEffectPartInfo)info;

            if (varInfo.Call != null)
            {
                Query getVal = EffectParser.CompileQuery(varInfo.Call);
                return(e => {
                    var target = e;

                    if (varInfo.EntityName != null)
                    {
                        target = e.Entities.GetEntityById(varInfo.EntityName);
                    }

                    var val = getVal(target).ToString();
                    e.GetComponent <VarsComponent>().Set(varInfo.Name, val);
                });
            }
            else
            {
                return(e => {
                    e.GetComponent <VarsComponent>().Set(varInfo.Name, varInfo.Value);
                });
            }
        }
        public void Write(IEffectPartInfo info, XmlWriter writer)
        {
            var func       = (FuncEffectPartInfo)info;
            var statements = string.Join(";", func.Statements);

            writer.WriteElementString("Func", statements);
        }
        public Effect Load(IEffectPartInfo info)
        {
            var timerInfo = (TimerEffectPartInfo)info;

            Effect effect = e => {
                e.CreateComponentIfNotExists<TimerComponent>();
            };

            effect = timerInfo.Start
                .Aggregate(effect, (current, timerName) => current + (entity => {
                    string name = timerName;
                    TimerComponent timer = entity.GetComponent<TimerComponent>();
                    if (timer != null)
                        timer.Timers[name] = 0;
                }));

            effect = timerInfo.Reset
                .Aggregate(effect, (current, timerName) => current + (entity => {
                    string name = timerName;
                    TimerComponent timer = entity.GetComponent<TimerComponent>();
                    if (timer != null && timer.Timers.ContainsKey(name))
                        timer.Timers[name] = 0;
                }));

            effect = timerInfo.Delete
                .Aggregate(effect, (current, timerName) => current + (entity => {
                    TimerComponent timer = entity.GetComponent<TimerComponent>();
                    if (timer != null)
                        timer.Timers.Remove(timerName);
                }));

            return effect;
        }
示例#8
0
        public void Write(IEffectPartInfo info, XmlWriter writer)
        {
            var weapon = (WeaponEffectPartInfo)info;

            writer.WriteStartElement("Weapon");

            switch (weapon.Action)
            {
            case WeaponAction.Shoot:
            case WeaponAction.RotateForward:
            case WeaponAction.RotateBackward:
                writer.WriteValue(weapon.Action.ToString());
                break;

            case WeaponAction.Ammo:
                writer.WriteAttributeString("val", weapon.Ammo.ToString());
                break;

            case WeaponAction.Change:
                writer.WriteAttributeString("name", weapon.ChangeName);
                break;
            }

            writer.WriteEndElement();
        }
        public Effect Load(IEffectPartInfo info)
        {
            var colInfo = (CollisionEffectPartInfo)info;

            Effect effect = entity => {};

            if (colInfo.Enabled.HasValue)
            {
                var enable = colInfo.Enabled.Value;
                effect += entity => {
                    CollisionComponent col = entity.GetComponent<CollisionComponent>();
                    if (col != null) col.Enabled = enable;
                };
            }

            if (colInfo.HitBoxes.Any() || colInfo.EnabledBoxes.Any() || colInfo.ClearEnabled)
            {
                var collisionBoxes = colInfo.HitBoxes.Select(b => new CollisionBox(b));
                effect += entity => {
                    HitBoxMessage msg = new HitBoxMessage(entity, collisionBoxes, colInfo.EnabledBoxes, colInfo.ClearEnabled);
                    entity.SendMessage(msg);
                };
            }

            return effect;
        }
        public Effect Load(IEffectPartInfo info)
        {
            var spawnInfo = (SpawnEffectPartInfo)info;

            Effect posEff = null;

            if (spawnInfo.Position != null)
            {
                posEff = _posLoader.Load(spawnInfo.Position);
            }

            return(entity => {
                GameEntity spawn = entity.Spawn(spawnInfo.Name);
                if (spawn == null)
                {
                    return;
                }
                StateMessage msg = new StateMessage(entity, spawnInfo.State);
                spawn.SendMessage(msg);
                if (posEff != null)
                {
                    posEff(spawn);
                }
            });
        }
        public Effect Load(IEffectPartInfo info)
        {
            var movement = (MovementEffectPartInfo)info;

            Effect action = entity => { };

            if (movement.Floating.HasValue)
            {
                bool f = movement.Floating.Value;
                action += entity => {
                    MovementComponent mov = entity.GetComponent<MovementComponent>();
                    if (mov != null) mov.Floating = f;
                };
            }

            if (movement.FlipSprite.HasValue)
            {
                var flip = movement.FlipSprite.Value;
                action += entity => {
                    MovementComponent mov = entity.GetComponent<MovementComponent>();
                    if (mov != null) mov.FlipSprite = flip;
                };
            }

            if (movement.X != null)
                action += ParseMovementBehavior(movement.X, Axis.X);

            if (movement.Y != null)
                action += ParseMovementBehavior(movement.Y, Axis.Y);

            if (movement.Both != null)
                action += ParseMovementBehavior(movement.Both, Axis.Both);

            return action;
        }
 public void Write(IEffectPartInfo info, XmlWriter writer)
 {
     var health = (HealthEffectPartInfo)info;
     writer.WriteStartElement("Health");
     writer.WriteAttributeString("change", health.Change.ToString());
     writer.WriteEndElement();
 }
        public void Write(IEffectPartInfo info, XmlWriter writer)
        {
            var collision = (CollisionEffectPartInfo)info;

            writer.WriteStartElement("Collision");

            if (collision.ClearEnabled)
            {
                writer.WriteElementString("Clear", "");
            }

            if (collision.Enabled.HasValue)
            {
                writer.WriteElementString("Enabled", collision.Enabled.Value.ToString());
            }

            foreach (var hitbox in collision.HitBoxes)
            {
                writer.WriteStartElement("Hitbox");

                writer.WriteAttributeString("x", hitbox.Box.X.ToString());
                writer.WriteAttributeString("y", hitbox.Box.Y.ToString());
                writer.WriteAttributeString("width", hitbox.Box.Width.ToString());
                writer.WriteAttributeString("height", hitbox.Box.Height.ToString());
                writer.WriteAttributeString("damage", hitbox.ContactDamage.ToString());
                writer.WriteAttributeString("environment", hitbox.Environment.ToString());
                writer.WriteAttributeString("pushaway", hitbox.PushAway.ToString());
                writer.WriteAttributeString("properties", hitbox.PropertiesName);

                foreach (var group in hitbox.Groups)
                {
                    writer.WriteElementString("Group", group);
                }

                foreach (var hits in hitbox.Hits)
                {
                    writer.WriteElementString("Hits", hits);
                }

                foreach (var resist in hitbox.Resistance)
                {
                    writer.WriteStartElement("Resist");
                    writer.WriteAttributeString("name", resist.Key);
                    writer.WriteAttributeString("multiply", resist.Value.ToString());
                    writer.WriteEndElement();
                }

                writer.WriteEndElement();
            }

            foreach (var enable in collision.EnabledBoxes)
            {
                writer.WriteStartElement("EnableBox");
                writer.WriteAttributeString("name", enable);
                writer.WriteEndElement();
            }

            writer.WriteEndElement();
        }
        public void Write(IEffectPartInfo info, XmlWriter writer)
        {
            var health = (HealthEffectPartInfo)info;

            writer.WriteStartElement("Health");
            writer.WriteAttributeString("change", health.Change.ToString());
            writer.WriteEndElement();
        }
 public void Write(IEffectPartInfo info, XmlWriter writer)
 {
     var sound = (SoundEffectPartInfo)info;
     writer.WriteStartElement("Sound");
     writer.WriteAttributeString("name", sound.Name);
     writer.WriteAttributeString("playing", sound.Playing.ToString());
     writer.WriteEndElement();
 }
 public Effect Load(IEffectPartInfo info)
 {
     var health = (HealthEffectPartInfo)info;
     return entity =>
     {
         entity.GetComponent<HealthComponent>().Health += health.Change;
     };
 }
        public Effect Load(IEffectPartInfo info)
        {
            var setInfo = (SetVarEffectPartInfo)info;
            var name    = setInfo.Name;
            var value   = setInfo.Value;

            return(e => Game.CurrentGame.Player.SetVar(name, value));
        }
        public Effect Load(IEffectPartInfo info)
        {
            var setInfo = (SetVarEffectPartInfo)info;
            var name = setInfo.Name;
            var value = setInfo.Value;

            return e => Game.CurrentGame.Player.SetVar(name, value);
        }
 public void Write(IEffectPartInfo info, XmlWriter writer)
 {
     var pal = (PaletteEffectPartInfo)info;
     writer.WriteStartElement("Palette");
     writer.WriteAttributeString("name", pal.PaletteName);
     writer.WriteAttributeString("index", pal.PaletteIndex.ToString());
     writer.WriteEndElement();
 }
 public void Write(IEffectPartInfo info, XmlWriter writer)
 {
     var set = (SetVarEffectPartInfo)info;
     writer.WriteStartElement("SetVar");
     writer.WriteAttributeString("name", set.Name);
     writer.WriteAttributeString("value", set.Value);
     writer.WriteEndElement();
 }
 public void Write(IEffectPartInfo info, XmlWriter writer)
 {
     var item = (RemoveInventoryEffectPartInfo)info;
     writer.WriteStartElement("RemoveInventory");
     writer.WriteAttributeString("item", item.ItemName);
     writer.WriteAttributeString("quantity", item.Quantity.ToString());
     writer.WriteEndElement();
 }
示例#22
0
        public void Write(IEffectPartInfo info, XmlWriter writer)
        {
            var lives = (LivesEffectPartInfo)info;

            writer.WriteStartElement("Lives");
            writer.WriteAttributeString("add", lives.Add.ToString());
            writer.WriteEndElement();
        }
        public Effect Load(IEffectPartInfo info)
        {
            var ladderInfo = (LadderEffectPartInfo)info;

            Effect effect = e => { };

            if (ladderInfo.Action == LadderAction.Grab)
            {
                effect = entity =>
                {
                    LadderComponent ladder = entity.GetComponent <LadderComponent>();
                    if (ladder != null)
                    {
                        ladder.Grab();
                    }
                }
            }
            ;
            else if (ladderInfo.Action == LadderAction.LetGo)
            {
                effect = entity =>
                {
                    LadderComponent ladder = entity.GetComponent <LadderComponent>();
                    if (ladder != null)
                    {
                        ladder.LetGo();
                    }
                }
            }
            ;
            else if (ladderInfo.Action == LadderAction.StandOn)
            {
                effect = entity =>
                {
                    LadderComponent ladder = entity.GetComponent <LadderComponent>();
                    if (ladder != null)
                    {
                        ladder.StandOn();
                    }
                }
            }
            ;
            else if (ladderInfo.Action == LadderAction.ClimbDown)
            {
                effect = entity =>
                {
                    LadderComponent ladder = entity.GetComponent <LadderComponent>();
                    if (ladder != null)
                    {
                        ladder.ClimbDown();
                    }
                }
            }
            ;

            return(effect);
        }
    }
        public void Write(IEffectPartInfo info, XmlWriter writer)
        {
            var item = (RemoveInventoryEffectPartInfo)info;

            writer.WriteStartElement("RemoveInventory");
            writer.WriteAttributeString("item", item.ItemName);
            writer.WriteAttributeString("quantity", item.Quantity.ToString());
            writer.WriteEndElement();
        }
        public void Write(IEffectPartInfo info, XmlWriter writer)
        {
            var pal = (PaletteEffectPartInfo)info;

            writer.WriteStartElement("Palette");
            writer.WriteAttributeString("name", pal.PaletteName);
            writer.WriteAttributeString("index", pal.PaletteIndex.ToString());
            writer.WriteEndElement();
        }
        public void Write(IEffectPartInfo info, XmlWriter writer)
        {
            var set = (SetVarEffectPartInfo)info;

            writer.WriteStartElement("SetVar");
            writer.WriteAttributeString("name", set.Name);
            writer.WriteAttributeString("value", set.Value);
            writer.WriteEndElement();
        }
        public void Write(IEffectPartInfo info, XmlWriter writer)
        {
            var sound = (SoundEffectPartInfo)info;

            writer.WriteStartElement("Sound");
            writer.WriteAttributeString("name", sound.Name);
            writer.WriteAttributeString("playing", sound.Playing.ToString());
            writer.WriteEndElement();
        }
        public void Write(IEffectPartInfo info, XmlWriter writer)
        {
            var partInfo = (AddInventoryEffectPartInfo)info;

            writer.WriteStartElement("AddInventory");
            writer.WriteAttributeString("item", partInfo.ItemName);
            writer.WriteAttributeString("quantity", partInfo.Quantity.ToString());
            writer.WriteEndElement();
        }
        public void Write(IEffectPartInfo info, XmlWriter writer)
        {
            var partInfo = (AddInventoryEffectPartInfo)info;

            writer.WriteStartElement("AddInventory");
            writer.WriteAttributeString("item", partInfo.ItemName);
            writer.WriteAttributeString("quantity", partInfo.Quantity.ToString());
            writer.WriteEndElement();
        }
        public void WritePart(IEffectPartInfo info, XmlWriter writer)
        {
            if (!PartWriters.ContainsKey(info.GetType()))
                throw new Exception("No xml writer for effect part type: " + info.GetType().Name);

            var compWriter = PartWriters[info.GetType()];

            compWriter.Write(info, writer);
        }
示例#31
0
        private static Effect LoadEffectPart(IEffectPartInfo partInfo)
        {
            var t = partInfo.GetType();
            if (!effectLoaders.ContainsKey(t))
                throw new GameRunException("Unsupported effect type: " + t.Name);

            var loader = effectLoaders[t];
            return loader.Load(partInfo);
        }
        public Effect Load(IEffectPartInfo info)
        {
            var health = (HealthEffectPartInfo)info;

            return(entity =>
            {
                entity.GetComponent <HealthComponent>().Health += health.Change;
            });
        }
        public Effect Load(IEffectPartInfo info)
        {
            var sound = (SoundEffectPartInfo)info;

            return(entity => {
                entity.CreateComponentIfNotExists <SoundComponent>();
                SoundMessage msg = new SoundMessage(entity, sound.Name, sound.Playing);
                entity.SendMessage(msg);
            });
        }
        public Effect Load(IEffectPartInfo info)
        {
            var sound = (SoundEffectPartInfo)info;

            return entity => {
                entity.CreateComponentIfNotExists<SoundComponent>();
                SoundMessage msg = new SoundMessage(entity, sound.Name, sound.Playing);
                entity.SendMessage(msg);
            };
        }
 public Effect Load(IEffectPartInfo info)
 {
     var delayInfo = (DelayedEffectPartInfo)info;
     var frames = delayInfo.DelayFrames;
     var effect = EffectParser.LoadTriggerEffect(delayInfo.Effect);
     return e =>
     {
         Engine.Instance.DelayedCall(() => effect(e), null, frames);
     };
 }
        public void Write(IEffectPartInfo info, XmlWriter writer)
        {
            var delay = (DelayedEffectPartInfo)info;
            writer.WriteStartElement("Delay");

            foreach (var part in delay.Effect.Parts)
                _effectWriter.WritePart(part, writer);

            writer.WriteEndElement();
        }
        public Effect Load(IEffectPartInfo info)
        {
            var sprite = (SpriteEffectPartInfo)info;

            Effect action = entity => { };
            if (sprite.Name != null)
            {
                action += entity => {
                    SpriteComponent spritecomp = entity.GetComponent<SpriteComponent>();
                    spritecomp.ChangeSprite(sprite.Name);
                };
            }

            if (sprite.Playing != null)
            {
                bool play = sprite.Playing.Value;
                action += entity => {
                    SpriteComponent spritecomp = entity.GetComponent<SpriteComponent>();
                    spritecomp.Playing = play;
                };
            }

            if (sprite.Visible != null)
            {
                bool vis = sprite.Visible.Value;
                action += entity => {
                    SpriteComponent spritecomp = entity.GetComponent<SpriteComponent>();
                    spritecomp.Visible = vis;
                };
            }

            if (sprite.Facing != null)
            {
                FacingValues facing = sprite.Facing.Value;
                action += entity => {
                    GameEntity player = entity.Entities.GetEntityById("Player");
                    PositionComponent playerPos = player.GetComponent<PositionComponent>();

                    SpriteComponent spritecomp = entity.GetComponent<SpriteComponent>();
                    PositionComponent positioncomp = entity.GetComponent<PositionComponent>();

                    spritecomp.HorizontalFlip = false;  // Skip cases to set it to false

                    if (facing == FacingValues.Left) spritecomp.HorizontalFlip = true;
                    else
                    {
                        bool leftFromPlayer = (positioncomp.Position.X <= playerPos.Position.X);
                        if (facing == FacingValues.Player) spritecomp.HorizontalFlip = !leftFromPlayer;
                        else if (facing == FacingValues.PlayerOpposite) spritecomp.HorizontalFlip = leftFromPlayer;
                    }
                };
            }

            return action;
        }
示例#38
0
        public Effect Load(IEffectPartInfo info)
        {
            var delayInfo = (DelayedEffectPartInfo)info;
            var frames    = delayInfo.DelayFrames;
            var effect    = EffectParser.LoadTriggerEffect(delayInfo.Effect);

            return(e =>
            {
                Engine.Instance.DelayedCall(() => effect(e), null, frames);
            });
        }
 public Effect Load(IEffectPartInfo info)
 {
     var newstate = ((StateEffectPartInfo)info).Name;
     return entity => {
         StateComponent state = entity.GetComponent<StateComponent>();
         if (state != null)
         {
             state.ChangeState(newstate);
         }
     };
 }
示例#40
0
        public void WritePart(IEffectPartInfo info, XmlWriter writer)
        {
            if (!PartWriters.ContainsKey(info.GetType()))
            {
                throw new Exception("No xml writer for effect part type: " + info.GetType().Name);
            }

            var compWriter = PartWriters[info.GetType()];

            compWriter.Write(info, writer);
        }
        public Effect Load(IEffectPartInfo info)
        {
            var newstate = ((StateEffectPartInfo)info).Name;

            return(entity => {
                StateComponent state = entity.GetComponent <StateComponent>();
                if (state != null)
                {
                    state.ChangeState(newstate);
                }
            });
        }
        public void Write(IEffectPartInfo info, XmlWriter writer)
        {
            var spawn = (SpawnEffectPartInfo)info;
            writer.WriteStartElement("Spawn");

            writer.WriteAttributeString("name", spawn.Name);
            writer.WriteAttributeString("state", spawn.State);

            _positionWriter.Write(spawn.Position, writer);

            writer.WriteEndElement();
        }
        public void Write(IEffectPartInfo info, XmlWriter writer)
        {
            var input = (InputEffectPartInfo)info;
            writer.WriteStartElement("Input");

            if (input.Paused)
                writer.WriteElementString("Pause", "");
            else
                writer.WriteElementString("Unpause", "");

            writer.WriteEndElement();
        }
        public Effect Load(IEffectPartInfo info)
        {
            var func = (FuncEffectPartInfo)info;

            Effect effect = entity => { };
            foreach (string st in func.Statements)
            {
                effect += EffectParser.CompileEffect(st);
            }

            return effect;
        }
        public Effect Load(IEffectPartInfo info)
        {
            var pal = (PaletteEffectPartInfo)info;

            return e =>
            {
                var palette = PaletteSystem.Get(pal.PaletteName);
                if (palette != null)
                {
                    palette.CurrentIndex = pal.PaletteIndex;
                }
            };
        }
        public void Write(IEffectPartInfo info, XmlWriter writer)
        {
            var spawn = (SpawnEffectPartInfo)info;

            writer.WriteStartElement("Spawn");

            writer.WriteAttributeString("name", spawn.Name);
            writer.WriteAttributeString("state", spawn.State);

            _positionWriter.Write(spawn.Position, writer);

            writer.WriteEndElement();
        }
示例#47
0
        public Effect Load(IEffectPartInfo info)
        {
            var pal = (PaletteEffectPartInfo)info;

            return(e =>
            {
                var palette = PaletteSystem.Get(pal.PaletteName);
                if (palette != null)
                {
                    palette.CurrentIndex = pal.PaletteIndex;
                }
            });
        }
        public void Write(IEffectPartInfo info, XmlWriter writer)
        {
            var delay = (DelayedEffectPartInfo)info;

            writer.WriteStartElement("Delay");

            foreach (var part in delay.Effect.Parts)
            {
                _effectWriter.WritePart(part, writer);
            }

            writer.WriteEndElement();
        }
示例#49
0
        public Effect Load(IEffectPartInfo info)
        {
            var func = (FuncEffectPartInfo)info;

            Effect effect = entity => { };

            foreach (string st in func.Statements)
            {
                effect += EffectParser.CompileEffect(st);
            }

            return(effect);
        }
        public Effect Load(IEffectPartInfo info)
        {
            var posInfo = (PositionEffectPartInfo)info;

            Effect action = entity => { };
            if (posInfo.X != null)
                action += ParsePositionBehavior(posInfo.X, Axis.X);

            if (posInfo.Y != null)
                action += ParsePositionBehavior(posInfo.Y, Axis.Y);

            return action;
        }
        public void Write(IEffectPartInfo info, XmlWriter writer)
        {
            var collision = (CollisionEffectPartInfo)info;
            writer.WriteStartElement("Collision");

            if (collision.ClearEnabled)
                writer.WriteElementString("Clear", "");

            if (collision.Enabled.HasValue)
                writer.WriteElementString("Enabled", collision.Enabled.Value.ToString());

            foreach (var hitbox in collision.HitBoxes)
            {
                writer.WriteStartElement("Hitbox");

                writer.WriteAttributeString("x", hitbox.Box.X.ToString());
                writer.WriteAttributeString("y", hitbox.Box.Y.ToString());
                writer.WriteAttributeString("width", hitbox.Box.Width.ToString());
                writer.WriteAttributeString("height", hitbox.Box.Height.ToString());
                writer.WriteAttributeString("damage", hitbox.ContactDamage.ToString());
                writer.WriteAttributeString("environment", hitbox.Environment.ToString());
                writer.WriteAttributeString("pushaway", hitbox.PushAway.ToString());
                writer.WriteAttributeString("properties", hitbox.PropertiesName);

                foreach (var group in hitbox.Groups)
                    writer.WriteElementString("Group", group);

                foreach (var hits in hitbox.Hits)
                    writer.WriteElementString("Hits", hits);

                foreach (var resist in hitbox.Resistance)
                {
                    writer.WriteStartElement("Resist");
                    writer.WriteAttributeString("name", resist.Key);
                    writer.WriteAttributeString("multiply", resist.Value.ToString());
                    writer.WriteEndElement();
                }

                writer.WriteEndElement();
            }

            foreach (var enable in collision.EnabledBoxes)
            {
                writer.WriteStartElement("EnableBox");
                writer.WriteAttributeString("name", enable);
                writer.WriteEndElement();
            }

            writer.WriteEndElement();
        }
        public Effect Load(IEffectPartInfo info)
        {
            var input = (InputEffectPartInfo)info;

            if (input.Paused)
                return entity =>
                {
                    entity.GetComponent<InputComponent>().Paused = true;
                };
            else
                return entity =>
                {
                    entity.GetComponent<InputComponent>().Paused = false;
                };
        }
        public void Write(IEffectPartInfo info, XmlWriter writer)
        {
            var sprite = (SpriteEffectPartInfo)info;

            writer.WriteStartElement("Sprite");
            writer.WriteElementString("Name", sprite.Name);

            if (sprite.Playing != null)
                writer.WriteElementString("Playing", sprite.Playing.Value.ToString());

            if (sprite.Visible != null)
                writer.WriteElementString("Visible", sprite.Visible.Value.ToString());

            writer.WriteEndElement();
        }
        public Effect Load(IEffectPartInfo info)
        {
            var wpn = (WeaponEffectPartInfo)info;

            switch (wpn.Action)
            {
                case WeaponAction.Shoot:
                    return entity =>
                    {
                        WeaponComponent weaponComponent = entity.GetComponent<WeaponComponent>();
                        if (weaponComponent != null) weaponComponent.Shoot();
                    };

                case WeaponAction.RotateForward:
                    return entity =>
                    {
                        WeaponComponent weaponComponent = entity.GetComponent<WeaponComponent>();
                        if (weaponComponent != null) weaponComponent.RotateForward();
                    };

                case WeaponAction.RotateBackward:
                    return entity => {
                        WeaponComponent weaponComponent = entity.GetComponent<WeaponComponent>();
                        if (weaponComponent != null) weaponComponent.RotateBackward();
                    };

                case WeaponAction.Change:
                    var weaponName = wpn.ChangeName;
                    return entity => {
                        WeaponComponent weaponComponent = entity.GetComponent<WeaponComponent>();
                        if (weaponComponent != null) weaponComponent.SetWeapon(weaponName);
                    };

                case WeaponAction.Ammo:
                    if (wpn.Ammo == null)
                        throw new GameRunException("Weapon effect of type Ammo did not specify a value.");

                    int val = wpn.Ammo.Value;
                    return entity => {
                        WeaponComponent weaponComponent = entity.GetComponent<WeaponComponent>();
                        if (weaponComponent != null) weaponComponent.AddAmmo(val);
                    };

                default:
                    throw new GameRunException("Weapon effect did not specify a valid type");
            }
        }
        public Effect Load(IEffectPartInfo info)
        {
            var movement = (MovementEffectPartInfo)info;

            Effect action = entity => { };

            if (movement.Floating.HasValue)
            {
                bool f = movement.Floating.Value;
                action += entity => {
                    MovementComponent mov = entity.GetComponent <MovementComponent>();
                    if (mov != null)
                    {
                        mov.Floating = f;
                    }
                };
            }

            if (movement.FlipSprite.HasValue)
            {
                var flip = movement.FlipSprite.Value;
                action += entity => {
                    MovementComponent mov = entity.GetComponent <MovementComponent>();
                    if (mov != null)
                    {
                        mov.FlipSprite = flip;
                    }
                };
            }

            if (movement.X != null)
            {
                action += ParseMovementBehavior(movement.X, Axis.X);
            }

            if (movement.Y != null)
            {
                action += ParseMovementBehavior(movement.Y, Axis.Y);
            }

            if (movement.Both != null)
            {
                action += ParseMovementBehavior(movement.Both, Axis.Both);
            }

            return(action);
        }
        public void Write(IEffectPartInfo info, XmlWriter writer)
        {
            var input = (InputEffectPartInfo)info;

            writer.WriteStartElement("Input");

            if (input.Paused)
            {
                writer.WriteElementString("Pause", "");
            }
            else
            {
                writer.WriteElementString("Unpause", "");
            }

            writer.WriteEndElement();
        }
示例#57
0
        public Effect Load(IEffectPartInfo info)
        {
            var posInfo = (PositionEffectPartInfo)info;

            Effect action = entity => { };

            if (posInfo.X != null)
            {
                action += ParsePositionBehavior(posInfo.X, Axis.X);
            }

            if (posInfo.Y != null)
            {
                action += ParsePositionBehavior(posInfo.Y, Axis.Y);
            }

            return(action);
        }
        public Effect Load(IEffectPartInfo info)
        {
            var spawnInfo = (SpawnEffectPartInfo)info;

            Effect posEff = null;
            if (spawnInfo.Position != null)
            {
                posEff = _posLoader.Load(spawnInfo.Position);
            }

            return entity => {
                GameEntity spawn = entity.Spawn(spawnInfo.Name);
                if (spawn == null) return;
                StateMessage msg = new StateMessage(entity, spawnInfo.State);
                spawn.SendMessage(msg);
                if (posEff != null) posEff(spawn);
            };
        }
示例#59
0
        public void Write(IEffectPartInfo info, XmlWriter writer)
        {
            var sprite = (SpriteEffectPartInfo)info;

            writer.WriteStartElement("Sprite");
            writer.WriteElementString("Name", sprite.Name);

            if (sprite.Playing != null)
            {
                writer.WriteElementString("Playing", sprite.Playing.Value.ToString());
            }

            if (sprite.Visible != null)
            {
                writer.WriteElementString("Visible", sprite.Visible.Value.ToString());
            }

            writer.WriteEndElement();
        }
示例#60
0
        public Effect Load(IEffectPartInfo info)
        {
            var triggerInfo = (TriggerEffectPartInfo)info;

            Condition condition     = EffectParser.ParseCondition(triggerInfo.Trigger.Condition);
            Effect    triggerEffect = EffectParser.LoadTriggerEffect(triggerInfo.Trigger.Effect);
            Effect    elseEffect    = (triggerInfo.Trigger.Else != null) ? EffectParser.LoadTriggerEffect(triggerInfo.Trigger.Else) : null;

            return(e =>
            {
                if (condition(e))
                {
                    triggerEffect(e);
                }
                else if (elseEffect != null)
                {
                    elseEffect(e);
                }
            });
        }