removed external online services
This commit is contained in:
parent
a1e8e684d0
commit
84e709a3f3
9 changed files with 10 additions and 271 deletions
|
@ -1,21 +1,16 @@
|
||||||
using Android.App;
|
using Android.App;
|
||||||
using Android.Content;
|
using Android.Content;
|
||||||
using Android.Content.PM;
|
using Android.Content.PM;
|
||||||
using Android.Gms.Games;
|
|
||||||
using Android.OS;
|
using Android.OS;
|
||||||
using Android.Views;
|
using Android.Views;
|
||||||
using Android.Widget;
|
|
||||||
using GameAnalyticsSDK;
|
|
||||||
using Java.Lang;
|
|
||||||
using Microsoft.Xna.Framework;
|
using Microsoft.Xna.Framework;
|
||||||
using Microsoft.Xna.Framework.Input;
|
using Microsoft.Xna.Framework.Input;
|
||||||
using MLEM.Extensions;
|
using MLEM.Extensions;
|
||||||
using MLEM.Misc;
|
using MLEM.Misc;
|
||||||
using TouchyTickets;
|
using TouchyTickets;
|
||||||
using static Android.Views.ViewGroup;
|
|
||||||
using Uri = Android.Net.Uri;
|
using Uri = Android.Net.Uri;
|
||||||
|
|
||||||
namespace Android;
|
namespace Android;
|
||||||
|
|
||||||
[Activity(
|
[Activity(
|
||||||
Label = "@string/app_name",
|
Label = "@string/app_name",
|
||||||
|
@ -30,18 +25,14 @@ public class Activity1 : AndroidGameActivity {
|
||||||
|
|
||||||
private GameImpl game;
|
private GameImpl game;
|
||||||
private AndroidPlatform platform;
|
private AndroidPlatform platform;
|
||||||
private LinearLayout mainView;
|
private View view;
|
||||||
|
|
||||||
protected override void OnCreate(Bundle bundle) {
|
protected override void OnCreate(Bundle bundle) {
|
||||||
base.OnCreate(bundle);
|
base.OnCreate(bundle);
|
||||||
|
|
||||||
// ad layout
|
|
||||||
var adLayout = new LinearLayout(this) {Orientation = Orientation.Vertical};
|
|
||||||
adLayout.SetGravity(GravityFlags.Bottom);
|
|
||||||
|
|
||||||
// set up the game
|
// set up the game
|
||||||
MlemPlatform.Current = new MlemPlatform.Mobile(KeyboardInput.Show, l => this.StartActivity(new Intent(Intent.ActionView, Uri.Parse(l))));
|
MlemPlatform.Current = new MlemPlatform.Mobile(KeyboardInput.Show, l => this.StartActivity(new Intent(Intent.ActionView, Uri.Parse(l))));
|
||||||
this.platform = new AndroidPlatform(this, adLayout);
|
this.platform = new AndroidPlatform(this);
|
||||||
this.game = new GameImpl(this.platform);
|
this.game = new GameImpl(this.platform);
|
||||||
this.game.GraphicsDeviceManager.ResetWidthAndHeight(this.game.Window);
|
this.game.GraphicsDeviceManager.ResetWidthAndHeight(this.game.Window);
|
||||||
this.game.GraphicsDeviceManager.IsFullScreen = true;
|
this.game.GraphicsDeviceManager.IsFullScreen = true;
|
||||||
|
@ -59,30 +50,12 @@ public class Activity1 : AndroidGameActivity {
|
||||||
if (Build.VERSION.SdkInt >= BuildVersionCodes.P)
|
if (Build.VERSION.SdkInt >= BuildVersionCodes.P)
|
||||||
this.Window.Attributes.LayoutInDisplayCutoutMode = LayoutInDisplayCutoutMode.Never;
|
this.Window.Attributes.LayoutInDisplayCutoutMode = LayoutInDisplayCutoutMode.Never;
|
||||||
|
|
||||||
// total layout that is displayed
|
this.view = this.game.Services.GetService(typeof(View)) as View;
|
||||||
this.mainView = new LinearLayout(this) {Orientation = Orientation.Vertical};
|
this.SetContentView(this.view);
|
||||||
this.mainView.LayoutParameters = new LinearLayout.LayoutParams(LayoutParams.MatchParent, LayoutParams.MatchParent);
|
|
||||||
this.mainView.AddView(gameView);
|
|
||||||
// height of 0 but high weight causes this element so scale based on the ad's height
|
|
||||||
gameView.LayoutParameters = new LinearLayout.LayoutParams(LayoutParams.MatchParent, 0, 1);
|
|
||||||
this.mainView.AddView(adLayout);
|
|
||||||
adLayout.LayoutParameters = new LinearLayout.LayoutParams(LayoutParams.MatchParent, LayoutParams.WrapContent);
|
|
||||||
this.SetContentView(this.mainView);
|
|
||||||
|
|
||||||
this.game.Run();
|
this.game.Run();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnActivityResult(int requestCode, Result result, Intent data) {
|
|
||||||
base.OnActivityResult(requestCode, result, data);
|
|
||||||
// Connect again after logging in to Google Play game services, but only if we haven't tried yet
|
|
||||||
try {
|
|
||||||
if (requestCode == AndroidPlatform.GooglePlayLoginRequest && (int) result != GamesActivityResultCodes.ResultSignInFailed)
|
|
||||||
this.platform.GoogleApi.Connect();
|
|
||||||
} catch (Exception e) {
|
|
||||||
GameAnalytics.NewErrorEvent(GAErrorSeverity.Error, "OnActivityResult " + e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void OnWindowFocusChanged(bool hasFocus) {
|
public override void OnWindowFocusChanged(bool hasFocus) {
|
||||||
base.OnWindowFocusChanged(hasFocus);
|
base.OnWindowFocusChanged(hasFocus);
|
||||||
#pragma warning disable CS0618
|
#pragma warning disable CS0618
|
||||||
|
|
|
@ -13,8 +13,6 @@
|
||||||
<PackageReference Include="MonoGame.Content.Builder.Task" Version="3.8.1.303"/>
|
<PackageReference Include="MonoGame.Content.Builder.Task" Version="3.8.1.303"/>
|
||||||
<PackageReference Include="MonoGame.Framework.Android" Version="3.8.1.303"/>
|
<PackageReference Include="MonoGame.Framework.Android" Version="3.8.1.303"/>
|
||||||
<PackageReference Include="Contentless" Version="3.0.7"/>
|
<PackageReference Include="Contentless" Version="3.0.7"/>
|
||||||
<PackageReference Include="GameAnalytics.Xamarin.SDK" Version="5.2.5"/>
|
|
||||||
<PackageReference Include="Xamarin.GooglePlayServices.Games" Version="123.1.0.1"/>
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|
|
@ -1,110 +1,17 @@
|
||||||
using System.Collections;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using Android.App;
|
using Android.App;
|
||||||
using Android.Content;
|
using Android.Content;
|
||||||
using Android.Gms.Common.Apis;
|
|
||||||
using Android.Gms.Games;
|
|
||||||
using Android.Runtime;
|
|
||||||
using Android.Views;
|
using Android.Views;
|
||||||
using Android.Widget;
|
|
||||||
using GameAnalyticsSDK;
|
|
||||||
using GameAnalyticsSDK.Utilities;
|
|
||||||
using Java.Lang;
|
|
||||||
using TouchyTickets;
|
using TouchyTickets;
|
||||||
using Achievement = TouchyTickets.Achievement;
|
|
||||||
using Uri = Android.Net.Uri;
|
using Uri = Android.Net.Uri;
|
||||||
|
|
||||||
namespace Android;
|
namespace Android;
|
||||||
|
|
||||||
public class AndroidPlatform : Platform {
|
public class AndroidPlatform : Platform {
|
||||||
|
|
||||||
public const int GooglePlayLoginRequest = 9001;
|
|
||||||
public const int ShowAchievementsRequest = 9002;
|
|
||||||
|
|
||||||
private static readonly Dictionary<string, string> AchievementIds = new() {
|
|
||||||
{"1Stars", "CgkI_Lyp7PcEEAIQAw"},
|
|
||||||
{"10Stars", "CgkI_Lyp7PcEEAIQBA"},
|
|
||||||
{"100Stars", "CgkI_Lyp7PcEEAIQBQ"},
|
|
||||||
{"FullMap", "CgkI_Lyp7PcEEAIQBg"},
|
|
||||||
{"OnlySmallRides", "CgkI_Lyp7PcEEAIQBw"},
|
|
||||||
{"OnlyRelaxedRides", "CgkI_Lyp7PcEEAIQCA"},
|
|
||||||
{"OnlyWalkingRides", "CgkI_Lyp7PcEEAIQCQ"},
|
|
||||||
{"OnlyNonTechnologyRides", "CgkI_Lyp7PcEEAIQCg"},
|
|
||||||
{"100Modifiers", "CgkI_Lyp7PcEEAIQCw"},
|
|
||||||
{"500Modifiers", "CgkI_Lyp7PcEEAIQDA"},
|
|
||||||
{"1000Modifiers", "CgkI_Lyp7PcEEAIQDQ"},
|
|
||||||
{"5000Modifiers", "CgkI_Lyp7PcEEAIQDg"},
|
|
||||||
{"1ExpTickets", "CgkI_Lyp7PcEEAIQDw"},
|
|
||||||
{"2ExpTickets", "CgkI_Lyp7PcEEAIQEA"},
|
|
||||||
{"3ExpTickets", "CgkI_Lyp7PcEEAIQEQ"},
|
|
||||||
{"4ExpTickets", "CgkI_Lyp7PcEEAIQEg"},
|
|
||||||
{"5ExpTickets", "CgkI_Lyp7PcEEAIQEw"},
|
|
||||||
{"6ExpTickets", "CgkI_Lyp7PcEEAIQFA"},
|
|
||||||
{"7ExpTickets", "CgkI_Lyp7PcEEAIQFQ"},
|
|
||||||
{"8ExpTickets", "CgkI_Lyp7PcEEAIQFg"},
|
|
||||||
{"9ExpTickets", "CgkI_Lyp7PcEEAIQFw"},
|
|
||||||
{"10ExpTickets", "CgkI_Lyp7PcEEAIQGA"}
|
|
||||||
};
|
|
||||||
|
|
||||||
private readonly Activity activity;
|
private readonly Activity activity;
|
||||||
private readonly LinearLayout adLayout;
|
|
||||||
public GoogleApiClient GoogleApi { get; private set; }
|
|
||||||
|
|
||||||
public AndroidPlatform(Activity activity, LinearLayout adLayout) {
|
public AndroidPlatform(Activity activity) {
|
||||||
this.activity = activity;
|
this.activity = activity;
|
||||||
this.adLayout = adLayout;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void SetupOnlineInteractions(Dictionary<string, object> analyticsJson) {
|
|
||||||
// Analytics
|
|
||||||
GameAnalytics.SetAutoDetectAppVersion(true);
|
|
||||||
GameAnalytics.Initialize(this.activity, GA_MiniJSON.Serialize(new Hashtable(analyticsJson)));
|
|
||||||
AndroidEnvironment.UnhandledExceptionRaiser += (_, args) => GameAnalytics.NewErrorEvent(GAErrorSeverity.Critical, args.Exception.ToString());
|
|
||||||
|
|
||||||
// TODO fix ads
|
|
||||||
// Ads
|
|
||||||
/*try {
|
|
||||||
var ad = new AdView(this.activity) {
|
|
||||||
AdUnitId = "ca-app-pub-5754829579653773/7841535920",
|
|
||||||
AdSize = AdSize.SmartBanner
|
|
||||||
};
|
|
||||||
ad.LoadAd(new AdRequest.Builder()
|
|
||||||
.AddTestDevice("14B965C6457E17D2808061ADF7E34923")
|
|
||||||
.Build());
|
|
||||||
this.adLayout.AddView(ad);
|
|
||||||
} catch (Exception e) {
|
|
||||||
GameAnalytics.NewErrorEvent(GAErrorSeverity.Error, "Ads " + e);
|
|
||||||
}*/
|
|
||||||
|
|
||||||
// TODO fix google play game services
|
|
||||||
/*// Google Play game services
|
|
||||||
try {
|
|
||||||
this.GoogleApi = new GoogleApiClient.Builder(this.activity)
|
|
||||||
.AddApi(GamesClass.API)
|
|
||||||
.AddScope(GamesClass.ScopeGames)
|
|
||||||
.AddOnConnectionFailedListener(res => {
|
|
||||||
if (res.HasResolution) {
|
|
||||||
res.StartResolutionForResult(this.activity, GooglePlayLoginRequest);
|
|
||||||
} else {
|
|
||||||
throw new GoogleApiClientConnectionException(res);
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.Build();
|
|
||||||
this.GoogleApi.Connect();
|
|
||||||
} catch (Exception e) {
|
|
||||||
GameAnalytics.NewErrorEvent(GAErrorSeverity.Error, "GoogleApiClient " + e);
|
|
||||||
}*/
|
|
||||||
|
|
||||||
#if DEBUG
|
|
||||||
// Sanity check to ensure that all achievements are mapped
|
|
||||||
foreach (var achievement in Achievement.Achievements.Values) {
|
|
||||||
var _ = AndroidPlatform.AchievementIds[achievement.Name];
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void AddResourceEvent(bool sink, string currency, float amount, string itemType, string itemId) {
|
|
||||||
GameAnalytics.NewResourceEvent(sink ? GAResourceFlowType.Sink : GAResourceFlowType.Source, currency, amount, itemType, itemId);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void SetKeepScreenOn(bool keep) {
|
public override void SetKeepScreenOn(bool keep) {
|
||||||
|
@ -119,27 +26,4 @@ public class AndroidPlatform : Platform {
|
||||||
this.activity.StartActivity(new Intent(Intent.ActionView, Uri.Parse("https://play.google.com/store/apps/details?id=de.ellpeck.touchytickets")));
|
this.activity.StartActivity(new Intent(Intent.ActionView, Uri.Parse("https://play.google.com/store/apps/details?id=de.ellpeck.touchytickets")));
|
||||||
}
|
}
|
||||||
|
|
||||||
public override bool GainAchievement(Achievement achievement) {
|
|
||||||
try {
|
|
||||||
if (this.GoogleApi != null && this.GoogleApi.IsConnected) {
|
|
||||||
GamesClass.Achievements.Unlock(this.GoogleApi, AndroidPlatform.AchievementIds[achievement.Name]);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
GameAnalytics.NewErrorEvent(GAErrorSeverity.Error, "GainAchievement " + e);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void ShowAchievements() {
|
|
||||||
try {
|
|
||||||
if (this.GoogleApi == null || !this.GoogleApi.IsConnected)
|
|
||||||
return;
|
|
||||||
var intent = GamesClass.Achievements.GetAchievementsIntent(this.GoogleApi);
|
|
||||||
this.activity.StartActivityForResult(intent, AndroidPlatform.ShowAchievementsRequest);
|
|
||||||
} catch (Exception e) {
|
|
||||||
GameAnalytics.NewErrorEvent(GAErrorSeverity.Error, "ShowAchievements " + e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
|
@ -1,60 +0,0 @@
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Numerics;
|
|
||||||
using Microsoft.Xna.Framework;
|
|
||||||
using TouchyTickets.Attractions;
|
|
||||||
|
|
||||||
namespace TouchyTickets;
|
|
||||||
|
|
||||||
public class Achievement {
|
|
||||||
|
|
||||||
public static readonly Dictionary<string, Achievement> Achievements = new();
|
|
||||||
|
|
||||||
static Achievement() {
|
|
||||||
foreach (var amount in new[] {1, 10, 100})
|
|
||||||
Achievement.Register(new Achievement($"{amount}Stars", g => g.Stars >= amount));
|
|
||||||
Achievement.Register(new Achievement("FullMap", g => {
|
|
||||||
for (var x = 0; x < g.Map.Width; x++) {
|
|
||||||
for (var y = 0; y < g.Map.Height; y++) {
|
|
||||||
if (g.Map.GetAttractionAt(new Point(x, y)) == null)
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}));
|
|
||||||
foreach (var flag in new[] {AttractionFlags.Small, AttractionFlags.Relaxed, AttractionFlags.Walking, AttractionFlags.NonTechnology})
|
|
||||||
Achievement.Register(new Achievement($"Only{flag}Rides", g => g.Map.GetAttractionAmount(null) >= 100 && g.Map.GetAttractions().All(a => a.Item2.Type.Flags.HasFlag(flag))));
|
|
||||||
foreach (var amount in new[] {100, 500, 1000, 5000})
|
|
||||||
Achievement.Register(new Achievement($"{amount}Modifiers", g => g.Map.GetAttractionAmount(null) > 0 && g.Map.GetAttractions().All(a => a.Item2.GetModifierAmount(null) >= amount)));
|
|
||||||
for (var i = 1; i <= 10; i++) {
|
|
||||||
var amount = BigInteger.Pow(1000, i + 1);
|
|
||||||
Achievement.Register(new Achievement($"{i}ExpTickets", g => g.Tickets >= amount));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public readonly string Name;
|
|
||||||
private readonly Func<GameImpl, bool> condition;
|
|
||||||
// this value doesn't save between game runs, since achievements
|
|
||||||
// are only displayed inside of the respective stores anyway
|
|
||||||
private bool unlocked;
|
|
||||||
|
|
||||||
public Achievement(string name, Func<GameImpl, bool> condition) {
|
|
||||||
this.Name = name;
|
|
||||||
this.condition = condition;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Update() {
|
|
||||||
if (this.unlocked)
|
|
||||||
return;
|
|
||||||
if (!this.condition.Invoke(GameImpl.Instance))
|
|
||||||
return;
|
|
||||||
if (GameImpl.Instance.Platform.GainAchievement(this))
|
|
||||||
this.unlocked = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void Register(Achievement achievement) {
|
|
||||||
Achievement.Achievements.Add(achievement.Name, achievement);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -44,7 +44,6 @@ public class AttractionModifier {
|
||||||
if (GameImpl.Instance.Tickets < price)
|
if (GameImpl.Instance.Tickets < price)
|
||||||
return false;
|
return false;
|
||||||
GameImpl.Instance.Tickets -= price;
|
GameImpl.Instance.Tickets -= price;
|
||||||
GameImpl.Instance.Platform.AddResourceEvent(true, "Tickets", (float) price, "Modifier", this.Name);
|
|
||||||
attraction.ApplyModifier(this);
|
attraction.ApplyModifier(this);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,7 +27,6 @@ public class GameImpl : MlemGame {
|
||||||
public DateTime LastUpdate;
|
public DateTime LastUpdate;
|
||||||
public TimeSpan PlayTime;
|
public TimeSpan PlayTime;
|
||||||
private double saveCounter;
|
private double saveCounter;
|
||||||
private double achievementCounter;
|
|
||||||
|
|
||||||
public GameImpl(Platform platform) {
|
public GameImpl(Platform platform) {
|
||||||
this.Platform = platform;
|
this.Platform = platform;
|
||||||
|
@ -45,17 +44,6 @@ public class GameImpl : MlemGame {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void LoadGame() {
|
private void LoadGame() {
|
||||||
// set up online stuff
|
|
||||||
var analytics = new Dictionary<string, object>();
|
|
||||||
analytics["InfoLog"] = true;
|
|
||||||
analytics["VerboseLog"] = true;
|
|
||||||
analytics["ResourceCurrencies"] = new[] {"Tickets", "Stars"};
|
|
||||||
analytics["ResourceItemTypes"] = new[] {"Attraction", "Restart", "Upgrade", "Modifier"};
|
|
||||||
// ios comes first, then android. For now they're the same
|
|
||||||
analytics["GameKey"] = new[] {"cc18de06eebbc5d5e987c384fcd28000", "cc18de06eebbc5d5e987c384fcd28000"};
|
|
||||||
analytics["SecretKey"] = new[] {"82ca1a930ee38e2383ffb02db7631e16033b511d", "82ca1a930ee38e2383ffb02db7631e16033b511d"};
|
|
||||||
this.Platform.SetupOnlineInteractions(analytics);
|
|
||||||
|
|
||||||
this.Tutorial = new Tutorial();
|
this.Tutorial = new Tutorial();
|
||||||
|
|
||||||
if (!SaveHandler.Load(this))
|
if (!SaveHandler.Load(this))
|
||||||
|
@ -82,14 +70,6 @@ public class GameImpl : MlemGame {
|
||||||
// update the map
|
// update the map
|
||||||
this.UpdateMapOnce();
|
this.UpdateMapOnce();
|
||||||
|
|
||||||
// achievements
|
|
||||||
this.achievementCounter += gameTime.ElapsedGameTime.TotalSeconds;
|
|
||||||
if (this.achievementCounter >= 5) {
|
|
||||||
this.achievementCounter = 0;
|
|
||||||
foreach (var achievement in Achievement.Achievements.Values)
|
|
||||||
achievement.Update();
|
|
||||||
}
|
|
||||||
|
|
||||||
// save every 3 seconds
|
// save every 3 seconds
|
||||||
this.saveCounter += gameTime.ElapsedGameTime.TotalSeconds;
|
this.saveCounter += gameTime.ElapsedGameTime.TotalSeconds;
|
||||||
if (this.saveCounter >= 3) {
|
if (this.saveCounter >= 3) {
|
||||||
|
|
|
@ -1,19 +1,10 @@
|
||||||
using System.Collections.Generic;
|
|
||||||
|
|
||||||
namespace TouchyTickets;
|
namespace TouchyTickets;
|
||||||
|
|
||||||
public abstract class Platform {
|
public abstract class Platform {
|
||||||
|
|
||||||
public abstract void SetupOnlineInteractions(Dictionary<string, object> analyticsJson);
|
|
||||||
|
|
||||||
public abstract void AddResourceEvent(bool sink, string currency, float amount, string itemType, string itemId);
|
|
||||||
|
|
||||||
public abstract void SetKeepScreenOn(bool keep);
|
public abstract void SetKeepScreenOn(bool keep);
|
||||||
|
|
||||||
public abstract void OpenRateLink();
|
public abstract void OpenRateLink();
|
||||||
|
|
||||||
public abstract bool GainAchievement(Achievement achievement);
|
|
||||||
|
|
||||||
public abstract void ShowAchievements();
|
|
||||||
|
|
||||||
}
|
}
|
|
@ -5,9 +5,9 @@
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Coroutine" Version="2.1.4"/>
|
<PackageReference Include="Coroutine" Version="2.1.4" />
|
||||||
<PackageReference Include="MLEM.Startup" Version="6.1.0"/>
|
<PackageReference Include="MLEM.Startup" Version="6.1.0" />
|
||||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.2"/>
|
<PackageReference Include="Newtonsoft.Json" Version="13.0.2" />
|
||||||
<PackageReference Include="MonoGame.Framework.DesktopGL" Version="3.8.1.303">
|
<PackageReference Include="MonoGame.Framework.DesktopGL" Version="3.8.1.303">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
|
|
|
@ -175,7 +175,6 @@ public class Ui {
|
||||||
ActionSound = new SoundEffectInfo(Assets.PlaceSound),
|
ActionSound = new SoundEffectInfo(Assets.PlaceSound),
|
||||||
OnPressed = e2 => {
|
OnPressed = e2 => {
|
||||||
GameImpl.Instance.Tickets -= price;
|
GameImpl.Instance.Tickets -= price;
|
||||||
GameImpl.Instance.Platform.AddResourceEvent(true, "Tickets", (float) price, "Attraction", attraction.Key);
|
|
||||||
|
|
||||||
map.Place(map.PlacingPosition, map.PlacingAttraction);
|
map.Place(map.PlacingPosition, map.PlacingAttraction);
|
||||||
map.PlacingAttraction.Wobble();
|
map.PlacingAttraction.Wobble();
|
||||||
|
@ -342,9 +341,6 @@ public class Ui {
|
||||||
this.uiSystem.Remove(e2.Root.Name);
|
this.uiSystem.Remove(e2.Root.Name);
|
||||||
|
|
||||||
var game = GameImpl.Instance;
|
var game = GameImpl.Instance;
|
||||||
game.Platform.AddResourceEvent(true, "Tickets", (float) game.Tickets, "Restart", "Restart" + game.TimesRestarted);
|
|
||||||
game.Platform.AddResourceEvent(false, "Stars", game.GetBuyableStars(), "Restart", "Restart" + game.TimesRestarted);
|
|
||||||
|
|
||||||
game.Stars += game.GetBuyableStars();
|
game.Stars += game.GetBuyableStars();
|
||||||
game.TimesRestarted++;
|
game.TimesRestarted++;
|
||||||
game.Tickets = 0;
|
game.Tickets = 0;
|
||||||
|
@ -393,10 +389,6 @@ public class Ui {
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
num.PositionOffset = new Vector2(0, 1);
|
num.PositionOffset = new Vector2(0, 1);
|
||||||
optionList.AddChild(new Button(Anchor.AutoLeft, new Vector2(1, 30), Localization.Get("Achievements")) {
|
|
||||||
PositionOffset = new Vector2(0, 1),
|
|
||||||
OnPressed = _ => GameImpl.Instance.Platform.ShowAchievements()
|
|
||||||
});
|
|
||||||
|
|
||||||
optionList.AddChild(new Paragraph(Anchor.AutoCenter, 1, Localization.Get("OtherOptions"), true) {
|
optionList.AddChild(new Paragraph(Anchor.AutoCenter, 1, Localization.Get("OtherOptions"), true) {
|
||||||
PositionOffset = new Vector2(0, 10),
|
PositionOffset = new Vector2(0, 10),
|
||||||
|
@ -553,22 +545,6 @@ public class Ui {
|
||||||
}
|
}
|
||||||
yield return new Wait(0.5);
|
yield return new Wait(0.5);
|
||||||
|
|
||||||
var analyticsFlag = new FileInfo(Path.Combine(SaveHandler.GetGameDirectory(true).FullName, "_ReadGdpr"));
|
|
||||||
if (!analyticsFlag.Exists) {
|
|
||||||
var evt = new Event();
|
|
||||||
var panel = splash.AddChild(new Panel(Anchor.Center, new Vector2(0.8F), Vector2.Zero, true));
|
|
||||||
panel.AddChild(new Paragraph(Anchor.AutoLeft, 1, Localization.Get("GDPRInfo")));
|
|
||||||
panel.AddChild(new Button(Anchor.AutoLeft, new Vector2(1, 30), Localization.Get("Okay")) {
|
|
||||||
OnPressed = _ => {
|
|
||||||
// create the (empty) flag file
|
|
||||||
using (analyticsFlag.Create()) {}
|
|
||||||
splash.RemoveChild(panel);
|
|
||||||
CoroutineHandler.RaiseEvent(evt);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
yield return new Wait(evt);
|
|
||||||
}
|
|
||||||
|
|
||||||
yield return new Wait(0.25);
|
yield return new Wait(0.25);
|
||||||
loadGame();
|
loadGame();
|
||||||
yield return new Wait(0.25);
|
yield return new Wait(0.25);
|
||||||
|
@ -699,8 +675,6 @@ public class Ui {
|
||||||
ActionSound = new SoundEffectInfo(Assets.BuySound),
|
ActionSound = new SoundEffectInfo(Assets.BuySound),
|
||||||
OnPressed = _ => {
|
OnPressed = _ => {
|
||||||
GameImpl.Instance.Stars -= upgrade.Price;
|
GameImpl.Instance.Stars -= upgrade.Price;
|
||||||
GameImpl.Instance.Platform.AddResourceEvent(true, "Stars", upgrade.Price, "Upgrade", upgrade.Name);
|
|
||||||
|
|
||||||
GameImpl.Instance.AppliedUpgrades.Add(upgrade);
|
GameImpl.Instance.AppliedUpgrades.Add(upgrade);
|
||||||
upgrade.OnApplied();
|
upgrade.OnApplied();
|
||||||
Ui.PopulateUpgradeList(upgradeList);
|
Ui.PopulateUpgradeList(upgradeList);
|
||||||
|
|
Loading…
Reference in a new issue