public void GetByID_OneItem_ReturnsPCBasePermission() { // Arrange var id = Guid.NewGuid(); PCBasePermission entity = new PCBasePermission { ID = id }; // Act MessageHub.Instance.Publish(new OnCacheObjectSet <PCBasePermission>(entity)); // Assert Assert.AreNotSame(entity, _cache.GetByID(id)); }
private void DoPurchase() { var player = GetPC(); var data = BaseService.GetPlayerTempData(GetPC()); var style = DataService.BuildingStyle.GetByID(data.BuildingStyleID); var dbPlayer = DataService.Player.GetByID(player.GlobalID); int purchasePrice = style.PurchasePrice + (int)(style.PurchasePrice * (dbPlayer.LeaseRate * 0.01f)); if (player.Gold < purchasePrice) { player.SendMessage("You don't have enough credits to purchase that apartment."); return; } PCBase pcApartment = new PCBase { PlayerID = player.GlobalID, BuildingStyleID = style.ID, PCBaseTypeID = (int)Enumeration.PCBaseType.Apartment, ApartmentBuildingID = data.ApartmentBuildingID, CustomName = string.Empty, DateInitialPurchase = DateTime.UtcNow, DateRentDue = DateTime.UtcNow.AddDays(7), AreaResref = style.Resref, DateFuelEnds = DateTime.UtcNow, Sector = "AP", }; DataService.SubmitDataChange(pcApartment, DatabaseActionType.Insert); PCBasePermission permission = new PCBasePermission { PCBaseID = pcApartment.ID, PlayerID = player.GlobalID }; DataService.SubmitDataChange(permission, DatabaseActionType.Insert); // Grant all base permissions to owner. var allPermissions = Enum.GetValues(typeof(BasePermission)).Cast <BasePermission>().ToArray(); BasePermissionService.GrantBasePermissions(player, pcApartment.ID, allPermissions); _.TakeGoldFromCreature(purchasePrice, player, true); LoadMainPage(); ClearNavigationStack(); ChangePage("MainPage", false); }
public void GetPlayerPublicPermissionOrDefault_Private_ShouldReturnNull() { // Arrange var playerID = Guid.NewGuid(); var baseID = Guid.NewGuid(); var entity1 = new PCBasePermission { ID = Guid.NewGuid(), PlayerID = playerID, PCBaseID = baseID, IsPublicPermission = true }; // Act MessageHub.Instance.Publish(new OnCacheObjectSet <PCBasePermission>(entity1)); // Assert var result = _cache.GetPlayerPrivatePermissionOrDefault(playerID, baseID); Assert.AreSame(null, result); }
public void GetByID_TwoItems_ReturnsCorrectObject() { // Arrange var id1 = Guid.NewGuid(); var id2 = Guid.NewGuid(); PCBasePermission entity1 = new PCBasePermission { ID = id1 }; PCBasePermission entity2 = new PCBasePermission { ID = id2 }; // Act MessageHub.Instance.Publish(new OnCacheObjectSet <PCBasePermission>(entity1)); MessageHub.Instance.Publish(new OnCacheObjectSet <PCBasePermission>(entity2)); // Assert Assert.AreNotSame(entity1, _cache.GetByID(id1)); Assert.AreNotSame(entity2, _cache.GetByID(id2)); }
public void GetByID_RemovedItem_ReturnsCorrectObject() { // Arrange var id1 = Guid.NewGuid(); var id2 = Guid.NewGuid(); PCBasePermission entity1 = new PCBasePermission { ID = id1 }; PCBasePermission entity2 = new PCBasePermission { ID = id2 }; // Act MessageHub.Instance.Publish(new OnCacheObjectSet <PCBasePermission>(entity1)); MessageHub.Instance.Publish(new OnCacheObjectSet <PCBasePermission>(entity2)); MessageHub.Instance.Publish(new OnCacheObjectDeleted <PCBasePermission>(entity1)); // Assert Assert.Throws <KeyNotFoundException>(() => { _cache.GetByID(id1); }); Assert.AreNotSame(entity2, _cache.GetByID(id2)); }
private void TogglePermission(NWPlayer player, BasePermission permission) { var data = _base.GetPlayerTempData(GetPC()); var dbPermission = _data.SingleOrDefault <PCBasePermission>(x => x.PlayerID == player.GlobalID && x.PCBaseID == data.PCBaseID); DatabaseActionType action = DatabaseActionType.Update; if (dbPermission == null) { dbPermission = new PCBasePermission { PCBaseID = data.PCBaseID, PlayerID = player.GlobalID }; action = DatabaseActionType.Insert; } switch (permission) { case BasePermission.CanPlaceEditStructures: dbPermission.CanPlaceEditStructures = !dbPermission.CanPlaceEditStructures; break; case BasePermission.CanAccessStructureInventory: dbPermission.CanAccessStructureInventory = !dbPermission.CanAccessStructureInventory; break; case BasePermission.CanManageBaseFuel: dbPermission.CanManageBaseFuel = !dbPermission.CanManageBaseFuel; break; case BasePermission.CanExtendLease: dbPermission.CanExtendLease = !dbPermission.CanExtendLease; break; case BasePermission.CanEnterBuildings: dbPermission.CanEnterBuildings = !dbPermission.CanEnterBuildings; break; case BasePermission.CanRetrieveStructures: dbPermission.CanRetrieveStructures = !dbPermission.CanRetrieveStructures; break; case BasePermission.CanRenameStructures: dbPermission.CanRenameStructures = !dbPermission.CanRenameStructures; break; case BasePermission.CanEditPrimaryResidence: dbPermission.CanEditPrimaryResidence = !dbPermission.CanEditPrimaryResidence; break; case BasePermission.CanRemovePrimaryResidence: dbPermission.CanRemovePrimaryResidence = !dbPermission.CanRemovePrimaryResidence; break; default: throw new ArgumentOutOfRangeException(nameof(permission), permission, null); } _data.SubmitDataChange(dbPermission, action); }
public void PurchaseArea(NWPlayer player, NWArea area, string sector) { if (sector != AreaSector.Northwest && sector != AreaSector.Northeast && sector != AreaSector.Southwest && sector != AreaSector.Southeast) { throw new ArgumentException(nameof(sector) + " must match one of the valid sector values: NE, NW, SE, SW"); } if (area.Width < 32) { throw new Exception("Area must be at least 32 tiles wide."); } if (area.Height < 32) { throw new Exception("Area must be at least 32 tiles high."); } var dbArea = _data.Single <Area>(x => x.Resref == area.Resref); Guid?existingOwner = null; switch (sector) { case AreaSector.Northwest: existingOwner = dbArea.NorthwestOwner; break; case AreaSector.Northeast: existingOwner = dbArea.NortheastOwner; break; case AreaSector.Southwest: existingOwner = dbArea.SouthwestOwner; break; case AreaSector.Southeast: existingOwner = dbArea.SoutheastOwner; break; } if (existingOwner != null) { player.SendMessage("Another player already owns that sector."); return; } var dbPlayer = _data.Get <Player>(player.GlobalID); int purchasePrice = dbArea.PurchasePrice + (int)(dbArea.PurchasePrice * (dbPlayer.LeaseRate * 0.01f)); if (player.Gold < purchasePrice) { player.SendMessage("You do not have enough credits to purchase that sector."); return; } player.AssignCommand(() => _.TakeGoldFromCreature(purchasePrice, player.Object, TRUE)); switch (sector) { case AreaSector.Northwest: dbArea.NorthwestOwner = player.GlobalID; break; case AreaSector.Northeast: dbArea.NortheastOwner = player.GlobalID; break; case AreaSector.Southwest: dbArea.SouthwestOwner = player.GlobalID; break; case AreaSector.Southeast: dbArea.SoutheastOwner = player.GlobalID; break; } _data.SubmitDataChange(dbArea, DatabaseActionType.Update); PCBase pcBase = new PCBase { AreaResref = dbArea.Resref, PlayerID = player.GlobalID, DateInitialPurchase = DateTime.UtcNow, DateRentDue = DateTime.UtcNow.AddDays(7), DateFuelEnds = DateTime.UtcNow, Sector = sector, PCBaseTypeID = (int)Enumeration.PCBaseType.RegularBase, CustomName = string.Empty }; _data.SubmitDataChange(pcBase, DatabaseActionType.Insert); PCBasePermission permission = new PCBasePermission { PCBaseID = pcBase.ID, PlayerID = player.GlobalID }; _data.SubmitDataChange(permission, DatabaseActionType.Insert); // Grant all base permissions to owner. var allPermissions = Enum.GetValues(typeof(BasePermission)).Cast <BasePermission>().ToArray(); _perm.GrantBasePermissions(player, pcBase.ID, allPermissions); player.FloatingText("You purchase " + area.Name + " (" + sector + ") for " + purchasePrice + " credits."); }
private void TogglePermission(Guid playerID, BasePermission permission, bool isPublicPermission) { var data = BaseService.GetPlayerTempData(GetPC()); var dbPermission = isPublicPermission ? DataService.SingleOrDefault <PCBasePermission>(x => x.PCBaseID == data.PCBaseID && x.IsPublicPermission) : DataService.SingleOrDefault <PCBasePermission>(x => x.PlayerID == playerID && x.PCBaseID == data.PCBaseID && !x.IsPublicPermission); DatabaseActionType action = DatabaseActionType.Update; if (dbPermission == null) { dbPermission = new PCBasePermission { PCBaseID = data.PCBaseID, PlayerID = playerID, IsPublicPermission = isPublicPermission }; action = DatabaseActionType.Insert; } switch (permission) { case BasePermission.CanPlaceEditStructures: dbPermission.CanPlaceEditStructures = !dbPermission.CanPlaceEditStructures; break; case BasePermission.CanAccessStructureInventory: dbPermission.CanAccessStructureInventory = !dbPermission.CanAccessStructureInventory; break; case BasePermission.CanManageBaseFuel: dbPermission.CanManageBaseFuel = !dbPermission.CanManageBaseFuel; break; case BasePermission.CanExtendLease: dbPermission.CanExtendLease = !dbPermission.CanExtendLease; break; case BasePermission.CanEnterBuildings: dbPermission.CanEnterBuildings = !dbPermission.CanEnterBuildings; break; case BasePermission.CanRetrieveStructures: dbPermission.CanRetrieveStructures = !dbPermission.CanRetrieveStructures; break; case BasePermission.CanRenameStructures: dbPermission.CanRenameStructures = !dbPermission.CanRenameStructures; break; case BasePermission.CanEditPrimaryResidence: dbPermission.CanEditPrimaryResidence = !dbPermission.CanEditPrimaryResidence; break; case BasePermission.CanRemovePrimaryResidence: dbPermission.CanRemovePrimaryResidence = !dbPermission.CanRemovePrimaryResidence; break; case BasePermission.CanChangeStructureMode: dbPermission.CanChangeStructureMode = !dbPermission.CanChangeStructureMode; break; case BasePermission.CanAdjustPublicPermissions: dbPermission.CanAdjustPublicPermissions = !dbPermission.CanAdjustPublicPermissions; break; case BasePermission.CanFlyStarship: dbPermission.CanFlyStarship = !dbPermission.CanFlyStarship; break; case BasePermission.CanDockStarship: dbPermission.CanDockStarship = !dbPermission.CanDockStarship; break; default: throw new ArgumentOutOfRangeException(nameof(permission), permission, null); } DataService.SubmitDataChange(dbPermission, action); }
public static void GrantBasePermissions(Guid player, Guid pcBaseID, params BasePermission[] permissions) { var dbPermission = DataService.GetAll <PCBasePermission>() .SingleOrDefault(x => x.PCBaseID == pcBaseID && x.PlayerID == player && !x.IsPublicPermission); var action = DatabaseActionType.Update; if (dbPermission == null) { dbPermission = new PCBasePermission { PCBaseID = pcBaseID, PlayerID = player }; action = DatabaseActionType.Insert; } foreach (var permission in permissions) { switch (permission) { case BasePermission.CanAccessStructureInventory: dbPermission.CanAccessStructureInventory = true; break; case BasePermission.CanPlaceEditStructures: dbPermission.CanPlaceEditStructures = true; break; case BasePermission.CanManageBaseFuel: dbPermission.CanManageBaseFuel = true; break; case BasePermission.CanExtendLease: dbPermission.CanExtendLease = true; break; case BasePermission.CanAdjustPermissions: dbPermission.CanAdjustPermissions = true; break; case BasePermission.CanEnterBuildings: dbPermission.CanEnterBuildings = true; break; case BasePermission.CanRetrieveStructures: dbPermission.CanRetrieveStructures = true; break; case BasePermission.CanRenameStructures: dbPermission.CanRenameStructures = true; break; case BasePermission.CanCancelLease: dbPermission.CanCancelLease = true; break; case BasePermission.CanEditPrimaryResidence: dbPermission.CanEditPrimaryResidence = true; break; case BasePermission.CanRemovePrimaryResidence: dbPermission.CanRemovePrimaryResidence = true; break; case BasePermission.CanChangeStructureMode: dbPermission.CanChangeStructureMode = true; break; case BasePermission.CanAdjustPublicPermissions: dbPermission.CanAdjustPublicPermissions = true; break; case BasePermission.CanDockStarship: dbPermission.CanDockStarship = true; break; case BasePermission.CanFlyStarship: dbPermission.CanFlyStarship = true; break; default: throw new ArgumentOutOfRangeException(); } } DataService.SubmitDataChange(dbPermission, action); }