Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
        }
Exemple #4
0
    public void SetFishPackage(NetCmdPack pack)
    {
        NetCmdFishPackage p   = (NetCmdFishPackage)pack.cmd;
        CatchFishData     cfd = FindFish(p.FishID);

        if (cfd.FishObj != null)
        {
            cfd.FishObj.SetPackage(p.PackageType);
        }
    }
Exemple #5
0
        //清场动画
        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);
                }
            }
        }
Exemple #6
0
        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);
            }
        }
Exemple #7
0
        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);
            }
        }
Exemple #8
0
        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");
            }
        }
Exemple #9
0
        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);
            }
        }
Exemple #10
0
    //命令处理
    //======================================================================
    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
    }
Exemple #11
0
        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 并且 设置好需要发送的命令的参赛
            }
        }
Exemple #12
0
        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);
        }
Exemple #13
0
    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);
        }
    }
Exemple #14
0
    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();
        }
    }
Exemple #15
0
    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);
    }
Exemple #16
0
    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);
    }
Exemple #17
0
        public void onCatchedFish(IEvent iEvent)
        {
            NetCmdPack pack = iEvent.parameter as NetCmdPack;

            m_SkillMgr.FishCatched(pack);
        }
Exemple #18
0
 public void LaunchLaser(NetCmdPack pack)
 {
 }
Exemple #19
0
 public void FishCatchedByFreeze(NetCmdPack pack)
 {
 }
Exemple #20
0
        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);
            //    }
            //}
        }
Exemple #21
0
        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);
            //    }
            //}
        }
Exemple #22
0
    public void PlayerLeave(NetCmdPack pack)
    {
        byte clientSeat = SceneRuntime.ServerToClientSeat(((NetCmdPlayerLeave)pack.cmd).Seat);

        m_PlayerMgr.PlayerLeave(clientSeat);
    }
Exemple #23
0
        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);
            //    }
            //}
        }
Exemple #24
0
        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);
    }
Exemple #26
0
        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;
                        }
                    }
                }
            }
        }
Exemple #27
0
        public void OnChangeLauncher(IEvent iEvent)
        {
            NetCmdPack pack = iEvent.parameter as NetCmdPack;

            m_SkillMgr.ClearScene(pack);
        }
Exemple #28
0
        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);
            //    }
            //}
        }
Exemple #29
0
    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);
    }
Exemple #30
0
    //处理网络命令
    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);
    }