Esempio n. 1
0
    SKILL_RESULT_CODE CastOnCasterSingle(KCharacter pDisplayCaster, KCharacter pLogicCaster)
    {
        SKILL_RESULT_CODE nResult = SKILL_RESULT_CODE.srcFailed;
        int nRetCode = 0;

        KSKILL_BULLET pBullet = new KSKILL_BULLET();
        KTarget       pTarget = new KTarget();

        nRetCode = pTarget.SetTarget(pDisplayCaster);
        if (nRetCode == 0)
        {
            goto Exit0;
        }

        nRetCode = SetupBullet(pBullet, pLogicCaster, ref pTarget);
        if (nRetCode == 0)
        {
            goto Exit0;
        }

        if (pBullet.nEndFrame > FirstFightMgr.Instance().m_nGameLoop)
        {
            pLogicCaster.AddBullet(pBullet);
        }
        else
        {
            ApplyOnSingle(pBullet);
        }


        nResult = SKILL_RESULT_CODE.srcSuccess;
Exit0:
        return(nResult);
    }
Esempio n. 2
0
    SKILL_RESULT_CODE CastOnCasterArea(KCharacter pDisplayCaster, KCharacter pLogicCaster)
    {
        SKILL_RESULT_CODE nResult = SKILL_RESULT_CODE.srcFailed;
        int           nRetCode    = 0;
        KTarget       pTarget     = new KTarget();
        KSKILL_BULLET pBullet     = new KSKILL_BULLET();
        float         fX          = 0f;
        float         fZ          = 0f;

        nRetCode = pTarget.SetTarget(pDisplayCaster);
        if (nRetCode == 0)
        {
            goto Exit0;
        }

        nRetCode = SetupBullet(pBullet, pLogicCaster, ref pTarget);
        if (nRetCode == 0)
        {
            goto Exit0;
        }

        if (pBullet.nEndFrame > FirstFightMgr.Instance().m_nGameLoop)
        {
            pLogicCaster.AddBullet(pBullet);
        }
        else
        {
            pDisplayCaster.GetAbsoluteCoordinate(ref fX, ref fZ);
            nRetCode = (int)ApplyOnArea(pBullet, fX, fZ);
        }

        nResult = SKILL_RESULT_CODE.srcSuccess;
Exit0:
        return(nResult);
    }
Esempio n. 3
0
    //以目标为中心的圆形区域
    SKILL_RESULT_CODE CastOnTargetArea(KCharacter pDisplayCaster, KCharacter pLogicCaster, ref KTarget rTarget)
    {
        SKILL_RESULT_CODE nResult = SKILL_RESULT_CODE.srcFailed;
        int           nRetCode    = 0;
        KSKILL_BULLET pBullet     = new KSKILL_BULLET();

        float fTargetX = 0f;
        float fTargetZ = 0f;

        nRetCode = SetupBullet(pBullet, pLogicCaster, ref rTarget);
        if (nRetCode == 0)
        {
            goto Exit0;
        }


        if (pBullet.nEndFrame > FirstFightMgr.Instance().m_nGameLoop)
        {
            pLogicCaster.AddBullet(pBullet);
        }
        else
        {
            nRetCode = rTarget.GetTarget(ref fTargetX, ref fTargetZ);
            if (nRetCode == 0)
            {
                goto Exit0;
            }

            nRetCode = (int)ApplyOnSingle(pBullet);
            if (nRetCode != (int)SKILL_RESULT_CODE.srcSuccess)
            {
                return((SKILL_RESULT_CODE)nRetCode);
            }

            nRetCode = (int)ApplyOnArea(pBullet, fTargetX, fTargetZ);
            if (nRetCode != (int)SKILL_RESULT_CODE.srcSuccess)
            {
                return((SKILL_RESULT_CODE)nRetCode);
            }
        }


        nResult = SKILL_RESULT_CODE.srcSuccess;
Exit0:
        return(nResult);
    }