// Client requests to start the game. public void NSCGSR() { if (CurrentRoom == null) { ez.Discard(); return; } if (!RequiresAuthentication()) { return; } GameFeet = ez.Read1() / 16; GameDifficulty = (NSDifficulty)(ez.Read1() / 16); Synced = ez.Read1() == 16; CurrentRoom.CurrentSong.Name = ez.ReadNT(); CurrentRoom.CurrentSong.SubTitle = ez.ReadNT(); CurrentRoom.CurrentSong.Artist = ez.ReadNT(); this.CourseTitle = ez.ReadNT(); this.SongOptions = ez.ReadNT(); string newPlayerSettings = ""; do { newPlayerSettings += ez.ReadNT() + " "; } while (ez.LastPacketSize > 0); GamePlayerSettings = newPlayerSettings.Trim(); CurrentRoom.AllPlaying = true; User[] checkSyncPlayers = GetUsersInRoom(); foreach (User user in checkSyncPlayers) { if (user.SyncNeeded && user.CanPlay && !user.Synced) { CurrentRoom.AllPlaying = false; } } if (!Synced || CurrentRoom.AllPlaying) { ez.Write1((byte)(mainClass.ServerOffset + NSCommand.NSCGSR)); ez.SendPack(); if (CurrentRoom.AllPlaying) { SendSongStartTo(checkSyncPlayers); CurrentRoom.AllPlaying = false; } } }
public void NSCGSR() { if (CurrentRoom == null) { ez.Discard(); return; } if (!RequiresAuthentication()) return; GameFeet = ez.Read1() / 16; GameDifficulty = (NSDifficulty)(ez.Read1() / 16); Synced = ez.Read1() == 16; CurrentRoom.CurrentSong.Name = ez.ReadNT(); CurrentRoom.CurrentSong.SubTitle = ez.ReadNT(); CurrentRoom.CurrentSong.Artist = ez.ReadNT(); this.CourseTitle = ez.ReadNT(); this.SongOptions = ez.ReadNT(); string newPlayerSettings = ""; do { newPlayerSettings += ez.ReadNT() + " "; } while (ez.LastPacketSize > 0); GamePlayerSettings = newPlayerSettings.Trim(); CurrentRoom.AllPlaying = true; User[] checkSyncPlayers = GetUsersInRoom(); foreach (User user in checkSyncPlayers) { if (!user.Synced) CurrentRoom.AllPlaying = false; } if (!Synced || CurrentRoom.AllPlaying) { ez.Write1((byte)(mainClass.ServerOffset + NSCommand.NSCGSR)); ez.SendPack(); if (CurrentRoom.AllPlaying) { foreach (User user in checkSyncPlayers) { user.Synced = false; user.SongTime.Restart(); user.ez.Write1((byte)(mainClass.ServerOffset + NSCommand.NSCGSR)); user.ez.SendPack(); } CurrentRoom.AllPlaying = false; } } }
public void NSCGSR() { if (CurrentRoom == null) { ez.Discard(); return; } if (!RequiresAuthentication()) return; GameFeet = ez.Read1() / 16; GameDifficulty = (NSDifficulty)(ez.Read1() / 16); Synced = ez.Read1() == 16; CurrentRoom.CurrentSong.Name = ez.ReadNT(); CurrentRoom.CurrentSong.SubTitle = ez.ReadNT(); CurrentRoom.CurrentSong.Artist = ez.ReadNT(); this.CourseTitle = ez.ReadNT(); this.SongOptions = ez.ReadNT(); string[] options = this.SongOptions.Split(','); foreach (string option in options) { if (option.Contains("xMusic")) { string[] rate = option.Split('x'); this.PlayerRate = (int)Math.Round( (float.Parse(rate[0]) * 100.0) ); if (this.PlayerRate == 100) { this.PlayerRate = 0; } } else { this.PlayerRate = 100; } } string newPlayerSettings = ""; do { newPlayerSettings += ez.ReadNT() + " "; } while (ez.LastPacketSize > 0); GamePlayerSettings = newPlayerSettings.Trim(); if (User_Protocol == 2) { GamePlayerSettings = GamePlayerSettings.Substring(0, GamePlayerSettings.LastIndexOf(" ")<0?0:GamePlayerSettings.LastIndexOf(" ")); } //Remove non unique Entries: string[] settings = GamePlayerSettings.Replace(",", "").Split(' '); string[] uniquesettings = settings.Distinct().ToArray(); GamePlayerSettings = string.Join(", ", uniquesettings); CurrentRoom.AllPlaying = true; User[] checkSyncPlayers = GetUsersInRoom(); if (!gotstart) { MainClass.AddLog("SENT NSCGSR"); // Waiting for other players to sync. SendSongStartTo(checkSyncPlayers); gotstart = true; } else { gotstart = false; waiting = true; MainClass.AddLog("SENT SYNC NSCGSR"); skippacket = false; mSyncStart = new SyncStart(this); Thread syncstartT = new Thread(() => mSyncStart.StartWhenAllSynced(checkSyncPlayers)); if (!syncstartT.IsAlive) { syncstartT.Start(); } } }