Esempio n. 1
0
    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);
    }
Esempio n. 2
0
    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();
    }
Esempio n. 3
0
 protected void LockIfNotComplete()
 {
     if (!IsComplete())
     {
         state = AchievementState.locked;
     }
 }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
 void ChangeStateForAchievementStep(AchievementStep step, AchievementState oldState, AchievementState newState)
 {
     //Debug.Log("ChangeStateForAchievementStep " + identifier);
     if (step.IsComplete())
     {
     }
     CheckToChangeState();
 }
Esempio n. 6
0
 public virtual void Activate()
 {
     if (state == AchievementState.locked)
     {
         state = AchievementState.active;
     }
     requirement = RequirementFromAchievementStepInfo(stepInfo);
     requirement.RequirementCompleteCallback += CheckComplete;
 }
Esempio n. 7
0
 // 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);
 }
Esempio n. 8
0
 void CheckComplete()
 {
     Debug.Log("check complete for step " + identifier);
     if (!IsComplete() && requirement.IsCompleted)
     {
         Debug.Log("complete step " + identifier);
         state = AchievementState.complete;
     }
 }
Esempio n. 9
0
    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));
    }
Esempio n. 10
0
    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;
    }
Esempio n. 11
0
 void CheckForCompletion()
 {
     if (state != AchievementState.active)
     {
         return;
     }
     if (achievementStep == null)
     {
         LoadAchievementSteps();
     }
     if (achievementStep.IsComplete())
     {
         state = AchievementState.complete;
     }
 }
Esempio n. 12
0
        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
        }
Esempio n. 13
0
 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
 }
Esempio n. 14
0
    /// <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} 클리어");
            }
        }
    }
Esempio n. 16
0
    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();
        }
    }
Esempio n. 17
0
    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;
        }
    }
Esempio n. 18
0
        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;
            }
              }
        }
Esempio n. 19
0
        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;
        }
Esempio n. 20
0
 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();
    }
Esempio n. 24
0
        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);
        }
Esempio n. 25
0
 public Achievement(AchievementDefinition definition, AchievementState state)
 {
     _definition = definition;
     _state = state;
 }
Esempio n. 26
0
        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;
                }
            }
        }