Пример #1
0
        /// <summary>
        /// Reset all tracking variables.
        /// </summary>
        public void Reset()
        {
            VotesWithSupporters.Clear();
            VoterMessageId.Clear();
            RankedVotesWithSupporters.Clear();
            RankedVoterMessageId.Clear();
            PlanNames.Clear();

            ReferenceVoters.Clear();
            ReferenceVoterPosts.Clear();
            ReferencePlanNames.Clear();
            ReferencePlans.Clear();

            FutureReferences.Clear();

            UndoBuffer.Clear();

            OrderedTaskList.Clear();

            cleanVoteLookup.Clear();
            cleanedKeys.Clear();

            if (VotesWithSupporters.Comparer != Agnostic.StringComparer)
            {
                VotesWithSupporters = new Dictionary <string, HashSet <string> >(Agnostic.StringComparer);
            }
            if (RankedVotesWithSupporters.Comparer != Agnostic.StringComparer)
            {
                RankedVotesWithSupporters = new Dictionary <string, HashSet <string> >(Agnostic.StringComparer);
            }

            OnPropertyChanged("VoteCounter");
            OnPropertyChanged("Tasks");
        }
Пример #2
0
        /// <summary>
        /// Reset all tracking variables.
        /// </summary>
        public void Reset()
        {
            VoteStorage.Clear();
            ReferenceOrigins.Clear();
            ReferencePlans.Clear();
            FutureReferences.Clear();
            UndoBuffer.Clear();

            VoteDefinedTasks.Clear();
            OrderedVoteTaskList.Clear();
            TaskList.Clear();

            OnPropertyChanged("VoteCounter");
            OnPropertyChanged("Tasks");
        }
Пример #3
0
        /// <summary>
        /// Store a plan's information to allow it to be looked up by plan name or post ID.
        /// If the plan name has already been entered, will not update anything and return false.
        /// </summary>
        /// <param name="planName">The canonical name of the plan.</param>
        /// <param name="postID">The post ID the plan was defined in.</param>
        /// <param name="plan">The the vote line block that defines the plan.</param>
        /// <returns>Returns true if it was added, or false if it already exists.</returns>
        public bool AddReferencePlan(Origin planOrigin, VoteLineBlock plan)
        {
            // If it doesn't exist, we can just add it.
            if (ReferenceOrigins.Add(planOrigin))
            {
                ReferencePlans.Add(planOrigin, plan);
                return(true);
            }
            else if (
                (globalOptions.AllowUsersToUpdatePlans == BoolEx.True ||
                 (globalOptions.AllowUsersToUpdatePlans == BoolEx.Unknown && Quest !.AllowUsersToUpdatePlans)) &&
                ReferenceOrigins.TryGetValue(planOrigin, out Origin currentOrigin)
                )
            {
                // Author can replace existing version of a plan he wrote on conditions:
                // - Options allow plan replacement
                // - Plan written by same author
                // - Plan has the same name (surrounding if check, which includes identity type)
                // - New plan is in a later post than the previous
                // - New plan is more than one line (ie: not simply re-voting for the existing version)
                // - Content of the plan is different

                if (planOrigin.Source != Origin.Empty && planOrigin.Source == currentOrigin.Source &&
                    planOrigin.ID > currentOrigin.ID &&
                    plan.Lines.Count > 1 &&
                    ReferencePlans.TryGetValue(currentOrigin, out VoteLineBlock currentPlan) &&
                    plan != currentPlan)
                {
                    ReferenceOrigins.Remove(currentOrigin);
                    ReferenceOrigins.Add(planOrigin);
                    ReferencePlans[planOrigin] = plan;
                    return(true);
                }
            }

            return(false);
        }
Пример #4
0
 /// <summary>
 /// Get the reference plan corresponding to the provided plan name.
 /// </summary>
 /// <param name="planName">The name of the plan to get.</param>
 /// <returns>Returns the reference plan, if found. Otherwise null.</returns>
 public VoteLineBlock?GetReferencePlan(Origin planOrigin)
 {
     return(ReferencePlans.GetValueOrDefault(planOrigin));
 }