示例#1
0
        public void Flush(IFlush flush, Roles roles, IRoleType roleType)
        {
            if (this.Count == 0)
            {
                flush.ClearCompositeAndCompositesRole(roles.Reference, roleType);
            }
            else
            {
                if (this.added != null && this.added.Count > 0)
                {
                    flush.AddCompositeRole(roles.Reference, roleType, this.added);
                }

                if (this.removed != null && this.removed.Count > 0)
                {
                    flush.RemoveCompositeRole(roles.Reference, roleType, this.removed);
                }
            }

            if (this.added != null)
            {
                this.baseline.UnionWith(this.added);
            }

            if (this.removed != null)
            {
                this.baseline.ExceptWith(this.removed);
            }

            this.added   = null;
            this.removed = null;
        }
示例#2
0
        public void Flush(IFlush flush)
        {
            IRoleType        unitRole  = null;
            List <IRoleType> unitRoles = null;

            foreach (var flushRole in this.RequireFlushRoles)
            {
                if (flushRole.ObjectType is IUnit)
                {
                    if (unitRole == null)
                    {
                        unitRole = flushRole;
                    }
                    else
                    {
                        if (unitRoles == null)
                        {
                            unitRoles = new List <IRoleType> {
                                unitRole
                            };
                        }

                        unitRoles.Add(flushRole);
                    }
                }
                else
                {
                    if (flushRole.IsOne)
                    {
                        var role = this.GetCompositeRole(flushRole);
                        if (role != null)
                        {
                            flush.SetCompositeRole(this.Reference, flushRole, role.Value);
                        }
                        else
                        {
                            flush.ClearCompositeAndCompositesRole(this.Reference, flushRole);
                        }
                    }
                    else
                    {
                        var roles = this.ModifiedRolesByRoleType[flushRole];
                        roles.Flush(flush, this, flushRole);
                    }
                }
            }

            if (unitRoles != null)
            {
                unitRoles.Sort(MetaObjectComparer.ById);
                flush.SetUnitRoles(this, unitRoles);
            }
            else if (unitRole != null)
            {
                flush.SetUnitRole(this.Reference, unitRole, this.GetUnitRole(unitRole));
            }

            this.requireFlushRoles = null;
        }
示例#3
0
 public FullHouse(IFlush flush)
 {
     _flush = flush;
 }