public async Task <GameDataInfo> GetDataInfo(Guid userId, string gameId) { var prefix = MakeKeyPrefix(userId, gameId); var request = new ListObjectsRequest { BucketName = _bucketName, Prefix = prefix, MaxKeys = 1, }; var response = await _s3Client.ListObjectsAsync(request); if (response.S3Objects.Count == 0) { return(null); } var s3Object = response.S3Objects[0]; var key = SplitKeyString(s3Object.Key); var result = new GameDataInfo { GameId = gameId, CurrentIndex = key.Index, LastModifiedDate = s3Object.LastModified, IconUrl = GetDataIconUrl(userId, gameId) }; return(result); }
public void UnlockAll() { bool currentAudioEnable = _dataInfo.AudioEnabled; _dataInfo = new GameDataInfo(); _dataInfo.AudioEnabled = currentAudioEnable; for (int i = 0; i < _stageNames.Length; i++) { _dataInfo.StageConfig.Add("locked_" + i, false); _dataInfo.StageConfig.Add("pickups_total_" + i, 0); _dataInfo.StageConfig.Add("pickups_highest_" + i, 0); } Save(); }
public static List <Stage> BuildStages(string[] names, GameDataInfo dataInfo) { // Note that we could skip adding some values, each stage will take its base value at Stage class. List <Stage> stages = new List <Stage>(); Stage newStage; for (int cnt = 0; cnt < names.Length; cnt++) { newStage = new Stage(); newStage.SetConfig(cnt, (Hashtable)dataInfo.StageConfig) .SetAssetPath("level_" + cnt) .SetLabel(names[cnt]); stages.Add(newStage); } return(stages); }
public void Load(string[] names) { _stageNames = names; if (File.Exists(_savePathName)) { BinaryFormatter bf = new BinaryFormatter(); FileStream file = File.Open(_savePathName, FileMode.Open); try { // Reading File and setting value to data object _dataInfo = (GameDataInfo)bf.Deserialize(file); AudioListener.volume = _dataInfo.AudioEnabled ? 1 : 0; if (_dataInfo.StageConfig == null) { CreateAndSaveDefault(); } else { /* Check if the last stage is available, otherwise, reset game in catch exception*/ bool lastStage = (bool)_dataInfo.StageConfig["locked_" + (_stageNames.Length - 1)]; } } catch { // If serialization fails, the saved object is old or damage. Create default one. file.Close(); CreateAndSaveDefault(); } file.Close(); } else { CreateAndSaveDefault(); } }
private void SetDefault() { bool currentAudioEnable = _dataInfo.AudioEnabled; _dataInfo = new GameDataInfo(); _dataInfo.AudioEnabled = currentAudioEnable; for (int i = 0; i < _stageNames.Length; i++) { if (i == 0) { _dataInfo.StageConfig.Add("locked_0", false); _dataInfo.StageConfig.Add("pickups_total_0", 0); _dataInfo.StageConfig.Add("pickups_highest_0", 0); } else { _dataInfo.StageConfig.Add("locked_" + i, true); _dataInfo.StageConfig.Add("pickups_total_" + i, 0); _dataInfo.StageConfig.Add("pickups_highest_" + i, 0); } } }