/// <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(); }
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; }
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) { }