public override void OnEvent(Event evt) { switch (evt.Type) { case DestroyEntityEvent.DESTROY_ENTITY: { DestroyEntityEvent msg = (DestroyEntityEvent)evt; if (this.entity.ID == msg.EntityID && msg.DestroyedByEntityID > 0) { int points = entity[Key_PointsAwarded]; if (points <= 0) { break; } Entity otherEntity; game.World.Entities.TryGetValue(msg.DestroyedByEntityID, out otherEntity); if (otherEntity == null || otherEntity.IsDead) { break; } AwardPointsEvent awardPointsEvent = AwardPointsEvent.Award(msg.DestroyedByEntityID, points, this.entity.ID); eventManager.Queue(awardPointsEvent); } break; } } }
public override void OnEvent(Event evt) { switch (evt.Type) { case AwardPointsEvent.AWARD_POINTS: { AwardPointsEvent msg = (AwardPointsEvent)evt; int points = entity[Key_PointsCollected]; points += msg.Points; entity[Key_PointsCollected] = points; HudEvent hudEvent = HudEvent.UpdateScore(points); eventManager.Queue(hudEvent); Console.WriteLine("[" + this.GetType().Name + "] " + entity + " collected " + msg.Points + " points for destroying " + msg.SourceEntityID + " (total points: " + points + " )"); break; } } }