Beispiel #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);
    }
Beispiel #2
0
    public void LaunchBullet(short angle)
    {
        if (m_bClearScene)
        {
            //清场时不能发子弹。
            return;
        }
        NetCmdBullet ncb = new NetCmdBullet();

        ncb.SetCmdType(NetCmdType.CMD_BULLET);
        ncb.Degree       = angle;
        ncb.LockFishID   = m_PlayerMgr.LockedFishID;
        ncb.LauncherType = SceneRuntime.SceneLogic.PlayerMgr.MySelf.Launcher.LauncherType;
        Send <NetCmdBullet>(ncb);
        bulletTick = Utility.GetTickCount();
    }
Beispiel #3
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);
            }
        }
Beispiel #4
0
        //请求发射子弹
        public void LaunchBullet(short angle)
        {
            if (m_bClearScene)
            {
                //清场时不能发子弹。
                return;
            }
            NetCmdBullet ncb = new NetCmdBullet();

            ncb.SetCmdType(NetCmdType.CMD_BULLET);
            ncb.Degree       = angle;
            ncb.LockFishID   = m_PlayerMgr.LockedFishID;
            ncb.LauncherType = SceneRuntime.SceneModel.PlayerMgr.MySelf.Launcher.LauncherType;
            bulletTick       = Utility.GetTickCount();
            Send <NetCmdBullet>(ncb);
            bulletTick = Utility.GetTickCount();

            //Test

            /*NetCmdPack pack = new NetCmdPack();
             * pack.cmd = ncb;
             *
             * SceneRuntime.SceneModel.PlayerMgr.LaunchBullet(pack);*/
        }
Beispiel #5
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);
    }