Example #1
0
    public void PlayClip(string clipName, DefAction OnFinish = null, ClipFinishCondtion condtion = null)
    {
        GameTools.Log("PlayClip : " + clipName);
        ClipInfo clip = GetClipInfoByName(clipName);

        GameTools.Log("PlayClip Flag : " + clip.ConFlag);

        string clipFlag = clip.ConFlag;

        animator.SetBool(clipFlag, true);
        curClipName = clip.Name;
        WaitForSec(clip.Duration, () => {
            if (OnFinish != null)
            {
                if (condtion != null)
                {
                    if (condtion())
                    {
                        OnFinish();
                    }
                }
                else
                {
                    OnFinish();
                }
            }
        });
    }
Example #2
0
 public override void Release(DefAction OnSuccess = null, DefAction OnFinish = null)
 {
     targettState = curState = BaseSkillState.Attack01;
     //播放角色动作
     base.Release(OnSuccess, () => {
         OnReleaseFinish(OnFinish);
     });
     //控制猪脚瞬间移动
     WaitForSec(delayTime, () => {
         FastMove();
     });
     AudioManager.Instance.PlayAudio(AudioManager.Man_Comm_Attack01);
     //控制特效显示
     PlayEffect(effectGOFirst);
     //计算伤害值
     WaitForSec(DelayCalAttack01DamageTime, () =>
     {
         AttackItem attack = new AttackItem();
         attack.Damage     = Damage;
         attack.Type       = AttackType.Normal;
         attack.Stage      = AttackStage.First;
         attack.AttackDir  = AttackDir.Forward;
         PlayerFightCtrl.Instance.CalculateDamage(attack);
     });
 }
Example #3
0
    public override void Release(DefAction OnSuccess = null, DefAction OnFinish = null)
    {
        base.Release(OnSuccess, OnFinish);
        WaitForSec(delayTime01, () => {
            LoadEffect(effect01);
        });
        WaitForSec(damageTime01 / 2, () =>
        {
            AttackItem attack = GetSkill03AttackItem();
            attack.Damage     = Damage;
            attack.Stage      = AttackStage.First;
            CalDamage(attack);
        });
        WaitForSec(delayTime02, () => {
            LoadEffect(effect02);
        });
        WaitForSec(damageTime02 / 2, () =>
        {
            AttackItem attack = GetSkill03AttackItem();
            attack.Damage     = Damage * 2;

            attack.Stage = AttackStage.Second;
            CalDamage(attack);
        });
        WaitForSec(delayTime03, () => {
            LoadEffect(effect03);
        });
        WaitForSec(damageTime03 / 2, () =>
        {
            AttackItem attack = GetSkill03AttackItem();
            attack.Damage     = Damage * 3;
            attack.Stage      = AttackStage.Third;
            CalDamage(attack);
        });
    }
Example #4
0
    public void Connect(ServerEntity server, DefAction callBack)
    {
        this.connectCallBack = callBack;
        StateObj state = new StateObj();

        state.OnConnect = OnConnect;
        clientSocket.ConnectServer(server.ip, server.port, state);
    }
Example #5
0
    private IEnumerator _WaitForSec(float sec, DefAction action)
    {
        yield return(new WaitForSeconds(sec));

        if (action != null)
        {
            action();
        }
    }
Example #6
0
    public static Delegate DefAction(LuaFunction func)
    {
        DefAction d = () =>
        {
            func.Call();
        };

        return(d);
    }
    /* Initialization of scripts, begin in player offense mode. */
    private void Start()
    {
        player       = GameObject.Find("Person");
        defScript    = Camera.main.GetComponent <Defense>();
        defActScript = player.GetComponent <DefAction>();
        attackScript = Camera.main.GetComponent <Attack>();

        Instantiate(enemyPrefab, new Vector3(5, 0, 4), Quaternion.Euler(new Vector3(-90, 0, -145)));

        defScript.enabled    = false ^ DefTestMode;
        defActScript.enabled = false ^ DefTestMode;
        attackScript.enabled = true ^ DefTestMode;
    }
Example #8
0
 public void ShowLoadinge(DefAction OnLoadingSuccess = null)
 {
     if (OnLoadingSuccess != null)
     {
         this.OnLoadingSuccess = OnLoadingSuccess;
     }
     isLoading      = false;
     this.operation = null;
     curProgress    = 0;
     slider.value   = 0;
     isLoading      = true;
     gameObject.SetActive(true);
 }
Example #9
0
 public void ResetState()
 {
     isMoving   = false;
     isAbleMove = false;
     curState   = MoveState.Idle;
     velocity   = Vector3.zero;
     if (navMeshAgent != null)
     {
         navMeshAgent.enabled = false;
     }
     target         = Vector3.zero;
     this.OnArrive  = null;
     this.Condition = null;
 }
Example #10
0
 public void ShowLoadinge(AsyncOperation operation, DefAction OnLoadingSuccess = null, string desc = "")
 {
     if (OnLoadingSuccess != null)
     {
         this.OnLoadingSuccess = OnLoadingSuccess;
     }
     slider.value = 0;
     isLoading    = true;
     gameObject.SetActive(true);
     if (operation != null)
     {
         this.operation = operation;
     }
     LDesc.text = desc;
 }
Example #11
0
    public virtual void Release(DefAction OnSuccess = null, DefAction OnFinish = null)
    {
        if (!isInit)
        {
            return;
        }
        string skillClipName = "Skill_" + skillInfo.Pos;

        GameTools.Log("Start ReleaseSkill");
        animMgr.PlayClip(skillClipName, OnFinish, null);
        if (OnSuccess != null)
        {
            OnSuccess();
        }
    }
Example #12
0
 public void Update()
 {
     if (eventQueue.Count > 0)
     {
         for (int i = 0; i < eventQueue.Count; i++)
         {
             HandleMsg(eventQueue[i]);
         }
     }
     eventQueue.Clear();
     if (connectCallBack != null && isConnect)
     {
         connectCallBack();
         connectCallBack = null;
     }
 }
Example #13
0
    public void MoveToTarget(Vector3 target, DefAction OnArrive, ArriveCondition condition = null)
    {
        if (navMeshAgent == null)
        {
            GameTools.LogError("Navigation in null!!!");
            return;
        }

        navMeshAgent.enabled     = true;
        isAbleMove               = true;
        this.target              = target;
        this.OnArrive            = OnArrive;
        this.Condition           = condition;
        navMeshAgent.destination = target;
        curState           = MoveState.MovingTarget;
        navMeshAgent.speed = speed;
    }
Example #14
0
 private void ReleaseAttack02(DefAction OnFinish)
 {
     AudioManager.Instance.PlayAudio(AudioManager.Man_Comm_Attack02);
     GameTools.LogError("ReleaseAttack02222");
     animMgr.PlayClip(attack02Clip, () =>
     {
         OnReleaseFinish(OnFinish);
     });
     WaitForSec(DelayCalAttack02DamageTime, () =>
     {
         AttackItem attack = new AttackItem();
         attack.Damage     = Damage * 2;
         attack.Type       = AttackType.Normal;
         attack.Stage      = AttackStage.Second;
         attack.AttackDir  = AttackDir.Forward;
         PlayerFightCtrl.Instance.CalculateDamage(attack);
     });
 }
Example #15
0
    public virtual void GetAttackDamage(AttackItem attack, DefAction OnFinish = null)
    {
        ShowBloodAndSound();
        switch (attack.Stage)
        {
        case AttackStage.First:
            GetAttack01Damage(attack, OnFinish);
            break;

        case AttackStage.Second:
            GetAttack02Damage(attack, OnFinish);
            break;

        case AttackStage.Third:
            GetAttack03Damage(attack, OnFinish);
            break;
        }
    }
Example #16
0
 public void TweenPos(Vector3 targetPos, float duration, bool worldSpace, DefAction OnFinish = null)
 {
     //TweenPosition tp = GetComponent<TweenPosition>();
     //if (tp != null)
     //{
     //    tp.worldSpace = worldSpace;
     //    tp.from = transform.position;
     //    tp.to = targetPos;
     //    tp.SetOnFinished(() =>
     //    {
     //        if (OnFinish != null) OnFinish();
     //        tp.onFinished.Clear();
     //    });
     //    tp.PlayForward();
     //}
     //else
     //{
     //    tp = TweenPosition.Begin(gameObject, duration, targetPos, worldSpace);
     //    tp.SetOnFinished(() =>
     //    {
     //        //if (gameObject.GetComponent<TweenPosition>() != null) UnityEngine.Object.Destroy(gameObject.GetComponent<TweenPosition>());
     //        if (OnFinish != null) OnFinish();
     //        tp.onFinished.Clear();
     //    });
     //}
     if (Enclosure.Instance.isInside(targetPos))
     {
         TweenPosition tweenPos = TweenPosition.Begin(this.gameObject, duration, targetPos, true);
         tweenPos.AddOnFinished(
             () =>
         {
             if (OnFinish != null)
             {
                 OnFinish();
             }
             if (tweenPos != null)
             {
                 Object.Destroy(tweenPos);
             }
         }
             );
     }
 }
Example #17
0
    public override void Release(DefAction OnSuccess = null, DefAction OnFinish = null)
    {
        base.Release(OnSuccess, OnFinish);
        AudioManager.Instance.PlayAudio(AudioManager.Skill_Two);

        WaitForSec(effect01Time, () => { LoadEffect(effect01); });
        WaitForSec(effect02Time, () => { LoadEffect(effect02); });
        WaitForSec(effect03Time, () => { LoadEffect(effect03); });
        WaitForSec(effect04Time, () => { LoadEffect(effect04); });

        WaitForSec(attackTime, () => {
            AttackItem attack = new AttackItem();
            attack.Damage     = Damage;
            attack.Type       = AttackType.Skill02;
            attack.AttackDir  = AttackDir.Around;
            attack.Range      = 5;
            PlayerFightCtrl.Instance.CalculateDamage(attack);
        });
    }
Example #18
0
    public void ReleaseSkill(int skillID, DefAction OnSuccess = null, DefAction OnFinish = null, DefAction OnFail = null)
    {
        GameTools.Log("ReleaseSkill");
        SkillItem skill = GetSkillItemBySkillID(skillID);

        if (skill == null || !isAbleReleaseSkill())
        {
            if (OnFail != null)
            {
                OnFail();
            }
            return;
        }
        SkillBase skillCtrl = GetSkillCtrlBySkillID(skillID);

        if (skillCtrl != null)
        {
            skillCtrl.Release(OnSuccess, OnFinish);
        }
    }
Example #19
0
    public override void Release(DefAction OnSuccess = null, DefAction OnFinish = null)
    {
        base.Release(OnSuccess, OnFinish);
        //播放声音
        AudioManager.Instance.PlayAudio(AudioManager.SKill_One);

        //播放特效
        WaitForSec(Effect01Time, () => { PlayEffect(effect01); });
        WaitForSec(Effect02Time, () => { PlayEffect(effect02); });
        WaitForSec(Effect03Time, () => { PlayEffect(effect03); });

        //计算伤害
        WaitForSec(CalDamageTime, () => {
            AttackItem attack = new AttackItem();
            attack.Damage     = Damage;
            attack.Type       = AttackType.Skill01;
            attack.AttackDir  = AttackDir.Around;
            attack.Range      = 5;
            PlayerFightCtrl.Instance.CalculateDamage(attack);
        });
    }
Example #20
0
    public void OnReleaseFinish(DefAction OnFinish)
    {
        if (targettState == curState)
        {
            ResetState();
            OnFinish();
            return;
        }
        switch (curState)
        {
        case BaseSkillState.Idle:
            ResetState();
            break;

        case BaseSkillState.Attack01:
            if (targettState > curState)
            {
                ReleaseAttack02(OnFinish);
                curState = BaseSkillState.Attack02;
            }
            break;

        case BaseSkillState.Attack02:
            if (targettState > curState)
            {
                ReleaseAttack03(OnFinish);
                curState = BaseSkillState.Attack03;
            }
            break;

        default:
            ResetState();
            OnFinish();
            break;
        }
    }
Example #21
0
    static int Connect(IntPtr L)
    {
        LuaScriptMgr.CheckArgsCount(L, 3);
        NetworkMgr   obj       = (NetworkMgr)LuaScriptMgr.GetUnityObjectSelf(L, 1, "NetworkMgr");
        ServerEntity arg0      = (ServerEntity)LuaScriptMgr.GetNetObject(L, 2, typeof(ServerEntity));
        DefAction    arg1      = null;
        LuaTypes     funcType3 = LuaDLL.lua_type(L, 3);

        if (funcType3 != LuaTypes.LUA_TFUNCTION)
        {
            arg1 = (DefAction)LuaScriptMgr.GetNetObject(L, 3, typeof(DefAction));
        }
        else
        {
            LuaFunction func = LuaScriptMgr.GetLuaFunction(L, 3);
            arg1 = () =>
            {
                func.Call();
            };
        }

        obj.Connect(arg0, arg1);
        return(0);
    }
Example #22
0
 protected virtual void GetAttack01Damage(AttackItem attack, DefAction OnFinish = null)
 {
     //Move Posotion
     AttackMoveBack(attack.JumpHeight, attack.JumpHeight);
 }
Example #23
0
 public void WaitForSec(float sec, DefAction action)
 {
     StartCoroutine(_WaitForSec(sec, action));
 }
Example #24
0
 protected virtual void GetAttack03Damage(AttackItem attack, DefAction OnFinish = null)
 {
 }
Example #25
0
 public virtual void GetDamage(AttackItem attack, DefAction OnFinish = null)
 {
     // GameTools.LogError(attack.Type + "====> "+attack);
     handleDict[attack.Type](attack, OnFinish);
     CalDamage(attack);
 }
Example #26
0
 public virtual void GetSkillDamage01(AttackItem attack, DefAction OnFinish = null)
 {
     ShowBloodAndSound();
 }
Example #27
0
 public virtual void GetSkillDamage02(AttackItem attack, DefAction OnFinish = null)
 {
     //Damage Effect
     ReleaseREffect(holyFireEffect, holyFirePos);
 }
Example #28
0
 public virtual void GetSkillDamage03(AttackItem attack, DefAction OnFinish = null)
 {
     ShowBloodAndSound();
     AttackMoveBack(attack.JumpHeight, attack.JumpHeight);
 }
Example #29
0
 public void MoveTarget(GameObject go, DefAction OnArrive, ArriveCondition condition = null)
 {
     MoveToTarget(go.transform.position, OnArrive, condition);
 }