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); }
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(); }
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 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);*/ }
//处理网络命令 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); }