From fab34c2b95bf6b7866dc4606ec609218cb96648d Mon Sep 17 00:00:00 2001 From: winton-library <52289105+winton-library@users.noreply.github.com> Date: Tue, 9 Jun 2026 18:56:28 +0700 Subject: [PATCH 1/9] feat(cardinal): change command to use schema with proto wire --- pkg/cardinal/internal/command/queue.go | 4 +-- pkg/cardinal/internal/schema/schema.go | 31 +++++++++++++++++-- .../internal/schema/schema_internal_test.go | 23 ++++++++++++++ pkg/cardinal/service.go | 2 +- 4 files changed, 54 insertions(+), 6 deletions(-) diff --git a/pkg/cardinal/internal/command/queue.go b/pkg/cardinal/internal/command/queue.go index 695364ec1..a18f915d8 100644 --- a/pkg/cardinal/internal/command/queue.go +++ b/pkg/cardinal/internal/command/queue.go @@ -47,13 +47,13 @@ func (q *sliceQueue[T]) Enqueue(command *iscv1.Command) error { return eris.Errorf("mismatched command name, expected %s, actual %s", zero.Name(), command.GetName()) } - if err := schema.Deserialize(command.GetPayload(), &zero); err != nil { + if err := schema.UnmarshalCommand(&zero, command.GetPayload()); err != nil { return eris.Wrap(err, "failed to deserialize command payload") } q.mu.Lock() q.commands = append(q.commands, Command{ - Name: zero.Name(), + Name: command.GetName(), Address: command.GetAddress(), Persona: command.GetPersona().GetId(), Payload: zero, diff --git a/pkg/cardinal/internal/schema/schema.go b/pkg/cardinal/internal/schema/schema.go index f48a8192b..d1dcd9639 100644 --- a/pkg/cardinal/internal/schema/schema.go +++ b/pkg/cardinal/internal/schema/schema.go @@ -1,6 +1,7 @@ package schema import ( + "encoding" "fmt" "github.com/rotisserie/eris" @@ -12,7 +13,32 @@ type Serializable interface { Name() string } -// Serialize converts a Serializable to bytes. +// MarshalCommand serializes a command for transport across a shard or process boundary. The engine cannot know a +// user-defined command's shape, so each command supplies its own binary encoding via the standard +// encoding.BinaryMarshaler. A command that does not implement it cannot be transported and returns an error. +func MarshalCommand(s Serializable) ([]byte, error) { + m, ok := s.(encoding.BinaryMarshaler) + if !ok { + return nil, eris.Errorf("command %q has no wire layer (run the generator)", s.Name()) + } + return m.MarshalBinary() +} + +// UnmarshalCommand reconstructs a command from its transported bytes into v (a pointer to the command type) +// via the standard encoding.BinaryUnmarshaler. +func UnmarshalCommand(v any, data []byte) error { + u, ok := v.(encoding.BinaryUnmarshaler) + if !ok { + name := "?" + if s, ok := v.(Serializable); ok { + name = s.Name() + } + return eris.Errorf("command %q has no wire layer (run the generator)", name) + } + return u.UnmarshalBinary(data) +} + +// 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 +48,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/internal/schema/schema_internal_test.go b/pkg/cardinal/internal/schema/schema_internal_test.go index ded652a55..52819e547 100644 --- a/pkg/cardinal/internal/schema/schema_internal_test.go +++ b/pkg/cardinal/internal/schema/schema_internal_test.go @@ -35,6 +35,29 @@ func TestSerialize_RoundTrip(t *testing.T) { assert.Equal(t, expected, actual) } +// binaryCommand is a command that carries its own wire encoding. +type binaryCommand struct{ payload string } + +func (binaryCommand) Name() string { return "binary_command" } +func (c binaryCommand) MarshalBinary() ([]byte, error) { return []byte(c.payload), nil } +func (c *binaryCommand) UnmarshalBinary(b []byte) error { c.payload = string(b); return nil } + +func TestMarshalCommand(t *testing.T) { + t.Parallel() + + // A command with a wire layer round-trips through its own marshaler. + data, err := schema.MarshalCommand(binaryCommand{payload: "abc"}) + require.NoError(t, err) + + var actual binaryCommand + require.NoError(t, schema.UnmarshalCommand(&actual, data)) + assert.Equal(t, "abc", actual.payload) + + // A Serializable without a wire layer (here a component) is rejected, not msgpack'd. + _, err = schema.MarshalCommand(testutils.ComponentMixed{}) + require.Error(t, err) +} + // ------------------------------------------------------------------------------------------------- // Deserialization robustness fuzz // ------------------------------------------------------------------------------------------------- diff --git a/pkg/cardinal/service.go b/pkg/cardinal/service.go index 14375d697..b764b6b63 100644 --- a/pkg/cardinal/service.go +++ b/pkg/cardinal/service.go @@ -613,7 +613,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 := schema.MarshalCommand(isc.Payload) if err != nil { return eris.Wrap(err, "failed to marshal command payload") } From 210e16cdceb53f4a60ebcdd6177ad2fd85815d27 Mon Sep 17 00:00:00 2001 From: winton-library <52289105+winton-library@users.noreply.github.com> Date: Thu, 11 Jun 2026 16:17:37 +0700 Subject: [PATCH 2/9] refactor(cardinal,lobby): generate lobby proto command and first PoC of the autogen code --- pkg/cardinal/dst.go | 5 +- pkg/cardinal/e2e.go | 3 +- pkg/cardinal/internal/command/codec.go | 47 + pkg/cardinal/internal/command/command_test.go | 6 +- pkg/cardinal/internal/command/queue.go | 20 +- pkg/cardinal/internal/command/queue_test.go | 3 +- .../internal/commandtest/commandtest.go | 124 + pkg/cardinal/internal/schema/schema.go | 26 - .../internal/schema/schema_internal_test.go | 23 - pkg/cardinal/service.go | 2 +- pkg/cardinal/service_internal_test.go | 4 +- pkg/cardinal/system.go | 14 + pkg/cardinal/system_internal_test.go | 6 +- ...omArgusLabsWorldEnginePkgPluginLobbyGen.cs | 4390 +++++++++++++++++ pkg/plugin/lobby/gen/doc.gen.go | 2 + ...bs_world_engine_pkg_plugin_lobby_gen.pb.go | 1105 +++++ pkg/plugin/lobby/lobby_test.go | 2 +- pkg/plugin/lobby/plugin.go | 1 + pkg/plugin/lobby/system/commands_wire.gen.go | 643 +++ pkg/plugin/lobby/system/lobby.go | 66 +- .../lobby/system/lobby_internal_test.go | 2 +- pkg/testutils/ecs.go | 3 + 22 files changed, 6400 insertions(+), 97 deletions(-) create mode 100644 pkg/cardinal/internal/command/codec.go create mode 100644 pkg/cardinal/internal/commandtest/commandtest.go create mode 100644 pkg/plugin/lobby/cs/GithubComArgusLabsWorldEnginePkgPluginLobbyGen.cs create mode 100644 pkg/plugin/lobby/gen/doc.gen.go create mode 100644 pkg/plugin/lobby/gen/github_com_argus_labs_world_engine_pkg_plugin_lobby_gen.pb.go create mode 100644 pkg/plugin/lobby/system/commands_wire.gen.go 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..b934f619f --- /dev/null +++ b/pkg/cardinal/internal/command/codec.go @@ -0,0 +1,47 @@ +package command + +import "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{} + +// RegisterCodec registers the wire codec for a command name. Generated code calls this from init(). +func RegisterCodec(name string, c Codec) { + 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_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 a18f915d8..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.UnmarshalCommand(&zero, command.GetPayload()); 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: command.GetName(), - 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/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 d1dcd9639..7c5feed55 100644 --- a/pkg/cardinal/internal/schema/schema.go +++ b/pkg/cardinal/internal/schema/schema.go @@ -1,7 +1,6 @@ package schema import ( - "encoding" "fmt" "github.com/rotisserie/eris" @@ -13,31 +12,6 @@ type Serializable interface { Name() string } -// MarshalCommand serializes a command for transport across a shard or process boundary. The engine cannot know a -// user-defined command's shape, so each command supplies its own binary encoding via the standard -// encoding.BinaryMarshaler. A command that does not implement it cannot be transported and returns an error. -func MarshalCommand(s Serializable) ([]byte, error) { - m, ok := s.(encoding.BinaryMarshaler) - if !ok { - return nil, eris.Errorf("command %q has no wire layer (run the generator)", s.Name()) - } - return m.MarshalBinary() -} - -// UnmarshalCommand reconstructs a command from its transported bytes into v (a pointer to the command type) -// via the standard encoding.BinaryUnmarshaler. -func UnmarshalCommand(v any, data []byte) error { - u, ok := v.(encoding.BinaryUnmarshaler) - if !ok { - name := "?" - if s, ok := v.(Serializable); ok { - name = s.Name() - } - return eris.Errorf("command %q has no wire layer (run the generator)", name) - } - return u.UnmarshalBinary(data) -} - // 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) { diff --git a/pkg/cardinal/internal/schema/schema_internal_test.go b/pkg/cardinal/internal/schema/schema_internal_test.go index 52819e547..ded652a55 100644 --- a/pkg/cardinal/internal/schema/schema_internal_test.go +++ b/pkg/cardinal/internal/schema/schema_internal_test.go @@ -35,29 +35,6 @@ func TestSerialize_RoundTrip(t *testing.T) { assert.Equal(t, expected, actual) } -// binaryCommand is a command that carries its own wire encoding. -type binaryCommand struct{ payload string } - -func (binaryCommand) Name() string { return "binary_command" } -func (c binaryCommand) MarshalBinary() ([]byte, error) { return []byte(c.payload), nil } -func (c *binaryCommand) UnmarshalBinary(b []byte) error { c.payload = string(b); return nil } - -func TestMarshalCommand(t *testing.T) { - t.Parallel() - - // A command with a wire layer round-trips through its own marshaler. - data, err := schema.MarshalCommand(binaryCommand{payload: "abc"}) - require.NoError(t, err) - - var actual binaryCommand - require.NoError(t, schema.UnmarshalCommand(&actual, data)) - assert.Equal(t, "abc", actual.payload) - - // A Serializable without a wire layer (here a component) is rejected, not msgpack'd. - _, err = schema.MarshalCommand(testutils.ComponentMixed{}) - require.Error(t, err) -} - // ------------------------------------------------------------------------------------------------- // Deserialization robustness fuzz // ------------------------------------------------------------------------------------------------- diff --git a/pkg/cardinal/service.go b/pkg/cardinal/service.go index b764b6b63..81d893108 100644 --- a/pkg/cardinal/service.go +++ b/pkg/cardinal/service.go @@ -613,7 +613,7 @@ func (s *service) publishInterShardCommand(evt event.Event) error { } assert.That(isc.Address != nil, "inter shard command has nil address") - payload, err := schema.MarshalCommand(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..364d43476 --- /dev/null +++ b/pkg/plugin/lobby/gen/github_com_argus_labs_world_engine_pkg_plugin_lobby_gen.pb.go @@ -0,0 +1,1105 @@ +// 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_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[12] + 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[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 SetReadyCommand.ProtoReflect.Descriptor instead. +func (*SetReadyCommand) Descriptor() ([]byte, []int) { + return file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_rawDescGZIP(), []int{12} +} + +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[13] + 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[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 ShardAddress.ProtoReflect.Descriptor instead. +func (*ShardAddress) Descriptor() ([]byte, []int) { + return file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_rawDescGZIP(), []int{13} +} + +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[14] + 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[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 StartSessionCommand.ProtoReflect.Descriptor instead. +func (*StartSessionCommand) Descriptor() ([]byte, []int) { + return file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_rawDescGZIP(), []int{14} +} + +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[15] + 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[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 TransferLeaderCommand.ProtoReflect.Descriptor instead. +func (*TransferLeaderCommand) Descriptor() ([]byte, []int) { + return file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_rawDescGZIP(), []int{15} +} + +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[16] + 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[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 UpdatePlayerPassthroughCommand.ProtoReflect.Descriptor instead. +func (*UpdatePlayerPassthroughCommand) Descriptor() ([]byte, []int) { + return file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_rawDescGZIP(), []int{16} +} + +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[17] + 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[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 UpdateSessionPassthroughCommand.ProtoReflect.Descriptor instead. +func (*UpdateSessionPassthroughCommand) Descriptor() ([]byte, []int) { + return file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_rawDescGZIP(), []int{17} +} + +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\"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\x0fPassthroughDataBHZ;github.com/argus-labs/world-engine/pkg/plugin/lobby/gen;gen\xaa\x02\bcommandsb\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, 18) +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 + (*SetReadyCommand)(nil), // 12: github_com_argus_labs_world_engine_pkg_plugin_lobby_gen.SetReadyCommand + (*ShardAddress)(nil), // 13: github_com_argus_labs_world_engine_pkg_plugin_lobby_gen.ShardAddress + (*StartSessionCommand)(nil), // 14: github_com_argus_labs_world_engine_pkg_plugin_lobby_gen.StartSessionCommand + (*TransferLeaderCommand)(nil), // 15: github_com_argus_labs_world_engine_pkg_plugin_lobby_gen.TransferLeaderCommand + (*UpdatePlayerPassthroughCommand)(nil), // 16: github_com_argus_labs_world_engine_pkg_plugin_lobby_gen.UpdatePlayerPassthroughCommand + (*UpdateSessionPassthroughCommand)(nil), // 17: 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{ + 13, // 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 + 1, // [1:1] is the sub-list for method output_type + 1, // [1:1] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] 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: 18, + 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..19c3084f9 --- /dev/null +++ b/pkg/plugin/lobby/system/commands_wire.gen.go @@ -0,0 +1,643 @@ +// 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 assignShardCommandFromProto(p *gen.AssignShardCommand) AssignShardCommand { + var c AssignShardCommand + if p == nil { + return c + } + c.LobbyID = string(p.LobbyID) + c.RequestID = string(p.RequestID) + c.GameWorld = shardAddressFromProto(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 + } + return assignShardCommandFromProto(&p), 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 createLobbyCommandFromProto(p *gen.CreateLobbyCommand) CreateLobbyCommand { + var c 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 + } + return createLobbyCommandFromProto(&p), nil +} + +func (c GenerateInviteCodeCommand) toProto() *gen.GenerateInviteCodeCommand { + p := &gen.GenerateInviteCodeCommand{} + p.RequestID = string(c.RequestID) + return p +} + +func generateInviteCodeCommandFromProto(p *gen.GenerateInviteCodeCommand) GenerateInviteCodeCommand { + var c 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 + } + return generateInviteCodeCommandFromProto(&p), nil +} + +func (c GetAllPlayersCommand) toProto() *gen.GetAllPlayersCommand { + p := &gen.GetAllPlayersCommand{} + p.RequestID = string(c.RequestID) + return p +} + +func getAllPlayersCommandFromProto(p *gen.GetAllPlayersCommand) GetAllPlayersCommand { + var c 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 + } + return getAllPlayersCommandFromProto(&p), nil +} + +func (c GetLobbyCommand) toProto() *gen.GetLobbyCommand { + p := &gen.GetLobbyCommand{} + p.RequestID = string(c.RequestID) + return p +} + +func getLobbyCommandFromProto(p *gen.GetLobbyCommand) GetLobbyCommand { + var c 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 + } + return getLobbyCommandFromProto(&p), nil +} + +func (c GetPlayerCommand) toProto() *gen.GetPlayerCommand { + p := &gen.GetPlayerCommand{} + p.RequestID = string(c.RequestID) + p.PlayerID = string(c.PlayerID) + return p +} + +func getPlayerCommandFromProto(p *gen.GetPlayerCommand) GetPlayerCommand { + var c 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 + } + return getPlayerCommandFromProto(&p), nil +} + +func (c HeartbeatCommand) toProto() *gen.HeartbeatCommand { + p := &gen.HeartbeatCommand{} + return p +} + +func heartbeatCommandFromProto(p *gen.HeartbeatCommand) HeartbeatCommand { + var c 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 + } + return heartbeatCommandFromProto(&p), 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 joinLobbyCommandFromProto(p *gen.JoinLobbyCommand) JoinLobbyCommand { + var c 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 + } + return joinLobbyCommandFromProto(&p), nil +} + +func (c JoinTeamCommand) toProto() *gen.JoinTeamCommand { + p := &gen.JoinTeamCommand{} + p.RequestID = string(c.RequestID) + p.TeamID = string(c.TeamID) + return p +} + +func joinTeamCommandFromProto(p *gen.JoinTeamCommand) JoinTeamCommand { + var c 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 + } + return joinTeamCommandFromProto(&p), nil +} + +func (c KickPlayerCommand) toProto() *gen.KickPlayerCommand { + p := &gen.KickPlayerCommand{} + p.RequestID = string(c.RequestID) + p.TargetPlayerID = string(c.TargetPlayerID) + return p +} + +func kickPlayerCommandFromProto(p *gen.KickPlayerCommand) KickPlayerCommand { + var c 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 + } + return kickPlayerCommandFromProto(&p), nil +} + +func (c LeaveLobbyCommand) toProto() *gen.LeaveLobbyCommand { + p := &gen.LeaveLobbyCommand{} + p.RequestID = string(c.RequestID) + return p +} + +func leaveLobbyCommandFromProto(p *gen.LeaveLobbyCommand) LeaveLobbyCommand { + var c 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 + } + return leaveLobbyCommandFromProto(&p), nil +} + +func (c NotifySessionEndCommand) toProto() *gen.NotifySessionEndCommand { + p := &gen.NotifySessionEndCommand{} + p.LobbyID = string(c.LobbyID) + return p +} + +func notifySessionEndCommandFromProto(p *gen.NotifySessionEndCommand) NotifySessionEndCommand { + var c 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 + } + return notifySessionEndCommandFromProto(&p), nil +} + +func (c SetReadyCommand) toProto() *gen.SetReadyCommand { + p := &gen.SetReadyCommand{} + p.RequestID = string(c.RequestID) + p.IsReady = bool(c.IsReady) + return p +} + +func setReadyCommandFromProto(p *gen.SetReadyCommand) SetReadyCommand { + var c 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 + } + return setReadyCommandFromProto(&p), 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 shardAddressFromProto(p *gen.ShardAddress) ShardAddress { + var c 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 startSessionCommandFromProto(p *gen.StartSessionCommand) StartSessionCommand { + var c 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 + } + return startSessionCommandFromProto(&p), nil +} + +func (c TransferLeaderCommand) toProto() *gen.TransferLeaderCommand { + p := &gen.TransferLeaderCommand{} + p.RequestID = string(c.RequestID) + p.TargetPlayerID = string(c.TargetPlayerID) + return p +} + +func transferLeaderCommandFromProto(p *gen.TransferLeaderCommand) TransferLeaderCommand { + var c 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 + } + return transferLeaderCommandFromProto(&p), nil +} + +func (c UpdatePlayerPassthroughCommand) toProto() *gen.UpdatePlayerPassthroughCommand { + p := &gen.UpdatePlayerPassthroughCommand{} + p.RequestID = string(c.RequestID) + p.PassthroughData = []byte(c.PassthroughData) + return p +} + +func updatePlayerPassthroughCommandFromProto(p *gen.UpdatePlayerPassthroughCommand) UpdatePlayerPassthroughCommand { + var c 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 + } + return updatePlayerPassthroughCommandFromProto(&p), nil +} + +func (c UpdateSessionPassthroughCommand) toProto() *gen.UpdateSessionPassthroughCommand { + p := &gen.UpdateSessionPassthroughCommand{} + p.RequestID = string(c.RequestID) + p.PassthroughData = []byte(c.PassthroughData) + return p +} + +func updateSessionPassthroughCommandFromProto(p *gen.UpdateSessionPassthroughCommand) UpdateSessionPassthroughCommand { + var c 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 + } + return updateSessionPassthroughCommandFromProto(&p), 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_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..a29e65943 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. @@ -522,11 +523,22 @@ 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 +} + 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 +877,20 @@ func emitJoinLobbyFailure(state *LobbySystemState, requestID, message string) { }) } +// DecodePassthrough turns a command's opaque JSON passthrough bytes into the map that components and +// events store and that downstream systems read. Empty or malformed input yields a nil map; the +// passthrough is best-effort forwarded data, not something the lobby validates. +func DecodePassthrough(b []byte) map[string]any { + if len(b) == 0 { + return nil + } + var m map[string]any + if err := json.Unmarshal(b, &m); err != nil { + return nil + } + return m +} + // createPlayerEntity creates a player entity and returns the component and entity ID. func createPlayerEntity( state *LobbySystemState, @@ -1139,7 +1165,7 @@ func processCreateLobbyCommands( InviteCode: "", // Will be set after generation Session: component.Session{ State: component.SessionStateIdle, - PassthroughData: payload.SessionPassthroughData, + PassthroughData: DecodePassthrough(payload.SessionPassthroughData), }, CreatedAt: now, } @@ -1186,7 +1212,7 @@ func processCreateLobbyCommands( // Create player entity and update index playerComp, playerEntityID := createPlayerEntity( - state, playerID, lobbyID, lobby.Teams[0].TeamID, payload.PlayerPassthroughData, now, + state, playerID, lobbyID, lobby.Teams[0].TeamID, DecodePassthrough(payload.PlayerPassthroughData), now, ) lobbyIndex.AddLobby(lobbyID, uint32(lobbyEntityID), inviteCode) lobbyIndex.AddPlayerToLobby(playerID, lobbyID, lobby.Teams[0].TeamID, uint32(playerEntityID), now+timeout) @@ -1285,7 +1311,7 @@ func processJoinLobbyCommands( // Create player entity playerComp, playerEntityID := createPlayerEntity( - state, playerID, lobbyID, targetTeam.TeamID, payload.PlayerPassthroughData, now, + state, playerID, lobbyID, targetTeam.TeamID, DecodePassthrough(payload.PlayerPassthroughData), now, ) lobbyIndex.AddPlayerToLobby(playerID, lobbyID, targetTeam.TeamID, uint32(playerEntityID), now+timeout) @@ -1973,7 +1999,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) @@ -2177,7 +2203,7 @@ func processUpdateSessionPassthroughCommands(state *LobbySystemState, lobbyIndex continue } - lobby.Session.PassthroughData = payload.PassthroughData + lobby.Session.PassthroughData = DecodePassthrough(payload.PassthroughData) result.lobbyRef.Set(lobby) state.Logger().Info(). @@ -2236,7 +2262,7 @@ func processUpdatePlayerPassthroughCommands(state *LobbySystemState, lobbyIndex } playerComp := playerEntity.Player.Get() - playerComp.PassthroughData = payload.PassthroughData + playerComp.PassthroughData = DecodePassthrough(payload.PassthroughData) 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..4aac08353 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) 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 From c4525b66f268730e242c3be0f43766f58a52db24 Mon Sep 17 00:00:00 2001 From: winton-library <52289105+winton-library@users.noreply.github.com> Date: Fri, 12 Jun 2026 18:53:40 +0700 Subject: [PATCH 3/9] refactor(plugin): adjust the command generation with adr-056 --- ...bs_world_engine_pkg_plugin_lobby_gen.pb.go | 128 +++++--- pkg/plugin/lobby/system/commands_wire.gen.go | 286 ++++++++++-------- pkg/plugin/lobby/system/lobby.go | 21 +- 3 files changed, 267 insertions(+), 168 deletions(-) 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 index 364d43476..daff1d36d 100644 --- 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 @@ -651,6 +651,59 @@ func (x *NotifySessionEndCommand) GetLobbyID() string { 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"` @@ -662,7 +715,7 @@ type SetReadyCommand struct { func (x *SetReadyCommand) Reset() { *x = SetReadyCommand{} - mi := &file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_msgTypes[12] + 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) } @@ -674,7 +727,7 @@ func (x *SetReadyCommand) String() string { func (*SetReadyCommand) ProtoMessage() {} func (x *SetReadyCommand) ProtoReflect() protoreflect.Message { - mi := &file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_msgTypes[12] + 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 { @@ -687,7 +740,7 @@ func (x *SetReadyCommand) ProtoReflect() protoreflect.Message { // 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{12} + return file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_rawDescGZIP(), []int{13} } func (x *SetReadyCommand) GetRequestID() string { @@ -716,7 +769,7 @@ type ShardAddress struct { func (x *ShardAddress) Reset() { *x = ShardAddress{} - mi := &file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_msgTypes[13] + 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) } @@ -728,7 +781,7 @@ func (x *ShardAddress) String() string { func (*ShardAddress) ProtoMessage() {} func (x *ShardAddress) ProtoReflect() protoreflect.Message { - mi := &file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_msgTypes[13] + 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 { @@ -741,7 +794,7 @@ func (x *ShardAddress) ProtoReflect() protoreflect.Message { // 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{13} + return file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_rawDescGZIP(), []int{14} } func (x *ShardAddress) GetRegion() string { @@ -782,7 +835,7 @@ type StartSessionCommand struct { func (x *StartSessionCommand) Reset() { *x = StartSessionCommand{} - mi := &file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_msgTypes[14] + 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) } @@ -794,7 +847,7 @@ func (x *StartSessionCommand) String() string { func (*StartSessionCommand) ProtoMessage() {} func (x *StartSessionCommand) ProtoReflect() protoreflect.Message { - mi := &file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_msgTypes[14] + 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 { @@ -807,7 +860,7 @@ func (x *StartSessionCommand) ProtoReflect() protoreflect.Message { // 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{14} + return file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_rawDescGZIP(), []int{15} } func (x *StartSessionCommand) GetRequestID() string { @@ -828,7 +881,7 @@ type TransferLeaderCommand struct { func (x *TransferLeaderCommand) Reset() { *x = TransferLeaderCommand{} - mi := &file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_msgTypes[15] + 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) } @@ -840,7 +893,7 @@ func (x *TransferLeaderCommand) String() string { func (*TransferLeaderCommand) ProtoMessage() {} func (x *TransferLeaderCommand) ProtoReflect() protoreflect.Message { - mi := &file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_msgTypes[15] + 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 { @@ -853,7 +906,7 @@ func (x *TransferLeaderCommand) ProtoReflect() protoreflect.Message { // 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{15} + return file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_rawDescGZIP(), []int{16} } func (x *TransferLeaderCommand) GetRequestID() string { @@ -881,7 +934,7 @@ type UpdatePlayerPassthroughCommand struct { func (x *UpdatePlayerPassthroughCommand) Reset() { *x = UpdatePlayerPassthroughCommand{} - mi := &file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_msgTypes[16] + 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) } @@ -893,7 +946,7 @@ func (x *UpdatePlayerPassthroughCommand) String() string { func (*UpdatePlayerPassthroughCommand) ProtoMessage() {} func (x *UpdatePlayerPassthroughCommand) ProtoReflect() protoreflect.Message { - mi := &file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_msgTypes[16] + 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 { @@ -906,7 +959,7 @@ func (x *UpdatePlayerPassthroughCommand) ProtoReflect() protoreflect.Message { // 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{16} + return file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_rawDescGZIP(), []int{17} } func (x *UpdatePlayerPassthroughCommand) GetRequestID() string { @@ -934,7 +987,7 @@ type UpdateSessionPassthroughCommand struct { func (x *UpdateSessionPassthroughCommand) Reset() { *x = UpdateSessionPassthroughCommand{} - mi := &file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_msgTypes[17] + 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) } @@ -946,7 +999,7 @@ func (x *UpdateSessionPassthroughCommand) String() string { func (*UpdateSessionPassthroughCommand) ProtoMessage() {} func (x *UpdateSessionPassthroughCommand) ProtoReflect() protoreflect.Message { - mi := &file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_msgTypes[17] + 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 { @@ -959,7 +1012,7 @@ func (x *UpdateSessionPassthroughCommand) ProtoReflect() protoreflect.Message { // 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{17} + return file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_rawDescGZIP(), []int{18} } func (x *UpdateSessionPassthroughCommand) GetRequestID() string { @@ -1017,7 +1070,12 @@ const file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_rawDesc "\x11LeaveLobbyCommand\x12\x1c\n" + "\tRequestID\x18\x01 \x01(\tR\tRequestID\"3\n" + "\x17NotifySessionEndCommand\x12\x18\n" + - "\aLobbyID\x18\x01 \x01(\tR\aLobbyID\"I\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" + @@ -1036,7 +1094,7 @@ const file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_rawDesc "\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\x0fPassthroughDataBHZ;github.com/argus-labs/world-engine/pkg/plugin/lobby/gen;gen\xaa\x02\bcommandsb\x06proto3" + "\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 @@ -1050,7 +1108,7 @@ func file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_rawDescG 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, 18) +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 @@ -1064,20 +1122,22 @@ var file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_goTypes = (*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 - (*SetReadyCommand)(nil), // 12: github_com_argus_labs_world_engine_pkg_plugin_lobby_gen.SetReadyCommand - (*ShardAddress)(nil), // 13: github_com_argus_labs_world_engine_pkg_plugin_lobby_gen.ShardAddress - (*StartSessionCommand)(nil), // 14: github_com_argus_labs_world_engine_pkg_plugin_lobby_gen.StartSessionCommand - (*TransferLeaderCommand)(nil), // 15: github_com_argus_labs_world_engine_pkg_plugin_lobby_gen.TransferLeaderCommand - (*UpdatePlayerPassthroughCommand)(nil), // 16: github_com_argus_labs_world_engine_pkg_plugin_lobby_gen.UpdatePlayerPassthroughCommand - (*UpdateSessionPassthroughCommand)(nil), // 17: github_com_argus_labs_world_engine_pkg_plugin_lobby_gen.UpdateSessionPassthroughCommand + (*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{ - 13, // 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 - 1, // [1:1] is the sub-list for method output_type - 1, // [1:1] is the sub-list for method input_type - 1, // [1:1] is the sub-list for extension type_name - 1, // [1:1] is the sub-list for extension extendee - 0, // [0:1] is the sub-list for field type_name + 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() } @@ -1091,7 +1151,7 @@ func file_github_com_argus_labs_world_engine_pkg_plugin_lobby_gen_proto_init() { 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: 18, + NumMessages: 19, NumExtensions: 0, NumServices: 0, }, diff --git a/pkg/plugin/lobby/system/commands_wire.gen.go b/pkg/plugin/lobby/system/commands_wire.gen.go index 19c3084f9..f3d7ce810 100644 --- a/pkg/plugin/lobby/system/commands_wire.gen.go +++ b/pkg/plugin/lobby/system/commands_wire.gen.go @@ -10,25 +10,23 @@ import ( "google.golang.org/protobuf/proto" ) -func (c AssignShardCommand) toProto() *gen.AssignShardCommand { +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.GameWorld = c.GameWorld.ToProto() p.Reason = string(c.Reason) return p } -func assignShardCommandFromProto(p *gen.AssignShardCommand) AssignShardCommand { - var c AssignShardCommand +func (c *AssignShardCommand) FromProto(p *gen.AssignShardCommand) { if p == nil { - return c + return } c.LobbyID = string(p.LobbyID) c.RequestID = string(p.RequestID) - c.GameWorld = shardAddressFromProto(p.GameWorld) + c.GameWorld.FromProto(p.GameWorld) c.Reason = string(p.Reason) - return c } type assignShardCommandCodec struct{} @@ -38,7 +36,7 @@ func (assignShardCommandCodec) Marshal(p cardinal.Command) ([]byte, error) { if !ok { return nil, fmt.Errorf("expected AssignShardCommand, got %T", p) } - return proto.Marshal(c.toProto()) + return proto.Marshal(c.ToProto()) } func (assignShardCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) { @@ -46,10 +44,12 @@ func (assignShardCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) if err := proto.Unmarshal(data, &p); err != nil { return nil, err } - return assignShardCommandFromProto(&p), nil + var c AssignShardCommand + c.FromProto(&p) + return c, nil } -func (c CreateLobbyCommand) toProto() *gen.CreateLobbyCommand { +func (c CreateLobbyCommand) ToProto() *gen.CreateLobbyCommand { p := &gen.CreateLobbyCommand{} p.RequestID = string(c.RequestID) p.Preset = string(c.Preset) @@ -58,16 +58,14 @@ func (c CreateLobbyCommand) toProto() *gen.CreateLobbyCommand { return p } -func createLobbyCommandFromProto(p *gen.CreateLobbyCommand) CreateLobbyCommand { - var c CreateLobbyCommand +func (c *CreateLobbyCommand) FromProto(p *gen.CreateLobbyCommand) { if p == nil { - return c + return } 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{} @@ -77,7 +75,7 @@ func (createLobbyCommandCodec) Marshal(p cardinal.Command) ([]byte, error) { if !ok { return nil, fmt.Errorf("expected CreateLobbyCommand, got %T", p) } - return proto.Marshal(c.toProto()) + return proto.Marshal(c.ToProto()) } func (createLobbyCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) { @@ -85,22 +83,22 @@ func (createLobbyCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) if err := proto.Unmarshal(data, &p); err != nil { return nil, err } - return createLobbyCommandFromProto(&p), nil + var c CreateLobbyCommand + c.FromProto(&p) + return c, nil } -func (c GenerateInviteCodeCommand) toProto() *gen.GenerateInviteCodeCommand { +func (c GenerateInviteCodeCommand) ToProto() *gen.GenerateInviteCodeCommand { p := &gen.GenerateInviteCodeCommand{} p.RequestID = string(c.RequestID) return p } -func generateInviteCodeCommandFromProto(p *gen.GenerateInviteCodeCommand) GenerateInviteCodeCommand { - var c GenerateInviteCodeCommand +func (c *GenerateInviteCodeCommand) FromProto(p *gen.GenerateInviteCodeCommand) { if p == nil { - return c + return } c.RequestID = string(p.RequestID) - return c } type generateInviteCodeCommandCodec struct{} @@ -110,7 +108,7 @@ func (generateInviteCodeCommandCodec) Marshal(p cardinal.Command) ([]byte, error if !ok { return nil, fmt.Errorf("expected GenerateInviteCodeCommand, got %T", p) } - return proto.Marshal(c.toProto()) + return proto.Marshal(c.ToProto()) } func (generateInviteCodeCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) { @@ -118,22 +116,22 @@ func (generateInviteCodeCommandCodec) Unmarshal(data []byte) (cardinal.Command, if err := proto.Unmarshal(data, &p); err != nil { return nil, err } - return generateInviteCodeCommandFromProto(&p), nil + var c GenerateInviteCodeCommand + c.FromProto(&p) + return c, nil } -func (c GetAllPlayersCommand) toProto() *gen.GetAllPlayersCommand { +func (c GetAllPlayersCommand) ToProto() *gen.GetAllPlayersCommand { p := &gen.GetAllPlayersCommand{} p.RequestID = string(c.RequestID) return p } -func getAllPlayersCommandFromProto(p *gen.GetAllPlayersCommand) GetAllPlayersCommand { - var c GetAllPlayersCommand +func (c *GetAllPlayersCommand) FromProto(p *gen.GetAllPlayersCommand) { if p == nil { - return c + return } c.RequestID = string(p.RequestID) - return c } type getAllPlayersCommandCodec struct{} @@ -143,7 +141,7 @@ func (getAllPlayersCommandCodec) Marshal(p cardinal.Command) ([]byte, error) { if !ok { return nil, fmt.Errorf("expected GetAllPlayersCommand, got %T", p) } - return proto.Marshal(c.toProto()) + return proto.Marshal(c.ToProto()) } func (getAllPlayersCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) { @@ -151,22 +149,22 @@ func (getAllPlayersCommandCodec) Unmarshal(data []byte) (cardinal.Command, error if err := proto.Unmarshal(data, &p); err != nil { return nil, err } - return getAllPlayersCommandFromProto(&p), nil + var c GetAllPlayersCommand + c.FromProto(&p) + return c, nil } -func (c GetLobbyCommand) toProto() *gen.GetLobbyCommand { +func (c GetLobbyCommand) ToProto() *gen.GetLobbyCommand { p := &gen.GetLobbyCommand{} p.RequestID = string(c.RequestID) return p } -func getLobbyCommandFromProto(p *gen.GetLobbyCommand) GetLobbyCommand { - var c GetLobbyCommand +func (c *GetLobbyCommand) FromProto(p *gen.GetLobbyCommand) { if p == nil { - return c + return } c.RequestID = string(p.RequestID) - return c } type getLobbyCommandCodec struct{} @@ -176,7 +174,7 @@ func (getLobbyCommandCodec) Marshal(p cardinal.Command) ([]byte, error) { if !ok { return nil, fmt.Errorf("expected GetLobbyCommand, got %T", p) } - return proto.Marshal(c.toProto()) + return proto.Marshal(c.ToProto()) } func (getLobbyCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) { @@ -184,24 +182,24 @@ func (getLobbyCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) { if err := proto.Unmarshal(data, &p); err != nil { return nil, err } - return getLobbyCommandFromProto(&p), nil + var c GetLobbyCommand + c.FromProto(&p) + return c, nil } -func (c GetPlayerCommand) toProto() *gen.GetPlayerCommand { +func (c GetPlayerCommand) ToProto() *gen.GetPlayerCommand { p := &gen.GetPlayerCommand{} p.RequestID = string(c.RequestID) p.PlayerID = string(c.PlayerID) return p } -func getPlayerCommandFromProto(p *gen.GetPlayerCommand) GetPlayerCommand { - var c GetPlayerCommand +func (c *GetPlayerCommand) FromProto(p *gen.GetPlayerCommand) { if p == nil { - return c + return } c.RequestID = string(p.RequestID) c.PlayerID = string(p.PlayerID) - return c } type getPlayerCommandCodec struct{} @@ -211,7 +209,7 @@ func (getPlayerCommandCodec) Marshal(p cardinal.Command) ([]byte, error) { if !ok { return nil, fmt.Errorf("expected GetPlayerCommand, got %T", p) } - return proto.Marshal(c.toProto()) + return proto.Marshal(c.ToProto()) } func (getPlayerCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) { @@ -219,20 +217,20 @@ func (getPlayerCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) { if err := proto.Unmarshal(data, &p); err != nil { return nil, err } - return getPlayerCommandFromProto(&p), nil + var c GetPlayerCommand + c.FromProto(&p) + return c, nil } -func (c HeartbeatCommand) toProto() *gen.HeartbeatCommand { +func (c HeartbeatCommand) ToProto() *gen.HeartbeatCommand { p := &gen.HeartbeatCommand{} return p } -func heartbeatCommandFromProto(p *gen.HeartbeatCommand) HeartbeatCommand { - var c HeartbeatCommand +func (c *HeartbeatCommand) FromProto(p *gen.HeartbeatCommand) { if p == nil { - return c + return } - return c } type heartbeatCommandCodec struct{} @@ -242,7 +240,7 @@ func (heartbeatCommandCodec) Marshal(p cardinal.Command) ([]byte, error) { if !ok { return nil, fmt.Errorf("expected HeartbeatCommand, got %T", p) } - return proto.Marshal(c.toProto()) + return proto.Marshal(c.ToProto()) } func (heartbeatCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) { @@ -250,10 +248,12 @@ func (heartbeatCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) { if err := proto.Unmarshal(data, &p); err != nil { return nil, err } - return heartbeatCommandFromProto(&p), nil + var c HeartbeatCommand + c.FromProto(&p) + return c, nil } -func (c JoinLobbyCommand) toProto() *gen.JoinLobbyCommand { +func (c JoinLobbyCommand) ToProto() *gen.JoinLobbyCommand { p := &gen.JoinLobbyCommand{} p.RequestID = string(c.RequestID) p.InviteCode = string(c.InviteCode) @@ -262,16 +262,14 @@ func (c JoinLobbyCommand) toProto() *gen.JoinLobbyCommand { return p } -func joinLobbyCommandFromProto(p *gen.JoinLobbyCommand) JoinLobbyCommand { - var c JoinLobbyCommand +func (c *JoinLobbyCommand) FromProto(p *gen.JoinLobbyCommand) { if p == nil { - return c + return } 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{} @@ -281,7 +279,7 @@ func (joinLobbyCommandCodec) Marshal(p cardinal.Command) ([]byte, error) { if !ok { return nil, fmt.Errorf("expected JoinLobbyCommand, got %T", p) } - return proto.Marshal(c.toProto()) + return proto.Marshal(c.ToProto()) } func (joinLobbyCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) { @@ -289,24 +287,24 @@ func (joinLobbyCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) { if err := proto.Unmarshal(data, &p); err != nil { return nil, err } - return joinLobbyCommandFromProto(&p), nil + var c JoinLobbyCommand + c.FromProto(&p) + return c, nil } -func (c JoinTeamCommand) toProto() *gen.JoinTeamCommand { +func (c JoinTeamCommand) ToProto() *gen.JoinTeamCommand { p := &gen.JoinTeamCommand{} p.RequestID = string(c.RequestID) p.TeamID = string(c.TeamID) return p } -func joinTeamCommandFromProto(p *gen.JoinTeamCommand) JoinTeamCommand { - var c JoinTeamCommand +func (c *JoinTeamCommand) FromProto(p *gen.JoinTeamCommand) { if p == nil { - return c + return } c.RequestID = string(p.RequestID) c.TeamID = string(p.TeamID) - return c } type joinTeamCommandCodec struct{} @@ -316,7 +314,7 @@ func (joinTeamCommandCodec) Marshal(p cardinal.Command) ([]byte, error) { if !ok { return nil, fmt.Errorf("expected JoinTeamCommand, got %T", p) } - return proto.Marshal(c.toProto()) + return proto.Marshal(c.ToProto()) } func (joinTeamCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) { @@ -324,24 +322,24 @@ func (joinTeamCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) { if err := proto.Unmarshal(data, &p); err != nil { return nil, err } - return joinTeamCommandFromProto(&p), nil + var c JoinTeamCommand + c.FromProto(&p) + return c, nil } -func (c KickPlayerCommand) toProto() *gen.KickPlayerCommand { +func (c KickPlayerCommand) ToProto() *gen.KickPlayerCommand { p := &gen.KickPlayerCommand{} p.RequestID = string(c.RequestID) p.TargetPlayerID = string(c.TargetPlayerID) return p } -func kickPlayerCommandFromProto(p *gen.KickPlayerCommand) KickPlayerCommand { - var c KickPlayerCommand +func (c *KickPlayerCommand) FromProto(p *gen.KickPlayerCommand) { if p == nil { - return c + return } c.RequestID = string(p.RequestID) c.TargetPlayerID = string(p.TargetPlayerID) - return c } type kickPlayerCommandCodec struct{} @@ -351,7 +349,7 @@ func (kickPlayerCommandCodec) Marshal(p cardinal.Command) ([]byte, error) { if !ok { return nil, fmt.Errorf("expected KickPlayerCommand, got %T", p) } - return proto.Marshal(c.toProto()) + return proto.Marshal(c.ToProto()) } func (kickPlayerCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) { @@ -359,22 +357,22 @@ func (kickPlayerCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) { if err := proto.Unmarshal(data, &p); err != nil { return nil, err } - return kickPlayerCommandFromProto(&p), nil + var c KickPlayerCommand + c.FromProto(&p) + return c, nil } -func (c LeaveLobbyCommand) toProto() *gen.LeaveLobbyCommand { +func (c LeaveLobbyCommand) ToProto() *gen.LeaveLobbyCommand { p := &gen.LeaveLobbyCommand{} p.RequestID = string(c.RequestID) return p } -func leaveLobbyCommandFromProto(p *gen.LeaveLobbyCommand) LeaveLobbyCommand { - var c LeaveLobbyCommand +func (c *LeaveLobbyCommand) FromProto(p *gen.LeaveLobbyCommand) { if p == nil { - return c + return } c.RequestID = string(p.RequestID) - return c } type leaveLobbyCommandCodec struct{} @@ -384,7 +382,7 @@ func (leaveLobbyCommandCodec) Marshal(p cardinal.Command) ([]byte, error) { if !ok { return nil, fmt.Errorf("expected LeaveLobbyCommand, got %T", p) } - return proto.Marshal(c.toProto()) + return proto.Marshal(c.ToProto()) } func (leaveLobbyCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) { @@ -392,22 +390,22 @@ func (leaveLobbyCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) { if err := proto.Unmarshal(data, &p); err != nil { return nil, err } - return leaveLobbyCommandFromProto(&p), nil + var c LeaveLobbyCommand + c.FromProto(&p) + return c, nil } -func (c NotifySessionEndCommand) toProto() *gen.NotifySessionEndCommand { +func (c NotifySessionEndCommand) ToProto() *gen.NotifySessionEndCommand { p := &gen.NotifySessionEndCommand{} p.LobbyID = string(c.LobbyID) return p } -func notifySessionEndCommandFromProto(p *gen.NotifySessionEndCommand) NotifySessionEndCommand { - var c NotifySessionEndCommand +func (c *NotifySessionEndCommand) FromProto(p *gen.NotifySessionEndCommand) { if p == nil { - return c + return } c.LobbyID = string(p.LobbyID) - return c } type notifySessionEndCommandCodec struct{} @@ -417,7 +415,7 @@ func (notifySessionEndCommandCodec) Marshal(p cardinal.Command) ([]byte, error) if !ok { return nil, fmt.Errorf("expected NotifySessionEndCommand, got %T", p) } - return proto.Marshal(c.toProto()) + return proto.Marshal(c.ToProto()) } func (notifySessionEndCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) { @@ -425,24 +423,59 @@ func (notifySessionEndCommandCodec) Unmarshal(data []byte) (cardinal.Command, er if err := proto.Unmarshal(data, &p); err != nil { return nil, err } - return notifySessionEndCommandFromProto(&p), nil + var c NotifySessionEndCommand + c.FromProto(&p) + return c, nil } -func (c SetReadyCommand) toProto() *gen.SetReadyCommand { +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) { + if p == nil { + return + } + c.LobbyID = string(p.LobbyID) + c.LobbyWorld.FromProto(p.LobbyWorld) +} + +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.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 setReadyCommandFromProto(p *gen.SetReadyCommand) SetReadyCommand { - var c SetReadyCommand +func (c *SetReadyCommand) FromProto(p *gen.SetReadyCommand) { if p == nil { - return c + return } c.RequestID = string(p.RequestID) c.IsReady = bool(p.IsReady) - return c } type setReadyCommandCodec struct{} @@ -452,7 +485,7 @@ func (setReadyCommandCodec) Marshal(p cardinal.Command) ([]byte, error) { if !ok { return nil, fmt.Errorf("expected SetReadyCommand, got %T", p) } - return proto.Marshal(c.toProto()) + return proto.Marshal(c.ToProto()) } func (setReadyCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) { @@ -460,10 +493,12 @@ func (setReadyCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) { if err := proto.Unmarshal(data, &p); err != nil { return nil, err } - return setReadyCommandFromProto(&p), nil + var c SetReadyCommand + c.FromProto(&p) + return c, nil } -func (c ShardAddress) toProto() *gen.ShardAddress { +func (c ShardAddress) ToProto() *gen.ShardAddress { p := &gen.ShardAddress{} p.Region = string(c.Region) p.Organization = string(c.Organization) @@ -472,31 +507,27 @@ func (c ShardAddress) toProto() *gen.ShardAddress { return p } -func shardAddressFromProto(p *gen.ShardAddress) ShardAddress { - var c ShardAddress +func (c *ShardAddress) FromProto(p *gen.ShardAddress) { if p == nil { - return c + return } 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 { +func (c StartSessionCommand) ToProto() *gen.StartSessionCommand { p := &gen.StartSessionCommand{} p.RequestID = string(c.RequestID) return p } -func startSessionCommandFromProto(p *gen.StartSessionCommand) StartSessionCommand { - var c StartSessionCommand +func (c *StartSessionCommand) FromProto(p *gen.StartSessionCommand) { if p == nil { - return c + return } c.RequestID = string(p.RequestID) - return c } type startSessionCommandCodec struct{} @@ -506,7 +537,7 @@ func (startSessionCommandCodec) Marshal(p cardinal.Command) ([]byte, error) { if !ok { return nil, fmt.Errorf("expected StartSessionCommand, got %T", p) } - return proto.Marshal(c.toProto()) + return proto.Marshal(c.ToProto()) } func (startSessionCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) { @@ -514,24 +545,24 @@ func (startSessionCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) if err := proto.Unmarshal(data, &p); err != nil { return nil, err } - return startSessionCommandFromProto(&p), nil + var c StartSessionCommand + c.FromProto(&p) + return c, nil } -func (c TransferLeaderCommand) toProto() *gen.TransferLeaderCommand { +func (c TransferLeaderCommand) ToProto() *gen.TransferLeaderCommand { p := &gen.TransferLeaderCommand{} p.RequestID = string(c.RequestID) p.TargetPlayerID = string(c.TargetPlayerID) return p } -func transferLeaderCommandFromProto(p *gen.TransferLeaderCommand) TransferLeaderCommand { - var c TransferLeaderCommand +func (c *TransferLeaderCommand) FromProto(p *gen.TransferLeaderCommand) { if p == nil { - return c + return } c.RequestID = string(p.RequestID) c.TargetPlayerID = string(p.TargetPlayerID) - return c } type transferLeaderCommandCodec struct{} @@ -541,7 +572,7 @@ func (transferLeaderCommandCodec) Marshal(p cardinal.Command) ([]byte, error) { if !ok { return nil, fmt.Errorf("expected TransferLeaderCommand, got %T", p) } - return proto.Marshal(c.toProto()) + return proto.Marshal(c.ToProto()) } func (transferLeaderCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) { @@ -549,24 +580,24 @@ func (transferLeaderCommandCodec) Unmarshal(data []byte) (cardinal.Command, erro if err := proto.Unmarshal(data, &p); err != nil { return nil, err } - return transferLeaderCommandFromProto(&p), nil + var c TransferLeaderCommand + c.FromProto(&p) + return c, nil } -func (c UpdatePlayerPassthroughCommand) toProto() *gen.UpdatePlayerPassthroughCommand { +func (c UpdatePlayerPassthroughCommand) ToProto() *gen.UpdatePlayerPassthroughCommand { p := &gen.UpdatePlayerPassthroughCommand{} p.RequestID = string(c.RequestID) p.PassthroughData = []byte(c.PassthroughData) return p } -func updatePlayerPassthroughCommandFromProto(p *gen.UpdatePlayerPassthroughCommand) UpdatePlayerPassthroughCommand { - var c UpdatePlayerPassthroughCommand +func (c *UpdatePlayerPassthroughCommand) FromProto(p *gen.UpdatePlayerPassthroughCommand) { if p == nil { - return c + return } c.RequestID = string(p.RequestID) c.PassthroughData = []byte(p.PassthroughData) - return c } type updatePlayerPassthroughCommandCodec struct{} @@ -576,7 +607,7 @@ func (updatePlayerPassthroughCommandCodec) Marshal(p cardinal.Command) ([]byte, if !ok { return nil, fmt.Errorf("expected UpdatePlayerPassthroughCommand, got %T", p) } - return proto.Marshal(c.toProto()) + return proto.Marshal(c.ToProto()) } func (updatePlayerPassthroughCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) { @@ -584,24 +615,24 @@ func (updatePlayerPassthroughCommandCodec) Unmarshal(data []byte) (cardinal.Comm if err := proto.Unmarshal(data, &p); err != nil { return nil, err } - return updatePlayerPassthroughCommandFromProto(&p), nil + var c UpdatePlayerPassthroughCommand + c.FromProto(&p) + return c, nil } -func (c UpdateSessionPassthroughCommand) toProto() *gen.UpdateSessionPassthroughCommand { +func (c UpdateSessionPassthroughCommand) ToProto() *gen.UpdateSessionPassthroughCommand { p := &gen.UpdateSessionPassthroughCommand{} p.RequestID = string(c.RequestID) p.PassthroughData = []byte(c.PassthroughData) return p } -func updateSessionPassthroughCommandFromProto(p *gen.UpdateSessionPassthroughCommand) UpdateSessionPassthroughCommand { - var c UpdateSessionPassthroughCommand +func (c *UpdateSessionPassthroughCommand) FromProto(p *gen.UpdateSessionPassthroughCommand) { if p == nil { - return c + return } c.RequestID = string(p.RequestID) c.PassthroughData = []byte(p.PassthroughData) - return c } type updateSessionPassthroughCommandCodec struct{} @@ -611,7 +642,7 @@ func (updateSessionPassthroughCommandCodec) Marshal(p cardinal.Command) ([]byte, if !ok { return nil, fmt.Errorf("expected UpdateSessionPassthroughCommand, got %T", p) } - return proto.Marshal(c.toProto()) + return proto.Marshal(c.ToProto()) } func (updateSessionPassthroughCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) { @@ -619,7 +650,9 @@ func (updateSessionPassthroughCommandCodec) Unmarshal(data []byte) (cardinal.Com if err := proto.Unmarshal(data, &p); err != nil { return nil, err } - return updateSessionPassthroughCommandFromProto(&p), nil + var c UpdateSessionPassthroughCommand + c.FromProto(&p) + return c, nil } func init() { @@ -635,6 +668,7 @@ func init() { 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{}) diff --git a/pkg/plugin/lobby/system/lobby.go b/pkg/plugin/lobby/system/lobby.go index a29e65943..8048c6a08 100644 --- a/pkg/plugin/lobby/system/lobby.go +++ b/pkg/plugin/lobby/system/lobby.go @@ -491,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. @@ -534,6 +536,12 @@ type ShardAddress struct { 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"` @@ -1921,12 +1929,9 @@ func dispatchSessionStart( 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). From 424c0ddaf806fd7a10f0b3a45c8585e12f69dba5 Mon Sep 17 00:00:00 2001 From: winton-library <52289105+winton-library@users.noreply.github.com> Date: Sun, 14 Jun 2026 21:36:14 +0700 Subject: [PATCH 4/9] refactor(cardinal): remove hard validation on proto for required message --- .../gen/csharp/WorldEngine/Proto/Isc/V1/Command.cs | 14 +++++++------- proto/gen/go/worldengine/isc/v1/command.pb.go | 9 +++++---- proto/gen/ts/worldengine/isc/v1/command_pb.ts | 5 +++-- proto/worldengine/isc/v1/command.proto | 5 +++-- 4 files changed, 18 insertions(+), 15 deletions(-) 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; } From acdf504b89b56756a4318473b5a8fbc71954eed6 Mon Sep 17 00:00:00 2001 From: winton-library <52289105+winton-library@users.noreply.github.com> Date: Mon, 15 Jun 2026 01:49:43 +0700 Subject: [PATCH 5/9] chore(dep): bump up the telemetry version to match monorepo --- go.mod | 33 ++++++++++---------- go.sum | 70 ++++++++++++++++++++---------------------- pkg/telemetry/setup.go | 2 +- 3 files changed, 51 insertions(+), 54 deletions(-) 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/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" ) From 8903217d579e217400b6bbaed71116c4604270db Mon Sep 17 00:00:00 2001 From: winton-library <52289105+winton-library@users.noreply.github.com> Date: Mon, 15 Jun 2026 05:32:01 +0700 Subject: [PATCH 6/9] feat(cardinal): remove validation for required --- pkg/cardinal/internal/command/command.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkg/cardinal/internal/command/command.go b/pkg/cardinal/internal/command/command.go index c0a5235cb..297c83471 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 From ff7058e5216e82697f0a3724b50451f495480d74 Mon Sep 17 00:00:00 2001 From: winton-library <52289105+winton-library@users.noreply.github.com> Date: Tue, 16 Jun 2026 08:39:41 +0700 Subject: [PATCH 7/9] chore(cardinal,lobby): fix ci lint --- pkg/cardinal/cardinal.go | 5 + pkg/cardinal/internal/command/codec.go | 33 ++++- pkg/cardinal/internal/command/command.go | 4 +- .../internal/command/roundtrip_test.go | 55 +++++++ pkg/plugin/lobby/system/commands_wire.gen.go | 135 ++++++++++-------- pkg/plugin/lobby/system/lobby.go | 81 +++++++---- .../lobby/system/lobby_internal_test.go | 44 ------ 7 files changed, 223 insertions(+), 134 deletions(-) create mode 100644 pkg/cardinal/internal/command/roundtrip_test.go 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/internal/command/codec.go b/pkg/cardinal/internal/command/codec.go index b934f619f..bc9fbe3dc 100644 --- a/pkg/cardinal/internal/command/codec.go +++ b/pkg/cardinal/internal/command/codec.go @@ -1,6 +1,10 @@ package command -import "github.com/rotisserie/eris" +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 @@ -17,8 +21,35 @@ type Codec interface { //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 } diff --git a/pkg/cardinal/internal/command/command.go b/pkg/cardinal/internal/command/command.go index 297c83471..4087136e1 100644 --- a/pkg/cardinal/internal/command/command.go +++ b/pkg/cardinal/internal/command/command.go @@ -157,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/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/plugin/lobby/system/commands_wire.gen.go b/pkg/plugin/lobby/system/commands_wire.gen.go index f3d7ce810..0e121e4c8 100644 --- a/pkg/plugin/lobby/system/commands_wire.gen.go +++ b/pkg/plugin/lobby/system/commands_wire.gen.go @@ -19,14 +19,15 @@ func (c AssignShardCommand) ToProto() *gen.AssignShardCommand { return p } -func (c *AssignShardCommand) FromProto(p *gen.AssignShardCommand) { +func (c AssignShardCommand) FromProto(p *gen.AssignShardCommand) AssignShardCommand { if p == nil { - return + return c } c.LobbyID = string(p.LobbyID) c.RequestID = string(p.RequestID) - c.GameWorld.FromProto(p.GameWorld) + c.GameWorld = c.GameWorld.FromProto(p.GameWorld) c.Reason = string(p.Reason) + return c } type assignShardCommandCodec struct{} @@ -45,7 +46,7 @@ func (assignShardCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) return nil, err } var c AssignShardCommand - c.FromProto(&p) + c = c.FromProto(&p) return c, nil } @@ -58,14 +59,15 @@ func (c CreateLobbyCommand) ToProto() *gen.CreateLobbyCommand { return p } -func (c *CreateLobbyCommand) FromProto(p *gen.CreateLobbyCommand) { +func (c CreateLobbyCommand) FromProto(p *gen.CreateLobbyCommand) CreateLobbyCommand { if p == nil { - return + 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{} @@ -84,7 +86,7 @@ func (createLobbyCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) return nil, err } var c CreateLobbyCommand - c.FromProto(&p) + c = c.FromProto(&p) return c, nil } @@ -94,11 +96,12 @@ func (c GenerateInviteCodeCommand) ToProto() *gen.GenerateInviteCodeCommand { return p } -func (c *GenerateInviteCodeCommand) FromProto(p *gen.GenerateInviteCodeCommand) { +func (c GenerateInviteCodeCommand) FromProto(p *gen.GenerateInviteCodeCommand) GenerateInviteCodeCommand { if p == nil { - return + return c } c.RequestID = string(p.RequestID) + return c } type generateInviteCodeCommandCodec struct{} @@ -117,7 +120,7 @@ func (generateInviteCodeCommandCodec) Unmarshal(data []byte) (cardinal.Command, return nil, err } var c GenerateInviteCodeCommand - c.FromProto(&p) + c = c.FromProto(&p) return c, nil } @@ -127,11 +130,12 @@ func (c GetAllPlayersCommand) ToProto() *gen.GetAllPlayersCommand { return p } -func (c *GetAllPlayersCommand) FromProto(p *gen.GetAllPlayersCommand) { +func (c GetAllPlayersCommand) FromProto(p *gen.GetAllPlayersCommand) GetAllPlayersCommand { if p == nil { - return + return c } c.RequestID = string(p.RequestID) + return c } type getAllPlayersCommandCodec struct{} @@ -150,7 +154,7 @@ func (getAllPlayersCommandCodec) Unmarshal(data []byte) (cardinal.Command, error return nil, err } var c GetAllPlayersCommand - c.FromProto(&p) + c = c.FromProto(&p) return c, nil } @@ -160,11 +164,12 @@ func (c GetLobbyCommand) ToProto() *gen.GetLobbyCommand { return p } -func (c *GetLobbyCommand) FromProto(p *gen.GetLobbyCommand) { +func (c GetLobbyCommand) FromProto(p *gen.GetLobbyCommand) GetLobbyCommand { if p == nil { - return + return c } c.RequestID = string(p.RequestID) + return c } type getLobbyCommandCodec struct{} @@ -183,7 +188,7 @@ func (getLobbyCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) { return nil, err } var c GetLobbyCommand - c.FromProto(&p) + c = c.FromProto(&p) return c, nil } @@ -194,12 +199,13 @@ func (c GetPlayerCommand) ToProto() *gen.GetPlayerCommand { return p } -func (c *GetPlayerCommand) FromProto(p *gen.GetPlayerCommand) { +func (c GetPlayerCommand) FromProto(p *gen.GetPlayerCommand) GetPlayerCommand { if p == nil { - return + return c } c.RequestID = string(p.RequestID) c.PlayerID = string(p.PlayerID) + return c } type getPlayerCommandCodec struct{} @@ -218,7 +224,7 @@ func (getPlayerCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) { return nil, err } var c GetPlayerCommand - c.FromProto(&p) + c = c.FromProto(&p) return c, nil } @@ -227,10 +233,11 @@ func (c HeartbeatCommand) ToProto() *gen.HeartbeatCommand { return p } -func (c *HeartbeatCommand) FromProto(p *gen.HeartbeatCommand) { +func (c HeartbeatCommand) FromProto(p *gen.HeartbeatCommand) HeartbeatCommand { if p == nil { - return + return c } + return c } type heartbeatCommandCodec struct{} @@ -249,7 +256,7 @@ func (heartbeatCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) { return nil, err } var c HeartbeatCommand - c.FromProto(&p) + c = c.FromProto(&p) return c, nil } @@ -262,14 +269,15 @@ func (c JoinLobbyCommand) ToProto() *gen.JoinLobbyCommand { return p } -func (c *JoinLobbyCommand) FromProto(p *gen.JoinLobbyCommand) { +func (c JoinLobbyCommand) FromProto(p *gen.JoinLobbyCommand) JoinLobbyCommand { if p == nil { - return + 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{} @@ -288,7 +296,7 @@ func (joinLobbyCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) { return nil, err } var c JoinLobbyCommand - c.FromProto(&p) + c = c.FromProto(&p) return c, nil } @@ -299,12 +307,13 @@ func (c JoinTeamCommand) ToProto() *gen.JoinTeamCommand { return p } -func (c *JoinTeamCommand) FromProto(p *gen.JoinTeamCommand) { +func (c JoinTeamCommand) FromProto(p *gen.JoinTeamCommand) JoinTeamCommand { if p == nil { - return + return c } c.RequestID = string(p.RequestID) c.TeamID = string(p.TeamID) + return c } type joinTeamCommandCodec struct{} @@ -323,7 +332,7 @@ func (joinTeamCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) { return nil, err } var c JoinTeamCommand - c.FromProto(&p) + c = c.FromProto(&p) return c, nil } @@ -334,12 +343,13 @@ func (c KickPlayerCommand) ToProto() *gen.KickPlayerCommand { return p } -func (c *KickPlayerCommand) FromProto(p *gen.KickPlayerCommand) { +func (c KickPlayerCommand) FromProto(p *gen.KickPlayerCommand) KickPlayerCommand { if p == nil { - return + return c } c.RequestID = string(p.RequestID) c.TargetPlayerID = string(p.TargetPlayerID) + return c } type kickPlayerCommandCodec struct{} @@ -358,7 +368,7 @@ func (kickPlayerCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) { return nil, err } var c KickPlayerCommand - c.FromProto(&p) + c = c.FromProto(&p) return c, nil } @@ -368,11 +378,12 @@ func (c LeaveLobbyCommand) ToProto() *gen.LeaveLobbyCommand { return p } -func (c *LeaveLobbyCommand) FromProto(p *gen.LeaveLobbyCommand) { +func (c LeaveLobbyCommand) FromProto(p *gen.LeaveLobbyCommand) LeaveLobbyCommand { if p == nil { - return + return c } c.RequestID = string(p.RequestID) + return c } type leaveLobbyCommandCodec struct{} @@ -391,7 +402,7 @@ func (leaveLobbyCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) { return nil, err } var c LeaveLobbyCommand - c.FromProto(&p) + c = c.FromProto(&p) return c, nil } @@ -401,11 +412,12 @@ func (c NotifySessionEndCommand) ToProto() *gen.NotifySessionEndCommand { return p } -func (c *NotifySessionEndCommand) FromProto(p *gen.NotifySessionEndCommand) { +func (c NotifySessionEndCommand) FromProto(p *gen.NotifySessionEndCommand) NotifySessionEndCommand { if p == nil { - return + return c } c.LobbyID = string(p.LobbyID) + return c } type notifySessionEndCommandCodec struct{} @@ -424,7 +436,7 @@ func (notifySessionEndCommandCodec) Unmarshal(data []byte) (cardinal.Command, er return nil, err } var c NotifySessionEndCommand - c.FromProto(&p) + c = c.FromProto(&p) return c, nil } @@ -435,12 +447,13 @@ func (c NotifySessionStartCommand) ToProto() *gen.NotifySessionStartCommand { return p } -func (c *NotifySessionStartCommand) FromProto(p *gen.NotifySessionStartCommand) { +func (c NotifySessionStartCommand) FromProto(p *gen.NotifySessionStartCommand) NotifySessionStartCommand { if p == nil { - return + return c } c.LobbyID = string(p.LobbyID) - c.LobbyWorld.FromProto(p.LobbyWorld) + c.LobbyWorld = c.LobbyWorld.FromProto(p.LobbyWorld) + return c } type notifySessionStartCommandCodec struct{} @@ -459,7 +472,7 @@ func (notifySessionStartCommandCodec) Unmarshal(data []byte) (cardinal.Command, return nil, err } var c NotifySessionStartCommand - c.FromProto(&p) + c = c.FromProto(&p) return c, nil } @@ -470,12 +483,13 @@ func (c SetReadyCommand) ToProto() *gen.SetReadyCommand { return p } -func (c *SetReadyCommand) FromProto(p *gen.SetReadyCommand) { +func (c SetReadyCommand) FromProto(p *gen.SetReadyCommand) SetReadyCommand { if p == nil { - return + return c } c.RequestID = string(p.RequestID) c.IsReady = bool(p.IsReady) + return c } type setReadyCommandCodec struct{} @@ -494,7 +508,7 @@ func (setReadyCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) { return nil, err } var c SetReadyCommand - c.FromProto(&p) + c = c.FromProto(&p) return c, nil } @@ -507,14 +521,15 @@ func (c ShardAddress) ToProto() *gen.ShardAddress { return p } -func (c *ShardAddress) FromProto(p *gen.ShardAddress) { +func (c ShardAddress) FromProto(p *gen.ShardAddress) ShardAddress { if p == nil { - return + 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 { @@ -523,11 +538,12 @@ func (c StartSessionCommand) ToProto() *gen.StartSessionCommand { return p } -func (c *StartSessionCommand) FromProto(p *gen.StartSessionCommand) { +func (c StartSessionCommand) FromProto(p *gen.StartSessionCommand) StartSessionCommand { if p == nil { - return + return c } c.RequestID = string(p.RequestID) + return c } type startSessionCommandCodec struct{} @@ -546,7 +562,7 @@ func (startSessionCommandCodec) Unmarshal(data []byte) (cardinal.Command, error) return nil, err } var c StartSessionCommand - c.FromProto(&p) + c = c.FromProto(&p) return c, nil } @@ -557,12 +573,13 @@ func (c TransferLeaderCommand) ToProto() *gen.TransferLeaderCommand { return p } -func (c *TransferLeaderCommand) FromProto(p *gen.TransferLeaderCommand) { +func (c TransferLeaderCommand) FromProto(p *gen.TransferLeaderCommand) TransferLeaderCommand { if p == nil { - return + return c } c.RequestID = string(p.RequestID) c.TargetPlayerID = string(p.TargetPlayerID) + return c } type transferLeaderCommandCodec struct{} @@ -581,7 +598,7 @@ func (transferLeaderCommandCodec) Unmarshal(data []byte) (cardinal.Command, erro return nil, err } var c TransferLeaderCommand - c.FromProto(&p) + c = c.FromProto(&p) return c, nil } @@ -592,12 +609,13 @@ func (c UpdatePlayerPassthroughCommand) ToProto() *gen.UpdatePlayerPassthroughCo return p } -func (c *UpdatePlayerPassthroughCommand) FromProto(p *gen.UpdatePlayerPassthroughCommand) { +func (c UpdatePlayerPassthroughCommand) FromProto(p *gen.UpdatePlayerPassthroughCommand) UpdatePlayerPassthroughCommand { if p == nil { - return + return c } c.RequestID = string(p.RequestID) c.PassthroughData = []byte(p.PassthroughData) + return c } type updatePlayerPassthroughCommandCodec struct{} @@ -616,7 +634,7 @@ func (updatePlayerPassthroughCommandCodec) Unmarshal(data []byte) (cardinal.Comm return nil, err } var c UpdatePlayerPassthroughCommand - c.FromProto(&p) + c = c.FromProto(&p) return c, nil } @@ -627,12 +645,13 @@ func (c UpdateSessionPassthroughCommand) ToProto() *gen.UpdateSessionPassthrough return p } -func (c *UpdateSessionPassthroughCommand) FromProto(p *gen.UpdateSessionPassthroughCommand) { +func (c UpdateSessionPassthroughCommand) FromProto(p *gen.UpdateSessionPassthroughCommand) UpdateSessionPassthroughCommand { if p == nil { - return + return c } c.RequestID = string(p.RequestID) c.PassthroughData = []byte(p.PassthroughData) + return c } type updateSessionPassthroughCommandCodec struct{} @@ -651,7 +670,7 @@ func (updateSessionPassthroughCommandCodec) Unmarshal(data []byte) (cardinal.Com return nil, err } var c UpdateSessionPassthroughCommand - c.FromProto(&p) + c = c.FromProto(&p) return c, nil } diff --git a/pkg/plugin/lobby/system/lobby.go b/pkg/plugin/lobby/system/lobby.go index 8048c6a08..6cac9f83d 100644 --- a/pkg/plugin/lobby/system/lobby.go +++ b/pkg/plugin/lobby/system/lobby.go @@ -885,18 +885,34 @@ 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 or malformed input yields a nil map; the -// passthrough is best-effort forwarded data, not something the lobby validates. -func DecodePassthrough(b []byte) map[string]any { +// 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 nil + return m, nil // absent passthrough: nil map, no error } - var m map[string]any if err := json.Unmarshal(b, &m); err != nil { - return nil + return nil, err } - return m + 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. @@ -1155,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 } @@ -1167,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: DecodePassthrough(payload.SessionPassthroughData), + PassthroughData: sessionPassthrough, }, CreatedAt: now, } @@ -1184,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 { @@ -1202,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 @@ -1219,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, DecodePassthrough(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) @@ -1318,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, DecodePassthrough(payload.PlayerPassthroughData), now, + state, playerID, lobbyID, targetTeam.TeamID, playerPassthrough, now, ) lobbyIndex.AddPlayerToLobby(playerID, lobbyID, targetTeam.TeamID, uint32(playerEntityID), now+timeout) @@ -1923,7 +1939,6 @@ 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, @@ -2018,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, @@ -2208,7 +2223,11 @@ func processUpdateSessionPassthroughCommands(state *LobbySystemState, lobbyIndex continue } - lobby.Session.PassthroughData = DecodePassthrough(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(). @@ -2267,7 +2286,11 @@ func processUpdatePlayerPassthroughCommands(state *LobbySystemState, lobbyIndex } playerComp := playerEntity.Player.Get() - playerComp.PassthroughData = DecodePassthrough(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 4aac08353..81ec32206 100644 --- a/pkg/plugin/lobby/system/lobby_internal_test.go +++ b/pkg/plugin/lobby/system/lobby_internal_test.go @@ -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() From 2c5d8164d29d84b8256aaa31db6031ec178c822e Mon Sep 17 00:00:00 2001 From: winton-library <52289105+winton-library@users.noreply.github.com> Date: Wed, 24 Jun 2026 05:54:32 +0700 Subject: [PATCH 8/9] feat(template): update template example to use autogen --- pkg/template/basic/shards/game/gen/doc.gen.go | 2 + ...e_pkg_template_basic_shards_game_gen.pb.go | 230 +++++++++++++++ .../shards/game/system/commands_wire.gen.go | 121 ++++++++ .../shards/chat/command/commands_wire.gen.go | 53 ++++ .../multi-shard/shards/chat/gen/doc.gen.go | 2 + ...template_multi_shard_shards_chat_gen.pb.go | 145 ++++++++++ .../shards/game/command/commands_wire.gen.go | 129 +++++++++ .../multi-shard/shards/game/gen/doc.gen.go | 2 + ...template_multi_shard_shards_game_gen.pb.go | 269 ++++++++++++++++++ 9 files changed, 953 insertions(+) create mode 100644 pkg/template/basic/shards/game/gen/doc.gen.go create mode 100644 pkg/template/basic/shards/game/gen/github_com_argus_labs_world_engine_pkg_template_basic_shards_game_gen.pb.go create mode 100644 pkg/template/basic/shards/game/system/commands_wire.gen.go create mode 100644 pkg/template/multi-shard/shards/chat/command/commands_wire.gen.go create mode 100644 pkg/template/multi-shard/shards/chat/gen/doc.gen.go create mode 100644 pkg/template/multi-shard/shards/chat/gen/github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_chat_gen.pb.go create mode 100644 pkg/template/multi-shard/shards/game/command/commands_wire.gen.go create mode 100644 pkg/template/multi-shard/shards/game/gen/doc.gen.go create mode 100644 pkg/template/multi-shard/shards/game/gen/github_com_argus_labs_world_engine_pkg_template_multi_shard_shards_game_gen.pb.go 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 +} From a4c1900073c36b11b0eb1fd055197b7eced39a8f Mon Sep 17 00:00:00 2001 From: winton-library <52289105+winton-library@users.noreply.github.com> Date: Fri, 26 Jun 2026 08:25:12 +0700 Subject: [PATCH 9/9] chore(dep): change deprecated h2c --- pkg/cardinal/service.go | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/pkg/cardinal/service.go b/pkg/cardinal/service.go index 81d893108..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)