public static void HandleReadySignal(Session session, Session.EncodingScheme encoding)
        {
            session.AddToContext("ready", 1);
            string opponent_id;

            Log.Verify(session.GetFromContext("opponent", out opponent_id));
            Session opponent_session = AccountManager.FindLocalSession(opponent_id);

            // 상대의 상태를 확인합니다.
            if (opponent_session != null &&
                (opponent_session.IsTransportAttached(Session.Transport.kTcp) ||
                 opponent_session.IsTransportAttached(Session.Transport.kWebSocket)))
            {
                long is_opponent_ready = 0;
                opponent_session.GetFromContext("ready", out is_opponent_ready);
                if (is_opponent_ready == 1)
                {
                    // 둘 다 준비가 되었습니다. 시작 신호를 보냅니다.
                    if (encoding == Session.EncodingScheme.kJsonEncoding)
                    {
                        JObject response = Utility.MakeResponse("ok");
                        session.SendMessage("start", response);
                        opponent_session.SendMessage("start", response);
                    }
                    else
                    {
                        Log.Assert(encoding == Session.EncodingScheme.kProtobufEncoding);
                        FunMessage       funmsg = new FunMessage();
                        GameStartMessage msg    = new GameStartMessage();
                        msg.result = "ok";
                        session.SendMessage("start", funmsg);
                        funmsg.AppendExtension_game_start(msg);
                        opponent_session.SendMessage("start", funmsg);
                    }
                }
            }
            else
            {
                // 아직 상대가 방에 없기 때문에 기다린다.
            }
        }
Ejemplo n.º 2
0
 public static void AppendExtension_game_start(this FunMessage message, GameStartMessage value)
 {
     ProtoBuf.Extensible.AppendValue(message, (int)ExtendedMessageFieldNumber.FunMessage_game_start, value);
 }
Ejemplo n.º 3
0
 public static bool TryGetExtension_game_start(this FunMessage message, out GameStartMessage value)
 {
     return(ProtoBuf.Extensible.TryGetValue(message, (int)ExtendedMessageFieldNumber.FunMessage_game_start, out value));
 }