Example #1
0
        public static String baskets()
        {
            BasketTrans               basketTrans         = Access.sHttp.getPostData().DeserializeObject <BasketTrans>();
            CommerceResultTrans       commerceResultTrans = new CommerceResultTrans();
            List <InventoryItemTrans> inventoryItems      = new List <InventoryItemTrans>();
            List <OwnedCarTrans>      purchasedCars       = new List <OwnedCarTrans>();

            Economy economy = Economy.defineFromBasketItemTransList(basketTrans.basketItems);

            if (economy == null)
            {
                commerceResultTrans.status = Basket.ShoppingCartPurchaseResult.Fail_InvalidBasket;
            }
            else if (!economy.canBuy())
            {
                commerceResultTrans.status = Basket.ShoppingCartPurchaseResult.Fail_InsufficientFunds;
            }
            else
            {
                economy.doTransaction();
                commerceResultTrans.status = Basket.ShoppingCartPurchaseResult.Success;
                commerceResultTrans.wallets.walletTrans = new WalletTrans()
                {
                    balance  = economy.balance,
                    currency = economy.currency
                };

                foreach (BasketItemTrans basketItemTrans in basketTrans.basketItems)
                {
                    for (int i = 0; i < basketItemTrans.quantity; i++)
                    {
                        switch (basketItemTrans.getItemType())
                        {
                        case Basket.BasketItemType.Unknown:
                        {
                            commerceResultTrans.status = Basket.ShoppingCartPurchaseResult.Fail_ItemNotAvailableStandalone;
                            goto finalize;         // ahahah f**k you anti-goto people
                        }

                        case Basket.BasketItemType.THRevive:
                            // implement TH
                            break;

                        case Basket.BasketItemType.Repair:
                        {
                            Access.CurrentSession.ActivePersona.SelectedCar.Durability = (Int16)100;
                        }
                        break;

                        case Basket.BasketItemType.CarSlot:
                            // implement carslots
                            break;

                        case Basket.BasketItemType.Powerup:
                            String powerupType = basketItemTrans.productId.Replace("SRV-POWERUP-", "");

                            // TODO:
                            // expose to UI
                            // improve Persona.Inventory
                            InventoryItemEntity entity = PersonaManagement.persona.inventory.FirstOrDefault(ii => ii.entitlementTag == powerupType);
                            if (entity != null)
                            {
                                entity = InventoryItemManagement.getInventoryItemEntity(entity.id);
                                entity.remainingUseCount += DataEx.productInformations[basketItemTrans.productId].useCount;
                                entity.setInventoryItemEntity();

                                inventoryItems.Add(entity.getInventoryItemTrans());
                            }
                            break;

                        case Basket.BasketItemType.Car:
                        {
                            OwnedCarTrans purchasedCar = Catalog.getCarBasketDefinition(basketItemTrans.productId);
                            if (purchasedCar == null)
                            {
                                continue;
                            }

                            CarEntity carEntity = new CarEntity();
                            carEntity.baseCarId          = purchasedCar.customCar.baseCarId;
                            carEntity.carClassHash       = purchasedCar.customCar.carClassHash;
                            carEntity.durability         = purchasedCar.durability;
                            carEntity.heatLevel          = purchasedCar.heatLevel;
                            carEntity.name               = purchasedCar.customCar.name;
                            carEntity.paints             = purchasedCar.customCar.paints.SerializeObject();
                            carEntity.performanceParts   = purchasedCar.customCar.performanceParts.SerializeObject();
                            carEntity.physicsProfileHash = purchasedCar.customCar.physicsProfileHash;
                            carEntity.rating             = purchasedCar.customCar.rating;
                            carEntity.resalePrice        = purchasedCar.customCar.resalePrice;
                            carEntity.skillModParts      = purchasedCar.customCar.skillModParts.SerializeObject();
                            carEntity.vinyls             = purchasedCar.customCar.vinyls.SerializeObject();
                            carEntity.visualParts        = purchasedCar.customCar.visualParts.SerializeObject();

                            carEntity = PersonaManagement.addCar(carEntity);

                            purchasedCar.id           = carEntity.id;
                            purchasedCar.customCar.id = carEntity.id;
                            purchasedCars.Add(purchasedCar);
                        }
                        break;
                        }
                    }
                }
            }

finalize:
            commerceResultTrans.commerceItems  = new List <CommerceItemTrans>();
            commerceResultTrans.inventoryItems = inventoryItems.Count > 0 ? inventoryItems : new List <InventoryItemTrans>()
            {
                new InventoryItemTrans()
            };
            commerceResultTrans.purchasedCars = purchasedCars;
            return(commerceResultTrans.SerializeObject());
        }
Example #2
0
        public static String activated()
        {
            Int64            powerupHash      = Int64.Parse(Access.sHttp.request.Path.Split('/')[4]);
            PowerupActivated powerupActivated = new PowerupActivated();

            powerupActivated.id = powerupHash;
            powerupActivated.targetPersonaId = Int32.Parse(Access.sHttp.request.Params.Get("targetId"));
            powerupActivated.personaId       = Access.CurrentSession.ActivePersona.Id;

            PowerupActivatedResponse powerupActivatedResponse = new PowerupActivatedResponse();

            powerupActivatedResponse.powerupActivated = powerupActivated;

            Message message = new Message();

            message.setBody(powerupActivatedResponse);

#pragma warning disable CS4014
            object threadSafeDummy = new object();
            lock (threadSafeDummy)
            {
                InventoryItemEntity entity = PersonaManagement.persona.inventory.FirstOrDefault(ii => ii.hash == (Int32)powerupHash);
                if (entity != null)
                {
                    entity = InventoryItemManagement.getInventoryItemEntity(entity.id);
                    entity.remainingUseCount -= 1;
                    entity.setInventoryItemEntity();
                }

                // Send powerup activation data to game
                Access.sXmpp.write(message.SerializeObject(true));
            }
#if DEBUG
            lock (threadSafeDummy)
            {
                if ((Int32)powerupHash == Engine.getOverflowHash("nosshot"))
                {
                    message = new Message();

                    // Debug, only for showing achievement display
                    // Will cause the game to crash if achievements/loadall was empty.
                    AchievementAwarded achievementAwarded = new AchievementAwarded();
                    var acDef = AchievementDefinitions.achievements["ACH_USE_NOS"];
                    achievementAwarded.achievementDefinitionId = acDef.achievementDefinition.achievementDefinitionId;
                    achievementAwarded.achievementRankId       = acDef.achievementDefinition.achievementRanks[0].achievementRankId;
                    achievementAwarded.description             = acDef.badgeDefinition.description;
                    achievementAwarded.icon   = acDef.badgeDefinition.icon;
                    achievementAwarded.isRare = acDef.achievementDefinition.achievementRanks[0].isRare;
                    achievementAwarded.name   = acDef.badgeDefinition.name;
                    achievementAwarded.points = acDef.achievementDefinition.achievementRanks[0].points;
                    achievementAwarded.rarity = acDef.achievementDefinition.achievementRanks[0].rarity;

                    AchievementProgress achievementProgress = new AchievementProgress();
                    achievementProgress.achievementDefinitionId = acDef.achievementDefinition.achievementDefinitionId;
                    achievementProgress.currentValue            = 1;

                    AchievementsAwarded achievementsAwarded = new AchievementsAwarded();
                    achievementsAwarded.achievements.Add(achievementAwarded);
                    achievementsAwarded.score = Access.CurrentSession.ActivePersona.score;

                    message.setBody(achievementsAwarded);
                    Access.sXmpp.write(message.SerializeObject(true));
                }
            }
#endif
#pragma warning restore CS4014

            return("");
        }