Gruppe22.Client.Mainmap.HandleEvent C# (CSharp) Method

HandleEvent() public method

public HandleEvent ( bool DownStream, Backend eventID ) : void
DownStream bool
eventID Backend
return void
        public override void HandleEvent(bool DownStream, Backend.Events eventID, params object[] data)
        {
            if (DownStream)
            {
                switch (eventID)
                {
                    case Backend.Events.MoveActor:
                        {
                            int id = (int)data[0];
                            Backend.Coords coords = (Backend.Coords)data[3];
                            if ((data.Length > 4) && (data[4] is Backend.Coords))
                                _actors[id].position = _map2screen((Backend.Coords)data[4]); // Teleport user
                            _actors[id].target = _map2screen(coords);
                        };
                        break;
                    case Backend.Events.Magic:
                        _actors[(int)data[0]].effect = new MapEffect(_environment[2][2], new Backend.Coords(_actors[(int)data[0]].position.x + 7, _actors[(int)data[0]].position.y + 2));
                        break;
                    case Backend.Events.ExplodeProjectile:
                        if (data[2] != null)
                        {
                            int id = ((Backend.Actor)data[2]).id;
                            _actors[id].effect = new MapEffect(_environment[2][0], new Backend.Coords(_actors[id].position.x + 7, _actors[id].position.y + 2));
                        }
                        else
                        {
                            addEffect(2, _map2screen((Backend.Coords)data[1]));
                        }
                        RemoveProjectile(((ProjectileTile)data[0]).id);

                        break;
                    case Backend.Events.AnimateActor:
                        {
                            int id = (int)data[0];
                            if (id < _map.actors.Count)
                            {
                                Backend.Activity activity = (Backend.Activity)data[1];
                                bool delay = false;
                                bool isLock = true;
                                if (data.Length > 2) delay = (bool)data[2];
                                if (data.Length > 3)
                                    _parent.HandleEvent(false, Backend.Events.MoveActor, id, (Backend.Direction)data[3], _map.actors[id].moveIndex, _map.actors[id].tile.coords);
                                if ((activity == Backend.Activity.Die) || (activity == Backend.Activity.Hit))
                                {
                                    _actors[id].effect = new MapEffect(_environment[2][1], new Backend.Coords(_actors[id].position.x + 7, _actors[id].position.y + 2));
                                }
                                if (delay)
                                {
                                    _actors[id].PlayNowOrAfterMove(activity, isLock);
                                }
                                else
                                {
                                    _actors[id].EndMoveAndPlay(activity, isLock);
                                };
                            }
                            /*bool waitForAnim = (bool)data[2];*/
                        }
                        break;
                }
            }
            else
            {
                _parent.HandleEvent(true, eventID, data);
            }
        }