Ejemplo n.º 1
0
        private void AttackPlayer(int peerId, ISceneObject sceneObject, CollisionInfo collisionInfo)
        {
            isAttacking = true;

            var positionTransform = sceneObject.Components.GetComponent <IPositionTransform>().AssertNotNull();
            var orientation       = (positionTransform.Position - collisionInfo.Position).Normalize();

            direction = orientation.X < 0 ? -MOVE_DIRECTION : MOVE_DIRECTION;

            RaisePlayerAttacked();

            void RaisePlayerAttacked()
            {
                var parameters = new PlayerAttackedEventParameters(collisionInfo.Position.X, collisionInfo.Position.Y);

                InterestAreaNotifier.NotifySubscriberOnly(peerId, (byte)GameEvents.PlayerAttacked, parameters, MessageSendOptions.DefaultUnreliable());
            }
        }
Ejemplo n.º 2
0
        private void OnPositionChanged(Vector2 position)
        {
            var body = GetBody().AssertNotNull();

            body.SetXForm(position.FromVector2(), body.GetAngle());

            if (Vector2.Distance(position, lastPosition) > 0.1f)
            {
                UpdatePositionForAll();
                lastPosition = position;
            }

            void UpdatePositionForAll()
            {
                var direction  = directionTransform.Direction.GetDirectionsFromDirection();
                var parameters = new SceneObjectPositionChangedEventParameters(Id, position.X, position.Y, direction);

                InterestAreaNotifier.NotifySubscribers((byte)GameEvents.PositionChanged, parameters, MessageSendOptions.DefaultUnreliable((byte)GameDataChannels.Position));
            }
        }