public void UpdateSessionFeatures(string features) { lock (updateLock) { var data = (features ?? string.Empty).Split(',').Select(t => t.Trim().ToLower()).Where(t => !string.IsNullOrEmpty(t)).ToArray(); var result = new Dictionary <string, object>(); foreach (var item in data) { var itemData = item.Split(new[] { ':' }, 2); result[itemData[0]] = itemData.Length > 1 ? (object)itemData[1].Trim() : true; } HasProvablyFair = result.ContainsKey("provably_fair"); this.Features = result; CallbackData = null; if (UserId == 0 || !result.ContainsKey("seamless") || !result.ContainsKey("external_access_point")) { return; } var accessPointId = result["external_access_point"].ToLong(); CallbackData = ExternalServiceFacade.GetGameCoreService().GetGameCallbackData(accessPointId, UserId); } }
public bool saveUserSettings(string sessionId, object settings) { var session = GetSession(sessionId); if (session != null) { var userId = session.UserId; if (userId != 0) { try { ExternalServiceFacade.GetGameCoreService().SaveGameUserSettings(gameData.Id, userId, settings.SerializeJSON()); return(true); } catch (Exception ex) { Logger.Log(ex, game.Id); } } else { session.setLocalSettings(gameData.Id, settings); return(true); } } return(false); }
public bool Initialize(IScriptedGameServerRole parent) { MonitoringFacade.RegisterMonitoringSource(id); var entryScript = entryFile.ReadAllTextFromFile(); try { using (var context = JavascriptContextFactory.Create()) { context.Run(entryScript, Path.GetFileName(entryFile)); } } catch (JavascriptException ex) { LogScriptError(entryFile, folderName, ex); return(false); } if (string.IsNullOrEmpty(id)) { throw new BusinessException("Game type cannot be empty (entry file '{0}').".FormatString(entryFile)); } gameTypeEntity = ExternalServiceFacade.GetGameCoreService().GetGameType(id); return(true); }
public RoundCounter(ScriptedGameContext context) { this.context = context; gameId = context.Game.IdLong; currentValue = ExternalServiceFacade.GetGameCoreService().GetRoundId(gameId); if (currentValue == 0) { currentValue = increase(); } var tmpResult = NoSQLFacade.Get <GenericNoSqlObject>("SavedGameRoundId", context.Game.IdLong); if (tmpResult != null) { var longValue = (long)tmpResult.Value; if (currentValue < longValue) { context.Game.Log("Restoring round counter from NoSQL storage from value {0} to value {1}", currentValue, longValue); currentValue = longValue; hasUnsyncedValues = true; CheckSync(); NoSQLFacade.Delete("SavedGameRoundId", context.Game.IdLong); } } }
public object loadUserSettings(string sessionId) { var session = GetSession(sessionId); if (session != null) { var userId = session.UserId; if (userId != 0) { try { return(ExternalServiceFacade.GetGameCoreService().GetGameUserSettings(gameData.Id, userId).ParseJsonAny()); } catch (Exception ex) { Logger.Log(ex, game.Id); } } else { return(session.getLocalSettings(gameData.Id)); } return(null); } return(null); }
public CasinoInfo getCasinoInfo(string sessionId) { var session = GetSession(sessionId); if (session == null) { return(null); } return(ExternalServiceFacade.GetGameCoreService().GetCasino(session.CasinoId)); }
public object loadSettings() { try { return(ExternalServiceFacade.GetGameCoreService().GetGameSettings(gameData.Id).ParseJsonAny()); } catch (Exception ex) { Logger.Log(ex, game.Id); } return(null); }
public bool saveSettings(object settings) { try { ExternalServiceFacade.GetGameCoreService().SaveGameSettings(gameData.Id, settings.SerializeJSON()); return(true); } catch (Exception ex) { Logger.Log(ex, game.Id); } return(false); }
private void CheckSync() { if (hasUnsyncedValues) { try { ExternalServiceFacade.GetGameCoreService().SetRoundId(gameId, currentValue); hasUnsyncedValues = false; } catch (Exception ex) { SaveRoundIdToNoSql(); context.Game.LogError(ex); } } }
public long increase() { try { CheckSync(); currentValue = ExternalServiceFacade.GetGameCoreService().IncreaseRoundId(gameId); return(currentValue); } catch (Exception ex) { context.Game.LogError(ex); SaveRoundIdToNoSql(); hasUnsyncedValues = true; return(currentValue++); } }
public void InitializeInstances() { if (isDisposed) { return; } Log(Id, "Initializing game instances..."); var games = ExternalServiceFacade.GetGameCoreService().GetGames(gameTypeEntity.Id); foreach (var game in games) { var instance = new ScriptedGameInstance(this, game, externalGameUrl, externalGameSSLUrl, GetInstanceSettings(game), accountingFacadeFactory.CreateFacade(), reportTracker); instance.Start(); } }
public static ServiceApplicationInfo ParseServiceAppToken(string token) { var result = new ServiceApplicationInfo { CasinoId = 0, ApplicationType = 1 }; string[] parsedData; try { var bytes = Enumerable.Range(0, token.Length).Where(x => x % 2 == 0).Select(x => Convert.ToByte(token.Substring(x, 2), 16)).ToArray(); var reversedBytes = bytes.Reverse().ToArray(); parsedData = Encoding.UTF8.GetString(reversedBytes).Split(new [] { ':' }, 4); } catch (Exception ex) { throw new Exception("Invalid token"); } try { if (parsedData.Length < 4) { throw new Exception("Wrong token length"); } var appId = parsedData[0].ToLong(); var code = parsedData[3]; result = ExternalServiceFacade.GetGameCoreService().GetServiceApplicationInfo(appId, code); } catch (Exception ex) { throw new Exception("Wrong token version"); } return(result); }