コード例 #1
0
ファイル: format_test.go プロジェクト: emersion/miko
func TestMetaAction_PlayerJoined(t *testing.T) {
	code := message.MetaActionCodes["player_joined"]
	tick := message.Tick(42)
	entityId := message.EntityId(69)
	username := "******"

	testMessage(t, message.Types["meta_action"], func(w io.Writer) error {
		return builder.SendPlayerJoined(w, tick, entityId, username)
	}, func(conn *message.Conn, t *testing.T) {
		rt, id, c, u := handler.ReadMetaAction(conn)
		if rt != tick {
			t.Fatal("Sent tick", tick, "but received", rt)
		}
		if id != entityId {
			t.Fatal("Sent entity id", entityId, "but received", id)
		}
		if c != code {
			t.Fatal("Sent code", code, "but received", c)
		}
		if u != username {
			t.Fatal("Sent username", username, "but received", u)
		}
	})
}
コード例 #2
0
ファイル: server.go プロジェクト: emersion/miko
			err := conn.Write(func(w io.Writer) error {
				return builder.SendEntityCreate(w, ctx.Clock.GetRelativeTick(), e)
			})
			if err != nil {
				return err
			}
		}

		// Send current players
		for _, s := range ctx.Auth.List() {
			if s.Id == session.Id {
				continue
			}

			err := conn.Write(func(w io.Writer) error {
				return builder.SendPlayerJoined(w, ctx.Clock.GetRelativeTick(), s.Entity.Id, s.Username)
			})
			if err != nil {
				return err
			}
		}

		// Register new entity
		req := ctx.Entity.Add(session.Entity, ctx.Clock.GetAbsoluteTick()) // TODO: move this elsewhere?
		err = req.Wait()
		log.Println("Entity registered!")
		if err != nil {
			return err
		}

		// Broadcast new entity to other clients