Ejemplo n.º 1
0
        /// <summary> Returns the AccessController denying the player from changing blocks at the given coordinates. </summary>
        /// <remarks> If no AccessController denies the player, returns null. </remarks>
        public AccessController CanAffect(Player p, ushort x, ushort y, ushort z)
        {
            Zone[] zones = Zones.Items;
            if (zones.Length == 0)
            {
                goto checkRank;                    // TODO: avoid this
            }
            // Check zones specifically allowed in
            for (int i = 0; i < zones.Length; i++)
            {
                Zone zn = zones[i];
                if (x < zn.MinX || x > zn.MaxX || y < zn.MinY || y > zn.MaxY || z < zn.MinZ || z > zn.MaxZ)
                {
                    continue;
                }

                ZoneConfig cfg = zn.Config;
                if (cfg.BuildBlacklist.Count > 0 && cfg.BuildBlacklist.CaselessContains(p.name))
                {
                    break;
                }

                if (p.group.Permission >= cfg.BuildMin)
                {
                    return(null);
                }
                if (cfg.BuildWhitelist.Count > 0 && cfg.BuildWhitelist.CaselessContains(p.name))
                {
                    return(null);
                }
            }

            // Check zones denied from
            for (int i = 0; i < zones.Length; i++)
            {
                Zone zn = zones[i];
                if (x < zn.MinX || x > zn.MaxX || y < zn.MinY || y > zn.MaxY || z < zn.MinZ || z > zn.MaxZ)
                {
                    continue;
                }
                AccessResult access = zn.Access.Check(p.name, p.Rank);
                if (access == AccessResult.Allowed || access == AccessResult.Whitelisted)
                {
                    continue;
                }

                return(zn.Access);
            }

checkRank:
            if (p.level == this)
            {
                return(p.AllowBuild ? null : BuildAccess);
            }
            else
            {
                return(BuildAccess.CheckAllowed(p) ? null : BuildAccess);
            }
        }
 public CollabHistoryPresenter(ICollabHistoryWindow window, ICollabHistoryItemFactory factory, IRevisionsService service)
 {
     this.m_Window      = window;
     this.m_Factory     = factory;
     this.m_Service     = service;
     this.m_CurrentPage = 0;
     this.m_BuildAccess = new BuildAccess();
 }
Ejemplo n.º 3
0
 public CollabHistoryPresenter(ICollabHistoryWindow window, ICollabHistoryItemFactory factory, IRevisionsService service)
 {
     m_Window      = window;
     m_Factory     = factory;
     m_Service     = service;
     m_CurrentPage = 0;
     m_BuildAccess = new BuildAccess();
     m_Service.FetchRevisionsCallback += OnFetchRevisions;
 }
Ejemplo n.º 4
0
        bool CheckRank(Player p)
        {
            if (p.ZoneSpam <= DateTime.UtcNow)
            {
                BuildAccess.CheckDetailed(p);
                p.ZoneSpam = DateTime.UtcNow.AddSeconds(2);
            }
            if (p.level == this)
            {
                return(p.AllowBuild);
            }

            AccessResult access = BuildAccess.Check(p);

            return(access == AccessResult.Whitelisted || access == AccessResult.Allowed);
        }
 public TestableCollabHistoryPresenter(ICollabHistoryWindow window, ICollabHistoryItemFactory factory, IRevisionsService service, BuildAccess buildAccess) : base(window, factory, service, buildAccess)
 {
 }