public bool Evaluate(EventContext context, Game game) { Event e = game.GetEventById(eventId); if (e == null) return false; Dictionary<string, object> computedParameters = new Dictionary<string, object>(); foreach (var pair in parameters) { computedParameters.Add(pair.Key, context.GetScopedObjectByName(pair.Value)); } EventContext newContext = new EventContext(context.CurrentCharacter, computedParameters); return e.GetAvailableOptions(newContext, game).Length > 0; }
public double Evaluate(Game game, EventContext context, Weights weights) { Dictionary<string, object> computedParameters = new Dictionary<string, object>(); foreach (var pair in parameters) { computedParameters.Add(pair.Key, context.GetScopedObjectByName(pair.Value)); } EventContext newContext = new EventContext(context.CurrentCharacter, computedParameters); return game.GetEventById(eventid).Evaluate(game, newContext, weights); }
public void Execute(EventResults result, Game game, EventContext context) { Dictionary<string, object> computedParameters = new Dictionary<string, object>(); foreach (var pair in parameters) { computedParameters.Add(pair.Key, context.GetScopedObjectByName(pair.Value)); } EventContext newContext = new EventContext(context.CurrentCharacter, computedParameters); game.GetEventById(eventid).Execute(result, game, newContext); //We need to commit any changes that were performed on the new context to our old one. newContext.CommitTo(context); }
public void GiveJobTo(Job job, Character newHolder, Game game) { if(job.Unique) { Character oldHolder = uniqueJobs[job]; if(oldHolder != null) { if (job.Permanent) throw new InvalidOperationException("You tried to fire the king!! He chops your head off instead."); oldHolder.FireFromJob(job); Event fireEvent = game.GetEventById(job.OnFire); if (fireEvent != null) { EventContext context = new EventContext(oldHolder); fireEvent.Execute(new EventResults(), game, context); //We need to commit any changes. context.Commit(); } } if(newHolder != null) { newHolder.GiveJob(job); Event hireEvent = game.GetEventById(job.OnHire); if (hireEvent != null) { EventContext context = new EventContext(newHolder); hireEvent.Execute(new EventResults(), game, context); //We need to commit any changes. context.Commit(); } } uniqueJobs[job] = newHolder; } else { if(newHolder != null) { newHolder.GiveJob(job); Event hireEvent = game.GetEventById(job.OnHire); if (hireEvent != null) { EventContext context = new EventContext(newHolder); hireEvent.Execute(new EventResults(), game, context); //We need to commit any changes. context.Commit(); } } } }