| | |
| | | {
|
| | | SysNotifyMgr.Instance.ShowTip("FairySiege14");
|
| | | }
|
| | | model.DeepCopyFairySiegeBatCityInfo(model.nowFairySiegeBatCityInfo, model.lastFairySiegeBatCityInfo);
|
| | | model.SendAtk(1, model.showCityId, model.nowFairySiegeBatCityInfo.GuardID);
|
| | | });
|
| | | }
|
| | |
| | | }
|
| | |
|
| | | bool isPlaying = false;//自己正在攻击
|
| | | uint startGuardID = 0;//开始攻击前的守卫ID
|
| | | ulong startHPMax = 0;//开始攻击前的最大血量
|
| | | ulong myHurtValue = 0;//自己打出的伤害
|
| | |
|
| | | private void OnUpdateFamilyGCZBatCityInfoEvent(FairySiegeBatCityInfo nowInfo)
|
| | | private void OnUpdateFamilyGCZBatCityInfoEvent()
|
| | | {
|
| | | if (nowInfo == null)
|
| | | if (model.nowFairySiegeBatCityInfo == null)
|
| | | return;
|
| | | if (isPlaying)
|
| | | return;
|
| | | //不成功的攻击
|
| | | if (model.nowFairySiegeBatCityInfo.AtkRet != 0)
|
| | | return;
|
| | | //来自自己的攻击
|
| | | if (nowInfo.AtkPlayerID == PlayerDatas.Instance.baseData.PlayerID)
|
| | | if (model.nowFairySiegeBatCityInfo.AtkPlayerID == PlayerDatas.Instance.baseData.PlayerID)
|
| | | {
|
| | | isPlaying = true;
|
| | | model.DeepCopyFairySiegeBatCityInfo(nowInfo, model.myFairySiegeBatCityInfo);
|
| | | PlayEffectSeq(model.lastFairySiegeBatCityInfo, model.myFairySiegeBatCityInfo, nowInfo);
|
| | | startGuardID = model.lastFairySiegeBatCityInfo.GuardID;
|
| | | startHPMax = model.lastFairySiegeBatCityInfo.HPMax;
|
| | | myHurtValue = model.nowFairySiegeBatCityInfo.HurtValue;
|
| | | DebugEx.Log($"playerId{PlayerDatas.Instance.baseData.PlayerID} startGuardID {startGuardID} startHPMax {startHPMax} myHurtValue {myHurtValue}");
|
| | | PlayEffectSeq(startGuardID, startHPMax, myHurtValue);
|
| | | }
|
| | | else
|
| | | {
|
| | | SysNotifyMgr.Instance.ShowTip(nowInfo.GuardID <= 0 ? "FairySiege15" : "FairySiege16");
|
| | | model.DeepCopyFairySiegeBatCityInfo(nowInfo, model.lastFairySiegeBatCityInfo);
|
| | | UpdateEnemyInfo(nowInfo.GuardID, true);
|
| | | UpdateEnemyHP(nowInfo.HP, nowInfo.HPMax);
|
| | | SysNotifyMgr.Instance.ShowTip(model.nowFairySiegeBatCityInfo.GuardID <= 0 ? "FairySiege15" : "FairySiege16");
|
| | | UpdateEnemyInfo(model.nowFairySiegeBatCityInfo.GuardID, true);
|
| | | UpdateEnemyHP(model.nowFairySiegeBatCityInfo.HP, model.nowFairySiegeBatCityInfo.HPMax);
|
| | | }
|
| | | }
|
| | |
|
| | |
| | | StopEffectAtk();
|
| | | }
|
| | |
|
| | | //lastInfo 玩家发起攻击前的数据 myInfo 玩家发起攻击的返回数据 nowInfo 当前的最新数据
|
| | | public void PlayEffectSeq(FairySiegeBatCityInfo lastInfo, FairySiegeBatCityInfo myInfo, FairySiegeBatCityInfo nowInfo)
|
| | | public void PlayEffectSeq(uint startGuardID, ulong startHPMax, ulong hurtValue)
|
| | | {
|
| | | ResetEffectSeq();
|
| | | UI3DModelExhibition.Instance.PlayAnim(GAStaticDefine.State_Attack1Hash);
|
| | |
| | | .OnComplete(() =>
|
| | | {
|
| | | StopEffectAtk();
|
| | | ShowDamage((long)myInfo.HurtValue);
|
| | | ShowDamage((long)hurtValue);
|
| | | //城池被击毁
|
| | | if (nowInfo.GuardID <= 0)
|
| | | if (model.nowFairySiegeBatCityInfo.GuardID <= 0)
|
| | | {
|
| | | UpdateEnemyInfo(nowInfo.GuardID);
|
| | | model.DeepCopyFairySiegeBatCityInfo(nowInfo, model.lastFairySiegeBatCityInfo);
|
| | | UpdateEnemyInfo(model.nowFairySiegeBatCityInfo.GuardID);
|
| | | isPlaying = false;
|
| | | return;
|
| | | }
|
| | |
|
| | | //打死了
|
| | | if (nowInfo.GuardID != lastInfo.GuardID)
|
| | | if (model.nowFairySiegeBatCityInfo.GuardID != startGuardID)
|
| | | {
|
| | | UI3DModelExhibition.InstanceClone1.PlayAnim(GAStaticDefine.State_DeadHash);
|
| | | UpdateEnemyHP(0, model.lastFairySiegeBatCityInfo.HPMax);
|
| | | model.DeepCopyFairySiegeBatCityInfo(nowInfo, model.lastFairySiegeBatCityInfo);
|
| | | UpdateEnemyHP(0, startHPMax);
|
| | | Clock.AlarmAfter(0.4f, () =>
|
| | | {
|
| | | UpdateEnemyInfo(nowInfo.GuardID, true);
|
| | | UpdateEnemyInfo(model.nowFairySiegeBatCityInfo.GuardID, true);
|
| | | });
|
| | | Clock.AlarmAfter(1.2f, () =>
|
| | | {
|
| | | UpdateEnemyHP(nowInfo.HP, nowInfo.HPMax);
|
| | | UpdateEnemyHP(model.nowFairySiegeBatCityInfo.HP, model.nowFairySiegeBatCityInfo.HPMax);
|
| | | isPlaying = false;
|
| | | });
|
| | | }
|
| | | else
|
| | | {
|
| | | UI3DModelExhibition.InstanceClone1.PlayAnim(GAStaticDefine.State_HurtHash);
|
| | | model.DeepCopyFairySiegeBatCityInfo(nowInfo, model.lastFairySiegeBatCityInfo);
|
| | | Clock.AlarmAfter(0.4f, () =>
|
| | | {
|
| | | UpdateEnemyInfo(nowInfo.GuardID, true);
|
| | | UpdateEnemyInfo(model.nowFairySiegeBatCityInfo.GuardID, true);
|
| | | });
|
| | | Clock.AlarmAfter(1.2f, () =>
|
| | | {
|
| | | UpdateEnemyHP(nowInfo.HP, nowInfo.HPMax);
|
| | | UpdateEnemyHP(model.nowFairySiegeBatCityInfo.HP, model.nowFairySiegeBatCityInfo.HPMax);
|
| | | isPlaying = false;
|
| | | });
|
| | | }
|
| | |
| | |
|
| | | private void OnRevPackage(int viewType, int playerID, RoleParticularModel.ViewPlayerData data)
|
| | | {
|
| | | //城池被击毁
|
| | | if (model.nowFairySiegeBatCityInfo.GuardID <= 0)
|
| | | return;
|
| | | UpdateEnemyInfo(data);
|
| | | }
|
| | |
|
| | |
| | | myData = new UI3DPlayerExhibitionData
|
| | | {
|
| | | job = PlayerDatas.Instance.baseData.Job,
|
| | | fashionClothesId = apperance.fashionClothes,
|
| | | fashionWeaponId = apperance.fashionWeapon,
|
| | | fashionSecondaryId = apperance.fashionSecondary,
|
| | | clothesId = apperance.clothes,
|
| | | weaponId = apperance.weapon,
|
| | | secondaryId = apperance.secondary,
|
| | | wingsId = apperance.wings,
|
| | | suitLevel = apperance.isSuit ? 1 : 0,
|
| | | reikiRootEffectId = reikiRootEffectId,
|
| | | isDialogue = false,
|
| | | equipLevel = PlayerDatas.Instance.baseData.suitLevel,
|
| | | scale = 1,
|
| | | titleID = PlayerDatas.Instance.baseData.TitleID
|
| | | };
|
| | | UI3DModelExhibition.InstanceClone1.ShowPlayer(rawImgHost, myData);
|
| | | UI3DModelExhibition.InstanceClone1.ChangeModelEulerAngles(hostEulerAngles);
|
| | |
| | |
|
| | | private void UpdateEnemyHP(ulong HP, ulong HPMax)
|
| | | {
|
| | | if (HPMax == 0)
|
| | | {
|
| | | slidHP.value = 0;
|
| | | txtHP.text = string.Empty;
|
| | | return;
|
| | | }
|
| | | float fillAmount = Mathf.Round((float)HP / HPMax * 1000f) / 1000f;
|
| | | string info = model.CalculateDamagePercentage(HP, HPMax);
|
| | | slidHP.value = fillAmount;
|
| | | slidHP.value = Mathf.Clamp01(fillAmount);
|
| | | txtHP.text = info;
|
| | | }
|
| | |
|
| | |
| | | DisplayEnergyRegenCountdown();
|
| | | DisplayFamilyInfo();
|
| | | DisplayMyInfo();
|
| | | if (model.lastFairySiegeBatCityInfo != null)
|
| | | if (model.nowFairySiegeBatCityInfo != null)
|
| | | {
|
| | | UpdateEnemyInfo(model.lastFairySiegeBatCityInfo.GuardID, false);
|
| | | UpdateEnemyHP(model.lastFairySiegeBatCityInfo.HP, model.lastFairySiegeBatCityInfo.HPMax);
|
| | | UpdateEnemyInfo(model.nowFairySiegeBatCityInfo.GuardID, false);
|
| | | UpdateEnemyHP(model.nowFairySiegeBatCityInfo.HP, model.nowFairySiegeBatCityInfo.HPMax);
|
| | | }
|
| | | }
|
| | |
|