public override void DoAction(IEventArgs args)
 {
     foreach (FreeMoveEntity free in args.GameContext.freeMove.GetEntities())
     {
         if (free.hasFreeData && free.freeData.FreeData != null)
         {
             FreeEntityData data = (FreeEntityData)free.freeData.FreeData;
             if (data.GetKey() == entity)
             {
                 PlayerEntity p = GetPlayerEntity(args);
                 if (p != null)
                 {
                     if (remove)
                     {
                         data.follows.Remove(p);
                     }
                     else
                     {
                         data.follows.Add(p);
                     }
                 }
             }
         }
     }
 }
Beispiel #2
0
        public override void DoAction(IEventArgs args)
        {
            FreeRuleEventArgs fr  = (FreeRuleEventArgs)args;
            object            obj = fr.GetEntity(FreeUtil.ReplaceVar(entity, args));

            if (obj is FreeMoveEntity)
            {
                FreeEntityData data = (FreeEntityData)((FreeMoveEntity)obj).freeData.FreeData;
                data.SetMove(args, move);
            }
        }
        public bool Meet(IEventArgs args)
        {
            FreeEntityData entity = ChickenRuleVars.GetDropPlane(args);

            if (entity != null)
            {
                int x = ChickenRuleVars.GetFogStopX(args);
                int y = ChickenRuleVars.GetFogStopY(args);
                int r = ChickenRuleVars.GetFogStopRadius(args);

                float flyX = entity.FreeMoveEntity.position.Value.x;
                float flyY = entity.FreeMoveEntity.position.Value.z;
                if ((x - flyX) * (x - flyX) + (y - flyY) * (y - flyY) <= r * r)
                {
                    return(true);
                }
            }

            return(false);
        }
Beispiel #4
0
        private static string ToTrigger()
        {
            if (trigger is GameTrigger)
            {
                GameTrigger gt = (GameTrigger)trigger;
                return(string.Format("触发器:{0} 触发类型:{1} 分类:{2} 规则:{3}", gt.GetName(), gt.GetKey(), gt.GetGroup(), gt.GetRule()));
            }
            else if (trigger is string)
            {
                return((string)trigger);
            }
            else if (trigger is FreeEntityData)
            {
                FreeEntityData move = (FreeEntityData)trigger;
                return(string.Format("FreeMove:{0}", move.name));
            }
            else if (trigger is ISkill)
            {
                ISkill skill = (ISkill)trigger;
                string key   = skill.GetKey() != null?skill.GetKey() : string.Empty;

                if (skill is AbstractCoolDownSkill)
                {
                    PlayerActionSkill cooldown     = (PlayerActionSkill)skill;
                    string            skillTrigger = cooldown.trigger != null?cooldown.trigger.ToString() : string.Empty;

                    return(string.Format("动作技能:{0}, 触发:{1}", cooldown.GetKey(), skillTrigger));
                }
                else
                {
                    return(string.Format("技能:{0}", skill.GetKey()));
                }
            }
            else if (trigger is FreeBuf)
            {
                FreeBuf buf = (FreeBuf)trigger;
                return(string.Format("Buf:{0}", buf.GetKey()));
            }

            return(string.Empty);
        }