override public void Encode(WriteBuffer wb)
 {
     Eproto.PackArray(wb, 3);
     Eproto.PackInteger(wb, this.result);
     Eproto.PackInteger(wb, this.region_code);
     if (this.games == null)
     {
         Eproto.PackNil(wb);
     }
     else
     {
         Eproto.PackArray(wb, this.games.Length);
         for (int i = 0; i < this.games.Length; ++i)
         {
             invite_game v = this.games[i];
             if (v == null)
             {
                 Eproto.PackNil(wb);
             }
             else
             {
                 v.Encode(wb);
             }
         }
     }
 }
        override public void Decode(ReadBuffer rb)
        {
            long c = Eproto.UnpackArray(rb);

            if (c <= 0)
            {
                return;
            }
            Eproto.UnpackInteger(rb, ref this.result);
            if (--c <= 0)
            {
                return;
            }
            Eproto.UnpackInteger(rb, ref this.region_code);
            if (--c <= 0)
            {
                return;
            }
            {
                long n = Eproto.UnpackArray(rb);
                if (n < 0)
                {
                    this.games = null;
                }
                else
                {
                    this.games = new invite_game[n];
                    for (int i = 0; i < n; ++i)
                    {
                        invite_game v = null;
                        if (rb.NextIsNil())
                        {
                            rb.MoveNext();
                        }
                        else
                        {
                            v = new invite_game(); v.Decode(rb);
                        }
                        this.games[i] = v;
                    }
                }
            }
            if (--c <= 0)
            {
                return;
            }
            Eproto.UnpackDiscard(rb, c);
        }