Пример #1
0
 public void RegisterUseMessage(EntityUseMessage useMessage, IToolImpact localImpact)
 {
     _syncItems.Add(new SyncItem {
         Added      = DateTime.Now,
         UseMessage = useMessage,
         ToolImpact = localImpact
     });
 }
Пример #2
0
 protected void OnMessageEntityUse(EntityUseMessage ea)
 {
     if (MessageEntityUse != null)
     {
         MessageEntityUse(this, new ProtocolMessageEventArgs <EntityUseMessage> {
             Message = ea
         });
     }
 }
        //OUT Going Server Data concering current player =================================================================
        //These are player event subscribing
        private void PlayerEntityUse(object sender, EntityUseEventArgs e)
        {
            var useMessage = new EntityUseMessage(e)
            {
                Token = ++_useToken
            };

            _syncManager.RegisterUseMessage(useMessage, e.Impact);
            _server.ServerConnection.Send(useMessage);
        }
Пример #4
0
        protected void OnMessageEntityUse(EntityUseMessage ea)
        {
            var handler = MessageEntityUse;

            if (handler != null)
            {
                handler(this, new ProtocolMessageEventArgs <EntityUseMessage> {
                    Message = ea
                });
            }
        }
Пример #5
0
        private void HandleEntityUseMessage(EntityUseMessage entityUseMessage)
        {
            var playerCharacter = PlayerCharacter;

            var toolImpact = playerCharacter.ReplayUse(entityUseMessage);

            CurrentArea.UseFeedback(new UseFeedbackMessage
            {
                Token          = entityUseMessage.Token,
                Impact         = toolImpact,
                OwnerDynamicId = playerCharacter.DynamicId
            });
        }
Пример #6
0
        public override void Use(EntityUseMessage entityUseMessage)
        {
            if (entityUseMessage.DynamicEntityId != PlayerCharacter.DynamicId)
            {
                return;
            }

            base.Use(entityUseMessage);

            try
            {
                _dontSendInventoryEvents = true;
                HandleEntityUseMessage(entityUseMessage);
            }
            finally
            {
                _dontSendInventoryEvents = false;
            }
        }
Пример #7
0
        public IToolImpact ReplayUse(EntityUseMessage msg)
        {
            EntityState = msg.State;

            switch (msg.UseType)
            {
            case UseType.Use:
                if (msg.ToolId != 0)
                {
                    var tool = FindItemById(msg.ToolId) as ITool;

                    if (tool == null)
                    {
                        return new ToolImpact {
                                   Message = "This item is not the tool"
                        }
                    }
                    ;

                    return(ToolUse(tool));
                }
                return(ToolUse(HandTool));

            case UseType.Put:
                return(PutUse());

            case UseType.Craft:
                return(CraftUse(msg.RecipeIndex));

            case UseType.Command:
                return(new ToolImpact());

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
Пример #8
0
 /// <summary>
 /// Perform using (tool or toolless use)
 /// </summary>
 /// <param name="entityUseMessage"></param>
 public virtual void Use(EntityUseMessage entityUseMessage)
 {
     // update entity state
     DynamicEntity.EntityState = entityUseMessage.State;
 }