Esempio n. 1
0
 public void SetOrigin(Transform t, LayerMask mask, IEffector targeter, Unit u = null)
 {
     unitSpendingUtility = u;
     targeterEntity      = targeter;
     targetableMask      = mask;
     origin = t;
 }
        void OnTriggerEnter(Collider other)
        {
            Player p = gameObject.GetComponentInParent <Player>();


            IEffector effector = other.gameObject.GetComponent <IEffector>();

            if (effector != null)
            {
                effector.ApplyEffect(p);
            }
            else
            {
                Debug.Log("ho incontrato un non ieffector");
            }


            // se collide con il bonus, il player aumenta di dimensione e il bonus scompare
//			Bonus b = other.gameObject.GetComponent<Bonus> ();
//				if (b != null && jumpPoint==null) {
//					transform.localScale += new Vector3 (0.3f, 0.3f, 0.3f);
//
//							Destroy (b.gameObject);
//						}
        }
Esempio n. 3
0
 protected void Initialize()
 {
     rm                 = new DefaultRoleManager(10);
     eft                = new DefaultEffector();
     watcher            = null;
     _enabled           = true;
     autoSave           = true;
     autoBuildRoleLinks = true;
 }
Esempio n. 4
0
 public void Close()
 {
     unitSpendingUtility = null;
     targeterEntity      = null;
     tileOffset          = 0f;
     targetableMask      = 0;
     origin          = null;
     target          = Vector3.zero;
     lr.numPositions = 0;
 }
Esempio n. 5
0
        protected void Initialize()
        {
            _effector = new DefaultEffector();
            watcher   = null;

            _enabled           = true;
            autoSave           = true;
            autoBuildRoleLinks = true;
            autoNotifyWatcher  = true;
        }
Esempio n. 6
0
 public void Play(IEffector <AbstractPerson> ditacher, IEffector <AbstractPerson> receiver)
 {
     foreach (var VARIABLE in EffectUnitInfos)
     {
         if (VARIABLE != null)
         {
             VARIABLE.Play(ditacher, receiver);
         }
     }
 }
Esempio n. 7
0
 /// <summary>
 /// Add an effector to this object.
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="effector"></param>
 public void AddEffector(IEffector effector)
 {
     if (effector.Anonymous)
     {
         AnonymousEffectors.Add(effector);
     }
     else
     {
         NamedEffectors.Add(effector.EffectorName, effector);
     }
     effector.InternalInitialize(this);
 }
        /// <summary>
        /// 播放受击特效
        /// </summary>
        /// <param name="ditascher"></param>
        public void PlayAcceptEffects(IEffector <AbstractPerson> ditascher)
        {
            if (ditascher != null && ditascher.HitEffects != null)
            {
                ditascher.HitEffects.Play(ditascher, this);
            }

            if (AcceptEffects != null)
            {
                AcceptEffects.Play(null, ditascher);
            }
        }
 /// <summary>
 /// Add an effector to this object.
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="effector"></param>
 public void AddEffector(IEffector effector)
 {
     if (effector.Anonymous)
     {
         AnonymousEffectors.Add(effector);
     }
     else
     {
         NamedEffectors.Add(effector.EffectorName, effector);
     }
     effector.InternalInitialize(this);
 }
Esempio n. 10
0
 public bool AddEffector(IEffector effector)
 {
     if (null != this.SubEffectors.Find(i => i.InnerId == effector.InnerId))
     {
         return(true);
     }
     this.SubEffectors.Add(effector);
     if (effector.RedoFlag || effector.UndoFlag)
     {
         this.RedoEffectors.Add(effector);
         this.CheckRedoFlag();
     }
     return(true);
 }
Esempio n. 11
0
    public void Start()
    {
        // Add the event managers.
        midiEventer = gameObject.AddComponent<MidiPianoEvents>() as MidiPianoEvents;
        keyboardEventer = gameObject.AddComponent<KeyboardPianoEvents>() as KeyboardPianoEvents;

        // Make the input manager the correct type.
        setInputType();

        // Setup Unity interface container workarounds.
        keyEffector = keyEffectContainer.Result;
        intervalEffector = intervalEffectContainer.Result;

        debug();
    }
Esempio n. 12
0
        public void Load(IRawSkill rawSkill)
        {
            this._rawSkill = rawSkill;
            this._skillId  = this._owner.InnerId * 100000 + rawSkill.RawSkillId;
            IEffector effector = null;

            this._skillFlag = EnumSkillFlag.None;
            if (null != rawSkill.MainEffector)
            {
                effector          = rawSkill.MainEffector.Clone(this);
                this.MainEffector = effector;
                this._skillFlag  |= rawSkill.MainEffector.SkillFlag;
                if (effector.RedoFlag || effector.UndoFlag)
                {
                    this.RedoEffectors.Add(effector);
                }
            }
            if (null != rawSkill.SubEffectors && rawSkill.SubEffectors.Count > 0)
            {
                foreach (var item in rawSkill.SubEffectors)
                {
                    effector = item.Clone(this);
                    this.SubEffectors.Add(effector);
                    this._skillFlag |= item.SkillFlag;
                    if (effector.RedoFlag || effector.UndoFlag)
                    {
                        this.RedoEffectors.Add(effector);
                    }
                }
            }
            if (this.Owner is ISkillManager)
            {
                if (rawSkill.CastFlag)
                {
                    this._casters = ((ISkillManager)this.Owner).SkillPlayerList;
                }
                else
                {
                    this._casters = null;
                }
            }
            else if (this.Owner is ISkillPlayer)
            {
                this._casters = new List <ISkillPlayer>();
                this._casters.Add((ISkillPlayer)this.Owner);
            }
            this.CheckRedoFlag();
        }
Esempio n. 13
0
    /// <summary>
    /// 反序列化
    /// </summary>
    /// <param name="data">json数据</param>
    public void deserialize(Newtonsoft.Json.Linq.JObject data)
    {
        emitter.deserialize(data["emitter"] as Newtonsoft.Json.Linq.JObject);

        Effectors = new List <IEffector>();

        foreach (Newtonsoft.Json.Linq.JObject effect in data["effectors"])
        {
            string classType = (string)effect["type"];
            classType = classType.Substring(classType.IndexOf("::") + 2);
            //UnityEngine.Debug.LogFormat("classType{0}", classType);
            System.Type ct = System.Type.GetType(classType, true);
            IEffector   o  = (IEffector)Activator.CreateInstance(ct);
            o.deserialize(effect);
            Effectors.Add(o);
        }

        renderParam.ParticleNumber  = (int)data["number"];
        emitter.UniformScale        = (bool)data["uniformScale"];
        renderParam.BlendMode       = (int)data["blendMode"];
        renderParam.DepthWrite      = (bool)data["depthWrite"];
        renderParam.Loop            = (bool)data["loop"];
        renderParam.RotateAxis      = (int)data["rotateAxis"];
        renderParam.BillboardType   = (int)data["orient"];
        renderParam.IsWorldParticle = (bool)data["isWorldParticle"];
        renderParam.RotateSurface   = data["rotateSurface"] == null ? false : (bool)data["rotateSurface"];
        renderParam.RandomOnBorn    = (bool)data["randomOnBorn"];
        renderParam.Decal           = (bool)data["decal"];
        renderParam.Prewarm         = data["prewarm"] == null ? 0 : (float)data["prewarm"];
        renderParam.InfiniteBounds  = (bool)data["infiniteBounds"];
        if (!renderParam.InfiniteBounds)
        {
            var bound = StringUtil.SplitString <float>((string)data["boundMin"], new char[] { ',' });
            renderParam.BoundMin = new Vector3(bound[0] * Uf3dLoader.vertexScale, bound[1] * Uf3dLoader.vertexScale, bound[2] * Uf3dLoader.vertexScale);
            bound = StringUtil.SplitString <float>((string)data["boundMax"], new char[] { ',' });
            renderParam.BoundMax = new Vector3(bound[0] * Uf3dLoader.vertexScale, bound[1] * Uf3dLoader.vertexScale, bound[2] * Uf3dLoader.vertexScale);
        }
    }
Esempio n. 14
0
        public void SetEffect(EffectType type)
        {
            if (currentEffectType == type)
            {
                return;
            }
            if (currentEffector != null)
            {
                currentEffector.Deinit();
            }
            currentEffectType = type;
            var index = (int)type;

            if (index == 0)
            {
                currentEffector = null;
            }
            else
            {
                currentEffector = effectors[index - 1].GetComponent <IEffector>();
                currentEffector.Init();
            }
        }
Esempio n. 15
0
 /// <summary>
 /// Sets the current effector.
 /// </summary>
 /// <param name="effector"></param>
 public void SetEffector(IEffector effector)
 {
     _effector = effector;
 }
Esempio n. 16
0
        public void Play(IEffector <AbstractPerson> ditascher, IEffector <AbstractPerson> receiver)
        {
            var dp = ditascher?.EffectPlayer as IHighFivePerson;
            var rp = receiver?.EffectPlayer as IHighFivePerson;

            switch (type)
            {
                #region Animation

            case EffectType.Animation:
                Assert.IsTrue(dp != null);

                var pos = new Vector3(dp.Dir * localPosition.x, localPosition.y, localPosition.z);

                var aniObj = GetPrefabGo(animationPrefab, dp.gameObject, pos, localScale);
//                    Debug.Log("Animator");

                var ani = aniObj.GetComponent <Animator>();

                if (causeDamage)
                {
                    var trigger = aniObj.GetComponent <TriggerInputer>();
                    if (trigger == null)
                    {
                        trigger = aniObj.AddComponent <TriggerInputer>();
                    }
                    trigger.Clear();
                    trigger.onTriggerEnterEvent += (col) =>
                    {
                        rp = col.gameObject.GetPersonInfo() as IHighFivePerson;
                        if (rp != null)
                        {
                            dp.TryAttackSimple(rp);
                        }
                    };
                }


                ani.Play(clip.name);
                MainLoop.Instance.ExecuteLater(
                    () =>
                {
                    if (aniObj)
                    {
//                                Debug.Log("回收Animation");
                        GetPoor(animationPrefab).ReleaseObj(aniObj);
                    }
                }, clip.length);

                break;

                #endregion


                #region Partical

            case EffectType.Partical:
                var psObj = GetPrefabGo(particalPrefab, rp.gameObject);
                var ps    = psObj.GetComponent <ParticleSystem>();
//                    Debug.Log("Partical");
                ps.Stop();
                ps.Play();
                MainLoop.Instance.ExecuteUntilTrue(() => ps == null || ps.isStopped,
                                                   () =>
                {
                    if (psObj)
                    {
//                                Debug.Log("回收Partical");
                        GetPoor(particalPrefab).ReleaseObj(psObj);
                    }
                });
                break;

                #endregion

                #region Damage

            case EffectType.Damage:

                //todo: 这里显示伤害数字才对
//                    dp?.TryAttackSimple(rp);
                new DamageNumberUI(dp.Attack, 0, 1, Color.red, rp.transform, dp.Dir);
                break;

                #endregion

                #region Audio

            case EffectType.Audio:
                switch (EffectInfoAsset.effectorType)
                {
                case EffectInfoAsset.EffectorType.Ditascher:
                    Assert.IsTrue(dp != null);
                    AudioMgr.Instance.PlayEffect(this.audioName.StringValue, dp.position);
                    break;

                case EffectInfoAsset.EffectorType.Receiver:
                    Assert.IsTrue(rp != null);
                    AudioMgr.Instance.PlayEffect(this.audioName.StringValue, rp.position);
                    break;
                }

                break;

                #endregion

                #region Shining

            case EffectType.Shining:
                Assert.IsTrue(rp != null);
                var sr    = rp.gameObject.GetComponent <SpriteRenderer>();
                var times = rp is IHighFiveCharacter ? rp.DefaultConstTime / shiningDuring : 0.8f;
                MainLoop.Instance.ExecuteEverySeconds(
                    render =>
                {
                    if (sr == null)
                    {
                        return;
                    }
                    sr.color = sr.color == shiningColor ? Color.white : shiningColor;
                }, times, shiningDuring, sr,
                    render =>
                {
                    if (sr == null)
                    {
                        return;
                    }
                    sr.color = Color.white;
                });
                break;

                #endregion

                #region Hitback

            case EffectType.HitBack:

                Assert.IsTrue(rp != null && dp != null);

                if (!rp.IgnoreHitback)
                {
                    var trans = rp.gameObject.transform;
//                        trans.position += new Vector3(dp.Dir * Mathf.Abs(dp.HitBackSpeed.x), dp.HitBackSpeed.y, 0);
                    var hitBack = new Vector2(dp.Dir * Mathf.Abs(dp.HitBackSpeed.x), dp.HitBackSpeed.y);
                    //TODO:需要更好接口
                    rp.Controller.GetComponent <Actor>().ChangeVelBasedOnHitDir(hitBack, 15);
                }

                break;

                #endregion
            }
        }
Esempio n. 17
0
 /// <summary>
 ///  sets the current effector.
 /// </summary>
 /// <param name="eft"></param>
 public void SetEffector(IEffector eft)
 {
     this.eft = eft;
 }
Esempio n. 18
0
 public WorkflowHost(IEffector grain, Func <WorkflowIdentity, Activity> workflowDefinitionFactory, WorkflowIdentity workflowDefinitionIdentity)
 {
     this.grain = grain;
     this.workflowDefinitionFactory  = workflowDefinitionFactory;
     this.workflowDefinitionIdentity = workflowDefinitionIdentity;
 }