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 UnloadAll() { RemoveAll(); deadEntityPool.Clear(); EffectParser.Unload(); }
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 func = (FuncEffectPartInfo)info; Effect effect = entity => { }; foreach (string st in func.Statements) { effect += EffectParser.CompileEffect(st); } return(effect); }
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); } }); }
public static Action Parse(Chunk c) { Action a = new Action(); /* Set initial values for a's properties */ a.name = c.header.tokens[1]; a.numObjects = (c.header.tokens.Length - 2) / 2; int numRequirements = 0; for (int i = 0; i < c.lines.Length; i++) { if (c.lines[i].tokens[0] == "requirement") { numRequirements++; } } a.requirements = new Requirement[numRequirements]; a.effects = new Effect[c.lines.Length - numRequirements]; /* Parse each line of the chunk */ int r = 0; int e = 0; for (int i = 0; i < c.lines.Length; i++) { if (c.lines[i].tokens[0] == "requirement") { a.requirements[r] = RequirementParser.Parse(c.header, c.lines[i]); r++; } else { a.effects[e] = EffectParser.Parse(c.header, c.lines[i]); e++; } } return(a); }
private void LoadEntity(XElement xml) { GameEntity entity = new GameEntity(); string name = xml.RequireAttribute("name").Value; if (entities.ContainsKey(name)) { throw new GameXmlException(xml, "You have defined two entities both named \"" + name + "\"."); } entity.Name = name; entity.MaxAlive = xml.TryAttribute <int>("limit", 50); SpriteComponent spritecomp = null; PositionComponent poscomp = null; StateComponent statecomp = new StateComponent(); entity.AddComponent(statecomp); try { foreach (XElement xmlComp in xml.Elements()) { switch (xmlComp.Name.LocalName) { case "EditorData": break; case "Tilesheet": if (spritecomp == null) { spritecomp = new SpriteComponent(); entity.AddComponent(spritecomp); } if (poscomp == null) { poscomp = new PositionComponent(); entity.AddComponent(poscomp); } spritecomp.LoadTilesheet(xmlComp); break; case "Trigger": statecomp.LoadStateTrigger(xmlComp); break; case "Sprite": if (spritecomp == null) { spritecomp = new SpriteComponent(); entity.AddComponent(spritecomp); } if (poscomp == null) { poscomp = new PositionComponent(); entity.AddComponent(poscomp); } spritecomp.LoadXml(xmlComp); break; case "Position": if (poscomp == null) { poscomp = new PositionComponent(); entity.AddComponent(poscomp); } poscomp.LoadXml(xmlComp); break; case "Death": entity.OnDeath += EffectParser.LoadTriggerEffect(xmlComp); break; case "GravityFlip": entity.IsGravitySensitive = xmlComp.GetValue <bool>(); break; default: entity.GetOrCreateComponent(xmlComp.Name.LocalName).LoadXml(xmlComp); break; } } } catch (GameXmlException ex) { ex.Entity = name; throw; } entities.Add(name, entity); }
private void LoadEntity(EntityInfo info) { if (entities.ContainsKey(info.Name)) { throw new GameEntityException("You have defined two entities both named \"" + info.Name + "\"."); } var entity = new GameEntity(); entity.Name = info.Name; entities[info.Name] = entity; entity.IsGravitySensitive = info.GravityFlip; if (info.Death != null) { entity.OnDeath = EffectParser.LoadTriggerEffect(info.Death); } if (info.SpriteComponent != null) { LoadSpriteComponent(entity, info.SpriteComponent); } if (info.PositionComponent != null || info.SpriteComponent != null) { LoadPositionComponent(entity, info.PositionComponent); } if (info.MovementComponent != null) { LoadMovementComponent(info.MovementComponent, entity); } if (info.InputComponent != null) { entity.AddComponent(new InputComponent()); } if (info.CollisionComponent != null) { LoadCollisionComponent(entity, info.CollisionComponent); } if (info.StateComponent != null) { LoadStateComponent(entity, info.StateComponent); } if (info.HealthComponent != null) { LoadHealthComponent(entity, info.HealthComponent); } if (info.WeaponComponent != null) { LoadWeaponComponent(entity, info.WeaponComponent); } if (info.LadderComponent != null) { LoadLadderComponent(entity, info.LadderComponent); } // everyone gets these entity.AddComponent(new SoundComponent()); entity.AddComponent(new TimerComponent()); entity.AddComponent(new VarsComponent()); }
public Effect Load(IEffectPartInfo info) { var callInfo = (CallEffectPartInfo)info; return(EffectParser.GetLateBoundEffect(callInfo.EffectName)); }