private void TogglePermission(NWPlayer player, StructurePermission permission) { var data = _base.GetPlayerTempData(GetPC()); var dbPermission = _data.SingleOrDefault <PCBaseStructurePermission>(x => x.PlayerID == player.GlobalID && x.PCBaseStructureID == data.StructureID); var action = DatabaseActionType.Update; if (dbPermission == null) { dbPermission = new PCBaseStructurePermission() { PCBaseStructureID = data.StructureID, PlayerID = player.GlobalID }; action = DatabaseActionType.Insert; } switch (permission) { case StructurePermission.CanPlaceEditStructures: dbPermission.CanPlaceEditStructures = !dbPermission.CanPlaceEditStructures; break; case StructurePermission.CanAccessStructureInventory: dbPermission.CanAccessStructureInventory = !dbPermission.CanAccessStructureInventory; break; case StructurePermission.CanEnterBuilding: dbPermission.CanEnterBuilding = !dbPermission.CanEnterBuilding; break; case StructurePermission.CanAdjustPermissions: dbPermission.CanAdjustPermissions = !dbPermission.CanAdjustPermissions; break; case StructurePermission.CanRetrieveStructures: dbPermission.CanRetrieveStructures = !dbPermission.CanRetrieveStructures; break; case StructurePermission.CanRenameStructures: dbPermission.CanRenameStructures = !dbPermission.CanRenameStructures; break; case StructurePermission.CanEditPrimaryResidence: dbPermission.CanEditPrimaryResidence = !dbPermission.CanEditPrimaryResidence; break; case StructurePermission.CanRemovePrimaryResidence: dbPermission.CanRemovePrimaryResidence = !dbPermission.CanRemovePrimaryResidence; break; default: throw new ArgumentOutOfRangeException(nameof(permission), permission, null); } _data.SubmitDataChange(dbPermission, action); }
private void TogglePermission(Guid playerID, StructurePermission permission, bool isPublicPermission) { var data = BaseService.GetPlayerTempData(GetPC()); var dbPermission = isPublicPermission ? DataService.SingleOrDefault <PCBaseStructurePermission>(x => x.PCBaseStructureID == data.StructureID && x.IsPublicPermission) : DataService.SingleOrDefault <PCBaseStructurePermission>(x => x.PlayerID == playerID && x.PCBaseStructureID == data.StructureID && !x.IsPublicPermission); var action = DatabaseActionType.Update; if (dbPermission == null) { dbPermission = new PCBaseStructurePermission() { PCBaseStructureID = data.StructureID, PlayerID = playerID, IsPublicPermission = isPublicPermission }; action = DatabaseActionType.Insert; } switch (permission) { case StructurePermission.CanPlaceEditStructures: dbPermission.CanPlaceEditStructures = !dbPermission.CanPlaceEditStructures; break; case StructurePermission.CanAccessStructureInventory: dbPermission.CanAccessStructureInventory = !dbPermission.CanAccessStructureInventory; break; case StructurePermission.CanEnterBuilding: dbPermission.CanEnterBuilding = !dbPermission.CanEnterBuilding; break; case StructurePermission.CanAdjustPermissions: dbPermission.CanAdjustPermissions = !dbPermission.CanAdjustPermissions; break; case StructurePermission.CanRetrieveStructures: dbPermission.CanRetrieveStructures = !dbPermission.CanRetrieveStructures; break; case StructurePermission.CanRenameStructures: dbPermission.CanRenameStructures = !dbPermission.CanRenameStructures; break; case StructurePermission.CanEditPrimaryResidence: dbPermission.CanEditPrimaryResidence = !dbPermission.CanEditPrimaryResidence; break; case StructurePermission.CanRemovePrimaryResidence: dbPermission.CanRemovePrimaryResidence = !dbPermission.CanRemovePrimaryResidence; break; case StructurePermission.CanChangeStructureMode: dbPermission.CanChangeStructureMode = !dbPermission.CanChangeStructureMode; break; case StructurePermission.CanAdjustPublicPermissions: dbPermission.CanAdjustPublicPermissions = !dbPermission.CanAdjustPublicPermissions; break; case StructurePermission.CanFlyStarship: dbPermission.CanFlyStarship = !dbPermission.CanFlyStarship; break; default: throw new ArgumentOutOfRangeException(nameof(permission), permission, null); } DataService.SubmitDataChange(dbPermission, action); }
public static bool HasStructurePermission(NWPlayer player, Guid pcBaseStructureID, StructurePermission permission) { if (player.IsDM) { return(true); } var dbStructure = DataService.GetAll <PCBaseStructure>().Single(x => x.ID == pcBaseStructureID); // Check whether this is an item of furniture in a building. If so, check the building's permissions. if (!String.IsNullOrWhiteSpace(dbStructure.ParentPCBaseStructureID.ToString())) { return(HasStructurePermission(player, (Guid)dbStructure.ParentPCBaseStructureID, permission)); } // Public base permissions take priority over all other permissions. Check those first. var publicBasePermission = DataService.SingleOrDefault <PCBasePermission>(x => x.PCBaseID == dbStructure.PCBaseID && x.IsPublicPermission); if (publicBasePermission != null) { if (permission == StructurePermission.CanAccessStructureInventory && publicBasePermission.CanAccessStructureInventory) { return(true); } if (permission == StructurePermission.CanPlaceEditStructures && publicBasePermission.CanPlaceEditStructures) { return(true); } if (permission == StructurePermission.CanEnterBuilding && publicBasePermission.CanEnterBuildings) { return(true); } if (permission == StructurePermission.CanRetrieveStructures && publicBasePermission.CanRetrieveStructures) { return(true); } if (permission == StructurePermission.CanAdjustPermissions && publicBasePermission.CanAdjustPermissions) { return(true); } if (permission == StructurePermission.CanRenameStructures && publicBasePermission.CanRenameStructures) { return(true); } if (permission == StructurePermission.CanEditPrimaryResidence && publicBasePermission.CanEditPrimaryResidence) { return(true); } if (permission == StructurePermission.CanRemovePrimaryResidence && publicBasePermission.CanRemovePrimaryResidence) { return(true); } if (permission == StructurePermission.CanChangeStructureMode && publicBasePermission.CanChangeStructureMode) { return(true); } if (permission == StructurePermission.CanAdjustPublicPermissions && publicBasePermission.CanAdjustPublicPermissions) { return(true); } if (permission == StructurePermission.CanFlyStarship && publicBasePermission.CanFlyStarship) { return(true); } } // Public structure permissions are the next thing we check. var publicStructurePermission = DataService.SingleOrDefault <PCBaseStructurePermission>(x => x.PCBaseStructureID == dbStructure.ID && x.IsPublicPermission); if (publicStructurePermission != null) { if (permission == StructurePermission.CanAccessStructureInventory && publicStructurePermission.CanAccessStructureInventory) { return(true); } if (permission == StructurePermission.CanPlaceEditStructures && publicStructurePermission.CanPlaceEditStructures) { return(true); } if (permission == StructurePermission.CanEnterBuilding && publicStructurePermission.CanEnterBuilding) { return(true); } if (permission == StructurePermission.CanRetrieveStructures && publicStructurePermission.CanRetrieveStructures) { return(true); } if (permission == StructurePermission.CanAdjustPermissions && publicStructurePermission.CanAdjustPermissions) { return(true); } if (permission == StructurePermission.CanRenameStructures && publicStructurePermission.CanRenameStructures) { return(true); } if (permission == StructurePermission.CanEditPrimaryResidence && publicStructurePermission.CanEditPrimaryResidence) { return(true); } if (permission == StructurePermission.CanRemovePrimaryResidence && publicStructurePermission.CanRemovePrimaryResidence) { return(true); } if (permission == StructurePermission.CanChangeStructureMode && publicStructurePermission.CanChangeStructureMode) { return(true); } if (permission == StructurePermission.CanAdjustPublicPermissions && publicStructurePermission.CanAdjustPublicPermissions) { return(true); } if (permission == StructurePermission.CanFlyStarship && publicStructurePermission.CanFlyStarship) { return(true); } } // Base permissions take priority over structure permissions. Check those next. var basePermission = DataService.SingleOrDefault <PCBasePermission>(x => x.PlayerID == player.GlobalID && x.PCBaseID == dbStructure.PCBaseID && !x.IsPublicPermission); if (basePermission != null) { if (permission == StructurePermission.CanAccessStructureInventory && basePermission.CanAccessStructureInventory) { return(true); } if (permission == StructurePermission.CanPlaceEditStructures && basePermission.CanPlaceEditStructures) { return(true); } if (permission == StructurePermission.CanEnterBuilding && basePermission.CanEnterBuildings) { return(true); } if (permission == StructurePermission.CanRetrieveStructures && basePermission.CanRetrieveStructures) { return(true); } if (permission == StructurePermission.CanAdjustPermissions && basePermission.CanAdjustPermissions) { return(true); } if (permission == StructurePermission.CanRenameStructures && basePermission.CanRenameStructures) { return(true); } if (permission == StructurePermission.CanEditPrimaryResidence && basePermission.CanEditPrimaryResidence) { return(true); } if (permission == StructurePermission.CanRemovePrimaryResidence && basePermission.CanRemovePrimaryResidence) { return(true); } if (permission == StructurePermission.CanChangeStructureMode && basePermission.CanChangeStructureMode) { return(true); } if (permission == StructurePermission.CanAdjustPublicPermissions && basePermission.CanAdjustPublicPermissions) { return(true); } if (permission == StructurePermission.CanFlyStarship && basePermission.CanFlyStarship) { return(true); } } // Didn't find a base permission. Check the structure permissions. var structurePermission = DataService.GetAll <PCBaseStructurePermission>() .SingleOrDefault(x => x.PCBaseStructureID == pcBaseStructureID && x.PlayerID == player.GlobalID && !x.IsPublicPermission); if (structurePermission == null) { return(false); } if (permission == StructurePermission.CanAccessStructureInventory && structurePermission.CanAccessStructureInventory) { return(true); } if (permission == StructurePermission.CanPlaceEditStructures && structurePermission.CanPlaceEditStructures) { return(true); } if (permission == StructurePermission.CanEnterBuilding && structurePermission.CanEnterBuilding) { return(true); } if (permission == StructurePermission.CanRetrieveStructures && structurePermission.CanRetrieveStructures) { return(true); } if (permission == StructurePermission.CanAdjustPermissions && structurePermission.CanAdjustPermissions) { return(true); } if (permission == StructurePermission.CanRenameStructures && structurePermission.CanRenameStructures) { return(true); } if (permission == StructurePermission.CanEditPrimaryResidence && structurePermission.CanEditPrimaryResidence) { return(true); } if (permission == StructurePermission.CanRemovePrimaryResidence && structurePermission.CanRemovePrimaryResidence) { return(true); } if (permission == StructurePermission.CanChangeStructureMode && structurePermission.CanChangeStructureMode) { return(true); } if (permission == StructurePermission.CanAdjustPublicPermissions && structurePermission.CanAdjustPublicPermissions) { return(true); } if (permission == StructurePermission.CanFlyStarship && structurePermission.CanFlyStarship) { return(true); } // Player doesn't have permission. return(false); }
public bool HasStructurePermission(NWPlayer player, Guid pcBaseStructureID, StructurePermission permission) { if (player.IsDM) { return(true); } // Base permissions take priority over structure permissions. Check those first. var dbStructure = _data.GetAll <PCBaseStructure>().Single(x => x.ID == pcBaseStructureID); var basePermission = _data.SingleOrDefault <PCBasePermission>(x => x.PlayerID == player.GlobalID && x.PCBaseID == dbStructure.PCBaseID); if (basePermission != null) { if (permission == StructurePermission.CanAccessStructureInventory && basePermission.CanAccessStructureInventory) { return(true); } if (permission == StructurePermission.CanPlaceEditStructures && basePermission.CanPlaceEditStructures) { return(true); } if (permission == StructurePermission.CanEnterBuilding && basePermission.CanEnterBuildings) { return(true); } if (permission == StructurePermission.CanRetrieveStructures && basePermission.CanRetrieveStructures) { return(true); } if (permission == StructurePermission.CanAdjustPermissions && basePermission.CanAdjustPermissions) { return(true); } if (permission == StructurePermission.CanRenameStructures && basePermission.CanRenameStructures) { return(true); } if (permission == StructurePermission.CanEditPrimaryResidence && basePermission.CanEditPrimaryResidence) { return(true); } if (permission == StructurePermission.CanRemovePrimaryResidence && basePermission.CanRemovePrimaryResidence) { return(true); } } // Didn't find a base permission. Check the structure permissions. var structurePermission = _data.GetAll <PCBaseStructurePermission>().SingleOrDefault(x => x.PCBaseStructureID == pcBaseStructureID && x.PlayerID == player.GlobalID); if (structurePermission == null) { return(false); } if (permission == StructurePermission.CanAccessStructureInventory && structurePermission.CanAccessStructureInventory) { return(true); } if (permission == StructurePermission.CanPlaceEditStructures && structurePermission.CanPlaceEditStructures) { return(true); } if (permission == StructurePermission.CanEnterBuilding && structurePermission.CanEnterBuilding) { return(true); } if (permission == StructurePermission.CanRetrieveStructures && structurePermission.CanRetrieveStructures) { return(true); } if (permission == StructurePermission.CanAdjustPermissions && structurePermission.CanAdjustPermissions) { return(true); } if (permission == StructurePermission.CanRenameStructures && structurePermission.CanRenameStructures) { return(true); } if (permission == StructurePermission.CanEditPrimaryResidence && structurePermission.CanEditPrimaryResidence) { return(true); } if (permission == StructurePermission.CanRemovePrimaryResidence && structurePermission.CanRemovePrimaryResidence) { return(true); } // Player doesn't have permission. return(false); }