/// <summary> /// Created a popup informing the player about the status of the previously /// requested purchase. If the parameter is null, the purchase has failed. /// </summary> public void PurchaseConfirmationAsyncCallback(AvatarMetadata avatarMetadata) { PopupAlertMessageBuilder.BuildPopupAlertMessage( avatarMetadata != null ? PopupAlertMessageType.AvatarPurchaseSuccessful : PopupAlertMessageType.AvatarPurchaseFailure, avatarMetadata); attributeMenu.RefreshCurrencyValues(); EnableInterfaceElements(); // If the player is still selecting the purchased avatar if (avatarMetadata != null && selectedAvatarMetadata.ID == avatarMetadata.ID) { buyButton.Disable(true); tryButton.Disable(true); } if (avatarMetadata == null) { return; } player.OwnedAvatar[avatarMetadata.AvatarCategory].Add(avatarMetadata.ID); UpdateFilter(searchFilter.AvatarCategory, searchFilter.CurrentPage); }
public static PopupAlertMessage AvatarPurchaseSuccessFeedback(AvatarMetadata avatarMetadata) { List <List <SpriteText> > stMatrix; List <SpriteText> titleSTList, messageSTList1, messageSTList2; titleSTList = new List <SpriteText>(); titleSTList.Add(new SpriteText(FontTextType.FontAwesome11, "" + (char)Language.PopupAlertMessageAvatarPurchaseSuccessTitleIcon, Color.White, Alignment.Left, layerDepth: DepthParameter.SceneTransitioningEffectBase)); titleSTList.Add(new SpriteText(FontTextType.Consolas11, Language.PopupAlertMessageAvatarPurchaseSuccessTitle, Color.White, Alignment.Left, layerDepth: DepthParameter.SceneTransitioningEffectBase)); titleSTList.Add(new SpriteText(FontTextType.FontAwesome11, "" + (char)Language.PopupAlertMessageAvatarPurchaseSuccessTitleIcon, Color.White, Alignment.Left, layerDepth: DepthParameter.SceneTransitioningEffectBase)); messageSTList1 = new List <SpriteText>(); messageSTList1.Add(new SpriteText(FontTextType.Consolas10, Language.PopupAlertMessageAvatarPurchaseSuccessMessage11, Color.White, Alignment.Left, layerDepth: DepthParameter.SceneTransitioningEffectBase)); messageSTList1.Add(new SpriteText(FontTextType.Consolas10, avatarMetadata.Gender + " - " + avatarMetadata.AvatarCategory + " - " + avatarMetadata.Name, Color.LightSalmon, Alignment.Left, layerDepth: DepthParameter.SceneTransitioningEffectBase)); messageSTList1.Add(new SpriteText(FontTextType.Consolas10, Language.PopupAlertMessageAvatarPurchaseSuccessMessage12, Color.White, Alignment.Left, layerDepth: DepthParameter.SceneTransitioningEffectBase)); messageSTList2 = new List <SpriteText>(); messageSTList2.Add(new SpriteText(FontTextType.Consolas10, Language.PopupAlertMessageAvatarPurchaseSuccessMessage21, Color.White, Alignment.Left, layerDepth: DepthParameter.SceneTransitioningEffectBase)); stMatrix = new List <List <SpriteText> >(); stMatrix.Add(messageSTList1); stMatrix.Add(messageSTList2); CompositeSpriteText title, message; title = CompositeSpriteText.CreateCompositeSpriteText(titleSTList, Orientation.Horizontal, Alignment.Left, default); message = CompositeSpriteText.CreateCompositeSpriteText(stMatrix, Alignment.Left, Vector2.Zero + new Vector2(0, 20), new Vector2(0, 0)); PopupAlertMessage popup = new PopupAlertMessage(title, message, AlertMessageType.Accept); popup.OnConfirm = (x) => PopupHandler.Remove(popup); return(popup); }
public void GoldPurchaseConfirmationAsyncCallback(object param) { lock (asyncPadlock) { AvatarMetadata avatarMetadata = (AvatarMetadata)param; player.Gold -= selectedAvatarMetadata.GoldPrice; PurchaseConfirmationAsyncCallback(avatarMetadata); } }
public PopupBuyAvatar(AvatarMetadata avatarMetadata, Action <object> onClose, Action <object> onBuyCash, Action <object> onBuyGold) : base(false) { Background = new Sprite("Interface/Popup/Blue/Avatar/Buy", layerDepth: DepthParameter.InterfacePopupBackground); avatarButton = new AvatarButton(new Vector2(0, -70), avatarMetadata, (o) => { avatarButton.Disable(); avatarButton.Enable(); }, DepthParameter.InterfacePopupButtons); onClose += (o) => { Destroy(); }; buttonList.Add(new Button(ButtonType.Cancel, DepthParameter.InterfacePopupMessageButtons, onClose, PositionOffset + new Vector2(95, 125))); spriteTextList.Add( new SpriteText( FontTextType.Consolas10, Language.PopupTextConfirmPuchase, Color.White, Alignment.Center, DepthParameter.InterfacePopupText,
/// <summary> /// This action is meant for avatar inventory and shop buttons. /// </summary> private void AvatarButtonAction(object sender) { AvatarButton avatarButton = (AvatarButton)sender; selectedAvatarMetadata = avatarButton.AvatarMetadata; // If it is a inventory button if (searchFilter.IsRenderingInventory) { // Equip player.EquipAvatar(selectedAvatarMetadata.AvatarCategory, selectedAvatarMetadata.ID); // Update Equipped avatarButtonList.ForEach((x) => x.HideEquippedIndicator()); avatarButton.ShowEquippedIndicator(); inventoryRiderPreview.ReplaceAvatar(selectedAvatarMetadata); inventoryInGamePreview.ReplaceAvatar(selectedAvatarMetadata); tryButton.Disable(true); buyButton.Disable(true); return; } // If it isn't an inventory button avatarButtonList.ForEach((x) => { x.Disable(); x.Enable(); }); avatarButton.ChangeButtonState(ButtonAnimationState.Activated, true); if (shopRiderPreview.GetEquippedAvatarID(selectedAvatarMetadata.AvatarCategory) != selectedAvatarMetadata.ID) { tryButton.Enable(); } else { tryButton.Disable(true); } if (player.Gold >= selectedAvatarMetadata.GoldPrice || player.Cash >= selectedAvatarMetadata.CashPrice) { if (!player.OwnedAvatar[selectedAvatarMetadata.AvatarCategory].Contains(selectedAvatarMetadata.ID)) { buyButton.Enable(); } else { buyButton.Disable(true); } } }
public bool PurchaseAvatar(Player player, AvatarMetadata avatarMetadata, PaymentMethod paymentMethod) { try { using (OpenBoundDatabaseContext odc = new OpenBoundDatabaseContext()) { AvatarMetadata databaseAvatar = odc.AvatarMetadata .FirstOrDefault((x) => x.ID == avatarMetadata.ID && x.AvatarCategory == avatarMetadata.AvatarCategory);//.Include(); if ((paymentMethod == PaymentMethod.Gold && player.Gold >= databaseAvatar.GoldPrice && databaseAvatar.GoldPrice > 0) || (paymentMethod == PaymentMethod.Cash && player.Cash >= databaseAvatar.CashPrice && databaseAvatar.CashPrice > 0) || (paymentMethod == PaymentMethod.Cash && player.Cash >= databaseAvatar.CashPrice && databaseAvatar.CashPrice > 0)) { using (var dbContextTransaction = odc.Database.BeginTransaction()) { Player p = odc.Players .First((x) => x.ID == player.ID); odc.PlayerAvatarMetadata.Add(new PlayerAvatarMetadata(p, databaseAvatar, paymentMethod)); if (paymentMethod == PaymentMethod.Gold) { p.Gold -= databaseAvatar.GoldPrice; } else if (paymentMethod == PaymentMethod.Cash) { p.Cash -= databaseAvatar.CashPrice; } else if (paymentMethod == PaymentMethod.Token) { p.Token -= databaseAvatar.TokenPrice; } odc.SaveChanges(); dbContextTransaction.Commit(); } return(true); } } } catch (Exception ex) { Console.WriteLine($"Message: {ex.Message}"); } return(false); }
public void ReplaceAvatar(AvatarMetadata avatarMetadata) { mobile.Rider.ReplaceAvatar(avatarMetadata); }
public static void AvatarShopBuyAvatarCash(AvatarMetadata avatarMetadata) { ServerInformationBroker.Instance.GameServerServiceProvider.RequestQueue.Enqueue( NetworkObjectParameters.GameServerAvatarShopBuyAvatarCash, avatarMetadata); }
public AvatarButton(Vector2 position, AvatarMetadata avatarMetadata, Action <object> onClick, float layerDepth) : base(ButtonType.AvatarButton, layerDepth, onClick, position) { AvatarMetadata = avatarMetadata; spriteList = new List <Sprite>(); spriteTextList = new List <SpriteText>(); thumb = new Sprite($"Graphics/Avatar/{avatarMetadata.Gender}/Portrait/{avatarMetadata.AvatarCategory}/{avatarMetadata.Name}", position + new Vector2(1, 6f), layerDepth + 0.001f); Vector2 scaleFactor = new Vector2(87, 48) / new Vector2(thumb.SpriteWidth, thumb.SpriteHeight); float newScale = Math.Min(scaleFactor.X, scaleFactor.Y); thumb.Scale = new Vector2(newScale, newScale); spriteList.Add(thumb); //New Marker if (DateTime.Now.AddDays(Parameter.InterfaceAvatarShopAvatarButtonNewStampDay) > avatarMetadata.Date) { newMarker = new Sprite("Interface/StaticButtons/AvatarShop/AvatarButton/NewItem", position + new Vector2(40, -30), layerDepth + 0.003f); newMarker.Scale /= 2; spriteList.Add(newMarker); } //Equipped Indicator equippedIndicator = new Sprite("Interface/StaticButtons/AvatarShop/AvatarButton/EquipedIndicator", position + new Vector2(-47, 0), layerDepth + 0.002f); spriteList.Add(equippedIndicator); if (GameInformation.Instance.PlayerInformation.GetEquippedAvatar(avatarMetadata.AvatarCategory) != avatarMetadata.ID) { HideEquippedIndicator(); } //Owned check if (GameInformation.Instance.PlayerInformation.OwnedAvatar[avatarMetadata.AvatarCategory].Contains(avatarMetadata.ID)) { ownedCheck = new Sprite("Interface/StaticButtons/AvatarShop/AvatarButton/OwnedCheck", position + new Vector2(38, -14), layerDepth + 0.002f); ownedCheck.Scale /= 2; spriteList.Add(ownedCheck); } //Selecting button icon int index = GetCorrespondingIconIndex(avatarMetadata.AvatarCategory, GameInformation.Instance.PlayerInformation.Gender); typeIcon = new Sprite("Interface/StaticButtons/AvatarShop/AvatarButton/ButtonIcons", position + new Vector2(-32, -12), layerDepth + 0.002f, new Rectangle((index % 6) * 26, (index / 6) * 17, 26, 17)); typeIcon.Pivot = new Vector2(13, 8.5f); spriteList.Add(typeIcon); //Texts string name = avatarMetadata.Name; if (name.Length > 13) { name = name.Substring(0, 12) + "."; } itemNameSpriteText = new SpriteText(FontTextType.Consolas10, name, Color.White, Alignment.Left, layerDepth + 0.002f, position, Color.Black); itemNameSpriteText.PositionOffset = position + new Vector2(-44, -36); spriteTextList.Add(itemNameSpriteText); int pricePos = 0; if (avatarMetadata.GoldPrice != 0) { goldSpriteText = new SpriteText(FontTextType.Consolas10, string.Format("{0:N0}", avatarMetadata.GoldPrice), Parameter.InterfaceAvatarShopButtonGoldColor, Alignment.Right, layerDepth + 0.003f, position, Parameter.InterfaceAvatarShopButtonGoldOutlineColor); goldSpriteText.PositionOffset = position + new Vector2(30, 20 - 10 * pricePos); goldIcon = new Sprite("Interface/StaticButtons/AvatarShop/AvatarButton/GoldIcon", position + new Vector2(38, 26 - 10 * pricePos++), layerDepth + 0.002f, new Rectangle(0, 0, 26, 21)); goldIcon.Pivot = new Vector2(13, 10.5f); goldIcon.Scale /= 2; spriteTextList.Add(goldSpriteText); spriteList.Add(goldIcon); } if (avatarMetadata.CashPrice != 0) { cashSpriteText = new SpriteText(FontTextType.Consolas10, string.Format("{0:N0}", avatarMetadata.CashPrice), Parameter.InterfaceAvatarShopButtonCashColor, Alignment.Right, layerDepth + 0.003f, position, Parameter.InterfaceAvatarShopButtonCashOutlineColor); cashSpriteText.PositionOffset = position + new Vector2(30, 20 - 10 * pricePos); cashIcon = new Sprite("Interface/StaticButtons/AvatarShop/AvatarButton/CashIcon", position + new Vector2(38, 26 - 10 * pricePos++), layerDepth + 0.002f, new Rectangle(0, 0, 26, 21)); cashIcon.Pivot = new Vector2(13, 10.5f); cashIcon.Scale /= 2; spriteTextList.Add(cashSpriteText); spriteList.Add(cashIcon); } }
public void ReplaceAvatar(AvatarMetadata avatarMetadata) { Avatar avatar = new Avatar(avatarMetadata, avatarMetadata.AvatarCategory != AvatarCategory.Hat && avatarMetadata.AvatarCategory != AvatarCategory.Body); Avatar previousAvatar = null; switch (avatarMetadata.AvatarCategory) { case AvatarCategory.Hat: previousAvatar = Head; Head = avatar; break; case AvatarCategory.Body: previousAvatar = Body; Body = avatar; break; case AvatarCategory.Goggles: previousAvatar = Goggles; Goggles = avatar; break; case AvatarCategory.Flag: previousAvatar = Flag; Flag = avatar; break; case AvatarCategory.Pet: previousAvatar = Pet; Pet = avatar; break; case AvatarCategory.Extra: if (Extra == null) { return; } previousAvatar = Extra; Extra = avatar; break; case AvatarCategory.Misc: if (Misc == null) { return; } previousAvatar = Misc; Misc = avatar; break; } avatar.Position = previousAvatar.Position; if (avatar.Flipbook.Effect != previousAvatar.Flipbook.Effect) { avatar.Flip(); } ResetCurrentAnimation(); }