예제 #1
0
        private string BuildItemName(PCMarketListing listing)
        {
            // Build the item name. Example:
            // 1x Sword of Doom (5000 Credits) [RL: 50]
            string listingName = listing.ItemStackSize + "x " + listing.ItemName + " (" + listing.Price + " credits)";

            if (listing.ItemRecommendedLevel > 0)
            {
                listingName += " [RL: " + listing.ItemRecommendedLevel + "]";
            }

            return(listingName);
        }
        public void GetByID_OneItem_ReturnsPCMarketListing()
        {
            // Arrange
            var             id     = Guid.NewGuid();
            PCMarketListing entity = new PCMarketListing {
                ID = id
            };

            // Act
            MessageHub.Instance.Publish(new OnCacheObjectSet <PCMarketListing>(entity));

            // Assert
            Assert.AreNotSame(entity, _cache.GetByID(id));
        }
예제 #3
0
        private void ListItem()
        {
            var player         = GetPC();
            var terminal       = NWGameObject.OBJECT_SELF;
            var model          = MarketService.GetPlayerMarketData(player);
            var marketRegionID = MarketService.GetMarketRegionID(terminal);
            var feeRate        = MarketService.CalculateFeePercentage(model.LengthDays);
            int fees           = (int)(model.SellPrice * feeRate);

            if (fees < 1)
            {
                fees = 1;
            }

            if (player.Gold < fees)
            {
                player.FloatingText("You do not have enough credits to pay the listing fees.");
                return;
            }

            _.TakeGoldFromCreature(fees, player, TRUE);

            PCMarketListing listing = new PCMarketListing
            {
                SellerPlayerID       = player.GlobalID,
                Note                 = model.SellerNote ?? string.Empty,
                Price                = model.SellPrice,
                MarketRegionID       = marketRegionID,
                MarketCategoryID     = model.ItemMarketCategoryID,
                DatePosted           = DateTime.UtcNow,
                DateExpires          = DateTime.UtcNow.AddDays(model.LengthDays),
                DateSold             = null,
                BuyerPlayerID        = null,
                ItemID               = model.ItemID.ToString(),
                ItemName             = model.ItemName,
                ItemTag              = model.ItemTag,
                ItemResref           = model.ItemResref,
                ItemObject           = model.ItemObject,
                ItemRecommendedLevel = model.ItemRecommendedLevel,
                ItemStackSize        = model.ItemStackSize
            };

            DataService.SubmitDataChange(listing, DatabaseActionType.Insert);
            player.FloatingText("Item listed for sale!");
            ClearNavigationStack();
            ClearModelData();
            ChangePage("MainPage", false);
        }
        public void GetByID_TwoItems_ReturnsCorrectObject()
        {
            // Arrange
            var             id1     = Guid.NewGuid();
            var             id2     = Guid.NewGuid();
            PCMarketListing entity1 = new PCMarketListing {
                ID = id1
            };
            PCMarketListing entity2 = new PCMarketListing {
                ID = id2
            };

            // Act
            MessageHub.Instance.Publish(new OnCacheObjectSet <PCMarketListing>(entity1));
            MessageHub.Instance.Publish(new OnCacheObjectSet <PCMarketListing>(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();
            PCMarketListing entity1 = new PCMarketListing {
                ID = id1
            };
            PCMarketListing entity2 = new PCMarketListing {
                ID = id2
            };

            // Act
            MessageHub.Instance.Publish(new OnCacheObjectSet <PCMarketListing>(entity1));
            MessageHub.Instance.Publish(new OnCacheObjectSet <PCMarketListing>(entity2));
            MessageHub.Instance.Publish(new OnCacheObjectDeleted <PCMarketListing>(entity1));

            // Assert
            Assert.Throws <KeyNotFoundException>(() => { _cache.GetByID(id1); });
            Assert.AreNotSame(entity2, _cache.GetByID(id2));
        }