public void UpdateHeadJudgeState()
    {
        HeadJudger HJudge = Global.GetHeadJudger();

        if (LastSyncedCurState != Global.CurDataState)
        {
            LastSyncedCurState = Global.CurDataState;

            foreach (NetworkPlayer np in Network.connections)
            {
                int JudgeIndex = HJudge.GetCatIndexForGuid(np.guid);
                if (JudgeIndex >= 0)
                {
                    GetComponent <NetworkView>().RPC("SendJudgerInfoRPC", np, np.guid, JudgeIndex);
                }

                GetComponent <NetworkView>().RPC("SendCurDataRPC", np, Global.CurDataState, (int)HJudge.CurDivision, (int)HJudge.CurRound,
                                                 (int)HJudge.GetJudgePool(np.guid), HJudge.GetJudgeTeam(np.guid), HJudge.GetActiveJudgingJudgers(np.guid));

                Debug.Log(" send data to judge team: " + HJudge.GetJudgePool(np.guid));
            }
        }

        if (LastSyncedDivState != Global.DivDataState)
        {
            LastSyncedDivState = Global.DivDataState;

            SendDataToJudgers(Global.AllData.SerializeToString(), Global.AllNameData.SerializeToString());
        }
    }
 void QueryHeadJudgeForCurData()
 {
     if (Network.isServer)
     {
         HeadJudger HJudge = Global.GetHeadJudger();
         GetComponent <NetworkView>().RPC("SendCurDataRPC", RPCMode.Others, Global.CurDataState, (int)HJudge.CurDivision, (int)HJudge.CurRound, (int)HJudge.CurPool, HJudge.CurTeam, HJudge.ActiveJudgingJudgers);
     }
 }
    void SendJudgeNameIdRPC(string InJudgeGuid, int InNameId)
    {
        HeadJudger HJudge = Global.GetHeadJudger();

        if (HJudge)
        {
            HJudge.SetJudgeNameId(InJudgeGuid, InNameId);
        }
    }
    void SendJudgeEditingRPC(string InJudgeGuid, bool bInEditing)
    {
        HeadJudger HJudge = Global.GetHeadJudger();

        if (HJudge)
        {
            HJudge.SetJudgeEditing(InJudgeGuid, bInEditing);
        }
    }
    void SendJudgeReadyRPC(string InJudgeGuid, bool bInReady)
    {
        HeadJudger HJudge = Global.GetHeadJudger();

        if (HJudge)
        {
            HJudge.SetJudgeReady(InJudgeGuid, bInReady);
        }
    }
    void SendJudgeConnectedRPC(string InGuid, int InJudgeType)
    {
        HeadJudger HJudger = Global.GetHeadJudger();

        if (HJudger)
        {
            HJudger.OnConnectedJudger(InGuid, InJudgeType);
        }
    }
    void ClientSendFinishJudgingDiffRPC(string InGuid, string InDiffData)
    {
        HeadJudger HJudge = Global.GetHeadJudger();

        if (HJudge)
        {
            HJudge.ReceiveDiffData(InGuid, InDiffData);
        }
    }
    void SendJudgeLockedRPC(string InJudgeGuid, bool bInLocked)
    {
        HeadJudger HJudge = Global.GetHeadJudger();

        if (HJudge)
        {
            HJudge.SetJudgeLocked(InJudgeGuid, bInLocked);
        }

        Debug.Log(" got locked judge: " + InJudgeGuid + "  " + bInLocked);
    }
    void SendJudgeReconnectedRPC(string InGuid, int InJudgeType, int InCatJudgeIndex, int InNameId, bool bInIsHoldReady, bool bInLocked, bool bInJudging, bool bInEditing)
    {
        Debug.Log("Got reconnecte rpc");

        HeadJudger HJudger = Global.GetHeadJudger();

        if (HJudger)
        {
            HJudger.OnReconnectedJudger(InGuid, InJudgeType, InCatJudgeIndex, InNameId, bInIsHoldReady, bInLocked, bInJudging, bInEditing);
        }
    }
    // Update is called once per frame
    void Update()
    {
        CurCat = (ECategoryView)CatCombo.GetSelectedItemIndex();

        HeadJudger hj = Global.GetHeadJudger();

        if (hj)
        {
            hj.Update();
        }
    }