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); }
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); }
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); } }
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); } }
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); }
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); }
public Task Unsubscribe(ILobbyObserver observer) { this._observers.Unsubscribe(observer); return(TaskDone.Done); }