/// <summary>
    /// 支持使用图片显示战斗信息
    /// </summary>
    /// <param name="moveType"></param>
    /// <param name="dmgType"></param>
    /// <param name="dmgText"></param>
    internal void ResetData(ENUM_DMG_MOVE_TYPE moveType, ENUM_DAMAGE_TYPE dmgType, string dmgText)
    {
        Reset();

        uiBoard.SetFightInfo(moveType, dmgType, dmgText);
        uiBoard.Show(true);
    }
    internal void AddNewBeHit(bool bDouble, string dmgText, float x, float y, ENUM_DAMAGE_TYPE dmgType, ENUM_DMG_MOVE_TYPE moveType)
    {
        if (allBoards.Count + freeBoards.Count > MaxHitCount)
        {
            return;
        }

        BeHitBoard pBeHit = GetFreeBoard();

        if (pBeHit != null)
        {
            STRUCT_BEHIT_DATA PreDefine = DefineBehits[(int)moveType];
            pBeHit.m_bDoubleHit    = bDouble;
            pBeHit.m_ColorType     = PreDefine.m_ColorType;
            pBeHit.m_BackColorType = PreDefine.m_BackColorType;
            //STRUCT_BEHIT_DATA* pItem	= &PreDefine;
            pBeHit.m_nXSpeed        = UnityEngine.Random.Range(-PreDefine.m_nXSpeed, PreDefine.m_nXSpeed);
            pBeHit.m_nYSpeed        = PreDefine.m_nYSpeed + UnityEngine.Random.Range(3, 10); // Y象素级移动速度
            pBeHit.m_nXAcceleration = PreDefine.m_nXAcceleration;
            pBeHit.m_nYAcceleration = PreDefine.m_nYAcceleration;                            // 两个方向的加速度
            pBeHit.m_nMaxLife       = PreDefine.m_nMaxLife;
            pBeHit.m_bAlphaMode     = PreDefine.m_bAlphaMode;
            pBeHit.m_nMoveMode      = PreDefine.m_nMoveMode;
            pBeHit.m_nUseTempPos    = PreDefine.m_nUseTempPos;
            pBeHit.m_nStartX        = x + PreDefine.m_fXPos;
            pBeHit.m_nStartY        = y + PreDefine.m_fYPos;
            pBeHit.m_nMoveType      = moveType;

            if (moveType == ENUM_DMG_MOVE_TYPE.MOVE_SCENE_NAME && dmgType == ENUM_DAMAGE_TYPE.DAMAGE_INVALID)
            {
                pBeHit.ResetData(dmgText);
            }
            else
            {
                pBeHit.ResetData(moveType, dmgType, dmgText);
            }

            pBeHit.Update();

            allBoards.Add(pBeHit);

            pBeHit.InUse = true;
        }
    }
Example #3
0
    public void SetFightInfo(ENUM_DMG_MOVE_TYPE moveType, ENUM_DAMAGE_TYPE dmgType, string dmgText)
    {
        if (dmgType == ENUM_DAMAGE_TYPE.DAMAGE_NORMAL || dmgType == ENUM_DAMAGE_TYPE.DAMAGE_CRITICAL)
        {
            string exName = "hui-";
            switch (moveType)
            {
            case ENUM_DMG_MOVE_TYPE.MOVE_STATUS:
                break;

            case ENUM_DMG_MOVE_TYPE.MOVE_DAMAGE_OTHER:
                exName = "hui-";
                break;

            case ENUM_DMG_MOVE_TYPE.MOVE_DAMAGE_ME:
                exName = "hong-";
                break;

            case ENUM_DMG_MOVE_TYPE.MOVE_HEAL_HP:
                exName = "lv-";
                break;

            case ENUM_DMG_MOVE_TYPE.MOVE_HEAL_MP:
                exName = "zi-";
                break;

            case ENUM_DMG_MOVE_TYPE.MOVE_SCENE_NAME:
                break;

            default:
                break;
            }

            if (dmgType == ENUM_DAMAGE_TYPE.DAMAGE_CRITICAL)
            {
                UIButton win = GetNextInfoWin();
                win.SetTexture(IconManager.Instance.GetIcon("baoji"));
                exName = "huang-";
            }

            char[] nums = dmgText.ToCharArray();
            foreach (char num in nums)
            {
                UIButton win = GetNextInfoWin();
                win.SetTexture(IconManager.Instance.GetIcon(exName + num));
            }
        }
        else if (dmgType == ENUM_DAMAGE_TYPE.DAMAGE_MISS)
        {
            UIButton win = GetNextInfoWin();
            win.SetTexture(IconManager.Instance.GetIcon("weimingzhong"));
        }
        else if (dmgType == ENUM_DAMAGE_TYPE.DAMAGE_Exp)
        {
            UIButton win = GetNextInfoWin();
            win.SetTexture(IconManager.Instance.GetIcon("jingyian"));

            dmgText = "+" + dmgText;
            char[] nums = dmgText.ToCharArray();
            foreach (char num in nums)
            {
                win = GetNextInfoWin();
                win.SetTexture(IconManager.Instance.GetIcon("lan-" + num));
            }
        }
    }
Example #4
0
 internal void AddNewBeHitBoard(bool bDouble, string dmgText, float x, float y, ENUM_DAMAGE_TYPE dmgType, ENUM_DMG_MOVE_TYPE moveType)
 {
     BeHitBoardManager.Instance.AddNewBeHit(bDouble, dmgText, x, y, dmgType, moveType);
 }
    private string ChangeDamgeByRule(ENUM_DAMAGE_TYPE dmgType, int dmgNum, ENUM_DAMAGE_OPERATION dmgOperation)
    {
        if (dmgType == ENUM_DAMAGE_TYPE.DAMAGE_INVALID && dmgNum == 0)
        {
            return("");
        }

        //string showImageSet = "FR_ShowText01";
        string showImageSet = string.Empty;
        string resultText   = string.Empty;

        //添加所使用的imageset
        resultText += showImageSet;

        //添加伤害数值
        resultText += " ";

        if (dmgNum != 0)
        {
            switch (dmgType)
            {
//                 case ENUM_DAMAGE_TYPE.DAMAGE_ADD_HEALTH:
//                     resultText += "H";
//                     break;
//                 case ENUM_DAMAGE_TYPE.DAMAGE_ADD_MANA:
//                     resultText += "M";
//                     break;
            //case ENUM_DAMAGE_TYPE.DAMAGE_ADD_RAGE:
            //case ENUM_DAMAGE_TYPE.DAMAGE_SUB_RAGE:
            case ENUM_DAMAGE_TYPE.DAMAGE_CRITICAL:
                resultText += "C";
                break;

            case ENUM_DAMAGE_TYPE.DAMAGE_NORMAL:
                resultText += "N";
                break;

//                 case ENUM_DAMAGE_TYPE.DAMAGE_MYSELF:
//                     resultText += "I";
//                     break;
            case ENUM_DAMAGE_TYPE.DAMAGE_INVALID:
            default:
                return("");
                //break;
            }

            //判断调用操作符
            switch (dmgOperation)
            {
            case ENUM_DAMAGE_OPERATION.OPERATION_ADD:
                resultText += "a";
                break;

            case ENUM_DAMAGE_OPERATION.OPERATION_SUB:
                resultText += "s";
                break;

            case ENUM_DAMAGE_OPERATION.OPERATION_INVALID:
            default:
                break;
            }

            //操作符在上面显示了,所以取绝对值
            if (dmgNum < 0)
            {
                dmgNum = -dmgNum;
            }
            //else
            //{
            //    dmgNum = dmgNum;
            //}

            resultText += dmgNum.ToString();
        }
        else
        {
            //为了统一格式,没有伤害数值的时候,中间填0
            //  resultText += "0";
        }

        //添加显示文本
        resultText += " ";
        switch (dmgType)
        {
        case ENUM_DAMAGE_TYPE.DAMAGE_CRITICAL:
            resultText += "致命一击";
            break;

        case ENUM_DAMAGE_TYPE.DAMAGE_MISS:
            resultText += "未击中";
            break;

        case ENUM_DAMAGE_TYPE.DAMAGE_IMMU:
            resultText += "免疫";
            break;

        case ENUM_DAMAGE_TYPE.DAMAGE_ABSORB:
            resultText += "吸收";
            break;

        case ENUM_DAMAGE_TYPE.DAMAGE_COUNTERACT:
            resultText += "抵消";
            break;

        case ENUM_DAMAGE_TYPE.DAMAGE_TRANSFERED:
            resultText += "转移";
            break;

        case ENUM_DAMAGE_TYPE.DAMAGE_ENTER_FIGHT:
            resultText += "进入战斗";
            break;

        case ENUM_DAMAGE_TYPE.DAMAGE_LEAVE_FIGHT:
            resultText += "离开战斗";
            break;

        default:
            break;
        }

        return(resultText);
    }
    private void DisplayDamageBoard(_DAMAGE_INFO pDamageInfo)
    {
        if (pDamageInfo == null || m_Character.GetRenderInterface() == null)
        {
            return;
        }
        CObject pMySelf = CObjectManager.Instance.getPlayerMySelf();

        if (pMySelf == null)
        {
            return;
        }
        if (m_Character.GetCharacterType() == CHARACTER_TYPE.CT_MONSTER && (((CObject_PlayerNPC)m_Character).IsDisplayBoard() == false))
        {
            return;
        }

        Vector3 fvPos = m_Character.m_pInfoBoard != null?m_Character.m_pInfoBoard.GetPosition() : Vector3.zero;

        uint nCasterID   = pDamageInfo.m_nSenderID;
        uint nReceiverID = pDamageInfo.m_nTargetID;

        //bool bNeedDisplay = true;
        bool bDouble = pDamageInfo.m_bIsCriticalHit;

        // 是否暴击 [12/28/2010 ivan edit]
        ENUM_DAMAGE_TYPE isCritical = pDamageInfo.m_bIsCriticalHit ? ENUM_DAMAGE_TYPE.DAMAGE_CRITICAL : ENUM_DAMAGE_TYPE.DAMAGE_NORMAL;

        if (IsMySelf(nReceiverID))
        {
            if (0 < pDamageInfo.m_nHealthIncrement)       //治疗
            {
                UISystem.Instance.AddNewBeHitBoard(bDouble, pDamageInfo.m_nHealthIncrement.ToString(),
                                                   fvPos.x, fvPos.y, ENUM_DAMAGE_TYPE.DAMAGE_NORMAL, ENUM_DMG_MOVE_TYPE.MOVE_HEAL_HP);
            }
            if (0 > pDamageInfo.m_nHealthIncrement)       //伤害
            {
                UISystem.Instance.AddNewBeHitBoard(bDouble, pDamageInfo.m_nHealthIncrement.ToString(),
                                                   fvPos.x, fvPos.y, ENUM_DAMAGE_TYPE.DAMAGE_NORMAL, ENUM_DMG_MOVE_TYPE.MOVE_DAMAGE_ME);
            }
            if (0 < pDamageInfo.m_nManaIncrement)       //mana增加
            {
                UISystem.Instance.AddNewBeHitBoard(bDouble, pDamageInfo.m_nManaIncrement.ToString(),
                                                   fvPos.x, fvPos.y, ENUM_DAMAGE_TYPE.DAMAGE_NORMAL, ENUM_DMG_MOVE_TYPE.MOVE_HEAL_MP);
            }
        }
        else if (IsMySelf(nCasterID))
        {
            if (0 > pDamageInfo.m_nHealthIncrement)       //伤害
            {
                UISystem.Instance.AddNewBeHitBoard(bDouble, pDamageInfo.m_nHealthIncrement.ToString(),
                                                   fvPos.x, fvPos.y, isCritical, ENUM_DMG_MOVE_TYPE.MOVE_DAMAGE_OTHER);
            }
        }
        else if (IsMyPet(nCasterID))
        {
            if (0 > pDamageInfo.m_nHealthIncrement)//伤害
            {
                UISystem.Instance.AddNewBeHitBoard(bDouble, pDamageInfo.m_nHealthIncrement.ToString(),
                                                   fvPos.x, fvPos.y, isCritical, ENUM_DMG_MOVE_TYPE.MOVE_DAMAGE_OTHER);
            }
        }
        else if (IsMyPet(nReceiverID))
        {
            if (0 > pDamageInfo.m_nHealthIncrement)//伤害
            {
                UISystem.Instance.AddNewBeHitBoard(bDouble, pDamageInfo.m_nHealthIncrement.ToString(),
                                                   fvPos.x, fvPos.y, ENUM_DAMAGE_TYPE.DAMAGE_NORMAL, ENUM_DMG_MOVE_TYPE.MOVE_DAMAGE_ME);
            }
        }
    }