diff --git a/go.mod b/go.mod
index 28fabb20f..4b50cfaa0 100644
--- a/go.mod
+++ b/go.mod
@@ -9,6 +9,7 @@ require (
connectrpc.com/connect v1.19.1
connectrpc.com/otelconnect v0.9.0
connectrpc.com/validate v0.6.0
+ github.com/MicahParks/keyfunc/v3 v3.3.10
github.com/aws/aws-sdk-go-v2 v1.41.3
github.com/aws/aws-sdk-go-v2/config v1.32.11
github.com/aws/aws-sdk-go-v2/service/s3 v1.96.4
@@ -17,11 +18,9 @@ require (
github.com/expr-lang/expr v1.17.7
github.com/getsentry/sentry-go v0.36.2
github.com/goccy/go-json v0.10.5
- github.com/MicahParks/keyfunc/v3 v3.3.10
github.com/golang-jwt/jwt/v5 v5.2.2
github.com/google/uuid v1.6.0
github.com/invopop/jsonschema v0.13.0
- github.com/jackc/pgerrcode v0.0.0-20240316143900-6e2875d9b438
github.com/jackc/pgx/v5 v5.10.0
github.com/kelindar/bitmap v1.5.3
github.com/nats-io/nats-server/v2 v2.12.6
@@ -31,12 +30,13 @@ require (
github.com/rs/zerolog v1.34.0
github.com/shamaton/msgpack/v3 v3.0.0
github.com/stretchr/testify v1.11.1
- go.opentelemetry.io/otel v1.40.0
- go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0
- go.opentelemetry.io/otel/sdk v1.40.0
- go.opentelemetry.io/otel/trace v1.40.0
- google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409
- google.golang.org/grpc v1.79.3
+ go.opentelemetry.io/otel v1.44.0
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.44.0
+ go.opentelemetry.io/otel/sdk v1.44.0
+ go.opentelemetry.io/otel/trace v1.44.0
+ golang.org/x/net v0.55.0
+ google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa
+ google.golang.org/grpc v1.81.1
google.golang.org/protobuf v1.36.11
)
@@ -69,7 +69,7 @@ require (
github.com/go-logr/stdr v1.2.2 // indirect
github.com/google/cel-go v0.26.1 // indirect
github.com/google/go-tpm v0.9.8 // indirect
- github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 // indirect
+ github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 // indirect
github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect
github.com/jackc/pgpassfile v1.0.0 // indirect
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect
@@ -88,16 +88,15 @@ require (
github.com/stoewer/go-strcase v1.3.1 // indirect
github.com/wk8/go-ordered-map/v2 v2.1.8 // indirect
go.opentelemetry.io/auto/sdk v1.2.1 // indirect
- go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0 // indirect
- go.opentelemetry.io/otel/metric v1.40.0 // indirect
- go.opentelemetry.io/proto/otlp v1.9.0 // indirect
- golang.org/x/crypto v0.49.0 // indirect
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.44.0 // indirect
+ go.opentelemetry.io/otel/metric v1.44.0 // indirect
+ go.opentelemetry.io/proto/otlp v1.10.0 // indirect
+ golang.org/x/crypto v0.51.0 // indirect
golang.org/x/exp v0.0.0-20250911091902-df9299821621 // indirect
- golang.org/x/net v0.51.0 // indirect
golang.org/x/sync v0.20.0 // indirect
- golang.org/x/sys v0.42.0 // indirect
- golang.org/x/text v0.35.0 // indirect
+ golang.org/x/sys v0.45.0 // indirect
+ golang.org/x/text v0.37.0 // indirect
golang.org/x/time v0.15.0 // indirect
- google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 // indirect
+ google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)
diff --git a/go.sum b/go.sum
index 94e5c429c..cd633e26d 100644
--- a/go.sum
+++ b/go.sum
@@ -98,14 +98,12 @@ github.com/google/go-tpm v0.9.8 h1:slArAR9Ft+1ybZu0lBwpSmpwhRXaa85hWtMinMyRAWo=
github.com/google/go-tpm v0.9.8/go.mod h1:h9jEsEECg7gtLis0upRBQU+GhYVH6jMjrFxI8u6bVUY=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
-github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7 h1:X+2YciYSxvMQK0UZ7sg45ZVabVZBeBuvMkmuI2V3Fak=
-github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.7/go.mod h1:lW34nIZuQ8UDPdkon5fmfp2l3+ZkQ2me/+oecHYLOII=
+github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0 h1:5VipnvEpbqr2gA2VbM+nYVbkIF28c5ZQfqCBQ5g2xfk=
+github.com/grpc-ecosystem/grpc-gateway/v2 v2.29.0/go.mod h1:Hyl3n6Twe1hvtd9XUXDec4pTvgMSEixRuQKPTMH2bNs=
github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k=
github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM=
github.com/invopop/jsonschema v0.13.0 h1:KvpoAJWEjR3uD9Kbm2HWJmqsEaHt8lBUpd0qHcIi21E=
github.com/invopop/jsonschema v0.13.0/go.mod h1:ffZ5Km5SWWRAIN6wbDXItl95euhFz2uON45H2qjYt+0=
-github.com/jackc/pgerrcode v0.0.0-20240316143900-6e2875d9b438 h1:Dj0L5fhJ9F82ZJyVOmBx6msDp/kfd1t9GRfny/mfJA0=
-github.com/jackc/pgerrcode v0.0.0-20240316143900-6e2875d9b438/go.mod h1:a/s9Lp5W7n/DD0VrVoyJ00FbP2ytTPDVOivvn2bMlds=
github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM=
github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg=
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 h1:iCEnooe7UlwOQYpKFhBabPMi4aNAfoODPEFNiAnClxo=
@@ -179,30 +177,30 @@ github.com/wk8/go-ordered-map/v2 v2.1.8 h1:5h/BUHu93oj4gIdvHHHGsScSTMijfx5PeYkE/
github.com/wk8/go-ordered-map/v2 v2.1.8/go.mod h1:5nJHM5DyteebpVlHnWMV0rPz6Zp7+xBAnxjb1X5vnTw=
go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64=
go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y=
-go.opentelemetry.io/otel v1.40.0 h1:oA5YeOcpRTXq6NN7frwmwFR0Cn3RhTVZvXsP4duvCms=
-go.opentelemetry.io/otel v1.40.0/go.mod h1:IMb+uXZUKkMXdPddhwAHm6UfOwJyh4ct1ybIlV14J0g=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0 h1:QKdN8ly8zEMrByybbQgv8cWBcdAarwmIPZ6FThrWXJs=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.40.0/go.mod h1:bTdK1nhqF76qiPoCCdyFIV+N/sRHYXYCTQc+3VCi3MI=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0 h1:DvJDOPmSWQHWywQS6lKL+pb8s3gBLOZUtw4N+mavW1I=
-go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.40.0/go.mod h1:EtekO9DEJb4/jRyN4v4Qjc2yA7AtfCBuz2FynRUWTXs=
-go.opentelemetry.io/otel/metric v1.40.0 h1:rcZe317KPftE2rstWIBitCdVp89A2HqjkxR3c11+p9g=
-go.opentelemetry.io/otel/metric v1.40.0/go.mod h1:ib/crwQH7N3r5kfiBZQbwrTge743UDc7DTFVZrrXnqc=
-go.opentelemetry.io/otel/sdk v1.40.0 h1:KHW/jUzgo6wsPh9At46+h4upjtccTmuZCFAc9OJ71f8=
-go.opentelemetry.io/otel/sdk v1.40.0/go.mod h1:Ph7EFdYvxq72Y8Li9q8KebuYUr2KoeyHx0DRMKrYBUE=
-go.opentelemetry.io/otel/sdk/metric v1.40.0 h1:mtmdVqgQkeRxHgRv4qhyJduP3fYJRMX4AtAlbuWdCYw=
-go.opentelemetry.io/otel/sdk/metric v1.40.0/go.mod h1:4Z2bGMf0KSK3uRjlczMOeMhKU2rhUqdWNoKcYrtcBPg=
-go.opentelemetry.io/otel/trace v1.40.0 h1:WA4etStDttCSYuhwvEa8OP8I5EWu24lkOzp+ZYblVjw=
-go.opentelemetry.io/otel/trace v1.40.0/go.mod h1:zeAhriXecNGP/s2SEG3+Y8X9ujcJOTqQ5RgdEJcawiA=
-go.opentelemetry.io/proto/otlp v1.9.0 h1:l706jCMITVouPOqEnii2fIAuO3IVGBRPV5ICjceRb/A=
-go.opentelemetry.io/proto/otlp v1.9.0/go.mod h1:xE+Cx5E/eEHw+ISFkwPLwCZefwVjY+pqKg1qcK03+/4=
+go.opentelemetry.io/otel v1.44.0 h1:JjwHmHpA4iZ3wBxluu2fbbE7j4kqlE8jXyAyPXH7HqU=
+go.opentelemetry.io/otel v1.44.0/go.mod h1:BMgjTHL9WPRlRjL2oZCBTL4whCGtXch2H4BhOPIAyYc=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.44.0 h1:4YsVu3B8+3qtWYYrsUYgn0OG78pN0rnNPRGX4SbokQI=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.44.0/go.mod h1:+wnlSn0mD1ADVMe3v9Z/WIaiz6q6gL2J/ejaAmdmv80=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.44.0 h1:qazEJlUOQzhCpzQpFETGby7EdqjI1wsd0W+6Gg1SCTU=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.44.0/go.mod h1:fOD2Yefuxixkx3ahVNf0O/PERb6r4OlbxfATVnYvzCo=
+go.opentelemetry.io/otel/metric v1.44.0 h1:1w0gILTcHdr3YI+ixLyjemwrVnsMURbTZFrSYCdDdmc=
+go.opentelemetry.io/otel/metric v1.44.0/go.mod h1:8O7hanEPBNgEMmybD3s2VBKcgWOCsA6tzHBPODAiquo=
+go.opentelemetry.io/otel/sdk v1.44.0 h1:nHYwb9lK+fJPU/dnT6s7W7Z8itMWyqrnVfbheVYrZ58=
+go.opentelemetry.io/otel/sdk v1.44.0/go.mod h1:Osuydd3Se74nqjAKxid74N5eC+jfEqfTegHRnq58oK0=
+go.opentelemetry.io/otel/sdk/metric v1.44.0 h1:3LlKgI+VjbVsjNRFZJZAJ30WjXC5VkNRks6si09iEfI=
+go.opentelemetry.io/otel/sdk/metric v1.44.0/go.mod h1:5B5pMARnXxKhltooO4xUuCBorl65a4EpnTalObqOigA=
+go.opentelemetry.io/otel/trace v1.44.0 h1:jxF5CsGYCe74MCRx2X4g7WsY/VBKRqqpNvXlX/6gtIk=
+go.opentelemetry.io/otel/trace v1.44.0/go.mod h1:oLl1jrMQAVo6v3GAggN+1VH9VIz9iUSvW53sW1Q8PIE=
+go.opentelemetry.io/proto/otlp v1.10.0 h1:IQRWgT5srOCYfiWnpqUYz9CVmbO8bFmKcwYxpuCSL2g=
+go.opentelemetry.io/proto/otlp v1.10.0/go.mod h1:/CV4QoCR/S9yaPj8utp3lvQPoqMtxXdzn7ozvvozVqk=
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
-golang.org/x/crypto v0.49.0 h1:+Ng2ULVvLHnJ/ZFEq4KdcDd/cfjrrjjNSXNzxg0Y4U4=
-golang.org/x/crypto v0.49.0/go.mod h1:ErX4dUh2UM+CFYiXZRTcMpEcN8b/1gxEuv3nODoYtCA=
+golang.org/x/crypto v0.51.0 h1:IBPXwPfKxY7cWQZ38ZCIRPI50YLeevDLlLnyC5wRGTI=
+golang.org/x/crypto v0.51.0/go.mod h1:8AdwkbraGNABw2kOX6YFPs3WM22XqI4EXEd8g+x7Oc8=
golang.org/x/exp v0.0.0-20250911091902-df9299821621 h1:2id6c1/gto0kaHYyrixvknJ8tUK/Qs5IsmBtrc+FtgU=
golang.org/x/exp v0.0.0-20250911091902-df9299821621/go.mod h1:TwQYMMnGpvZyc+JpB/UAuTNIsVJifOlSkrZkhcvpVUk=
-golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo=
-golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y=
+golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8=
+golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww=
golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4=
golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=
golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
@@ -210,20 +208,20 @@ golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
-golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo=
-golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
-golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8=
-golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA=
+golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY=
+golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
+golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc=
+golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38=
golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U=
golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno=
-gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk=
-gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E=
-google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409 h1:merA0rdPeUV3YIIfHHcH4qBkiQAc1nfCKSI7lB4cV2M=
-google.golang.org/genproto/googleapis/api v0.0.0-20260128011058-8636f8732409/go.mod h1:fl8J1IvUjCilwZzQowmw2b7HQB2eAuYBabMXzWurF+I=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409 h1:H86B94AW+VfJWDqFeEbBPhEtHzJwJfTbgE2lZa54ZAQ=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20260128011058-8636f8732409/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ=
-google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE=
-google.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ=
+gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4=
+gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E=
+google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa h1:Kjn0N0tCrDgiAFW+lGO4JZ3ck44CehvJQMAwj9QF0G8=
+google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa/go.mod h1:q4lMZS6kskjT5HvCPrnnypcDPVJqT/f4nfxmkE7gryY=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa h1:mZHHdPZl0dbGHCflZgAq/Q468DWVFcU2whhB2KAo8fk=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8=
+google.golang.org/grpc v1.81.1 h1:VnnIIZ88UzOOKLukQi+ImGz8O1Wdp8nAGGnvOfEIWQQ=
+google.golang.org/grpc v1.81.1/go.mod h1:xGH9GfzOyMTGIOXBJmXt+BX/V0kcdQbdcuwQ/zNw42I=
google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE=
google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
diff --git a/pkg/cardinal/cardinal.go b/pkg/cardinal/cardinal.go
index f50303d0c..f72139fdd 100644
--- a/pkg/cardinal/cardinal.go
+++ b/pkg/cardinal/cardinal.go
@@ -138,6 +138,11 @@ func NewWorld(opts WorldOptions) (*World, error) {
// StartGame launches your game and runs it until stopped.
func (w *World) StartGame() {
+ // Freeze the command codec registry: all codecs register from generated init() (before now), so
+ // any later RegisterCommandCodec is a bug. Sealing turns that into a clear panic instead of an
+ // unrecoverable concurrent-map write against the tick loop's hot-path reads.
+ command.Seal()
+
ctx, stop := signal.NotifyContext(context.Background(), syscall.SIGINT, syscall.SIGTERM)
defer stop()
diff --git a/pkg/cardinal/dst.go b/pkg/cardinal/dst.go
index e4687acd0..760ccb648 100644
--- a/pkg/cardinal/dst.go
+++ b/pkg/cardinal/dst.go
@@ -27,7 +27,6 @@ import (
"github.com/argus-labs/world-engine/pkg/cardinal/internal/command"
"github.com/argus-labs/world-engine/pkg/cardinal/internal/ecs"
"github.com/argus-labs/world-engine/pkg/cardinal/internal/event"
- "github.com/argus-labs/world-engine/pkg/cardinal/internal/schema"
"github.com/argus-labs/world-engine/pkg/cardinal/snapshot"
"github.com/argus-labs/world-engine/pkg/testutils"
cardinalv1 "github.com/argus-labs/world-engine/proto/gen/go/worldengine/cardinal/v1"
@@ -271,7 +270,7 @@ func (f *dstFixture) randCommand(t *testing.T, rng *rand.Rand, name string) *isc
fillRandom(rng, val, f.world.world.LiveEntityIDs()) // Recursive so not inlined
p, ok := val.Interface().(command.Payload)
require.True(t, ok, "type assertion to command.Payload failed for %q", name)
- payload, err := schema.Serialize(p)
+ payload, err := command.Marshal(p)
require.NoError(t, err)
return &iscv1.Command{
Name: name,
@@ -282,7 +281,7 @@ func (f *dstFixture) randCommand(t *testing.T, rng *rand.Rand, name string) *isc
}
func (f *dstFixture) enqueueCommand(cmd Command) error {
- payload, err := schema.Serialize(cmd)
+ payload, err := command.Marshal(cmd)
if err != nil {
return err
}
diff --git a/pkg/cardinal/e2e.go b/pkg/cardinal/e2e.go
index 4378874ee..f9c57920d 100644
--- a/pkg/cardinal/e2e.go
+++ b/pkg/cardinal/e2e.go
@@ -23,7 +23,6 @@ import (
"github.com/argus-labs/world-engine/pkg/cardinal/internal/command"
"github.com/argus-labs/world-engine/pkg/cardinal/internal/ecs"
"github.com/argus-labs/world-engine/pkg/cardinal/internal/event"
- "github.com/argus-labs/world-engine/pkg/cardinal/internal/schema"
"github.com/argus-labs/world-engine/pkg/micro"
"github.com/argus-labs/world-engine/pkg/testutils"
cardinalv1 "github.com/argus-labs/world-engine/proto/gen/go/worldengine/cardinal/v1"
@@ -252,7 +251,7 @@ func (f *e2eFixture) randCommand(t *testing.T, rng *rand.Rand, name string) *isc
fillRandom(rng, val, f.world.world.LiveEntityIDs())
p, ok := val.Interface().(command.Payload)
require.True(t, ok, "type assertion to command.Payload failed for %q", name)
- payload, err := schema.Serialize(p)
+ payload, err := command.Marshal(p)
require.NoError(t, err)
return &iscv1.Command{
Name: name,
diff --git a/pkg/cardinal/internal/command/codec.go b/pkg/cardinal/internal/command/codec.go
new file mode 100644
index 000000000..bc9fbe3dc
--- /dev/null
+++ b/pkg/cardinal/internal/command/codec.go
@@ -0,0 +1,78 @@
+package command
+
+import (
+ "sync/atomic"
+
+ "github.com/rotisserie/eris"
+)
+
+// Codec encodes and decodes a command payload to and from its wire bytes. Each command type has its
+// own codec (generated from its schema); the engine does not know a command's shape, so it looks the
+// codec up by command name. Unmarshal returns a fresh payload rather than mutating a receiver, so a
+// codec implementation needs no pointer receivers.
+type Codec interface {
+ Marshal(Payload) ([]byte, error)
+ Unmarshal([]byte) (Payload, error)
+}
+
+// codecs maps a command name to its wire codec. It is populated once at init time by generated code
+// (command package imported wherever the command is used), then only read, so it needs no locking.
+//
+//nolint:gochecknoglobals // command codec registry: set once at init, read-only thereafter
+var codecs = map[string]Codec{}
+
+// sealed freezes the registry once the world starts. After that the map is immutable, so the hot-path
+// reads in Marshal/unmarshal stay lock-free; a register attempt after sealing is a programming error.
+//
+//nolint:gochecknoglobals // paired with codecs; write-once at StartGame
+var sealed atomic.Bool
+
+// Seal freezes the codec registry. cardinal calls it when a world starts. Codecs must be registered
+// from generated init() (which runs before any StartGame); registering afterwards would be an
+// unrecoverable concurrent-map write against the command hot path, so a post-seal register panics
+// deterministically instead of racing.
+func Seal() {
+ sealed.Store(true)
+}
+
+// RegisterCodec registers the wire codec for a command name. Generated code calls this from init().
+// A name may be registered only once: a duplicate means two generated files claim the same wire name
+// (e.g. a stale commands_wire.gen.go left behind after a command moved packages), so we fail loudly at
+// startup rather than let a last-wins map write silently shadow the correct codec. Registration must
+// happen before the world starts (Seal); a later call panics rather than racing the hot-path reads.
+func RegisterCodec(name string, c Codec) {
+ if sealed.Load() {
+ panic(eris.Errorf(
+ "command codec registry is sealed: register %q from generated init(), not after the world starts",
+ name,
+ ))
+ }
+ if _, exists := codecs[name]; exists {
+ panic(eris.Errorf("command %q already has a registered codec (duplicate or stale generated code)", name))
+ }
+ codecs[name] = c
+}
+
+// HasCodec reports whether a codec is registered for the command name.
+func HasCodec(name string) bool {
+ _, ok := codecs[name]
+ return ok
+}
+
+// Marshal encodes a command payload using its registered codec.
+func Marshal(p Payload) ([]byte, error) {
+ c, ok := codecs[p.Name()]
+ if !ok {
+ return nil, eris.Errorf("command %q has no registered codec (run the generator)", p.Name())
+ }
+ return c.Marshal(p)
+}
+
+// unmarshal decodes wire bytes for the named command using its registered codec.
+func unmarshal(name string, data []byte) (Payload, error) {
+ c, ok := codecs[name]
+ if !ok {
+ return nil, eris.Errorf("command %q has no registered codec (run the generator)", name)
+ }
+ return c.Unmarshal(data)
+}
diff --git a/pkg/cardinal/internal/command/command.go b/pkg/cardinal/internal/command/command.go
index c0a5235cb..4087136e1 100644
--- a/pkg/cardinal/internal/command/command.go
+++ b/pkg/cardinal/internal/command/command.go
@@ -93,7 +93,9 @@ func (m *Manager) Enqueue(command *iscv1.Command) error {
assert.That(command.GetName() != "", "command has empty name")
assert.That(command.GetAddress() != nil, "command has nil address")
assert.That(command.GetPersona() != nil, "command has nil persona")
- assert.That(command.GetPayload() != nil, "command has nil payload")
+ // Payload may be empty: a command whose proto message has no set fields serializes to zero
+ // bytes (e.g. lobby_heartbeat). Identity lives in name/address/persona, so an empty payload
+ // is valid — only those three are real invariants.
// We're doing 2 lookups here to keep the Enqueue caller simple, at the cost of less performance.
// If this is determined to be a bottleneck in the future, do what callers of Get do and store the
@@ -155,9 +157,9 @@ func (m *Manager) Names() []string {
return names
}
-// ZeroPayload returns a zero-value instance of the named command's payload type.
+// Zero returns a zero-value instance of the named command's payload type.
func (m *Manager) Zero(name string) Payload {
id, exists := m.catalog[name]
- assert.That(exists, "command doens't exist")
+ assert.That(exists, "command doesn't exist")
return m.queues[id].Zero()
}
diff --git a/pkg/cardinal/internal/command/command_test.go b/pkg/cardinal/internal/command/command_test.go
index 298098bf2..10e7020bb 100644
--- a/pkg/cardinal/internal/command/command_test.go
+++ b/pkg/cardinal/internal/command/command_test.go
@@ -6,7 +6,7 @@ import (
"testing"
"github.com/argus-labs/world-engine/pkg/cardinal/internal/command"
- "github.com/argus-labs/world-engine/pkg/cardinal/internal/schema"
+ _ "github.com/argus-labs/world-engine/pkg/cardinal/internal/commandtest"
"github.com/argus-labs/world-engine/pkg/testutils"
iscv1 "github.com/argus-labs/world-engine/proto/gen/go/worldengine/isc/v1"
microv1 "github.com/argus-labs/world-engine/proto/gen/go/worldengine/micro/v1"
@@ -53,7 +53,7 @@ func TestCommand_ModelFuzz(t *testing.T) {
case opEnqueue:
// Pick a random command type and enqueue.
payload := generators[prng.IntN(len(generators))]()
- pbPayload, err := schema.Serialize(payload)
+ pbPayload, err := command.Marshal(payload)
require.NoError(t, err)
persona := testutils.RandString(prng, 8)
@@ -315,7 +315,7 @@ func TestCommand_ConcurrentEnqueue(t *testing.T) {
payload = testutils.CommandB{ID: uint64(i), Label: "test", Enabled: true}
}
- pbPayload, err := schema.Serialize(payload)
+ pbPayload, err := command.Marshal(payload)
if err != nil {
t.Errorf("Serialize failed: %v", err)
return
diff --git a/pkg/cardinal/internal/command/queue.go b/pkg/cardinal/internal/command/queue.go
index 695364ec1..1aaa47261 100644
--- a/pkg/cardinal/internal/command/queue.go
+++ b/pkg/cardinal/internal/command/queue.go
@@ -3,7 +3,6 @@ package command
import (
"sync"
- "github.com/argus-labs/world-engine/pkg/cardinal/internal/schema"
iscv1 "github.com/argus-labs/world-engine/proto/gen/go/worldengine/isc/v1"
"github.com/rotisserie/eris"
)
@@ -40,23 +39,24 @@ func NewQueue[T Payload]() Queue {
// Enqueue validates and adds a command to the queue. It performs type checking to ensure the
// command matches the expected type T, unmarshals the command payload, and appends it to the queue.
// Returns an error if validation fails or marshaling/unmarshaling operations fail.
-func (q *sliceQueue[T]) Enqueue(command *iscv1.Command) error {
+func (q *sliceQueue[T]) Enqueue(cmd *iscv1.Command) error {
var zero T
- if command.GetName() != zero.Name() {
- return eris.Errorf("mismatched command name, expected %s, actual %s", zero.Name(), command.GetName())
+ if cmd.GetName() != zero.Name() {
+ return eris.Errorf("mismatched command name, expected %s, actual %s", zero.Name(), cmd.GetName())
}
- if err := schema.Deserialize(command.GetPayload(), &zero); err != nil {
- return eris.Wrap(err, "failed to deserialize command payload")
+ payload, err := unmarshal(cmd.GetName(), cmd.GetPayload())
+ if err != nil {
+ return eris.Wrapf(err, "failed to decode command payload for %q", zero.Name())
}
q.mu.Lock()
q.commands = append(q.commands, Command{
- Name: zero.Name(),
- Address: command.GetAddress(),
- Persona: command.GetPersona().GetId(),
- Payload: zero,
+ Name: cmd.GetName(),
+ Address: cmd.GetAddress(),
+ Persona: cmd.GetPersona().GetId(),
+ Payload: payload,
})
q.mu.Unlock()
return nil
diff --git a/pkg/cardinal/internal/command/queue_test.go b/pkg/cardinal/internal/command/queue_test.go
index 8de0c7411..4dd5f7aa4 100644
--- a/pkg/cardinal/internal/command/queue_test.go
+++ b/pkg/cardinal/internal/command/queue_test.go
@@ -4,7 +4,6 @@ import (
"testing"
"github.com/argus-labs/world-engine/pkg/cardinal/internal/command"
- "github.com/argus-labs/world-engine/pkg/cardinal/internal/schema"
"github.com/argus-labs/world-engine/pkg/testutils"
iscv1 "github.com/argus-labs/world-engine/proto/gen/go/worldengine/isc/v1"
microv1 "github.com/argus-labs/world-engine/proto/gen/go/worldengine/micro/v1"
@@ -42,7 +41,7 @@ func TestQueue_ModelFuzz(t *testing.T) {
case opEnqueue:
cmd := testutils.SimpleCommand{Value: int(prng.Int32())}
- payload, err := schema.Serialize(cmd)
+ payload, err := command.Marshal(cmd)
require.NoError(t, err)
name := cmd.Name()
diff --git a/pkg/cardinal/internal/command/roundtrip_test.go b/pkg/cardinal/internal/command/roundtrip_test.go
new file mode 100644
index 000000000..33b818642
--- /dev/null
+++ b/pkg/cardinal/internal/command/roundtrip_test.go
@@ -0,0 +1,55 @@
+package command_test
+
+import (
+ "testing"
+
+ "github.com/argus-labs/world-engine/pkg/cardinal/internal/command"
+ _ "github.com/argus-labs/world-engine/pkg/cardinal/internal/commandtest" // registers fixture codecs
+ "github.com/argus-labs/world-engine/pkg/testutils"
+ iscv1 "github.com/argus-labs/world-engine/proto/gen/go/worldengine/isc/v1"
+ microv1 "github.com/argus-labs/world-engine/proto/gen/go/worldengine/micro/v1"
+ "github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/require"
+)
+
+// assertCodecRoundTripType marshals value with its registered codec, enqueues it onto a queue typed for
+// T, drains it, and asserts the stored payload is exactly T with the same value.
+//
+// The queue only guards the command name; it stores whatever the codec's Unmarshal returns without
+// re-checking its concrete type. The Payload-is-T check lives downstream in newCommandContext as an
+// assert.That, which is a no-op in release builds — so a codec that returned the wrong type would, in
+// production, silently hand a zero-value T to systems. This test asserts type identity with testify, so
+// a mismatched/buggy codec fails the test regardless of build flags.
+func assertCodecRoundTripType[T command.Payload](t *testing.T, value T) {
+ t.Helper()
+
+ payload, err := command.Marshal(value)
+ require.NoError(t, err)
+
+ q := command.NewQueue[T]()
+ require.NoError(t, q.Enqueue(&iscv1.Command{
+ Name: value.Name(),
+ Address: µv1.ServiceAddress{},
+ Persona: &iscv1.Persona{Id: "round-trip"},
+ Payload: payload,
+ }))
+
+ var drained []command.Command
+ q.Drain(&drained)
+ require.Len(t, drained, 1)
+
+ got, ok := drained[0].Payload.(T)
+ require.Truef(t, ok, "payload type identity lost: got %T, want %T", drained[0].Payload, value)
+ assert.Equal(t, value, got)
+}
+
+// TestQueue_CodecRoundTripPreservesType round-trips each fixture command through
+// Marshal -> Enqueue -> Drain and asserts the decoded payload keeps its concrete type and value.
+func TestQueue_CodecRoundTripPreservesType(t *testing.T) {
+ t.Parallel()
+
+ assertCodecRoundTripType(t, testutils.SimpleCommand{Value: 42})
+ assertCodecRoundTripType(t, testutils.CommandA{X: 1.5, Y: -2.25, Z: 3.75})
+ assertCodecRoundTripType(t, testutils.CommandB{ID: 7, Label: "hello world", Enabled: true})
+ assertCodecRoundTripType(t, testutils.CommandC{Values: [8]int32{1, 2, 3, 4, 5, 6, 7, 8}, Counter: 9})
+}
diff --git a/pkg/cardinal/internal/commandtest/commandtest.go b/pkg/cardinal/internal/commandtest/commandtest.go
new file mode 100644
index 000000000..561efde87
--- /dev/null
+++ b/pkg/cardinal/internal/commandtest/commandtest.go
@@ -0,0 +1,124 @@
+// Package commandtest registers wire codecs for the shared testutils command fixtures so that command
+// tests across pkg/cardinal can enqueue them. The fixtures live in pkg/testutils (which can't import
+// the internal command package), so their codecs live here instead. Test binaries blank-import this
+// package to get the registration via init, mirroring how generated code registers real commands.
+package commandtest
+
+import (
+ "bytes"
+ "encoding/binary"
+ "io"
+
+ "github.com/argus-labs/world-engine/pkg/cardinal/internal/command"
+ "github.com/argus-labs/world-engine/pkg/testutils"
+ "github.com/rotisserie/eris"
+)
+
+//nolint:gochecknoinits // registers test-fixture codecs on package load, mirroring generated code
+func init() {
+ command.RegisterCodec("simple_command", simpleCodec{})
+ command.RegisterCodec("command_a", aCodec{})
+ command.RegisterCodec("command_b", bCodec{})
+ command.RegisterCodec("command_c", cCodec{})
+}
+
+// Codecs hand-roll the wire format with encoding/binary (no msgpack — commands never use msgpack).
+// Unmarshal returns a fresh value, so every method is a value receiver.
+
+type simpleCodec struct{}
+
+func (simpleCodec) Marshal(p command.Payload) ([]byte, error) {
+ c, ok := p.(testutils.SimpleCommand)
+ if !ok {
+ return nil, eris.Errorf("expected SimpleCommand, got %T", p)
+ }
+ var b bytes.Buffer
+ err := binary.Write(&b, binary.LittleEndian, int64(c.Value))
+ return b.Bytes(), err
+}
+
+func (simpleCodec) Unmarshal(data []byte) (command.Payload, error) {
+ var v int64
+ if err := binary.Read(bytes.NewReader(data), binary.LittleEndian, &v); err != nil {
+ return nil, err
+ }
+ return testutils.SimpleCommand{Value: int(v)}, nil
+}
+
+type aCodec struct{}
+
+func (aCodec) Marshal(p command.Payload) ([]byte, error) {
+ c, ok := p.(testutils.CommandA)
+ if !ok {
+ return nil, eris.Errorf("expected CommandA, got %T", p)
+ }
+ var b bytes.Buffer
+ err := binary.Write(&b, binary.LittleEndian, c)
+ return b.Bytes(), err
+}
+
+func (aCodec) Unmarshal(data []byte) (command.Payload, error) {
+ var c testutils.CommandA
+ if err := binary.Read(bytes.NewReader(data), binary.LittleEndian, &c); err != nil {
+ return nil, err
+ }
+ return c, nil
+}
+
+type bCodec struct{}
+
+func (bCodec) Marshal(p command.Payload) ([]byte, error) {
+ c, ok := p.(testutils.CommandB)
+ if !ok {
+ return nil, eris.Errorf("expected CommandB, got %T", p)
+ }
+ var b bytes.Buffer
+ if err := binary.Write(&b, binary.LittleEndian, c.ID); err != nil {
+ return nil, err
+ }
+ if err := binary.Write(&b, binary.LittleEndian, c.Enabled); err != nil {
+ return nil, err
+ }
+ // Label is variable-length, so it goes last and consumes the rest on decode.
+ if err := binary.Write(&b, binary.LittleEndian, []byte(c.Label)); err != nil {
+ return nil, err
+ }
+ return b.Bytes(), nil
+}
+
+func (bCodec) Unmarshal(data []byte) (command.Payload, error) {
+ b := bytes.NewReader(data)
+ var c testutils.CommandB
+ if err := binary.Read(b, binary.LittleEndian, &c.ID); err != nil {
+ return nil, err
+ }
+ if err := binary.Read(b, binary.LittleEndian, &c.Enabled); err != nil {
+ return nil, err
+ }
+ label := make([]byte, b.Len())
+ if _, err := io.ReadFull(b, label); err != nil {
+ return nil, err
+ }
+ c.Label = string(label)
+ return c, nil
+}
+
+type cCodec struct{}
+
+func (cCodec) Marshal(p command.Payload) ([]byte, error) {
+ c, ok := p.(testutils.CommandC)
+ if !ok {
+ return nil, eris.Errorf("expected CommandC, got %T", p)
+ }
+ var b bytes.Buffer
+ err := binary.Write(&b, binary.LittleEndian, c)
+ return b.Bytes(), err
+}
+
+func (cCodec) Unmarshal(data []byte) (command.Payload, error) {
+ var c testutils.CommandC
+ if err := binary.Read(bytes.NewReader(data), binary.LittleEndian, &c); err != nil {
+ return nil, err
+ }
+ return c, nil
+}
diff --git a/pkg/cardinal/internal/schema/schema.go b/pkg/cardinal/internal/schema/schema.go
index f48a8192b..7c5feed55 100644
--- a/pkg/cardinal/internal/schema/schema.go
+++ b/pkg/cardinal/internal/schema/schema.go
@@ -12,7 +12,7 @@ type Serializable interface {
Name() string
}
-// Serialize converts a Serializable to bytes.
+// Serialize converts a Serializable (component/event) to bytes via msgpack.
// The underlying format is an implementation detail and may change.
func Serialize(s Serializable) ([]byte, error) {
data, err := msgpack.Marshal(s)
@@ -22,8 +22,7 @@ func Serialize(s Serializable) ([]byte, error) {
return data, nil
}
-// Deserialize converts bytes back into a value.
-// The underlying format is an implementation detail and may change.
+// Deserialize converts bytes back into a value (component/event) via msgpack.
// The value v must be a pointer to the target type.
func Deserialize(data []byte, v any) (err error) {
defer func() {
diff --git a/pkg/cardinal/service.go b/pkg/cardinal/service.go
index 14375d697..284e97a78 100644
--- a/pkg/cardinal/service.go
+++ b/pkg/cardinal/service.go
@@ -30,8 +30,6 @@ import (
"github.com/rotisserie/eris"
"github.com/rs/zerolog"
"github.com/shamaton/msgpack/v3"
- "golang.org/x/net/http2"
- "golang.org/x/net/http2/h2c"
"google.golang.org/grpc/codes"
)
@@ -65,6 +63,16 @@ func newService(world *World, authMode AuthMode, argusAuthURL string) *service {
}
}
+// h2cProtocols enables HTTP/1.1 and unencrypted HTTP/2 (h2c), matching the
+// previous h2c.NewHandler(mux, &http2.Server{}) behavior without the deprecated
+// golang.org/x/net/http2/h2c package.
+func h2cProtocols() *http.Protocols {
+ p := new(http.Protocols)
+ p.SetHTTP1(true)
+ p.SetUnencryptedHTTP2(true)
+ return p
+}
+
func (s *service) init(address string) error {
clientOpts := []micro.ClientOption{micro.WithLogger(s.world.tel.GetLogger("service"))}
if cfg := s.world.options.NATSConfig; cfg != nil {
@@ -132,8 +140,9 @@ func (s *service) init(address string) error {
s.server = &http.Server{
Addr: address,
- Handler: h2c.NewHandler(mux, &http2.Server{}),
+ Handler: mux,
ReadHeaderTimeout: 10 * time.Second,
+ Protocols: h2cProtocols(),
}
listener, err := (&net.ListenConfig{}).Listen(context.Background(), "tcp", address)
@@ -613,7 +622,7 @@ func (s *service) publishInterShardCommand(evt event.Event) error {
}
assert.That(isc.Address != nil, "inter shard command has nil address")
- payload, err := schema.Serialize(isc.Payload)
+ payload, err := command.Marshal(isc.Payload)
if err != nil {
return eris.Wrap(err, "failed to marshal command payload")
}
diff --git a/pkg/cardinal/service_internal_test.go b/pkg/cardinal/service_internal_test.go
index 2764e5b7a..c9df0523f 100644
--- a/pkg/cardinal/service_internal_test.go
+++ b/pkg/cardinal/service_internal_test.go
@@ -38,7 +38,7 @@ func TestService_SendCommand(t *testing.T) {
fixture := newServiceFixture(t, prng, false)
payload := testutils.SimpleCommand{Value: prng.IntN(1_000_000)}
- payloadBytes, err := schema.Serialize(payload)
+ payloadBytes, err := command.Marshal(payload)
require.NoError(t, err)
userID := testutils.RandString(prng, 8)
cmdPb := &iscv1.Command{
@@ -68,7 +68,7 @@ func TestService_SendCommand(t *testing.T) {
fixture := newServiceFixture(t, prng, false)
payload := testutils.SimpleCommand{Value: 42}
- payloadBytes, err := schema.Serialize(payload)
+ payloadBytes, err := command.Marshal(payload)
require.NoError(t, err)
cmdPb := &iscv1.Command{
Name: payload.Name(),
diff --git a/pkg/cardinal/system.go b/pkg/cardinal/system.go
index 7a642b6a9..e5b3f5b0d 100644
--- a/pkg/cardinal/system.go
+++ b/pkg/cardinal/system.go
@@ -200,6 +200,16 @@ func (b *BaseSystemState) Timestamp() time.Time {
type Command = command.Payload
+// CommandCodec encodes and decodes a command payload to and from its wire bytes. Generated code
+// implements one per command type and registers it via RegisterCommandCodec.
+type CommandCodec = command.Codec
+
+// RegisterCommandCodec registers the wire codec for a command name. Generated code calls this from an
+// init() in the command's package, so the codec is available once that package is imported.
+func RegisterCommandCodec(name string, c CommandCodec) {
+ command.RegisterCodec(name, c)
+}
+
type WithCommand[T Command] struct {
manager *command.Manager
id command.ID
@@ -209,6 +219,10 @@ func (c *WithCommand[T]) init(meta *systemInitMetadata) error {
var zero T
name := zero.Name()
+ if !command.HasCodec(name) {
+ return eris.Errorf("command %q has no registered codec (run the generator)", name)
+ }
+
if _, ok := meta.commands[name]; ok {
return eris.Errorf("systems cannot process multiple commands of the same type: %s", name)
}
diff --git a/pkg/cardinal/system_internal_test.go b/pkg/cardinal/system_internal_test.go
index aa55b6f17..9e82571e5 100644
--- a/pkg/cardinal/system_internal_test.go
+++ b/pkg/cardinal/system_internal_test.go
@@ -4,9 +4,9 @@ import (
"testing"
"github.com/argus-labs/world-engine/pkg/cardinal/internal/command"
+ _ "github.com/argus-labs/world-engine/pkg/cardinal/internal/commandtest"
"github.com/argus-labs/world-engine/pkg/cardinal/internal/ecs"
"github.com/argus-labs/world-engine/pkg/cardinal/internal/event"
- "github.com/argus-labs/world-engine/pkg/cardinal/internal/schema"
"github.com/argus-labs/world-engine/pkg/testutils"
iscv1 "github.com/argus-labs/world-engine/proto/gen/go/worldengine/isc/v1"
microv1 "github.com/argus-labs/world-engine/proto/gen/go/worldengine/micro/v1"
@@ -110,11 +110,11 @@ func newCommandFixture(t *testing.T) *commandFixture {
return fixture
}
-// enqueueCommand is a helper that marshals a command payload to protobuf and enqueues it.
+// enqueueCommand is a helper that marshals a command payload through its wire layer and enqueues it.
func (f *commandFixture) enqueueCommand(t *testing.T, payload command.Payload, persona string) {
t.Helper()
- bytes, err := schema.Serialize(payload)
+ bytes, err := command.Marshal(payload)
require.NoError(t, err)
cmdpb := &iscv1.Command{
diff --git a/pkg/plugin/lobby/cs/GithubComArgusLabsWorldEnginePkgPluginLobbyGen.cs b/pkg/plugin/lobby/cs/GithubComArgusLabsWorldEnginePkgPluginLobbyGen.cs
new file mode 100644
index 000000000..3acc8b96c
--- /dev/null
+++ b/pkg/plugin/lobby/cs/GithubComArgusLabsWorldEnginePkgPluginLobbyGen.cs
@@ -0,0 +1,4390 @@
+//
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: github_com_argus_labs_world_engine_pkg_plugin_lobby_gen.proto
+//
+#pragma warning disable 1591, 0612, 3021, 8981
+#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 commands {
+
+ /// Holder for reflection information generated from github_com_argus_labs_world_engine_pkg_plugin_lobby_gen.proto
+ public static partial class GithubComArgusLabsWorldEnginePkgPluginLobbyGenReflection {
+
+ #region Descriptor
+ /// File descriptor for github_com_argus_labs_world_engine_pkg_plugin_lobby_gen.proto
+ public static pbr::FileDescriptor Descriptor {
+ get { return descriptor; }
+ }
+ private static pbr::FileDescriptor descriptor;
+
+ static GithubComArgusLabsWorldEnginePkgPluginLobbyGenReflection() {
+ byte[] descriptorData = global::System.Convert.FromBase64String(
+ string.Concat(
+ "Cj1naXRodWJfY29tX2FyZ3VzX2xhYnNfd29ybGRfZW5naW5lX3BrZ19wbHVn",
+ "aW5fbG9iYnlfZ2VuLnByb3RvEjdnaXRodWJfY29tX2FyZ3VzX2xhYnNfd29y",
+ "bGRfZW5naW5lX3BrZ19wbHVnaW5fbG9iYnlfZ2VuIskBChJBc3NpZ25TaGFy",
+ "ZENvbW1hbmQSGAoHTG9iYnlJRBgBIAEoCVIHTG9iYnlJRBIcCglSZXF1ZXN0",
+ "SUQYAiABKAlSCVJlcXVlc3RJRBJjCglHYW1lV29ybGQYAyABKAsyRS5naXRo",
+ "dWJfY29tX2FyZ3VzX2xhYnNfd29ybGRfZW5naW5lX3BrZ19wbHVnaW5fbG9i",
+ "YnlfZ2VuLlNoYXJkQWRkcmVzc1IJR2FtZVdvcmxkEhYKBlJlYXNvbhgEIAEo",
+ "CVIGUmVhc29uIrgBChJDcmVhdGVMb2JieUNvbW1hbmQSHAoJUmVxdWVzdElE",
+ "GAEgASgJUglSZXF1ZXN0SUQSFgoGUHJlc2V0GAIgASgJUgZQcmVzZXQSNAoV",
+ "UGxheWVyUGFzc3Rocm91Z2hEYXRhGAMgASgMUhVQbGF5ZXJQYXNzdGhyb3Vn",
+ "aERhdGESNgoWU2Vzc2lvblBhc3N0aHJvdWdoRGF0YRgEIAEoDFIWU2Vzc2lv",
+ "blBhc3N0aHJvdWdoRGF0YSI5ChlHZW5lcmF0ZUludml0ZUNvZGVDb21tYW5k",
+ "EhwKCVJlcXVlc3RJRBgBIAEoCVIJUmVxdWVzdElEIjQKFEdldEFsbFBsYXll",
+ "cnNDb21tYW5kEhwKCVJlcXVlc3RJRBgBIAEoCVIJUmVxdWVzdElEIi8KD0dl",
+ "dExvYmJ5Q29tbWFuZBIcCglSZXF1ZXN0SUQYASABKAlSCVJlcXVlc3RJRCJM",
+ "ChBHZXRQbGF5ZXJDb21tYW5kEhwKCVJlcXVlc3RJRBgBIAEoCVIJUmVxdWVz",
+ "dElEEhoKCFBsYXllcklEGAIgASgJUghQbGF5ZXJJRCISChBIZWFydGJlYXRD",
+ "b21tYW5kIp4BChBKb2luTG9iYnlDb21tYW5kEhwKCVJlcXVlc3RJRBgBIAEo",
+ "CVIJUmVxdWVzdElEEh4KCkludml0ZUNvZGUYAiABKAlSCkludml0ZUNvZGUS",
+ "FgoGVGVhbUlEGAMgASgJUgZUZWFtSUQSNAoVUGxheWVyUGFzc3Rocm91Z2hE",
+ "YXRhGAQgASgMUhVQbGF5ZXJQYXNzdGhyb3VnaERhdGEiRwoPSm9pblRlYW1D",
+ "b21tYW5kEhwKCVJlcXVlc3RJRBgBIAEoCVIJUmVxdWVzdElEEhYKBlRlYW1J",
+ "RBgCIAEoCVIGVGVhbUlEIlkKEUtpY2tQbGF5ZXJDb21tYW5kEhwKCVJlcXVl",
+ "c3RJRBgBIAEoCVIJUmVxdWVzdElEEiYKDlRhcmdldFBsYXllcklEGAIgASgJ",
+ "Ug5UYXJnZXRQbGF5ZXJJRCIxChFMZWF2ZUxvYmJ5Q29tbWFuZBIcCglSZXF1",
+ "ZXN0SUQYASABKAlSCVJlcXVlc3RJRCIzChdOb3RpZnlTZXNzaW9uRW5kQ29t",
+ "bWFuZBIYCgdMb2JieUlEGAEgASgJUgdMb2JieUlEIkkKD1NldFJlYWR5Q29t",
+ "bWFuZBIcCglSZXF1ZXN0SUQYASABKAlSCVJlcXVlc3RJRBIYCgdJc1JlYWR5",
+ "GAIgASgIUgdJc1JlYWR5In4KDFNoYXJkQWRkcmVzcxIWCgZSZWdpb24YASAB",
+ "KAlSBlJlZ2lvbhIiCgxPcmdhbml6YXRpb24YAiABKAlSDE9yZ2FuaXphdGlv",
+ "bhIYCgdQcm9qZWN0GAMgASgJUgdQcm9qZWN0EhgKB1NoYXJkSUQYBCABKAlS",
+ "B1NoYXJkSUQiMwoTU3RhcnRTZXNzaW9uQ29tbWFuZBIcCglSZXF1ZXN0SUQY",
+ "ASABKAlSCVJlcXVlc3RJRCJdChVUcmFuc2ZlckxlYWRlckNvbW1hbmQSHAoJ",
+ "UmVxdWVzdElEGAEgASgJUglSZXF1ZXN0SUQSJgoOVGFyZ2V0UGxheWVySUQY",
+ "AiABKAlSDlRhcmdldFBsYXllcklEImgKHlVwZGF0ZVBsYXllclBhc3N0aHJv",
+ "dWdoQ29tbWFuZBIcCglSZXF1ZXN0SUQYASABKAlSCVJlcXVlc3RJRBIoCg9Q",
+ "YXNzdGhyb3VnaERhdGEYAiABKAxSD1Bhc3N0aHJvdWdoRGF0YSJpCh9VcGRh",
+ "dGVTZXNzaW9uUGFzc3Rocm91Z2hDb21tYW5kEhwKCVJlcXVlc3RJRBgBIAEo",
+ "CVIJUmVxdWVzdElEEigKD1Bhc3N0aHJvdWdoRGF0YRgCIAEoDFIPUGFzc3Ro",
+ "cm91Z2hEYXRhQkhaO2dpdGh1Yi5jb20vYXJndXMtbGFicy93b3JsZC1lbmdp",
+ "bmUvcGtnL3BsdWdpbi9sb2JieS9nZW47Z2VuqgIIY29tbWFuZHNiBnByb3Rv",
+ "Mw=="));
+ descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
+ new pbr::FileDescriptor[] { },
+ new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] {
+ new pbr::GeneratedClrTypeInfo(typeof(global::commands.AssignShardCommand), global::commands.AssignShardCommand.Parser, new[]{ "LobbyID", "RequestID", "GameWorld", "Reason" }, null, null, null, null),
+ new pbr::GeneratedClrTypeInfo(typeof(global::commands.CreateLobbyCommand), global::commands.CreateLobbyCommand.Parser, new[]{ "RequestID", "Preset", "PlayerPassthroughData", "SessionPassthroughData" }, null, null, null, null),
+ new pbr::GeneratedClrTypeInfo(typeof(global::commands.GenerateInviteCodeCommand), global::commands.GenerateInviteCodeCommand.Parser, new[]{ "RequestID" }, null, null, null, null),
+ new pbr::GeneratedClrTypeInfo(typeof(global::commands.GetAllPlayersCommand), global::commands.GetAllPlayersCommand.Parser, new[]{ "RequestID" }, null, null, null, null),
+ new pbr::GeneratedClrTypeInfo(typeof(global::commands.GetLobbyCommand), global::commands.GetLobbyCommand.Parser, new[]{ "RequestID" }, null, null, null, null),
+ new pbr::GeneratedClrTypeInfo(typeof(global::commands.GetPlayerCommand), global::commands.GetPlayerCommand.Parser, new[]{ "RequestID", "PlayerID" }, null, null, null, null),
+ new pbr::GeneratedClrTypeInfo(typeof(global::commands.HeartbeatCommand), global::commands.HeartbeatCommand.Parser, null, null, null, null, null),
+ new pbr::GeneratedClrTypeInfo(typeof(global::commands.JoinLobbyCommand), global::commands.JoinLobbyCommand.Parser, new[]{ "RequestID", "InviteCode", "TeamID", "PlayerPassthroughData" }, null, null, null, null),
+ new pbr::GeneratedClrTypeInfo(typeof(global::commands.JoinTeamCommand), global::commands.JoinTeamCommand.Parser, new[]{ "RequestID", "TeamID" }, null, null, null, null),
+ new pbr::GeneratedClrTypeInfo(typeof(global::commands.KickPlayerCommand), global::commands.KickPlayerCommand.Parser, new[]{ "RequestID", "TargetPlayerID" }, null, null, null, null),
+ new pbr::GeneratedClrTypeInfo(typeof(global::commands.LeaveLobbyCommand), global::commands.LeaveLobbyCommand.Parser, new[]{ "RequestID" }, null, null, null, null),
+ new pbr::GeneratedClrTypeInfo(typeof(global::commands.NotifySessionEndCommand), global::commands.NotifySessionEndCommand.Parser, new[]{ "LobbyID" }, null, null, null, null),
+ new pbr::GeneratedClrTypeInfo(typeof(global::commands.SetReadyCommand), global::commands.SetReadyCommand.Parser, new[]{ "RequestID", "IsReady" }, null, null, null, null),
+ new pbr::GeneratedClrTypeInfo(typeof(global::commands.ShardAddress), global::commands.ShardAddress.Parser, new[]{ "Region", "Organization", "Project", "ShardID" }, null, null, null, null),
+ new pbr::GeneratedClrTypeInfo(typeof(global::commands.StartSessionCommand), global::commands.StartSessionCommand.Parser, new[]{ "RequestID" }, null, null, null, null),
+ new pbr::GeneratedClrTypeInfo(typeof(global::commands.TransferLeaderCommand), global::commands.TransferLeaderCommand.Parser, new[]{ "RequestID", "TargetPlayerID" }, null, null, null, null),
+ new pbr::GeneratedClrTypeInfo(typeof(global::commands.UpdatePlayerPassthroughCommand), global::commands.UpdatePlayerPassthroughCommand.Parser, new[]{ "RequestID", "PassthroughData" }, null, null, null, null),
+ new pbr::GeneratedClrTypeInfo(typeof(global::commands.UpdateSessionPassthroughCommand), global::commands.UpdateSessionPassthroughCommand.Parser, new[]{ "RequestID", "PassthroughData" }, null, null, null, null)
+ }));
+ }
+ #endregion
+
+ }
+ #region Messages
+ ///
+ /// wire name: "lobby_assign_shard"
+ ///
+ [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
+ public sealed partial class AssignShardCommand : pb::IMessage
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ , pb::IBufferMessage
+ #endif
+ {
+ private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new AssignShardCommand());
+ private pb::UnknownFieldSet _unknownFields;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public static pb::MessageParser Parser { get { return _parser; } }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::commands.GithubComArgusLabsWorldEnginePkgPluginLobbyGenReflection.Descriptor.MessageTypes[0]; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public AssignShardCommand() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public AssignShardCommand(AssignShardCommand other) : this() {
+ lobbyID_ = other.lobbyID_;
+ requestID_ = other.requestID_;
+ gameWorld_ = other.gameWorld_ != null ? other.gameWorld_.Clone() : null;
+ reason_ = other.reason_;
+ _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public AssignShardCommand Clone() {
+ return new AssignShardCommand(this);
+ }
+
+ /// Field number for the "LobbyID" field.
+ public const int LobbyIDFieldNumber = 1;
+ private string lobbyID_ = "";
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public string LobbyID {
+ get { return lobbyID_; }
+ set {
+ lobbyID_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ /// Field number for the "RequestID" field.
+ public const int RequestIDFieldNumber = 2;
+ private string requestID_ = "";
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public string RequestID {
+ get { return requestID_; }
+ set {
+ requestID_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ /// Field number for the "GameWorld" field.
+ public const int GameWorldFieldNumber = 3;
+ private global::commands.ShardAddress gameWorld_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public global::commands.ShardAddress GameWorld {
+ get { return gameWorld_; }
+ set {
+ gameWorld_ = value;
+ }
+ }
+
+ /// Field number for the "Reason" field.
+ public const int ReasonFieldNumber = 4;
+ private string reason_ = "";
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public string Reason {
+ get { return reason_; }
+ set {
+ reason_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override bool Equals(object other) {
+ return Equals(other as AssignShardCommand);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public bool Equals(AssignShardCommand other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (LobbyID != other.LobbyID) return false;
+ if (RequestID != other.RequestID) return false;
+ if (!object.Equals(GameWorld, other.GameWorld)) return false;
+ if (Reason != other.Reason) return false;
+ return Equals(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override int GetHashCode() {
+ int hash = 1;
+ if (LobbyID.Length != 0) hash ^= LobbyID.GetHashCode();
+ if (RequestID.Length != 0) hash ^= RequestID.GetHashCode();
+ if (gameWorld_ != null) hash ^= GameWorld.GetHashCode();
+ if (Reason.Length != 0) hash ^= Reason.GetHashCode();
+ if (_unknownFields != null) {
+ hash ^= _unknownFields.GetHashCode();
+ }
+ return hash;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override string ToString() {
+ return pb::JsonFormatter.ToDiagnosticString(this);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void WriteTo(pb::CodedOutputStream output) {
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ output.WriteRawMessage(this);
+ #else
+ if (LobbyID.Length != 0) {
+ output.WriteRawTag(10);
+ output.WriteString(LobbyID);
+ }
+ if (RequestID.Length != 0) {
+ output.WriteRawTag(18);
+ output.WriteString(RequestID);
+ }
+ if (gameWorld_ != null) {
+ output.WriteRawTag(26);
+ output.WriteMessage(GameWorld);
+ }
+ if (Reason.Length != 0) {
+ output.WriteRawTag(34);
+ output.WriteString(Reason);
+ }
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(output);
+ }
+ #endif
+ }
+
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
+ if (LobbyID.Length != 0) {
+ output.WriteRawTag(10);
+ output.WriteString(LobbyID);
+ }
+ if (RequestID.Length != 0) {
+ output.WriteRawTag(18);
+ output.WriteString(RequestID);
+ }
+ if (gameWorld_ != null) {
+ output.WriteRawTag(26);
+ output.WriteMessage(GameWorld);
+ }
+ if (Reason.Length != 0) {
+ output.WriteRawTag(34);
+ output.WriteString(Reason);
+ }
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(ref output);
+ }
+ }
+ #endif
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public int CalculateSize() {
+ int size = 0;
+ if (LobbyID.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(LobbyID);
+ }
+ if (RequestID.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(RequestID);
+ }
+ if (gameWorld_ != null) {
+ size += 1 + pb::CodedOutputStream.ComputeMessageSize(GameWorld);
+ }
+ if (Reason.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(Reason);
+ }
+ if (_unknownFields != null) {
+ size += _unknownFields.CalculateSize();
+ }
+ return size;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void MergeFrom(AssignShardCommand other) {
+ if (other == null) {
+ return;
+ }
+ if (other.LobbyID.Length != 0) {
+ LobbyID = other.LobbyID;
+ }
+ if (other.RequestID.Length != 0) {
+ RequestID = other.RequestID;
+ }
+ if (other.gameWorld_ != null) {
+ if (gameWorld_ == null) {
+ GameWorld = new global::commands.ShardAddress();
+ }
+ GameWorld.MergeFrom(other.GameWorld);
+ }
+ if (other.Reason.Length != 0) {
+ Reason = other.Reason;
+ }
+ _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void MergeFrom(pb::CodedInputStream input) {
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ input.ReadRawMessage(this);
+ #else
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ if ((tag & 7) == 4) {
+ // Abort on any end group tag.
+ return;
+ }
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
+ break;
+ case 10: {
+ LobbyID = input.ReadString();
+ break;
+ }
+ case 18: {
+ RequestID = input.ReadString();
+ break;
+ }
+ case 26: {
+ if (gameWorld_ == null) {
+ GameWorld = new global::commands.ShardAddress();
+ }
+ input.ReadMessage(GameWorld);
+ break;
+ }
+ case 34: {
+ Reason = input.ReadString();
+ break;
+ }
+ }
+ }
+ #endif
+ }
+
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ if ((tag & 7) == 4) {
+ // Abort on any end group tag.
+ return;
+ }
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
+ break;
+ case 10: {
+ LobbyID = input.ReadString();
+ break;
+ }
+ case 18: {
+ RequestID = input.ReadString();
+ break;
+ }
+ case 26: {
+ if (gameWorld_ == null) {
+ GameWorld = new global::commands.ShardAddress();
+ }
+ input.ReadMessage(GameWorld);
+ break;
+ }
+ case 34: {
+ Reason = input.ReadString();
+ break;
+ }
+ }
+ }
+ }
+ #endif
+
+ }
+
+ ///
+ /// wire name: "lobby_create"
+ ///
+ [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
+ public sealed partial class CreateLobbyCommand : pb::IMessage
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ , pb::IBufferMessage
+ #endif
+ {
+ private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new CreateLobbyCommand());
+ private pb::UnknownFieldSet _unknownFields;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public static pb::MessageParser Parser { get { return _parser; } }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::commands.GithubComArgusLabsWorldEnginePkgPluginLobbyGenReflection.Descriptor.MessageTypes[1]; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public CreateLobbyCommand() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public CreateLobbyCommand(CreateLobbyCommand other) : this() {
+ requestID_ = other.requestID_;
+ preset_ = other.preset_;
+ playerPassthroughData_ = other.playerPassthroughData_;
+ sessionPassthroughData_ = other.sessionPassthroughData_;
+ _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public CreateLobbyCommand Clone() {
+ return new CreateLobbyCommand(this);
+ }
+
+ /// Field number for the "RequestID" field.
+ public const int RequestIDFieldNumber = 1;
+ private string requestID_ = "";
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public string RequestID {
+ get { return requestID_; }
+ set {
+ requestID_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ /// Field number for the "Preset" field.
+ public const int PresetFieldNumber = 2;
+ private string preset_ = "";
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public string Preset {
+ get { return preset_; }
+ set {
+ preset_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ /// Field number for the "PlayerPassthroughData" field.
+ public const int PlayerPassthroughDataFieldNumber = 3;
+ private pb::ByteString playerPassthroughData_ = pb::ByteString.Empty;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public pb::ByteString PlayerPassthroughData {
+ get { return playerPassthroughData_; }
+ set {
+ playerPassthroughData_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ /// Field number for the "SessionPassthroughData" field.
+ public const int SessionPassthroughDataFieldNumber = 4;
+ private pb::ByteString sessionPassthroughData_ = pb::ByteString.Empty;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public pb::ByteString SessionPassthroughData {
+ get { return sessionPassthroughData_; }
+ set {
+ sessionPassthroughData_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override bool Equals(object other) {
+ return Equals(other as CreateLobbyCommand);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public bool Equals(CreateLobbyCommand other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (RequestID != other.RequestID) return false;
+ if (Preset != other.Preset) return false;
+ if (PlayerPassthroughData != other.PlayerPassthroughData) return false;
+ if (SessionPassthroughData != other.SessionPassthroughData) return false;
+ return Equals(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override int GetHashCode() {
+ int hash = 1;
+ if (RequestID.Length != 0) hash ^= RequestID.GetHashCode();
+ if (Preset.Length != 0) hash ^= Preset.GetHashCode();
+ if (PlayerPassthroughData.Length != 0) hash ^= PlayerPassthroughData.GetHashCode();
+ if (SessionPassthroughData.Length != 0) hash ^= SessionPassthroughData.GetHashCode();
+ if (_unknownFields != null) {
+ hash ^= _unknownFields.GetHashCode();
+ }
+ return hash;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override string ToString() {
+ return pb::JsonFormatter.ToDiagnosticString(this);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void WriteTo(pb::CodedOutputStream output) {
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ output.WriteRawMessage(this);
+ #else
+ if (RequestID.Length != 0) {
+ output.WriteRawTag(10);
+ output.WriteString(RequestID);
+ }
+ if (Preset.Length != 0) {
+ output.WriteRawTag(18);
+ output.WriteString(Preset);
+ }
+ if (PlayerPassthroughData.Length != 0) {
+ output.WriteRawTag(26);
+ output.WriteBytes(PlayerPassthroughData);
+ }
+ if (SessionPassthroughData.Length != 0) {
+ output.WriteRawTag(34);
+ output.WriteBytes(SessionPassthroughData);
+ }
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(output);
+ }
+ #endif
+ }
+
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
+ if (RequestID.Length != 0) {
+ output.WriteRawTag(10);
+ output.WriteString(RequestID);
+ }
+ if (Preset.Length != 0) {
+ output.WriteRawTag(18);
+ output.WriteString(Preset);
+ }
+ if (PlayerPassthroughData.Length != 0) {
+ output.WriteRawTag(26);
+ output.WriteBytes(PlayerPassthroughData);
+ }
+ if (SessionPassthroughData.Length != 0) {
+ output.WriteRawTag(34);
+ output.WriteBytes(SessionPassthroughData);
+ }
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(ref output);
+ }
+ }
+ #endif
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public int CalculateSize() {
+ int size = 0;
+ if (RequestID.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(RequestID);
+ }
+ if (Preset.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(Preset);
+ }
+ if (PlayerPassthroughData.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeBytesSize(PlayerPassthroughData);
+ }
+ if (SessionPassthroughData.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeBytesSize(SessionPassthroughData);
+ }
+ if (_unknownFields != null) {
+ size += _unknownFields.CalculateSize();
+ }
+ return size;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void MergeFrom(CreateLobbyCommand other) {
+ if (other == null) {
+ return;
+ }
+ if (other.RequestID.Length != 0) {
+ RequestID = other.RequestID;
+ }
+ if (other.Preset.Length != 0) {
+ Preset = other.Preset;
+ }
+ if (other.PlayerPassthroughData.Length != 0) {
+ PlayerPassthroughData = other.PlayerPassthroughData;
+ }
+ if (other.SessionPassthroughData.Length != 0) {
+ SessionPassthroughData = other.SessionPassthroughData;
+ }
+ _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void MergeFrom(pb::CodedInputStream input) {
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ input.ReadRawMessage(this);
+ #else
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ if ((tag & 7) == 4) {
+ // Abort on any end group tag.
+ return;
+ }
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
+ break;
+ case 10: {
+ RequestID = input.ReadString();
+ break;
+ }
+ case 18: {
+ Preset = input.ReadString();
+ break;
+ }
+ case 26: {
+ PlayerPassthroughData = input.ReadBytes();
+ break;
+ }
+ case 34: {
+ SessionPassthroughData = input.ReadBytes();
+ break;
+ }
+ }
+ }
+ #endif
+ }
+
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ if ((tag & 7) == 4) {
+ // Abort on any end group tag.
+ return;
+ }
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
+ break;
+ case 10: {
+ RequestID = input.ReadString();
+ break;
+ }
+ case 18: {
+ Preset = input.ReadString();
+ break;
+ }
+ case 26: {
+ PlayerPassthroughData = input.ReadBytes();
+ break;
+ }
+ case 34: {
+ SessionPassthroughData = input.ReadBytes();
+ break;
+ }
+ }
+ }
+ }
+ #endif
+
+ }
+
+ ///
+ /// wire name: "lobby_generate_invite"
+ ///
+ [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
+ public sealed partial class GenerateInviteCodeCommand : pb::IMessage
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ , pb::IBufferMessage
+ #endif
+ {
+ private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new GenerateInviteCodeCommand());
+ private pb::UnknownFieldSet _unknownFields;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public static pb::MessageParser Parser { get { return _parser; } }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::commands.GithubComArgusLabsWorldEnginePkgPluginLobbyGenReflection.Descriptor.MessageTypes[2]; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public GenerateInviteCodeCommand() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public GenerateInviteCodeCommand(GenerateInviteCodeCommand other) : this() {
+ requestID_ = other.requestID_;
+ _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public GenerateInviteCodeCommand Clone() {
+ return new GenerateInviteCodeCommand(this);
+ }
+
+ /// Field number for the "RequestID" field.
+ public const int RequestIDFieldNumber = 1;
+ private string requestID_ = "";
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public string RequestID {
+ get { return requestID_; }
+ set {
+ requestID_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override bool Equals(object other) {
+ return Equals(other as GenerateInviteCodeCommand);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public bool Equals(GenerateInviteCodeCommand other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (RequestID != other.RequestID) return false;
+ return Equals(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override int GetHashCode() {
+ int hash = 1;
+ if (RequestID.Length != 0) hash ^= RequestID.GetHashCode();
+ if (_unknownFields != null) {
+ hash ^= _unknownFields.GetHashCode();
+ }
+ return hash;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override string ToString() {
+ return pb::JsonFormatter.ToDiagnosticString(this);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void WriteTo(pb::CodedOutputStream output) {
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ output.WriteRawMessage(this);
+ #else
+ if (RequestID.Length != 0) {
+ output.WriteRawTag(10);
+ output.WriteString(RequestID);
+ }
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(output);
+ }
+ #endif
+ }
+
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
+ if (RequestID.Length != 0) {
+ output.WriteRawTag(10);
+ output.WriteString(RequestID);
+ }
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(ref output);
+ }
+ }
+ #endif
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public int CalculateSize() {
+ int size = 0;
+ if (RequestID.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(RequestID);
+ }
+ if (_unknownFields != null) {
+ size += _unknownFields.CalculateSize();
+ }
+ return size;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void MergeFrom(GenerateInviteCodeCommand other) {
+ if (other == null) {
+ return;
+ }
+ if (other.RequestID.Length != 0) {
+ RequestID = other.RequestID;
+ }
+ _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void MergeFrom(pb::CodedInputStream input) {
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ input.ReadRawMessage(this);
+ #else
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ if ((tag & 7) == 4) {
+ // Abort on any end group tag.
+ return;
+ }
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
+ break;
+ case 10: {
+ RequestID = input.ReadString();
+ break;
+ }
+ }
+ }
+ #endif
+ }
+
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ if ((tag & 7) == 4) {
+ // Abort on any end group tag.
+ return;
+ }
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
+ break;
+ case 10: {
+ RequestID = input.ReadString();
+ break;
+ }
+ }
+ }
+ }
+ #endif
+
+ }
+
+ ///
+ /// wire name: "lobby_get_all_players"
+ ///
+ [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
+ public sealed partial class GetAllPlayersCommand : pb::IMessage
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ , pb::IBufferMessage
+ #endif
+ {
+ private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new GetAllPlayersCommand());
+ private pb::UnknownFieldSet _unknownFields;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public static pb::MessageParser Parser { get { return _parser; } }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::commands.GithubComArgusLabsWorldEnginePkgPluginLobbyGenReflection.Descriptor.MessageTypes[3]; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public GetAllPlayersCommand() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public GetAllPlayersCommand(GetAllPlayersCommand other) : this() {
+ requestID_ = other.requestID_;
+ _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public GetAllPlayersCommand Clone() {
+ return new GetAllPlayersCommand(this);
+ }
+
+ /// Field number for the "RequestID" field.
+ public const int RequestIDFieldNumber = 1;
+ private string requestID_ = "";
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public string RequestID {
+ get { return requestID_; }
+ set {
+ requestID_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override bool Equals(object other) {
+ return Equals(other as GetAllPlayersCommand);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public bool Equals(GetAllPlayersCommand other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (RequestID != other.RequestID) return false;
+ return Equals(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override int GetHashCode() {
+ int hash = 1;
+ if (RequestID.Length != 0) hash ^= RequestID.GetHashCode();
+ if (_unknownFields != null) {
+ hash ^= _unknownFields.GetHashCode();
+ }
+ return hash;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override string ToString() {
+ return pb::JsonFormatter.ToDiagnosticString(this);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void WriteTo(pb::CodedOutputStream output) {
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ output.WriteRawMessage(this);
+ #else
+ if (RequestID.Length != 0) {
+ output.WriteRawTag(10);
+ output.WriteString(RequestID);
+ }
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(output);
+ }
+ #endif
+ }
+
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
+ if (RequestID.Length != 0) {
+ output.WriteRawTag(10);
+ output.WriteString(RequestID);
+ }
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(ref output);
+ }
+ }
+ #endif
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public int CalculateSize() {
+ int size = 0;
+ if (RequestID.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(RequestID);
+ }
+ if (_unknownFields != null) {
+ size += _unknownFields.CalculateSize();
+ }
+ return size;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void MergeFrom(GetAllPlayersCommand other) {
+ if (other == null) {
+ return;
+ }
+ if (other.RequestID.Length != 0) {
+ RequestID = other.RequestID;
+ }
+ _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void MergeFrom(pb::CodedInputStream input) {
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ input.ReadRawMessage(this);
+ #else
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ if ((tag & 7) == 4) {
+ // Abort on any end group tag.
+ return;
+ }
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
+ break;
+ case 10: {
+ RequestID = input.ReadString();
+ break;
+ }
+ }
+ }
+ #endif
+ }
+
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ if ((tag & 7) == 4) {
+ // Abort on any end group tag.
+ return;
+ }
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
+ break;
+ case 10: {
+ RequestID = input.ReadString();
+ break;
+ }
+ }
+ }
+ }
+ #endif
+
+ }
+
+ ///
+ /// wire name: "lobby_get_lobby"
+ ///
+ [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
+ public sealed partial class GetLobbyCommand : pb::IMessage
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ , pb::IBufferMessage
+ #endif
+ {
+ private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new GetLobbyCommand());
+ private pb::UnknownFieldSet _unknownFields;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public static pb::MessageParser Parser { get { return _parser; } }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::commands.GithubComArgusLabsWorldEnginePkgPluginLobbyGenReflection.Descriptor.MessageTypes[4]; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public GetLobbyCommand() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public GetLobbyCommand(GetLobbyCommand other) : this() {
+ requestID_ = other.requestID_;
+ _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public GetLobbyCommand Clone() {
+ return new GetLobbyCommand(this);
+ }
+
+ /// Field number for the "RequestID" field.
+ public const int RequestIDFieldNumber = 1;
+ private string requestID_ = "";
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public string RequestID {
+ get { return requestID_; }
+ set {
+ requestID_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override bool Equals(object other) {
+ return Equals(other as GetLobbyCommand);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public bool Equals(GetLobbyCommand other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (RequestID != other.RequestID) return false;
+ return Equals(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override int GetHashCode() {
+ int hash = 1;
+ if (RequestID.Length != 0) hash ^= RequestID.GetHashCode();
+ if (_unknownFields != null) {
+ hash ^= _unknownFields.GetHashCode();
+ }
+ return hash;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override string ToString() {
+ return pb::JsonFormatter.ToDiagnosticString(this);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void WriteTo(pb::CodedOutputStream output) {
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ output.WriteRawMessage(this);
+ #else
+ if (RequestID.Length != 0) {
+ output.WriteRawTag(10);
+ output.WriteString(RequestID);
+ }
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(output);
+ }
+ #endif
+ }
+
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
+ if (RequestID.Length != 0) {
+ output.WriteRawTag(10);
+ output.WriteString(RequestID);
+ }
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(ref output);
+ }
+ }
+ #endif
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public int CalculateSize() {
+ int size = 0;
+ if (RequestID.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(RequestID);
+ }
+ if (_unknownFields != null) {
+ size += _unknownFields.CalculateSize();
+ }
+ return size;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void MergeFrom(GetLobbyCommand other) {
+ if (other == null) {
+ return;
+ }
+ if (other.RequestID.Length != 0) {
+ RequestID = other.RequestID;
+ }
+ _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void MergeFrom(pb::CodedInputStream input) {
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ input.ReadRawMessage(this);
+ #else
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ if ((tag & 7) == 4) {
+ // Abort on any end group tag.
+ return;
+ }
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
+ break;
+ case 10: {
+ RequestID = input.ReadString();
+ break;
+ }
+ }
+ }
+ #endif
+ }
+
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ if ((tag & 7) == 4) {
+ // Abort on any end group tag.
+ return;
+ }
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
+ break;
+ case 10: {
+ RequestID = input.ReadString();
+ break;
+ }
+ }
+ }
+ }
+ #endif
+
+ }
+
+ ///
+ /// wire name: "lobby_get_player"
+ ///
+ [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
+ public sealed partial class GetPlayerCommand : pb::IMessage
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ , pb::IBufferMessage
+ #endif
+ {
+ private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new GetPlayerCommand());
+ private pb::UnknownFieldSet _unknownFields;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public static pb::MessageParser Parser { get { return _parser; } }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::commands.GithubComArgusLabsWorldEnginePkgPluginLobbyGenReflection.Descriptor.MessageTypes[5]; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public GetPlayerCommand() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public GetPlayerCommand(GetPlayerCommand other) : this() {
+ requestID_ = other.requestID_;
+ playerID_ = other.playerID_;
+ _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public GetPlayerCommand Clone() {
+ return new GetPlayerCommand(this);
+ }
+
+ /// Field number for the "RequestID" field.
+ public const int RequestIDFieldNumber = 1;
+ private string requestID_ = "";
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public string RequestID {
+ get { return requestID_; }
+ set {
+ requestID_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ /// Field number for the "PlayerID" field.
+ public const int PlayerIDFieldNumber = 2;
+ private string playerID_ = "";
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public string PlayerID {
+ get { return playerID_; }
+ set {
+ playerID_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override bool Equals(object other) {
+ return Equals(other as GetPlayerCommand);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public bool Equals(GetPlayerCommand other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (RequestID != other.RequestID) return false;
+ if (PlayerID != other.PlayerID) return false;
+ return Equals(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override int GetHashCode() {
+ int hash = 1;
+ if (RequestID.Length != 0) hash ^= RequestID.GetHashCode();
+ if (PlayerID.Length != 0) hash ^= PlayerID.GetHashCode();
+ if (_unknownFields != null) {
+ hash ^= _unknownFields.GetHashCode();
+ }
+ return hash;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override string ToString() {
+ return pb::JsonFormatter.ToDiagnosticString(this);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void WriteTo(pb::CodedOutputStream output) {
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ output.WriteRawMessage(this);
+ #else
+ if (RequestID.Length != 0) {
+ output.WriteRawTag(10);
+ output.WriteString(RequestID);
+ }
+ if (PlayerID.Length != 0) {
+ output.WriteRawTag(18);
+ output.WriteString(PlayerID);
+ }
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(output);
+ }
+ #endif
+ }
+
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
+ if (RequestID.Length != 0) {
+ output.WriteRawTag(10);
+ output.WriteString(RequestID);
+ }
+ if (PlayerID.Length != 0) {
+ output.WriteRawTag(18);
+ output.WriteString(PlayerID);
+ }
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(ref output);
+ }
+ }
+ #endif
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public int CalculateSize() {
+ int size = 0;
+ if (RequestID.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(RequestID);
+ }
+ if (PlayerID.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(PlayerID);
+ }
+ if (_unknownFields != null) {
+ size += _unknownFields.CalculateSize();
+ }
+ return size;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void MergeFrom(GetPlayerCommand other) {
+ if (other == null) {
+ return;
+ }
+ if (other.RequestID.Length != 0) {
+ RequestID = other.RequestID;
+ }
+ if (other.PlayerID.Length != 0) {
+ PlayerID = other.PlayerID;
+ }
+ _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void MergeFrom(pb::CodedInputStream input) {
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ input.ReadRawMessage(this);
+ #else
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ if ((tag & 7) == 4) {
+ // Abort on any end group tag.
+ return;
+ }
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
+ break;
+ case 10: {
+ RequestID = input.ReadString();
+ break;
+ }
+ case 18: {
+ PlayerID = input.ReadString();
+ break;
+ }
+ }
+ }
+ #endif
+ }
+
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ if ((tag & 7) == 4) {
+ // Abort on any end group tag.
+ return;
+ }
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
+ break;
+ case 10: {
+ RequestID = input.ReadString();
+ break;
+ }
+ case 18: {
+ PlayerID = input.ReadString();
+ break;
+ }
+ }
+ }
+ }
+ #endif
+
+ }
+
+ ///
+ /// wire name: "lobby_heartbeat"
+ ///
+ [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
+ public sealed partial class HeartbeatCommand : pb::IMessage
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ , pb::IBufferMessage
+ #endif
+ {
+ private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new HeartbeatCommand());
+ private pb::UnknownFieldSet _unknownFields;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public static pb::MessageParser Parser { get { return _parser; } }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::commands.GithubComArgusLabsWorldEnginePkgPluginLobbyGenReflection.Descriptor.MessageTypes[6]; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public HeartbeatCommand() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public HeartbeatCommand(HeartbeatCommand other) : this() {
+ _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public HeartbeatCommand Clone() {
+ return new HeartbeatCommand(this);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override bool Equals(object other) {
+ return Equals(other as HeartbeatCommand);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public bool Equals(HeartbeatCommand other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ return Equals(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override int GetHashCode() {
+ int hash = 1;
+ if (_unknownFields != null) {
+ hash ^= _unknownFields.GetHashCode();
+ }
+ return hash;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override string ToString() {
+ return pb::JsonFormatter.ToDiagnosticString(this);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void WriteTo(pb::CodedOutputStream output) {
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ output.WriteRawMessage(this);
+ #else
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(output);
+ }
+ #endif
+ }
+
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(ref output);
+ }
+ }
+ #endif
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public int CalculateSize() {
+ int size = 0;
+ if (_unknownFields != null) {
+ size += _unknownFields.CalculateSize();
+ }
+ return size;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void MergeFrom(HeartbeatCommand other) {
+ if (other == null) {
+ return;
+ }
+ _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void MergeFrom(pb::CodedInputStream input) {
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ input.ReadRawMessage(this);
+ #else
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ if ((tag & 7) == 4) {
+ // Abort on any end group tag.
+ return;
+ }
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
+ break;
+ }
+ }
+ #endif
+ }
+
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ if ((tag & 7) == 4) {
+ // Abort on any end group tag.
+ return;
+ }
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
+ break;
+ }
+ }
+ }
+ #endif
+
+ }
+
+ ///
+ /// wire name: "lobby_join"
+ ///
+ [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
+ public sealed partial class JoinLobbyCommand : pb::IMessage
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ , pb::IBufferMessage
+ #endif
+ {
+ private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new JoinLobbyCommand());
+ private pb::UnknownFieldSet _unknownFields;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public static pb::MessageParser Parser { get { return _parser; } }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::commands.GithubComArgusLabsWorldEnginePkgPluginLobbyGenReflection.Descriptor.MessageTypes[7]; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public JoinLobbyCommand() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public JoinLobbyCommand(JoinLobbyCommand other) : this() {
+ requestID_ = other.requestID_;
+ inviteCode_ = other.inviteCode_;
+ teamID_ = other.teamID_;
+ playerPassthroughData_ = other.playerPassthroughData_;
+ _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public JoinLobbyCommand Clone() {
+ return new JoinLobbyCommand(this);
+ }
+
+ /// Field number for the "RequestID" field.
+ public const int RequestIDFieldNumber = 1;
+ private string requestID_ = "";
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public string RequestID {
+ get { return requestID_; }
+ set {
+ requestID_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ /// Field number for the "InviteCode" field.
+ public const int InviteCodeFieldNumber = 2;
+ private string inviteCode_ = "";
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public string InviteCode {
+ get { return inviteCode_; }
+ set {
+ inviteCode_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ /// Field number for the "TeamID" field.
+ public const int TeamIDFieldNumber = 3;
+ private string teamID_ = "";
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public string TeamID {
+ get { return teamID_; }
+ set {
+ teamID_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ /// Field number for the "PlayerPassthroughData" field.
+ public const int PlayerPassthroughDataFieldNumber = 4;
+ private pb::ByteString playerPassthroughData_ = pb::ByteString.Empty;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public pb::ByteString PlayerPassthroughData {
+ get { return playerPassthroughData_; }
+ set {
+ playerPassthroughData_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override bool Equals(object other) {
+ return Equals(other as JoinLobbyCommand);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public bool Equals(JoinLobbyCommand other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (RequestID != other.RequestID) return false;
+ if (InviteCode != other.InviteCode) return false;
+ if (TeamID != other.TeamID) return false;
+ if (PlayerPassthroughData != other.PlayerPassthroughData) return false;
+ return Equals(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override int GetHashCode() {
+ int hash = 1;
+ if (RequestID.Length != 0) hash ^= RequestID.GetHashCode();
+ if (InviteCode.Length != 0) hash ^= InviteCode.GetHashCode();
+ if (TeamID.Length != 0) hash ^= TeamID.GetHashCode();
+ if (PlayerPassthroughData.Length != 0) hash ^= PlayerPassthroughData.GetHashCode();
+ if (_unknownFields != null) {
+ hash ^= _unknownFields.GetHashCode();
+ }
+ return hash;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override string ToString() {
+ return pb::JsonFormatter.ToDiagnosticString(this);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void WriteTo(pb::CodedOutputStream output) {
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ output.WriteRawMessage(this);
+ #else
+ if (RequestID.Length != 0) {
+ output.WriteRawTag(10);
+ output.WriteString(RequestID);
+ }
+ if (InviteCode.Length != 0) {
+ output.WriteRawTag(18);
+ output.WriteString(InviteCode);
+ }
+ if (TeamID.Length != 0) {
+ output.WriteRawTag(26);
+ output.WriteString(TeamID);
+ }
+ if (PlayerPassthroughData.Length != 0) {
+ output.WriteRawTag(34);
+ output.WriteBytes(PlayerPassthroughData);
+ }
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(output);
+ }
+ #endif
+ }
+
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
+ if (RequestID.Length != 0) {
+ output.WriteRawTag(10);
+ output.WriteString(RequestID);
+ }
+ if (InviteCode.Length != 0) {
+ output.WriteRawTag(18);
+ output.WriteString(InviteCode);
+ }
+ if (TeamID.Length != 0) {
+ output.WriteRawTag(26);
+ output.WriteString(TeamID);
+ }
+ if (PlayerPassthroughData.Length != 0) {
+ output.WriteRawTag(34);
+ output.WriteBytes(PlayerPassthroughData);
+ }
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(ref output);
+ }
+ }
+ #endif
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public int CalculateSize() {
+ int size = 0;
+ if (RequestID.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(RequestID);
+ }
+ if (InviteCode.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(InviteCode);
+ }
+ if (TeamID.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(TeamID);
+ }
+ if (PlayerPassthroughData.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeBytesSize(PlayerPassthroughData);
+ }
+ if (_unknownFields != null) {
+ size += _unknownFields.CalculateSize();
+ }
+ return size;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void MergeFrom(JoinLobbyCommand other) {
+ if (other == null) {
+ return;
+ }
+ if (other.RequestID.Length != 0) {
+ RequestID = other.RequestID;
+ }
+ if (other.InviteCode.Length != 0) {
+ InviteCode = other.InviteCode;
+ }
+ if (other.TeamID.Length != 0) {
+ TeamID = other.TeamID;
+ }
+ if (other.PlayerPassthroughData.Length != 0) {
+ PlayerPassthroughData = other.PlayerPassthroughData;
+ }
+ _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void MergeFrom(pb::CodedInputStream input) {
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ input.ReadRawMessage(this);
+ #else
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ if ((tag & 7) == 4) {
+ // Abort on any end group tag.
+ return;
+ }
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
+ break;
+ case 10: {
+ RequestID = input.ReadString();
+ break;
+ }
+ case 18: {
+ InviteCode = input.ReadString();
+ break;
+ }
+ case 26: {
+ TeamID = input.ReadString();
+ break;
+ }
+ case 34: {
+ PlayerPassthroughData = input.ReadBytes();
+ break;
+ }
+ }
+ }
+ #endif
+ }
+
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ if ((tag & 7) == 4) {
+ // Abort on any end group tag.
+ return;
+ }
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
+ break;
+ case 10: {
+ RequestID = input.ReadString();
+ break;
+ }
+ case 18: {
+ InviteCode = input.ReadString();
+ break;
+ }
+ case 26: {
+ TeamID = input.ReadString();
+ break;
+ }
+ case 34: {
+ PlayerPassthroughData = input.ReadBytes();
+ break;
+ }
+ }
+ }
+ }
+ #endif
+
+ }
+
+ ///
+ /// wire name: "lobby_join_team"
+ ///
+ [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
+ public sealed partial class JoinTeamCommand : pb::IMessage
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ , pb::IBufferMessage
+ #endif
+ {
+ private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new JoinTeamCommand());
+ private pb::UnknownFieldSet _unknownFields;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public static pb::MessageParser Parser { get { return _parser; } }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::commands.GithubComArgusLabsWorldEnginePkgPluginLobbyGenReflection.Descriptor.MessageTypes[8]; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public JoinTeamCommand() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public JoinTeamCommand(JoinTeamCommand other) : this() {
+ requestID_ = other.requestID_;
+ teamID_ = other.teamID_;
+ _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public JoinTeamCommand Clone() {
+ return new JoinTeamCommand(this);
+ }
+
+ /// Field number for the "RequestID" field.
+ public const int RequestIDFieldNumber = 1;
+ private string requestID_ = "";
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public string RequestID {
+ get { return requestID_; }
+ set {
+ requestID_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ /// Field number for the "TeamID" field.
+ public const int TeamIDFieldNumber = 2;
+ private string teamID_ = "";
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public string TeamID {
+ get { return teamID_; }
+ set {
+ teamID_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override bool Equals(object other) {
+ return Equals(other as JoinTeamCommand);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public bool Equals(JoinTeamCommand other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (RequestID != other.RequestID) return false;
+ if (TeamID != other.TeamID) return false;
+ return Equals(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override int GetHashCode() {
+ int hash = 1;
+ if (RequestID.Length != 0) hash ^= RequestID.GetHashCode();
+ if (TeamID.Length != 0) hash ^= TeamID.GetHashCode();
+ if (_unknownFields != null) {
+ hash ^= _unknownFields.GetHashCode();
+ }
+ return hash;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override string ToString() {
+ return pb::JsonFormatter.ToDiagnosticString(this);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void WriteTo(pb::CodedOutputStream output) {
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ output.WriteRawMessage(this);
+ #else
+ if (RequestID.Length != 0) {
+ output.WriteRawTag(10);
+ output.WriteString(RequestID);
+ }
+ if (TeamID.Length != 0) {
+ output.WriteRawTag(18);
+ output.WriteString(TeamID);
+ }
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(output);
+ }
+ #endif
+ }
+
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
+ if (RequestID.Length != 0) {
+ output.WriteRawTag(10);
+ output.WriteString(RequestID);
+ }
+ if (TeamID.Length != 0) {
+ output.WriteRawTag(18);
+ output.WriteString(TeamID);
+ }
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(ref output);
+ }
+ }
+ #endif
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public int CalculateSize() {
+ int size = 0;
+ if (RequestID.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(RequestID);
+ }
+ if (TeamID.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(TeamID);
+ }
+ if (_unknownFields != null) {
+ size += _unknownFields.CalculateSize();
+ }
+ return size;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void MergeFrom(JoinTeamCommand other) {
+ if (other == null) {
+ return;
+ }
+ if (other.RequestID.Length != 0) {
+ RequestID = other.RequestID;
+ }
+ if (other.TeamID.Length != 0) {
+ TeamID = other.TeamID;
+ }
+ _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void MergeFrom(pb::CodedInputStream input) {
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ input.ReadRawMessage(this);
+ #else
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ if ((tag & 7) == 4) {
+ // Abort on any end group tag.
+ return;
+ }
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
+ break;
+ case 10: {
+ RequestID = input.ReadString();
+ break;
+ }
+ case 18: {
+ TeamID = input.ReadString();
+ break;
+ }
+ }
+ }
+ #endif
+ }
+
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ if ((tag & 7) == 4) {
+ // Abort on any end group tag.
+ return;
+ }
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
+ break;
+ case 10: {
+ RequestID = input.ReadString();
+ break;
+ }
+ case 18: {
+ TeamID = input.ReadString();
+ break;
+ }
+ }
+ }
+ }
+ #endif
+
+ }
+
+ ///
+ /// wire name: "lobby_kick"
+ ///
+ [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
+ public sealed partial class KickPlayerCommand : pb::IMessage
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ , pb::IBufferMessage
+ #endif
+ {
+ private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new KickPlayerCommand());
+ private pb::UnknownFieldSet _unknownFields;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public static pb::MessageParser Parser { get { return _parser; } }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::commands.GithubComArgusLabsWorldEnginePkgPluginLobbyGenReflection.Descriptor.MessageTypes[9]; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public KickPlayerCommand() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public KickPlayerCommand(KickPlayerCommand other) : this() {
+ requestID_ = other.requestID_;
+ targetPlayerID_ = other.targetPlayerID_;
+ _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public KickPlayerCommand Clone() {
+ return new KickPlayerCommand(this);
+ }
+
+ /// Field number for the "RequestID" field.
+ public const int RequestIDFieldNumber = 1;
+ private string requestID_ = "";
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public string RequestID {
+ get { return requestID_; }
+ set {
+ requestID_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ /// Field number for the "TargetPlayerID" field.
+ public const int TargetPlayerIDFieldNumber = 2;
+ private string targetPlayerID_ = "";
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public string TargetPlayerID {
+ get { return targetPlayerID_; }
+ set {
+ targetPlayerID_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override bool Equals(object other) {
+ return Equals(other as KickPlayerCommand);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public bool Equals(KickPlayerCommand other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (RequestID != other.RequestID) return false;
+ if (TargetPlayerID != other.TargetPlayerID) return false;
+ return Equals(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override int GetHashCode() {
+ int hash = 1;
+ if (RequestID.Length != 0) hash ^= RequestID.GetHashCode();
+ if (TargetPlayerID.Length != 0) hash ^= TargetPlayerID.GetHashCode();
+ if (_unknownFields != null) {
+ hash ^= _unknownFields.GetHashCode();
+ }
+ return hash;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override string ToString() {
+ return pb::JsonFormatter.ToDiagnosticString(this);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void WriteTo(pb::CodedOutputStream output) {
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ output.WriteRawMessage(this);
+ #else
+ if (RequestID.Length != 0) {
+ output.WriteRawTag(10);
+ output.WriteString(RequestID);
+ }
+ if (TargetPlayerID.Length != 0) {
+ output.WriteRawTag(18);
+ output.WriteString(TargetPlayerID);
+ }
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(output);
+ }
+ #endif
+ }
+
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
+ if (RequestID.Length != 0) {
+ output.WriteRawTag(10);
+ output.WriteString(RequestID);
+ }
+ if (TargetPlayerID.Length != 0) {
+ output.WriteRawTag(18);
+ output.WriteString(TargetPlayerID);
+ }
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(ref output);
+ }
+ }
+ #endif
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public int CalculateSize() {
+ int size = 0;
+ if (RequestID.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(RequestID);
+ }
+ if (TargetPlayerID.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(TargetPlayerID);
+ }
+ if (_unknownFields != null) {
+ size += _unknownFields.CalculateSize();
+ }
+ return size;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void MergeFrom(KickPlayerCommand other) {
+ if (other == null) {
+ return;
+ }
+ if (other.RequestID.Length != 0) {
+ RequestID = other.RequestID;
+ }
+ if (other.TargetPlayerID.Length != 0) {
+ TargetPlayerID = other.TargetPlayerID;
+ }
+ _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void MergeFrom(pb::CodedInputStream input) {
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ input.ReadRawMessage(this);
+ #else
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ if ((tag & 7) == 4) {
+ // Abort on any end group tag.
+ return;
+ }
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
+ break;
+ case 10: {
+ RequestID = input.ReadString();
+ break;
+ }
+ case 18: {
+ TargetPlayerID = input.ReadString();
+ break;
+ }
+ }
+ }
+ #endif
+ }
+
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ if ((tag & 7) == 4) {
+ // Abort on any end group tag.
+ return;
+ }
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
+ break;
+ case 10: {
+ RequestID = input.ReadString();
+ break;
+ }
+ case 18: {
+ TargetPlayerID = input.ReadString();
+ break;
+ }
+ }
+ }
+ }
+ #endif
+
+ }
+
+ ///
+ /// wire name: "lobby_leave"
+ ///
+ [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
+ public sealed partial class LeaveLobbyCommand : pb::IMessage
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ , pb::IBufferMessage
+ #endif
+ {
+ private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new LeaveLobbyCommand());
+ private pb::UnknownFieldSet _unknownFields;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public static pb::MessageParser Parser { get { return _parser; } }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::commands.GithubComArgusLabsWorldEnginePkgPluginLobbyGenReflection.Descriptor.MessageTypes[10]; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public LeaveLobbyCommand() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public LeaveLobbyCommand(LeaveLobbyCommand other) : this() {
+ requestID_ = other.requestID_;
+ _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public LeaveLobbyCommand Clone() {
+ return new LeaveLobbyCommand(this);
+ }
+
+ /// Field number for the "RequestID" field.
+ public const int RequestIDFieldNumber = 1;
+ private string requestID_ = "";
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public string RequestID {
+ get { return requestID_; }
+ set {
+ requestID_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override bool Equals(object other) {
+ return Equals(other as LeaveLobbyCommand);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public bool Equals(LeaveLobbyCommand other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (RequestID != other.RequestID) return false;
+ return Equals(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override int GetHashCode() {
+ int hash = 1;
+ if (RequestID.Length != 0) hash ^= RequestID.GetHashCode();
+ if (_unknownFields != null) {
+ hash ^= _unknownFields.GetHashCode();
+ }
+ return hash;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override string ToString() {
+ return pb::JsonFormatter.ToDiagnosticString(this);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void WriteTo(pb::CodedOutputStream output) {
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ output.WriteRawMessage(this);
+ #else
+ if (RequestID.Length != 0) {
+ output.WriteRawTag(10);
+ output.WriteString(RequestID);
+ }
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(output);
+ }
+ #endif
+ }
+
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
+ if (RequestID.Length != 0) {
+ output.WriteRawTag(10);
+ output.WriteString(RequestID);
+ }
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(ref output);
+ }
+ }
+ #endif
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public int CalculateSize() {
+ int size = 0;
+ if (RequestID.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(RequestID);
+ }
+ if (_unknownFields != null) {
+ size += _unknownFields.CalculateSize();
+ }
+ return size;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void MergeFrom(LeaveLobbyCommand other) {
+ if (other == null) {
+ return;
+ }
+ if (other.RequestID.Length != 0) {
+ RequestID = other.RequestID;
+ }
+ _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void MergeFrom(pb::CodedInputStream input) {
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ input.ReadRawMessage(this);
+ #else
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ if ((tag & 7) == 4) {
+ // Abort on any end group tag.
+ return;
+ }
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
+ break;
+ case 10: {
+ RequestID = input.ReadString();
+ break;
+ }
+ }
+ }
+ #endif
+ }
+
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ if ((tag & 7) == 4) {
+ // Abort on any end group tag.
+ return;
+ }
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
+ break;
+ case 10: {
+ RequestID = input.ReadString();
+ break;
+ }
+ }
+ }
+ }
+ #endif
+
+ }
+
+ ///
+ /// wire name: "lobby_notify_session_end"
+ ///
+ [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
+ public sealed partial class NotifySessionEndCommand : pb::IMessage
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ , pb::IBufferMessage
+ #endif
+ {
+ private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new NotifySessionEndCommand());
+ private pb::UnknownFieldSet _unknownFields;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public static pb::MessageParser Parser { get { return _parser; } }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::commands.GithubComArgusLabsWorldEnginePkgPluginLobbyGenReflection.Descriptor.MessageTypes[11]; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public NotifySessionEndCommand() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public NotifySessionEndCommand(NotifySessionEndCommand other) : this() {
+ lobbyID_ = other.lobbyID_;
+ _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public NotifySessionEndCommand Clone() {
+ return new NotifySessionEndCommand(this);
+ }
+
+ /// Field number for the "LobbyID" field.
+ public const int LobbyIDFieldNumber = 1;
+ private string lobbyID_ = "";
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public string LobbyID {
+ get { return lobbyID_; }
+ set {
+ lobbyID_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override bool Equals(object other) {
+ return Equals(other as NotifySessionEndCommand);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public bool Equals(NotifySessionEndCommand other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (LobbyID != other.LobbyID) return false;
+ return Equals(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override int GetHashCode() {
+ int hash = 1;
+ if (LobbyID.Length != 0) hash ^= LobbyID.GetHashCode();
+ if (_unknownFields != null) {
+ hash ^= _unknownFields.GetHashCode();
+ }
+ return hash;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override string ToString() {
+ return pb::JsonFormatter.ToDiagnosticString(this);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void WriteTo(pb::CodedOutputStream output) {
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ output.WriteRawMessage(this);
+ #else
+ if (LobbyID.Length != 0) {
+ output.WriteRawTag(10);
+ output.WriteString(LobbyID);
+ }
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(output);
+ }
+ #endif
+ }
+
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
+ if (LobbyID.Length != 0) {
+ output.WriteRawTag(10);
+ output.WriteString(LobbyID);
+ }
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(ref output);
+ }
+ }
+ #endif
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public int CalculateSize() {
+ int size = 0;
+ if (LobbyID.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(LobbyID);
+ }
+ if (_unknownFields != null) {
+ size += _unknownFields.CalculateSize();
+ }
+ return size;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void MergeFrom(NotifySessionEndCommand other) {
+ if (other == null) {
+ return;
+ }
+ if (other.LobbyID.Length != 0) {
+ LobbyID = other.LobbyID;
+ }
+ _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void MergeFrom(pb::CodedInputStream input) {
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ input.ReadRawMessage(this);
+ #else
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ if ((tag & 7) == 4) {
+ // Abort on any end group tag.
+ return;
+ }
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
+ break;
+ case 10: {
+ LobbyID = input.ReadString();
+ break;
+ }
+ }
+ }
+ #endif
+ }
+
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ if ((tag & 7) == 4) {
+ // Abort on any end group tag.
+ return;
+ }
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
+ break;
+ case 10: {
+ LobbyID = input.ReadString();
+ break;
+ }
+ }
+ }
+ }
+ #endif
+
+ }
+
+ ///
+ /// wire name: "lobby_set_ready"
+ ///
+ [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
+ public sealed partial class SetReadyCommand : pb::IMessage
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ , pb::IBufferMessage
+ #endif
+ {
+ private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new SetReadyCommand());
+ private pb::UnknownFieldSet _unknownFields;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public static pb::MessageParser Parser { get { return _parser; } }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::commands.GithubComArgusLabsWorldEnginePkgPluginLobbyGenReflection.Descriptor.MessageTypes[12]; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public SetReadyCommand() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public SetReadyCommand(SetReadyCommand other) : this() {
+ requestID_ = other.requestID_;
+ isReady_ = other.isReady_;
+ _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public SetReadyCommand Clone() {
+ return new SetReadyCommand(this);
+ }
+
+ /// Field number for the "RequestID" field.
+ public const int RequestIDFieldNumber = 1;
+ private string requestID_ = "";
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public string RequestID {
+ get { return requestID_; }
+ set {
+ requestID_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ /// Field number for the "IsReady" field.
+ public const int IsReadyFieldNumber = 2;
+ private bool isReady_;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public bool IsReady {
+ get { return isReady_; }
+ set {
+ isReady_ = value;
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override bool Equals(object other) {
+ return Equals(other as SetReadyCommand);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public bool Equals(SetReadyCommand other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (RequestID != other.RequestID) return false;
+ if (IsReady != other.IsReady) return false;
+ return Equals(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override int GetHashCode() {
+ int hash = 1;
+ if (RequestID.Length != 0) hash ^= RequestID.GetHashCode();
+ if (IsReady != false) hash ^= IsReady.GetHashCode();
+ if (_unknownFields != null) {
+ hash ^= _unknownFields.GetHashCode();
+ }
+ return hash;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override string ToString() {
+ return pb::JsonFormatter.ToDiagnosticString(this);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void WriteTo(pb::CodedOutputStream output) {
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ output.WriteRawMessage(this);
+ #else
+ if (RequestID.Length != 0) {
+ output.WriteRawTag(10);
+ output.WriteString(RequestID);
+ }
+ if (IsReady != false) {
+ output.WriteRawTag(16);
+ output.WriteBool(IsReady);
+ }
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(output);
+ }
+ #endif
+ }
+
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
+ if (RequestID.Length != 0) {
+ output.WriteRawTag(10);
+ output.WriteString(RequestID);
+ }
+ if (IsReady != false) {
+ output.WriteRawTag(16);
+ output.WriteBool(IsReady);
+ }
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(ref output);
+ }
+ }
+ #endif
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public int CalculateSize() {
+ int size = 0;
+ if (RequestID.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(RequestID);
+ }
+ if (IsReady != false) {
+ size += 1 + 1;
+ }
+ if (_unknownFields != null) {
+ size += _unknownFields.CalculateSize();
+ }
+ return size;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void MergeFrom(SetReadyCommand other) {
+ if (other == null) {
+ return;
+ }
+ if (other.RequestID.Length != 0) {
+ RequestID = other.RequestID;
+ }
+ if (other.IsReady != false) {
+ IsReady = other.IsReady;
+ }
+ _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void MergeFrom(pb::CodedInputStream input) {
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ input.ReadRawMessage(this);
+ #else
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ if ((tag & 7) == 4) {
+ // Abort on any end group tag.
+ return;
+ }
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
+ break;
+ case 10: {
+ RequestID = input.ReadString();
+ break;
+ }
+ case 16: {
+ IsReady = input.ReadBool();
+ break;
+ }
+ }
+ }
+ #endif
+ }
+
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ if ((tag & 7) == 4) {
+ // Abort on any end group tag.
+ return;
+ }
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
+ break;
+ case 10: {
+ RequestID = input.ReadString();
+ break;
+ }
+ case 16: {
+ IsReady = input.ReadBool();
+ break;
+ }
+ }
+ }
+ }
+ #endif
+
+ }
+
+ [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
+ public sealed partial class ShardAddress : pb::IMessage
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ , pb::IBufferMessage
+ #endif
+ {
+ private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new ShardAddress());
+ private pb::UnknownFieldSet _unknownFields;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public static pb::MessageParser Parser { get { return _parser; } }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::commands.GithubComArgusLabsWorldEnginePkgPluginLobbyGenReflection.Descriptor.MessageTypes[13]; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public ShardAddress() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public ShardAddress(ShardAddress other) : this() {
+ region_ = other.region_;
+ organization_ = other.organization_;
+ project_ = other.project_;
+ shardID_ = other.shardID_;
+ _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public ShardAddress Clone() {
+ return new ShardAddress(this);
+ }
+
+ /// Field number for the "Region" field.
+ public const int RegionFieldNumber = 1;
+ private string region_ = "";
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public string Region {
+ get { return region_; }
+ set {
+ region_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ /// Field number for the "Organization" field.
+ public const int OrganizationFieldNumber = 2;
+ private string organization_ = "";
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public string Organization {
+ get { return organization_; }
+ set {
+ organization_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ /// Field number for the "Project" field.
+ public const int ProjectFieldNumber = 3;
+ private string project_ = "";
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public string Project {
+ get { return project_; }
+ set {
+ project_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ /// Field number for the "ShardID" field.
+ public const int ShardIDFieldNumber = 4;
+ private string shardID_ = "";
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public string ShardID {
+ get { return shardID_; }
+ set {
+ shardID_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override bool Equals(object other) {
+ return Equals(other as ShardAddress);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public bool Equals(ShardAddress other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (Region != other.Region) return false;
+ if (Organization != other.Organization) return false;
+ if (Project != other.Project) return false;
+ if (ShardID != other.ShardID) return false;
+ return Equals(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override int GetHashCode() {
+ int hash = 1;
+ if (Region.Length != 0) hash ^= Region.GetHashCode();
+ if (Organization.Length != 0) hash ^= Organization.GetHashCode();
+ if (Project.Length != 0) hash ^= Project.GetHashCode();
+ if (ShardID.Length != 0) hash ^= ShardID.GetHashCode();
+ if (_unknownFields != null) {
+ hash ^= _unknownFields.GetHashCode();
+ }
+ return hash;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override string ToString() {
+ return pb::JsonFormatter.ToDiagnosticString(this);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void WriteTo(pb::CodedOutputStream output) {
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ output.WriteRawMessage(this);
+ #else
+ if (Region.Length != 0) {
+ output.WriteRawTag(10);
+ output.WriteString(Region);
+ }
+ if (Organization.Length != 0) {
+ output.WriteRawTag(18);
+ output.WriteString(Organization);
+ }
+ if (Project.Length != 0) {
+ output.WriteRawTag(26);
+ output.WriteString(Project);
+ }
+ if (ShardID.Length != 0) {
+ output.WriteRawTag(34);
+ output.WriteString(ShardID);
+ }
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(output);
+ }
+ #endif
+ }
+
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
+ if (Region.Length != 0) {
+ output.WriteRawTag(10);
+ output.WriteString(Region);
+ }
+ if (Organization.Length != 0) {
+ output.WriteRawTag(18);
+ output.WriteString(Organization);
+ }
+ if (Project.Length != 0) {
+ output.WriteRawTag(26);
+ output.WriteString(Project);
+ }
+ if (ShardID.Length != 0) {
+ output.WriteRawTag(34);
+ output.WriteString(ShardID);
+ }
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(ref output);
+ }
+ }
+ #endif
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public int CalculateSize() {
+ int size = 0;
+ if (Region.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(Region);
+ }
+ if (Organization.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(Organization);
+ }
+ if (Project.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(Project);
+ }
+ if (ShardID.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(ShardID);
+ }
+ if (_unknownFields != null) {
+ size += _unknownFields.CalculateSize();
+ }
+ return size;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void MergeFrom(ShardAddress other) {
+ if (other == null) {
+ return;
+ }
+ if (other.Region.Length != 0) {
+ Region = other.Region;
+ }
+ if (other.Organization.Length != 0) {
+ Organization = other.Organization;
+ }
+ if (other.Project.Length != 0) {
+ Project = other.Project;
+ }
+ if (other.ShardID.Length != 0) {
+ ShardID = other.ShardID;
+ }
+ _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void MergeFrom(pb::CodedInputStream input) {
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ input.ReadRawMessage(this);
+ #else
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ if ((tag & 7) == 4) {
+ // Abort on any end group tag.
+ return;
+ }
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
+ break;
+ case 10: {
+ Region = input.ReadString();
+ break;
+ }
+ case 18: {
+ Organization = input.ReadString();
+ break;
+ }
+ case 26: {
+ Project = input.ReadString();
+ break;
+ }
+ case 34: {
+ ShardID = input.ReadString();
+ break;
+ }
+ }
+ }
+ #endif
+ }
+
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ if ((tag & 7) == 4) {
+ // Abort on any end group tag.
+ return;
+ }
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
+ break;
+ case 10: {
+ Region = input.ReadString();
+ break;
+ }
+ case 18: {
+ Organization = input.ReadString();
+ break;
+ }
+ case 26: {
+ Project = input.ReadString();
+ break;
+ }
+ case 34: {
+ ShardID = input.ReadString();
+ break;
+ }
+ }
+ }
+ }
+ #endif
+
+ }
+
+ ///
+ /// wire name: "lobby_start_session"
+ ///
+ [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
+ public sealed partial class StartSessionCommand : pb::IMessage
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ , pb::IBufferMessage
+ #endif
+ {
+ private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new StartSessionCommand());
+ private pb::UnknownFieldSet _unknownFields;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public static pb::MessageParser Parser { get { return _parser; } }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::commands.GithubComArgusLabsWorldEnginePkgPluginLobbyGenReflection.Descriptor.MessageTypes[14]; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public StartSessionCommand() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public StartSessionCommand(StartSessionCommand other) : this() {
+ requestID_ = other.requestID_;
+ _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public StartSessionCommand Clone() {
+ return new StartSessionCommand(this);
+ }
+
+ /// Field number for the "RequestID" field.
+ public const int RequestIDFieldNumber = 1;
+ private string requestID_ = "";
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public string RequestID {
+ get { return requestID_; }
+ set {
+ requestID_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override bool Equals(object other) {
+ return Equals(other as StartSessionCommand);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public bool Equals(StartSessionCommand other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (RequestID != other.RequestID) return false;
+ return Equals(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override int GetHashCode() {
+ int hash = 1;
+ if (RequestID.Length != 0) hash ^= RequestID.GetHashCode();
+ if (_unknownFields != null) {
+ hash ^= _unknownFields.GetHashCode();
+ }
+ return hash;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override string ToString() {
+ return pb::JsonFormatter.ToDiagnosticString(this);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void WriteTo(pb::CodedOutputStream output) {
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ output.WriteRawMessage(this);
+ #else
+ if (RequestID.Length != 0) {
+ output.WriteRawTag(10);
+ output.WriteString(RequestID);
+ }
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(output);
+ }
+ #endif
+ }
+
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
+ if (RequestID.Length != 0) {
+ output.WriteRawTag(10);
+ output.WriteString(RequestID);
+ }
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(ref output);
+ }
+ }
+ #endif
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public int CalculateSize() {
+ int size = 0;
+ if (RequestID.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(RequestID);
+ }
+ if (_unknownFields != null) {
+ size += _unknownFields.CalculateSize();
+ }
+ return size;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void MergeFrom(StartSessionCommand other) {
+ if (other == null) {
+ return;
+ }
+ if (other.RequestID.Length != 0) {
+ RequestID = other.RequestID;
+ }
+ _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void MergeFrom(pb::CodedInputStream input) {
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ input.ReadRawMessage(this);
+ #else
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ if ((tag & 7) == 4) {
+ // Abort on any end group tag.
+ return;
+ }
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
+ break;
+ case 10: {
+ RequestID = input.ReadString();
+ break;
+ }
+ }
+ }
+ #endif
+ }
+
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ if ((tag & 7) == 4) {
+ // Abort on any end group tag.
+ return;
+ }
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
+ break;
+ case 10: {
+ RequestID = input.ReadString();
+ break;
+ }
+ }
+ }
+ }
+ #endif
+
+ }
+
+ ///
+ /// wire name: "lobby_transfer_leader"
+ ///
+ [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
+ public sealed partial class TransferLeaderCommand : pb::IMessage
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ , pb::IBufferMessage
+ #endif
+ {
+ private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new TransferLeaderCommand());
+ private pb::UnknownFieldSet _unknownFields;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public static pb::MessageParser Parser { get { return _parser; } }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::commands.GithubComArgusLabsWorldEnginePkgPluginLobbyGenReflection.Descriptor.MessageTypes[15]; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public TransferLeaderCommand() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public TransferLeaderCommand(TransferLeaderCommand other) : this() {
+ requestID_ = other.requestID_;
+ targetPlayerID_ = other.targetPlayerID_;
+ _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public TransferLeaderCommand Clone() {
+ return new TransferLeaderCommand(this);
+ }
+
+ /// Field number for the "RequestID" field.
+ public const int RequestIDFieldNumber = 1;
+ private string requestID_ = "";
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public string RequestID {
+ get { return requestID_; }
+ set {
+ requestID_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ /// Field number for the "TargetPlayerID" field.
+ public const int TargetPlayerIDFieldNumber = 2;
+ private string targetPlayerID_ = "";
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public string TargetPlayerID {
+ get { return targetPlayerID_; }
+ set {
+ targetPlayerID_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override bool Equals(object other) {
+ return Equals(other as TransferLeaderCommand);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public bool Equals(TransferLeaderCommand other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (RequestID != other.RequestID) return false;
+ if (TargetPlayerID != other.TargetPlayerID) return false;
+ return Equals(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override int GetHashCode() {
+ int hash = 1;
+ if (RequestID.Length != 0) hash ^= RequestID.GetHashCode();
+ if (TargetPlayerID.Length != 0) hash ^= TargetPlayerID.GetHashCode();
+ if (_unknownFields != null) {
+ hash ^= _unknownFields.GetHashCode();
+ }
+ return hash;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override string ToString() {
+ return pb::JsonFormatter.ToDiagnosticString(this);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void WriteTo(pb::CodedOutputStream output) {
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ output.WriteRawMessage(this);
+ #else
+ if (RequestID.Length != 0) {
+ output.WriteRawTag(10);
+ output.WriteString(RequestID);
+ }
+ if (TargetPlayerID.Length != 0) {
+ output.WriteRawTag(18);
+ output.WriteString(TargetPlayerID);
+ }
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(output);
+ }
+ #endif
+ }
+
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
+ if (RequestID.Length != 0) {
+ output.WriteRawTag(10);
+ output.WriteString(RequestID);
+ }
+ if (TargetPlayerID.Length != 0) {
+ output.WriteRawTag(18);
+ output.WriteString(TargetPlayerID);
+ }
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(ref output);
+ }
+ }
+ #endif
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public int CalculateSize() {
+ int size = 0;
+ if (RequestID.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(RequestID);
+ }
+ if (TargetPlayerID.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(TargetPlayerID);
+ }
+ if (_unknownFields != null) {
+ size += _unknownFields.CalculateSize();
+ }
+ return size;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void MergeFrom(TransferLeaderCommand other) {
+ if (other == null) {
+ return;
+ }
+ if (other.RequestID.Length != 0) {
+ RequestID = other.RequestID;
+ }
+ if (other.TargetPlayerID.Length != 0) {
+ TargetPlayerID = other.TargetPlayerID;
+ }
+ _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void MergeFrom(pb::CodedInputStream input) {
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ input.ReadRawMessage(this);
+ #else
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ if ((tag & 7) == 4) {
+ // Abort on any end group tag.
+ return;
+ }
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
+ break;
+ case 10: {
+ RequestID = input.ReadString();
+ break;
+ }
+ case 18: {
+ TargetPlayerID = input.ReadString();
+ break;
+ }
+ }
+ }
+ #endif
+ }
+
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ if ((tag & 7) == 4) {
+ // Abort on any end group tag.
+ return;
+ }
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
+ break;
+ case 10: {
+ RequestID = input.ReadString();
+ break;
+ }
+ case 18: {
+ TargetPlayerID = input.ReadString();
+ break;
+ }
+ }
+ }
+ }
+ #endif
+
+ }
+
+ ///
+ /// wire name: "lobby_update_player_passthrough"
+ ///
+ [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
+ public sealed partial class UpdatePlayerPassthroughCommand : pb::IMessage
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ , pb::IBufferMessage
+ #endif
+ {
+ private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new UpdatePlayerPassthroughCommand());
+ private pb::UnknownFieldSet _unknownFields;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public static pb::MessageParser Parser { get { return _parser; } }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::commands.GithubComArgusLabsWorldEnginePkgPluginLobbyGenReflection.Descriptor.MessageTypes[16]; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public UpdatePlayerPassthroughCommand() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public UpdatePlayerPassthroughCommand(UpdatePlayerPassthroughCommand other) : this() {
+ requestID_ = other.requestID_;
+ passthroughData_ = other.passthroughData_;
+ _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public UpdatePlayerPassthroughCommand Clone() {
+ return new UpdatePlayerPassthroughCommand(this);
+ }
+
+ /// Field number for the "RequestID" field.
+ public const int RequestIDFieldNumber = 1;
+ private string requestID_ = "";
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public string RequestID {
+ get { return requestID_; }
+ set {
+ requestID_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ /// Field number for the "PassthroughData" field.
+ public const int PassthroughDataFieldNumber = 2;
+ private pb::ByteString passthroughData_ = pb::ByteString.Empty;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public pb::ByteString PassthroughData {
+ get { return passthroughData_; }
+ set {
+ passthroughData_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override bool Equals(object other) {
+ return Equals(other as UpdatePlayerPassthroughCommand);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public bool Equals(UpdatePlayerPassthroughCommand other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (RequestID != other.RequestID) return false;
+ if (PassthroughData != other.PassthroughData) return false;
+ return Equals(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override int GetHashCode() {
+ int hash = 1;
+ if (RequestID.Length != 0) hash ^= RequestID.GetHashCode();
+ if (PassthroughData.Length != 0) hash ^= PassthroughData.GetHashCode();
+ if (_unknownFields != null) {
+ hash ^= _unknownFields.GetHashCode();
+ }
+ return hash;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override string ToString() {
+ return pb::JsonFormatter.ToDiagnosticString(this);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void WriteTo(pb::CodedOutputStream output) {
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ output.WriteRawMessage(this);
+ #else
+ if (RequestID.Length != 0) {
+ output.WriteRawTag(10);
+ output.WriteString(RequestID);
+ }
+ if (PassthroughData.Length != 0) {
+ output.WriteRawTag(18);
+ output.WriteBytes(PassthroughData);
+ }
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(output);
+ }
+ #endif
+ }
+
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
+ if (RequestID.Length != 0) {
+ output.WriteRawTag(10);
+ output.WriteString(RequestID);
+ }
+ if (PassthroughData.Length != 0) {
+ output.WriteRawTag(18);
+ output.WriteBytes(PassthroughData);
+ }
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(ref output);
+ }
+ }
+ #endif
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public int CalculateSize() {
+ int size = 0;
+ if (RequestID.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(RequestID);
+ }
+ if (PassthroughData.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeBytesSize(PassthroughData);
+ }
+ if (_unknownFields != null) {
+ size += _unknownFields.CalculateSize();
+ }
+ return size;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void MergeFrom(UpdatePlayerPassthroughCommand other) {
+ if (other == null) {
+ return;
+ }
+ if (other.RequestID.Length != 0) {
+ RequestID = other.RequestID;
+ }
+ if (other.PassthroughData.Length != 0) {
+ PassthroughData = other.PassthroughData;
+ }
+ _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void MergeFrom(pb::CodedInputStream input) {
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ input.ReadRawMessage(this);
+ #else
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ if ((tag & 7) == 4) {
+ // Abort on any end group tag.
+ return;
+ }
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
+ break;
+ case 10: {
+ RequestID = input.ReadString();
+ break;
+ }
+ case 18: {
+ PassthroughData = input.ReadBytes();
+ break;
+ }
+ }
+ }
+ #endif
+ }
+
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ if ((tag & 7) == 4) {
+ // Abort on any end group tag.
+ return;
+ }
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
+ break;
+ case 10: {
+ RequestID = input.ReadString();
+ break;
+ }
+ case 18: {
+ PassthroughData = input.ReadBytes();
+ break;
+ }
+ }
+ }
+ }
+ #endif
+
+ }
+
+ ///
+ /// wire name: "lobby_update_session_passthrough"
+ ///
+ [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
+ public sealed partial class UpdateSessionPassthroughCommand : pb::IMessage
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ , pb::IBufferMessage
+ #endif
+ {
+ private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new UpdateSessionPassthroughCommand());
+ private pb::UnknownFieldSet _unknownFields;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public static pb::MessageParser Parser { get { return _parser; } }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::commands.GithubComArgusLabsWorldEnginePkgPluginLobbyGenReflection.Descriptor.MessageTypes[17]; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ pbr::MessageDescriptor pb::IMessage.Descriptor {
+ get { return Descriptor; }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public UpdateSessionPassthroughCommand() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public UpdateSessionPassthroughCommand(UpdateSessionPassthroughCommand other) : this() {
+ requestID_ = other.requestID_;
+ passthroughData_ = other.passthroughData_;
+ _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public UpdateSessionPassthroughCommand Clone() {
+ return new UpdateSessionPassthroughCommand(this);
+ }
+
+ /// Field number for the "RequestID" field.
+ public const int RequestIDFieldNumber = 1;
+ private string requestID_ = "";
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public string RequestID {
+ get { return requestID_; }
+ set {
+ requestID_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ /// Field number for the "PassthroughData" field.
+ public const int PassthroughDataFieldNumber = 2;
+ private pb::ByteString passthroughData_ = pb::ByteString.Empty;
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public pb::ByteString PassthroughData {
+ get { return passthroughData_; }
+ set {
+ passthroughData_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
+ }
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override bool Equals(object other) {
+ return Equals(other as UpdateSessionPassthroughCommand);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public bool Equals(UpdateSessionPassthroughCommand other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (RequestID != other.RequestID) return false;
+ if (PassthroughData != other.PassthroughData) return false;
+ return Equals(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override int GetHashCode() {
+ int hash = 1;
+ if (RequestID.Length != 0) hash ^= RequestID.GetHashCode();
+ if (PassthroughData.Length != 0) hash ^= PassthroughData.GetHashCode();
+ if (_unknownFields != null) {
+ hash ^= _unknownFields.GetHashCode();
+ }
+ return hash;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public override string ToString() {
+ return pb::JsonFormatter.ToDiagnosticString(this);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void WriteTo(pb::CodedOutputStream output) {
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ output.WriteRawMessage(this);
+ #else
+ if (RequestID.Length != 0) {
+ output.WriteRawTag(10);
+ output.WriteString(RequestID);
+ }
+ if (PassthroughData.Length != 0) {
+ output.WriteRawTag(18);
+ output.WriteBytes(PassthroughData);
+ }
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(output);
+ }
+ #endif
+ }
+
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
+ if (RequestID.Length != 0) {
+ output.WriteRawTag(10);
+ output.WriteString(RequestID);
+ }
+ if (PassthroughData.Length != 0) {
+ output.WriteRawTag(18);
+ output.WriteBytes(PassthroughData);
+ }
+ if (_unknownFields != null) {
+ _unknownFields.WriteTo(ref output);
+ }
+ }
+ #endif
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public int CalculateSize() {
+ int size = 0;
+ if (RequestID.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(RequestID);
+ }
+ if (PassthroughData.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeBytesSize(PassthroughData);
+ }
+ if (_unknownFields != null) {
+ size += _unknownFields.CalculateSize();
+ }
+ return size;
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void MergeFrom(UpdateSessionPassthroughCommand other) {
+ if (other == null) {
+ return;
+ }
+ if (other.RequestID.Length != 0) {
+ RequestID = other.RequestID;
+ }
+ if (other.PassthroughData.Length != 0) {
+ PassthroughData = other.PassthroughData;
+ }
+ _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ public void MergeFrom(pb::CodedInputStream input) {
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ input.ReadRawMessage(this);
+ #else
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ if ((tag & 7) == 4) {
+ // Abort on any end group tag.
+ return;
+ }
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
+ break;
+ case 10: {
+ RequestID = input.ReadString();
+ break;
+ }
+ case 18: {
+ PassthroughData = input.ReadBytes();
+ break;
+ }
+ }
+ }
+ #endif
+ }
+
+ #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
+ void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
+ uint tag;
+ while ((tag = input.ReadTag()) != 0) {
+ if ((tag & 7) == 4) {
+ // Abort on any end group tag.
+ return;
+ }
+ switch(tag) {
+ default:
+ _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
+ break;
+ case 10: {
+ RequestID = input.ReadString();
+ break;
+ }
+ case 18: {
+ PassthroughData = input.ReadBytes();
+ break;
+ }
+ }
+ }
+ }
+ #endif
+
+ }
+
+ #endregion
+
+}
+
+#endregion Designer generated code
diff --git a/pkg/plugin/lobby/gen/doc.gen.go b/pkg/plugin/lobby/gen/doc.gen.go
new file mode 100644
index 000000000..f1897ffee
--- /dev/null
+++ b/pkg/plugin/lobby/gen/doc.gen.go
@@ -0,0 +1,2 @@
+// Code generated by world sdk generate. DO NOT EDIT.
+package gen
diff --git a/pkg/plugin/lobby/gen/github_com_argus_labs_world_engine_pkg_plugin_lobby_gen.pb.go b/pkg/plugin/lobby/gen/github_com_argus_labs_world_engine_pkg_plugin_lobby_gen.pb.go
new file mode 100644
index 000000000..daff1d36d
--- /dev/null
+++ b/pkg/plugin/lobby/gen/github_com_argus_labs_world_engine_pkg_plugin_lobby_gen.pb.go
@@ -0,0 +1,1165 @@
+// Code generated by world sdk generate. DO NOT EDIT.
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.36.11
+// protoc (unknown)
+// source: github_com_argus_labs_world_engine_pkg_plugin_lobby_gen.proto
+
+package gen
+
+import (
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ reflect "reflect"
+ sync "sync"
+ unsafe "unsafe"
+)
+
+const (
+ // Verify that this generated code is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+ // Verify that runtime/protoimpl is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+// wire name: "lobby_assign_shard"
+type AssignShardCommand struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ LobbyID string `protobuf:"bytes,1,opt,name=LobbyID,proto3" json:"LobbyID,omitempty"`
+ RequestID string `protobuf:"bytes,2,opt,name=RequestID,proto3" json:"RequestID,omitempty"`
+ GameWorld *ShardAddress `protobuf:"bytes,3,opt,name=GameWorld,proto3" json:"GameWorld,omitempty"`
+ Reason string `protobuf:"bytes,4,opt,name=Reason,proto3" json:"Reason,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *AssignShardCommand) Reset() {
+ *x = AssignShardCommand{}
+ mi := &file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *AssignShardCommand) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AssignShardCommand) ProtoMessage() {}
+
+func (x *AssignShardCommand) ProtoReflect() protoreflect.Message {
+ mi := &file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_msgTypes[0]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use AssignShardCommand.ProtoReflect.Descriptor instead.
+func (*AssignShardCommand) Descriptor() ([]byte, []int) {
+ return file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *AssignShardCommand) GetLobbyID() string {
+ if x != nil {
+ return x.LobbyID
+ }
+ return ""
+}
+
+func (x *AssignShardCommand) GetRequestID() string {
+ if x != nil {
+ return x.RequestID
+ }
+ return ""
+}
+
+func (x *AssignShardCommand) GetGameWorld() *ShardAddress {
+ if x != nil {
+ return x.GameWorld
+ }
+ return nil
+}
+
+func (x *AssignShardCommand) GetReason() string {
+ if x != nil {
+ return x.Reason
+ }
+ return ""
+}
+
+// wire name: "lobby_create"
+type CreateLobbyCommand struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ RequestID string `protobuf:"bytes,1,opt,name=RequestID,proto3" json:"RequestID,omitempty"`
+ Preset string `protobuf:"bytes,2,opt,name=Preset,proto3" json:"Preset,omitempty"`
+ PlayerPassthroughData []byte `protobuf:"bytes,3,opt,name=PlayerPassthroughData,proto3" json:"PlayerPassthroughData,omitempty"`
+ SessionPassthroughData []byte `protobuf:"bytes,4,opt,name=SessionPassthroughData,proto3" json:"SessionPassthroughData,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *CreateLobbyCommand) Reset() {
+ *x = CreateLobbyCommand{}
+ mi := &file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *CreateLobbyCommand) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CreateLobbyCommand) ProtoMessage() {}
+
+func (x *CreateLobbyCommand) ProtoReflect() protoreflect.Message {
+ mi := &file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_msgTypes[1]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use CreateLobbyCommand.ProtoReflect.Descriptor instead.
+func (*CreateLobbyCommand) Descriptor() ([]byte, []int) {
+ return file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *CreateLobbyCommand) GetRequestID() string {
+ if x != nil {
+ return x.RequestID
+ }
+ return ""
+}
+
+func (x *CreateLobbyCommand) GetPreset() string {
+ if x != nil {
+ return x.Preset
+ }
+ return ""
+}
+
+func (x *CreateLobbyCommand) GetPlayerPassthroughData() []byte {
+ if x != nil {
+ return x.PlayerPassthroughData
+ }
+ return nil
+}
+
+func (x *CreateLobbyCommand) GetSessionPassthroughData() []byte {
+ if x != nil {
+ return x.SessionPassthroughData
+ }
+ return nil
+}
+
+// wire name: "lobby_generate_invite"
+type GenerateInviteCodeCommand struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ RequestID string `protobuf:"bytes,1,opt,name=RequestID,proto3" json:"RequestID,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *GenerateInviteCodeCommand) Reset() {
+ *x = GenerateInviteCodeCommand{}
+ mi := &file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *GenerateInviteCodeCommand) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GenerateInviteCodeCommand) ProtoMessage() {}
+
+func (x *GenerateInviteCodeCommand) ProtoReflect() protoreflect.Message {
+ mi := &file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_msgTypes[2]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GenerateInviteCodeCommand.ProtoReflect.Descriptor instead.
+func (*GenerateInviteCodeCommand) Descriptor() ([]byte, []int) {
+ return file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *GenerateInviteCodeCommand) GetRequestID() string {
+ if x != nil {
+ return x.RequestID
+ }
+ return ""
+}
+
+// wire name: "lobby_get_all_players"
+type GetAllPlayersCommand struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ RequestID string `protobuf:"bytes,1,opt,name=RequestID,proto3" json:"RequestID,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *GetAllPlayersCommand) Reset() {
+ *x = GetAllPlayersCommand{}
+ mi := &file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_msgTypes[3]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *GetAllPlayersCommand) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetAllPlayersCommand) ProtoMessage() {}
+
+func (x *GetAllPlayersCommand) ProtoReflect() protoreflect.Message {
+ mi := &file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_msgTypes[3]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetAllPlayersCommand.ProtoReflect.Descriptor instead.
+func (*GetAllPlayersCommand) Descriptor() ([]byte, []int) {
+ return file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_rawDescGZIP(), []int{3}
+}
+
+func (x *GetAllPlayersCommand) GetRequestID() string {
+ if x != nil {
+ return x.RequestID
+ }
+ return ""
+}
+
+// wire name: "lobby_get_lobby"
+type GetLobbyCommand struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ RequestID string `protobuf:"bytes,1,opt,name=RequestID,proto3" json:"RequestID,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *GetLobbyCommand) Reset() {
+ *x = GetLobbyCommand{}
+ mi := &file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_msgTypes[4]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *GetLobbyCommand) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetLobbyCommand) ProtoMessage() {}
+
+func (x *GetLobbyCommand) ProtoReflect() protoreflect.Message {
+ mi := &file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_msgTypes[4]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetLobbyCommand.ProtoReflect.Descriptor instead.
+func (*GetLobbyCommand) Descriptor() ([]byte, []int) {
+ return file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_rawDescGZIP(), []int{4}
+}
+
+func (x *GetLobbyCommand) GetRequestID() string {
+ if x != nil {
+ return x.RequestID
+ }
+ return ""
+}
+
+// wire name: "lobby_get_player"
+type GetPlayerCommand struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ RequestID string `protobuf:"bytes,1,opt,name=RequestID,proto3" json:"RequestID,omitempty"`
+ PlayerID string `protobuf:"bytes,2,opt,name=PlayerID,proto3" json:"PlayerID,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *GetPlayerCommand) Reset() {
+ *x = GetPlayerCommand{}
+ mi := &file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_msgTypes[5]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *GetPlayerCommand) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*GetPlayerCommand) ProtoMessage() {}
+
+func (x *GetPlayerCommand) ProtoReflect() protoreflect.Message {
+ mi := &file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_msgTypes[5]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use GetPlayerCommand.ProtoReflect.Descriptor instead.
+func (*GetPlayerCommand) Descriptor() ([]byte, []int) {
+ return file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_rawDescGZIP(), []int{5}
+}
+
+func (x *GetPlayerCommand) GetRequestID() string {
+ if x != nil {
+ return x.RequestID
+ }
+ return ""
+}
+
+func (x *GetPlayerCommand) GetPlayerID() string {
+ if x != nil {
+ return x.PlayerID
+ }
+ return ""
+}
+
+// wire name: "lobby_heartbeat"
+type HeartbeatCommand struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *HeartbeatCommand) Reset() {
+ *x = HeartbeatCommand{}
+ mi := &file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_msgTypes[6]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *HeartbeatCommand) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*HeartbeatCommand) ProtoMessage() {}
+
+func (x *HeartbeatCommand) ProtoReflect() protoreflect.Message {
+ mi := &file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_msgTypes[6]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use HeartbeatCommand.ProtoReflect.Descriptor instead.
+func (*HeartbeatCommand) Descriptor() ([]byte, []int) {
+ return file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_rawDescGZIP(), []int{6}
+}
+
+// wire name: "lobby_join"
+type JoinLobbyCommand struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ RequestID string `protobuf:"bytes,1,opt,name=RequestID,proto3" json:"RequestID,omitempty"`
+ InviteCode string `protobuf:"bytes,2,opt,name=InviteCode,proto3" json:"InviteCode,omitempty"`
+ TeamID string `protobuf:"bytes,3,opt,name=TeamID,proto3" json:"TeamID,omitempty"`
+ PlayerPassthroughData []byte `protobuf:"bytes,4,opt,name=PlayerPassthroughData,proto3" json:"PlayerPassthroughData,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *JoinLobbyCommand) Reset() {
+ *x = JoinLobbyCommand{}
+ mi := &file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_msgTypes[7]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *JoinLobbyCommand) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*JoinLobbyCommand) ProtoMessage() {}
+
+func (x *JoinLobbyCommand) ProtoReflect() protoreflect.Message {
+ mi := &file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_msgTypes[7]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use JoinLobbyCommand.ProtoReflect.Descriptor instead.
+func (*JoinLobbyCommand) Descriptor() ([]byte, []int) {
+ return file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_rawDescGZIP(), []int{7}
+}
+
+func (x *JoinLobbyCommand) GetRequestID() string {
+ if x != nil {
+ return x.RequestID
+ }
+ return ""
+}
+
+func (x *JoinLobbyCommand) GetInviteCode() string {
+ if x != nil {
+ return x.InviteCode
+ }
+ return ""
+}
+
+func (x *JoinLobbyCommand) GetTeamID() string {
+ if x != nil {
+ return x.TeamID
+ }
+ return ""
+}
+
+func (x *JoinLobbyCommand) GetPlayerPassthroughData() []byte {
+ if x != nil {
+ return x.PlayerPassthroughData
+ }
+ return nil
+}
+
+// wire name: "lobby_join_team"
+type JoinTeamCommand struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ RequestID string `protobuf:"bytes,1,opt,name=RequestID,proto3" json:"RequestID,omitempty"`
+ TeamID string `protobuf:"bytes,2,opt,name=TeamID,proto3" json:"TeamID,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *JoinTeamCommand) Reset() {
+ *x = JoinTeamCommand{}
+ mi := &file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_msgTypes[8]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *JoinTeamCommand) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*JoinTeamCommand) ProtoMessage() {}
+
+func (x *JoinTeamCommand) ProtoReflect() protoreflect.Message {
+ mi := &file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_msgTypes[8]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use JoinTeamCommand.ProtoReflect.Descriptor instead.
+func (*JoinTeamCommand) Descriptor() ([]byte, []int) {
+ return file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_rawDescGZIP(), []int{8}
+}
+
+func (x *JoinTeamCommand) GetRequestID() string {
+ if x != nil {
+ return x.RequestID
+ }
+ return ""
+}
+
+func (x *JoinTeamCommand) GetTeamID() string {
+ if x != nil {
+ return x.TeamID
+ }
+ return ""
+}
+
+// wire name: "lobby_kick"
+type KickPlayerCommand struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ RequestID string `protobuf:"bytes,1,opt,name=RequestID,proto3" json:"RequestID,omitempty"`
+ TargetPlayerID string `protobuf:"bytes,2,opt,name=TargetPlayerID,proto3" json:"TargetPlayerID,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *KickPlayerCommand) Reset() {
+ *x = KickPlayerCommand{}
+ mi := &file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_msgTypes[9]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *KickPlayerCommand) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*KickPlayerCommand) ProtoMessage() {}
+
+func (x *KickPlayerCommand) ProtoReflect() protoreflect.Message {
+ mi := &file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_msgTypes[9]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use KickPlayerCommand.ProtoReflect.Descriptor instead.
+func (*KickPlayerCommand) Descriptor() ([]byte, []int) {
+ return file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_rawDescGZIP(), []int{9}
+}
+
+func (x *KickPlayerCommand) GetRequestID() string {
+ if x != nil {
+ return x.RequestID
+ }
+ return ""
+}
+
+func (x *KickPlayerCommand) GetTargetPlayerID() string {
+ if x != nil {
+ return x.TargetPlayerID
+ }
+ return ""
+}
+
+// wire name: "lobby_leave"
+type LeaveLobbyCommand struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ RequestID string `protobuf:"bytes,1,opt,name=RequestID,proto3" json:"RequestID,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *LeaveLobbyCommand) Reset() {
+ *x = LeaveLobbyCommand{}
+ mi := &file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_msgTypes[10]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *LeaveLobbyCommand) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*LeaveLobbyCommand) ProtoMessage() {}
+
+func (x *LeaveLobbyCommand) ProtoReflect() protoreflect.Message {
+ mi := &file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_msgTypes[10]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use LeaveLobbyCommand.ProtoReflect.Descriptor instead.
+func (*LeaveLobbyCommand) Descriptor() ([]byte, []int) {
+ return file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_rawDescGZIP(), []int{10}
+}
+
+func (x *LeaveLobbyCommand) GetRequestID() string {
+ if x != nil {
+ return x.RequestID
+ }
+ return ""
+}
+
+// wire name: "lobby_notify_session_end"
+type NotifySessionEndCommand struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ LobbyID string `protobuf:"bytes,1,opt,name=LobbyID,proto3" json:"LobbyID,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *NotifySessionEndCommand) Reset() {
+ *x = NotifySessionEndCommand{}
+ mi := &file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_msgTypes[11]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *NotifySessionEndCommand) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*NotifySessionEndCommand) ProtoMessage() {}
+
+func (x *NotifySessionEndCommand) ProtoReflect() protoreflect.Message {
+ mi := &file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_msgTypes[11]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use NotifySessionEndCommand.ProtoReflect.Descriptor instead.
+func (*NotifySessionEndCommand) Descriptor() ([]byte, []int) {
+ return file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_rawDescGZIP(), []int{11}
+}
+
+func (x *NotifySessionEndCommand) GetLobbyID() string {
+ if x != nil {
+ return x.LobbyID
+ }
+ return ""
+}
+
+// wire name: "lobby_notify_session_start"
+type NotifySessionStartCommand struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ LobbyID string `protobuf:"bytes,1,opt,name=LobbyID,proto3" json:"LobbyID,omitempty"`
+ LobbyWorld *ShardAddress `protobuf:"bytes,2,opt,name=LobbyWorld,proto3" json:"LobbyWorld,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *NotifySessionStartCommand) Reset() {
+ *x = NotifySessionStartCommand{}
+ mi := &file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_msgTypes[12]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *NotifySessionStartCommand) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*NotifySessionStartCommand) ProtoMessage() {}
+
+func (x *NotifySessionStartCommand) ProtoReflect() protoreflect.Message {
+ mi := &file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_msgTypes[12]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use NotifySessionStartCommand.ProtoReflect.Descriptor instead.
+func (*NotifySessionStartCommand) Descriptor() ([]byte, []int) {
+ return file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_rawDescGZIP(), []int{12}
+}
+
+func (x *NotifySessionStartCommand) GetLobbyID() string {
+ if x != nil {
+ return x.LobbyID
+ }
+ return ""
+}
+
+func (x *NotifySessionStartCommand) GetLobbyWorld() *ShardAddress {
+ if x != nil {
+ return x.LobbyWorld
+ }
+ return nil
+}
+
+// wire name: "lobby_set_ready"
+type SetReadyCommand struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ RequestID string `protobuf:"bytes,1,opt,name=RequestID,proto3" json:"RequestID,omitempty"`
+ IsReady bool `protobuf:"varint,2,opt,name=IsReady,proto3" json:"IsReady,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *SetReadyCommand) Reset() {
+ *x = SetReadyCommand{}
+ mi := &file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_msgTypes[13]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *SetReadyCommand) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*SetReadyCommand) ProtoMessage() {}
+
+func (x *SetReadyCommand) ProtoReflect() protoreflect.Message {
+ mi := &file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_msgTypes[13]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use SetReadyCommand.ProtoReflect.Descriptor instead.
+func (*SetReadyCommand) Descriptor() ([]byte, []int) {
+ return file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_rawDescGZIP(), []int{13}
+}
+
+func (x *SetReadyCommand) GetRequestID() string {
+ if x != nil {
+ return x.RequestID
+ }
+ return ""
+}
+
+func (x *SetReadyCommand) GetIsReady() bool {
+ if x != nil {
+ return x.IsReady
+ }
+ return false
+}
+
+type ShardAddress struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ Region string `protobuf:"bytes,1,opt,name=Region,proto3" json:"Region,omitempty"`
+ Organization string `protobuf:"bytes,2,opt,name=Organization,proto3" json:"Organization,omitempty"`
+ Project string `protobuf:"bytes,3,opt,name=Project,proto3" json:"Project,omitempty"`
+ ShardID string `protobuf:"bytes,4,opt,name=ShardID,proto3" json:"ShardID,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *ShardAddress) Reset() {
+ *x = ShardAddress{}
+ mi := &file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_msgTypes[14]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *ShardAddress) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ShardAddress) ProtoMessage() {}
+
+func (x *ShardAddress) ProtoReflect() protoreflect.Message {
+ mi := &file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_msgTypes[14]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ShardAddress.ProtoReflect.Descriptor instead.
+func (*ShardAddress) Descriptor() ([]byte, []int) {
+ return file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_rawDescGZIP(), []int{14}
+}
+
+func (x *ShardAddress) GetRegion() string {
+ if x != nil {
+ return x.Region
+ }
+ return ""
+}
+
+func (x *ShardAddress) GetOrganization() string {
+ if x != nil {
+ return x.Organization
+ }
+ return ""
+}
+
+func (x *ShardAddress) GetProject() string {
+ if x != nil {
+ return x.Project
+ }
+ return ""
+}
+
+func (x *ShardAddress) GetShardID() string {
+ if x != nil {
+ return x.ShardID
+ }
+ return ""
+}
+
+// wire name: "lobby_start_session"
+type StartSessionCommand struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ RequestID string `protobuf:"bytes,1,opt,name=RequestID,proto3" json:"RequestID,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *StartSessionCommand) Reset() {
+ *x = StartSessionCommand{}
+ mi := &file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_msgTypes[15]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *StartSessionCommand) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*StartSessionCommand) ProtoMessage() {}
+
+func (x *StartSessionCommand) ProtoReflect() protoreflect.Message {
+ mi := &file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_msgTypes[15]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use StartSessionCommand.ProtoReflect.Descriptor instead.
+func (*StartSessionCommand) Descriptor() ([]byte, []int) {
+ return file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_rawDescGZIP(), []int{15}
+}
+
+func (x *StartSessionCommand) GetRequestID() string {
+ if x != nil {
+ return x.RequestID
+ }
+ return ""
+}
+
+// wire name: "lobby_transfer_leader"
+type TransferLeaderCommand struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ RequestID string `protobuf:"bytes,1,opt,name=RequestID,proto3" json:"RequestID,omitempty"`
+ TargetPlayerID string `protobuf:"bytes,2,opt,name=TargetPlayerID,proto3" json:"TargetPlayerID,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *TransferLeaderCommand) Reset() {
+ *x = TransferLeaderCommand{}
+ mi := &file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_msgTypes[16]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *TransferLeaderCommand) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*TransferLeaderCommand) ProtoMessage() {}
+
+func (x *TransferLeaderCommand) ProtoReflect() protoreflect.Message {
+ mi := &file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_msgTypes[16]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use TransferLeaderCommand.ProtoReflect.Descriptor instead.
+func (*TransferLeaderCommand) Descriptor() ([]byte, []int) {
+ return file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_rawDescGZIP(), []int{16}
+}
+
+func (x *TransferLeaderCommand) GetRequestID() string {
+ if x != nil {
+ return x.RequestID
+ }
+ return ""
+}
+
+func (x *TransferLeaderCommand) GetTargetPlayerID() string {
+ if x != nil {
+ return x.TargetPlayerID
+ }
+ return ""
+}
+
+// wire name: "lobby_update_player_passthrough"
+type UpdatePlayerPassthroughCommand struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ RequestID string `protobuf:"bytes,1,opt,name=RequestID,proto3" json:"RequestID,omitempty"`
+ PassthroughData []byte `protobuf:"bytes,2,opt,name=PassthroughData,proto3" json:"PassthroughData,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *UpdatePlayerPassthroughCommand) Reset() {
+ *x = UpdatePlayerPassthroughCommand{}
+ mi := &file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_msgTypes[17]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *UpdatePlayerPassthroughCommand) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UpdatePlayerPassthroughCommand) ProtoMessage() {}
+
+func (x *UpdatePlayerPassthroughCommand) ProtoReflect() protoreflect.Message {
+ mi := &file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_msgTypes[17]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use UpdatePlayerPassthroughCommand.ProtoReflect.Descriptor instead.
+func (*UpdatePlayerPassthroughCommand) Descriptor() ([]byte, []int) {
+ return file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_rawDescGZIP(), []int{17}
+}
+
+func (x *UpdatePlayerPassthroughCommand) GetRequestID() string {
+ if x != nil {
+ return x.RequestID
+ }
+ return ""
+}
+
+func (x *UpdatePlayerPassthroughCommand) GetPassthroughData() []byte {
+ if x != nil {
+ return x.PassthroughData
+ }
+ return nil
+}
+
+// wire name: "lobby_update_session_passthrough"
+type UpdateSessionPassthroughCommand struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ RequestID string `protobuf:"bytes,1,opt,name=RequestID,proto3" json:"RequestID,omitempty"`
+ PassthroughData []byte `protobuf:"bytes,2,opt,name=PassthroughData,proto3" json:"PassthroughData,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *UpdateSessionPassthroughCommand) Reset() {
+ *x = UpdateSessionPassthroughCommand{}
+ mi := &file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_msgTypes[18]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *UpdateSessionPassthroughCommand) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UpdateSessionPassthroughCommand) ProtoMessage() {}
+
+func (x *UpdateSessionPassthroughCommand) ProtoReflect() protoreflect.Message {
+ mi := &file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_msgTypes[18]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use UpdateSessionPassthroughCommand.ProtoReflect.Descriptor instead.
+func (*UpdateSessionPassthroughCommand) Descriptor() ([]byte, []int) {
+ return file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_rawDescGZIP(), []int{18}
+}
+
+func (x *UpdateSessionPassthroughCommand) GetRequestID() string {
+ if x != nil {
+ return x.RequestID
+ }
+ return ""
+}
+
+func (x *UpdateSessionPassthroughCommand) GetPassthroughData() []byte {
+ if x != nil {
+ return x.PassthroughData
+ }
+ return nil
+}
+
+var File_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto protoreflect.FileDescriptor
+
+const file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_rawDesc = "" +
+ "\n" +
+ "=github_com_argus_labs_world_engine_pkg_plugin_lobby_gen.proto\x127github_com_argus_labs_world_engine_pkg_plugin_lobby_gen\"\xc9\x01\n" +
+ "\x12AssignShardCommand\x12\x18\n" +
+ "\aLobbyID\x18\x01 \x01(\tR\aLobbyID\x12\x1c\n" +
+ "\tRequestID\x18\x02 \x01(\tR\tRequestID\x12c\n" +
+ "\tGameWorld\x18\x03 \x01(\v2E.github_com_argus_labs_world_engine_pkg_plugin_lobby_gen.ShardAddressR\tGameWorld\x12\x16\n" +
+ "\x06Reason\x18\x04 \x01(\tR\x06Reason\"\xb8\x01\n" +
+ "\x12CreateLobbyCommand\x12\x1c\n" +
+ "\tRequestID\x18\x01 \x01(\tR\tRequestID\x12\x16\n" +
+ "\x06Preset\x18\x02 \x01(\tR\x06Preset\x124\n" +
+ "\x15PlayerPassthroughData\x18\x03 \x01(\fR\x15PlayerPassthroughData\x126\n" +
+ "\x16SessionPassthroughData\x18\x04 \x01(\fR\x16SessionPassthroughData\"9\n" +
+ "\x19GenerateInviteCodeCommand\x12\x1c\n" +
+ "\tRequestID\x18\x01 \x01(\tR\tRequestID\"4\n" +
+ "\x14GetAllPlayersCommand\x12\x1c\n" +
+ "\tRequestID\x18\x01 \x01(\tR\tRequestID\"/\n" +
+ "\x0fGetLobbyCommand\x12\x1c\n" +
+ "\tRequestID\x18\x01 \x01(\tR\tRequestID\"L\n" +
+ "\x10GetPlayerCommand\x12\x1c\n" +
+ "\tRequestID\x18\x01 \x01(\tR\tRequestID\x12\x1a\n" +
+ "\bPlayerID\x18\x02 \x01(\tR\bPlayerID\"\x12\n" +
+ "\x10HeartbeatCommand\"\x9e\x01\n" +
+ "\x10JoinLobbyCommand\x12\x1c\n" +
+ "\tRequestID\x18\x01 \x01(\tR\tRequestID\x12\x1e\n" +
+ "\n" +
+ "InviteCode\x18\x02 \x01(\tR\n" +
+ "InviteCode\x12\x16\n" +
+ "\x06TeamID\x18\x03 \x01(\tR\x06TeamID\x124\n" +
+ "\x15PlayerPassthroughData\x18\x04 \x01(\fR\x15PlayerPassthroughData\"G\n" +
+ "\x0fJoinTeamCommand\x12\x1c\n" +
+ "\tRequestID\x18\x01 \x01(\tR\tRequestID\x12\x16\n" +
+ "\x06TeamID\x18\x02 \x01(\tR\x06TeamID\"Y\n" +
+ "\x11KickPlayerCommand\x12\x1c\n" +
+ "\tRequestID\x18\x01 \x01(\tR\tRequestID\x12&\n" +
+ "\x0eTargetPlayerID\x18\x02 \x01(\tR\x0eTargetPlayerID\"1\n" +
+ "\x11LeaveLobbyCommand\x12\x1c\n" +
+ "\tRequestID\x18\x01 \x01(\tR\tRequestID\"3\n" +
+ "\x17NotifySessionEndCommand\x12\x18\n" +
+ "\aLobbyID\x18\x01 \x01(\tR\aLobbyID\"\x9c\x01\n" +
+ "\x19NotifySessionStartCommand\x12\x18\n" +
+ "\aLobbyID\x18\x01 \x01(\tR\aLobbyID\x12e\n" +
+ "\n" +
+ "LobbyWorld\x18\x02 \x01(\v2E.github_com_argus_labs_world_engine_pkg_plugin_lobby_gen.ShardAddressR\n" +
+ "LobbyWorld\"I\n" +
+ "\x0fSetReadyCommand\x12\x1c\n" +
+ "\tRequestID\x18\x01 \x01(\tR\tRequestID\x12\x18\n" +
+ "\aIsReady\x18\x02 \x01(\bR\aIsReady\"~\n" +
+ "\fShardAddress\x12\x16\n" +
+ "\x06Region\x18\x01 \x01(\tR\x06Region\x12\"\n" +
+ "\fOrganization\x18\x02 \x01(\tR\fOrganization\x12\x18\n" +
+ "\aProject\x18\x03 \x01(\tR\aProject\x12\x18\n" +
+ "\aShardID\x18\x04 \x01(\tR\aShardID\"3\n" +
+ "\x13StartSessionCommand\x12\x1c\n" +
+ "\tRequestID\x18\x01 \x01(\tR\tRequestID\"]\n" +
+ "\x15TransferLeaderCommand\x12\x1c\n" +
+ "\tRequestID\x18\x01 \x01(\tR\tRequestID\x12&\n" +
+ "\x0eTargetPlayerID\x18\x02 \x01(\tR\x0eTargetPlayerID\"h\n" +
+ "\x1eUpdatePlayerPassthroughCommand\x12\x1c\n" +
+ "\tRequestID\x18\x01 \x01(\tR\tRequestID\x12(\n" +
+ "\x0fPassthroughData\x18\x02 \x01(\fR\x0fPassthroughData\"i\n" +
+ "\x1fUpdateSessionPassthroughCommand\x12\x1c\n" +
+ "\tRequestID\x18\x01 \x01(\tR\tRequestID\x12(\n" +
+ "\x0fPassthroughData\x18\x02 \x01(\fR\x0fPassthroughDataBEZ;github.com/argus-labs/world-engine/pkg/plugin/lobby/gen;gen\xaa\x02\x05lobbyb\x06proto3"
+
+var (
+ file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_rawDescOnce sync.Once
+ file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_rawDescData []byte
+)
+
+func file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_rawDescGZIP() []byte {
+ file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_rawDescOnce.Do(func() {
+ file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_rawDesc), len(file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_rawDesc)))
+ })
+ return file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_rawDescData
+}
+
+var file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_msgTypes = make([]protoimpl.MessageInfo, 19)
+var file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_goTypes = []any{
+ (*AssignShardCommand)(nil), // 0: github_com_argus_labs_world_engine_pkg_plugin_lobby_gen.AssignShardCommand
+ (*CreateLobbyCommand)(nil), // 1: github_com_argus_labs_world_engine_pkg_plugin_lobby_gen.CreateLobbyCommand
+ (*GenerateInviteCodeCommand)(nil), // 2: github_com_argus_labs_world_engine_pkg_plugin_lobby_gen.GenerateInviteCodeCommand
+ (*GetAllPlayersCommand)(nil), // 3: github_com_argus_labs_world_engine_pkg_plugin_lobby_gen.GetAllPlayersCommand
+ (*GetLobbyCommand)(nil), // 4: github_com_argus_labs_world_engine_pkg_plugin_lobby_gen.GetLobbyCommand
+ (*GetPlayerCommand)(nil), // 5: github_com_argus_labs_world_engine_pkg_plugin_lobby_gen.GetPlayerCommand
+ (*HeartbeatCommand)(nil), // 6: github_com_argus_labs_world_engine_pkg_plugin_lobby_gen.HeartbeatCommand
+ (*JoinLobbyCommand)(nil), // 7: github_com_argus_labs_world_engine_pkg_plugin_lobby_gen.JoinLobbyCommand
+ (*JoinTeamCommand)(nil), // 8: github_com_argus_labs_world_engine_pkg_plugin_lobby_gen.JoinTeamCommand
+ (*KickPlayerCommand)(nil), // 9: github_com_argus_labs_world_engine_pkg_plugin_lobby_gen.KickPlayerCommand
+ (*LeaveLobbyCommand)(nil), // 10: github_com_argus_labs_world_engine_pkg_plugin_lobby_gen.LeaveLobbyCommand
+ (*NotifySessionEndCommand)(nil), // 11: github_com_argus_labs_world_engine_pkg_plugin_lobby_gen.NotifySessionEndCommand
+ (*NotifySessionStartCommand)(nil), // 12: github_com_argus_labs_world_engine_pkg_plugin_lobby_gen.NotifySessionStartCommand
+ (*SetReadyCommand)(nil), // 13: github_com_argus_labs_world_engine_pkg_plugin_lobby_gen.SetReadyCommand
+ (*ShardAddress)(nil), // 14: github_com_argus_labs_world_engine_pkg_plugin_lobby_gen.ShardAddress
+ (*StartSessionCommand)(nil), // 15: github_com_argus_labs_world_engine_pkg_plugin_lobby_gen.StartSessionCommand
+ (*TransferLeaderCommand)(nil), // 16: github_com_argus_labs_world_engine_pkg_plugin_lobby_gen.TransferLeaderCommand
+ (*UpdatePlayerPassthroughCommand)(nil), // 17: github_com_argus_labs_world_engine_pkg_plugin_lobby_gen.UpdatePlayerPassthroughCommand
+ (*UpdateSessionPassthroughCommand)(nil), // 18: github_com_argus_labs_world_engine_pkg_plugin_lobby_gen.UpdateSessionPassthroughCommand
+}
+var file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_depIdxs = []int32{
+ 14, // 0: github_com_argus_labs_world_engine_pkg_plugin_lobby_gen.AssignShardCommand.GameWorld:type_name -> github_com_argus_labs_world_engine_pkg_plugin_lobby_gen.ShardAddress
+ 14, // 1: github_com_argus_labs_world_engine_pkg_plugin_lobby_gen.NotifySessionStartCommand.LobbyWorld:type_name -> github_com_argus_labs_world_engine_pkg_plugin_lobby_gen.ShardAddress
+ 2, // [2:2] is the sub-list for method output_type
+ 2, // [2:2] is the sub-list for method input_type
+ 2, // [2:2] is the sub-list for extension type_name
+ 2, // [2:2] is the sub-list for extension extendee
+ 0, // [0:2] is the sub-list for field type_name
+}
+
+func init() { file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_init() }
+func file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_init() {
+ if File_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto != nil {
+ return
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_rawDesc), len(file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_rawDesc)),
+ NumEnums: 0,
+ NumMessages: 19,
+ NumExtensions: 0,
+ NumServices: 0,
+ },
+ GoTypes: file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_goTypes,
+ DependencyIndexes: file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_depIdxs,
+ MessageInfos: file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_msgTypes,
+ }.Build()
+ File_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto = out.File
+ file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_goTypes = nil
+ file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_depIdxs = nil
+}
diff --git a/pkg/plugin/lobby/lobby_test.go b/pkg/plugin/lobby/lobby_test.go
index 96d2763b1..43b384203 100644
--- a/pkg/plugin/lobby/lobby_test.go
+++ b/pkg/plugin/lobby/lobby_test.go
@@ -36,7 +36,7 @@ func testOrchestratorSystem(state *testOrchestratorState) {
self.SendCommand(&state.BaseSystemState, lobby.AssignShardCommand{
LobbyID: lob.ID,
RequestID: lob.Session.PendingRequestID,
- GameWorld: cardinal.OtherWorld{
+ GameWorld: lobby.ShardAddress{
Region: "local",
Organization: "organization",
Project: "project",
diff --git a/pkg/plugin/lobby/plugin.go b/pkg/plugin/lobby/plugin.go
index 5648256f1..ee3933e3a 100644
--- a/pkg/plugin/lobby/plugin.go
+++ b/pkg/plugin/lobby/plugin.go
@@ -57,6 +57,7 @@ type (
TransferLeaderCommand = system.TransferLeaderCommand
StartSessionCommand = system.StartSessionCommand
AssignShardCommand = system.AssignShardCommand
+ ShardAddress = system.ShardAddress
GenerateInviteCodeCommand = system.GenerateInviteCodeCommand
HeartbeatCommand = system.HeartbeatCommand
UpdateSessionPassthroughCommand = system.UpdateSessionPassthroughCommand
diff --git a/pkg/plugin/lobby/system/commands_wire.gen.go b/pkg/plugin/lobby/system/commands_wire.gen.go
new file mode 100644
index 000000000..0e121e4c8
--- /dev/null
+++ b/pkg/plugin/lobby/system/commands_wire.gen.go
@@ -0,0 +1,696 @@
+// Code generated by world sdk generate. DO NOT EDIT.
+
+package system
+
+import (
+ "fmt"
+
+ "github.com/argus-labs/world-engine/pkg/cardinal"
+ gen "github.com/argus-labs/world-engine/pkg/plugin/lobby/gen"
+ "google.golang.org/protobuf/proto"
+)
+
+func (c AssignShardCommand) ToProto() *gen.AssignShardCommand {
+ p := &gen.AssignShardCommand{}
+ p.LobbyID = string(c.LobbyID)
+ p.RequestID = string(c.RequestID)
+ p.GameWorld = c.GameWorld.ToProto()
+ p.Reason = string(c.Reason)
+ return p
+}
+
+func (c AssignShardCommand) FromProto(p *gen.AssignShardCommand) AssignShardCommand {
+ if p == nil {
+ return c
+ }
+ c.LobbyID = string(p.LobbyID)
+ c.RequestID = string(p.RequestID)
+ c.GameWorld = c.GameWorld.FromProto(p.GameWorld)
+ c.Reason = string(p.Reason)
+ return c
+}
+
+type assignShardCommandCodec struct{}
+
+func (assignShardCommandCodec) Marshal(p cardinal.Command) ([]byte, error) {
+ c, ok := p.(AssignShardCommand)
+ if !ok {
+ return nil, fmt.Errorf("expected AssignShardCommand, got %T", p)
+ }
+ return proto.Marshal(c.ToProto())
+}
+
+func (assignShardCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) {
+ var p gen.AssignShardCommand
+ if err := proto.Unmarshal(data, &p); err != nil {
+ return nil, err
+ }
+ var c AssignShardCommand
+ c = c.FromProto(&p)
+ return c, nil
+}
+
+func (c CreateLobbyCommand) ToProto() *gen.CreateLobbyCommand {
+ p := &gen.CreateLobbyCommand{}
+ p.RequestID = string(c.RequestID)
+ p.Preset = string(c.Preset)
+ p.PlayerPassthroughData = []byte(c.PlayerPassthroughData)
+ p.SessionPassthroughData = []byte(c.SessionPassthroughData)
+ return p
+}
+
+func (c CreateLobbyCommand) FromProto(p *gen.CreateLobbyCommand) CreateLobbyCommand {
+ if p == nil {
+ return c
+ }
+ c.RequestID = string(p.RequestID)
+ c.Preset = string(p.Preset)
+ c.PlayerPassthroughData = []byte(p.PlayerPassthroughData)
+ c.SessionPassthroughData = []byte(p.SessionPassthroughData)
+ return c
+}
+
+type createLobbyCommandCodec struct{}
+
+func (createLobbyCommandCodec) Marshal(p cardinal.Command) ([]byte, error) {
+ c, ok := p.(CreateLobbyCommand)
+ if !ok {
+ return nil, fmt.Errorf("expected CreateLobbyCommand, got %T", p)
+ }
+ return proto.Marshal(c.ToProto())
+}
+
+func (createLobbyCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) {
+ var p gen.CreateLobbyCommand
+ if err := proto.Unmarshal(data, &p); err != nil {
+ return nil, err
+ }
+ var c CreateLobbyCommand
+ c = c.FromProto(&p)
+ return c, nil
+}
+
+func (c GenerateInviteCodeCommand) ToProto() *gen.GenerateInviteCodeCommand {
+ p := &gen.GenerateInviteCodeCommand{}
+ p.RequestID = string(c.RequestID)
+ return p
+}
+
+func (c GenerateInviteCodeCommand) FromProto(p *gen.GenerateInviteCodeCommand) GenerateInviteCodeCommand {
+ if p == nil {
+ return c
+ }
+ c.RequestID = string(p.RequestID)
+ return c
+}
+
+type generateInviteCodeCommandCodec struct{}
+
+func (generateInviteCodeCommandCodec) Marshal(p cardinal.Command) ([]byte, error) {
+ c, ok := p.(GenerateInviteCodeCommand)
+ if !ok {
+ return nil, fmt.Errorf("expected GenerateInviteCodeCommand, got %T", p)
+ }
+ return proto.Marshal(c.ToProto())
+}
+
+func (generateInviteCodeCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) {
+ var p gen.GenerateInviteCodeCommand
+ if err := proto.Unmarshal(data, &p); err != nil {
+ return nil, err
+ }
+ var c GenerateInviteCodeCommand
+ c = c.FromProto(&p)
+ return c, nil
+}
+
+func (c GetAllPlayersCommand) ToProto() *gen.GetAllPlayersCommand {
+ p := &gen.GetAllPlayersCommand{}
+ p.RequestID = string(c.RequestID)
+ return p
+}
+
+func (c GetAllPlayersCommand) FromProto(p *gen.GetAllPlayersCommand) GetAllPlayersCommand {
+ if p == nil {
+ return c
+ }
+ c.RequestID = string(p.RequestID)
+ return c
+}
+
+type getAllPlayersCommandCodec struct{}
+
+func (getAllPlayersCommandCodec) Marshal(p cardinal.Command) ([]byte, error) {
+ c, ok := p.(GetAllPlayersCommand)
+ if !ok {
+ return nil, fmt.Errorf("expected GetAllPlayersCommand, got %T", p)
+ }
+ return proto.Marshal(c.ToProto())
+}
+
+func (getAllPlayersCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) {
+ var p gen.GetAllPlayersCommand
+ if err := proto.Unmarshal(data, &p); err != nil {
+ return nil, err
+ }
+ var c GetAllPlayersCommand
+ c = c.FromProto(&p)
+ return c, nil
+}
+
+func (c GetLobbyCommand) ToProto() *gen.GetLobbyCommand {
+ p := &gen.GetLobbyCommand{}
+ p.RequestID = string(c.RequestID)
+ return p
+}
+
+func (c GetLobbyCommand) FromProto(p *gen.GetLobbyCommand) GetLobbyCommand {
+ if p == nil {
+ return c
+ }
+ c.RequestID = string(p.RequestID)
+ return c
+}
+
+type getLobbyCommandCodec struct{}
+
+func (getLobbyCommandCodec) Marshal(p cardinal.Command) ([]byte, error) {
+ c, ok := p.(GetLobbyCommand)
+ if !ok {
+ return nil, fmt.Errorf("expected GetLobbyCommand, got %T", p)
+ }
+ return proto.Marshal(c.ToProto())
+}
+
+func (getLobbyCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) {
+ var p gen.GetLobbyCommand
+ if err := proto.Unmarshal(data, &p); err != nil {
+ return nil, err
+ }
+ var c GetLobbyCommand
+ c = c.FromProto(&p)
+ return c, nil
+}
+
+func (c GetPlayerCommand) ToProto() *gen.GetPlayerCommand {
+ p := &gen.GetPlayerCommand{}
+ p.RequestID = string(c.RequestID)
+ p.PlayerID = string(c.PlayerID)
+ return p
+}
+
+func (c GetPlayerCommand) FromProto(p *gen.GetPlayerCommand) GetPlayerCommand {
+ if p == nil {
+ return c
+ }
+ c.RequestID = string(p.RequestID)
+ c.PlayerID = string(p.PlayerID)
+ return c
+}
+
+type getPlayerCommandCodec struct{}
+
+func (getPlayerCommandCodec) Marshal(p cardinal.Command) ([]byte, error) {
+ c, ok := p.(GetPlayerCommand)
+ if !ok {
+ return nil, fmt.Errorf("expected GetPlayerCommand, got %T", p)
+ }
+ return proto.Marshal(c.ToProto())
+}
+
+func (getPlayerCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) {
+ var p gen.GetPlayerCommand
+ if err := proto.Unmarshal(data, &p); err != nil {
+ return nil, err
+ }
+ var c GetPlayerCommand
+ c = c.FromProto(&p)
+ return c, nil
+}
+
+func (c HeartbeatCommand) ToProto() *gen.HeartbeatCommand {
+ p := &gen.HeartbeatCommand{}
+ return p
+}
+
+func (c HeartbeatCommand) FromProto(p *gen.HeartbeatCommand) HeartbeatCommand {
+ if p == nil {
+ return c
+ }
+ return c
+}
+
+type heartbeatCommandCodec struct{}
+
+func (heartbeatCommandCodec) Marshal(p cardinal.Command) ([]byte, error) {
+ c, ok := p.(HeartbeatCommand)
+ if !ok {
+ return nil, fmt.Errorf("expected HeartbeatCommand, got %T", p)
+ }
+ return proto.Marshal(c.ToProto())
+}
+
+func (heartbeatCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) {
+ var p gen.HeartbeatCommand
+ if err := proto.Unmarshal(data, &p); err != nil {
+ return nil, err
+ }
+ var c HeartbeatCommand
+ c = c.FromProto(&p)
+ return c, nil
+}
+
+func (c JoinLobbyCommand) ToProto() *gen.JoinLobbyCommand {
+ p := &gen.JoinLobbyCommand{}
+ p.RequestID = string(c.RequestID)
+ p.InviteCode = string(c.InviteCode)
+ p.TeamID = string(c.TeamID)
+ p.PlayerPassthroughData = []byte(c.PlayerPassthroughData)
+ return p
+}
+
+func (c JoinLobbyCommand) FromProto(p *gen.JoinLobbyCommand) JoinLobbyCommand {
+ if p == nil {
+ return c
+ }
+ c.RequestID = string(p.RequestID)
+ c.InviteCode = string(p.InviteCode)
+ c.TeamID = string(p.TeamID)
+ c.PlayerPassthroughData = []byte(p.PlayerPassthroughData)
+ return c
+}
+
+type joinLobbyCommandCodec struct{}
+
+func (joinLobbyCommandCodec) Marshal(p cardinal.Command) ([]byte, error) {
+ c, ok := p.(JoinLobbyCommand)
+ if !ok {
+ return nil, fmt.Errorf("expected JoinLobbyCommand, got %T", p)
+ }
+ return proto.Marshal(c.ToProto())
+}
+
+func (joinLobbyCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) {
+ var p gen.JoinLobbyCommand
+ if err := proto.Unmarshal(data, &p); err != nil {
+ return nil, err
+ }
+ var c JoinLobbyCommand
+ c = c.FromProto(&p)
+ return c, nil
+}
+
+func (c JoinTeamCommand) ToProto() *gen.JoinTeamCommand {
+ p := &gen.JoinTeamCommand{}
+ p.RequestID = string(c.RequestID)
+ p.TeamID = string(c.TeamID)
+ return p
+}
+
+func (c JoinTeamCommand) FromProto(p *gen.JoinTeamCommand) JoinTeamCommand {
+ if p == nil {
+ return c
+ }
+ c.RequestID = string(p.RequestID)
+ c.TeamID = string(p.TeamID)
+ return c
+}
+
+type joinTeamCommandCodec struct{}
+
+func (joinTeamCommandCodec) Marshal(p cardinal.Command) ([]byte, error) {
+ c, ok := p.(JoinTeamCommand)
+ if !ok {
+ return nil, fmt.Errorf("expected JoinTeamCommand, got %T", p)
+ }
+ return proto.Marshal(c.ToProto())
+}
+
+func (joinTeamCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) {
+ var p gen.JoinTeamCommand
+ if err := proto.Unmarshal(data, &p); err != nil {
+ return nil, err
+ }
+ var c JoinTeamCommand
+ c = c.FromProto(&p)
+ return c, nil
+}
+
+func (c KickPlayerCommand) ToProto() *gen.KickPlayerCommand {
+ p := &gen.KickPlayerCommand{}
+ p.RequestID = string(c.RequestID)
+ p.TargetPlayerID = string(c.TargetPlayerID)
+ return p
+}
+
+func (c KickPlayerCommand) FromProto(p *gen.KickPlayerCommand) KickPlayerCommand {
+ if p == nil {
+ return c
+ }
+ c.RequestID = string(p.RequestID)
+ c.TargetPlayerID = string(p.TargetPlayerID)
+ return c
+}
+
+type kickPlayerCommandCodec struct{}
+
+func (kickPlayerCommandCodec) Marshal(p cardinal.Command) ([]byte, error) {
+ c, ok := p.(KickPlayerCommand)
+ if !ok {
+ return nil, fmt.Errorf("expected KickPlayerCommand, got %T", p)
+ }
+ return proto.Marshal(c.ToProto())
+}
+
+func (kickPlayerCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) {
+ var p gen.KickPlayerCommand
+ if err := proto.Unmarshal(data, &p); err != nil {
+ return nil, err
+ }
+ var c KickPlayerCommand
+ c = c.FromProto(&p)
+ return c, nil
+}
+
+func (c LeaveLobbyCommand) ToProto() *gen.LeaveLobbyCommand {
+ p := &gen.LeaveLobbyCommand{}
+ p.RequestID = string(c.RequestID)
+ return p
+}
+
+func (c LeaveLobbyCommand) FromProto(p *gen.LeaveLobbyCommand) LeaveLobbyCommand {
+ if p == nil {
+ return c
+ }
+ c.RequestID = string(p.RequestID)
+ return c
+}
+
+type leaveLobbyCommandCodec struct{}
+
+func (leaveLobbyCommandCodec) Marshal(p cardinal.Command) ([]byte, error) {
+ c, ok := p.(LeaveLobbyCommand)
+ if !ok {
+ return nil, fmt.Errorf("expected LeaveLobbyCommand, got %T", p)
+ }
+ return proto.Marshal(c.ToProto())
+}
+
+func (leaveLobbyCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) {
+ var p gen.LeaveLobbyCommand
+ if err := proto.Unmarshal(data, &p); err != nil {
+ return nil, err
+ }
+ var c LeaveLobbyCommand
+ c = c.FromProto(&p)
+ return c, nil
+}
+
+func (c NotifySessionEndCommand) ToProto() *gen.NotifySessionEndCommand {
+ p := &gen.NotifySessionEndCommand{}
+ p.LobbyID = string(c.LobbyID)
+ return p
+}
+
+func (c NotifySessionEndCommand) FromProto(p *gen.NotifySessionEndCommand) NotifySessionEndCommand {
+ if p == nil {
+ return c
+ }
+ c.LobbyID = string(p.LobbyID)
+ return c
+}
+
+type notifySessionEndCommandCodec struct{}
+
+func (notifySessionEndCommandCodec) Marshal(p cardinal.Command) ([]byte, error) {
+ c, ok := p.(NotifySessionEndCommand)
+ if !ok {
+ return nil, fmt.Errorf("expected NotifySessionEndCommand, got %T", p)
+ }
+ return proto.Marshal(c.ToProto())
+}
+
+func (notifySessionEndCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) {
+ var p gen.NotifySessionEndCommand
+ if err := proto.Unmarshal(data, &p); err != nil {
+ return nil, err
+ }
+ var c NotifySessionEndCommand
+ c = c.FromProto(&p)
+ return c, nil
+}
+
+func (c NotifySessionStartCommand) ToProto() *gen.NotifySessionStartCommand {
+ p := &gen.NotifySessionStartCommand{}
+ p.LobbyID = string(c.LobbyID)
+ p.LobbyWorld = c.LobbyWorld.ToProto()
+ return p
+}
+
+func (c NotifySessionStartCommand) FromProto(p *gen.NotifySessionStartCommand) NotifySessionStartCommand {
+ if p == nil {
+ return c
+ }
+ c.LobbyID = string(p.LobbyID)
+ c.LobbyWorld = c.LobbyWorld.FromProto(p.LobbyWorld)
+ return c
+}
+
+type notifySessionStartCommandCodec struct{}
+
+func (notifySessionStartCommandCodec) Marshal(p cardinal.Command) ([]byte, error) {
+ c, ok := p.(NotifySessionStartCommand)
+ if !ok {
+ return nil, fmt.Errorf("expected NotifySessionStartCommand, got %T", p)
+ }
+ return proto.Marshal(c.ToProto())
+}
+
+func (notifySessionStartCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) {
+ var p gen.NotifySessionStartCommand
+ if err := proto.Unmarshal(data, &p); err != nil {
+ return nil, err
+ }
+ var c NotifySessionStartCommand
+ c = c.FromProto(&p)
+ return c, nil
+}
+
+func (c SetReadyCommand) ToProto() *gen.SetReadyCommand {
+ p := &gen.SetReadyCommand{}
+ p.RequestID = string(c.RequestID)
+ p.IsReady = bool(c.IsReady)
+ return p
+}
+
+func (c SetReadyCommand) FromProto(p *gen.SetReadyCommand) SetReadyCommand {
+ if p == nil {
+ return c
+ }
+ c.RequestID = string(p.RequestID)
+ c.IsReady = bool(p.IsReady)
+ return c
+}
+
+type setReadyCommandCodec struct{}
+
+func (setReadyCommandCodec) Marshal(p cardinal.Command) ([]byte, error) {
+ c, ok := p.(SetReadyCommand)
+ if !ok {
+ return nil, fmt.Errorf("expected SetReadyCommand, got %T", p)
+ }
+ return proto.Marshal(c.ToProto())
+}
+
+func (setReadyCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) {
+ var p gen.SetReadyCommand
+ if err := proto.Unmarshal(data, &p); err != nil {
+ return nil, err
+ }
+ var c SetReadyCommand
+ c = c.FromProto(&p)
+ return c, nil
+}
+
+func (c ShardAddress) ToProto() *gen.ShardAddress {
+ p := &gen.ShardAddress{}
+ p.Region = string(c.Region)
+ p.Organization = string(c.Organization)
+ p.Project = string(c.Project)
+ p.ShardID = string(c.ShardID)
+ return p
+}
+
+func (c ShardAddress) FromProto(p *gen.ShardAddress) ShardAddress {
+ if p == nil {
+ return c
+ }
+ c.Region = string(p.Region)
+ c.Organization = string(p.Organization)
+ c.Project = string(p.Project)
+ c.ShardID = string(p.ShardID)
+ return c
+}
+
+func (c StartSessionCommand) ToProto() *gen.StartSessionCommand {
+ p := &gen.StartSessionCommand{}
+ p.RequestID = string(c.RequestID)
+ return p
+}
+
+func (c StartSessionCommand) FromProto(p *gen.StartSessionCommand) StartSessionCommand {
+ if p == nil {
+ return c
+ }
+ c.RequestID = string(p.RequestID)
+ return c
+}
+
+type startSessionCommandCodec struct{}
+
+func (startSessionCommandCodec) Marshal(p cardinal.Command) ([]byte, error) {
+ c, ok := p.(StartSessionCommand)
+ if !ok {
+ return nil, fmt.Errorf("expected StartSessionCommand, got %T", p)
+ }
+ return proto.Marshal(c.ToProto())
+}
+
+func (startSessionCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) {
+ var p gen.StartSessionCommand
+ if err := proto.Unmarshal(data, &p); err != nil {
+ return nil, err
+ }
+ var c StartSessionCommand
+ c = c.FromProto(&p)
+ return c, nil
+}
+
+func (c TransferLeaderCommand) ToProto() *gen.TransferLeaderCommand {
+ p := &gen.TransferLeaderCommand{}
+ p.RequestID = string(c.RequestID)
+ p.TargetPlayerID = string(c.TargetPlayerID)
+ return p
+}
+
+func (c TransferLeaderCommand) FromProto(p *gen.TransferLeaderCommand) TransferLeaderCommand {
+ if p == nil {
+ return c
+ }
+ c.RequestID = string(p.RequestID)
+ c.TargetPlayerID = string(p.TargetPlayerID)
+ return c
+}
+
+type transferLeaderCommandCodec struct{}
+
+func (transferLeaderCommandCodec) Marshal(p cardinal.Command) ([]byte, error) {
+ c, ok := p.(TransferLeaderCommand)
+ if !ok {
+ return nil, fmt.Errorf("expected TransferLeaderCommand, got %T", p)
+ }
+ return proto.Marshal(c.ToProto())
+}
+
+func (transferLeaderCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) {
+ var p gen.TransferLeaderCommand
+ if err := proto.Unmarshal(data, &p); err != nil {
+ return nil, err
+ }
+ var c TransferLeaderCommand
+ c = c.FromProto(&p)
+ return c, nil
+}
+
+func (c UpdatePlayerPassthroughCommand) ToProto() *gen.UpdatePlayerPassthroughCommand {
+ p := &gen.UpdatePlayerPassthroughCommand{}
+ p.RequestID = string(c.RequestID)
+ p.PassthroughData = []byte(c.PassthroughData)
+ return p
+}
+
+func (c UpdatePlayerPassthroughCommand) FromProto(p *gen.UpdatePlayerPassthroughCommand) UpdatePlayerPassthroughCommand {
+ if p == nil {
+ return c
+ }
+ c.RequestID = string(p.RequestID)
+ c.PassthroughData = []byte(p.PassthroughData)
+ return c
+}
+
+type updatePlayerPassthroughCommandCodec struct{}
+
+func (updatePlayerPassthroughCommandCodec) Marshal(p cardinal.Command) ([]byte, error) {
+ c, ok := p.(UpdatePlayerPassthroughCommand)
+ if !ok {
+ return nil, fmt.Errorf("expected UpdatePlayerPassthroughCommand, got %T", p)
+ }
+ return proto.Marshal(c.ToProto())
+}
+
+func (updatePlayerPassthroughCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) {
+ var p gen.UpdatePlayerPassthroughCommand
+ if err := proto.Unmarshal(data, &p); err != nil {
+ return nil, err
+ }
+ var c UpdatePlayerPassthroughCommand
+ c = c.FromProto(&p)
+ return c, nil
+}
+
+func (c UpdateSessionPassthroughCommand) ToProto() *gen.UpdateSessionPassthroughCommand {
+ p := &gen.UpdateSessionPassthroughCommand{}
+ p.RequestID = string(c.RequestID)
+ p.PassthroughData = []byte(c.PassthroughData)
+ return p
+}
+
+func (c UpdateSessionPassthroughCommand) FromProto(p *gen.UpdateSessionPassthroughCommand) UpdateSessionPassthroughCommand {
+ if p == nil {
+ return c
+ }
+ c.RequestID = string(p.RequestID)
+ c.PassthroughData = []byte(p.PassthroughData)
+ return c
+}
+
+type updateSessionPassthroughCommandCodec struct{}
+
+func (updateSessionPassthroughCommandCodec) Marshal(p cardinal.Command) ([]byte, error) {
+ c, ok := p.(UpdateSessionPassthroughCommand)
+ if !ok {
+ return nil, fmt.Errorf("expected UpdateSessionPassthroughCommand, got %T", p)
+ }
+ return proto.Marshal(c.ToProto())
+}
+
+func (updateSessionPassthroughCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) {
+ var p gen.UpdateSessionPassthroughCommand
+ if err := proto.Unmarshal(data, &p); err != nil {
+ return nil, err
+ }
+ var c UpdateSessionPassthroughCommand
+ c = c.FromProto(&p)
+ return c, nil
+}
+
+func init() {
+ cardinal.RegisterCommandCodec("lobby_assign_shard", assignShardCommandCodec{})
+ cardinal.RegisterCommandCodec("lobby_create", createLobbyCommandCodec{})
+ cardinal.RegisterCommandCodec("lobby_generate_invite", generateInviteCodeCommandCodec{})
+ cardinal.RegisterCommandCodec("lobby_get_all_players", getAllPlayersCommandCodec{})
+ cardinal.RegisterCommandCodec("lobby_get_lobby", getLobbyCommandCodec{})
+ cardinal.RegisterCommandCodec("lobby_get_player", getPlayerCommandCodec{})
+ cardinal.RegisterCommandCodec("lobby_heartbeat", heartbeatCommandCodec{})
+ cardinal.RegisterCommandCodec("lobby_join", joinLobbyCommandCodec{})
+ cardinal.RegisterCommandCodec("lobby_join_team", joinTeamCommandCodec{})
+ cardinal.RegisterCommandCodec("lobby_kick", kickPlayerCommandCodec{})
+ cardinal.RegisterCommandCodec("lobby_leave", leaveLobbyCommandCodec{})
+ cardinal.RegisterCommandCodec("lobby_notify_session_end", notifySessionEndCommandCodec{})
+ cardinal.RegisterCommandCodec("lobby_notify_session_start", notifySessionStartCommandCodec{})
+ cardinal.RegisterCommandCodec("lobby_set_ready", setReadyCommandCodec{})
+ cardinal.RegisterCommandCodec("lobby_start_session", startSessionCommandCodec{})
+ cardinal.RegisterCommandCodec("lobby_transfer_leader", transferLeaderCommandCodec{})
+ cardinal.RegisterCommandCodec("lobby_update_player_passthrough", updatePlayerPassthroughCommandCodec{})
+ cardinal.RegisterCommandCodec("lobby_update_session_passthrough", updateSessionPassthroughCommandCodec{})
+}
diff --git a/pkg/plugin/lobby/system/lobby.go b/pkg/plugin/lobby/system/lobby.go
index 23a3fd708..6cac9f83d 100644
--- a/pkg/plugin/lobby/system/lobby.go
+++ b/pkg/plugin/lobby/system/lobby.go
@@ -8,6 +8,7 @@ import (
"github.com/argus-labs/world-engine/pkg/cardinal"
"github.com/argus-labs/world-engine/pkg/plugin/lobby/component"
+ "github.com/goccy/go-json"
"github.com/google/uuid"
)
@@ -26,10 +27,10 @@ type CreateLobbyCommand struct {
RequestID string `json:"request_id"` // For matching request/response
// Preset is the label of a server-registered team configuration.
Preset string `json:"preset"`
- // PlayerPassthroughData is custom data for the creating player, forwarded to game shard.
- PlayerPassthroughData map[string]any `json:"player_passthrough_data,omitempty"`
- // SessionPassthroughData is custom data for the lobby session, forwarded to game shard.
- SessionPassthroughData map[string]any `json:"session_passthrough_data,omitempty"`
+ // PlayerPassthroughData is opaque JSON for the creating player, forwarded to the game shard.
+ PlayerPassthroughData []byte `json:"player_passthrough_data,omitempty"`
+ // SessionPassthroughData is opaque JSON for the lobby session, forwarded to the game shard.
+ SessionPassthroughData []byte `json:"session_passthrough_data,omitempty"`
}
// TeamConfig is an alias for component.TeamConfig to preserve the
@@ -44,8 +45,8 @@ type JoinLobbyCommand struct {
RequestID string `json:"request_id"` // For matching request/response
InviteCode string `json:"invite_code"` // Required: invite code to join
TeamID string `json:"team_id,omitempty"` // Optional: team to join by ID (joins first available if empty)
- // PlayerPassthroughData is custom data for the joining player, forwarded to game shard.
- PlayerPassthroughData map[string]any `json:"player_passthrough_data,omitempty"`
+ // PlayerPassthroughData is opaque JSON for the joining player, forwarded to the game shard.
+ PlayerPassthroughData []byte `json:"player_passthrough_data,omitempty"`
}
// Name returns the command name.
@@ -125,8 +126,8 @@ func (HeartbeatCommand) Name() string { return "lobby_heartbeat" }
// UpdateSessionPassthroughCommand updates the session passthrough data (leader only).
type UpdateSessionPassthroughCommand struct {
- RequestID string `json:"request_id"` // For matching request/response
- PassthroughData map[string]any `json:"passthrough_data"`
+ RequestID string `json:"request_id"` // For matching request/response
+ PassthroughData []byte `json:"passthrough_data"`
}
// Name returns the command name.
@@ -134,8 +135,8 @@ func (UpdateSessionPassthroughCommand) Name() string { return "lobby_update_sess
// UpdatePlayerPassthroughCommand updates the player's own passthrough data.
type UpdatePlayerPassthroughCommand struct {
- RequestID string `json:"request_id"` // For matching request/response
- PassthroughData map[string]any `json:"passthrough_data"`
+ RequestID string `json:"request_id"` // For matching request/response
+ PassthroughData []byte `json:"passthrough_data"`
}
// Name returns the command name.
@@ -490,10 +491,12 @@ func (r GetLobbyResult) Name() string {
// -----------------------------------------------------------------------------
// NotifySessionStartCommand is sent to game shard when a session starts.
+// NotifySessionStartCommand tells the game shard a session is starting. It's a wire DTO: it carries
+// only what the receiver needs (the lobby id and this lobby shard's address to reply to), not the live
+// LobbyComponent/PlayerComponent — those are domain types and never go on the wire.
type NotifySessionStartCommand struct {
- Lobby component.LobbyComponent `json:"lobby"`
- LobbyWorld cardinal.OtherWorld `json:"lobby_world"`
- Players []component.PlayerComponent `json:"players"`
+ LobbyID string `json:"lobby_id"`
+ LobbyWorld ShardAddress `json:"lobby_world"`
}
// Name returns the command name.
@@ -522,11 +525,28 @@ func (NotifySessionEndCommand) Name() string { return "lobby_notify_session_end"
// the orchestrator reads from the LobbyComponent). Mismatched RequestIDs
// are rejected; this rejects late duplicate or stale commands that arrive
// after the original pending cycle has already been completed or cancelled.
+// ShardAddress mirrors cardinal.OtherWorld for use in commands. A plugin command can't carry the
+// core cardinal.OtherWorld directly: generating its proto in the plugin would require cardinal to
+// import the plugin's generated package, a dependency cycle. The fields match, so the two convert
+// directly with a Go struct conversion.
+type ShardAddress struct {
+ Region string
+ Organization string
+ Project string
+ ShardID string
+}
+
+// SendCommand forwards to the underlying cardinal.OtherWorld, so a command field of type ShardAddress
+// can dispatch directly (e.g. the game shard replying to the lobby via NotifySessionStart.LobbyWorld).
+func (a ShardAddress) SendCommand(state *cardinal.BaseSystemState, cmd cardinal.Command) {
+ cardinal.OtherWorld(a).SendCommand(state, cmd)
+}
+
type AssignShardCommand struct {
- LobbyID string `json:"lobby_id"`
- RequestID string `json:"request_id"`
- GameWorld cardinal.OtherWorld `json:"game_world"`
- Reason string `json:"reason,omitempty"`
+ LobbyID string `json:"lobby_id"`
+ RequestID string `json:"request_id"`
+ GameWorld ShardAddress `json:"game_world"`
+ Reason string `json:"reason,omitempty"`
}
// Name returns the command name.
@@ -865,6 +885,36 @@ func emitJoinLobbyFailure(state *LobbySystemState, requestID, message string) {
})
}
+// emitCreateLobbyFailure emits a failure result for CreateLobby command.
+func emitCreateLobbyFailure(state *LobbySystemState, requestID, message string) {
+ state.CreateLobbyResults.Emit(CreateLobbyResult{
+ RequestID: requestID,
+ IsSuccess: false,
+ Message: message,
+ })
+}
+
+// DecodePassthrough turns a command's opaque JSON passthrough bytes into the map that components and
+// events store and that downstream systems read. Empty input yields (nil, nil). Malformed input yields
+// a non-nil error; passthrough is best-effort forwarded data the lobby does not validate, so callers
+// log the error and proceed with a nil map rather than failing the command.
+func DecodePassthrough(b []byte) (map[string]any, error) {
+ var m map[string]any
+ if len(b) == 0 {
+ return m, nil // absent passthrough: nil map, no error
+ }
+ if err := json.Unmarshal(b, &m); err != nil {
+ return nil, err
+ }
+ return m, nil
+}
+
+// logDroppedPassthrough records that malformed passthrough was dropped; field names which one. Callers
+// own the error (capture it from DecodePassthrough and decide to drop); this just emits the breadcrumb.
+func logDroppedPassthrough(state *LobbySystemState, field string, err error) {
+ state.Logger().Warn().Err(err).Str("field", field).Msg("dropping malformed passthrough data")
+}
+
// createPlayerEntity creates a player entity and returns the component and entity ID.
func createPlayerEntity(
state *LobbySystemState,
@@ -1121,11 +1171,7 @@ func processCreateLobbyCommands(
// Check if player is already in a lobby
if _, exists := lobbyIndex.GetPlayerLobby(playerID); exists {
state.Logger().Warn().Str("player_id", playerID).Msg("player already in a lobby")
- state.CreateLobbyResults.Emit(CreateLobbyResult{
- RequestID: payload.RequestID,
- IsSuccess: false,
- Message: "player already in a lobby",
- })
+ emitCreateLobbyFailure(state, payload.RequestID, "player already in a lobby")
continue
}
@@ -1133,13 +1179,17 @@ func processCreateLobbyCommands(
lobbyID := generateID()
// Create lobby with initial data for invite code generation
+ sessionPassthrough, err := DecodePassthrough(payload.SessionPassthroughData)
+ if err != nil {
+ logDroppedPassthrough(state, "session_passthrough", err)
+ }
lobby := component.LobbyComponent{
ID: lobbyID,
LeaderID: playerID,
InviteCode: "", // Will be set after generation
Session: component.Session{
State: component.SessionStateIdle,
- PassthroughData: payload.SessionPassthroughData,
+ PassthroughData: sessionPassthrough,
},
CreatedAt: now,
}
@@ -1150,11 +1200,7 @@ func processCreateLobbyCommands(
Str("player_id", playerID).
Str("preset", payload.Preset).
Msg("create lobby rejected: " + errMsg)
- state.CreateLobbyResults.Emit(CreateLobbyResult{
- RequestID: payload.RequestID,
- IsSuccess: false,
- Message: errMsg,
- })
+ emitCreateLobbyFailure(state, payload.RequestID, errMsg)
continue
}
for _, tc := range presetTeams {
@@ -1168,11 +1214,7 @@ func processCreateLobbyCommands(
inviteCode, ok := generateInviteCodeWithRetry(lobbyIndex, &lobby, 3)
if !ok {
state.Logger().Warn().Str("lobby_id", lobbyID).Msg("invite code collision after retries")
- state.CreateLobbyResults.Emit(CreateLobbyResult{
- RequestID: payload.RequestID,
- IsSuccess: false,
- Message: "invite code collision",
- })
+ emitCreateLobbyFailure(state, payload.RequestID, "invite code collision")
continue
}
lobby.InviteCode = inviteCode
@@ -1185,8 +1227,12 @@ func processCreateLobbyCommands(
lobbyEntity.Lobby.Set(lobby)
// Create player entity and update index
+ playerPassthrough, err := DecodePassthrough(payload.PlayerPassthroughData)
+ if err != nil {
+ logDroppedPassthrough(state, "player_passthrough", err)
+ }
playerComp, playerEntityID := createPlayerEntity(
- state, playerID, lobbyID, lobby.Teams[0].TeamID, payload.PlayerPassthroughData, now,
+ state, playerID, lobbyID, lobby.Teams[0].TeamID, playerPassthrough, now,
)
lobbyIndex.AddLobby(lobbyID, uint32(lobbyEntityID), inviteCode)
lobbyIndex.AddPlayerToLobby(playerID, lobbyID, lobby.Teams[0].TeamID, uint32(playerEntityID), now+timeout)
@@ -1284,8 +1330,12 @@ func processJoinLobbyCommands(
lobbyEntity.Lobby.Set(lobby)
// Create player entity
+ playerPassthrough, err := DecodePassthrough(payload.PlayerPassthroughData)
+ if err != nil {
+ logDroppedPassthrough(state, "player_passthrough", err)
+ }
playerComp, playerEntityID := createPlayerEntity(
- state, playerID, lobbyID, targetTeam.TeamID, payload.PlayerPassthroughData, now,
+ state, playerID, lobbyID, targetTeam.TeamID, playerPassthrough, now,
)
lobbyIndex.AddPlayerToLobby(playerID, lobbyID, targetTeam.TeamID, uint32(playerEntityID), now+timeout)
@@ -1889,18 +1939,14 @@ func abortAwaitingAllocation(
// configured on the lobby. No-op if no game shard is configured.
func dispatchSessionStart(
state *LobbySystemState,
- lobbyIndex *component.LobbyIndexComponent,
config *component.ConfigComponent,
lobby *component.LobbyComponent,
lobbyID string,
) {
gameWorld := lobby.GameWorld
- lobbyWorld := config.LobbyWorld
- players := gatherLobbyPlayers(state, lobbyIndex, lobby)
gameWorld.SendCommand(&state.BaseSystemState, NotifySessionStartCommand{
- Lobby: *lobby,
- LobbyWorld: lobbyWorld,
- Players: players,
+ LobbyID: lobbyID,
+ LobbyWorld: ShardAddress(config.LobbyWorld),
})
state.Logger().Info().
Str("lobby_id", lobbyID).
@@ -1973,7 +2019,7 @@ func processAssignShardCommands(
lobby.Session.PendingRequestID = ""
lobby.Session.PendingStartedAt = 0
- lobby.GameWorld = payload.GameWorld
+ lobby.GameWorld = cardinal.OtherWorld(payload.GameWorld)
lobby.Session.State = component.SessionStateInSession
lobbyEntity.Lobby.Set(lobby)
@@ -1987,7 +2033,7 @@ func processAssignShardCommands(
GameWorld: lobby.GameWorld,
})
- dispatchSessionStart(state, lobbyIndex, config, &lobby, payload.LobbyID)
+ dispatchSessionStart(state, config, &lobby, payload.LobbyID)
state.StartSessionResults.Emit(StartSessionResult{
RequestID: requestID,
@@ -2177,7 +2223,11 @@ func processUpdateSessionPassthroughCommands(state *LobbySystemState, lobbyIndex
continue
}
- lobby.Session.PassthroughData = payload.PassthroughData
+ sessionPassthrough, err := DecodePassthrough(payload.PassthroughData)
+ if err != nil {
+ logDroppedPassthrough(state, "session_passthrough", err)
+ }
+ lobby.Session.PassthroughData = sessionPassthrough
result.lobbyRef.Set(lobby)
state.Logger().Info().
@@ -2236,7 +2286,11 @@ func processUpdatePlayerPassthroughCommands(state *LobbySystemState, lobbyIndex
}
playerComp := playerEntity.Player.Get()
- playerComp.PassthroughData = payload.PassthroughData
+ playerPassthrough, err := DecodePassthrough(payload.PassthroughData)
+ if err != nil {
+ logDroppedPassthrough(state, "player_passthrough", err)
+ }
+ playerComp.PassthroughData = playerPassthrough
playerEntity.Player.Set(playerComp)
state.Logger().Info().
diff --git a/pkg/plugin/lobby/system/lobby_internal_test.go b/pkg/plugin/lobby/system/lobby_internal_test.go
index 075ca2b9b..81ec32206 100644
--- a/pkg/plugin/lobby/system/lobby_internal_test.go
+++ b/pkg/plugin/lobby/system/lobby_internal_test.go
@@ -116,7 +116,7 @@ func TestAssignShardCommand_Shape(t *testing.T) {
cmd := AssignShardCommand{
LobbyID: "lobby-1",
RequestID: "req-42",
- GameWorld: cardinal.OtherWorld{ShardID: "game-shard-3"},
+ GameWorld: ShardAddress{ShardID: "game-shard-3"},
}
assert.Equal(t, "lobby-1", cmd.LobbyID)
assert.Equal(t, "req-42", cmd.RequestID)
@@ -279,38 +279,6 @@ func TestCommandResultFailure(t *testing.T) {
assert.Empty(t, result.Lobby.ID) // Lobby should be empty on failure
}
-func TestNotifySessionStartCommand(t *testing.T) {
- t.Parallel()
-
- // Test NotifySessionStartCommand contains all required fields
- cmd := NotifySessionStartCommand{
- Lobby: component.LobbyComponent{
- ID: "lobby-123",
- LeaderID: "player1",
- InviteCode: "ABC123",
- GameWorld: cardinal.OtherWorld{
- Region: "us-west",
- Organization: "myorg",
- Project: "myproject",
- ShardID: "game-shard-1",
- },
- Teams: []component.Team{
- {
- TeamID: "team1",
- PlayerIDs: []string{"player1", "player2"},
- },
- },
- },
- // LobbyWorld would be cardinal.OtherWorld in real usage
- }
-
- assert.Equal(t, "lobby-123", cmd.Lobby.ID)
- assert.Equal(t, "player1", cmd.Lobby.LeaderID)
- assert.Equal(t, "game-shard-1", cmd.Lobby.GameWorld.ShardID)
- assert.Len(t, cmd.Lobby.Teams, 1)
- assert.Equal(t, 2, cmd.Lobby.PlayerCount())
-}
-
func TestNotifySessionEndCommand(t *testing.T) {
t.Parallel()
@@ -356,18 +324,6 @@ func TestLobbyComponent_WithGameWorld(t *testing.T) {
assert.Equal(t, component.SessionStateIdle, lobby.Session.State)
}
-func TestStartSessionPayloadAlias(t *testing.T) {
- t.Parallel()
-
- // StartSessionPayload is an alias for NotifySessionStartCommand
- var payload StartSessionPayload
- payload.Lobby = component.LobbyComponent{ID: "lobby-1"}
-
- // Should be assignable to NotifySessionStartCommand
- var cmd = payload
- assert.Equal(t, "lobby-1", cmd.Lobby.ID)
-}
-
func TestGetPlayerCommand(t *testing.T) {
t.Parallel()
diff --git a/pkg/telemetry/setup.go b/pkg/telemetry/setup.go
index cbfa009a5..9cdb41063 100644
--- a/pkg/telemetry/setup.go
+++ b/pkg/telemetry/setup.go
@@ -17,7 +17,7 @@ import (
"go.opentelemetry.io/otel/propagation"
"go.opentelemetry.io/otel/sdk/resource"
"go.opentelemetry.io/otel/sdk/trace"
- semconv "go.opentelemetry.io/otel/semconv/v1.39.0"
+ semconv "go.opentelemetry.io/otel/semconv/v1.41.0"
otelTrace "go.opentelemetry.io/otel/trace"
"go.opentelemetry.io/otel/trace/noop"
)
diff --git a/pkg/template/basic/shards/game/gen/doc.gen.go b/pkg/template/basic/shards/game/gen/doc.gen.go
new file mode 100644
index 000000000..f1897ffee
--- /dev/null
+++ b/pkg/template/basic/shards/game/gen/doc.gen.go
@@ -0,0 +1,2 @@
+// Code generated by world sdk generate. DO NOT EDIT.
+package gen
diff --git a/pkg/template/basic/shards/game/gen/github_com_argus_labs_world_engine_pkg_template_basic_shards_game_gen.pb.go b/pkg/template/basic/shards/game/gen/github_com_argus_labs_world_engine_pkg_template_basic_shards_game_gen.pb.go
new file mode 100644
index 000000000..1ad987a1e
--- /dev/null
+++ b/pkg/template/basic/shards/game/gen/github_com_argus_labs_world_engine_pkg_template_basic_shards_game_gen.pb.go
@@ -0,0 +1,230 @@
+// Code generated by world sdk generate. DO NOT EDIT.
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.36.11
+// protoc (unknown)
+// source: github_com_argus_labs_world_engine_pkg_template_basic_shards_game_gen.proto
+
+package gen
+
+import (
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ reflect "reflect"
+ sync "sync"
+ unsafe "unsafe"
+)
+
+const (
+ // Verify that this generated code is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+ // Verify that runtime/protoimpl is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+// wire name: "attack-player"
+type AttackPlayerCommand struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ Target string `protobuf:"bytes,1,opt,name=Target,proto3" json:"Target,omitempty"`
+ Damage uint32 `protobuf:"varint,2,opt,name=Damage,proto3" json:"Damage,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *AttackPlayerCommand) Reset() {
+ *x = AttackPlayerCommand{}
+ mi := &file_github_com_argus_labs_world_engine_pkg_template_basic_shards_game_gen_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *AttackPlayerCommand) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*AttackPlayerCommand) ProtoMessage() {}
+
+func (x *AttackPlayerCommand) ProtoReflect() protoreflect.Message {
+ mi := &file_github_com_argus_labs_world_engine_pkg_template_basic_shards_game_gen_proto_msgTypes[0]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use AttackPlayerCommand.ProtoReflect.Descriptor instead.
+func (*AttackPlayerCommand) Descriptor() ([]byte, []int) {
+ return file_github_com_argus_labs_world_engine_pkg_template_basic_shards_game_gen_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *AttackPlayerCommand) GetTarget() string {
+ if x != nil {
+ return x.Target
+ }
+ return ""
+}
+
+func (x *AttackPlayerCommand) GetDamage() uint32 {
+ if x != nil {
+ return x.Damage
+ }
+ return 0
+}
+
+// wire name: "call-external"
+type CallExternalCommand struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ Message string `protobuf:"bytes,1,opt,name=Message,proto3" json:"Message,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *CallExternalCommand) Reset() {
+ *x = CallExternalCommand{}
+ mi := &file_github_com_argus_labs_world_engine_pkg_template_basic_shards_game_gen_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *CallExternalCommand) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CallExternalCommand) ProtoMessage() {}
+
+func (x *CallExternalCommand) ProtoReflect() protoreflect.Message {
+ mi := &file_github_com_argus_labs_world_engine_pkg_template_basic_shards_game_gen_proto_msgTypes[1]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use CallExternalCommand.ProtoReflect.Descriptor instead.
+func (*CallExternalCommand) Descriptor() ([]byte, []int) {
+ return file_github_com_argus_labs_world_engine_pkg_template_basic_shards_game_gen_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *CallExternalCommand) GetMessage() string {
+ if x != nil {
+ return x.Message
+ }
+ return ""
+}
+
+// wire name: "create-player"
+type CreatePlayerCommand struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ Nickname string `protobuf:"bytes,1,opt,name=Nickname,proto3" json:"Nickname,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *CreatePlayerCommand) Reset() {
+ *x = CreatePlayerCommand{}
+ mi := &file_github_com_argus_labs_world_engine_pkg_template_basic_shards_game_gen_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *CreatePlayerCommand) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*CreatePlayerCommand) ProtoMessage() {}
+
+func (x *CreatePlayerCommand) ProtoReflect() protoreflect.Message {
+ mi := &file_github_com_argus_labs_world_engine_pkg_template_basic_shards_game_gen_proto_msgTypes[2]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use CreatePlayerCommand.ProtoReflect.Descriptor instead.
+func (*CreatePlayerCommand) Descriptor() ([]byte, []int) {
+ return file_github_com_argus_labs_world_engine_pkg_template_basic_shards_game_gen_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *CreatePlayerCommand) GetNickname() string {
+ if x != nil {
+ return x.Nickname
+ }
+ return ""
+}
+
+var File_github_com_argus_labs_world_engine_pkg_template_basic_shards_game_gen_proto protoreflect.FileDescriptor
+
+const file_github_com_argus_labs_world_engine_pkg_template_basic_shards_game_gen_proto_rawDesc = "" +
+ "\n" +
+ "Kgithub_com_argus_labs_world_engine_pkg_template_basic_shards_game_gen.proto\x12Egithub_com_argus_labs_world_engine_pkg_template_basic_shards_game_gen\"E\n" +
+ "\x13AttackPlayerCommand\x12\x16\n" +
+ "\x06Target\x18\x01 \x01(\tR\x06Target\x12\x16\n" +
+ "\x06Damage\x18\x02 \x01(\rR\x06Damage\"/\n" +
+ "\x13CallExternalCommand\x12\x18\n" +
+ "\aMessage\x18\x01 \x01(\tR\aMessage\"1\n" +
+ "\x13CreatePlayerCommand\x12\x1a\n" +
+ "\bNickname\x18\x01 \x01(\tR\bNicknameBVZIgithub.com/argus-labs/world-engine/pkg/template/basic/shards/game/gen;gen\xaa\x02\bcommandsb\x06proto3"
+
+var (
+ file_github_com_argus_labs_world_engine_pkg_template_basic_shards_game_gen_proto_rawDescOnce sync.Once
+ file_github_com_argus_labs_world_engine_pkg_template_basic_shards_game_gen_proto_rawDescData []byte
+)
+
+func file_github_com_argus_labs_world_engine_pkg_template_basic_shards_game_gen_proto_rawDescGZIP() []byte {
+ file_github_com_argus_labs_world_engine_pkg_template_basic_shards_game_gen_proto_rawDescOnce.Do(func() {
+ file_github_com_argus_labs_world_engine_pkg_template_basic_shards_game_gen_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_argus_labs_world_engine_pkg_template_basic_shards_game_gen_proto_rawDesc), len(file_github_com_argus_labs_world_engine_pkg_template_basic_shards_game_gen_proto_rawDesc)))
+ })
+ return file_github_com_argus_labs_world_engine_pkg_template_basic_shards_game_gen_proto_rawDescData
+}
+
+var file_github_com_argus_labs_world_engine_pkg_template_basic_shards_game_gen_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
+var file_github_com_argus_labs_world_engine_pkg_template_basic_shards_game_gen_proto_goTypes = []any{
+ (*AttackPlayerCommand)(nil), // 0: github_com_argus_labs_world_engine_pkg_template_basic_shards_game_gen.AttackPlayerCommand
+ (*CallExternalCommand)(nil), // 1: github_com_argus_labs_world_engine_pkg_template_basic_shards_game_gen.CallExternalCommand
+ (*CreatePlayerCommand)(nil), // 2: github_com_argus_labs_world_engine_pkg_template_basic_shards_game_gen.CreatePlayerCommand
+}
+var file_github_com_argus_labs_world_engine_pkg_template_basic_shards_game_gen_proto_depIdxs = []int32{
+ 0, // [0:0] is the sub-list for method output_type
+ 0, // [0:0] is the sub-list for method input_type
+ 0, // [0:0] is the sub-list for extension type_name
+ 0, // [0:0] is the sub-list for extension extendee
+ 0, // [0:0] is the sub-list for field type_name
+}
+
+func init() { file_github_com_argus_labs_world_engine_pkg_template_basic_shards_game_gen_proto_init() }
+func file_github_com_argus_labs_world_engine_pkg_template_basic_shards_game_gen_proto_init() {
+ if File_github_com_argus_labs_world_engine_pkg_template_basic_shards_game_gen_proto != nil {
+ return
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_argus_labs_world_engine_pkg_template_basic_shards_game_gen_proto_rawDesc), len(file_github_com_argus_labs_world_engine_pkg_template_basic_shards_game_gen_proto_rawDesc)),
+ NumEnums: 0,
+ NumMessages: 3,
+ NumExtensions: 0,
+ NumServices: 0,
+ },
+ GoTypes: file_github_com_argus_labs_world_engine_pkg_template_basic_shards_game_gen_proto_goTypes,
+ DependencyIndexes: file_github_com_argus_labs_world_engine_pkg_template_basic_shards_game_gen_proto_depIdxs,
+ MessageInfos: file_github_com_argus_labs_world_engine_pkg_template_basic_shards_game_gen_proto_msgTypes,
+ }.Build()
+ File_github_com_argus_labs_world_engine_pkg_template_basic_shards_game_gen_proto = out.File
+ file_github_com_argus_labs_world_engine_pkg_template_basic_shards_game_gen_proto_goTypes = nil
+ file_github_com_argus_labs_world_engine_pkg_template_basic_shards_game_gen_proto_depIdxs = nil
+}
diff --git a/pkg/template/basic/shards/game/system/commands_wire.gen.go b/pkg/template/basic/shards/game/system/commands_wire.gen.go
new file mode 100644
index 000000000..0a9acd19d
--- /dev/null
+++ b/pkg/template/basic/shards/game/system/commands_wire.gen.go
@@ -0,0 +1,121 @@
+// Code generated by world sdk generate. DO NOT EDIT.
+
+package system
+
+import (
+ "fmt"
+
+ "github.com/argus-labs/world-engine/pkg/cardinal"
+ gen "github.com/argus-labs/world-engine/pkg/template/basic/shards/game/gen"
+ "google.golang.org/protobuf/proto"
+)
+
+func (c AttackPlayerCommand) ToProto() *gen.AttackPlayerCommand {
+ p := &gen.AttackPlayerCommand{}
+ p.Target = string(c.Target)
+ p.Damage = uint32(c.Damage)
+ return p
+}
+
+func (c AttackPlayerCommand) FromProto(p *gen.AttackPlayerCommand) AttackPlayerCommand {
+ if p == nil {
+ return c
+ }
+ c.Target = string(p.Target)
+ c.Damage = uint32(p.Damage)
+ return c
+}
+
+type attackPlayerCommandCodec struct{}
+
+func (attackPlayerCommandCodec) Marshal(p cardinal.Command) ([]byte, error) {
+ c, ok := p.(AttackPlayerCommand)
+ if !ok {
+ return nil, fmt.Errorf("expected AttackPlayerCommand, got %T", p)
+ }
+ return proto.Marshal(c.ToProto())
+}
+
+func (attackPlayerCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) {
+ var p gen.AttackPlayerCommand
+ if err := proto.Unmarshal(data, &p); err != nil {
+ return nil, err
+ }
+ var c AttackPlayerCommand
+ c = c.FromProto(&p)
+ return c, nil
+}
+
+func (c CallExternalCommand) ToProto() *gen.CallExternalCommand {
+ p := &gen.CallExternalCommand{}
+ p.Message = string(c.Message)
+ return p
+}
+
+func (c CallExternalCommand) FromProto(p *gen.CallExternalCommand) CallExternalCommand {
+ if p == nil {
+ return c
+ }
+ c.Message = string(p.Message)
+ return c
+}
+
+type callExternalCommandCodec struct{}
+
+func (callExternalCommandCodec) Marshal(p cardinal.Command) ([]byte, error) {
+ c, ok := p.(CallExternalCommand)
+ if !ok {
+ return nil, fmt.Errorf("expected CallExternalCommand, got %T", p)
+ }
+ return proto.Marshal(c.ToProto())
+}
+
+func (callExternalCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) {
+ var p gen.CallExternalCommand
+ if err := proto.Unmarshal(data, &p); err != nil {
+ return nil, err
+ }
+ var c CallExternalCommand
+ c = c.FromProto(&p)
+ return c, nil
+}
+
+func (c CreatePlayerCommand) ToProto() *gen.CreatePlayerCommand {
+ p := &gen.CreatePlayerCommand{}
+ p.Nickname = string(c.Nickname)
+ return p
+}
+
+func (c CreatePlayerCommand) FromProto(p *gen.CreatePlayerCommand) CreatePlayerCommand {
+ if p == nil {
+ return c
+ }
+ c.Nickname = string(p.Nickname)
+ return c
+}
+
+type createPlayerCommandCodec struct{}
+
+func (createPlayerCommandCodec) Marshal(p cardinal.Command) ([]byte, error) {
+ c, ok := p.(CreatePlayerCommand)
+ if !ok {
+ return nil, fmt.Errorf("expected CreatePlayerCommand, got %T", p)
+ }
+ return proto.Marshal(c.ToProto())
+}
+
+func (createPlayerCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) {
+ var p gen.CreatePlayerCommand
+ if err := proto.Unmarshal(data, &p); err != nil {
+ return nil, err
+ }
+ var c CreatePlayerCommand
+ c = c.FromProto(&p)
+ return c, nil
+}
+
+func init() {
+ cardinal.RegisterCommandCodec("attack-player", attackPlayerCommandCodec{})
+ cardinal.RegisterCommandCodec("call-external", callExternalCommandCodec{})
+ cardinal.RegisterCommandCodec("create-player", createPlayerCommandCodec{})
+}
diff --git a/pkg/template/multi-shard/shards/chat/command/commands_wire.gen.go b/pkg/template/multi-shard/shards/chat/command/commands_wire.gen.go
new file mode 100644
index 000000000..f4446478e
--- /dev/null
+++ b/pkg/template/multi-shard/shards/chat/command/commands_wire.gen.go
@@ -0,0 +1,53 @@
+// Code generated by world sdk generate. DO NOT EDIT.
+
+package command
+
+import (
+ "fmt"
+
+ "github.com/argus-labs/world-engine/pkg/cardinal"
+ gen "github.com/argus-labs/world-engine/pkg/template/multi-shard/shards/chat/gen"
+ "google.golang.org/protobuf/proto"
+)
+
+func (c UserChat) ToProto() *gen.UserChat {
+ p := &gen.UserChat{}
+ p.ArgusAuthID = string(c.ArgusAuthID)
+ p.ArgusAuthName = string(c.ArgusAuthName)
+ p.Message = string(c.Message)
+ return p
+}
+
+func (c UserChat) FromProto(p *gen.UserChat) UserChat {
+ if p == nil {
+ return c
+ }
+ c.ArgusAuthID = string(p.ArgusAuthID)
+ c.ArgusAuthName = string(p.ArgusAuthName)
+ c.Message = string(p.Message)
+ return c
+}
+
+type userChatCodec struct{}
+
+func (userChatCodec) Marshal(p cardinal.Command) ([]byte, error) {
+ c, ok := p.(UserChat)
+ if !ok {
+ return nil, fmt.Errorf("expected UserChat, got %T", p)
+ }
+ return proto.Marshal(c.ToProto())
+}
+
+func (userChatCodec) Unmarshal(data []byte) (cardinal.Command, error) {
+ var p gen.UserChat
+ if err := proto.Unmarshal(data, &p); err != nil {
+ return nil, err
+ }
+ var c UserChat
+ c = c.FromProto(&p)
+ return c, nil
+}
+
+func init() {
+ cardinal.RegisterCommandCodec("user-chat", userChatCodec{})
+}
diff --git a/pkg/template/multi-shard/shards/chat/gen/doc.gen.go b/pkg/template/multi-shard/shards/chat/gen/doc.gen.go
new file mode 100644
index 000000000..f1897ffee
--- /dev/null
+++ b/pkg/template/multi-shard/shards/chat/gen/doc.gen.go
@@ -0,0 +1,2 @@
+// Code generated by world sdk generate. DO NOT EDIT.
+package gen
diff --git a/pkg/template/multi-shard/shards/chat/gen/github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_chat_gen.pb.go b/pkg/template/multi-shard/shards/chat/gen/github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_chat_gen.pb.go
new file mode 100644
index 000000000..591bd1e4c
--- /dev/null
+++ b/pkg/template/multi-shard/shards/chat/gen/github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_chat_gen.pb.go
@@ -0,0 +1,145 @@
+// Code generated by world sdk generate. DO NOT EDIT.
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.36.11
+// protoc (unknown)
+// source: github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_chat_gen.proto
+
+package gen
+
+import (
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ reflect "reflect"
+ sync "sync"
+ unsafe "unsafe"
+)
+
+const (
+ // Verify that this generated code is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+ // Verify that runtime/protoimpl is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+// wire name: "user-chat"
+type UserChat struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ ArgusAuthID string `protobuf:"bytes,1,opt,name=ArgusAuthID,proto3" json:"ArgusAuthID,omitempty"`
+ ArgusAuthName string `protobuf:"bytes,2,opt,name=ArgusAuthName,proto3" json:"ArgusAuthName,omitempty"`
+ Message string `protobuf:"bytes,3,opt,name=Message,proto3" json:"Message,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *UserChat) Reset() {
+ *x = UserChat{}
+ mi := &file_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_chat_gen_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *UserChat) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*UserChat) ProtoMessage() {}
+
+func (x *UserChat) ProtoReflect() protoreflect.Message {
+ mi := &file_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_chat_gen_proto_msgTypes[0]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use UserChat.ProtoReflect.Descriptor instead.
+func (*UserChat) Descriptor() ([]byte, []int) {
+ return file_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_chat_gen_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *UserChat) GetArgusAuthID() string {
+ if x != nil {
+ return x.ArgusAuthID
+ }
+ return ""
+}
+
+func (x *UserChat) GetArgusAuthName() string {
+ if x != nil {
+ return x.ArgusAuthName
+ }
+ return ""
+}
+
+func (x *UserChat) GetMessage() string {
+ if x != nil {
+ return x.Message
+ }
+ return ""
+}
+
+var File_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_chat_gen_proto protoreflect.FileDescriptor
+
+const file_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_chat_gen_proto_rawDesc = "" +
+ "\n" +
+ "Qgithub_com_argus_labs_world_engine_pkg_template_multi_shard_shards_chat_gen.proto\x12Kgithub_com_argus_labs_world_engine_pkg_template_multi_shard_shards_chat_gen\"l\n" +
+ "\bUserChat\x12 \n" +
+ "\vArgusAuthID\x18\x01 \x01(\tR\vArgusAuthID\x12$\n" +
+ "\rArgusAuthName\x18\x02 \x01(\tR\rArgusAuthName\x12\x18\n" +
+ "\aMessage\x18\x03 \x01(\tR\aMessageB\\ZOgithub.com/argus-labs/world-engine/pkg/template/multi-shard/shards/chat/gen;gen\xaa\x02\bcommandsb\x06proto3"
+
+var (
+ file_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_chat_gen_proto_rawDescOnce sync.Once
+ file_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_chat_gen_proto_rawDescData []byte
+)
+
+func file_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_chat_gen_proto_rawDescGZIP() []byte {
+ file_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_chat_gen_proto_rawDescOnce.Do(func() {
+ file_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_chat_gen_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_chat_gen_proto_rawDesc), len(file_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_chat_gen_proto_rawDesc)))
+ })
+ return file_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_chat_gen_proto_rawDescData
+}
+
+var file_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_chat_gen_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
+var file_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_chat_gen_proto_goTypes = []any{
+ (*UserChat)(nil), // 0: github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_chat_gen.UserChat
+}
+var file_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_chat_gen_proto_depIdxs = []int32{
+ 0, // [0:0] is the sub-list for method output_type
+ 0, // [0:0] is the sub-list for method input_type
+ 0, // [0:0] is the sub-list for extension type_name
+ 0, // [0:0] is the sub-list for extension extendee
+ 0, // [0:0] is the sub-list for field type_name
+}
+
+func init() {
+ file_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_chat_gen_proto_init()
+}
+func file_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_chat_gen_proto_init() {
+ if File_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_chat_gen_proto != nil {
+ return
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_chat_gen_proto_rawDesc), len(file_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_chat_gen_proto_rawDesc)),
+ NumEnums: 0,
+ NumMessages: 1,
+ NumExtensions: 0,
+ NumServices: 0,
+ },
+ GoTypes: file_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_chat_gen_proto_goTypes,
+ DependencyIndexes: file_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_chat_gen_proto_depIdxs,
+ MessageInfos: file_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_chat_gen_proto_msgTypes,
+ }.Build()
+ File_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_chat_gen_proto = out.File
+ file_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_chat_gen_proto_goTypes = nil
+ file_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_chat_gen_proto_depIdxs = nil
+}
diff --git a/pkg/template/multi-shard/shards/game/command/commands_wire.gen.go b/pkg/template/multi-shard/shards/game/command/commands_wire.gen.go
new file mode 100644
index 000000000..389354ec7
--- /dev/null
+++ b/pkg/template/multi-shard/shards/game/command/commands_wire.gen.go
@@ -0,0 +1,129 @@
+// Code generated by world sdk generate. DO NOT EDIT.
+
+package command
+
+import (
+ "fmt"
+
+ "github.com/argus-labs/world-engine/pkg/cardinal"
+ gen "github.com/argus-labs/world-engine/pkg/template/multi-shard/shards/game/gen"
+ "google.golang.org/protobuf/proto"
+)
+
+func (c MovePlayer) ToProto() *gen.MovePlayer {
+ p := &gen.MovePlayer{}
+ p.ArgusAuthID = string(c.ArgusAuthID)
+ p.X = uint32(c.X)
+ p.Y = uint32(c.Y)
+ return p
+}
+
+func (c MovePlayer) FromProto(p *gen.MovePlayer) MovePlayer {
+ if p == nil {
+ return c
+ }
+ c.ArgusAuthID = string(p.ArgusAuthID)
+ c.X = uint32(p.X)
+ c.Y = uint32(p.Y)
+ return c
+}
+
+type movePlayerCodec struct{}
+
+func (movePlayerCodec) Marshal(p cardinal.Command) ([]byte, error) {
+ c, ok := p.(MovePlayer)
+ if !ok {
+ return nil, fmt.Errorf("expected MovePlayer, got %T", p)
+ }
+ return proto.Marshal(c.ToProto())
+}
+
+func (movePlayerCodec) Unmarshal(data []byte) (cardinal.Command, error) {
+ var p gen.MovePlayer
+ if err := proto.Unmarshal(data, &p); err != nil {
+ return nil, err
+ }
+ var c MovePlayer
+ c = c.FromProto(&p)
+ return c, nil
+}
+
+func (c PlayerLeave) ToProto() *gen.PlayerLeave {
+ p := &gen.PlayerLeave{}
+ p.ArgusAuthID = string(c.ArgusAuthID)
+ return p
+}
+
+func (c PlayerLeave) FromProto(p *gen.PlayerLeave) PlayerLeave {
+ if p == nil {
+ return c
+ }
+ c.ArgusAuthID = string(p.ArgusAuthID)
+ return c
+}
+
+type playerLeaveCodec struct{}
+
+func (playerLeaveCodec) Marshal(p cardinal.Command) ([]byte, error) {
+ c, ok := p.(PlayerLeave)
+ if !ok {
+ return nil, fmt.Errorf("expected PlayerLeave, got %T", p)
+ }
+ return proto.Marshal(c.ToProto())
+}
+
+func (playerLeaveCodec) Unmarshal(data []byte) (cardinal.Command, error) {
+ var p gen.PlayerLeave
+ if err := proto.Unmarshal(data, &p); err != nil {
+ return nil, err
+ }
+ var c PlayerLeave
+ c = c.FromProto(&p)
+ return c, nil
+}
+
+func (c PlayerSpawn) ToProto() *gen.PlayerSpawn {
+ p := &gen.PlayerSpawn{}
+ p.ArgusAuthID = string(c.ArgusAuthID)
+ p.ArgusAuthName = string(c.ArgusAuthName)
+ p.X = uint32(c.X)
+ p.Y = uint32(c.Y)
+ return p
+}
+
+func (c PlayerSpawn) FromProto(p *gen.PlayerSpawn) PlayerSpawn {
+ if p == nil {
+ return c
+ }
+ c.ArgusAuthID = string(p.ArgusAuthID)
+ c.ArgusAuthName = string(p.ArgusAuthName)
+ c.X = uint32(p.X)
+ c.Y = uint32(p.Y)
+ return c
+}
+
+type playerSpawnCodec struct{}
+
+func (playerSpawnCodec) Marshal(p cardinal.Command) ([]byte, error) {
+ c, ok := p.(PlayerSpawn)
+ if !ok {
+ return nil, fmt.Errorf("expected PlayerSpawn, got %T", p)
+ }
+ return proto.Marshal(c.ToProto())
+}
+
+func (playerSpawnCodec) Unmarshal(data []byte) (cardinal.Command, error) {
+ var p gen.PlayerSpawn
+ if err := proto.Unmarshal(data, &p); err != nil {
+ return nil, err
+ }
+ var c PlayerSpawn
+ c = c.FromProto(&p)
+ return c, nil
+}
+
+func init() {
+ cardinal.RegisterCommandCodec("move-player", movePlayerCodec{})
+ cardinal.RegisterCommandCodec("player-leave", playerLeaveCodec{})
+ cardinal.RegisterCommandCodec("player-spawn", playerSpawnCodec{})
+}
diff --git a/pkg/template/multi-shard/shards/game/gen/doc.gen.go b/pkg/template/multi-shard/shards/game/gen/doc.gen.go
new file mode 100644
index 000000000..f1897ffee
--- /dev/null
+++ b/pkg/template/multi-shard/shards/game/gen/doc.gen.go
@@ -0,0 +1,2 @@
+// Code generated by world sdk generate. DO NOT EDIT.
+package gen
diff --git a/pkg/template/multi-shard/shards/game/gen/github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_game_gen.pb.go b/pkg/template/multi-shard/shards/game/gen/github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_game_gen.pb.go
new file mode 100644
index 000000000..b1d8e8a3e
--- /dev/null
+++ b/pkg/template/multi-shard/shards/game/gen/github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_game_gen.pb.go
@@ -0,0 +1,269 @@
+// Code generated by world sdk generate. DO NOT EDIT.
+
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// versions:
+// protoc-gen-go v1.36.11
+// protoc (unknown)
+// source: github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_game_gen.proto
+
+package gen
+
+import (
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+ reflect "reflect"
+ sync "sync"
+ unsafe "unsafe"
+)
+
+const (
+ // Verify that this generated code is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
+ // Verify that runtime/protoimpl is sufficiently up-to-date.
+ _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
+)
+
+// wire name: "move-player"
+type MovePlayer struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ ArgusAuthID string `protobuf:"bytes,1,opt,name=ArgusAuthID,proto3" json:"ArgusAuthID,omitempty"`
+ X uint32 `protobuf:"varint,2,opt,name=X,proto3" json:"X,omitempty"`
+ Y uint32 `protobuf:"varint,3,opt,name=Y,proto3" json:"Y,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *MovePlayer) Reset() {
+ *x = MovePlayer{}
+ mi := &file_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_game_gen_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *MovePlayer) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*MovePlayer) ProtoMessage() {}
+
+func (x *MovePlayer) ProtoReflect() protoreflect.Message {
+ mi := &file_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_game_gen_proto_msgTypes[0]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use MovePlayer.ProtoReflect.Descriptor instead.
+func (*MovePlayer) Descriptor() ([]byte, []int) {
+ return file_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_game_gen_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *MovePlayer) GetArgusAuthID() string {
+ if x != nil {
+ return x.ArgusAuthID
+ }
+ return ""
+}
+
+func (x *MovePlayer) GetX() uint32 {
+ if x != nil {
+ return x.X
+ }
+ return 0
+}
+
+func (x *MovePlayer) GetY() uint32 {
+ if x != nil {
+ return x.Y
+ }
+ return 0
+}
+
+// wire name: "player-leave"
+type PlayerLeave struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ ArgusAuthID string `protobuf:"bytes,1,opt,name=ArgusAuthID,proto3" json:"ArgusAuthID,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *PlayerLeave) Reset() {
+ *x = PlayerLeave{}
+ mi := &file_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_game_gen_proto_msgTypes[1]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *PlayerLeave) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PlayerLeave) ProtoMessage() {}
+
+func (x *PlayerLeave) ProtoReflect() protoreflect.Message {
+ mi := &file_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_game_gen_proto_msgTypes[1]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use PlayerLeave.ProtoReflect.Descriptor instead.
+func (*PlayerLeave) Descriptor() ([]byte, []int) {
+ return file_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_game_gen_proto_rawDescGZIP(), []int{1}
+}
+
+func (x *PlayerLeave) GetArgusAuthID() string {
+ if x != nil {
+ return x.ArgusAuthID
+ }
+ return ""
+}
+
+// wire name: "player-spawn"
+type PlayerSpawn struct {
+ state protoimpl.MessageState `protogen:"open.v1"`
+ ArgusAuthID string `protobuf:"bytes,1,opt,name=ArgusAuthID,proto3" json:"ArgusAuthID,omitempty"`
+ ArgusAuthName string `protobuf:"bytes,2,opt,name=ArgusAuthName,proto3" json:"ArgusAuthName,omitempty"`
+ X uint32 `protobuf:"varint,3,opt,name=X,proto3" json:"X,omitempty"`
+ Y uint32 `protobuf:"varint,4,opt,name=Y,proto3" json:"Y,omitempty"`
+ unknownFields protoimpl.UnknownFields
+ sizeCache protoimpl.SizeCache
+}
+
+func (x *PlayerSpawn) Reset() {
+ *x = PlayerSpawn{}
+ mi := &file_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_game_gen_proto_msgTypes[2]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+}
+
+func (x *PlayerSpawn) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*PlayerSpawn) ProtoMessage() {}
+
+func (x *PlayerSpawn) ProtoReflect() protoreflect.Message {
+ mi := &file_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_game_gen_proto_msgTypes[2]
+ if x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use PlayerSpawn.ProtoReflect.Descriptor instead.
+func (*PlayerSpawn) Descriptor() ([]byte, []int) {
+ return file_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_game_gen_proto_rawDescGZIP(), []int{2}
+}
+
+func (x *PlayerSpawn) GetArgusAuthID() string {
+ if x != nil {
+ return x.ArgusAuthID
+ }
+ return ""
+}
+
+func (x *PlayerSpawn) GetArgusAuthName() string {
+ if x != nil {
+ return x.ArgusAuthName
+ }
+ return ""
+}
+
+func (x *PlayerSpawn) GetX() uint32 {
+ if x != nil {
+ return x.X
+ }
+ return 0
+}
+
+func (x *PlayerSpawn) GetY() uint32 {
+ if x != nil {
+ return x.Y
+ }
+ return 0
+}
+
+var File_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_game_gen_proto protoreflect.FileDescriptor
+
+const file_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_game_gen_proto_rawDesc = "" +
+ "\n" +
+ "Qgithub_com_argus_labs_world_engine_pkg_template_multi_shard_shards_game_gen.proto\x12Kgithub_com_argus_labs_world_engine_pkg_template_multi_shard_shards_game_gen\"J\n" +
+ "\n" +
+ "MovePlayer\x12 \n" +
+ "\vArgusAuthID\x18\x01 \x01(\tR\vArgusAuthID\x12\f\n" +
+ "\x01X\x18\x02 \x01(\rR\x01X\x12\f\n" +
+ "\x01Y\x18\x03 \x01(\rR\x01Y\"/\n" +
+ "\vPlayerLeave\x12 \n" +
+ "\vArgusAuthID\x18\x01 \x01(\tR\vArgusAuthID\"q\n" +
+ "\vPlayerSpawn\x12 \n" +
+ "\vArgusAuthID\x18\x01 \x01(\tR\vArgusAuthID\x12$\n" +
+ "\rArgusAuthName\x18\x02 \x01(\tR\rArgusAuthName\x12\f\n" +
+ "\x01X\x18\x03 \x01(\rR\x01X\x12\f\n" +
+ "\x01Y\x18\x04 \x01(\rR\x01YB\\ZOgithub.com/argus-labs/world-engine/pkg/template/multi-shard/shards/game/gen;gen\xaa\x02\bcommandsb\x06proto3"
+
+var (
+ file_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_game_gen_proto_rawDescOnce sync.Once
+ file_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_game_gen_proto_rawDescData []byte
+)
+
+func file_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_game_gen_proto_rawDescGZIP() []byte {
+ file_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_game_gen_proto_rawDescOnce.Do(func() {
+ file_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_game_gen_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_game_gen_proto_rawDesc), len(file_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_game_gen_proto_rawDesc)))
+ })
+ return file_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_game_gen_proto_rawDescData
+}
+
+var file_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_game_gen_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
+var file_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_game_gen_proto_goTypes = []any{
+ (*MovePlayer)(nil), // 0: github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_game_gen.MovePlayer
+ (*PlayerLeave)(nil), // 1: github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_game_gen.PlayerLeave
+ (*PlayerSpawn)(nil), // 2: github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_game_gen.PlayerSpawn
+}
+var file_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_game_gen_proto_depIdxs = []int32{
+ 0, // [0:0] is the sub-list for method output_type
+ 0, // [0:0] is the sub-list for method input_type
+ 0, // [0:0] is the sub-list for extension type_name
+ 0, // [0:0] is the sub-list for extension extendee
+ 0, // [0:0] is the sub-list for field type_name
+}
+
+func init() {
+ file_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_game_gen_proto_init()
+}
+func file_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_game_gen_proto_init() {
+ if File_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_game_gen_proto != nil {
+ return
+ }
+ type x struct{}
+ out := protoimpl.TypeBuilder{
+ File: protoimpl.DescBuilder{
+ GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
+ RawDescriptor: unsafe.Slice(unsafe.StringData(file_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_game_gen_proto_rawDesc), len(file_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_game_gen_proto_rawDesc)),
+ NumEnums: 0,
+ NumMessages: 3,
+ NumExtensions: 0,
+ NumServices: 0,
+ },
+ GoTypes: file_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_game_gen_proto_goTypes,
+ DependencyIndexes: file_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_game_gen_proto_depIdxs,
+ MessageInfos: file_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_game_gen_proto_msgTypes,
+ }.Build()
+ File_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_game_gen_proto = out.File
+ file_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_game_gen_proto_goTypes = nil
+ file_github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_game_gen_proto_depIdxs = nil
+}
diff --git a/pkg/testutils/ecs.go b/pkg/testutils/ecs.go
index 35c997941..b2ecced52 100644
--- a/pkg/testutils/ecs.go
+++ b/pkg/testutils/ecs.go
@@ -124,6 +124,9 @@ func (SystemEventC) Name() string {
// -------------------------------------------------------------------------------------------------
// Commands
// -------------------------------------------------------------------------------------------------
+// Command fixtures are plain value structs (just Name); their wire codec lives in the commandtest
+// package, which registers it with the command package the same way the generator does for real
+// commands. testutils can't import the internal command package, so the codec can't live here.
type SimpleCommand struct {
Value int
diff --git a/proto/gen/csharp/WorldEngine/Proto/Isc/V1/Command.cs b/proto/gen/csharp/WorldEngine/Proto/Isc/V1/Command.cs
index c2484b8bf..00aa79259 100644
--- a/proto/gen/csharp/WorldEngine/Proto/Isc/V1/Command.cs
+++ b/proto/gen/csharp/WorldEngine/Proto/Isc/V1/Command.cs
@@ -27,15 +27,14 @@ static CommandReflection() {
"CiB3b3JsZGVuZ2luZS9pc2MvdjEvY29tbWFuZC5wcm90bxISd29ybGRlbmdp",
"bmUuaXNjLnYxGhtidWYvdmFsaWRhdGUvdmFsaWRhdGUucHJvdG8aIHdvcmxk",
"ZW5naW5lL2lzYy92MS9wZXJzb25hLnByb3RvGiJ3b3JsZGVuZ2luZS9taWNy",
- "by92MS9zZXJ2aWNlLnByb3RvIucBCgdDb21tYW5kEjMKBG5hbWUYASABKAlC",
+ "by92MS9zZXJ2aWNlLnByb3RvIt8BCgdDb21tYW5kEjMKBG5hbWUYASABKAlC",
"H7pIHHIXEAEYgAEyEF5bYS16QS1aMC05Xy1dKyTIAQFSBG5hbWUSRgoHYWRk",
"cmVzcxgCIAEoCzIkLndvcmxkZW5naW5lLm1pY3JvLnYxLlNlcnZpY2VBZGRy",
"ZXNzQga6SAPIAQFSB2FkZHJlc3MSPQoHcGVyc29uYRgDIAEoCzIbLndvcmxk",
- "ZW5naW5lLmlzYy52MS5QZXJzb25hQga6SAPIAQFSB3BlcnNvbmESIAoHcGF5",
- "bG9hZBgEIAEoDEIGukgDyAEBUgdwYXlsb2FkQmVaSGdpdGh1Yi5jb20vYXJn",
- "dXMtbGFicy93b3JsZC1lbmdpbmUvcHJvdG8vZ2VuL2dvL3dvcmxkZW5naW5l",
- "L2lzYy92MTtpc2N2MaoCGFdvcmxkRW5naW5lLlByb3RvLklzYy5WMWIGcHJv",
- "dG8z"));
+ "ZW5naW5lLmlzYy52MS5QZXJzb25hQga6SAPIAQFSB3BlcnNvbmESGAoHcGF5",
+ "bG9hZBgEIAEoDFIHcGF5bG9hZEJlWkhnaXRodWIuY29tL2FyZ3VzLWxhYnMv",
+ "d29ybGQtZW5naW5lL3Byb3RvL2dlbi9nby93b3JsZGVuZ2luZS9pc2MvdjE7",
+ "aXNjdjGqAhhXb3JsZEVuZ2luZS5Qcm90by5Jc2MuVjFiBnByb3RvMw=="));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
new pbr::FileDescriptor[] { global::Buf.Validate.ValidateReflection.Descriptor, global::WorldEngine.Proto.Isc.V1.PersonaReflection.Descriptor, global::WorldEngine.Proto.Micro.V1.ServiceReflection.Descriptor, },
new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] {
@@ -146,7 +145,8 @@ public string Name {
public const int PayloadFieldNumber = 4;
private pb::ByteString payload_ = pb::ByteString.Empty;
///
- /// The command payload serialized as MessagePack bytes.
+ /// The serialized command payload. May be empty: a command whose proto message
+ /// has no set fields serializes to zero bytes, so this is not marked required.
///
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
diff --git a/proto/gen/go/worldengine/isc/v1/command.pb.go b/proto/gen/go/worldengine/isc/v1/command.pb.go
index f5d7c23e8..45a086cfa 100644
--- a/proto/gen/go/worldengine/isc/v1/command.pb.go
+++ b/proto/gen/go/worldengine/isc/v1/command.pb.go
@@ -32,7 +32,8 @@ type Command struct {
Address *v1.ServiceAddress `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"`
// The persona sending the command.
Persona *Persona `protobuf:"bytes,3,opt,name=persona,proto3" json:"persona,omitempty"`
- // The command payload serialized as MessagePack bytes.
+ // The serialized command payload. May be empty: a command whose proto message
+ // has no set fields serializes to zero bytes, so this is not marked required.
Payload []byte `protobuf:"bytes,4,opt,name=payload,proto3" json:"payload,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
@@ -100,12 +101,12 @@ var File_worldengine_isc_v1_command_proto protoreflect.FileDescriptor
const file_worldengine_isc_v1_command_proto_rawDesc = "" +
"\n" +
- " worldengine/isc/v1/command.proto\x12\x12worldengine.isc.v1\x1a\x1bbuf/validate/validate.proto\x1a worldengine/isc/v1/persona.proto\x1a\"worldengine/micro/v1/service.proto\"\xe7\x01\n" +
+ " worldengine/isc/v1/command.proto\x12\x12worldengine.isc.v1\x1a\x1bbuf/validate/validate.proto\x1a worldengine/isc/v1/persona.proto\x1a\"worldengine/micro/v1/service.proto\"\xdf\x01\n" +
"\aCommand\x123\n" +
"\x04name\x18\x01 \x01(\tB\x1f\xbaH\x1c\xc8\x01\x01r\x17\x10\x01\x18\x80\x012\x10^[a-zA-Z0-9_-]+$R\x04name\x12F\n" +
"\aaddress\x18\x02 \x01(\v2$.worldengine.micro.v1.ServiceAddressB\x06\xbaH\x03\xc8\x01\x01R\aaddress\x12=\n" +
- "\apersona\x18\x03 \x01(\v2\x1b.worldengine.isc.v1.PersonaB\x06\xbaH\x03\xc8\x01\x01R\apersona\x12 \n" +
- "\apayload\x18\x04 \x01(\fB\x06\xbaH\x03\xc8\x01\x01R\apayloadBeZHgithub.com/argus-labs/world-engine/proto/gen/go/worldengine/isc/v1;iscv1\xaa\x02\x18WorldEngine.Proto.Isc.V1b\x06proto3"
+ "\apersona\x18\x03 \x01(\v2\x1b.worldengine.isc.v1.PersonaB\x06\xbaH\x03\xc8\x01\x01R\apersona\x12\x18\n" +
+ "\apayload\x18\x04 \x01(\fR\apayloadBeZHgithub.com/argus-labs/world-engine/proto/gen/go/worldengine/isc/v1;iscv1\xaa\x02\x18WorldEngine.Proto.Isc.V1b\x06proto3"
var (
file_worldengine_isc_v1_command_proto_rawDescOnce sync.Once
diff --git a/proto/gen/ts/worldengine/isc/v1/command_pb.ts b/proto/gen/ts/worldengine/isc/v1/command_pb.ts
index 3c06c1aa8..3236f9d3a 100644
--- a/proto/gen/ts/worldengine/isc/v1/command_pb.ts
+++ b/proto/gen/ts/worldengine/isc/v1/command_pb.ts
@@ -15,7 +15,7 @@ import type { Message } from "@bufbuild/protobuf";
* Describes the file worldengine/isc/v1/command.proto.
*/
export const file_worldengine_isc_v1_command: GenFile = /*@__PURE__*/
- fileDesc("CiB3b3JsZGVuZ2luZS9pc2MvdjEvY29tbWFuZC5wcm90bxISd29ybGRlbmdpbmUuaXNjLnYxIsYBCgdDb21tYW5kEi0KBG5hbWUYASABKAlCH7pIHMgBAXIXEAEYgAEyEF5bYS16QS1aMC05Xy1dKyQSPQoHYWRkcmVzcxgCIAEoCzIkLndvcmxkZW5naW5lLm1pY3JvLnYxLlNlcnZpY2VBZGRyZXNzQga6SAPIAQESNAoHcGVyc29uYRgDIAEoCzIbLndvcmxkZW5naW5lLmlzYy52MS5QZXJzb25hQga6SAPIAQESFwoHcGF5bG9hZBgEIAEoDEIGukgDyAEBQmVaSGdpdGh1Yi5jb20vYXJndXMtbGFicy93b3JsZC1lbmdpbmUvcHJvdG8vZ2VuL2dvL3dvcmxkZW5naW5lL2lzYy92MTtpc2N2MaoCGFdvcmxkRW5naW5lLlByb3RvLklzYy5WMWIGcHJvdG8z", [file_buf_validate_validate, file_worldengine_isc_v1_persona, file_worldengine_micro_v1_service]);
+ fileDesc("CiB3b3JsZGVuZ2luZS9pc2MvdjEvY29tbWFuZC5wcm90bxISd29ybGRlbmdpbmUuaXNjLnYxIr4BCgdDb21tYW5kEi0KBG5hbWUYASABKAlCH7pIHMgBAXIXEAEYgAEyEF5bYS16QS1aMC05Xy1dKyQSPQoHYWRkcmVzcxgCIAEoCzIkLndvcmxkZW5naW5lLm1pY3JvLnYxLlNlcnZpY2VBZGRyZXNzQga6SAPIAQESNAoHcGVyc29uYRgDIAEoCzIbLndvcmxkZW5naW5lLmlzYy52MS5QZXJzb25hQga6SAPIAQESDwoHcGF5bG9hZBgEIAEoDEJlWkhnaXRodWIuY29tL2FyZ3VzLWxhYnMvd29ybGQtZW5naW5lL3Byb3RvL2dlbi9nby93b3JsZGVuZ2luZS9pc2MvdjE7aXNjdjGqAhhXb3JsZEVuZ2luZS5Qcm90by5Jc2MuVjFiBnByb3RvMw", [file_buf_validate_validate, file_worldengine_isc_v1_persona, file_worldengine_micro_v1_service]);
/**
* Command represents the data payload of a command to trigger systems in a shard.
@@ -45,7 +45,8 @@ export type Command = Message<"worldengine.isc.v1.Command"> & {
persona?: Persona;
/**
- * The command payload serialized as MessagePack bytes.
+ * The serialized command payload. May be empty: a command whose proto message
+ * has no set fields serializes to zero bytes, so this is not marked required.
*
* @generated from field: bytes payload = 4;
*/
diff --git a/proto/worldengine/isc/v1/command.proto b/proto/worldengine/isc/v1/command.proto
index 91e59c177..732a276a6 100644
--- a/proto/worldengine/isc/v1/command.proto
+++ b/proto/worldengine/isc/v1/command.proto
@@ -27,6 +27,7 @@ message Command {
// The persona sending the command.
Persona persona = 3 [(buf.validate.field).required = true];
- // The command payload serialized as MessagePack bytes.
- bytes payload = 4 [(buf.validate.field).required = true];
+ // The serialized command payload. May be empty: a command whose proto message
+ // has no set fields serializes to zero bytes, so this is not marked required.
+ bytes payload = 4;
}