private void tryActive(DataExtra extra) { if (Active != null) { Active.IsActive = false; extras[Active.Token].Watcher.PauseStopwatch(); } Active = extra; Active.IsActive = true; extras[Active.Token].Watcher.EnsureStopwatch(); raiseJudged(extra.Token, JudgeCode.Active); }
//When gameMaster is attach,you can join a valid player //before game start public bool Join(ref string rsToken) { if (!IsAttached || IsStarted) { return(false); } lock (lockHelper) { if (extras.Count >= map.MaxPlayer) { return(false); } string token = TokenHelper.NewToken(); var current = new DataExtra { Token = token, BoxId = extras.Count + 2, Watcher = new Watcher() }; rsToken = token; if (extras.Count > 0) { var first = extras.First().Value; var last = extras.Last().Value; last.Next = current; current.Front = last; current.Next = first; } extras.Add(token, current); System.Diagnostics.Debug.WriteLine($"New Joined. Token[{token}]"); raiseJudged(token, JudgeCode.Joined); if (extras.Count == 1) { SignAsFirst(current.Token); } return(true); } }