12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- package worldmanager
- import (
- "context"
- "errors"
- "log"
- "math/rand"
- gamelangpb "git.alfi.li/gamelang/protobuf/gamelang"
- )
- type WorldServer struct {
- gamelangpb.UnimplementedWorldServiceServer
- worldmanager *WorldManager
- }
- func NewWorldServer(wm *WorldManager) *WorldServer {
- return &WorldServer{worldmanager: wm}
- }
- func (us WorldServer) CreateWorld(ctx context.Context, world *gamelangpb.World) (*gamelangpb.World, error) {
- id := rand.Uint32()
- world.Id = id
- _, err := us.worldmanager.Create(*world)
- if err != nil {
- return &gamelangpb.World{}, err
- }
- return world, nil
- }
- func (us WorldServer) DeleteWorld(ctx context.Context, world *gamelangpb.World) (*gamelangpb.World, error) {
- us.worldmanager.Remove(world.GetName())
- return world, nil
- }
- func (us WorldServer) GetWorld(ctx context.Context, searchworld *gamelangpb.World) (*gamelangpb.World, error) {
- log.Printf("new get request:\n%+v", searchworld)
- worlds := us.worldmanager.List()
- for _, world := range worlds {
- if world.GetName() == searchworld.GetName() {
- log.Println("sending world\n", world)
- return &world, nil
- }
- }
- return &gamelangpb.World{}, errors.New("World not found")
- }
- func (us WorldServer) ListWorld(world *gamelangpb.World, stream gamelangpb.WorldService_ListWorldServer) error {
- worlds := us.worldmanager.List()
- for _, world := range worlds {
- stream.Send(&world)
- }
- return nil
- }
- func (us WorldServer) JoinWorld(ctx context.Context, world *gamelangpb.World) (*gamelangpb.World, error) {
- log.Printf("new join request:\n%+v", world)
- user := world.Users[0]
- us.worldmanager.Join(world.Name, user)
- return world, nil
- }
- func (us WorldServer) AddGameWorld(ctx context.Context, world *gamelangpb.World) (*gamelangpb.World, error) {
- log.Printf("new Game add request:\n%+v", world)
- game := world.Games[0]
- us.worldmanager.AddGame(world.Name, game)
- return world, nil
- }
|