public void ScriptCompletion(IDoomEvent doomEvent, string scriptName)
        {
            AnimationScriptEvent ase = (AnimationScriptEvent) doomEvent;
            if (ase.ScriptName == scriptName)
            {
                if (_actionInformation.ActionType == ActionType.Attack)
                    GameState.ActiveUnit.SetActioned();
                if (_actionInformation.ActionType == ActionType.Move)
                    GameState.ActiveUnit.SetMoved();

                if (_actionInformation.ActionType == ActionType.Wait)
                {
                    GameState.ActiveUnit.EndTurn();
                    GameState.ActiveUnit = GameState.GetNextActiveUnit();
                    NextState = GameState.ActiveUnit == null
                                    ? new StateTransition(() => new FreeCamera(GameState, null))
                                    : new StateTransition(() => new ActionSelection(GameState, GameState.ActiveUnit));
                }
                else if(!GameState.ActiveUnit.CanAction() && !GameState.ActiveUnit.CanMove() && !GameState.IsAIControlled(GameState.ActiveUnit))
                {
                    NextState = new StateTransition(() => new SelectWaitDirection(GameState));
                }
                else
                {
                    NextState = new StateTransition(() => new ActionSelection(GameState, GameState.ActiveUnit));
                }
            }
        }
 public void DispatchEvent(IDoomEvent evt, string senderName)
 {
     var interestedListeners =
         (from l in callbacks
         where l.type == evt.EventType
               && (l.SenderName == null || l.SenderName == senderName)
               && (evt.ListenerNames == null || evt.ListenerNames.Length == 0 || evt.ListenerNames.Contains(l.ListenerName))
         select l).ToList();
     foreach (var intListener in interestedListeners)
     {
         //_log.Debug("Found interested listener " + intListener.ListenerName + " for event " + evt);
         intListener.callback(evt);
     }
 }
Exemple #3
0
        public void MoveCamera(IDoomEvent evt)
        {
            var cameraEvent = (CameraEvent)evt;
            Vector3 sideVector = Vector3.Cross(Up, Direction);
            sideVector.Normalize();

            if (cameraEvent.CameraMovementMode == CameraMovementMode.Pan)
            {
                Position += sideVector * PanModifier * cameraEvent.MouseDelta.X;
                Position += Up * PanModifier * cameraEvent.MouseDelta.Y;
            }
            else
            {
                if (cameraEvent.ForwardPressed)
                    Position += FreelookSpeed * Direction;
                else if (cameraEvent.BackwardPressed)
                    Position -= FreelookSpeed * Direction;
                if (cameraEvent.StrafeLeftPressed)
                    Position += FreelookSpeed * sideVector;
                else if (cameraEvent.StrafeRightPressed)
                    Position -= FreelookSpeed * sideVector;

                if (cameraEvent.MouseDelta.X != 0)
                {
                    Direction = Vector3.Transform(Direction,
                                                  Matrix.CreateFromAxisAngle(Up,
                                                                             -MathHelper.PiOver4/360*
                                                                             cameraEvent.MouseDelta.X));
                }

                if (cameraEvent.MouseDelta.Y != 0)
                {
                    Direction = Vector3.Transform(Direction,
                                                  Matrix.CreateFromAxisAngle(sideVector,
                                                                             MathHelper.PiOver4/360*
                                                                             cameraEvent.MouseDelta.Y));
                }
            }
            UpdateView();
        }
Exemple #4
0
 public void OnRemoveActorFromTile(IDoomEvent evt)
 {
     var actorEvent = (ActorEvent) evt;
     var tile = Level.GetTileOfActor(actorEvent.Actor);
     if (tile != null)
     {
         tile.SetActor(null);
     }
 }
Exemple #5
0
        public void OnDisplayDamage(IDoomEvent displayDamageEvent)
        {
            var evt = (DamageEvent) displayDamageEvent;
            float yOffset = evt.DamagedActor.Height + DamageFont.MeasureString(evt.Damage.ToString()).Y;
            var floatingText = new TimedText(evt.Damage.ToString(), evt.DamagedActor.Position + new Vector3(0, yOffset, 0), DamageFont, 1500, 1, Color.Red, Color.Black);
            FloatingTexts.Add(floatingText);

            Log.Debug("Actor " + evt.DamagedActor.ActorId + " took " + evt.Damage + " damage.");
        }
Exemple #6
0
 public void OnDespawnText(IDoomEvent despawnTextEvent)
 {
     var evt = (TextEvent) despawnTextEvent;
     FloatingTexts.Remove(evt.Text);
 }
Exemple #7
0
 public void OnChargeTimeReached(IDoomEvent doomEvent)
 {
     if (ActiveUnit == null)
     {
         var turnEvent = (TurnEvent)doomEvent;
         ActiveUnit = turnEvent.Actor;
         _stateMachine.SetState(new ActionSelection(this, ActiveUnit));
     }
 }
Exemple #8
0
 public void OnActorSpawn(IDoomEvent evt)
 {
     var actorEvent = (ActorEvent)evt;
     Level.Actors.Add(actorEvent.Actor);
 }
Exemple #9
0
 public void OnActorDespawn(IDoomEvent evt)
 {
     var actorEvent = (DespawnActorEvent) evt;
     Level.Actors.Remove(actorEvent.DespawnTarget);
 }
Exemple #10
0
 public void OnActorDeath(IDoomEvent evt)
 {
     if (!Level.Actors.Any(x => x.Team == 1 && !x.IsDead()))
     {
         _stateMachine.SetState(new EndGameState(this, false));
     }
     else if (!Level.Actors.Any(x => x.Team == 2 && !x.IsDead()))
     {
         _stateMachine.SetState(new EndGameState(this, true));
     }
 }
 public static void OnPlaySound(IDoomEvent soundEvent)
 {
     var evt = (SoundEvent) soundEvent;
     PlaySound(evt.SoundName);
 }
 public static void DispatchEvent(IDoomEvent evt, string senderName)
 {
     _queue.Enqueue(new EventWithSender(evt, senderName));
 }
 public EventWithSender(IDoomEvent evt, string senderName)
 {
     DoomEvent = evt;
     SenderName = senderName;
 }