public void PlayLaserEft(Transform parent, byte type, byte clientSeat, Vector2 dir, Vector3 pos, float angle) { GameObject go = GameObject.Instantiate(m_SkillLaserOjb[type]) as GameObject; if (type == 3) { Vector3 direction = new Vector3(dir.x, dir.y, 0); pos.z += 2; pos += -direction * 5; if (clientSeat > 1) { angle = 180 - angle; } go.transform.localRotation = Quaternion.Euler(0, 0, angle); go.transform.localPosition = pos; } else { go.transform.SetParent(parent, false); go.transform.localPosition = new Vector3(0, 0, 0); } GlobalEffectData eft = new GlobalEffectData(go, 0, 1.3f); GlobalEffectMgr.Instance.AddEffect(eft); }
//播放玩家头像上的技能 public void PlayAvatarEft(Transform parent) { GameObject go = GameObject.Instantiate(m_SkillAvatarObj) as GameObject; go.transform.SetParent(parent, false); GlobalEffectData efc = new GlobalEffectData(go, 0, 1.5f); GlobalEffectMgr.Instance.AddEffect(efc); }
//播放炮发射子弹火焰 public void PlayGunBarrelFire(Transform parent, byte type) { GameObject go = GameObject.Instantiate(m_GunFireObj[type]) as GameObject; go.transform.SetParent(parent, false); GlobalEffectData efc = new GlobalEffectData(go, 0, LauncherSetting.LauncherDataList[type].Interval); GlobalEffectMgr.Instance.AddEffect(efc); }
public void PlayFishNet(Vector3 bulletPos, byte bulletType) { if (m_FishNetObj[bulletType] != null) { GameObject Gobj = ((GameObject)GameObject.Instantiate(m_FishNetObj[bulletType])); Gobj.transform.localPosition = bulletPos; GlobalEffectData effect = new GlobalEffectData(Gobj, 0, 1.5f); GlobalEffectMgr.Instance.AddEffect(effect); } }
//播放切换炮台特效 public void PlayChangeLauncherEft(Vector2 pos) { GameObject go = GameObject.Instantiate(m_ChangeEftObj) as GameObject; go.transform.SetParent(SceneBoot.Instance.UIPanelTransform, false); go.transform.position = new Vector3(pos.x, pos.y, 0); GlobalEffectData efc = new GlobalEffectData(go, 0, 0.5f); GlobalEffectMgr.Instance.AddEffect(efc); }
public void PlayXPSkillMuzzleEft(Transform parent, byte type, Vector3 pos, float life) { GameObject go = GameObject.Instantiate(m_SkillMuzzleObj[type]) as GameObject; go.transform.SetParent(parent, false); go.transform.position = SceneRuntime.WorldToNGUI(pos); m_XPSkillMuzzleEft = new GlobalEffectData(go, 0, life); GlobalEffectMgr.Instance.AddEffect(m_XPSkillMuzzleEft); GlobalEffectMgr.SetEffectOnUI(go); //m_EffectList.Add(go); }
void UpdateEffectPos(GlobalEffectData effect) { if (effect.PosConvert != null) { effect.EffectObj.transform.position = effect.PosConvert(effect.EffectHost.Position) + effect.Offset; } else { effect.EffectObj.transform.position = effect.EffectHost.Position + effect.Offset; } }
public void Destroy() { ShowGoldNum(); if (m_Object != null) { GameObject.Destroy(m_Object); } GlobalEffectData efc = new GlobalEffectData(m_BulletParEft, 0, 2.0f); GlobalEffectMgr.Instance.AddEffect(efc); }
public void ProcessLightingFishMain(Fish fish) { Vector3 p1 = fish.ScreenPos; Vector3 pv1 = ScreenToCenterPoint(p1); GameObject gov1 = SceneRuntime.EffectMgr.GetLightingFishEffect(false); GlobalEffectData efc = new GlobalEffectData(gov1, 0, 2.0f); GlobalEffectMgr.Instance.AddEffect(efc); gov1.transform.localPosition = pv1; gov1.transform.SetParent(SceneBoot.Instance.UIPanelTransform, false); }
//清场动画 public void ClearScene(NetCmdPack pack) { byte clearType = ((NetCmdClearScene)pack.cmd).ClearType; bool leftToRight = clearType == 0; bool bNotDelay = Utility.GetTickCount() - pack.tick < ConstValue.FISH_OVER_TIME; if (bNotDelay == false || clearType == 2) { SceneRuntime.FishMgr.ClearAllFish(); return; } SceneRuntime.SceneModel.SetClearScene(); //GlobalAudioMgr.Instance.PlayOrdianryMusic(Audio.OrdianryMusic.m_ClearFish); ushort id = leftToRight ? (ushort)8 : (ushort)7; GameObject effect = SceneRuntime.EffectMgr.GetSkillEffect(id); GlobalEffectData gfd = new GlobalEffectData(effect, 0, 4.0f); GlobalEffectMgr.Instance.AddEffect(gfd); if (leftToRight) { PathManager.Instance.BoLang.SetWorldMatrix(Matrix4x4.TRS(Vector3.zero, Quaternion.AngleAxis(0, Vector3.up), Vector3.one)); } else { PathManager.Instance.BoLang.SetWorldMatrix(Matrix4x4.TRS(Vector3.zero, Quaternion.AngleAxis(180, Vector3.up), Vector3.one)); } SceneRuntime.FishMgr.BackupFishList(); if (SceneRuntime.FishMgr.BackFishList != null) { foreach (Fish fish in SceneRuntime.FishMgr.BackFishList) { if (fish.Delay || fish.Catched) { continue; } GameObject effectobj = SceneRuntime.EffectMgr.GetSkillEffect(9); float z = SceneRuntime.ComputeZScaling(fish, 1.0f); float scl = z * fish.Scaling * 1.0f; effectobj.transform.localScale = new Vector3(scl, scl, scl); GlobalEffectData gfdf = new GlobalEffectData(fish, effectobj, 0, 4.0f, null, scl); float y = FishResManager.Instance.GetFishData(fish.FishType).Size.y; gfdf.Offset = new Vector3(0, y * 0.65f * z * fish.Scaling, 0); GlobalEffectMgr.Instance.AddEffect(gfdf); fish.ExtraData = gfdf; FishOptTimer fot = new FishOptTimer(gfd, PathManager.Instance.BoLang, leftToRight); fish.ClearOpt(); fish.AddOpt(fot); } } }
public void ShowBossFishSpecailEft(CatchedData cd, Fish fish) { GameObject go = GameObject.Instantiate(m_BossFishSpecailEftObj) as GameObject; go.transform.SetParent(SceneBoot.Instance.UIPanelTransform, false); go.transform.position = SceneRuntime.WorldToNGUI(fish.Position); GlobalEffectData bossFishEft = new GlobalEffectData(go, 0, 5); GlobalEffectMgr.Instance.AddEffect(bossFishEft); // GlobalEffectMgr.SetEffectOnUI(go); //sceneModel.Instance.PlayBack(BackAnimType.BACK_ANIM_BOSS); }
public void ProcessLightingFish(List <Fish> fishList, Fish fishLighting) { GlobalEffectData efc = null; Vector3 p1 = fishLighting.ScreenPos; Vector3 pv1 = ScreenToCenterPoint(p1); foreach (Fish f in fishList) { Vector3 p2 = f.ScreenPos; Vector3 pv2 = ScreenToCenterPoint(p2); Vector3 dir = (pv2 - pv1); float dist = dir.magnitude; dir /= dist; float dot = Vector3.Dot(Vector3.right, dir); float angle = Mathf.Acos(Mathf.Clamp(dot, -1.0f, 1.0f)) * Mathf.Rad2Deg; if (dir.y < 0) { angle = -angle; } GameObject gov2 = SceneRuntime.EffectMgr.GetLightingFishEffect(true); GameObject gov3 = SceneRuntime.EffectMgr.GetLightingFishEffect(false); efc = new GlobalEffectData(gov2, 0, 2.0f); GlobalEffectMgr.Instance.AddEffect(efc); efc = new GlobalEffectData(gov3, 0, 2.0f); GlobalEffectMgr.Instance.AddEffect(efc); gov2.transform.SetParent(SceneBoot.Instance.UIPanelTransform, false); gov3.transform.SetParent(SceneBoot.Instance.UIPanelTransform, false); LightingMoveData lmd = new LightingMoveData(); lmd.Delta = 0; lmd.Trans = gov3.transform; lmd.StartPos = pv1; lmd.EndPos = pv2; m_MoveList.Add(lmd); Vector3 ss = gov2.transform.localScale; ss.x = dist; gov2.transform.localPosition = pv1; gov3.transform.localPosition = pv1; gov2.transform.localScale = ss; gov2.transform.localRotation = Quaternion.AngleAxis(angle, Vector3.forward); } }
public override bool Update(float delta, Fish fish, out bool bRemove) { float x = Camera.main.WorldToScreenPoint(fish.Position).x; if (m_LeftToRight) { x /= Screen.width; } else { x = (Screen.width - x) / Screen.width; } float delay = x * 1.5f + 1.1f; if (delay <= m_Timer.LifeTime || m_Timer.IsEnd) { fish.StopLaugh(false); if (fish.ExtraData != null) { GlobalEffectData gfd = (GlobalEffectData)fish.ExtraData; fish.ExtraData = null; gfd.Life = 0; } float transRot = -Utility.Range(100, 200); float pathRot = -Utility.Range(300, 500); float speed = Utility.Range(15, 20) * SceneRuntime.ComputeZScaling(fish, 1.0f); FishOptPath fop = new FishOptPath(PathManager.Instance.BoLang, transRot, pathRot, speed, 0, fish.Position, true); fop.SetDeadData(0, false, null); fish.AddOpt(fop); bRemove = true; } else { bRemove = false; } return(true); }
public void Update(float delta) { //m_Message.Update(delta); for (int i = 0; i < m_EffectList.Count;) { GlobalEffectData effect = m_EffectList[i]; effect.Time += delta; if (!effect.Active) { if (effect.Time >= effect.Delay) { if (effect.EffectHost != null) { UpdateEffectPos(effect); } effect.Active = true; effect.EffectObj.SetActive(true); effect.SetScaling(effect.Scaling); } else { ++i; continue; } } if (effect.IsEnd) { GameObject.Destroy(effect.EffectObj); Utility.ListRemoveAt(m_EffectList, i); continue; } if (effect.EffectHost != null) { UpdateEffectPos(effect); } ++i; } }
public void AddEffect(GlobalEffectData effect) { m_EffectList.Add(effect); }
public void UseSkillTornado(NetCmdPack pack) { NetCmdSkillTornado cmd = (NetCmdSkillTornado)pack.cmd; bool bNotDelay = Utility.GetTickCount() - pack.tick < ConstValue.FISH_OVER_TIME; byte clientSeat = SceneRuntime.ServerToClientSeat(cmd.Seat); if (SceneRuntime.PlayerMgr.GetPlayer(clientSeat) == null) { return; } CatchedData cd = new CatchedData(); cd.CatchType = (byte)CatchedType.CATCHED_SKILL; cd.SubType = (byte)SkillType.SKILL_TORNADO; cd.FishList = new List <CatchFishData>(); cd.ClientSeat = clientSeat; cd.RateIndex = SceneRuntime.PlayerMgr.GetPlayer(cd.ClientSeat).RateIndex; RecordSkill(SkillType.SKILL_TORNADO, clientSeat); if (bNotDelay == false) { ProcessDelayOver(cmd.fishID, cd); return; } Vector3[] pos = new Vector3[3]; SceneRuntime.PlayerMgr.PlayCD(SkillSetting.SkillDataList[(byte)SkillType.SKILL_TORNADO].CDTime); /*SceneRuntime.SceneModel.LogicUI.PlayCD(SkillSetting.SkillDataList[(byte) SkillType.SKILL_TORNADO].CDTime, * SkillType.SKILL_TORNADO);*/ GetTornadoPos(pos); GameObject effect = SceneRuntime.EffectMgr.GetSkillEffect(1); effect.transform.localPosition = new Vector3(0, 0, 500); GlobalEffectData gfd = new GlobalEffectData(effect, 0, 5.0f); GlobalEffectMgr.Instance.AddEffect(gfd); //SceneObjMgr.Instance.PlayBack(BackAnimType.BACK_ANIM_JF); for (int i = 0; i < 3; ++i) { effect = SceneRuntime.EffectMgr.GetSkillEffect(0); Vector3 p = pos[i]; p.y -= 50; effect.transform.localPosition = pos[i]; gfd = new GlobalEffectData(effect, 0, 5.0f); GlobalEffectMgr.Instance.AddEffect(gfd); } SceneRuntime.PlayerMgr.PlaySkillAvatarEft(clientSeat); if (cmd.fishID != null) { for (int i = 0; i < cmd.fishID.Length; ++i) { CatchFishData cfd = SceneRuntime.FishMgr.FindFish(cmd.fishID[i].FishID); if (cfd.FishObj != null) { Fish fish = cfd.FishObj; fish.StopLaugh(false); float d1 = new Vector2(fish.Position.x - pos[0].x, fish.Position.y - pos[0].y).sqrMagnitude; float d2 = new Vector2(fish.Position.x - pos[1].x, fish.Position.y - pos[1].y).sqrMagnitude; float d3 = new Vector2(fish.Position.x - pos[2].x, fish.Position.y - pos[2].y).sqrMagnitude; int posidx = (d1 < d2) ? (d1 < d3 ? 0 : 2) : (d2 < d3 ? 1 : 2); float transRot = -Utility.Range(1000, 2000); float pathRot = -Utility.Range(3000, 5000); float speed = Utility.Range(4, 8); float transTime = Utility.Range(0.3f, 0.6f); int idx = Utility.Range(0, PathManager.Instance.LongJuanFeng.Length); float delay = Utility.LerpFloat(FishSetting.FishDeadTime.LongJuanFeng_Dead_Time1, FishSetting.FishDeadTime.LongJuanFeng_Dead_Time2, Utility.Range(0.0f, 1.0f)); ReductionData rd = new ReductionData(); rd.Speed = 0; rd.Duration1 = delay; FishOptReduction f = new FishOptReduction(0.0f, rd); FishOptPath fop = new FishOptPath(PathManager.Instance.LongJuanFeng[idx], transRot, pathRot, speed, transTime, pos[posidx] + new Vector3(0, 50, 0)); fop.SetDeadData(delay, false, cd); fish.ClearOpt(); fish.AddOpt(fop); fish.SetCatched(clientSeat); cd.FishList.Add(cfd); fish.SetDropReward(cmd.fishID[i].nReward); } else if (cfd.IsValidFishType()) { // SceneRuntime.PlayerMgr.UpdatePlayerGold(clientSeat, SceneRuntime.GetFishGold(cfd.FishType, cd.RateIndex)); byte multiple = (byte)SkillSetting.SkillDataList[(byte)SkillType.SKILL_TORNADO].multiple; SceneRuntime.PlayerMgr.UpdatePlayerGold(clientSeat, SceneRuntime.GetFishGold(cfd.FishType, multiple)); cd.FishList.Add(cfd); } } } SceneRuntime.ComputeGoldNum(cd); //SceneRuntime.SceneModel.CatchFish(cd); //SceneRuntime.PlayerMgr.UpdatePlayerGold(clientSeat, cd.GoldNum); //if (clientSeat == SceneRuntime.MyClientSeat) //{ // if (cd.GoldNum != cmd.GoldNum) // { // LogMgr.Log("龙卷风:金币不相等:" + cd.GoldNum + "," + cmd.GoldNum); // } // else if (PlayerRole.Instance.RoleInfo.RoleMe.GetGlobel() != cmd.TotalNum) // { // LogMgr.Log("龙卷风:总金币不相等:" + (PlayerRole.Instance.RoleInfo.RoleMe.GetGlobel()) + "," + cmd.TotalNum); // } //} }
public void UseSkillLighting(NetCmdPack pack) { NetCmdSkillLighting cmd = (NetCmdSkillLighting)pack.cmd; bool bNotDelay = Utility.GetTickCount() - pack.tick < ConstValue.FISH_OVER_TIME; byte clientSeat = SceneRuntime.ServerToClientSeat(cmd.Seat); if (SceneRuntime.PlayerMgr.GetPlayer(clientSeat) == null) { return; } CatchedData cd = new CatchedData(); cd.CatchType = (byte)CatchedType.CATCHED_SKILL; cd.SubType = (byte)SkillType.SKILL_LIGHTING; cd.FishList = new List <CatchFishData>(); cd.ClientSeat = clientSeat; cd.RateIndex = SceneRuntime.PlayerMgr.GetPlayer(cd.ClientSeat).RateIndex; RecordSkill(SkillType.SKILL_LIGHTING, clientSeat); if (bNotDelay == false) { ProcessDelayOver(cmd.FishID, cd); return; } SceneRuntime.PlayerMgr.PlayCD(SkillSetting.SkillDataList[(byte)SkillType.SKILL_LIGHTING].CDTime); /*SceneRuntime.SceneModel.LogicUI.PlayCD(SkillSetting.SkillDataList[(byte) SkillType.SKILL_LIGHTING].CDTime, * SkillType.SKILL_LIGHTING);*/ GameObject effect = SceneRuntime.EffectMgr.GetSkillEffect(5); effect.transform.localPosition = new Vector3(0, 21.7f, 150); GlobalEffectData gfd = new GlobalEffectData(effect, 0, 3.0f); GlobalEffectMgr.Instance.AddEffect(gfd); //SceneObjMgr.Instance.PlayBack(BackAnimType.BACK_ANIM_SD); SceneRuntime.PlayerMgr.PlaySkillAvatarEft(clientSeat); CatchLithingList cll = null; float lightDuration2 = 1.5f; if (cmd.FishID != null) { for (int i = 0; i < cmd.FishID.Length; ++i) { NetFishDeadTime dt = cmd.FishID[i]; CatchFishData cfd = SceneRuntime.FishMgr.FindFish(dt.FishID); if (cfd.FishObj != null) { Fish fish = cfd.FishObj; fish.StopLaugh(false); if (dt.LightingFishID != 0) { if (cll == null) { cll = new CatchLithingList(); } CatchFishData cfd2 = SceneRuntime.FishMgr.FindFish(dt.LightingFishID); if (cfd2.FishObj != null) { cll.AddSubFish(cfd2.FishObj, fish); } lightDuration2 = 2.0f; } else { lightDuration2 = 1.5f; } float t = dt.DeadTime * ConstValue.INV255; ReductionData rd = new ReductionData(); rd.Speed = 0; rd.Duration1 = Utility.LerpFloat(FishSetting.FishDeadTime.ShanDian_Dead_Time1, FishSetting.FishDeadTime.ShanDian_Dead_Time2, t); rd.Duration2 = lightDuration2; rd.Duration3 = 0; BlendData bd = new BlendData(); bd.EffectTex = SceneRuntime.EffectMgr.GetLightingTex(fish.FishType); bd.Blend_Type = (byte)BlendType.BLEND_LERP_TEX; bd.Duration1 = 0.25f; bd.Duration2 = 2.0f; bd.Factor = 1.0f; fish.ClearOpt(); FishOptReduction fr = new FishOptReduction(0.0f, rd, rd.Duration1, bd); fr.DeadType = FishDeadType.DEAD_IMMEDIATE; fr.CatchData = cd; fish.SetCatched(clientSeat); fish.AddOpt(fr); fish.SetDropReward(dt.nReward); effect = SceneRuntime.EffectMgr.GetSkillEffect(4); gfd = new GlobalEffectData(fish, effect, rd.Duration1, lightDuration2, GlobalEffectPosConverter.LightingPosConvert); GlobalEffectMgr.Instance.AddEffect(gfd); cd.FishList.Add(cfd); } else if (cfd.IsValidFishType()) { byte multiple = (byte)SkillSetting.SkillDataList[(byte)SkillType.SKILL_TORNADO].multiple; SceneRuntime.PlayerMgr.UpdatePlayerGold(clientSeat, SceneRuntime.GetFishGold(cfd.FishType, multiple)); //SceneRuntime.PlayerMgr.UpdatePlayerGold(clientSeat, SceneRuntime.GetFishGold(cfd.FishType, cd.RateIndex)); cd.FishList.Add(cfd); } } } SceneRuntime.ComputeGoldNum(cd); //SceneRuntime.SceneModel.CatchFish(cd); if (cll != null) { ProcessLightingData(cll); } //SceneRuntime.PlayerMgr.UpdatePlayerGold(clientSeat, cd.GoldNum); //if (clientSeat == SceneRuntime.MyClientSeat) //{ // if (cd.GoldNum != cmd.GoldNum) // { // LogMgr.Log("闪电:金币不相等:" + cd.GoldNum + "," + cmd.GoldNum); // } // else if (PlayerRole.Instance.RoleInfo.RoleMe.GetGlobel() != cmd.TotalNum) // { // LogMgr.Log("闪电:总金币不相等:" + (PlayerRole.Instance.RoleInfo.RoleMe.GetGlobel()) + "," + cmd.TotalNum); // } //} }
public void UseSkillFreeze(NetCmdPack pack) { bool bNotDelay = Utility.GetTickCount() - pack.tick < ConstValue.FISH_OVER_TIME; NetCmdSkillFreeze cmd = (NetCmdSkillFreeze)pack.cmd; byte clientSeat = SceneRuntime.ServerToClientSeat(cmd.Seat); if (SceneRuntime.PlayerMgr.GetPlayer(clientSeat) == null) { return; } CatchedData cd = new CatchedData(); cd.CatchType = (byte)CatchedType.CATCHED_SKILL; cd.SubType = (byte)SkillType.SKILL_FREEZE; cd.FishList = new List <CatchFishData>(); cd.ClientSeat = clientSeat; cd.RateIndex = SceneRuntime.PlayerMgr.GetPlayer(cd.ClientSeat).RateIndex; RecordSkill(SkillType.SKILL_FREEZE, clientSeat); if (bNotDelay == false) { ProcessDelayOverFreeze(cmd.FishID, cd); return; } CatchLithingList cll = null; GameObject effect = SceneRuntime.EffectMgr.GetSkillEffect(2); effect.transform.localPosition = new Vector3(-17, -18.9f, 100); GlobalEffectData gfd = new GlobalEffectData(effect, 0, 5.0f); SceneRuntime.PlayerMgr.PlayCD(SkillSetting.SkillDataList[(byte)SkillType.SKILL_FREEZE].CDTime); // SceneRuntime.SceneModel.LogicUI.PlayCD(SkillSetting.SkillDataList[(byte) SkillType.SKILL_FREEZE].CDTime, // SkillType.SKILL_FREEZE); GlobalEffectMgr.Instance.AddEffect(gfd); //SceneObjMgr.Instance.PlayBack(BackAnimType.BACK_ANIM_BD); SceneRuntime.PlayerMgr.PlaySkillAvatarEft(clientSeat); ReductionData reduction = SkillSetting.SkillDataList[(int)SkillType.SKILL_FREEZE].Reduction; BlendData bd = new BlendData(); bd.BaseTex = SceneRuntime.EffectMgr.SkillFreezeBaseTex; bd.EffectTex = SceneRuntime.EffectMgr.SkillFreezeEffectTex; bd.Blend_Type = (byte)BlendType.BLEND_ADD_TEX; bd.Duration1 = 0; bd.Duration2 = 2.0f; bd.Factor = 0.5f; BlendData bd2 = new BlendData(); bd2.EffectTex = SceneRuntime.EffectMgr.SkillFreezeBaseTex; bd2.Blend_Type = (byte)BlendType.BLEND_ADD_TEX; bd2.Duration1 = reduction.Duration1; bd2.Duration2 = reduction.Duration2; bd2.Duration3 = reduction.Duration3; bd2.Factor = 0.8f; if (cmd.FishID != null) { for (int i = 0; i < cmd.FishID.Length; ++i) { NetFishDeadTime dt = cmd.FishID[i]; CatchFishData cfd = SceneRuntime.FishMgr.FindFish(dt.FishID); bool dead = dt.DeadTime != 0; if (cfd.FishObj != null) { Fish fish = cfd.FishObj; float t = dt.DeadTime * ConstValue.INV255; FishOptReduction fr; if (dead) { if (dt.LightingFishID != 0) { if (cll == null) { cll = new CatchLithingList(); } CatchFishData cfd2 = SceneRuntime.FishMgr.FindFish(dt.LightingFishID); if (cfd2.FishObj != null) { cll.AddSubFish(cfd2.FishObj, fish); } } fish.Controller.PathEvent.Reset(0, false); ReductionData rd = new ReductionData(); rd.Speed = FishSetting.FishDeadTime.BingDong_Speed; rd.Duration2 = Utility.LerpFloat(FishSetting.FishDeadTime.BingDong_Dead_Time1, FishSetting.FishDeadTime.BingDong_Dead_Time2, t); fr = new FishOptReduction(rd.Speed, rd, 0, bd); fr.DeadType = FishDeadType.DEAD_IMMEDIATE; fr.CatchData = cd; effect = SceneRuntime.EffectMgr.GetSkillEffect(3); Vector3 pos = fish.Position; pos.z -= 20; effect.transform.localPosition = pos; gfd = new GlobalEffectData(effect, rd.Duration2, 1.0f); gfd.Scaling = fish.Scaling * Mathf.Max(1.0f, (pos.z / 1000)) * 0.2f; fish.SetCatched(clientSeat); GlobalEffectMgr.Instance.AddEffect(gfd); fish.ClearOpt(); fish.AddOpt(fr); cd.FishList.Add(cfd); fish.SetDropReward(dt.nReward); } else { fr = new FishOptReduction(reduction.Speed, reduction, 0, bd2); fish.ClearOpt(); fish.AddOpt(fr); } } else if (dead && cfd.IsValidFishType()) { // SceneRuntime.PlayerMgr.UpdatePlayerGold(clientSeat, SceneRuntime.GetFishGold(cfd.FishType, cd.RateIndex)); byte multiple = (byte)SkillSetting.SkillDataList[(byte)SkillType.SKILL_FREEZE].multiple; SceneRuntime.PlayerMgr.UpdatePlayerGold(clientSeat, SceneRuntime.GetFishGold(cfd.FishType, multiple)); cd.FishList.Add(cfd); } } } SceneRuntime.ComputeGoldNum(cd); //SceneRuntime.SceneModel.CatchFish(cd); if (cll != null) { ProcessLightingData(cll); } //SceneRuntime.PlayerMgr.UpdatePlayerGold(clientSeat, cd.GoldNum); //if (clientSeat == SceneRuntime.MyClientSeat) //{ // if (cd.GoldNum != cmd.GoldNum) // { // LogMgr.Log("冰冻:金币不相等:" + cd.GoldNum + "," + cmd.GoldNum); // } // else if (PlayerRole.Instance.RoleInfo.RoleMe.GetGlobel() != cmd.TotalNum) // { // LogMgr.Log("冰冻:总金币不相等:" + (PlayerRole.Instance.RoleInfo.RoleMe.GetGlobel()) + "," + cmd.TotalNum); // } //} }
public void UseSkillDisaster(NetCmdPack pack) { NetCmdSkillDisaster cmd = (NetCmdSkillDisaster)pack.cmd; bool bNotDelay = Utility.GetTickCount() - pack.tick < ConstValue.FISH_OVER_TIME; byte clientSeat = SceneRuntime.ServerToClientSeat(cmd.Seat); if (SceneRuntime.PlayerMgr.GetPlayer(clientSeat) == null) { return; } CatchedData cd = new CatchedData(); cd.CatchType = (byte)CatchedType.CATCHED_SKILL; cd.SubType = (byte)SkillType.SKILL_DISASTER; cd.FishList = new List <CatchFishData>(); cd.ClientSeat = clientSeat; cd.RateIndex = SceneRuntime.PlayerMgr.GetPlayer(cd.ClientSeat).RateIndex; RecordSkill(SkillType.SKILL_DISASTER, clientSeat); if (bNotDelay == false) { ProcessDelayOver(cmd.FishID, cd); return; } CatchLithingList cll = null; SceneRuntime.PlayerMgr.PlayCD(SkillSetting.SkillDataList[(byte)SkillType.SKILL_DISASTER].CDTime); //SceneRuntime.SceneModel.LogicUI.PlayCD(SkillSetting.SkillDataList[(byte)SkillType.SKILL_DISASTER].CDTime, SkillType.SKILL_DISASTER); GameObject effect = SceneRuntime.EffectMgr.GetSkillEffect(6); GlobalEffectData gfd = new GlobalEffectData(effect, 0, 5.0f); GlobalEffectMgr.Instance.AddEffect(gfd); //SceneObjMgr.Instance.PlayBack(BackAnimType.BACK_ANIM_TZ); SceneRuntime.PlayerMgr.PlaySkillAvatarEft(clientSeat); BlendData bd = new BlendData(); bd.BaseTex = SceneRuntime.EffectMgr.SkillDisasterTex; bd.EffectTex = bd.BaseTex; bd.Blend_Type = (byte)BlendType.BLEND_ADD_TEX; bd.Duration1 = 1.0f; bd.Duration2 = 2.0f; bd.Factor = 3.0f; FishOptPath pt = new FishOptPath(PathManager.Instance.DouDongPath, 0, 0, 1, 0, Vector3.zero); if (cmd.FishID != null) { for (int i = 0; i < cmd.FishID.Length; ++i) { NetFishDeadTime dt = cmd.FishID[i]; CatchFishData cfd = SceneRuntime.FishMgr.FindFish(dt.FishID); if (cfd.FishObj != null) { Fish fish = cfd.FishObj; fish.StopLaugh(false); float t = dt.DeadTime * ConstValue.INV255; ReductionData rd = new ReductionData(); float dt1 = Utility.LerpFloat(FishSetting.FishDeadTime.TianZai_Dead_Time1, FishSetting.FishDeadTime.TianZai_Dead_Time1, t); float dt2 = Utility.LerpFloat(FishSetting.FishDeadTime.TianZai_Stay_Time1, FishSetting.FishDeadTime.TianZai_Stay_Time2, t); rd.Duration1 = dt1 + FishSetting.FishDeadTime.TianZai_DouDong_Time; if (dt.LightingFishID != 0) { if (cll == null) { cll = new CatchLithingList(); } CatchFishData cfd2 = SceneRuntime.FishMgr.FindFish(dt.LightingFishID); if (cfd2.FishObj != null) { cll.AddSubFish(cfd2.FishObj, fish); } } rd.Duration2 = dt2; rd.Speed = FishSetting.FishDeadTime.TianZai_Speed; fish.ClearOpt(); FishOptOffset foo = new FishOptOffset(FishSetting.FishDeadTime.TianZai_DouDong_Time, PathManager.Instance.DouDongPath); foo.Delay = dt1; fish.AddOpt(foo); FishOptReduction fr = new FishOptReduction(0, rd, rd.Duration1, bd); fr.DeadType = FishDeadType.DEAD_ACTION; fr.CatchData = cd; fish.SetCatched(clientSeat); fish.AddOpt(fr); fish.SetDropReward(dt.nReward); cd.FishList.Add(cfd); } else if (cfd.IsValidFishType()) { // SceneRuntime.PlayerMgr.UpdatePlayerGold(clientSeat, SceneRuntime.GetFishGold(cfd.FishType, cd.RateIndex)); byte multiple = (byte)SkillSetting.SkillDataList[(byte)SkillType.SKILL_DISASTER].multiple; SceneRuntime.PlayerMgr.UpdatePlayerGold(clientSeat, SceneRuntime.GetFishGold(cfd.FishType, multiple)); cd.FishList.Add(cfd); } } } SceneRuntime.ComputeGoldNum(cd); SceneRuntime.SceneModel.CatchFish(cd); if (cll != null) { cll.DelayTime = 1.0f; m_LightinData.Add(cll); //ProcessLightingData(cll); } //SceneRuntime.PlayerMgr.UpdatePlayerGold(clientSeat, cd.GoldNum); //if (clientSeat == SceneRuntime.MyClientSeat) //{ // if (cd.GoldNum != cmd.GoldNum) // { // LogMgr.Log("天灾:金币不相等:" + cd.GoldNum + "," + cmd.GoldNum); // } // else if (PlayerRole.Instance.RoleInfo.RoleMe.GetGlobel() != cmd.TotalNum) // { // LogMgr.Log("天灾:总金币不相等:" + (PlayerRole.Instance.RoleInfo.RoleMe.GetGlobel()) + "," + cmd.TotalNum); // } //} }