Exemple #1
0
 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);
 }
Exemple #2
0
        //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);
            }
        }