public void AddAchievementToUI(AchievementInfromation Achievement, AchievementState State) { UIAchievement UIAchievement = Instantiate(prefab, new Vector3(0f, 0f, 0f), Quaternion.identity).GetComponent <UIAchievement>(); UIAchievement.Set(Achievement, State); UIAchievement.transform.SetParent(scrollContent.transform); }
public Achievement(AchievementInfo info) { achievementInfo = info; identifier = info.identifier; DataService ds = SQLiteDatabaseManager.Instance.ds; persistentAchievement = ds.GetPersistentAchievement(identifier); if (persistentAchievement == null) { persistentAchievement = new PersistentAchievement(); persistentAchievement.identifier = identifier; state = AchievementState.locked; ds.InsertAchievement(persistentAchievement); } delegates = new List <AchievementCompleteDelegate>(); LoadPrerequisite(); LoadAchievementSteps(); CheckForActivation(); CheckToActivateAchievementStep(); CheckForCompletion(); LoadFallthrough(); CheckForFallThroughtCompletion(); }
protected void LockIfNotComplete() { if (!IsComplete()) { state = AchievementState.locked; } }
private static readonly IDictionary <string, AchievementState> States = new Dictionary <string, AchievementState>(); // 全体成就状态 public static void Bind(TetrisGame game, string name = "") // 静态方法,绑定游戏 { if (name == "") { return; } if (!States.ContainsKey(name)) // 如果没有现在的用户,设定为新用户 { States[name] = new AchievementState(); } game.AchievementState = States[name]; game.GameEndEvent += new TetrisGame.GameEndCallback( // 更新最高分 delegate(object sender, TetrisGame.GameEndEventArgs e) { if (e.Score > game.AchievementState.HighScore) { game.AchievementState.HighScore = e.Score; } } ); game.UpdateEndEvent += new TetrisGame.UpdateEndCallback( // 更新总消除行数 delegate(TetrisGame sender, TetrisGame.UpdateEndEventArgs e) { game.AchievementState.TotalClearBar += game.TickClearedBars; AchievementSystem.UpdateHighest(); }); new SeqClearBind().Bind(game); // 绑定子系统 new HardSurviveBind().Bind(game); }
void ChangeStateForAchievementStep(AchievementStep step, AchievementState oldState, AchievementState newState) { //Debug.Log("ChangeStateForAchievementStep " + identifier); if (step.IsComplete()) { } CheckToChangeState(); }
public virtual void Activate() { if (state == AchievementState.locked) { state = AchievementState.active; } requirement = RequirementFromAchievementStepInfo(stepInfo); requirement.RequirementCompleteCallback += CheckComplete; }
// Token: 0x0600213E RID: 8510 RVA: 0x0004ED37 File Offset: 0x0004DD37 public static bool Parse(string str, out AchievementState value) { if (AchievementStateConverter.typeMap.TryGetValue(str, out value)) { return(true); } value = AchievementState.Locked; return(false); }
void CheckComplete() { Debug.Log("check complete for step " + identifier); if (!IsComplete() && requirement.IsCompleted) { Debug.Log("complete step " + identifier); state = AchievementState.complete; } }
public AchievementStatusesEnum GetNormalAchievementStatuses(AcheivementKey key) { if (AchievementState.IsSystemAchievement(key)) { return(AchievementStatusesEnum.Invalid); } Int32 achievementIntIndex = this.GetAchievementIntIndex(key); Int32 achievementBitIndex = this.GetAchievementBitIndex(key); return(AchievementState.ConvertDataToAchievementStatus(this.EvtReservedArray[achievementIntIndex], achievementBitIndex)); }
public void SetNormalAchievementStatuses(AcheivementKey key, AchievementStatusesEnum status) { if (AchievementState.IsSystemAchievement(key)) { return; } Int32 achievementIntIndex = this.GetAchievementIntIndex(key); Int32 achievementBitIndex = this.GetAchievementBitIndex(key); Int32 num = AchievementState.ConvertAchievementStatusToData(status, achievementBitIndex); Int32 num2 = 3 << achievementBitIndex; this.EvtReservedArray[achievementIntIndex] &= ~num2; this.EvtReservedArray[achievementIntIndex] |= num; }
void CheckForCompletion() { if (state != AchievementState.active) { return; } if (achievementStep == null) { LoadAchievementSteps(); } if (achievementStep.IsComplete()) { state = AchievementState.complete; } }
private void Init() { // load achievements definitions = (AchievementDefinitions)Resources.Load("achievements"); achievementDefinitions = new Dictionary <string, AchievementDefinition>(); achievementStates = new Dictionary <string, AchievementState>(); foreach (AchievementDefinition definition in definitions.definitions) { achievementDefinitions.Add(definition.name, definition); AchievementState state = new AchievementState(); state.hidden = definition.hidden; achievementStates.Add(definition.name, state); } // TODO build stuff for multi tier achievements }
public void UpdateAchievement(string achievement, AchievementState oldState, AchievementState newState) { if (narrativeActionDictionary == null) { return; } if (oldState == AchievementState.locked && newState == AchievementState.active) { Debug.Log("update " + achievement + " " + oldState + " " + newState); if (narrativeActionDictionary.ContainsKey(achievement)) { activeNarrativeActions.AddRange(narrativeActionDictionary[achievement]); } } //sort }
/// <summary> /// Add information about an Achievement to the UI elements /// </summary> public void Set(AchievementInfromation Information, AchievementState State) { if (Information.Spoiler && !State.Achieved) { SpoilerOverlay.SetActive(true); SpoilerText.text = AchievementManager.instance.SpoilerAchievementMessage; } else { Title.text = Information.DisplayName; Description.text = Information.Description; if (Information.LockOverlay && !State.Achieved) { OverlayIcon.gameObject.SetActive(true); OverlayIcon.sprite = Information.LockedIcon; Icon.sprite = Information.AchievedIcon; } else { Icon.sprite = State.Achieved ? Information.AchievedIcon : Information.LockedIcon; } if (Information.Progression) { float CurrentProgress = AchievementManager.instance.ShowExactProgress ? State.Progress : (State.LastProgressUpdate * Information.NotificationFrequency); float DisplayProgress = State.Achieved ? Information.ProgressGoal : CurrentProgress; if (State.Achieved) { Percent.text = Information.ProgressGoal + Information.ProgressSuffix + " / " + Information.ProgressGoal + Information.ProgressSuffix + " (Achieved)"; } else { Percent.text = DisplayProgress + Information.ProgressSuffix + " / " + Information.ProgressGoal + Information.ProgressSuffix; } ProgressBar.fillAmount = DisplayProgress / Information.ProgressGoal; } else //Single Time { ProgressBar.fillAmount = State.Achieved ? 1 : 0; Percent.text = State.Achieved ? "(Achieved)" : "(Locked)"; } } }
// 업적 데이터 최신화 public void UpdateAchievementData(AchievementState state) { int num = (int)state; if (achievementInfo[num] == false) { currAchievementState[num] += 1; Debug.Log($"AchievementManager ::: {num} // {currAchievementState[num]}"); if (currAchievementState[num] >= stdArray[num]) { achievementInfo[num] = true; SaveAchievementData(num); Debug.Log($"AchievementManager ::: 업적 0{num + 1} 클리어"); } } }
void CheckForActivation() { //Debug.LogError("prerequisite " + prerequisite + (prerequisite==null ? "none" : prerequisite.state.ToString())); if (state != AchievementState.locked) { return; } bool shouldActivate = true; if (prerequisite != null && !prerequisite.IsComplete()) { shouldActivate = false; } if (shouldActivate) { state = AchievementState.active; CheckToActivateAchievementStep(); } }
private void OnStateChanged(int state) { AchievementState enumState = (AchievementState)state; switch (enumState) { case AchievementState.PotionHistory: _historyController.UpdateHistories(); break; case AchievementState.Return: SceneManager.LoadScene("CraftingTable"); break; default: Debug.Log("invalid state"); break; } }
internal Achievement(IDictionary<string, object> dict) { foreach (string key in dict.Keys) { object value; dict.TryGetValue (key, out value); if (value == null) { continue; } string valueString = value.ToString (); switch (key) { case "public_id": PublicId = valueString; break; case "name": Name = valueString; break; case "description": Description = valueString; break; case "type": switch (valueString) { case "incremental": Type = AchievementType.INCREMENTAL; break; case "normal": Type = AchievementType.NORMAL; break; } break; case "points": Points = (long)value; break; case "state": switch (valueString) { case "visible": State = AchievementState.VISIBLE; break; case "secret": State = AchievementState.SECRET; break; case "hidden": State = AchievementState.HIDDEN; break; } break; case "required_count": RequiredCount = (long)value; break; case "count": Count = (long)value; break; case "progress_at": ProgressAt = (long)value; break; case "completed_at": CompletedAt = (long)value; break; } } }
public IEnumerable<Achievement> GetAchievements(Game game) { List<Achievement> achievements = new List<Achievement>(); var definitions = GetAchievementDefinitions(game); var states = _persistenceManager.LoadMany<AchievementState>( String.Format("AchievementState/GameAndUser UserId:{0} AND RomMd5:{1}", WrenCore.UserId, game.Id), AchievementsModule.AchievementsPersistenceProviderKey); foreach (var def in definitions) { AchievementState state = states.Where(s => s.AchievementDefinitionId == def.Id).FirstOrDefault(); if (state == null) { state = new AchievementState() { AchievementDefinitionId = def.Id, Id = Guid.NewGuid().ToString("N"), IsUnlocked = false, IsUploaded = false, RomMd5 = def.RomMd5, ServerDate = new DateTime(2000, 01, 01), State= "{ }", UserId = WrenCore.UserId, Version = 0 }; _persistenceManager.Save(state.Id, AchievementsModule.AchievementsPersistenceProviderKey, state); } achievements.Add(new Achievement(def, state)); } return achievements; }
public void SaveState(AchievementState state) { _persistenceManager.Save(state.Id, AchievementsModule.AchievementsPersistenceProviderKey, state); SynchronizeAchievementState(); }
public void AAAAAAA(int num) { AchievementState state = (AchievementState)num; UpdateAchievementData(state); }
public void DrawAchievementList() { if (GUILayout.Button(HideAll ? "Hide All" : "Open All", GUILayout.Width(70))) { for (int i = 0; i < Hidden.Count; i++) { Hidden[i] = HideAll; } HideAll = !HideAll; } for (int i = 0; i < MyTarget.AchievementList.Count; i++) { GUILayout.BeginVertical(Border); GUILayout.BeginVertical(ManageBackground); GUILayout.BeginHorizontal(ManageInsideBackground); if (GUILayout.Button(CET.LoadImageFromFile("Assets/AchievementSystem/Resources/" + (Hidden[i] ? "Plus.png" : "Minus.png")), RowButton)) { Hidden[i] = !Hidden[i]; } GUILayout.Label("(" + i + ") " + MyTarget.AchievementList[i].DisplayName); if (i > 0 && GUILayout.Button(CET.LoadImageFromFile("Assets/AchievementSystem/Resources/Up.png"), RowButton)) { AchievementInfromation temp = MyTarget.AchievementList[i]; MyTarget.AchievementList[i] = MyTarget.AchievementList[i - 1]; MyTarget.AchievementList[i - 1] = temp; AchievementState temp2 = MyTarget.States[i]; MyTarget.States[i] = MyTarget.States[i - 1]; MyTarget.States[i - 1] = temp2; MyTarget.SaveAchievementState(); } if (i < MyTarget.AchievementList.Count - 1 && GUILayout.Button(CET.LoadImageFromFile("Assets/AchievementSystem/Resources/Down.png"), RowButton)) { AchievementInfromation temp = MyTarget.AchievementList[i]; MyTarget.AchievementList[i] = MyTarget.AchievementList[i + 1]; MyTarget.AchievementList[i + 1] = temp; AchievementState temp2 = MyTarget.States[i]; MyTarget.States[i] = MyTarget.States[i + 1]; MyTarget.States[i + 1] = temp2; MyTarget.SaveAchievementState(); } if (GUILayout.Button(CET.LoadImageFromFile("Assets/AchievementSystem/Resources/Cross.png"), RowButton)) { MyTarget.AchievementList.RemoveAt(i); Hidden.RemoveAt(i); MyTarget.States.RemoveAt(i); MyTarget.SaveAchievementState(); Repaint(); return; } GUILayout.EndHorizontal(); if (!Hidden[i]) { GUILayout.Space(10); EditorGUILayout.PropertyField(serializedObject.FindProperty("AchievementList").GetArrayElementAtIndex(i).FindPropertyRelative("Key")); EditorGUILayout.PropertyField(serializedObject.FindProperty("AchievementList").GetArrayElementAtIndex(i).FindPropertyRelative("DisplayName")); EditorGUILayout.PropertyField(serializedObject.FindProperty("AchievementList").GetArrayElementAtIndex(i).FindPropertyRelative("Description")); GUILayout.Space(10); EditorGUILayout.PropertyField(serializedObject.FindProperty("AchievementList").GetArrayElementAtIndex(i).FindPropertyRelative("LockedIcon")); EditorGUILayout.PropertyField(serializedObject.FindProperty("AchievementList").GetArrayElementAtIndex(i).FindPropertyRelative("LockOverlay")); GUILayout.Space(5); EditorGUILayout.PropertyField(serializedObject.FindProperty("AchievementList").GetArrayElementAtIndex(i).FindPropertyRelative("AchievedIcon")); GUILayout.Space(10); EditorGUILayout.PropertyField(serializedObject.FindProperty("AchievementList").GetArrayElementAtIndex(i).FindPropertyRelative("Spoiler")); EditorGUILayout.PropertyField(serializedObject.FindProperty("AchievementList").GetArrayElementAtIndex(i).FindPropertyRelative("Progression")); if (MyTarget.AchievementList[i].Progression == true) { EditorGUILayout.PropertyField(serializedObject.FindProperty("AchievementList").GetArrayElementAtIndex(i).FindPropertyRelative("ProgressGoal")); EditorGUILayout.PropertyField(serializedObject.FindProperty("AchievementList").GetArrayElementAtIndex(i).FindPropertyRelative("NotificationFrequency")); } } GUILayout.EndVertical(); GUILayout.EndVertical(); } GUILayout.Space(20); if (GUILayout.Button("Add")) { MyTarget.AchievementList.Add(new AchievementInfromation()); MyTarget.States.Add(new AchievementState()); MyTarget.SaveAchievementState(); Hidden.Add(false); } }
public void DrawAchievement(SerializedProperty Achievement, int Index) { GUILayout.BeginVertical(Border); GUILayout.BeginVertical(ManageBackground); GUILayout.BeginHorizontal(ManageInsideBackground); int i = (int)Index; if (GUILayout.Button(Resources.Load <Texture2D>(Hidden[i] ? "Plus" : "Minus"), RowButton)) { Hidden[i] = !Hidden[i]; } if (MyTarget.UseFinalAchievement && MyTarget.FinalAchievementKey.Equals(MyTarget.AchievementList[i].Key)) { GUILayout.Box(Resources.Load <Texture2D>("CompleteAllIcon"), RowButton); } GUILayout.Label("(" + i + ") " + MyTarget.AchievementList[i].DisplayName); if (i > 0 && GUILayout.Button(Resources.Load <Texture2D>("Up"), RowButton)) { AchievementInfromation temp = MyTarget.AchievementList[i]; MyTarget.AchievementList[i] = MyTarget.AchievementList[i - 1]; MyTarget.AchievementList[i - 1] = temp; AchievementState temp2 = MyTarget.States[i]; MyTarget.States[i] = MyTarget.States[i - 1]; MyTarget.States[i - 1] = temp2; MyTarget.SaveAchievementState(); } if (i < MyTarget.AchievementList.Count - 1 && GUILayout.Button(Resources.Load <Texture2D>("Down"), RowButton)) { AchievementInfromation temp = MyTarget.AchievementList[i]; MyTarget.AchievementList[i] = MyTarget.AchievementList[i + 1]; MyTarget.AchievementList[i + 1] = temp; AchievementState temp2 = MyTarget.States[i]; MyTarget.States[i] = MyTarget.States[i + 1]; MyTarget.States[i + 1] = temp2; MyTarget.SaveAchievementState(); } if (GUILayout.Button(Resources.Load <Texture2D>("Cross"), RowButton)) { MyTarget.AchievementList.RemoveAt(i); Hidden.RemoveAt(i); MyTarget.States.RemoveAt(i); MyTarget.SaveAchievementState(); Repaint(); return; } GUILayout.EndHorizontal(); if (Hidden[i]) { GUILayout.Space(10); EditorGUILayout.PropertyField(Achievement.FindPropertyRelative("Key")); EditorGUILayout.PropertyField(Achievement.FindPropertyRelative("DisplayName")); EditorGUILayout.PropertyField(Achievement.FindPropertyRelative("Description")); GUILayout.Space(10); EditorGUILayout.PropertyField(Achievement.FindPropertyRelative("LockedIcon")); EditorGUILayout.PropertyField(Achievement.FindPropertyRelative("LockOverlay")); GUILayout.Space(5); EditorGUILayout.PropertyField(Achievement.FindPropertyRelative("AchievedIcon")); GUILayout.Space(10); EditorGUILayout.PropertyField(Achievement.FindPropertyRelative("Spoiler")); EditorGUILayout.PropertyField(Achievement.FindPropertyRelative("Progression")); if (Achievement.FindPropertyRelative("Progression").boolValue) { EditorGUILayout.PropertyField(Achievement.FindPropertyRelative("ProgressGoal")); EditorGUILayout.PropertyField(Achievement.FindPropertyRelative("NotificationFrequency")); EditorGUILayout.PropertyField(Achievement.FindPropertyRelative("ProgressSuffix")); } } GUILayout.EndVertical(); GUILayout.EndVertical(); }
private void StateThreadStart() { if (WrenCore.IsOffline) return; var settings = _settingsManager.LoadSettings<AchievementSettings>(EmulationContext.Empty); if (String.IsNullOrEmpty(WrenCore.UserId)) return; var localAchievements = _persistenceManager.LoadMany<AchievementState>( String.Format("AchievementState/NotUploaded UserId:{0}", WrenCore.UserId), AchievementsModule.AchievementsPersistenceProviderKey).ToList(); var achievementDtos = new List<AchievementStateDto>(); foreach (var a in localAchievements) { achievementDtos.Add(new AchievementStateDto() { AchievementDefinitionId = a.AchievementDefinitionId, Id = a.Id, IsUnlocked = a.IsUnlocked, RomMd5 = a.RomMd5, ServerDate = a.ServerDate, State = a.State, UserId = a.UserId, Version = a.Version++ }); } var dtoJson = Newtonsoft.Json.JsonConvert.SerializeObject(achievementDtos.ToArray()); if (achievementDtos.Count() > 0) _achievementsService.UploadAchievementState(WrenCore.UserId, dtoJson); Thread.Sleep(200); var serverAchievements = _achievementsService.DownloadAchievementState(WrenCore.UserId, settings.StateLastDownloaded); settings.StateLastDownloaded = serverAchievements.UpdateTimestamp; foreach (var s in serverAchievements.State) { AchievementState local = new AchievementState() { AchievementDefinitionId = s.AchievementDefinitionId, Id = s.Id, IsUnlocked = s.IsUnlocked, IsUploaded = true, ServerDate = s.ServerDate, State = s.State, UserId = s.UserId, Version = s.Version }; _persistenceManager.Save(s.Id, AchievementsModule.AchievementsPersistenceProviderKey, local); } _settingsManager.ApplySettings(settings); }
public Achievement(AchievementDefinition definition, AchievementState state) { _definition = definition; _state = state; }
internal Achievement(IDictionary <string, object> dict) { foreach (string key in dict.Keys) { object value; dict.TryGetValue(key, out value); if (value == null) { continue; } string valueString = value.ToString(); switch (key) { case "public_id": PublicId = valueString; break; case "name": Name = valueString; break; case "description": Description = valueString; break; case "type": switch (valueString) { case "incremental": Type = AchievementType.INCREMENTAL; break; case "normal": Type = AchievementType.NORMAL; break; } break; case "points": Points = (long)value; break; case "state": switch (valueString) { case "visible": State = AchievementState.VISIBLE; break; case "secret": State = AchievementState.SECRET; break; case "hidden": State = AchievementState.HIDDEN; break; } break; case "required_count": RequiredCount = (long)value; break; case "count": Count = (long)value; break; case "progress_at": ProgressAt = (long)value; break; case "completed_at": CompletedAt = (long)value; break; } } }