Exemple #1
0
        public override void OnInit(ITraitContainer container)
        {
            var m = container.NewMatcher();

            m.HasTrait <Renderer>().HasTag(Renderer.Loaded).HasTrait <Movement>().HasTag(Movement.Inited);
            this.filter = container.GetFilter(this, TupleType.Job, m);
        }
        private bool PlayAnimation(ITraitContainer e, ActionState state, ActionState nextState = ActionState.Unknown)
        {
            if (!CanPlay(state))
            {
                return(false);
            }

            this.state = state;

            string animationName = null;

            if (animations.TryGetValue(state, out animationName))
            {
                var animator = GetAnimator(e);
                if (null != animator)
                {
                    animator.CrossFade(animationName, 0.03f, 0);

                    this.nextState = nextState;
                    if (ActionState.Unknown != nextState)
                    {
                        this.duration = animationDurations[state];
                    }

                    return(true);
                }
            }

            return(false);
        }
        public override void OnUpdate(ITraitContainer container, float deltaTime)
        {
            if (null != this.initFilter.Target)
            {
                var e = this.initFilter.Target;

                var r = e.GetTrait <Renderer>();

                var effect = e.GetTrait <Effect>();
                effect.View = r.Pool.Pick(effect.Path);
                effect.Pool = r.Pool;

                var transform = effect.View.transform;
                transform.SetParent(r.View.transform);
                transform.localPosition = Vector3.up * EffectHeight;
                var particle = transform.GetComponent <ParticleSystem>();
                particle.Play();

                e.AddTag(Effect.Inited);
            }

            if (null != this.updateFilter.Target)
            {
                var e = this.updateFilter.Target;

                var effect = e.GetTrait <Effect>();
                effect.Duration -= deltaTime;
                if (effect.Duration <= 0)
                {
                    e.RemoveTrait <Effect>();
                    e.RemoveTag(Effect.Inited);
                }
            }
        }
        public override void OnUpdate(ITraitContainer container, float deltaTime)
        {
            if (null != this.filter.Target)
            {
                var e = this.filter.Target;
                var w = e.GetTrait <Window>();

                if (!this.inited)
                {
                    this.inited = true;
                    OnLoad();
                }

                OnUpdate(deltaTime);

                if (-1 != w.FadeOutTimer && w.FadeOutTimer > 0)
                {
                    w.FadeOutTimer -= Time.deltaTime;
                    if (w.FadeOutTimer <= 0)
                    {
                        w.FadeOutTimer = -1;
                        Game.CloseWindow(w.Path);
                    }
                }
            }
        }
 public override void OnUpdate(ITraitContainer container, float deltaTime)
 {
     if (null != this.state)
     {
         this.state.OnExecute(this);
     }
 }
        public override void OnInit(ITraitContainer container)
        {
            this.container = container;

            var m = container.NewMatcher();

            m.HasTrait <Window>().HasTag(Window.Inited);
            this.filter = container.GetFilter(this, TupleType.Job, m);
        }
        public override void OnUpdate(ITraitContainer container, float deltaTime)
        {
            if (null != this.filter.Target)
            {
                var e      = this.filter.Target;
                var m      = e.GetTrait <Movement>();
                var player = e.GetTrait <Player>();
                if (player.IsDead)
                {
                    PlayAnimation(e, ActionState.Death);
                }
                else if (0 != m.Move.state || ActionState.Unknown == this.nextState)
                {
                    if ((uint)ActionState.Attack == m.Move.state)
                    {
                        if (PlayAnimation(e, ActionState.Attack, ActionState.Idle))
                        {
                            var effect = e.AddTrait <Effect>();
                            if (!e.HasTag(Effect.Inited))
                            {
                                effect.Path     = "Effect/AttackEffect0";
                                effect.Duration = 0.5f;
                            }
                            if (!e.HasTrait <Audio>())
                            {
                                var audio = e.AddTrait <Audio>();
                                audio.Path = ExcelManager.Configuration_audio[2].path;
                            }
                        }
                    }
                    else if (m.Move.state >= (uint)ActionState.Hurt)
                    {
                        PlayAnimation(e, ActionState.Hurt);
                    }
                    else if (null == m.LastMove || (m.LastMove.x == m.Move.x && m.LastMove.y == m.Move.y))
                    {
                        PlayAnimation(e, ActionState.Idle);
                    }
                    else
                    {
                        PlayAnimation(e, ActionState.Run);
                    }
                }

                if (ActionState.Unknown != this.nextState)
                {
                    this.duration -= deltaTime;
                    if (this.duration <= 0)
                    {
                        PlayAnimation(e, this.nextState);
                    }
                }
            }
        }
Exemple #8
0
        public override void OnUpdate(ITraitContainer container, float deltaTime)
        {
            if (null != this.filter.Target)
            {
                var e = this.filter.Target;

                var m = e.GetTrait <Movement>();
                var r = e.GetTrait <Renderer>();

                var transform = r.View.transform;
                transform.rotation = Quaternion.Euler(0, m.Move.angle + 90, 0);
            }
        }
        private Animator GetAnimator(ITraitContainer e)
        {
            if (null == this.animator)
            {
                var r = e.GetTrait <Renderer>();
                if (null != r.View)
                {
                    this.animator = r.View.GetComponent <Animator>();
                }
            }

            return(this.animator);
        }
        public override void OnUpdate(ITraitContainer container, float deltaTime)
        {
            if (null != this.filter.Target)
            {
                var e = this.filter.Target;

                var item = e.GetTrait <Item>();
                var r    = e.GetTrait <Renderer>();
                r.View.transform.position = new Vector3(item.Data.x * Server2Client, 0, item.Data.y * Server2Client);

                e.AddTag(Item.Inited);
            }
        }
        public override void OnUpdate(ITraitContainer container, float deltaTime)
        {
            if (null != this.filter.Target)
            {
                var e = this.filter.Target;

                var m = e.GetTrait <Movement>();
                var r = e.GetTrait <Renderer>();
                this.offset.x = m.Move.x * Server2Client - r.View.transform.position.x;
                this.offset.y = m.Move.y * Server2Client - r.View.transform.position.z;
                var deltaX   = this.offset.x * deltaTime * MoveSpeed;
                var deltaZ   = this.offset.y * deltaTime * MoveSpeed;
                var position = r.View.transform.position;
                r.View.transform.position = new Vector3(position.x + deltaX, 0, position.z + deltaZ);
            }
        }
        public override void OnInit(ITraitContainer container)
        {
            var initMatcher = container.NewMatcher();

            initMatcher.HasTrait <Effect>()
            .ExceptTag(Effect.Inited)
            .HasTrait <Renderer>()
            .HasTag(Renderer.Loaded);
            this.initFilter = container.GetFilter(this, TupleType.Job, initMatcher);

            var updateMatcher = container.NewMatcher();

            updateMatcher.HasTrait <Effect>()
            .HasTag(Effect.Inited);
            this.updateFilter = container.GetFilter(this, TupleType.Job, updateMatcher);
        }
 public override void OnInit(ITraitContainer container)
 {
     Game.On(MessageDef.JoyStickDragging, OnJoyStickDragging);
     Game.On(MessageDef.JoyStickStop, OnJoyStickStop);
     Game.On(MessageDef.Attack, OnAttack);
 }
 public override void OnInit(ITraitContainer container)
 {
     this.owner = container;
 }