Exemple #1
0
        public void LaunchLaser(byte clientSeat, short degree)
        {
            if (m_bMyself)
            {
                m_bLauncherXPSkill = false;
                ClearXPSkillEft();
                m_EnergyPoolLogic[LauncherType].LaserCDState = true;
                m_EnergyPoolLogic[LauncherType].Rollback     = true;
                m_EnergyPoolLogic[LauncherType].PlayRollbackPoolUI(1000);
                m_EnergyPoolUI.fillAmount = m_EnergyPoolLogic[LauncherType].FillAmount;
            }

            Vector3 startPos;
            Vector3 dir;

            degree = SceneRuntime.AngleInversion(degree);
            SceneRuntime.GetBulletPosAndDir(clientSeat, degree, out dir, out startPos);
            if (!m_bMyself)
            {
                Vector2 direction = new Vector2(dir.x, dir.y);
                Direction = direction;
                UpdatOtherAngle();
            }
            SceneRuntime.LauncherEftMgr.PlayXPSkillMuzzleEft(m_GunBarrel.BaseTransform, LauncherType, startPos,
                                                             m_LauncherSetting.LaserCDTime);
            SceneRuntime.LauncherEftMgr.PlayLaserEft(m_GunBarrel.BaseTransform, LauncherType, clientSeat, Direction,
                                                     startPos, m_Angle);
            // SceneRuntime.LauncherEftMgr.RemoveAtEffect();
        }
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 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 #4
0
        public void Update(float delta)
        {
            m_GunBarrel.Update(delta);
            if (m_LockedFishEft.m_LifeTime > 0)
            {
                m_LockedFishEft.m_LifeTime -= delta;
                if (m_LockedFishEft.m_LifeTime <= 0)
                {
                    m_LockedFishEft.m_Obj.SetActive(false);
                }
            }
            //处理能量槽回滚
            if (m_EnergyPoolLogic[LauncherType].Rollback)
            {
                m_EnergyPoolLogic[LauncherType].PlayRollbackPoolUI(delta);
                m_EnergyPoolUI.fillAmount = m_EnergyPoolLogic[LauncherType].FillAmount;
            }
            //处于大招CD状态
            if (m_EnergyPoolLogic[LauncherType].LaserCDState)
            {
                m_EnergyPoolLogic[LauncherType].PlayCD(delta);
                return;
            }
            //大招的硬直状态
            if (m_EnergyPoolLogic[LauncherType].HitRecoverState)
            {
                m_EnergyPoolLogic[LauncherType].Update(delta);
                return;
            }

#if UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX
            UpdateRootPos(); //更新炮台最新位置
#else
            if (m_bFirstUpdatePos)
            {
                UpdateRootPos();    //更新炮台最新位置
                m_bFirstUpdatePos = false;
            }
#endif
            ushort lockfishID = SceneRuntime.PlayerMgr.LockedFishID;
            if (lockfishID != 0)
            {
                Fish fish = SceneRuntime.FishMgr.FindFishByID(lockfishID);
                if (fish != null)
                {
                    UpdateLaunchByLockFish(fish.ScreenPos);
                }
            }
            else
            {
                //UpdateLaunchAngle(); //更新炮台角度
            }
            //m_GunBarrel.Update(delta);
            CheckIsBankruptcy();

            m_LauncherTime += delta;
            if (CheckXPSkill())
            {
                //向服务器发送大招请求
                short angle = Utility.FloatToShort(m_Angle);
                angle = SceneRuntime.AngleInversion(angle);

                /*if (SceneRuntime.SceneModel.UseLaser(angle))
                 * {
                 *  m_bLauncherXPSkill = true;
                 *  m_EnergyPoolLogic[LauncherType].bSendXPSkill = false;
                 * }*/
            }
            if (CheckLaunch())
            {
                if (m_LauncherTime >= m_LauncherInterval)
                {
                    m_LauncherTime = 0;
                    //检测是否钱够

                    /*if (PlayerRole.Instance.GetPlayerGlobelBySeat(m_Seat) <
                     *  (BulletSetting.BulletRate[m_RateIndx]*m_LauncherSetting.Consume))
                     * {
                     *  if (GetMaxRate())
                     *      return;
                     *  SceneRuntime.PlayerMgr.StopAutoShotAndLocked();
                     *  if (m_AutoShotCancel.activeSelf)
                     *      m_AutoShotCancel.SetActive(false);
                     *  // GlobalHallUIMgr.Instance.ShowSystemTipsUI(StringTable.GetString("GoldNotEnough"), 1, false);
                     *  if (PlayerRole.Instance.RoleInfo.RoleMe.GetMonthID() == 0)
                     *  {
                     *      UIManager.Instance.ShowMessage("金币不足", MessageBoxEnum.Style.Ok, null);
                     *      /*GlobalEffectMgr.Instance.ShutDownMsgBox();
                     *      GlobalHallUIMgr.Instance.ShowPayWnd(PayType.Gold);#1#
                     *  }
                     *  else
                     *      UIManager.Instance.ShowMessage("金币不足", MessageBoxEnum.Style.Ok, null);
                     *  /*GlobalHallUIMgr.Instance.ShowMatchMsgBox("",
                     *      PlayerRole.Instance.RoleInfo.RoleMe.GetMonthID(), MatchMsgBoxType.Match_BuyGold);#1#
                     *  return;
                     * }*/
                    UpdateLaunchAngle();
                    short angle = Utility.FloatToShort(m_Angle);
                    angle = SceneRuntime.AngleInversion(angle);
                    SceneRuntime.SceneModel.LaunchBullet(angle);
                }
            }
        }