Example #1
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.SceneLogic.LaunchBullet(clientSeat, sp.Launcher.LauncherType, sp.RateIndex);
        int gold = LauncherSetting.LauncherDataList[sp.Launcher.LauncherType].Consume
                   * BulletSetting.BulletRate[sp.RateIndex];

        ConsumeGold(clientSeat, gold, sp);
    }
Example #2
0
    public void LaunchBullet(ushort bulletID, byte launcherType, byte rateIndex, short angle, float time, byte reboundCount, ushort lockfishid /*, byte collidCount = 0, float pauseTime = 0, float speedScaling = 0*/)
    {
        byte clientSeat, id;

        SceneRuntime.BuuletIDToSeat(bulletID, out clientSeat, out id);
        Bullet  bullet = new Bullet();
        Vector3 startpos;
        Vector3 dir;
        float   volume  = 1;
        float   curtime = Time.time;

        byte[] type = { 9, 9, 10, 11, 12 };
        if (SceneRuntime.PlayerMgr.GetPlayer(clientSeat) == null)
        {
            return;
        }

        if (SceneRuntime.PlayerMgr.GetPlayer(clientSeat) == SceneRuntime.PlayerMgr.MySelf)
        {
            volume   = 1;
            lastTime = curtime;
            GlobalAudioMgr.Instance.PlayOrdianryMusic((Audio.OrdianryMusic)type[launcherType], false, false, volume);
        }
        else
        {
            volume = 0.30f;
            if ((lastTime + 0.1f) < curtime)
            {
                GlobalAudioMgr.Instance.PlayOrdianryMusic((Audio.OrdianryMusic)type[launcherType], false, false, volume);
            }
        }

        SceneRuntime.GetBulletPosAndDir(clientSeat, angle, out dir, out startpos);
        SceneRuntime.PlayerMgr.ChangeLauncherAngle(dir, clientSeat);        //改变炮台角度
        bullet.Init(clientSeat, id, launcherType, rateIndex, startpos, dir, reboundCount, lockfishid);
        bullet.InitAngle(Utility.ShortToFlaot(angle));
        //bullet.SetCollidData(collidCount, pauseTime, speedScaling);
        PlayerBullets pb = m_PlayerBullets[clientSeat];

        if (pb != null)
        {
            Bullet findBullet;
            if (pb.BulletList.TryGetValue(id, out findBullet))
            {
                Debug.Log("相同的子弹ID:" + id);
                findBullet.Destroy();
                pb.BulletList.Remove(id);
            }
            if (time > 0)
            {
                bullet.Update(time);
            }
            pb.BulletList.Add(id, bullet);
        }
    }
Example #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);
        }
    }
Example #4
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);
    }