public void ChangeRate(NetCmdPack pack) { NetCmdChangeRate cmd = (NetCmdChangeRate)pack.cmd; byte clientSeat = SceneRuntime.ServerToClientSeat(cmd.Seat); if (GetPlayer(clientSeat) == null) { return; } byte OldRate = GetPlayer(clientSeat).RateIndex; GetPlayer(clientSeat).RateIndex = cmd.RateIndex; //Debug.Log(cmd.RateIndex); GetPlayer(clientSeat).Launcher.ChangeRate(cmd.RateIndex, cmd.IsCanUseRate); //如果是自己切换倍率我们就清掉连击状态 if (clientSeat == m_MyClientSeat) { if (m_PlayerList[clientSeat].ComboEft != null) { if (m_PlayerList[clientSeat].ComboEft.LifeTime >= 0.1f) { m_PlayerList[clientSeat].ComboEft.LifeTime = 0; } } } //因为玩家切换倍率 我们触发一个事件 tagGameRateChangeEvent pEvent = new tagGameRateChangeEvent(GetPlayer(clientSeat).Player.playerData.ID, OldRate, cmd.RateIndex); //MsgEventHandle.HandleMsg(pEvent); }
public void LaunchBullet(NetCmdPack pack) { NetCmdBullet cmd = (NetCmdBullet)pack.cmd; byte clientSeat, id; SceneRuntime.BuuletIDToSeat(cmd.BulletID, out clientSeat, out id); if (GetPlayer(clientSeat) == null) { return; } ScenePlayer sp = GetPlayer(clientSeat); if (sp.Launcher.LauncherType != cmd.LauncherType) { sp.Launcher.ChangeLauncher(cmd.LauncherType, true); } if (sp == null) { LogMgr.Log("不存在的玩家座位:" + clientSeat); return; } float elapsedTime = (Utility.GetTickCount() - pack.tick) * 0.001f + SceneRuntime.NetDelayTime; short degree = SceneRuntime.AngleInversion(cmd.Degree); SceneRuntime.BulletMgr.LaunchBullet(cmd.BulletID, sp.Launcher.LauncherType, sp.RateIndex, degree, elapsedTime, cmd.ReboundCount, cmd.LockFishID); sp.Launcher.LauncherBullet(cmd.Energy); // SceneRuntime.SceneModel.LaunchBullet(clientSeat, sp.Launcher.LauncherType, sp.RateIndex); int gold = LauncherSetting.LauncherDataList[sp.Launcher.LauncherType].Consume * BulletSetting.BulletRate[sp.RateIndex]; ConsumeGold(clientSeat, gold, sp); }
public void OnChangeRoleGlobe(IEvent iEvent) { NetCmdPack pack = (NetCmdPack)iEvent.parameter; //LC_Cmd_ChangeRoleGlobe ncb = (LC_Cmd_ChangeRoleGlobe)pack.cmd; //TODO 后续需要改进的地方 PlayerRole.Instance.RoleInfo.HandleCmd(pack.cmd); }
public void SetFishPackage(NetCmdPack pack) { NetCmdFishPackage p = (NetCmdFishPackage)pack.cmd; CatchFishData cfd = FindFish(p.FishID); if (cfd.FishObj != null) { cfd.FishObj.SetPackage(p.PackageType); } }
//清场动画 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 OnShopItemResult(IEvent iEvent) { NetCmdPack pack = (NetCmdPack)iEvent.parameter; LC_Cmd_ShopItemResult ncb = (LC_Cmd_ShopItemResult)pack.cmd; if (ncb.Result) { UIManager.Instance.ShowMessage(UserOperateMessage.UOM_Shop_BuyItem_Sucess.Description(), MessageBoxEnum.Style.Ok, null); } else { UIManager.Instance.ShowMessage(UserOperateMessage.UOM_Shop_BuyItem_Failed_6.Description(), MessageBoxEnum.Style.Ok, null); } }
public void OnRecharge(IEvent iEvent) { NetCmdPack pack = (NetCmdPack)iEvent.parameter; //玩家登陆的结果 或者是注册的结果 LC_Cmd_Recharge ncb = (LC_Cmd_Recharge)pack.cmd; if (ncb.Result) { UIManager.Instance.ShowMessage("充值成功", MessageBoxEnum.Style.Ok, null); } else { UIManager.Instance.ShowMessage("充值失败", MessageBoxEnum.Style.Ok, null); } }
public void OnFishEnter(IEvent iEvent) { Debug.Log("OnFishEnter"); NetCmdPack pack = iEvent.parameter as NetCmdPack; //FishManager.Instance.LaunchFish(cmd); if (m_FishMgr != null) { m_FishMgr.LaunchFish(pack); } else { Debug.LogError("m_FishMgr == null"); } }
public void OnLaunchBullet(IEvent iEvent) { NetCmdPack pack = iEvent.parameter as NetCmdPack; if (pack != null) { NetCmdBullet cmd = (NetCmdBullet)pack.cmd; byte clientSeat, id; SceneRuntime.BuuletIDToSeat(cmd.BulletID, out clientSeat, out id); if (clientSeat == SceneRuntime.MyClientSeat) { /*uint time = Utility.GetTickCount() - bulletTick; * SceneMain.Instance.bulletTime.AddTime(time);*/ } m_PlayerMgr.LaunchBullet(pack); } }
//命令处理 //====================================================================== public void PlayerJoin(NetCmdPack pack) { NetCmdPlayerJoin ncp = (NetCmdPlayerJoin)pack.cmd; PlayerExtraData pd = new PlayerExtraData(); pd.playerData.ID = ncp.PlayerInfo.ID; pd.playerData.GoldNum = ncp.PlayerInfo.GoldNum; pd.playerData.ImgCrc = ncp.PlayerInfo.ImgCrc; pd.playerData.Level = ncp.PlayerInfo.Lvl; pd.playerData.Name = ncp.PlayerInfo.Name; byte clientSeat = SceneRuntime.ServerToClientSeat(ncp.Seat); bool launcherValid; byte clientLauncherType; SceneRuntime.CheckLauncherValid(ncp.LauncherType, out clientLauncherType, out launcherValid); m_PlayerMgr.PlayerJoin(pd, clientSeat, ncp.rateIndex, clientLauncherType, launcherValid);//m_RoomRateIndex }
public void OnAccountOnlyId(IEvent iEvent) { NetCmdPack pack = (NetCmdPack)iEvent.parameter; //玩家登陆的结果 或者是注册的结果 LC_Cmd_AccountOnlyID ncb = (LC_Cmd_AccountOnlyID)pack.cmd; switch (ncb.LogonTypeID) { case 1: { //正常登陆 Debug.Log("1"); } break; case 2: { Debug.Log("2"); } break; } //UIManager.Instance.ShowView<MainMenuView>(); if (ncb.dwUserID == 0) { UIManager.Instance.ShowMessage("账号密码错误", MessageBoxEnum.Style.Ok, null); } else { Debug.Log(_mUserId); IEvent evt = new GF.Event(EventMsg.LOGON_SUCCESS); EventManager.Instance.DispatchEvent(evt); //将IP转化为String _mUserId = ncb.dwUserID; _mOnlyId = ncb.dwOnlyID; ServerSetting.HallServerIP = Utility.IPToString(ncb.GateIp); ServerSetting.HallServerPort = ncb.GatePort; ServerSetting.NewIP = ncb.GameIp; ServerSetting.NewPort = ncb.GamePort; UserDefault.Instance.SetStringForKey("Account", accountInfo.UID); UserDefault.Instance.SetStringForKey("Password", accountInfo.PWD); ConnectHall();//加入到大厅并且发送命令 设置好IP 和 Port 并且 设置好需要发送的命令的参赛 } }
public void OnPlayerJoin(IEvent iEvent) { Debug.Log("CMD_PLAYER_JOIN"); NetCmdPack pack = iEvent.parameter as NetCmdPack; NetCmdPlayerJoin ncp = (NetCmdPlayerJoin)pack.cmd; PlayerExtraData pd = new PlayerExtraData(); pd.playerData.ID = ncp.PlayerInfo.ID; pd.playerData.GoldNum = ncp.PlayerInfo.GoldNum; pd.playerData.ImgCrc = ncp.PlayerInfo.ImgCrc; pd.playerData.Level = ncp.PlayerInfo.Lvl; pd.playerData.Name = ncp.PlayerInfo.Name; byte clientSeat = SceneRuntime.ServerToClientSeat(ncp.Seat); bool launcherValid; byte clientLauncherType; SceneRuntime.CheckLauncherValid(ncp.LauncherType, out clientLauncherType, out launcherValid); //PlayerManager.Instance.PlayerJoin(pd, clientSeat, ncp.rateIndex, clientLauncherType, launcherValid); m_PlayerMgr.PlayerJoin(pd, clientSeat, ncp.rateIndex, clientLauncherType, launcherValid); }
public void LaunchSyncBullet(NetCmdPack pack) { NetCmdSyncBullet cmd = (NetCmdSyncBullet)pack.cmd; float elapsedTime = (Utility.GetTickCount() - pack.tick) * 0.001f + SceneRuntime.NetDelayTime; for (int i = 0; i < cmd.Bullets.Length; ++i) { SyncBulletData data = cmd.Bullets[i]; byte clientSeat, id; SceneRuntime.BuuletIDToSeat(data.BulletID, out clientSeat, out id); ScenePlayer sp = GetPlayer(clientSeat); if (sp == null) { //LogMgr.Log("不存在的玩家座位:" + clientSeat); return; } short degree = SceneRuntime.AngleInversion(data.Degree); SceneRuntime.BulletMgr.LaunchBullet(data.BulletID, data.BulletType, data.RateIdx, degree, data.Time * 0.001f + elapsedTime, data.ReboundCount, data.LockFishID /*, data.CollideCount, data.PauseTime * 0.001f, data.SpeedScaling * 0.001f*/); //int gold = LauncherSetting.LauncherDataList[data.BulletType].Consume * BulletSetting.BulletRate[data.RateIdx]; //ConsumeGold(clientSeat, gold, sp); } }
public void ChangeLauncher(NetCmdPack pack) { GlobalAudioMgr.Instance.PlayOrdianryMusic(Audio.OrdianryMusic.m_ChangeGun, false, true); NetCmdChangeLauncher ncc = (NetCmdChangeLauncher)pack.cmd; bool launcherValid; byte clientLauncherType; byte clientSeat = SceneRuntime.ServerToClientSeat(ncc.Seat); if (GetPlayer(clientSeat) == null) { return; } SceneRuntime.CheckLauncherValid(ncc.LauncherType, out clientLauncherType, out launcherValid); m_PlayerList[clientSeat].Launcher.ChangeLauncher(clientLauncherType, launcherValid); //change launcherType; if (m_MyClientSeat == clientSeat) { SceneRuntime.LogicUI.UpateLaunchData(); SceneRuntime.LogicUI.UpdateSkillState(); } }
public bool Update(float delta) { if (m_TCPClient != null) { m_TCPClient.Update(); } if (m_Handler != null && m_Handler.CanProcessCmd()) { while (m_CmdList.HasItem() && m_Handler != null) { NetCmdPack nc = m_CmdList.GetItem(); if (m_Handler.Handle(nc) == false) { if (HeaderManager.Instance.HandleCmd(nc) == false) { m_FinalHandler.Handle(nc); } } } } return(true); }
public bool Handle(NetCmdPack pack) { if (pack.cmd.GetCmdType() == NetCmdType.CMD_JOIN_ROOM_RESULT) { NetCmdJoinRoomResult ncj = (NetCmdJoinRoomResult)pack.cmd; JoinRoomData ncg = new JoinRoomData(); ncg.RoomID = ncj.RoomID; ncg.BackgroundImage = ncj.BackgroundImage; ncg.LauncherType = ncj.LauncherType; ncg.Seat = ncj.Seat; ncg.RateIndex = 0; if (ncj.Result == 0) { State = HallState.HALL_JOIN_FAILED; GlobalEffectMgr.Instance.CloseLoadingMessage(); } else { NetServices.Instance.CmdHandler = null; LogicManager.Instance.Forward(ncg); } return(true); } else if (pack.cmd.GetCmdType() == NetCmdType.CMD_LC_JoinTable) { LC_Cmd_JoinTableResult ncb = (LC_Cmd_JoinTableResult)pack.cmd; tagUserOperationEvent pUOM = new tagUserOperationEvent((ncb.Result ? UserOperateMessage.UOM_Table_JoinTable_Sucess : UserOperateMessage.UOM_Table_JoinTable_Failed_7)); MsgEventHandle.HandleMsg(pUOM); if (ncb.Result) { //在玩家身上设置玩家桌子ID PlayerRole.Instance.RoleInfo.RoleMe.SetTableTypeID(ncb.bTableTypeID); NetServices.Instance.CmdHandler = null; PlayerRole.Instance.RoleGameData.OnHandleRoleJoinTable();//表示玩家已经进入房间了 JoinRoomData ncg = new JoinRoomData(); ncg.RoomID = ncb.bTableTypeID; ncg.BackgroundImage = ncb.BackgroundImage; ncg.LauncherType = ncb.LauncherType; ncg.Seat = ncb.SeatID; ncg.RateIndex = ncb.RateIndex; ncg.Energy = ncb.Energy; LogicManager.Instance.Forward(ncg); } else { State = HallState.HALL_JOIN_FAILED; GlobalEffectMgr.Instance.CloseLoadingMessage(); } return(true); } else if (pack.cmd.GetCmdType() == NetCmdType.CMD_CHANGE_IMG) { NetCmdImgChange cmd = (NetCmdImgChange)pack.cmd; HeaderManager.Instance.GetPlayerHeader(cmd.PlayerID, cmd.ImgCrcValue, HeaderOptType.HEADER_FRIEND, null); return(true); } return(false); }
public void onCatchedFish(IEvent iEvent) { NetCmdPack pack = iEvent.parameter as NetCmdPack; m_SkillMgr.FishCatched(pack); }
public void LaunchLaser(NetCmdPack pack) { }
public void FishCatchedByFreeze(NetCmdPack pack) { }
public void FishCatched(NetCmdPack pack) { Debug.Log("FishCatched"); NetCmdCatched cmd = (NetCmdCatched)pack.cmd; byte clientSeat; byte id; SceneRuntime.BuuletIDToSeat(cmd.BulletID, out clientSeat, out id); CatchBulletData cbd = SceneRuntime.BulletMgr.GetBullet(clientSeat, id); if (cbd.IsValid() == false) { return; } if (SceneRuntime.PlayerMgr.GetPlayer(clientSeat) == null) { return; } bool bNotDelay = Utility.GetTickCount() - pack.tick < ConstValue.FISH_OVER_TIME; CatchedData cd = new CatchedData(); cd.CatchType = (byte)CatchedType.CATCHED_BULLET; cd.ClientSeat = clientSeat; cd.FishList = new List <CatchFishData>(); ushort lockfishid = 0; if (cbd.BulletObj != null) { if (cbd.BulletObj.LauncherType == 4) { lockfishid = cbd.BulletObj.LockedFishID; } cd.SubType = cbd.BulletObj.LauncherType; cd.RateIndex = cbd.BulletObj.RateIndex; } else { cd.SubType = cbd.LauncherType; cd.RateIndex = cbd.RateIndex; } if (bNotDelay == false) { ProcessDelayOver(cmd.Fishs, cd); return; } CatchLithingList cll = null; BlendData bd = new BlendData(Color.red, 0.6f, 0, 0, 0.4f); if (cmd.Fishs != null) { for (int i = 0; i < cmd.Fishs.Length; ++i) { NetFishCatched nfc = cmd.Fishs[i]; CatchFishData cfd = SceneRuntime.FishMgr.FindFish(nfc.FishID); if (cfd.IsValidFishType() == false) { continue; } Fish fish = cfd.FishObj; if (fish != null && fish.FishID == lockfishid) { cbd.BulletObj.ClearLockFishID();//只有穿透子弹才需要清空锁定,其他子弹发生碰撞就销毁了。 } switch ((FishCatchEventType)nfc.CatchEvent) { case FishCatchEventType.CATCH_EVENT_EFFECT: if (fish == null || fish.Catched) { continue; } if (fish.HasOpt == false) { FishOptReduction ff = new FishOptReduction(1.0f, new ReductionData(1.0f, 0, 0, 0.5f), 0, bd); fish.AddOpt(ff); } break; case FishCatchEventType.CATCH_EVENT_ATTACK: if (fish == null || fish.Catched) { continue; } FishOptReduction ff1 = new FishOptReduction(0.5f, new ReductionData(0.5f, 0, 0, 0.5f), 0, bd); fish.AddOpt(ff1); if (FishResManager.Instance.GetFishData(fish.FishType).ClipLength[(int)FishClipType.CLIP_GONGJI] != 0) { FishOptAction foa = new FishOptAction(FishClipType.CLIP_GONGJI, 1.5f); fish.AddOpt(foa); } break; case FishCatchEventType.CATCH_EVENT_CATCHED: if (fish != null) { FishOptReduction deadRed = new FishOptReduction(1.0f, new ReductionData(0, 0, 1.0f, 0), 0, bd); FishOptAction fod = new FishOptAction(FishClipType.CLIP_SIWANG, 1.0f); fod.SetDeadData(0, false, cd); fish.ClearOpt(); fish.AddOpt(fod); fish.AddOpt(deadRed); fish.SetCatched(clientSeat); fish.SetDropReward(nfc.nReward); } else { SceneRuntime.PlayerMgr.UpdatePlayerGold(clientSeat, SceneRuntime.GetFishGold(cfd.FishType, cd.RateIndex)); } cd.FishList.Add(cfd); break; case FishCatchEventType.CATCH_EVENT_CATCHED_LIGHTING_MAIN: if (fish != null) { FishOptReduction deadRed = new FishOptReduction(1.0f, new ReductionData(0, 0, 2.0f, 0), 0, null); FishOptAction fod = new FishOptAction(FishClipType.CLIP_SIWANG, 1.0f); fod.SetDeadData(1, false, cd); fish.ClearOpt(); fish.AddOpt(fod); fish.AddOpt(deadRed); fish.SetCatched(clientSeat); fish.SetDropReward(nfc.nReward); if (cll == null) { cll = new CatchLithingList(); } cll.AddMainFish(fish); } else { SceneRuntime.PlayerMgr.UpdatePlayerGold(clientSeat, SceneRuntime.GetFishGold(cfd.FishType, cd.RateIndex)); } cd.FishList.Add(cfd); break; case FishCatchEventType.CATCH_EVENT_CATCHED_LIGHTING: if (fish != null) { FishOptReduction deadRed = new FishOptReduction(1.0f, new ReductionData(0, 0, 2.0f, 0), 0, null); FishOptAction fod = new FishOptAction(FishClipType.CLIP_SIWANG, 1.0f); fod.SetDeadData(1, false, cd); fish.ClearOpt(); fish.AddOpt(fod); fish.AddOpt(deadRed); fish.SetCatched(clientSeat); fish.SetDropReward(nfc.nReward); CatchFishData cfd2 = SceneRuntime.FishMgr.FindFish(nfc.LightingFishID); if (cfd2.IsValidFishType()) { if (cll == null) { cll = new CatchLithingList(); } cll.AddSubFish(cfd2.FishObj, fish); } } else { SceneRuntime.PlayerMgr.UpdatePlayerGold(clientSeat, SceneRuntime.GetFishGold(cfd.FishType, cd.RateIndex)); } cd.FishList.Add(cfd); break; } } } if (cd.FishList.Count > 0) { SceneRuntime.ComputeGoldNum(cd); SceneRuntime.SceneModel.CatchFish(cd); } SceneRuntime.PlayerMgr.FishCatch(clientSeat, cmd.Combo); if (cbd.BulletObj != null) { cbd.BulletObj.GoldNum += cd.GoldNum; SceneRuntime.EffectMgr.PlayFishNet(cbd.BulletObj.Position, cd.SubType); } if (cd.SubType != 4) { SceneRuntime.BulletMgr.RemoveBullet(clientSeat, id); } 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); // } //} }
public void PlayerLeave(NetCmdPack pack) { byte clientSeat = SceneRuntime.ServerToClientSeat(((NetCmdPlayerLeave)pack.cmd).Seat); m_PlayerMgr.PlayerLeave(clientSeat); }
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 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 bool Handle(NetCmdPack pack) { //登陆的后续命令处理 if (pack.cmd.GetCmdType() == NetCmdType.CMD_LC_AccountOnlyIDSuccess) { //玩家登陆GameServer成功了 LC_Cmd_AccountOnlyIDSuccess ncb = (LC_Cmd_AccountOnlyIDSuccess)pack.cmd; //保存玩家账号数据 登陆成功的时候 PlayerRole.Instance.RoleInfo.RoleMe.SetRoleInfo(ncb.RoleInfo);//设置玩家的数据. ServerSetting.SetCallbckUrl(Utility.IPToString(ncb.OperateIP)); //设置玩家身份标志 if (m_AccountData != null) { if (PlayerRole.Instance.RoleInfo.RoleMe.GetIsCanResetAccount()) { m_AccountData.TAG = 1; } else { m_AccountData.TAG = 0; } m_AccountData.SaveAccountData(); //SaveAccountData(m_AccountData);//将账号数据保存起来 } // NetServices.Instance.CmdHandler = null; // RuntimeData.MyAccount = m_AccountData; m_OnlyID = ncb.RandID;//用于登陆的唯一的ID PlayerRole.Instance.RoleExChange.SetPlayerRoleIsShowExChange(); //PlayerRole.Instance.IsNeedResetTable = false; LogicManager.Instance.SkipToHall(); PlayerRole.Instance.OnRoleResetOtherInfo();//清空数据并且提供事件 } else if (pack.cmd.GetCmdType() == NetCmdType.CMD_LC_AccountLogonToScreen) { //玩家登陆GameServer成功了 LC_Cmd_AccountLogonToScreen ncb = (LC_Cmd_AccountLogonToScreen)pack.cmd; //保存玩家账号数据 登陆成功的时候 //PlayerRole.Instance.RoleInfo.RoleMe.SetRoleInfo(ncb.RoleInfo);//设置玩家的数据. //设置玩家身份标志 if (m_AccountData != null) { if (PlayerRole.Instance.RoleInfo.RoleMe.GetIsCanResetAccount()) { GlobalLogon.Instance.AccountData.TAG = 1; } else { GlobalLogon.Instance.AccountData.TAG = 0; } m_AccountData.SaveAccountData(); //SaveAccountData(m_AccountData);//将账号数据保存起来 // NetServices.Instance.CmdHandler = null; } //RuntimeData.MyAccount = m_AccountData; m_OnlyID = ncb.RandID;//用于登陆的唯一的ID // PlayerRole.Instance.IsNeedResetTable = true; //直接进入场景 JoinRoomData ncg = new JoinRoomData(); ncg.RoomID = ncb.bTableTypeID; ncg.BackgroundImage = ncb.BackgroundImage; ncg.LauncherType = ncb.LauncherType; ncg.Seat = ncb.SeatID; ncg.RateIndex = ncb.RateIndex; ncg.Energy = ncb.Energy; //场景 LogicManager.Instance.SkipToScene(ncg); } else if (pack.cmd.GetCmdType() == NetCmdType.CMD_LC_ResetLogonGameServer) { //玩家重新连接服务器失败了 让玩家返回登陆界面去 LogicManager.Instance.LogOff(); tagUserOperationEvent pUOM = new tagUserOperationEvent(UserOperateMessage.UOM_Logon_Reset_Error); MsgEventHandle.HandleMsg(pUOM); } else if (pack.cmd.GetCmdType() == NetCmdType.CMD_LC_JoinTable) { LC_Cmd_JoinTableResult ncb = (LC_Cmd_JoinTableResult)pack.cmd; if (ncb.Result) { PlayerRole.Instance.RoleInfo.RoleMe.SetTableTypeID(ncb.bTableTypeID); JoinRoomData ncg = new JoinRoomData(); ncg.RoomID = ncb.bTableTypeID; ncg.BackgroundImage = ncb.BackgroundImage; ncg.LauncherType = ncb.LauncherType; ncg.Seat = ncb.SeatID; ncg.RateIndex = ncb.RateIndex; ncg.Energy = ncb.Energy; SceneRuntime.SceneLogic.ResetPlayerData(ncg, false); //LogicManager.Instance.Forward(ncg); } } else if (pack.cmd.GetCmdType() == NetCmdType.CMD_LC_ServerChangeSocket) { //提示玩家已经在其他地方登陆了 被踢掉了 LogicManager.Instance.LogOff(); string str = StringTable.GetString("Account_OtherLogon"); if (str != null) { GlobalHallUIMgr.Instance.ShowSystemTipsUI(str, 5, false); } } //else if(pack.cmd.GetCmdType() == NetCmdType.CMD_LC_ResetPassword) //{ // LC_Cmd_ResetPassword ncb = (LC_Cmd_ResetPassword)pack.cmd; // if(ncb.Result) // { // GlobalLogon.Instance.AccountData.CRC1 = ncb.NewPasswordCrc1; // GlobalLogon.Instance.AccountData.CRC2 = ncb.NewPasswordCrc2; // GlobalLogon.Instance.AccountData.CRC3 = ncb.NewPasswordCrc3; // tagErrorCodeEvent pEvent = new tagErrorCodeEvent(ErrorCode.EC_ResetPassword_Sucess); // MsgEventHandle.HandleMsg(pEvent); // } // else // { // tagErrorCodeEvent pEvent = new tagErrorCodeEvent(ErrorCode.EC_ResetPassword_Failed); // MsgEventHandle.HandleMsg(pEvent); // } // return true; //} else if (pack.cmd.GetCmdType() == NetCmdType.CMD_LC_CheckVersionError) { LogicManager.Instance.LogOff(); tagUserOperationEvent pUOM = new tagUserOperationEvent(UserOperateMessage.UOM_Logon_Version_Error); MsgEventHandle.HandleMsg(pUOM); return(true); } else if (pack.cmd.GetCmdType() == NetCmdType.CMD_LC_LogonQueueWrite) { //排队的消息 我们让客户端继续等待 LC_Cmd_LogonQueueWrite ncb = (LC_Cmd_LogonQueueWrite)pack.cmd; //触发排队等待的事件 tagQueueWriteEvent pEvent = new tagQueueWriteEvent(ncb.WriteIndex, ncb.WriteSec, true); MsgEventHandle.HandleMsg(pEvent); } else if (pack.cmd.GetCmdType() == NetCmdType.CMD_LC_AccountIsFreeze) { LC_Cmd_AccountIsFreeze ncb = (LC_Cmd_AccountIsFreeze)pack.cmd; System.DateTime starTime = System.TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); System.DateTime pTime = starTime.AddSeconds(System.Convert.ToDouble(ncb.EndTime)); tagLogonAccountFreezeEvent pEvent = new tagLogonAccountFreezeEvent(pTime); MsgEventHandle.HandleMsg(pEvent); tagUserOperationEvent pUOM = new tagUserOperationEvent(UserOperateMessage.UOM_Logon_Account_Freeze_2); MsgEventHandle.HandleMsg(pUOM); LogicManager.Instance.LogOff(); return(true); } else if (pack.cmd.GetCmdType() == NetCmdType.CMD_LC_SaveAccountInfo) { LC_Cmd_SaveAccountInfo ncb = (LC_Cmd_SaveAccountInfo)pack.cmd; //将账号 和 3个 密码保持起来 供使用 if (GlobalLogon.Instance.AccountData == null) { GlobalLogon.Instance.AccountData = new AccountData(); } GlobalLogon.Instance.AccountData.AccountInfo.UID = ncb.AccountName; GlobalLogon.Instance.AccountData.AccountInfo.CRC1 = ncb.PasswordCrc1; GlobalLogon.Instance.AccountData.AccountInfo.CRC2 = ncb.PasswordCrc2; GlobalLogon.Instance.AccountData.AccountInfo.CRC3 = ncb.PasswordCrc3; GlobalLogon.Instance.AccountData.SaveAccountData(); //GlobalLogon.Instance.SaveAccountData(GlobalLogon.Instance.AccountData);//立刻保存一次 return(true); } else { return(false); } GlobalHallUIMgr.Instance.UpdateSystemTipsUITime(0.5f); return(true); }
public void LaunchFish(NetCmdPack pack) { NetCmdFish cmdFish = (NetCmdFish)pack.cmd; GroupDataList gdl = FishResManager.Instance.GetFishGroup(cmdFish.GroupID); ushort startID = cmdFish.StartID; float elapsedTime = Utility.TickSpan(pack.tick) + SceneRuntime.NetDelayTime; if (gdl.PathGroupData != null) { FishPathGroupData pathgroup = gdl.PathGroupData; PathLinearInterpolator[] interpList = PathManager.Instance.GetPathGroup(pathgroup.PathGroupIndex, SceneRuntime.Inversion); foreach (PathLinearInterpolator interp in interpList) { Fish fish = new Fish(); fish.Init(startID, pathgroup.FishIndex, pathgroup.FishScaling, 0, pathgroup.ActionSpeed, pathgroup.ActionUnite, pathgroup.Speed, interp); #if UNITY_EDITOR fish.SetModelName("Fish_PathGroup_" + cmdFish.GroupID); #endif if (fish.AddElapsedTime(elapsedTime)) { SetFish(fish); } else { fish.Destroy(); } if (++startID >= FishSetting.FISH_MAX_NUM) { startID = 0; } } } else { float fInv = SceneRuntime.Inversion ? -1.0f : 1.0f; int pathIndex = cmdFish.PathID; PathLinearInterpolator pi = PathManager.Instance.GetPath(pathIndex, SceneRuntime.Inversion); float startX = gdl.FrontPosition.x; foreach (GroupData gd in gdl.GroupDataArray) { if (gd == null) { break; } if (gd.FishNum > gd.PosList.Length) { LogMgr.Log("错误的鱼群路径点:" + gd.FishNum + ", posnum:" + gd.PosList.Length); return; } for (int i = 0; i < gd.FishNum; ++i) { float time = BuYuUtils.GetPathTimeByDist(startX, gd.PosList[i].x, pi); Fish fish = new Fish(); fish.Init(startID, gd.FishIndex, gd.FishScaling, time, gd.ActionSpeed, gd.ActionUnite, gd.SpeedScaling, pi); #if UNITY_EDITOR fish.SetModelName("Fish_FishGroup_" + cmdFish.GroupID + "_Path_" + pathIndex); #endif if (fish.AddElapsedTime(elapsedTime)) { fish.SetOffset(new Vector3(0, fInv * gd.PosList[i].y, gd.PosList[i].z)); SetFish(fish); } else { fish.Destroy(); } if (++startID == FishSetting.FISH_MAX_NUM) { startID = 0; } } } } }
public void OnChangeLauncher(IEvent iEvent) { NetCmdPack pack = iEvent.parameter as NetCmdPack; m_SkillMgr.ClearScene(pack); }
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 bool HandleCmd(NetCmdPack pack) { switch (pack.cmd.GetCmdType()) { case NetCmdType.CMD_UPLOADING_RESPONSE: NetCmdUploadImgResponse rep = (NetCmdUploadImgResponse)pack.cmd; if (rep.AllowUpload == 0) { GlobalHallUIMgr.Instance.ShowSystemTipsUI(StringTable.GetString("uploadfailed"), 2.0f, false); ClearUpload(); } else if (m_Upload != null) { m_bBeginUpload = true; SendChunk(); } break; case NetCmdType.CMD_UPLOADING_CHUNK_RESPONSE: NetCmdUploadImgChunkResponse rep2 = (NetCmdUploadImgChunkResponse)pack.cmd; if ((rep2.UploadResult & 1) == 0) { GlobalHallUIMgr.Instance.ShowSystemTipsUI(StringTable.GetString("uploadfailed"), 2.0f, false); ClearUpload(); } else if ((rep2.UploadResult & 128) != 0) { //LogMgr.Log("上传完成1."); } else if (m_Upload != null) { SendChunk(); } break; case NetCmdType.CMD_UPLOADING_COMPLETE: { if (m_Upload != null) { NetCmdUploadImgComplete rep3 = (NetCmdUploadImgComplete)pack.cmd; if (rep3.Result == 1) { SaveTex(PlayerRole.Instance.RoleInfo.RoleMe.GetUserID(), rep3.ImgCrc, m_Upload.TexData); //PlayerRole.Instance.RoleInfo.ChangeRoleCustFaceID(rep3.ImgCrc); GetPlayerHeaderResult(PlayerRole.Instance.RoleInfo.RoleMe.GetUserID(), m_Upload.Tex, HeaderOptType.HEADER_UPLOAD, null); GlobalHallUIMgr.Instance.ShowSystemTipsUI(StringTable.GetString("uploadok"), 2.0f, false); } else { //上传失败。 GlobalHallUIMgr.Instance.ShowSystemTipsUI(StringTable.GetString("uploadfailed"), 2.0f, false); } } ClearUpload(); } break; default: return(false); } return(true); }
//处理网络命令 public bool Handle(NetCmdPack pack) { if (m_bRefreshScene) { //刷新场景中,过期的命令不处理 if (pack.cmd.CmdType == (byte)MainCmdType.CMD_MAIN_Game) { return(true); } else if (pack.cmd.GetCmdType() == NetCmdType.CMD_LC_ResetRoleInfo) { m_bRefreshScene = false; } } switch (pack.cmd.GetCmdType()) { case NetCmdType.CMD_FISH: m_FishMgr.LaunchFish(pack); break; case NetCmdType.CMD_SYNC_FISH: m_FishMgr.LaunchFishByAsycScene(pack); break; case NetCmdType.CMD_BULLET: NetCmdBullet cmd = (NetCmdBullet)pack.cmd; byte clientSeat, id; SceneRuntime.BuuletIDToSeat(cmd.BulletID, out clientSeat, out id); if (clientSeat == SceneRuntime.MyClientSeat) { uint time = Utility.GetTickCount() - bulletTick; SceneMain.Instance.bulletTime.AddTime(time); } m_PlayerMgr.LaunchBullet(pack); break; case NetCmdType.CMD_SYNC_BULLET: m_PlayerMgr.LaunchSyncBullet(pack); break; case NetCmdType.CMD_PLAYER_JOIN: PlayerJoin(pack); break; case NetCmdType.CMD_PLAYER_LEAVE: PlayerLeave(pack); break; case NetCmdType.CMD_CHANGE_LAUNCHER: m_PlayerMgr.ChangeLauncher(pack); break; case NetCmdType.CMD_CATCHED: m_SkillMgr.FishCatched(pack); break; case NetCmdType.CMD_CHANGE_RATE: m_PlayerMgr.ChangeRate(pack); break; case NetCmdType.CMD_SKILL_DISASTER_RESPONSE: m_SkillMgr.UseSkillDisaster(pack); break; case NetCmdType.CMD_SKILL_LOCK_RESPONSE: m_SkillMgr.UseSkillLock(pack); break; case NetCmdType.CMD_SKILL_FREEZE_RESPONSE: m_SkillMgr.UseSkillFreeze(pack); break; case NetCmdType.CMD_SKILL_LASER_RESPONSE: m_SkillMgr.LaunchLaser(pack); break; case NetCmdType.CMD_SKILL_LIGHTING_RESPONSE: m_SkillMgr.UseSkillLighting(pack); break; case NetCmdType.CMD_SKILL_TORNADO_RESPONSE: m_SkillMgr.UseSkillTornado(pack); break; case NetCmdType.CMD_FISH_PACKAGE: m_FishMgr.SetFishPackage(pack); break; case NetCmdType.CMD_BULLET_REDUCTION: m_SkillMgr.FishCatchedByFreeze(pack); break; case NetCmdType.CMD_REDUCTION: m_SkillMgr.Reduction(pack); break; case NetCmdType.CMD_CLEAR_SCENE: m_SkillMgr.ClearScene(pack); break; case NetCmdType.CMD_LAUNCH_LASER_FAILED: m_PlayerMgr.LaunchLaserFailed((NetCmdLaunchFailed)pack.cmd); break; case NetCmdType.CMD_SKILL_FAILLED: { m_LogicUI.GetSkillBar.SkillFail((NetCmdSkillFailed)pack.cmd); break; } default: return(false); } return(true); }