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(); } }
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); } } } }
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); } }