protected override void ExecuteUserCmd(PlayerEntity player, IUserCmd cmd)
        {
            ISkillArgs args = (ISkillArgs)contexts.session.commonSession.FreeArgs;

            if (SharedConfig.IsServer)
            {
                FreeLog.Reset();
            }
            args.GetInput().SetUserCmd(cmd);
            if (player.gamePlay.LifeState != (int)EPlayerLifeState.Dead)
            {
                FreeData fd = ((FreeData)player.freeData.FreeData);
                args.TempUse("current", fd);

                if (cmd.IsPDown)
                {
                    Debug.LogFormat("p down {0}, is server {1}", cmd.Seq, SharedConfig.IsServer);
                }
                fd.GetUnitSkill().Frame(args);

                args.Resume("current");
            }

            if (SharedConfig.IsServer)
            {
                FreeLog.Print();
            }
        }
示例#2
0
        public void Handle(SimpleProto data)
        {
            PlayerEntity player = SingletonManager.Get <FreeUiManager>().Contexts1.player.flagSelfEntity;

            if (player != null)
            {
                FreeData fd = (FreeData)player.freeData.FreeData;
                if (fd != null)
                {
                    byte[] bs = new byte[data.Ins.Count];
                    for (int i = 0; i < bs.Length; i++)
                    {
                        bs[i] = (byte)data.Ins[i];
                    }
                    try
                    {
                        List <ISkill> skills = (List <ISkill>)SerializeUtil.ByteToObject(bs);
                        foreach (var skill in skills)
                        {
                            fd.GetUnitSkill().AddSkill(skill);
                        }
                    }catch (Exception e)
                    {
                        _logger.ErrorFormat("client skill initial failed.\n{0}", e.StackTrace);
                    }
                }
            }
        }
示例#3
0
        public virtual string GetHotKey(IEventArgs args, ItemPosition ip)
        {
            ConditionHotKey result = null;

            args.TempUse("item", ip);
            foreach (ConditionHotKey pk in keys)
            {
                if (pk.Meet(args))
                {
                    result = pk;
                    break;
                }
            }
            args.Resume("item");
            FreeData fd = (FreeData)args.GetUnit("current");

            if (fd != null && result != null)
            {
                fd.GetUnitSkill().RemoveSkill("skill_hotkey_" + result.key);
                PlayerActionSkill skill = new PlayerActionSkill();
                skill.SetKey("skill_hotkey_" + result.key);
                SkillClickTrigger trigger = new SkillClickTrigger();
                trigger.SetKey(int.Parse(result.key));
                skill.SetTrigger(trigger);
                skill.SetEffect(new PositionHotKey.ItemHotkeyAction(this, ip, fd, ip.GetInventory().GetName()));
                fd.GetUnitSkill().AddSkill(skill);
            }
            if (result != null)
            {
                return(result.ui);
            }
            else
            {
                return(string.Empty);
            }
        }