private Tuple <GameId, Type> GetHistoryInfo(GameId gameId) { return(executingAssembly .GetTypes() .Where(x => x.IsClass && !x.IsAbstract && x.GetCustomAttribute <HistoryInfoAttribute>() != null && x.GetCustomAttribute <HistoryInfoAttribute>().GameId == gameId) .Select(ele => Tuple.Create(ele.GetCustomAttribute <HistoryInfoAttribute>().GameId, ele)) .SingleOrDefault()); }
public Payline Get(GameId gameId) { var gameInfo = gameInfoRepository.Get(gameId); if (gameInfo != null) { return(Get(gameInfo.PayLineId) ?? Get("local3x5_50")); } else { return(null); } }
public GameInfoAdapter Get(GameId gameId) { if (!GameInfo.TryGetValue(gameId, out GameInfoAdapter gameInfo)) { var gameName = gameId.ToString(); var gameResource = Array.Find(manifestResourceNames, name => { var isMatch = false; if (name.EndsWith(".slotgame")) { var gameSegments = name.Split("."); if (gameSegments.Length > 1) { var gameNameSegment = gameSegments[gameSegments.Length - 2]; isMatch = string.Compare(gameName, gameNameSegment, true, CultureInfo.InvariantCulture) == 0; } } return(isMatch); }); if (gameResource != null) { using (var stream = executingAssembly.GetManifestResourceStream(gameResource)) { if (stream != null) { using (var sr = new StreamReader(stream)) { gameInfo = JsonConvert.DeserializeObject <GameInfoAdapter>(sr.ReadToEnd()); GameInfo.Add((GameId)gameInfo.GameId, gameInfo); } } } } } return(gameInfo); }
public IGameHistory Resolve(GameId gameId) { IGameHistory instance = null; if (!_assembliesResolve.TryGetValue(gameId, out var historyInfo)) { var tuple = GetHistoryInfo(gameId); if (tuple != null) { _assembliesResolve.Add(tuple.Item1, tuple.Item2); instance = Activator.CreateInstance(tuple.Item2, new[] { paylineRepository }) as IGameHistory; } } else { instance = Activator.CreateInstance(historyInfo, new[] { paylineRepository }) as IGameHistory; } return(instance); }
public PaylineType GetPayLineType(GameId gameId) { return(GameInfo.ContainsKey(gameId) ? (PaylineType)GameInfo[gameId].PayLineType : PaylineType.ThreeByFive); }
private List <byte[, ]> GetWinTable(GameIdEnum gameId, Dictionary <int, List <PaylineConfig> > payline, SpinXml xml) { return(WinTableByGame.ContainsKey(gameId) ? WinTableByGame[gameId](payline, xml) : WinTableByPaylineType[gameInfoRepository.GetPayLineType(gameId)](payline, xml)); }