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()); }
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(""); }