Esempio n. 1
0
        public async Task ScavengerJoinLobby(ILobbyObserver lobbyObserver, IScavengerObserver scavengerObserver)
        {
            var lobbyId = _lobbiesWaitingForScavengers.Any() ? _lobbiesWaitingForScavengers.First() : Guid.NewGuid();
            var lobby   = GrainFactory.GetGrain <ILobbyGrain>(lobbyId);

            await lobby.ScavengerJoin(lobbyObserver, scavengerObserver);
        }
Esempio n. 2
0
        public async Task GuideJoinLobby(ILobbyObserver lobbyObserver, IGuideObserver guideObserver)
        {
            var lobbyId = _lobbiesWaitingForGuides.Any() ? _lobbiesWaitingForGuides.First() : Guid.NewGuid();
            var lobby   = GrainFactory.GetGrain <ILobbyGrain>(lobbyId);

            await lobby.GuideJoin(lobbyObserver, guideObserver);
        }
Esempio n. 3
0
        public async Task SetClient(ScavengerClient client)
        {
            _client            = client;
            _scavengerObserver = await GrainClient.GrainFactory.CreateObjectReference <IScavengerObserver>(client);

            _lobbyObserver = await GrainClient.GrainFactory.CreateObjectReference <ILobbyObserver>(client);

            if (client.ScavengerId.HasValue)
            {
                var scavengerGrain = GrainClient.GrainFactory.GetGrain <IScavengerGrain>(client.ScavengerId.Value);
                await scavengerGrain.SubscribeScavenger(_scavengerObserver);
            }
        }
Esempio n. 4
0
        public async Task SetClient(GuideClient client)
        {
            _client        = client;
            _guideObserver = await GrainClient.GrainFactory.CreateObjectReference <IGuideObserver>(client);

            _lobbyObserver = await GrainClient.GrainFactory.CreateObjectReference <ILobbyObserver>(client);

            if (client.GuideId.HasValue)
            {
                var guideGrain = GrainClient.GrainFactory.GetGrain <IGuideGrain>(client.GuideId.Value);
                await guideGrain.Subscribe(_guideObserver);
            }
        }
Esempio n. 5
0
        public Task ScavengerJoin(ILobbyObserver lobbyObserver, IScavengerObserver scavengerObserver)
        {
            Subscribe(lobbyObserver);
            _scavengerObserver = scavengerObserver;

            var scavengerGrain = GrainFactory.GetGrain <IScavengerGrain>(Guid.NewGuid());

            _lobby.AddScavenger(scavengerGrain.GetPrimaryKey());

            Console.WriteLine($"Scavenger {_lobby.ScavengerId} joined Lobby { this.GetPrimaryKey()}");

            if (_lobby.IsWaitingForGuide)
            {
                var lobbyManagerGrain = GrainFactory.GetGrain <ILobbyManagerGrain>(0);
                lobbyManagerGrain.AddLobbyWaitingForGuide(this.GetPrimaryKey());
            }

            return(TaskDone.Done);
        }
Esempio n. 6
0
        public Task GuideJoin(ILobbyObserver lobbyObserver, IGuideObserver guideObserver)
        {
            Subscribe(lobbyObserver);
            _guideObserver = guideObserver;

            var guideGrain = GrainFactory.GetGrain <IGuideGrain>(Guid.NewGuid());

            _lobby.AddGuide(guideGrain.GetPrimaryKey());

            Console.WriteLine($"Guide {_lobby.GuideId} joined Lobby { this.GetPrimaryKey()}");

            if (_lobby.IsWaitingForScavenger)
            {
                var lobbyManagerGrain = GrainFactory.GetGrain <ILobbyManagerGrain>(0);
                lobbyManagerGrain.AddLobbyWaitingForScavenger(this.GetPrimaryKey());
            }

            return(TaskDone.Done);
        }
Esempio n. 7
0
 public Task Unsubscribe(ILobbyObserver observer)
 {
     this._observers.Unsubscribe(observer);
     return(TaskDone.Done);
 }