Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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));
        }
Ejemplo n.º 5
0
        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));
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        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.");
        }
Ejemplo n.º 8
0
        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);
        }
Ejemplo n.º 9
0
        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);
        }