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(); }
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; }
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 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(); }
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 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); }
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; }
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); } }; }
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 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(); }
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(); }
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); }; }
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 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); } }); }