Selaa lähdekoodia

Merge branch 'master' of git.xwxgame.com:backend/delivery-proto

王虎 3 vuotta sitten
vanhempi
commit
5b14c16387
6 muutettua tiedostoa jossa 4459 lisäystä ja 45 poistoa
  1. 687 0
      cs/Chat.cs
  2. 2899 0
      cs/Party.cs
  3. 647 33
      cs/Sync.cs
  4. 127 8
      cs/User.cs
  5. 98 4
      cs/Userinfo.cs
  6. 1 0
      protos/front.proto

+ 687 - 0
cs/Chat.cs

@@ -0,0 +1,687 @@
+// Generated by the protocol buffer compiler.  DO NOT EDIT!
+// source: chat.proto
+#pragma warning disable 1591, 0612, 3021
+#region Designer generated code
+
+using pb = global::Google.Protobuf;
+using pbc = global::Google.Protobuf.Collections;
+using pbr = global::Google.Protobuf.Reflection;
+using scg = global::System.Collections.Generic;
+namespace Protos {
+
+  /// <summary>Holder for reflection information generated from chat.proto</summary>
+  public static partial class ChatReflection {
+
+    #region Descriptor
+    /// <summary>File descriptor for chat.proto</summary>
+    public static pbr::FileDescriptor Descriptor {
+      get { return descriptor; }
+    }
+    private static pbr::FileDescriptor descriptor;
+
+    static ChatReflection() {
+      byte[] descriptorData = global::System.Convert.FromBase64String(
+          string.Concat(
+            "CgpjaGF0LnByb3RvEgZwcm90b3MaDnVzZXJpbmZvLnByb3RvGgxyZXN1bHQu",
+            "cHJvdG8iNwoKQ2hhdE5vdGlmeRIMCgRUeXBlGAEgASgNEg4KBlRhcmdldBgC",
+            "IAEoBBILCgNNc2cYAyABKAkiVwoIQ2hhdFB1c2gSDAoEVHlwZRgBIAEoDRIO",
+            "CgZUYXJnZXQYAiABKAQSCwoDTXNnGAMgASgJEiAKBlNlbmRlchgEIAEoCzIQ",
+            "LnByb3Rvcy5Vc2VySW5mbyIlChJTd2l0Y2hXb3JsZFJlcXVlc3QSDwoHV29y",
+            "bGRJRBgBIAEoDSI1ChNTd2l0Y2hXb3JsZFJlc3BvbnNlEh4KBlJlc3VsdBgB",
+            "IAEoCzIOLnByb3Rvcy5SZXN1bHRiBnByb3RvMw=="));
+      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
+          new pbr::FileDescriptor[] { global::Protos.UserinfoReflection.Descriptor, global::Protos.ResultReflection.Descriptor, },
+          new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
+            new pbr::GeneratedClrTypeInfo(typeof(global::Protos.ChatNotify), global::Protos.ChatNotify.Parser, new[]{ "Type", "Target", "Msg" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::Protos.ChatPush), global::Protos.ChatPush.Parser, new[]{ "Type", "Target", "Msg", "Sender" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::Protos.SwitchWorldRequest), global::Protos.SwitchWorldRequest.Parser, new[]{ "WorldID" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::Protos.SwitchWorldResponse), global::Protos.SwitchWorldResponse.Parser, new[]{ "Result" }, null, null, null)
+          }));
+    }
+    #endregion
+
+  }
+  #region Messages
+  public sealed partial class ChatNotify : pb::IMessage<ChatNotify> {
+    private static readonly pb::MessageParser<ChatNotify> _parser = new pb::MessageParser<ChatNotify>(() => new ChatNotify());
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public static pb::MessageParser<ChatNotify> Parser { get { return _parser; } }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::Protos.ChatReflection.Descriptor.MessageTypes[0]; }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public ChatNotify() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public ChatNotify(ChatNotify other) : this() {
+      type_ = other.type_;
+      target_ = other.target_;
+      msg_ = other.msg_;
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public ChatNotify Clone() {
+      return new ChatNotify(this);
+    }
+
+    /// <summary>Field number for the "Type" field.</summary>
+    public const int TypeFieldNumber = 1;
+    private uint type_;
+    /// <summary>
+    /// 0=世界;1=大厅;2=队伍;3=派对;4=好友(私聊)
+    /// </summary>
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public uint Type {
+      get { return type_; }
+      set {
+        type_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "Target" field.</summary>
+    public const int TargetFieldNumber = 2;
+    private ulong target_;
+    /// <summary>
+    /// 对象id, 对应Type字段的世界id,roomid partyid, 好友id
+    /// </summary>
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public ulong Target {
+      get { return target_; }
+      set {
+        target_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "Msg" field.</summary>
+    public const int MsgFieldNumber = 3;
+    private string msg_ = "";
+    /// <summary>
+    /// 消息正文, 客户端自行编码解码
+    /// </summary>
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public string Msg {
+      get { return msg_; }
+      set {
+        msg_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+      }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public override bool Equals(object other) {
+      return Equals(other as ChatNotify);
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public bool Equals(ChatNotify other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (Type != other.Type) return false;
+      if (Target != other.Target) return false;
+      if (Msg != other.Msg) return false;
+      return true;
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public override int GetHashCode() {
+      int hash = 1;
+      if (Type != 0) hash ^= Type.GetHashCode();
+      if (Target != 0UL) hash ^= Target.GetHashCode();
+      if (Msg.Length != 0) hash ^= Msg.GetHashCode();
+      return hash;
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (Type != 0) {
+        output.WriteRawTag(8);
+        output.WriteUInt32(Type);
+      }
+      if (Target != 0UL) {
+        output.WriteRawTag(16);
+        output.WriteUInt64(Target);
+      }
+      if (Msg.Length != 0) {
+        output.WriteRawTag(26);
+        output.WriteString(Msg);
+      }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public int CalculateSize() {
+      int size = 0;
+      if (Type != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Type);
+      }
+      if (Target != 0UL) {
+        size += 1 + pb::CodedOutputStream.ComputeUInt64Size(Target);
+      }
+      if (Msg.Length != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeStringSize(Msg);
+      }
+      return size;
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public void MergeFrom(ChatNotify other) {
+      if (other == null) {
+        return;
+      }
+      if (other.Type != 0) {
+        Type = other.Type;
+      }
+      if (other.Target != 0UL) {
+        Target = other.Target;
+      }
+      if (other.Msg.Length != 0) {
+        Msg = other.Msg;
+      }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 8: {
+            Type = input.ReadUInt32();
+            break;
+          }
+          case 16: {
+            Target = input.ReadUInt64();
+            break;
+          }
+          case 26: {
+            Msg = input.ReadString();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  public sealed partial class ChatPush : pb::IMessage<ChatPush> {
+    private static readonly pb::MessageParser<ChatPush> _parser = new pb::MessageParser<ChatPush>(() => new ChatPush());
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public static pb::MessageParser<ChatPush> Parser { get { return _parser; } }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::Protos.ChatReflection.Descriptor.MessageTypes[1]; }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public ChatPush() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public ChatPush(ChatPush other) : this() {
+      type_ = other.type_;
+      target_ = other.target_;
+      msg_ = other.msg_;
+      Sender = other.sender_ != null ? other.Sender.Clone() : null;
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public ChatPush Clone() {
+      return new ChatPush(this);
+    }
+
+    /// <summary>Field number for the "Type" field.</summary>
+    public const int TypeFieldNumber = 1;
+    private uint type_;
+    /// <summary>
+    /// 0=世界;1=大厅;2=队伍;3=派对;4=好友(私聊)
+    /// </summary>
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public uint Type {
+      get { return type_; }
+      set {
+        type_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "Target" field.</summary>
+    public const int TargetFieldNumber = 2;
+    private ulong target_;
+    /// <summary>
+    /// 对象id, 对应Type字段的世界id,roomid partyid, 好友id
+    /// </summary>
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public ulong Target {
+      get { return target_; }
+      set {
+        target_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "Msg" field.</summary>
+    public const int MsgFieldNumber = 3;
+    private string msg_ = "";
+    /// <summary>
+    /// 消息正文, 客户端自行编码解码
+    /// </summary>
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public string Msg {
+      get { return msg_; }
+      set {
+        msg_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+      }
+    }
+
+    /// <summary>Field number for the "Sender" field.</summary>
+    public const int SenderFieldNumber = 4;
+    private global::Protos.UserInfo sender_;
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public global::Protos.UserInfo Sender {
+      get { return sender_; }
+      set {
+        sender_ = value;
+      }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public override bool Equals(object other) {
+      return Equals(other as ChatPush);
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public bool Equals(ChatPush other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (Type != other.Type) return false;
+      if (Target != other.Target) return false;
+      if (Msg != other.Msg) return false;
+      if (!object.Equals(Sender, other.Sender)) return false;
+      return true;
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public override int GetHashCode() {
+      int hash = 1;
+      if (Type != 0) hash ^= Type.GetHashCode();
+      if (Target != 0UL) hash ^= Target.GetHashCode();
+      if (Msg.Length != 0) hash ^= Msg.GetHashCode();
+      if (sender_ != null) hash ^= Sender.GetHashCode();
+      return hash;
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (Type != 0) {
+        output.WriteRawTag(8);
+        output.WriteUInt32(Type);
+      }
+      if (Target != 0UL) {
+        output.WriteRawTag(16);
+        output.WriteUInt64(Target);
+      }
+      if (Msg.Length != 0) {
+        output.WriteRawTag(26);
+        output.WriteString(Msg);
+      }
+      if (sender_ != null) {
+        output.WriteRawTag(34);
+        output.WriteMessage(Sender);
+      }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public int CalculateSize() {
+      int size = 0;
+      if (Type != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Type);
+      }
+      if (Target != 0UL) {
+        size += 1 + pb::CodedOutputStream.ComputeUInt64Size(Target);
+      }
+      if (Msg.Length != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeStringSize(Msg);
+      }
+      if (sender_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Sender);
+      }
+      return size;
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public void MergeFrom(ChatPush other) {
+      if (other == null) {
+        return;
+      }
+      if (other.Type != 0) {
+        Type = other.Type;
+      }
+      if (other.Target != 0UL) {
+        Target = other.Target;
+      }
+      if (other.Msg.Length != 0) {
+        Msg = other.Msg;
+      }
+      if (other.sender_ != null) {
+        if (sender_ == null) {
+          sender_ = new global::Protos.UserInfo();
+        }
+        Sender.MergeFrom(other.Sender);
+      }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 8: {
+            Type = input.ReadUInt32();
+            break;
+          }
+          case 16: {
+            Target = input.ReadUInt64();
+            break;
+          }
+          case 26: {
+            Msg = input.ReadString();
+            break;
+          }
+          case 34: {
+            if (sender_ == null) {
+              sender_ = new global::Protos.UserInfo();
+            }
+            input.ReadMessage(sender_);
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  public sealed partial class SwitchWorldRequest : pb::IMessage<SwitchWorldRequest> {
+    private static readonly pb::MessageParser<SwitchWorldRequest> _parser = new pb::MessageParser<SwitchWorldRequest>(() => new SwitchWorldRequest());
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public static pb::MessageParser<SwitchWorldRequest> Parser { get { return _parser; } }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::Protos.ChatReflection.Descriptor.MessageTypes[2]; }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public SwitchWorldRequest() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public SwitchWorldRequest(SwitchWorldRequest other) : this() {
+      worldID_ = other.worldID_;
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public SwitchWorldRequest Clone() {
+      return new SwitchWorldRequest(this);
+    }
+
+    /// <summary>Field number for the "WorldID" field.</summary>
+    public const int WorldIDFieldNumber = 1;
+    private uint worldID_;
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public uint WorldID {
+      get { return worldID_; }
+      set {
+        worldID_ = value;
+      }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public override bool Equals(object other) {
+      return Equals(other as SwitchWorldRequest);
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public bool Equals(SwitchWorldRequest other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (WorldID != other.WorldID) return false;
+      return true;
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public override int GetHashCode() {
+      int hash = 1;
+      if (WorldID != 0) hash ^= WorldID.GetHashCode();
+      return hash;
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (WorldID != 0) {
+        output.WriteRawTag(8);
+        output.WriteUInt32(WorldID);
+      }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public int CalculateSize() {
+      int size = 0;
+      if (WorldID != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(WorldID);
+      }
+      return size;
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public void MergeFrom(SwitchWorldRequest other) {
+      if (other == null) {
+        return;
+      }
+      if (other.WorldID != 0) {
+        WorldID = other.WorldID;
+      }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 8: {
+            WorldID = input.ReadUInt32();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  public sealed partial class SwitchWorldResponse : pb::IMessage<SwitchWorldResponse> {
+    private static readonly pb::MessageParser<SwitchWorldResponse> _parser = new pb::MessageParser<SwitchWorldResponse>(() => new SwitchWorldResponse());
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public static pb::MessageParser<SwitchWorldResponse> Parser { get { return _parser; } }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::Protos.ChatReflection.Descriptor.MessageTypes[3]; }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public SwitchWorldResponse() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public SwitchWorldResponse(SwitchWorldResponse other) : this() {
+      Result = other.result_ != null ? other.Result.Clone() : null;
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public SwitchWorldResponse Clone() {
+      return new SwitchWorldResponse(this);
+    }
+
+    /// <summary>Field number for the "Result" field.</summary>
+    public const int ResultFieldNumber = 1;
+    private global::Protos.Result result_;
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public global::Protos.Result Result {
+      get { return result_; }
+      set {
+        result_ = value;
+      }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public override bool Equals(object other) {
+      return Equals(other as SwitchWorldResponse);
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public bool Equals(SwitchWorldResponse other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (!object.Equals(Result, other.Result)) return false;
+      return true;
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public override int GetHashCode() {
+      int hash = 1;
+      if (result_ != null) hash ^= Result.GetHashCode();
+      return hash;
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (result_ != null) {
+        output.WriteRawTag(10);
+        output.WriteMessage(Result);
+      }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public int CalculateSize() {
+      int size = 0;
+      if (result_ != null) {
+        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Result);
+      }
+      return size;
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public void MergeFrom(SwitchWorldResponse other) {
+      if (other == null) {
+        return;
+      }
+      if (other.result_ != null) {
+        if (result_ == null) {
+          result_ = new global::Protos.Result();
+        }
+        Result.MergeFrom(other.Result);
+      }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 10: {
+            if (result_ == null) {
+              result_ = new global::Protos.Result();
+            }
+            input.ReadMessage(result_);
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  #endregion
+
+}
+
+#endregion Designer generated code

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 2899 - 0
cs/Party.cs


+ 647 - 33
cs/Sync.cs

@@ -23,45 +23,56 @@ namespace Protos {
       byte[] descriptorData = global::System.Convert.FromBase64String(
           string.Concat(
             "CgpzeW5jLnByb3RvEgZwcm90b3MaDnVzZXJpbmZvLnByb3RvGgxyZXN1bHQu",
-            "cHJvdG8iEAoOUmVzdG9yZVJlcXVlc3QioQEKD1Jlc3RvcmVSZXNwb25zZRIf",
+            "cHJvdG8iEAoOUmVzdG9yZVJlcXVlc3Qi1QEKD1Jlc3RvcmVSZXNwb25zZRIf",
             "CgVVc2VycxgBIAMoCzIQLnByb3Rvcy5Vc2VySW5mbxIMCgRTdGVwGAIgASgE",
             "EjEKBXN0YXRlGAMgAygLMiIucHJvdG9zLlJlc3RvcmVSZXNwb25zZS5TdGF0",
-            "ZUVudHJ5GiwKClN0YXRlRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIg",
-            "ASgMOgI4ASJ7CgtTeW5jUmVxdWVzdBIMCgRTdGVwGAEgASgEEi8KBlZhbHVl",
-            "cxgCIAMoCzIfLnByb3Rvcy5TeW5jUmVxdWVzdC5WYWx1ZXNFbnRyeRotCgtW",
-            "YWx1ZXNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAw6AjgBIpgB",
-            "CgxTeW5jUmVzcG9uc2USDgoGU3RhdHVzGAEgASgIEgwKBFN0ZXAYAiABKAQS",
-            "MAoGVmFsdWVzGAMgAygLMiAucHJvdG9zLlN5bmNSZXNwb25zZS5WYWx1ZXNF",
-            "bnRyeRIJCgFUGAQgASgEGi0KC1ZhbHVlc0VudHJ5EgsKA2tleRgBIAEoCRIN",
-            "CgV2YWx1ZRgCIAEoDDoCOAEihgEKD0RNZXNzYWdlUmVxdWVzdBIPCgdVc2Vy",
-            "SURzGAEgAygNEjMKBlZhbHVlcxgCIAMoCzIjLnByb3Rvcy5ETWVzc2FnZVJl",
-            "cXVlc3QuVmFsdWVzRW50cnkaLQoLVmFsdWVzRW50cnkSCwoDa2V5GAEgASgJ",
-            "Eg0KBXZhbHVlGAIgASgMOgI4ASIyChBETWVzc2FnZVJlc3BvbnNlEh4KBlJl",
-            "c3VsdBgBIAEoCzIOLnByb3Rvcy5SZXN1bHQibwoMRE1lc3NhZ2VQdXNoEjAK",
-            "BlZhbHVlcxgBIAMoCzIgLnByb3Rvcy5ETWVzc2FnZVB1c2guVmFsdWVzRW50",
+            "ZUVudHJ5EgwKBFJvYWQYBCABKAkSEAoIQ3JlYXRlQXQYBSABKAQSEgoKc3Rh",
+            "Z2VJbmRleBgGIAEoBRosCgpTdGF0ZUVudHJ5EgsKA2tleRgBIAEoCRINCgV2",
+            "YWx1ZRgCIAEoDDoCOAEiewoLU3luY1JlcXVlc3QSDAoEU3RlcBgBIAEoBBIv",
+            "CgZWYWx1ZXMYAiADKAsyHy5wcm90b3MuU3luY1JlcXVlc3QuVmFsdWVzRW50",
             "cnkaLQoLVmFsdWVzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgM",
-            "OgI4ASKAAQoIU3luY1B1c2gSDAoEU3RlcBgBIAEoBBIsCgZWYWx1ZXMYAiAD",
-            "KAsyHC5wcm90b3MuU3luY1B1c2guVmFsdWVzRW50cnkSCQoBVBgDIAEoBBot",
-            "CgtWYWx1ZXNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAw6AjgB",
-            "IoQBCgpNYXN0ZXJQdXNoEgwKBFN0ZXAYASABKAQSLgoGVmFsdWVzGAIgAygL",
-            "Mh4ucHJvdG9zLk1hc3RlclB1c2guVmFsdWVzRW50cnkSCQoBVBgDIAEoBBot",
-            "CgtWYWx1ZXNFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAw6AjgB",
-            "In0KDE1hc3Rlck5vdGlmeRIMCgRTdGVwGAEgASgEEjAKBlZhbHVlcxgCIAMo",
-            "CzIgLnByb3Rvcy5NYXN0ZXJOb3RpZnkuVmFsdWVzRW50cnkaLQoLVmFsdWVz",
-            "RW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgMOgI4ASIhChRNYXN0",
-            "ZXJOb3RpZnlSZXNwb25zZRIJCgFUGAEgASgEInkKEU1hc3RlclN0b3JlTm90",
-            "aWZ5EjUKBlZhbHVlcxgBIAMoCzIlLnByb3Rvcy5NYXN0ZXJTdG9yZU5vdGlm",
-            "eS5WYWx1ZXNFbnRyeRotCgtWYWx1ZXNFbnRyeRILCgNrZXkYASABKAkSDQoF",
-            "dmFsdWUYAiABKAw6AjgBIhMKEU1hc3RlckxvYWRSZXF1ZXN0IpsBChJNYXN0",
-            "ZXJMb2FkUmVzcG9uc2USHgoGUmVzdWx0GAEgASgLMg4ucHJvdG9zLlJlc3Vs",
-            "dBI2CgZWYWx1ZXMYAiADKAsyJi5wcm90b3MuTWFzdGVyTG9hZFJlc3BvbnNl",
-            "LlZhbHVlc0VudHJ5Gi0KC1ZhbHVlc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2",
-            "YWx1ZRgCIAEoDDoCOAFiBnByb3RvMw=="));
+            "OgI4ASKYAQoMU3luY1Jlc3BvbnNlEg4KBlN0YXR1cxgBIAEoCBIMCgRTdGVw",
+            "GAIgASgEEjAKBlZhbHVlcxgDIAMoCzIgLnByb3Rvcy5TeW5jUmVzcG9uc2Uu",
+            "VmFsdWVzRW50cnkSCQoBVBgEIAEoBBotCgtWYWx1ZXNFbnRyeRILCgNrZXkY",
+            "ASABKAkSDQoFdmFsdWUYAiABKAw6AjgBIoYBCg9ETWVzc2FnZVJlcXVlc3QS",
+            "DwoHVXNlcklEcxgBIAMoDRIzCgZWYWx1ZXMYAiADKAsyIy5wcm90b3MuRE1l",
+            "c3NhZ2VSZXF1ZXN0LlZhbHVlc0VudHJ5Gi0KC1ZhbHVlc0VudHJ5EgsKA2tl",
+            "eRgBIAEoCRINCgV2YWx1ZRgCIAEoDDoCOAEiMgoQRE1lc3NhZ2VSZXNwb25z",
+            "ZRIeCgZSZXN1bHQYASABKAsyDi5wcm90b3MuUmVzdWx0Im8KDERNZXNzYWdl",
+            "UHVzaBIwCgZWYWx1ZXMYASADKAsyIC5wcm90b3MuRE1lc3NhZ2VQdXNoLlZh",
+            "bHVlc0VudHJ5Gi0KC1ZhbHVlc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1",
+            "ZRgCIAEoDDoCOAEigAEKCFN5bmNQdXNoEgwKBFN0ZXAYASABKAQSLAoGVmFs",
+            "dWVzGAIgAygLMhwucHJvdG9zLlN5bmNQdXNoLlZhbHVlc0VudHJ5EgkKAVQY",
+            "AyABKAQaLQoLVmFsdWVzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIg",
+            "ASgMOgI4ASKEAQoKTWFzdGVyUHVzaBIMCgRTdGVwGAEgASgEEi4KBlZhbHVl",
+            "cxgCIAMoCzIeLnByb3Rvcy5NYXN0ZXJQdXNoLlZhbHVlc0VudHJ5EgkKAVQY",
+            "AyABKAQaLQoLVmFsdWVzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIg",
+            "ASgMOgI4ASJ9CgxNYXN0ZXJOb3RpZnkSDAoEU3RlcBgBIAEoBBIwCgZWYWx1",
+            "ZXMYAiADKAsyIC5wcm90b3MuTWFzdGVyTm90aWZ5LlZhbHVlc0VudHJ5Gi0K",
+            "C1ZhbHVlc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoDDoCOAEi",
+            "IQoUTWFzdGVyTm90aWZ5UmVzcG9uc2USCQoBVBgBIAEoBCJ5ChFNYXN0ZXJT",
+            "dG9yZU5vdGlmeRI1CgZWYWx1ZXMYASADKAsyJS5wcm90b3MuTWFzdGVyU3Rv",
+            "cmVOb3RpZnkuVmFsdWVzRW50cnkaLQoLVmFsdWVzRW50cnkSCwoDa2V5GAEg",
+            "ASgJEg0KBXZhbHVlGAIgASgMOgI4ASITChFNYXN0ZXJMb2FkUmVxdWVzdCKb",
+            "AQoSTWFzdGVyTG9hZFJlc3BvbnNlEh4KBlJlc3VsdBgBIAEoCzIOLnByb3Rv",
+            "cy5SZXN1bHQSNgoGVmFsdWVzGAIgAygLMiYucHJvdG9zLk1hc3RlckxvYWRS",
+            "ZXNwb25zZS5WYWx1ZXNFbnRyeRotCgtWYWx1ZXNFbnRyeRILCgNrZXkYASAB",
+            "KAkSDQoFdmFsdWUYAiABKAw6AjgBIoUBChBQYXJ0eVN5bmNSZXF1ZXN0EgwK",
+            "BFN0ZXAYASABKAQSNAoGVmFsdWVzGAIgAygLMiQucHJvdG9zLlBhcnR5U3lu",
+            "Y1JlcXVlc3QuVmFsdWVzRW50cnkaLQoLVmFsdWVzRW50cnkSCwoDa2V5GAEg",
+            "ASgJEg0KBXZhbHVlGAIgASgMOgI4ASKiAQoRUGFydHlTeW5jUmVzcG9uc2US",
+            "DgoGU3RhdHVzGAEgASgIEgwKBFN0ZXAYAiABKAQSNQoGVmFsdWVzGAMgAygL",
+            "MiUucHJvdG9zLlBhcnR5U3luY1Jlc3BvbnNlLlZhbHVlc0VudHJ5EgkKAVQY",
+            "BCABKAQaLQoLVmFsdWVzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIg",
+            "ASgMOgI4ASKKAQoNUGFydHlTeW5jUHVzaBIMCgRTdGVwGAEgASgEEjEKBlZh",
+            "bHVlcxgCIAMoCzIhLnByb3Rvcy5QYXJ0eVN5bmNQdXNoLlZhbHVlc0VudHJ5",
+            "EgkKAVQYAyABKAQaLQoLVmFsdWVzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZh",
+            "bHVlGAIgASgMOgI4AWIGcHJvdG8z"));
       descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
           new pbr::FileDescriptor[] { global::Protos.UserinfoReflection.Descriptor, global::Protos.ResultReflection.Descriptor, },
           new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
             new pbr::GeneratedClrTypeInfo(typeof(global::Protos.RestoreRequest), global::Protos.RestoreRequest.Parser, null, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::Protos.RestoreResponse), global::Protos.RestoreResponse.Parser, new[]{ "Users", "Step", "State" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
+            new pbr::GeneratedClrTypeInfo(typeof(global::Protos.RestoreResponse), global::Protos.RestoreResponse.Parser, new[]{ "Users", "Step", "State", "Road", "CreateAt", "StageIndex" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
             new pbr::GeneratedClrTypeInfo(typeof(global::Protos.SyncRequest), global::Protos.SyncRequest.Parser, new[]{ "Step", "Values" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
             new pbr::GeneratedClrTypeInfo(typeof(global::Protos.SyncResponse), global::Protos.SyncResponse.Parser, new[]{ "Status", "Step", "Values", "T" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
             new pbr::GeneratedClrTypeInfo(typeof(global::Protos.DMessageRequest), global::Protos.DMessageRequest.Parser, new[]{ "UserIDs", "Values" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
@@ -73,7 +84,10 @@ namespace Protos {
             new pbr::GeneratedClrTypeInfo(typeof(global::Protos.MasterNotifyResponse), global::Protos.MasterNotifyResponse.Parser, new[]{ "T" }, null, null, null),
             new pbr::GeneratedClrTypeInfo(typeof(global::Protos.MasterStoreNotify), global::Protos.MasterStoreNotify.Parser, new[]{ "Values" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
             new pbr::GeneratedClrTypeInfo(typeof(global::Protos.MasterLoadRequest), global::Protos.MasterLoadRequest.Parser, null, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::Protos.MasterLoadResponse), global::Protos.MasterLoadResponse.Parser, new[]{ "Result", "Values" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, })
+            new pbr::GeneratedClrTypeInfo(typeof(global::Protos.MasterLoadResponse), global::Protos.MasterLoadResponse.Parser, new[]{ "Result", "Values" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
+            new pbr::GeneratedClrTypeInfo(typeof(global::Protos.PartySyncRequest), global::Protos.PartySyncRequest.Parser, new[]{ "Step", "Values" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
+            new pbr::GeneratedClrTypeInfo(typeof(global::Protos.PartySyncResponse), global::Protos.PartySyncResponse.Parser, new[]{ "Status", "Step", "Values", "T" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
+            new pbr::GeneratedClrTypeInfo(typeof(global::Protos.PartySyncPush), global::Protos.PartySyncPush.Parser, new[]{ "Step", "Values", "T" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, })
           }));
     }
     #endregion
@@ -202,6 +216,9 @@ namespace Protos {
       users_ = other.users_.Clone();
       step_ = other.step_;
       state_ = other.state_.Clone();
+      road_ = other.road_;
+      createAt_ = other.createAt_;
+      stageIndex_ = other.stageIndex_;
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -240,6 +257,39 @@ namespace Protos {
       get { return state_; }
     }
 
+    /// <summary>Field number for the "Road" field.</summary>
+    public const int RoadFieldNumber = 4;
+    private string road_ = "";
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public string Road {
+      get { return road_; }
+      set {
+        road_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+      }
+    }
+
+    /// <summary>Field number for the "CreateAt" field.</summary>
+    public const int CreateAtFieldNumber = 5;
+    private ulong createAt_;
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public ulong CreateAt {
+      get { return createAt_; }
+      set {
+        createAt_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "stageIndex" field.</summary>
+    public const int StageIndexFieldNumber = 6;
+    private int stageIndex_;
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public int StageIndex {
+      get { return stageIndex_; }
+      set {
+        stageIndex_ = value;
+      }
+    }
+
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public override bool Equals(object other) {
       return Equals(other as RestoreResponse);
@@ -256,6 +306,9 @@ namespace Protos {
       if(!users_.Equals(other.users_)) return false;
       if (Step != other.Step) return false;
       if (!State.Equals(other.State)) return false;
+      if (Road != other.Road) return false;
+      if (CreateAt != other.CreateAt) return false;
+      if (StageIndex != other.StageIndex) return false;
       return true;
     }
 
@@ -265,6 +318,9 @@ namespace Protos {
       hash ^= users_.GetHashCode();
       if (Step != 0UL) hash ^= Step.GetHashCode();
       hash ^= State.GetHashCode();
+      if (Road.Length != 0) hash ^= Road.GetHashCode();
+      if (CreateAt != 0UL) hash ^= CreateAt.GetHashCode();
+      if (StageIndex != 0) hash ^= StageIndex.GetHashCode();
       return hash;
     }
 
@@ -281,6 +337,18 @@ namespace Protos {
         output.WriteUInt64(Step);
       }
       state_.WriteTo(output, _map_state_codec);
+      if (Road.Length != 0) {
+        output.WriteRawTag(34);
+        output.WriteString(Road);
+      }
+      if (CreateAt != 0UL) {
+        output.WriteRawTag(40);
+        output.WriteUInt64(CreateAt);
+      }
+      if (StageIndex != 0) {
+        output.WriteRawTag(48);
+        output.WriteInt32(StageIndex);
+      }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -291,6 +359,15 @@ namespace Protos {
         size += 1 + pb::CodedOutputStream.ComputeUInt64Size(Step);
       }
       size += state_.CalculateSize(_map_state_codec);
+      if (Road.Length != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeStringSize(Road);
+      }
+      if (CreateAt != 0UL) {
+        size += 1 + pb::CodedOutputStream.ComputeUInt64Size(CreateAt);
+      }
+      if (StageIndex != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(StageIndex);
+      }
       return size;
     }
 
@@ -304,6 +381,15 @@ namespace Protos {
         Step = other.Step;
       }
       state_.Add(other.state_);
+      if (other.Road.Length != 0) {
+        Road = other.Road;
+      }
+      if (other.CreateAt != 0UL) {
+        CreateAt = other.CreateAt;
+      }
+      if (other.StageIndex != 0) {
+        StageIndex = other.StageIndex;
+      }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -326,6 +412,18 @@ namespace Protos {
             state_.AddEntriesFrom(input, _map_state_codec);
             break;
           }
+          case 34: {
+            Road = input.ReadString();
+            break;
+          }
+          case 40: {
+            CreateAt = input.ReadUInt64();
+            break;
+          }
+          case 48: {
+            StageIndex = input.ReadInt32();
+            break;
+          }
         }
       }
     }
@@ -2003,6 +2101,522 @@ namespace Protos {
 
   }
 
+  /// <summary>
+  /// 同步消息
+  /// </summary>
+  public sealed partial class PartySyncRequest : pb::IMessage<PartySyncRequest> {
+    private static readonly pb::MessageParser<PartySyncRequest> _parser = new pb::MessageParser<PartySyncRequest>(() => new PartySyncRequest());
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public static pb::MessageParser<PartySyncRequest> Parser { get { return _parser; } }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::Protos.SyncReflection.Descriptor.MessageTypes[14]; }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public PartySyncRequest() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public PartySyncRequest(PartySyncRequest other) : this() {
+      step_ = other.step_;
+      values_ = other.values_.Clone();
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public PartySyncRequest Clone() {
+      return new PartySyncRequest(this);
+    }
+
+    /// <summary>Field number for the "Step" field.</summary>
+    public const int StepFieldNumber = 1;
+    private ulong step_;
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public ulong Step {
+      get { return step_; }
+      set {
+        step_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "Values" field.</summary>
+    public const int ValuesFieldNumber = 2;
+    private static readonly pbc::MapField<string, pb::ByteString>.Codec _map_values_codec
+        = new pbc::MapField<string, pb::ByteString>.Codec(pb::FieldCodec.ForString(10), pb::FieldCodec.ForBytes(18), 18);
+    private readonly pbc::MapField<string, pb::ByteString> values_ = new pbc::MapField<string, pb::ByteString>();
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public pbc::MapField<string, pb::ByteString> Values {
+      get { return values_; }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public override bool Equals(object other) {
+      return Equals(other as PartySyncRequest);
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public bool Equals(PartySyncRequest other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (Step != other.Step) return false;
+      if (!Values.Equals(other.Values)) return false;
+      return true;
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public override int GetHashCode() {
+      int hash = 1;
+      if (Step != 0UL) hash ^= Step.GetHashCode();
+      hash ^= Values.GetHashCode();
+      return hash;
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (Step != 0UL) {
+        output.WriteRawTag(8);
+        output.WriteUInt64(Step);
+      }
+      values_.WriteTo(output, _map_values_codec);
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public int CalculateSize() {
+      int size = 0;
+      if (Step != 0UL) {
+        size += 1 + pb::CodedOutputStream.ComputeUInt64Size(Step);
+      }
+      size += values_.CalculateSize(_map_values_codec);
+      return size;
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public void MergeFrom(PartySyncRequest other) {
+      if (other == null) {
+        return;
+      }
+      if (other.Step != 0UL) {
+        Step = other.Step;
+      }
+      values_.Add(other.values_);
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 8: {
+            Step = input.ReadUInt64();
+            break;
+          }
+          case 18: {
+            values_.AddEntriesFrom(input, _map_values_codec);
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  /// <summary>
+  /// 同步消息响应
+  /// </summary>
+  public sealed partial class PartySyncResponse : pb::IMessage<PartySyncResponse> {
+    private static readonly pb::MessageParser<PartySyncResponse> _parser = new pb::MessageParser<PartySyncResponse>(() => new PartySyncResponse());
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public static pb::MessageParser<PartySyncResponse> Parser { get { return _parser; } }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::Protos.SyncReflection.Descriptor.MessageTypes[15]; }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public PartySyncResponse() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public PartySyncResponse(PartySyncResponse other) : this() {
+      status_ = other.status_;
+      step_ = other.step_;
+      values_ = other.values_.Clone();
+      t_ = other.t_;
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public PartySyncResponse Clone() {
+      return new PartySyncResponse(this);
+    }
+
+    /// <summary>Field number for the "Status" field.</summary>
+    public const int StatusFieldNumber = 1;
+    private bool status_;
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public bool Status {
+      get { return status_; }
+      set {
+        status_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "Step" field.</summary>
+    public const int StepFieldNumber = 2;
+    private ulong step_;
+    /// <summary>
+    /// status=false时才有值
+    /// </summary>
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public ulong Step {
+      get { return step_; }
+      set {
+        step_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "Values" field.</summary>
+    public const int ValuesFieldNumber = 3;
+    private static readonly pbc::MapField<string, pb::ByteString>.Codec _map_values_codec
+        = new pbc::MapField<string, pb::ByteString>.Codec(pb::FieldCodec.ForString(10), pb::FieldCodec.ForBytes(18), 26);
+    private readonly pbc::MapField<string, pb::ByteString> values_ = new pbc::MapField<string, pb::ByteString>();
+    /// <summary>
+    /// status=false时才有值
+    /// </summary>
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public pbc::MapField<string, pb::ByteString> Values {
+      get { return values_; }
+    }
+
+    /// <summary>Field number for the "T" field.</summary>
+    public const int TFieldNumber = 4;
+    private ulong t_;
+    /// <summary>
+    /// 服务器收到sync request的时间戳(毫秒)
+    /// </summary>
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public ulong T {
+      get { return t_; }
+      set {
+        t_ = value;
+      }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public override bool Equals(object other) {
+      return Equals(other as PartySyncResponse);
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public bool Equals(PartySyncResponse other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (Status != other.Status) return false;
+      if (Step != other.Step) return false;
+      if (!Values.Equals(other.Values)) return false;
+      if (T != other.T) return false;
+      return true;
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public override int GetHashCode() {
+      int hash = 1;
+      if (Status != false) hash ^= Status.GetHashCode();
+      if (Step != 0UL) hash ^= Step.GetHashCode();
+      hash ^= Values.GetHashCode();
+      if (T != 0UL) hash ^= T.GetHashCode();
+      return hash;
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (Status != false) {
+        output.WriteRawTag(8);
+        output.WriteBool(Status);
+      }
+      if (Step != 0UL) {
+        output.WriteRawTag(16);
+        output.WriteUInt64(Step);
+      }
+      values_.WriteTo(output, _map_values_codec);
+      if (T != 0UL) {
+        output.WriteRawTag(32);
+        output.WriteUInt64(T);
+      }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public int CalculateSize() {
+      int size = 0;
+      if (Status != false) {
+        size += 1 + 1;
+      }
+      if (Step != 0UL) {
+        size += 1 + pb::CodedOutputStream.ComputeUInt64Size(Step);
+      }
+      size += values_.CalculateSize(_map_values_codec);
+      if (T != 0UL) {
+        size += 1 + pb::CodedOutputStream.ComputeUInt64Size(T);
+      }
+      return size;
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public void MergeFrom(PartySyncResponse other) {
+      if (other == null) {
+        return;
+      }
+      if (other.Status != false) {
+        Status = other.Status;
+      }
+      if (other.Step != 0UL) {
+        Step = other.Step;
+      }
+      values_.Add(other.values_);
+      if (other.T != 0UL) {
+        T = other.T;
+      }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 8: {
+            Status = input.ReadBool();
+            break;
+          }
+          case 16: {
+            Step = input.ReadUInt64();
+            break;
+          }
+          case 26: {
+            values_.AddEntriesFrom(input, _map_values_codec);
+            break;
+          }
+          case 32: {
+            T = input.ReadUInt64();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
+  /// <summary>
+  /// 同步消息推送
+  /// </summary>
+  public sealed partial class PartySyncPush : pb::IMessage<PartySyncPush> {
+    private static readonly pb::MessageParser<PartySyncPush> _parser = new pb::MessageParser<PartySyncPush>(() => new PartySyncPush());
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public static pb::MessageParser<PartySyncPush> Parser { get { return _parser; } }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public static pbr::MessageDescriptor Descriptor {
+      get { return global::Protos.SyncReflection.Descriptor.MessageTypes[16]; }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    pbr::MessageDescriptor pb::IMessage.Descriptor {
+      get { return Descriptor; }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public PartySyncPush() {
+      OnConstruction();
+    }
+
+    partial void OnConstruction();
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public PartySyncPush(PartySyncPush other) : this() {
+      step_ = other.step_;
+      values_ = other.values_.Clone();
+      t_ = other.t_;
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public PartySyncPush Clone() {
+      return new PartySyncPush(this);
+    }
+
+    /// <summary>Field number for the "Step" field.</summary>
+    public const int StepFieldNumber = 1;
+    private ulong step_;
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public ulong Step {
+      get { return step_; }
+      set {
+        step_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "Values" field.</summary>
+    public const int ValuesFieldNumber = 2;
+    private static readonly pbc::MapField<string, pb::ByteString>.Codec _map_values_codec
+        = new pbc::MapField<string, pb::ByteString>.Codec(pb::FieldCodec.ForString(10), pb::FieldCodec.ForBytes(18), 18);
+    private readonly pbc::MapField<string, pb::ByteString> values_ = new pbc::MapField<string, pb::ByteString>();
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public pbc::MapField<string, pb::ByteString> Values {
+      get { return values_; }
+    }
+
+    /// <summary>Field number for the "T" field.</summary>
+    public const int TFieldNumber = 3;
+    private ulong t_;
+    /// <summary>
+    /// 服务器开始推送时间戳
+    /// </summary>
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public ulong T {
+      get { return t_; }
+      set {
+        t_ = value;
+      }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public override bool Equals(object other) {
+      return Equals(other as PartySyncPush);
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public bool Equals(PartySyncPush other) {
+      if (ReferenceEquals(other, null)) {
+        return false;
+      }
+      if (ReferenceEquals(other, this)) {
+        return true;
+      }
+      if (Step != other.Step) return false;
+      if (!Values.Equals(other.Values)) return false;
+      if (T != other.T) return false;
+      return true;
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public override int GetHashCode() {
+      int hash = 1;
+      if (Step != 0UL) hash ^= Step.GetHashCode();
+      hash ^= Values.GetHashCode();
+      if (T != 0UL) hash ^= T.GetHashCode();
+      return hash;
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public override string ToString() {
+      return pb::JsonFormatter.ToDiagnosticString(this);
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public void WriteTo(pb::CodedOutputStream output) {
+      if (Step != 0UL) {
+        output.WriteRawTag(8);
+        output.WriteUInt64(Step);
+      }
+      values_.WriteTo(output, _map_values_codec);
+      if (T != 0UL) {
+        output.WriteRawTag(24);
+        output.WriteUInt64(T);
+      }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public int CalculateSize() {
+      int size = 0;
+      if (Step != 0UL) {
+        size += 1 + pb::CodedOutputStream.ComputeUInt64Size(Step);
+      }
+      size += values_.CalculateSize(_map_values_codec);
+      if (T != 0UL) {
+        size += 1 + pb::CodedOutputStream.ComputeUInt64Size(T);
+      }
+      return size;
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public void MergeFrom(PartySyncPush other) {
+      if (other == null) {
+        return;
+      }
+      if (other.Step != 0UL) {
+        Step = other.Step;
+      }
+      values_.Add(other.values_);
+      if (other.T != 0UL) {
+        T = other.T;
+      }
+    }
+
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public void MergeFrom(pb::CodedInputStream input) {
+      uint tag;
+      while ((tag = input.ReadTag()) != 0) {
+        switch(tag) {
+          default:
+            input.SkipLastField();
+            break;
+          case 8: {
+            Step = input.ReadUInt64();
+            break;
+          }
+          case 18: {
+            values_.AddEntriesFrom(input, _map_values_codec);
+            break;
+          }
+          case 24: {
+            T = input.ReadUInt64();
+            break;
+          }
+        }
+      }
+    }
+
+  }
+
   #endregion
 
 }

+ 127 - 8
cs/User.cs

@@ -26,12 +26,13 @@ namespace Protos {
             "cHJvdG8iBQoDU1lOIg0KC0Nsb3NlTm90aWZ5IhsKCWNsb3NlUHVzaBIOCgZy",
             "ZWFzb24YASABKAUiIAoQSGVhcnRiZWF0UmVxdWVzdBIMCgRQaW5nGAEgASgN",
             "IjMKEUhlYXJ0YmVhdFJlc3BvbnNlEh4KBlJlc3VsdBgBIAEoCzIOLnByb3Rv",
-            "cy5SZXN1bHQiMgoMTG9naW5SZXF1ZXN0EiIKCFVzZXJJbmZvGAEgASgLMhAu",
-            "cHJvdG9zLlVzZXJJbmZvIpwBCg1Mb2dpblJlc3BvbnNlEh4KBlJlc3VsdBgB",
-            "IAEoCzIOLnByb3Rvcy5SZXN1bHQSDwoHTG9iYnlJRBgCIAEoDRIOCgZSb29t",
-            "SUQYAyABKA0SFAoMU3luY0ludGVydmFsGAQgASgNEgkKAU4YBSABKA0SDgoG",
-            "RXJybXNnGAYgASgJEgkKAVQYByABKAQSDgoGTWFzdGVyGAggASgIYgZwcm90",
-            "bzM="));
+            "cy5SZXN1bHQiTAoMTG9naW5SZXF1ZXN0EiIKCFVzZXJJbmZvGAEgASgLMhAu",
+            "cHJvdG9zLlVzZXJJbmZvEgsKA2xuZxgCIAEoARILCgNsYXQYAyABKAEivwEK",
+            "DUxvZ2luUmVzcG9uc2USHgoGUmVzdWx0GAEgASgLMg4ucHJvdG9zLlJlc3Vs",
+            "dBIPCgdMb2JieUlEGAIgASgNEg4KBlJvb21JRBgDIAEoDRIUCgxTeW5jSW50",
+            "ZXJ2YWwYBCABKA0SCQoBThgFIAEoDRIOCgZFcnJtc2cYBiABKAkSCQoBVBgH",
+            "IAEoBBIOCgZNYXN0ZXIYCCABKAgSDwoHV29ybGRJRBgJIAEoDRIQCghTZXJ2",
+            "ZXJJRBgKIAEoBGIGcHJvdG8z"));
       descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
           new pbr::FileDescriptor[] { global::Protos.UserinfoReflection.Descriptor, global::Protos.ResultReflection.Descriptor, },
           new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
@@ -40,8 +41,8 @@ namespace Protos {
             new pbr::GeneratedClrTypeInfo(typeof(global::Protos.closePush), global::Protos.closePush.Parser, new[]{ "Reason" }, null, null, null),
             new pbr::GeneratedClrTypeInfo(typeof(global::Protos.HeartbeatRequest), global::Protos.HeartbeatRequest.Parser, new[]{ "Ping" }, null, null, null),
             new pbr::GeneratedClrTypeInfo(typeof(global::Protos.HeartbeatResponse), global::Protos.HeartbeatResponse.Parser, new[]{ "Result" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::Protos.LoginRequest), global::Protos.LoginRequest.Parser, new[]{ "UserInfo" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::Protos.LoginResponse), global::Protos.LoginResponse.Parser, new[]{ "Result", "LobbyID", "RoomID", "SyncInterval", "N", "Errmsg", "T", "Master" }, null, null, null)
+            new pbr::GeneratedClrTypeInfo(typeof(global::Protos.LoginRequest), global::Protos.LoginRequest.Parser, new[]{ "UserInfo", "Lng", "Lat" }, null, null, null),
+            new pbr::GeneratedClrTypeInfo(typeof(global::Protos.LoginResponse), global::Protos.LoginResponse.Parser, new[]{ "Result", "LobbyID", "RoomID", "SyncInterval", "N", "Errmsg", "T", "Master", "WorldID", "ServerID" }, null, null, null)
           }));
     }
     #endregion
@@ -614,6 +615,8 @@ namespace Protos {
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public LoginRequest(LoginRequest other) : this() {
       UserInfo = other.userInfo_ != null ? other.UserInfo.Clone() : null;
+      lng_ = other.lng_;
+      lat_ = other.lat_;
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -632,6 +635,34 @@ namespace Protos {
       }
     }
 
+    /// <summary>Field number for the "lng" field.</summary>
+    public const int LngFieldNumber = 2;
+    private double lng_;
+    /// <summary>
+    /// 精度, 未授权或者未取到传0
+    /// </summary>
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public double Lng {
+      get { return lng_; }
+      set {
+        lng_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "lat" field.</summary>
+    public const int LatFieldNumber = 3;
+    private double lat_;
+    /// <summary>
+    /// 纬度,未授权或者未取到传0
+    /// </summary>
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public double Lat {
+      get { return lat_; }
+      set {
+        lat_ = value;
+      }
+    }
+
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public override bool Equals(object other) {
       return Equals(other as LoginRequest);
@@ -646,6 +677,8 @@ namespace Protos {
         return true;
       }
       if (!object.Equals(UserInfo, other.UserInfo)) return false;
+      if (Lng != other.Lng) return false;
+      if (Lat != other.Lat) return false;
       return true;
     }
 
@@ -653,6 +686,8 @@ namespace Protos {
     public override int GetHashCode() {
       int hash = 1;
       if (userInfo_ != null) hash ^= UserInfo.GetHashCode();
+      if (Lng != 0D) hash ^= Lng.GetHashCode();
+      if (Lat != 0D) hash ^= Lat.GetHashCode();
       return hash;
     }
 
@@ -667,6 +702,14 @@ namespace Protos {
         output.WriteRawTag(10);
         output.WriteMessage(UserInfo);
       }
+      if (Lng != 0D) {
+        output.WriteRawTag(17);
+        output.WriteDouble(Lng);
+      }
+      if (Lat != 0D) {
+        output.WriteRawTag(25);
+        output.WriteDouble(Lat);
+      }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -675,6 +718,12 @@ namespace Protos {
       if (userInfo_ != null) {
         size += 1 + pb::CodedOutputStream.ComputeMessageSize(UserInfo);
       }
+      if (Lng != 0D) {
+        size += 1 + 8;
+      }
+      if (Lat != 0D) {
+        size += 1 + 8;
+      }
       return size;
     }
 
@@ -689,6 +738,12 @@ namespace Protos {
         }
         UserInfo.MergeFrom(other.UserInfo);
       }
+      if (other.Lng != 0D) {
+        Lng = other.Lng;
+      }
+      if (other.Lat != 0D) {
+        Lat = other.Lat;
+      }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -706,6 +761,14 @@ namespace Protos {
             input.ReadMessage(userInfo_);
             break;
           }
+          case 17: {
+            Lng = input.ReadDouble();
+            break;
+          }
+          case 25: {
+            Lat = input.ReadDouble();
+            break;
+          }
         }
       }
     }
@@ -744,6 +807,8 @@ namespace Protos {
       errmsg_ = other.errmsg_;
       t_ = other.t_;
       master_ = other.master_;
+      worldID_ = other.worldID_;
+      serverID_ = other.serverID_;
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -839,6 +904,28 @@ namespace Protos {
       }
     }
 
+    /// <summary>Field number for the "WorldID" field.</summary>
+    public const int WorldIDFieldNumber = 9;
+    private uint worldID_;
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public uint WorldID {
+      get { return worldID_; }
+      set {
+        worldID_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "ServerID" field.</summary>
+    public const int ServerIDFieldNumber = 10;
+    private ulong serverID_;
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public ulong ServerID {
+      get { return serverID_; }
+      set {
+        serverID_ = value;
+      }
+    }
+
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public override bool Equals(object other) {
       return Equals(other as LoginResponse);
@@ -860,6 +947,8 @@ namespace Protos {
       if (Errmsg != other.Errmsg) return false;
       if (T != other.T) return false;
       if (Master != other.Master) return false;
+      if (WorldID != other.WorldID) return false;
+      if (ServerID != other.ServerID) return false;
       return true;
     }
 
@@ -874,6 +963,8 @@ namespace Protos {
       if (Errmsg.Length != 0) hash ^= Errmsg.GetHashCode();
       if (T != 0UL) hash ^= T.GetHashCode();
       if (Master != false) hash ^= Master.GetHashCode();
+      if (WorldID != 0) hash ^= WorldID.GetHashCode();
+      if (ServerID != 0UL) hash ^= ServerID.GetHashCode();
       return hash;
     }
 
@@ -916,6 +1007,14 @@ namespace Protos {
         output.WriteRawTag(64);
         output.WriteBool(Master);
       }
+      if (WorldID != 0) {
+        output.WriteRawTag(72);
+        output.WriteUInt32(WorldID);
+      }
+      if (ServerID != 0UL) {
+        output.WriteRawTag(80);
+        output.WriteUInt64(ServerID);
+      }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -945,6 +1044,12 @@ namespace Protos {
       if (Master != false) {
         size += 1 + 1;
       }
+      if (WorldID != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(WorldID);
+      }
+      if (ServerID != 0UL) {
+        size += 1 + pb::CodedOutputStream.ComputeUInt64Size(ServerID);
+      }
       return size;
     }
 
@@ -980,6 +1085,12 @@ namespace Protos {
       if (other.Master != false) {
         Master = other.Master;
       }
+      if (other.WorldID != 0) {
+        WorldID = other.WorldID;
+      }
+      if (other.ServerID != 0UL) {
+        ServerID = other.ServerID;
+      }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -1025,6 +1136,14 @@ namespace Protos {
             Master = input.ReadBool();
             break;
           }
+          case 72: {
+            WorldID = input.ReadUInt32();
+            break;
+          }
+          case 80: {
+            ServerID = input.ReadUInt64();
+            break;
+          }
         }
       }
     }

+ 98 - 4
cs/Userinfo.cs

@@ -22,13 +22,14 @@ namespace Protos {
     static UserinfoReflection() {
       byte[] descriptorData = global::System.Convert.FromBase64String(
           string.Concat(
-            "Cg51c2VyaW5mby5wcm90bxIGcHJvdG9zIl0KCFVzZXJJbmZvEg4KBlVzZXJJ",
-            "RBgBIAEoDRIOCgZPcGVuaWQYAiABKAkSDwoHVW5pb25pZBgDIAEoCRIQCghO",
-            "aWNrbmFtZRgEIAEoCRIOCgZBdmF0YXIYBSABKAliBnByb3RvMw=="));
+            "Cg51c2VyaW5mby5wcm90bxIGcHJvdG9zIosBCghVc2VySW5mbxIOCgZVc2Vy",
+            "SUQYASABKA0SDgoGT3BlbmlkGAIgASgJEg8KB1VuaW9uaWQYAyABKAkSEAoI",
+            "Tmlja25hbWUYBCABKAkSDgoGQXZhdGFyGAUgASgJEhAKCElkZW50aXR5GAYg",
+            "ASgNEg0KBVJlYWR5GAcgASgIEgsKA3NpdBgIIAEoDWIGcHJvdG8z"));
       descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
           new pbr::FileDescriptor[] { },
           new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
-            new pbr::GeneratedClrTypeInfo(typeof(global::Protos.UserInfo), global::Protos.UserInfo.Parser, new[]{ "UserID", "Openid", "Unionid", "Nickname", "Avatar" }, null, null, null)
+            new pbr::GeneratedClrTypeInfo(typeof(global::Protos.UserInfo), global::Protos.UserInfo.Parser, new[]{ "UserID", "Openid", "Unionid", "Nickname", "Avatar", "Identity", "Ready", "Sit" }, null, null, null)
           }));
     }
     #endregion
@@ -64,6 +65,9 @@ namespace Protos {
       unionid_ = other.unionid_;
       nickname_ = other.nickname_;
       avatar_ = other.avatar_;
+      identity_ = other.identity_;
+      ready_ = other.ready_;
+      sit_ = other.sit_;
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -141,6 +145,48 @@ namespace Protos {
       }
     }
 
+    /// <summary>Field number for the "Identity" field.</summary>
+    public const int IdentityFieldNumber = 6;
+    private uint identity_;
+    /// <summary>
+    /// 其他扩展属性
+    /// </summary>
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public uint Identity {
+      get { return identity_; }
+      set {
+        identity_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "Ready" field.</summary>
+    public const int ReadyFieldNumber = 7;
+    private bool ready_;
+    /// <summary>
+    /// 用户状态 0=未准备; 1=已准备
+    /// </summary>
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public bool Ready {
+      get { return ready_; }
+      set {
+        ready_ = value;
+      }
+    }
+
+    /// <summary>Field number for the "sit" field.</summary>
+    public const int SitFieldNumber = 8;
+    private uint sit_;
+    /// <summary>
+    /// 用户座位号 0 ~ n
+    /// </summary>
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+    public uint Sit {
+      get { return sit_; }
+      set {
+        sit_ = value;
+      }
+    }
+
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
     public override bool Equals(object other) {
       return Equals(other as UserInfo);
@@ -159,6 +205,9 @@ namespace Protos {
       if (Unionid != other.Unionid) return false;
       if (Nickname != other.Nickname) return false;
       if (Avatar != other.Avatar) return false;
+      if (Identity != other.Identity) return false;
+      if (Ready != other.Ready) return false;
+      if (Sit != other.Sit) return false;
       return true;
     }
 
@@ -170,6 +219,9 @@ namespace Protos {
       if (Unionid.Length != 0) hash ^= Unionid.GetHashCode();
       if (Nickname.Length != 0) hash ^= Nickname.GetHashCode();
       if (Avatar.Length != 0) hash ^= Avatar.GetHashCode();
+      if (Identity != 0) hash ^= Identity.GetHashCode();
+      if (Ready != false) hash ^= Ready.GetHashCode();
+      if (Sit != 0) hash ^= Sit.GetHashCode();
       return hash;
     }
 
@@ -200,6 +252,18 @@ namespace Protos {
         output.WriteRawTag(42);
         output.WriteString(Avatar);
       }
+      if (Identity != 0) {
+        output.WriteRawTag(48);
+        output.WriteUInt32(Identity);
+      }
+      if (Ready != false) {
+        output.WriteRawTag(56);
+        output.WriteBool(Ready);
+      }
+      if (Sit != 0) {
+        output.WriteRawTag(64);
+        output.WriteUInt32(Sit);
+      }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -220,6 +284,15 @@ namespace Protos {
       if (Avatar.Length != 0) {
         size += 1 + pb::CodedOutputStream.ComputeStringSize(Avatar);
       }
+      if (Identity != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Identity);
+      }
+      if (Ready != false) {
+        size += 1 + 1;
+      }
+      if (Sit != 0) {
+        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Sit);
+      }
       return size;
     }
 
@@ -243,6 +316,15 @@ namespace Protos {
       if (other.Avatar.Length != 0) {
         Avatar = other.Avatar;
       }
+      if (other.Identity != 0) {
+        Identity = other.Identity;
+      }
+      if (other.Ready != false) {
+        Ready = other.Ready;
+      }
+      if (other.Sit != 0) {
+        Sit = other.Sit;
+      }
     }
 
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@@ -273,6 +355,18 @@ namespace Protos {
             Avatar = input.ReadString();
             break;
           }
+          case 48: {
+            Identity = input.ReadUInt32();
+            break;
+          }
+          case 56: {
+            Ready = input.ReadBool();
+            break;
+          }
+          case 64: {
+            Sit = input.ReadUInt32();
+            break;
+          }
         }
       }
     }

+ 1 - 0
protos/front.proto

@@ -25,6 +25,7 @@ message  CharacterPackage{
 
 int32 jump=15;
 int32 down=16;
+int32 ping=17;
 }
 message BoxPackage {
   int32 effect_id=1;