From cf8fcab88c02022a207a390072197ecefacb1b1d Mon Sep 17 00:00:00 2001 From: Ellpeck Date: Fri, 12 Jun 2020 17:32:50 +0200 Subject: [PATCH] fixed overflow with modifier prices --- TouchyTickets/Attractions/Attraction.cs | 5 +++-- TouchyTickets/Ui.cs | 8 ++++---- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/TouchyTickets/Attractions/Attraction.cs b/TouchyTickets/Attractions/Attraction.cs index e21cf42..a696685 100644 --- a/TouchyTickets/Attractions/Attraction.cs +++ b/TouchyTickets/Attractions/Attraction.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Numerics; using System.Runtime.Serialization; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; @@ -78,9 +79,9 @@ namespace TouchyTickets.Attractions { return this.Modifiers.Where(m => modifier == null || m.Modifier == modifier).Sum(m => m.Amount); } - public int GetModifierPrice(AttractionModifier modifier) { + public long GetModifierPrice(AttractionModifier modifier) { var amount = this.GetModifierAmount(modifier); - return (modifier.InitialPrice * (float) Math.Pow(1 + 0.4F, amount)).Ceil(); + return (long) Math.Ceiling(modifier.InitialPrice * Math.Pow(1 + 0.4F, amount)); } private IEnumerable GetSurrounding(ParkMap map, Point position, AttractionType type) { diff --git a/TouchyTickets/Ui.cs b/TouchyTickets/Ui.cs index ad20fe9..978f75e 100644 --- a/TouchyTickets/Ui.cs +++ b/TouchyTickets/Ui.cs @@ -153,7 +153,7 @@ namespace TouchyTickets { IsHidden = true }; foreach (var attraction in AttractionType.Attractions) { - BigInteger price = 0; + long price = 0; var attractionAmount = 0; var button = buyUi.AddChild(new Button(Anchor.AutoLeft, new Vector2(1, 40)) { ChildPadding = new Vector2(4), @@ -174,7 +174,7 @@ namespace TouchyTickets { yesNoUi.AddChild(new Button(Anchor.AutoInlineIgnoreOverflow, new Vector2(0.5F, 30), Localization.Get("Place")) { OnPressed = e2 => { GameImpl.Instance.Tickets -= price; - GameImpl.Instance.Analytics.AddResourceEvent(true, "Tickets", (long) price, "Attraction", attraction.Key); + GameImpl.Instance.Analytics.AddResourceEvent(true, "Tickets", price, "Attraction", attraction.Key); map.Place(map.PlacingPosition, map.PlacingAttraction); this.FadeUi(false, () => this.uiSystem.Remove(e2.Root.Name)); @@ -190,7 +190,7 @@ namespace TouchyTickets { // only update the price when the area updates, since it won't change while we're in the buy ui attractionAmount = GameImpl.Instance.Map.GetAttractionAmount(attraction.Value); // yay compound interest - price = (attraction.Value.InitialPrice * (float) Math.Pow(1 + 0.1F, attractionAmount)).Ceil(); + price = (long) Math.Ceiling(attraction.Value.InitialPrice * Math.Pow(1 + 0.1F, attractionAmount)); } }); var image = button.AddChild(new Image(Anchor.CenterLeft, new Vector2(0.2F, 40), attraction.Value.TextureRegion) { @@ -306,7 +306,7 @@ namespace TouchyTickets { var game = GameImpl.Instance; game.Analytics.AddResourceEvent(true, "Tickets", (long) game.Tickets, "Restart", "Restart" + game.TimesRestarted); - game.Analytics.AddResourceEvent(false, "Stars", (long) game.Tickets, "Restart", "Restart" + game.TimesRestarted); + game.Analytics.AddResourceEvent(false, "Stars", game.GetBuyableStars(), "Restart", "Restart" + game.TimesRestarted); game.Stars += game.GetBuyableStars(); game.TimesRestarted++;