public void ProcessRequest(HttpContext context)
        {
            string achievementid = context.Request.Form["achievementid"];
            string achname       = context.Request.Form["achievementname"];
            string achdesc       = context.Request.Form["achievementdescription"];

            AchievementDefinition ach = new AchievementDefinition();

            using (DBClassesDataContext dc = new DBClassesDataContext())
            {
                try
                {
                    if (String.IsNullOrEmpty(achievementid))
                    {
                        dc.AchievementDefinitions.InsertOnSubmit(ach);
                        ach.AchievementID = Guid.NewGuid();
                    }
                    else
                    {
                        ach = (from u in dc.AchievementDefinitions
                               where u.AchievementID == Guid.Parse(achievementid)
                               select u).SingleOrDefault();
                    }
                    ach.AchievementName = achname;
                    ach.AchievementDesc = achdesc;

                    dc.SubmitChanges();
                }
                catch (Exception e)
                {
                }
            }
        }
Exemple #2
0
        /// <summary>
        /// Fill the achievement item with new data.
        /// </summary>
        /// <param name="achievement">The achievement details.</param>
        public void FillData(AchievementDefinition achievement)
        {
            // TODO: You may want to replace the default achievement icons by your own ones, according to achievements names
            // Update fields
            nameText.text = achievement.Name;

            // If the achievement is completed, display it
            if (achievement.Progress == 1f)
            {
                achievementProgressBarLine.SetActive(false);
                progressText.text = completedText;
                achievementItemBackground.color = completedBackgroundColor;
            }
            // Else, display a progress bar if the achievement progression is not of one-shot type
            else
            {
                if (achievement.Config["maxValue"].AsFloat() == 1f)
                {
                    achievementProgressBarLine.SetActive(false);
                    progressText.text = uncompletedText;
                }
                else
                {
                    achievementProgressBarLine.SetActive(true);
                    progressText.text = GetAchievementProgress(achievement);
                    progressBarCurrent.flexibleWidth = achievement.Progress;
                    progressBarMax.flexibleWidth     = 1f - achievement.Progress;
                }
            }
        }
Exemple #3
0
        public IActionResult UpdateComplete(long id, [FromBody] AchievementDefinition requestAchievementDefinition)
        {
            if (requestAchievementDefinition == null || !requestAchievementDefinition.Id.Equals(id))
            {
                return(BadRequest());
            }

            if (!requestAchievementDefinition.IsComplete())
            {
                return(BadRequest());
            }

            AchievementDefinition achievementDefinition = this._context.AchievementDefinitions.FirstOrDefault <AchievementDefinition>(aD => aD.Id.Equals(id));

            if (achievementDefinition == null)
            {
                return(NotFound());
            }

            achievementDefinition.Update(requestAchievementDefinition);

            this._context.Update(achievementDefinition);
            this._context.SaveChanges();

            return(new NoContentResult());
        }
Exemple #4
0
 public void Update(AchievementDefinition achievementDefinition)
 {
     if (achievementDefinition.Name != null)
     {
         this.Name = achievementDefinition.Name;
     }
 }
        protected void Page_Load(object sender, EventArgs e)
        {
            mUser = (AppUser)Session[Constants.SESS_KEY_USER];

            if (mUser == null)
            {
                getUserFromCookie();
                if (mUser == null)
                {
                    Response.Redirect("login.aspx");
                    Response.Close();
                    return;
                }
            }
            RewardID     = Request.Params["RewardID"];
            achievedWhen = PilotClass.WhenAchieved(Guid.Parse(RewardID), mUser.UserEmail);
            rd           = RewardDefinition.getRewardDefinition(Guid.Parse(RewardID));
            IEnumerable <RewardPrereq> prereqs = RewardPrereq.getPrereqs(Guid.Parse(RewardID));

            requirements = new List <AchievementDefinition>();
            if (prereqs != null && prereqs.Count <RewardPrereq>() >= 0)
            {
                foreach (RewardPrereq pcp in prereqs)
                {
                    AchievementDefinition ad = AchievementDefinition.getAchievementDefinition(pcp.RequiredAchievement);
                    requirements.Add(ad);
                }
            }

            // now we have the list of requirements too.
        }
Exemple #6
0
        public void ProcessRequest(HttpContext context)
        {
            string sid   = context.Request["achievementid"];
            Guid   achID = Guid.Parse(sid);

            AchievementDefinition.delete(achID);
        }
Exemple #7
0
        public void ProcessRequest(HttpContext context)
        {
            Dictionary <String, object> res          = new Dictionary <string, object>();
            List <Object> finalList                  = new List <object>();
            IEnumerable <AchievementDefinition> achs = AchievementDefinition.getAll();

            foreach (AchievementDefinition r in achs)
            {
                int nAchs  = 0;
                int nTasks = AchievementPrereq.getPrereqTypes(AchievementPrereq.getPrereqsForAchievement(r.AchievementID), out nAchs);

                Dictionary <string, string> obj = new Dictionary <string, string>();
                obj.Add("Achievement", r.AchievementName);
                obj.Add("Tasks", nTasks.ToString());
                obj.Add("Prerequisites", nAchs.ToString());
                obj.Add("actions", r.AchievementID.ToString());
                obj.Add("AchievementID", r.AchievementID.ToString());
                obj.Add("AchievementDesc", r.AchievementDesc);

                finalList.Add(obj);
            }
            res.Add("data", finalList);
            string json = JsonConvert.SerializeObject(res);

            context.Response.Write(json);
        }
Exemple #8
0
        /// <summary>
        /// Format an achievement progress text.
        /// </summary>
        /// <param name="achievement">The achievement details.</param>
        private string GetAchievementProgress(AchievementDefinition achievement)
        {
            float currentProgress        = achievement.Progress * achievement.Config["maxValue"].AsFloat();
            int   currentProgressPercent = Mathf.FloorToInt(achievement.Progress * 100f);

            return(string.Format(progressFormat, achievement.Config["unit"].AsString(), currentProgress.ToString(floatStringFormat), achievement.Config["maxValue"].AsString(floatStringFormat), currentProgressPercent.ToString()));
        }
Exemple #9
0
 void Instance_onComplete(AchievementDefinition obj)
 {
     completedAchievementQueue.Enqueue(obj);
     if (!showingAchievement)
     {
         StartCoroutine(ShowAchievementBox());
     }
 }
Exemple #10
0
        public IActionResult GetById(long id)
        {
            AchievementDefinition achievementDefinition = this._context.AchievementDefinitions.FirstOrDefault <AchievementDefinition>(aD => aD.Id.Equals(id));

            if (achievementDefinition == null)
            {
                return(NotFound());
            }

            return(new ObjectResult(achievementDefinition));
        }
Exemple #11
0
        public IActionResult Create([FromBody] AchievementDefinition achievementDefinition)
        {
            if (achievementDefinition == null)
            {
                return(BadRequest());
            }

            this._context.AchievementDefinitions.Add(achievementDefinition);
            this._context.SaveChanges();

            return(CreatedAtRoute("[controller]GetById", new { id = achievementDefinition.Id }, achievementDefinition));
        }
Exemple #12
0
        /// <summary>
        /// Build an "achievement unlocked" event type then add it to the pending list to display. (events are displayed one by one)
        /// </summary>
        /// <param name="eventMessage">Message of the event. (describes an unlocked achievement)</param>
        /// <param name="achievement">The unlocked achievement under the AchievementDefinition format.</param>
        public void BuildAndAddEventItem_AchievementUnlocked(string eventMessage, AchievementDefinition achievement)
        {
            // Create an event achievement item GameObject
            GameObject achievementItemPrefabInstance = Instantiate <GameObject>(achievementItemPrefab);

            // Fill the newly created GameObject with event friend data
            AchievementItemHandler achievementItemHandler = achievementItemPrefabInstance.GetComponent <AchievementItemHandler>();

            achievementItemHandler.FillData(achievement);

            // Add an event item with the newly created GameObject linked to it
            AddEventItem(eventMessage, achievementItemPrefabInstance);
        }
Exemple #13
0
        public IActionResult Delete(long id)
        {
            AchievementDefinition achievementDefinition = this._context.AchievementDefinitions.FirstOrDefault <AchievementDefinition>(aD => aD.Id.Equals(id));

            if (achievementDefinition == null)
            {
                return(NotFound());
            }

            this._context.AchievementDefinitions.Remove(achievementDefinition);
            this._context.SaveChanges();

            return(new NoContentResult());
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            mUser = (AppUser)Session[Constants.SESS_KEY_USER];

            if (mUser == null)
            {
                getUserFromCookie();
                if (mUser == null)
                {
                    Response.Redirect("login.aspx");
                    Response.Close();
                    return;
                }
            }
            items = AchievementDefinition.getAll();
        }
    //Called by Logins functions (LoginAnonymously, LoginAnonymouslyWithPlayerPref,LoginWithMailOrConvert)
    public void SetUpAchievements(TMPro.TMP_Text achievementPanel)
    {
        achievementPanel.text = "";
        LoggedGamer.Achievements.List().Done(achievements => {
            foreach (var pair in achievements)
            {
                string achName            = pair.Key;
                AchievementDefinition ach = pair.Value;

                if (pair.Value.Progress >= 1)
                {
                    achievementPanel.text += pair.Key + '\n';
                }
            }
        });
    }
Exemple #16
0
    IEnumerator ShowAchievementBox()
    {
        showingAchievement = true;

        while (showingAchievement)
        {
            completedAchievement = completedAchievementQueue.Dequeue();
            // show box
            yield return(StartCoroutine(AnimateBox()));

            if (completedAchievementQueue.Count == 0)
            {
                showingAchievement = false;
            }
        }
    }
        protected void Page_Load(object sender, EventArgs e)
        {
            mUser = (AppUser)Session[Constants.SESS_KEY_USER];

            if (mUser == null)
            {
                getUserFromCookie();
                if (mUser == null)
                {
                    Response.Redirect("login.aspx");
                    Response.Close();
                    return;
                }
            }
            AchievementID = Request.Params["AchievementID"];
            achievedWhen  = PilotAchievement.WhenAchieved(Guid.Parse(AchievementID), mUser.UserEmail);
            rd            = AchievementDefinition.getAchievementDefinition(Guid.Parse(AchievementID));
            IEnumerable <AchievementPrereq> prereqs = AchievementPrereq.getPrereqsForAchievement(Guid.Parse(AchievementID));

            requirements     = new List <AchievementDefinition>();
            taskrequirements = new List <TaskDefinition>();
            if (prereqs != null && prereqs.Count <AchievementPrereq>() >= 0)
            {
                foreach (AchievementPrereq pcp in prereqs)
                {
                    if (pcp.RequiredAchievementID != null)
                    {
                        AchievementDefinition ad = AchievementDefinition.getAchievementDefinition((Guid)pcp.RequiredAchievementID);
                        if (ad != null)
                        {
                            requirements.Add(ad);
                        }
                    }
                    else if (pcp.TaskID != null)
                    {
                        TaskDefinition ad = TaskDefinition.getTaskDefinition((Guid)pcp.TaskID);
                        if (ad != null)
                        {
                            taskrequirements.Add(ad);
                        }
                    }
                }
            }
        }
 void Instance_onComplete(AchievementDefinition def)
 {
     // save the achievement as completed
     PlayerPrefs.SetInt(def.name, 1);
     PlayerPrefs.Save();
 }
Exemple #19
0
 public AchievementDefinitionInfo(AchievementDefinition definition)
 {
     this.definition = definition;
 }
Exemple #20
0
    void DisplayDefinitions()
    {
        EditorStyles.textField.wordWrap = true;
        // split window in 2
        GUILayout.BeginHorizontal();
        GUILayout.BeginVertical(GUILayout.MaxWidth(leftPanelWidth));
        GUILayout.Space(5);
        // show all items in a listbox
        definitionScroll = EditorGUILayout.BeginScrollView(definitionScroll, (GUIStyle)"box");

        foreach (Category category in categories.Values)
        {
            EditorGUILayout.BeginHorizontal();
            Rect foldoutRect = GUILayoutUtility.GetRect(new GUIContent(category.category.name), EditorStyles.foldout);
            Rect buttonRect  = new Rect(foldoutRect.xMin + 15, foldoutRect.yMin, foldoutRect.width - 15, foldoutRect.height);
            foldoutRect.width = 15;
            category.foldout  = EditorGUI.Foldout(foldoutRect, category.foldout, category.category.name);
            GUI.depth--;
            if (GUI.Button(buttonRect, "", (GUIStyle)"label"))
            {
                selectedCategory   = category;
                selectedDefinition = null;
                GUI.FocusControl("");
            }
            GUI.depth++;

            EditorGUILayout.EndHorizontal();
            if (category.foldout)
            {
                foreach (AchievementDefinitionInfo definitionInfo in category.achievements)
                {
                    // show selectable name
                    if (definitionInfo != selectedDefinition)
                    {
                        if (GUILayout.Button(definitionInfo.definition.name, (GUIStyle)"label"))
                        {
                            selectedDefinition = definitionInfo;
                            EditorGUIUtility.keyboardControl = 0;
                        }
                    }
                    else
                    {
                        GUILayout.Label(definitionInfo.definition.name, (GUIStyle)"boldLabel");
                    }
                }
            }
        }


        EditorGUILayout.EndScrollView();
        // add - remove buttons
        EditorGUILayout.BeginHorizontal();
        if (GUILayout.Button("+"))
        {
            // add new definition
            AchievementDefinition newDef = new AchievementDefinition();
            newDef.name = "NewAchievement";
            achievementDefinitions.definitions.Add(newDef);
            AchievementDefinitionInfo info = new AchievementDefinitionInfo(newDef);
            definitions.Add(info);
            categories[0].achievements.Add(info);
            EditorUtility.SetDirty(achievementDefinitions);

            selectedDefinition = info;
        }
        if (GUILayout.Button("-"))
        {
            // remove selected definition
            achievementDefinitions.definitions.Remove(selectedDefinition.definition);
            EditorUtility.SetDirty(achievementDefinitions);

            definitions.Remove(selectedDefinition);
            selectedDefinition = null;
        }
        EditorGUILayout.EndHorizontal();
        if (GUILayout.Button("Add Category"))
        {
            // add category
            AchievementCategory cat = new AchievementCategory();
            cat.name = "NewCategory";
            cat.id   = achievementDefinitions.maxCatId++;
            achievementDefinitions.categories.Add(cat);
            EditorUtility.SetDirty(achievementDefinitions);
            Category category = new Category();
            category.category = cat;
            categories.Add(category.category.id, category);
            BuildCategoryPopup();

            selectedCategory   = category;
            selectedDefinition = null;
        }
        GUILayout.Space(5);
        GUILayout.EndVertical();
        // add splitter
        leftPanelWidth = Splitter(leftPanelWidth);


        GUILayout.BeginVertical();

        if (selectedDefinition != null)
        {
            // show definition info
            selectedDefinition.definition.name  = EditorGUILayout.TextField("Name", selectedDefinition.definition.name);
            selectedDefinition.definition.title = EditorGUILayout.TextField("Title", selectedDefinition.definition.title);

            EditorGUI.BeginChangeCheck();
            Category oldCat = categories[selectedDefinition.definition.categoryId];
            selectedDefinition.definition.categoryId = EditorGUILayout.Popup(getPopupIndexFromCategory(categories[selectedDefinition.definition.categoryId]), categoryPopup.ToArray());
            if (EditorGUI.EndChangeCheck())
            {
                // show in correct category
                oldCat.achievements.Remove(selectedDefinition);
                categories[selectedDefinition.definition.categoryId].achievements.Add(selectedDefinition);
            }

            EditorGUILayout.LabelField("Description");
            selectedDefinition.definition.description = EditorGUILayout.TextArea(selectedDefinition.definition.description, GUILayout.Height(EditorStyles.textField.lineHeight * 3));

            EditorGUILayout.LabelField("Incomplete Description");
            selectedDefinition.definition.incompleteDescription = EditorGUILayout.TextArea(selectedDefinition.definition.incompleteDescription, GUILayout.Height(EditorStyles.textField.lineHeight * 3));

            selectedDefinition.definition.hidden = EditorGUILayout.Toggle("Hidden", selectedDefinition.definition.hidden);

            selectedDefinition.definition.type = (AchievementDefinition.Type)EditorGUILayout.EnumPopup("Type", selectedDefinition.definition.type);

            {
                // show conditions depending on type
                switch (selectedDefinition.definition.type)
                {
                case AchievementDefinition.Type.Bool:
                    EditorGUILayout.BeginHorizontal();
                    EditorGUILayout.LabelField(new GUIContent("ConditionValue", "If checked, the variable needs to be true for the achievement to complete"));
                    // true false checkbox
                    selectedDefinition.definition.conditionBoolValue = EditorGUILayout.Toggle(selectedDefinition.definition.conditionBoolValue);
                    EditorGUILayout.EndHorizontal();
                    break;

                case AchievementDefinition.Type.Float:
                    EditorGUILayout.BeginHorizontal();
                    EditorGUILayout.LabelField(new GUIContent("ConditionValue", "The variable needs to be higher then the value given for the achievement to complete"));
                    selectedDefinition.definition.conditionFloatValue = EditorGUILayout.FloatField(selectedDefinition.definition.conditionFloatValue);
                    EditorGUILayout.EndHorizontal();
                    selectedDefinition.definition.progressChangeSize = EditorGUILayout.FloatField(new GUIContent("Progress Change", "Will report progress when variable is divisable by the given value"), selectedDefinition.definition.progressChangeSize);
                    break;

                case AchievementDefinition.Type.Int:
                    EditorGUILayout.BeginHorizontal();
                    EditorGUILayout.LabelField(new GUIContent("ConditionValue", "The variable needs to be higher then the value given for the achievement to complete"));
                    selectedDefinition.definition.conditionIntValue = EditorGUILayout.IntField(selectedDefinition.definition.conditionIntValue);
                    EditorGUILayout.EndHorizontal();
                    selectedDefinition.definition.progressChangeSize = EditorGUILayout.FloatField(new GUIContent("Progress Change", "Will report progress when variable is divisable by the given value"), selectedDefinition.definition.progressChangeSize);
                    break;
                }
            }
        }
        else if (selectedCategory != null)
        {
            EditorGUI.BeginChangeCheck();
            selectedCategory.category.name = EditorGUILayout.TextField("Category Name", selectedCategory.category.name);
            if (EditorGUI.EndChangeCheck())
            {
                BuildCategoryPopup();
            }
            if (selectedCategory.category.id == 0)
            {
                GUI.enabled = false;
            }
            if (GUILayout.Button("Remove"))
            {
                // remove category
                foreach (var achievement in selectedCategory.achievements)
                {
                    achievement.definition.categoryId = 0;
                    categories[0].achievements.Add(achievement);
                }
                categories.Remove(selectedCategory.category.id);

                selectedCategory = null;
                EditorUtility.SetDirty(achievementDefinitions);
            }
            if (selectedCategory == null || selectedCategory.category.id == 0)
            {
                GUI.enabled = true;
            }
        }

        GUILayout.EndVertical();
        GUILayout.EndHorizontal();

        if (GUI.changed)
        {
            EditorUtility.SetDirty(achievementDefinitions);
        }

        // HACK to unfocus controls
        GUI.SetNextControlName("");
    }
Exemple #21
0
 void Instance_onFloatProgress(AchievementDefinition arg1, float arg2, float arg3)
 {
     Debug.Log("Made progress with the achievement " + arg1.title + ": " + arg3 + "/" + arg1.conditionFloatValue);
 }
    public void OnProgressed(Achievement achievement, AchievementProgress progress, AchievementDefinition.Value value) {
        mSaveRequired = true;

        Debug.Log(string.Format("Progressed: {0}", achievement.Name));
    }
Exemple #23
0
        //public void registerAchievementVariable<T>(AchievementVariable<T> variable, string identifier) where T : IComparable
        //{
        //    if (!variables.ContainsKey(identifier))
        //        variables[identifier] = new List<object>();

        //    variables[identifier].Add(variable);

        //    Debug.Log("registered achievement variable with identifier: " + identifier);
        //}

        /// <summary>
        /// Automaticly called by an AchievementVariable to notify that the variable has changed. Will fire the progress and completed events if necesary.
        /// </summary>
        /// <typeparam name="T">The variable type</typeparam>
        /// <param name="variable">The AchievementVariable</param>
        /// <exception cref="System.ArgumentException">Thrown when there is no matching achievement for the given identifier</exception>
        public void VariableChanged <T>(AchievementVariable <T> variable) where T : IComparable
        {
            // check definitions
            if (definitions == null)
            {
                Init();
            }

            if (!achievementDefinitions.ContainsKey(variable.identifier))
            {
                throw new ArgumentException("The identifier " + variable.identifier + " has no matching achievement");
            }

            // get the associated achievement definition
            AchievementDefinition def = achievementDefinitions[variable.identifier];

            if (!achievementStates[variable.identifier].completed)
            {
                //Debug.Log("Checking Achievement " + def.title);
                bool completed = false;
                switch (def.type)
                {
                case AchievementDefinition.Type.Bool:
                    if (variable.Value.Equals(def.conditionBoolValue))
                    {
                        completed = true;
                    }
                    break;

                case AchievementDefinition.Type.Float:
                {
                    AchievementVariable <float> tvar = (AchievementVariable <float>)(object) variable;
                    int pValue = Mathf.FloorToInt(tvar / def.progressChangeSize);
                    if (achievementStates[tvar.identifier].progressValue < pValue)
                    {
                        onFloatProgress(def, tvar, pValue * def.progressChangeSize);
                    }
                    achievementStates[tvar.identifier].progressValue = pValue;         // always set it
                    if (variable.Value.CompareTo(def.conditionFloatValue) >= 0)
                    {
                        completed = true;
                    }
                }
                break;

                case AchievementDefinition.Type.Int:
                {
                    AchievementVariable <int> tvar = (AchievementVariable <int>)(object) variable;
                    int pValue = Mathf.FloorToInt(tvar / def.progressChangeSize);
                    if (achievementStates[tvar.identifier].progressValue < pValue)
                    {
                        onIntProgress(def, tvar, (int)(pValue * def.progressChangeSize));
                    }
                    achievementStates[tvar.identifier].progressValue = pValue;         // always set it
                    if (variable.Value.CompareTo(def.conditionIntValue) >= 0)
                    {
                        completed = true;
                    }
                }
                break;
                }

                if (completed)
                {
                    //Debug.Log("Completed achievement " + def.title);
                    if (onComplete != null)
                    {
                        onComplete(def);
                    }
                    achievementStates[variable.identifier].completed = true;
                    achievementStates[variable.identifier].hidden    = false;
                }
            }
        }