public GameRuleBase CreateGameRule(RoomCreationOptions roomCreationOptions) { var type = GetGameRuleType(roomCreationOptions); return(type != null ? (GameRuleBase)_serviceProvider.GetRequiredService(type) : null); }
private Type GetGameRuleType(RoomCreationOptions roomCreationOptions) { if (!_gameRules.TryGetValue(roomCreationOptions.MatchKey.GameRule, out var entries)) { return(null); } foreach (var entry in entries.OrderByDescending(x => x.Priority)) { var type = entry.Func(roomCreationOptions); if (type != null) { return(type); } } return(null); }
public bool HasGameRule(RoomCreationOptions roomCreationOptions) { return(GetGameRuleType(roomCreationOptions) != null); }
public RoomCreateHookEventArgs(RoomManager roomManager, RoomCreationOptions options) { RoomManager = roomManager; Options = options; Error = RoomCreateError.OK; }