/// <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; } }
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)); } } }
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); } } }