| 
									
										
										
										
											2021-08-02 07:32:09 +00:00
										 |  |  | using UnityEngine; | 
					
						
							|  |  |  | using System; | 
					
						
							|  |  |  | using System.Collections.Generic; | 
					
						
							|  |  |  | using System.Linq; | 
					
						
							|  |  |  | using System.Runtime.Serialization; | 
					
						
							| 
									
										
										
										
											2022-05-11 07:54:36 +00:00
										 |  |  | using MyGame.Scenes.marketing.Scripts; | 
					
						
							| 
									
										
										
										
											2021-12-03 07:40:32 +00:00
										 |  |  | using MyGame.Scripts; | 
					
						
							| 
									
										
										
										
											2021-08-02 07:32:09 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | public enum AdRewardType { | 
					
						
							|  |  |  |     GachaCoin   = 1, | 
					
						
							|  |  |  |     Avatar      = 2, | 
					
						
							|  |  |  |     Count, | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [DataContract(Name="KeyValueOfintint")] | 
					
						
							|  |  |  | public sealed class KeyValueOfintint { | 
					
						
							|  |  |  |     [DataMember] | 
					
						
							|  |  |  |     public int Key; | 
					
						
							|  |  |  |     [DataMember] | 
					
						
							|  |  |  |     public int Value; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public KeyValueOfintint(KeyValuePair<int, int> value){ | 
					
						
							|  |  |  |         Key = value.Key; | 
					
						
							|  |  |  |         Value = value.Value; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [DataContract] | 
					
						
							|  |  |  | public sealed class GameData { | 
					
						
							|  |  |  |     [DataMember(Name = "Data0")] | 
					
						
							|  |  |  |     public long beginPlayTime = DateTime.UtcNow.ToBinary(); | 
					
						
							|  |  |  |     [DataMember(Name = "Data1")] | 
					
						
							|  |  |  |     public string lastPlayedVersion = Const.DefaultAppVersion; | 
					
						
							|  |  |  |     [DataMember(Name = "Data2")] | 
					
						
							|  |  |  |     public long lastPlayTime = DateTime.UtcNow.ToBinary(); // 最終プレイ日時 | 
					
						
							|  |  |  |     [DataMember(Name = "Data3")] | 
					
						
							|  |  |  |     public int dailyLoginCount = 0; | 
					
						
							|  |  |  |     [DataMember(Name = "Data4")] | 
					
						
							|  |  |  |     public int adCount; | 
					
						
							|  |  |  |     [DataMember(Name = "Data5")] | 
					
						
							|  |  |  |     public int stage = 1; | 
					
						
							| 
									
										
										
										
											2021-10-01 03:16:44 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-02 07:32:09 +00:00
										 |  |  |     // [DataMember(Name = "Data6")] | 
					
						
							|  |  |  |     // public int avatarId = Const.DefaultAvatarId; | 
					
						
							| 
									
										
										
										
											2021-10-01 03:16:44 +00:00
										 |  |  |     [DataMember(Name = "Data7")]  | 
					
						
							|  |  |  |     private int coin; | 
					
						
							|  |  |  |     public int Coin | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         get => coin; | 
					
						
							|  |  |  |         set => ChangeCoin(value); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-02 07:32:09 +00:00
										 |  |  |     // [DataMember(Name = "Data8")] | 
					
						
							|  |  |  |     // private int[] avatarIdArray; | 
					
						
							|  |  |  |     // public List<int> avatarIdList; | 
					
						
							|  |  |  |     // [DataMember(Name = "Data9")] | 
					
						
							|  |  |  |     // public int gachaCount; | 
					
						
							|  |  |  |     // [DataMember(Name = "Data10")] | 
					
						
							|  |  |  |     // private int[] newAvatarIdArray; | 
					
						
							|  |  |  |     // public List<int> newAvatarIdList; | 
					
						
							|  |  |  |     // [DataMember(Name = "Data11")] | 
					
						
							|  |  |  |     // public bool isRandomAvatar; | 
					
						
							| 
									
										
										
										
											2021-08-06 08:49:05 +00:00
										 |  |  |     // CornField | 
					
						
							| 
									
										
										
										
											2021-08-02 07:32:09 +00:00
										 |  |  |     [DataMember(Name = "Data12")]  | 
					
						
							| 
									
										
										
										
											2021-09-28 03:51:39 +00:00
										 |  |  |     public List<PlantLineData> PlantLineDataList = new List<PlantLineData>(); | 
					
						
							| 
									
										
										
										
											2021-08-16 04:29:27 +00:00
										 |  |  |     // [DataMember(Name = "Data13")]  | 
					
						
							| 
									
										
										
										
											2021-10-01 05:10:12 +00:00
										 |  |  |      | 
					
						
							| 
									
										
										
										
											2021-08-02 07:32:09 +00:00
										 |  |  |     [DataMember(Name = "Data14")]  | 
					
						
							| 
									
										
										
										
											2021-10-21 03:01:40 +00:00
										 |  |  |     public int MachineLevel = Const.DefaultMachineLevel; | 
					
						
							| 
									
										
										
										
											2021-08-02 07:32:09 +00:00
										 |  |  |     [DataMember(Name = "Data15")]  | 
					
						
							|  |  |  |     public List<SeedlingProgressData> SeedlingDataList = new List<SeedlingProgressData>(); | 
					
						
							| 
									
										
										
										
											2021-08-06 08:49:05 +00:00
										 |  |  |     [DataMember(Name = "Data16")]  | 
					
						
							| 
									
										
										
										
											2021-10-01 03:16:44 +00:00
										 |  |  |     private int cornSeed; | 
					
						
							|  |  |  |     public int CornSeed | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         get => cornSeed; | 
					
						
							|  |  |  |         set => ChangeCornSeed(value); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2021-08-06 08:49:05 +00:00
										 |  |  |     // Main | 
					
						
							|  |  |  |     // 所持レシピ | 
					
						
							|  |  |  |     [DataMember(Name = "Data17")]  | 
					
						
							|  |  |  |     public int[] MyRecipes; | 
					
						
							|  |  |  |     // 所持素材 | 
					
						
							|  |  |  |     [DataMember(Name = "Data18")]  | 
					
						
							| 
									
										
										
										
											2021-10-07 07:12:48 +00:00
										 |  |  |     public List<MaterialData> Material; | 
					
						
							| 
									
										
										
										
											2021-08-06 08:49:05 +00:00
										 |  |  |     // 店頭ポップコーン在庫 | 
					
						
							| 
									
										
										
										
											2021-08-16 04:29:27 +00:00
										 |  |  |     [DataMember(Name = "Data19")] | 
					
						
							| 
									
										
										
										
											2021-10-06 04:32:23 +00:00
										 |  |  |     public List<ProductStockData> ShopStock; | 
					
						
							| 
									
										
										
										
											2021-08-06 08:49:05 +00:00
										 |  |  |     // タンクポップコーン在庫 | 
					
						
							|  |  |  |     [DataMember(Name = "Data20")] | 
					
						
							|  |  |  |     public List<StorageTank> StorageTanks; | 
					
						
							| 
									
										
										
										
											2021-09-03 03:08:42 +00:00
										 |  |  |     [DataMember(Name = "Data21")] | 
					
						
							|  |  |  |     public int Heart = 0; | 
					
						
							| 
									
										
										
										
											2021-09-10 02:17:58 +00:00
										 |  |  |     [DataMember(Name = "Data22")] | 
					
						
							|  |  |  |     public int[] Pans; | 
					
						
							| 
									
										
										
										
											2021-10-14 08:43:00 +00:00
										 |  |  |     [DataMember(Name = "Data23")] | 
					
						
							|  |  |  |     public int ViewedShopLevel; | 
					
						
							| 
									
										
										
										
											2021-09-15 07:47:38 +00:00
										 |  |  |     [DataMember(Name = "Data24")] | 
					
						
							|  |  |  |     public ProductRefillMode RefillMode; | 
					
						
							| 
									
										
										
										
											2021-10-01 05:10:12 +00:00
										 |  |  |     [DataMember(Name = "Data25")] | 
					
						
							|  |  |  |     private int[] achievedMission; | 
					
						
							|  |  |  |     public List<int> AchievedMission; | 
					
						
							| 
									
										
										
										
											2021-10-25 03:22:05 +00:00
										 |  |  |     [DataMember(Name = "Data26")]  | 
					
						
							|  |  |  |     public int TastingCount; | 
					
						
							| 
									
										
										
										
											2021-10-08 05:43:02 +00:00
										 |  |  |      | 
					
						
							| 
									
										
										
										
											2021-10-08 09:43:06 +00:00
										 |  |  |     // BulkOrder | 
					
						
							| 
									
										
										
										
											2021-10-22 07:01:22 +00:00
										 |  |  |     [DataMember(Name = "Data27")] | 
					
						
							|  |  |  |     public int OrderIconIndex; | 
					
						
							| 
									
										
										
										
											2021-10-08 05:43:02 +00:00
										 |  |  |     [DataMember(Name = "Data28")] | 
					
						
							|  |  |  |     public int OrderIdInProgress; | 
					
						
							|  |  |  |     [DataMember(Name = "Data29")] | 
					
						
							|  |  |  |     public int OrderTextId; | 
					
						
							|  |  |  |     [DataMember(Name = "Data30")]  | 
					
						
							|  |  |  |     public int OrderConditionCount; | 
					
						
							|  |  |  |     [DataMember(Name = "Data31")]  | 
					
						
							|  |  |  |     public int CancelOrderId; | 
					
						
							|  |  |  |     [DataMember(Name = "Data32")] | 
					
						
							|  |  |  |     public int AchievedOrderLevel; | 
					
						
							|  |  |  |     [DataMember(Name = "Data33")] | 
					
						
							| 
									
										
										
										
											2021-10-11 07:38:38 +00:00
										 |  |  |     public List<BulkOrderResultData> CompletedProductList; | 
					
						
							| 
									
										
										
										
											2021-10-08 09:43:06 +00:00
										 |  |  |     [DataMember(Name = "Data34")]  | 
					
						
							| 
									
										
										
										
											2021-10-11 07:38:38 +00:00
										 |  |  |     private int[] deliveredOrder; | 
					
						
							|  |  |  |     public List<int> DeliveredOrder; | 
					
						
							| 
									
										
										
										
											2021-10-01 03:16:44 +00:00
										 |  |  |      | 
					
						
							| 
									
										
										
										
											2021-10-21 03:01:40 +00:00
										 |  |  |     // reward | 
					
						
							|  |  |  |     [DataMember(Name = "Data35")]  | 
					
						
							|  |  |  |     public long fertilizerTime = DateTime.UtcNow.ToBinary(); | 
					
						
							|  |  |  |     [DataMember(Name = "Data36")] | 
					
						
							|  |  |  |     public long increaseCustomerTime= DateTime.UtcNow.ToBinary(); | 
					
						
							| 
									
										
										
										
											2021-10-21 04:36:45 +00:00
										 |  |  |     [DataMember(Name = "Data37")]  | 
					
						
							|  |  |  |     public long kitchenRefreshTime= DateTime.UtcNow.ToBinary(); | 
					
						
							| 
									
										
										
										
											2021-10-21 03:01:40 +00:00
										 |  |  |      | 
					
						
							| 
									
										
										
										
											2021-10-26 03:26:36 +00:00
										 |  |  |     // tutorial | 
					
						
							| 
									
										
										
										
											2021-12-03 07:40:32 +00:00
										 |  |  |     [DataMember(Name = "Data38")] | 
					
						
							|  |  |  |     public TutorialFlag FinishedFlags = TutorialFlag.None; | 
					
						
							| 
									
										
										
										
											2021-10-26 03:26:36 +00:00
										 |  |  |      | 
					
						
							| 
									
										
										
										
											2021-11-12 10:58:40 +00:00
										 |  |  |     // フライパン | 
					
						
							|  |  |  |     [DataMember(Name = "Data39")]  | 
					
						
							|  |  |  |     public int SelectedPanId; | 
					
						
							| 
									
										
										
										
											2021-11-30 09:04:16 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     // 遅延追加用加算枠 | 
					
						
							|  |  |  |     [DataMember(Name = "Data40")]  | 
					
						
							|  |  |  |     public int WaitAddCoin; | 
					
						
							|  |  |  |     [DataMember(Name = "Data41")]  | 
					
						
							|  |  |  |     public int WaitAddHeart; | 
					
						
							| 
									
										
										
										
											2022-02-03 03:09:48 +00:00
										 |  |  |     [DataMember(Name = "Data42")]  | 
					
						
							|  |  |  |     public ProductStockData WaitAddStock; | 
					
						
							| 
									
										
										
										
											2022-02-04 07:51:01 +00:00
										 |  |  |      | 
					
						
							|  |  |  |     // reward(v1.1追加) | 
					
						
							|  |  |  |     [DataMember(Name = "Data51")]  | 
					
						
							|  |  |  |     public long vipCustomerLimitTime = DateTime.UtcNow.ToBinary(); | 
					
						
							|  |  |  |     [DataMember(Name = "Data52")]  | 
					
						
							|  |  |  |     public bool vipCustomerFirstOpen; | 
					
						
							| 
									
										
										
										
											2022-04-14 07:09:42 +00:00
										 |  |  |      | 
					
						
							|  |  |  |     // 自動調理(v1.2追加) | 
					
						
							|  |  |  |     [DataMember(Name = "Data53")]  | 
					
						
							|  |  |  |     public int AutoCookLevel; | 
					
						
							|  |  |  |     [DataMember(Name = "Data54")]  | 
					
						
							|  |  |  |     public int AutoCookUsesCount; | 
					
						
							|  |  |  |     [DataMember(Name = "Data55")]  | 
					
						
							|  |  |  |     public long AutoCookFinishTime = DateTime.UtcNow.ToBinary(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     [DataMember(Name = "Data56")] | 
					
						
							|  |  |  |     public int[] AutoCookProducts; | 
					
						
							| 
									
										
										
										
											2022-05-11 07:54:36 +00:00
										 |  |  |      | 
					
						
							|  |  |  |     // カスタマイズ機能(v1.3追加) | 
					
						
							|  |  |  |     [DataMember(Name = "Data57")]  | 
					
						
							|  |  |  |     public int ShopCustomizeCoin; | 
					
						
							|  |  |  |     [DataMember(Name = "Data58")]  | 
					
						
							|  |  |  |     public int ShopCustomizePoint; | 
					
						
							|  |  |  |     [DataMember(Name = "Data59")]  | 
					
						
							|  |  |  |     public int ShopCustomizeLevel; | 
					
						
							|  |  |  |     [DataMember(Name = "Data60")]  | 
					
						
							|  |  |  |     public int[] ShopCustomizeMyItems; | 
					
						
							|  |  |  |     [DataMember(Name = "Data61")]  | 
					
						
							|  |  |  |     public ShopCustomizeSettings ShopCustomizeSettings; | 
					
						
							| 
									
										
										
										
											2022-04-14 07:09:42 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-03 03:09:48 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         // mission | 
					
						
							| 
									
										
										
										
											2021-10-01 03:16:44 +00:00
										 |  |  |     [DataMember(Name = "Data1001")]  | 
					
						
							|  |  |  |     public int TotalAddCoin { get; private set; } | 
					
						
							|  |  |  |     [DataMember(Name = "Data1002")]  | 
					
						
							|  |  |  |     public int TotalSubCoin { get; private set; } | 
					
						
							|  |  |  |     [DataMember(Name = "Data1003")]  | 
					
						
							|  |  |  |     public int TotalAddCornSeed { get; private set; } | 
					
						
							|  |  |  |     [DataMember(Name = "Data1004")]  | 
					
						
							|  |  |  |     public int TotalCustomerCount { get; private set; } | 
					
						
							|  |  |  |     [DataMember(Name = "Data1005")]  | 
					
						
							|  |  |  |     public List<ProductStockData> TotalSalesList { get; private set; } | 
					
						
							| 
									
										
										
										
											2021-10-25 03:27:56 +00:00
										 |  |  |     [DataMember(Name = "Data1006")]  | 
					
						
							|  |  |  |     public int BulkOrderDeliveredCount; | 
					
						
							| 
									
										
										
										
											2021-10-01 03:16:44 +00:00
										 |  |  |     public int TotalSales => TotalSalesList.Sum(data => data.Stock); | 
					
						
							|  |  |  |     public int RareTotalSales => TotalSalesList.Where(data => data.Rarity != ProductRarity.Normal).Sum(data => data.Stock); | 
					
						
							| 
									
										
										
										
											2021-10-25 03:27:56 +00:00
										 |  |  |      | 
					
						
							|  |  |  |     // daily mission | 
					
						
							|  |  |  |     [DataMember(Name = "Data2001")]  | 
					
						
							|  |  |  |     public long lastDailyMissionSetTime = DateTime.MinValue.ToBinary(); | 
					
						
							|  |  |  |     [DataMember(Name = "Data2002")]  | 
					
						
							|  |  |  |     public int[] dailyMissionIdArray; | 
					
						
							|  |  |  |     [DataMember(Name = "Data2003")]  | 
					
						
							|  |  |  |     public int[] dailyMissionAchievedIdArray; | 
					
						
							|  |  |  |     [DataMember(Name = "Data2004")]  | 
					
						
							|  |  |  |     public bool dailyMissionCompleted; | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  |     // [DataMember(Name = "Data2100")] | 
					
						
							|  |  |  |     [DataMember(Name = "Data2101")]  | 
					
						
							|  |  |  |     public int DailyTotalAddCoin { get; private set; } | 
					
						
							|  |  |  |     [DataMember(Name = "Data2102")]  | 
					
						
							|  |  |  |     public int DailyTotalSubCoin { get; private set; } | 
					
						
							|  |  |  |     [DataMember(Name = "Data2103")]  | 
					
						
							|  |  |  |     public int DailyTotalAddCornSeed { get; private set; } | 
					
						
							|  |  |  |     [DataMember(Name = "Data2104")]  | 
					
						
							|  |  |  |     public int DailyTotalCustomerCount { get; private set; } | 
					
						
							|  |  |  |     [DataMember(Name = "Data2105")]  | 
					
						
							|  |  |  |     public List<ProductStockData> DailyTotalSalesList { get; private set; } | 
					
						
							|  |  |  |     [DataMember(Name = "Data2106")]  | 
					
						
							|  |  |  |     public int DailyRecipeGetCount; | 
					
						
							|  |  |  |     [DataMember(Name = "Data2107")]  | 
					
						
							|  |  |  |     public int DailyBulkOrderDeliveredCount; | 
					
						
							|  |  |  |     public int DailyTotalSales => DailyTotalSalesList.Sum(data => data.Stock); | 
					
						
							|  |  |  |     public int DailyRareTotalSales => DailyTotalSalesList.Where(data => data.Rarity != ProductRarity.Normal).Sum(data => data.Stock); | 
					
						
							| 
									
										
										
										
											2021-10-01 03:16:44 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     private void ChangeCornSeed(int value) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         if (cornSeed < value) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             TotalAddCornSeed += value - cornSeed; | 
					
						
							| 
									
										
										
										
											2021-10-25 03:27:56 +00:00
										 |  |  |             DailyTotalAddCornSeed += value - cornSeed; | 
					
						
							| 
									
										
										
										
											2021-10-01 03:16:44 +00:00
										 |  |  |         } | 
					
						
							|  |  |  |         cornSeed = value; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     private void ChangeCoin(int value) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2021-10-25 03:27:56 +00:00
										 |  |  |         // Debug.Log($"{coin} {value}"); | 
					
						
							| 
									
										
										
										
											2021-10-01 03:16:44 +00:00
										 |  |  |         if (coin < value) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             TotalAddCoin += value - coin; | 
					
						
							| 
									
										
										
										
											2021-10-25 03:27:56 +00:00
										 |  |  |             DailyTotalAddCoin += value - coin; | 
					
						
							| 
									
										
										
										
											2021-10-01 03:16:44 +00:00
										 |  |  |         } | 
					
						
							|  |  |  |         else | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             TotalSubCoin += coin - value; | 
					
						
							| 
									
										
										
										
											2021-10-25 03:27:56 +00:00
										 |  |  |             DailyTotalSubCoin += coin - value; | 
					
						
							| 
									
										
										
										
											2021-10-01 03:16:44 +00:00
										 |  |  |         } | 
					
						
							|  |  |  |         coin = value; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public void AddCustomerCount(int value) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         TotalCustomerCount += value; | 
					
						
							| 
									
										
										
										
											2021-10-25 03:27:56 +00:00
										 |  |  |         DailyTotalCustomerCount += value; | 
					
						
							| 
									
										
										
										
											2021-10-01 03:16:44 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public void AddSalesCount(int id, int stock, ProductRarity rarity) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2021-10-08 05:43:02 +00:00
										 |  |  |         OrderConditionCount += stock; | 
					
						
							| 
									
										
										
										
											2021-10-25 04:57:00 +00:00
										 |  |  |         if (!(TotalSalesList.FirstOrDefault(x => x.FlavorId == id && x.Rarity == rarity) is ProductStockData stockData)) | 
					
						
							| 
									
										
										
										
											2021-10-01 03:16:44 +00:00
										 |  |  |         { | 
					
						
							| 
									
										
										
										
											2021-10-25 03:27:56 +00:00
										 |  |  |             stockData = new ProductStockData {FlavorId = id, Rarity = rarity, Stock = 0}; | 
					
						
							|  |  |  |             TotalSalesList.Add(stockData); | 
					
						
							| 
									
										
										
										
											2021-10-01 03:16:44 +00:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2021-10-25 03:27:56 +00:00
										 |  |  |         stockData.Stock += stock; | 
					
						
							| 
									
										
										
										
											2021-10-25 04:57:00 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         if (!(DailyTotalSalesList.FirstOrDefault(x => x.FlavorId == id && x.Rarity == rarity) is ProductStockData dailyStockData)) | 
					
						
							| 
									
										
										
										
											2021-10-01 03:16:44 +00:00
										 |  |  |         { | 
					
						
							| 
									
										
										
										
											2021-10-25 03:27:56 +00:00
										 |  |  |             dailyStockData = new ProductStockData {FlavorId = id, Rarity = rarity, Stock = 0}; | 
					
						
							|  |  |  |             DailyTotalSalesList.Add(dailyStockData); | 
					
						
							| 
									
										
										
										
											2021-10-01 03:16:44 +00:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2021-10-25 03:27:56 +00:00
										 |  |  |         dailyStockData.Stock += stock; | 
					
						
							| 
									
										
										
										
											2021-10-01 03:16:44 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public int GetTotalSalesByFlavor(int id) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         return TotalSalesList.Where(data => data.FlavorId == id).Sum(data => data.Stock); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2021-10-25 03:27:56 +00:00
										 |  |  |      | 
					
						
							|  |  |  |     public int GetTotalSalesByFlavorWithRare(int id) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         return TotalSalesList.Where(data => data.FlavorId == id && data.Rarity != ProductRarity.Normal).Sum(data => data.Stock); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  |     public int GetDailyTotalSalesByFlavor(int id) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         return DailyTotalSalesList.Where(data => data.FlavorId == id).Sum(data => data.Stock); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  |     public int GetDailyTotalSalesByFlavorWithRare(int id) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         return DailyTotalSalesList.Where(data => data.FlavorId == id && data.Rarity != ProductRarity.Normal).Sum(data => data.Stock); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2021-08-02 07:32:09 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-11-12 10:21:53 +00:00
										 |  |  |     public void ResetNormalTotalCount() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         TotalAddCoin = 0; | 
					
						
							|  |  |  |         TotalSubCoin = 0; | 
					
						
							|  |  |  |         TotalAddCornSeed = 0; | 
					
						
							|  |  |  |         TotalCustomerCount = 0; | 
					
						
							|  |  |  |         TotalSalesList.Clear(); | 
					
						
							|  |  |  |         BulkOrderDeliveredCount = 0; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-25 03:27:56 +00:00
										 |  |  |     public void ResetDailyTotalCount() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         DailyTotalAddCoin = 0; | 
					
						
							|  |  |  |         DailyTotalSubCoin = 0; | 
					
						
							|  |  |  |         DailyTotalAddCornSeed = 0; | 
					
						
							|  |  |  |         DailyTotalCustomerCount = 0; | 
					
						
							|  |  |  |         DailyTotalSalesList.Clear(); | 
					
						
							|  |  |  |         DailyRecipeGetCount = 0; | 
					
						
							|  |  |  |         DailyBulkOrderDeliveredCount = 0; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |      | 
					
						
							| 
									
										
										
										
											2021-10-25 03:22:05 +00:00
										 |  |  |     public void AddTastingCustomerCount(int value) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         TastingCount += Mathf.FloorToInt(value / 2f); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-25 03:27:56 +00:00
										 |  |  |     public TimeSpan GetDailyMissionLimitTime() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         return DateTime.FromBinary(lastDailyMissionSetTime).ToLocalTime().AddHours(Const.DailyMissionResetOffset).Date | 
					
						
							|  |  |  |             .AddDays(1).AddHours(-Const.DailyMissionResetOffset) | 
					
						
							|  |  |  |             .Subtract(DateTime.UtcNow.ToLocalTime()); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-10-27 02:29:26 +00:00
										 |  |  |     public void FinishTutorial() | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2021-12-03 07:40:32 +00:00
										 |  |  |         FinishedFlags |= TutorialFlag.FirstPlay; | 
					
						
							| 
									
										
										
										
											2021-10-27 02:29:26 +00:00
										 |  |  |         fertilizerTime = DateTime.UtcNow.ToBinary(); | 
					
						
							|  |  |  |         increaseCustomerTime = DateTime.UtcNow.ToBinary(); | 
					
						
							|  |  |  |         kitchenRefreshTime = DateTime.UtcNow.ToBinary(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-11-30 09:04:16 +00:00
										 |  |  |     public void MoveCoin(int value) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         // 退避していたコインを加算 | 
					
						
							|  |  |  |         WaitAddCoin -= value; | 
					
						
							|  |  |  |         Coin += value; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public void MoveHeart(int value) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         WaitAddHeart -= value; | 
					
						
							|  |  |  |         Heart += value; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public void MoveAllWaitValue() | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2021-12-01 04:05:56 +00:00
										 |  |  | #if UNITY_EDITOR | 
					
						
							| 
									
										
										
										
											2021-11-30 09:04:16 +00:00
										 |  |  |         Debug.Log($"WaitAddValue:{WaitAddCoin},{WaitAddHeart}"); | 
					
						
							| 
									
										
										
										
											2021-12-01 04:05:56 +00:00
										 |  |  | #endif | 
					
						
							| 
									
										
										
										
											2021-11-30 09:04:16 +00:00
										 |  |  |         MoveCoin(WaitAddCoin); | 
					
						
							|  |  |  |         MoveHeart(WaitAddHeart); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2021-12-10 08:18:04 +00:00
										 |  |  |      | 
					
						
							|  |  |  |     public void AddAdCount(){ | 
					
						
							|  |  |  |         ++adCount; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2021-11-30 09:04:16 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-15 08:26:37 +00:00
										 |  |  |     public void InitTank() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         StorageTanks.Clear(); | 
					
						
							|  |  |  |         StorageTanks.Add(new StorageTank | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             Capacity = Const.TankCapacity, | 
					
						
							|  |  |  |             FlavorId = -1, | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-02 07:32:09 +00:00
										 |  |  |     // public void ChangeAvatar(AvatarData avatarData){ | 
					
						
							|  |  |  |     //     newAvatarIdList.Remove(avatarData.id); | 
					
						
							|  |  |  |     // } | 
					
						
							|  |  |  |     // public void AddAvatar(AvatarData avatarData){ | 
					
						
							|  |  |  |     //     if(HasAvatar(avatarData))    return ; | 
					
						
							|  |  |  |     //     avatarIdList.Add(avatarData.id); | 
					
						
							|  |  |  |     //     newAvatarIdList.Add(avatarData.id); | 
					
						
							|  |  |  |     // } | 
					
						
							|  |  |  |     // public bool HasAvatar(AvatarData avatarData){ | 
					
						
							|  |  |  |     //     return avatarIdList.Exists(id => id == avatarData.id); | 
					
						
							|  |  |  |     // } | 
					
						
							|  |  |  |     // public void SetRandom(bool isRandom, AvatarCategory category){ | 
					
						
							|  |  |  |     // } | 
					
						
							|  |  |  |     // public bool GetRandom(AvatarCategory category){ | 
					
						
							|  |  |  |     //     return false; | 
					
						
							|  |  |  |     // } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | //    [OnDeserialized] Unityだと機能しない | 
					
						
							|  |  |  |     public void OnDeserialized(){ | 
					
						
							|  |  |  |         PreDeserialize(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         // if(avatarIdList.Count < 1){ | 
					
						
							|  |  |  |         //     avatarIdList.Add(Const.DefaultAvatarId); | 
					
						
							|  |  |  |         // } | 
					
						
							| 
									
										
										
										
											2021-10-07 07:12:48 +00:00
										 |  |  |         if (MyRecipes.Length < 1) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             MyRecipes = new[] {Const.DefaultRecipeId}; | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2021-10-08 05:50:23 +00:00
										 |  |  |         if (StorageTanks.Count < 1) | 
					
						
							|  |  |  |         { | 
					
						
							| 
									
										
										
										
											2022-02-15 08:26:37 +00:00
										 |  |  |             InitTank(); | 
					
						
							| 
									
										
										
										
											2021-10-08 05:50:23 +00:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2021-09-10 02:17:58 +00:00
										 |  |  |         if (Pans.Length < 1) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             Pans = new[] {Const.DefaultPanId}; | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2022-04-15 01:11:30 +00:00
										 |  |  |         if (AutoCookLevel < 1) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             AutoCookLevel = 1; | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2022-05-11 07:54:36 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         if (ShopCustomizeLevel < 1) | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |             ShopCustomizeLevel = 0; | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2021-10-21 03:01:40 +00:00
										 |  |  |          | 
					
						
							| 
									
										
										
										
											2021-08-02 07:32:09 +00:00
										 |  |  |         // 追加した要素の初期化用 | 
					
						
							|  |  |  |         // TODO Release前にまっさらにする | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     public void PreDeserialize(){ | 
					
						
							|  |  |  |         // avatarIdList = avatarIdArray == null ? new List<int>() : avatarIdArray.ToList(); | 
					
						
							|  |  |  |         // newAvatarIdList = newAvatarIdArray == null ? new List<int>() : newAvatarIdArray.ToList(); | 
					
						
							|  |  |  |         // lastAdRewardTimeList = lastAdRewardTimeArray == null ? new List<long>() : lastAdRewardTimeArray.ToList(); | 
					
						
							| 
									
										
										
										
											2021-10-07 07:12:48 +00:00
										 |  |  |         MyRecipes = MyRecipes ?? new int[0]; | 
					
						
							|  |  |  |         Material = Material ?? new List<MaterialData>(); | 
					
						
							| 
									
										
										
										
											2021-10-06 04:32:23 +00:00
										 |  |  |         ShopStock = ShopStock ?? new List<ProductStockData>(); | 
					
						
							| 
									
										
										
										
											2021-10-08 05:50:23 +00:00
										 |  |  |         StorageTanks = StorageTanks ?? new List<StorageTank>(); | 
					
						
							| 
									
										
										
										
											2021-09-10 02:17:58 +00:00
										 |  |  |         Pans = Pans ?? new int[0]; | 
					
						
							| 
									
										
										
										
											2021-10-01 03:16:44 +00:00
										 |  |  |         TotalSalesList = TotalSalesList ?? new List<ProductStockData>(); | 
					
						
							| 
									
										
										
										
											2021-10-01 05:10:12 +00:00
										 |  |  |         AchievedMission = achievedMission?.ToList() ?? new List<int>(); | 
					
						
							| 
									
										
										
										
											2021-10-11 07:38:38 +00:00
										 |  |  |         CompletedProductList = CompletedProductList ?? new List<BulkOrderResultData>(); | 
					
						
							|  |  |  |         DeliveredOrder = deliveredOrder?.ToList() ?? new List<int>(); | 
					
						
							| 
									
										
										
										
											2021-10-25 03:27:56 +00:00
										 |  |  |         dailyMissionIdArray = dailyMissionIdArray ?? new int[0]; | 
					
						
							|  |  |  |         dailyMissionAchievedIdArray = dailyMissionAchievedIdArray ?? new int[0]; | 
					
						
							|  |  |  |         DailyTotalSalesList = DailyTotalSalesList ?? new List<ProductStockData>(); | 
					
						
							| 
									
										
										
										
											2022-02-03 03:09:48 +00:00
										 |  |  |         WaitAddStock = WaitAddStock ?? new ProductStockData{Rarity = ProductRarity.Normal}; | 
					
						
							| 
									
										
										
										
											2022-04-15 01:11:30 +00:00
										 |  |  |         AutoCookProducts = AutoCookProducts ?? Array.Empty<int>(); | 
					
						
							| 
									
										
										
										
											2022-05-11 07:54:36 +00:00
										 |  |  |         ShopCustomizeSettings = ShopCustomizeSettings ?? new ShopCustomizeSettings(); | 
					
						
							| 
									
										
										
										
											2021-08-02 07:32:09 +00:00
										 |  |  |     } | 
					
						
							|  |  |  |     private Dictionary<int, int> ArrayToDictionary(KeyValueOfintint[] array){ | 
					
						
							|  |  |  |         var dictionary = new Dictionary<int, int>(); | 
					
						
							|  |  |  |         if(array != null && array.Length > 0){ | 
					
						
							|  |  |  |             foreach(var kv in array){ | 
					
						
							|  |  |  |                 dictionary.Add(kv.Key, kv.Value); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         return dictionary; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     public void PreSerialize(){ | 
					
						
							|  |  |  |         // avatarIdArray = avatarIdList.ToArray(); | 
					
						
							|  |  |  |         // newAvatarIdArray = newAvatarIdList.ToArray(); | 
					
						
							|  |  |  |         // lastAdRewardTimeArray = lastAdRewardTimeList.ToArray(); | 
					
						
							| 
									
										
										
										
											2021-10-01 05:10:12 +00:00
										 |  |  |         achievedMission = AchievedMission.ToArray(); | 
					
						
							| 
									
										
										
										
											2021-10-11 07:38:38 +00:00
										 |  |  |         deliveredOrder = DeliveredOrder.ToArray(); | 
					
						
							| 
									
										
										
										
											2021-08-02 07:32:09 +00:00
										 |  |  |     } | 
					
						
							|  |  |  |     private KeyValueOfintint[] DictionaryToArray(Dictionary<int, int> dictionary){ | 
					
						
							|  |  |  |         var array = new KeyValueOfintint[dictionary.Count]; | 
					
						
							|  |  |  |         int index = 0; | 
					
						
							|  |  |  |         foreach(var kvp in dictionary){ | 
					
						
							|  |  |  |             array[index++] = new KeyValueOfintint(kvp); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         return array; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public static class GameDataManager { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public enum LoadState { | 
					
						
							|  |  |  |         NoFile, | 
					
						
							|  |  |  |         ExistsClashed, | 
					
						
							|  |  |  |         DeserializeFailed, | 
					
						
							|  |  |  |         Old, | 
					
						
							|  |  |  |         Succeeded, | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | //    private static readonly int DiskFullTextId = 201; | 
					
						
							|  |  |  | //    private static readonly int UnauthorizedAccessExceptionTextId = 202; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     private static GameData dataCache = null; | 
					
						
							|  |  |  |     public static GameData GameData { | 
					
						
							|  |  |  |         get{ return dataCache ?? (dataCache = LoadGameData()); } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     public static bool IsLoaded { | 
					
						
							|  |  |  |         get{ return dataCache != null; } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     public static bool ExistsGameData(){ | 
					
						
							|  |  |  |         return UsayaStorageManager.Exists(UsayaStorageFilename.Main_Data, Const.GameDataTag) || UsayaStorageManager.ExistsBackup(UsayaStorageFilename.Main_Data, Const.GameDataTag); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     private static GameData LoadGameData(){ | 
					
						
							|  |  |  |         GameData data = null; | 
					
						
							|  |  |  |         var loadState = LoadState.ExistsClashed; | 
					
						
							|  |  |  |         try{ | 
					
						
							|  |  |  |             if(UsayaStorageManager.Exists(UsayaStorageFilename.Main_Data, Const.GameDataTag)){ | 
					
						
							|  |  |  |                 loadState = LoadState.DeserializeFailed; | 
					
						
							|  |  |  |                 data = StringToGameData(UsayaStorageManager.Load<string>(UsayaStorageFilename.Main_Data, Const.GameDataTag)); | 
					
						
							|  |  |  |                 loadState = LoadState.Succeeded; | 
					
						
							|  |  |  |             }else{ | 
					
						
							|  |  |  |                 loadState = LoadState.NoFile; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         }catch(Exception){ | 
					
						
							|  |  |  |         }finally{ | 
					
						
							|  |  |  |             var backup = LoadGameDataBackup(loadState); | 
					
						
							|  |  |  |             if(loadState != LoadState.Succeeded || (data.stage < backup.stage)){ | 
					
						
							|  |  |  |                 data = backup; | 
					
						
							|  |  |  |                 if(loadState == LoadState.Succeeded){ | 
					
						
							|  |  |  | //                    AnalyticsManager.DataLoadWarning(LoadState.Old); | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         data.OnDeserialized(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if(Application.version.CompareVersion(data.lastPlayedVersion) != 0){ | 
					
						
							|  |  |  |             data.lastPlayedVersion = Application.version; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         return data; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     private static GameData LoadGameDataBackup(LoadState mainLoadState){ | 
					
						
							|  |  |  |         GameData result = null; | 
					
						
							|  |  |  |         var loadState = LoadState.ExistsClashed; | 
					
						
							|  |  |  |         try{ | 
					
						
							|  |  |  |             if(UsayaStorageManager.ExistsBackup(UsayaStorageFilename.Main_Data, Const.GameDataTag)){ | 
					
						
							|  |  |  |                 loadState = LoadState.DeserializeFailed; | 
					
						
							|  |  |  |                 result = StringToGameData(UsayaStorageManager.LoadBackup(UsayaStorageFilename.Main_Data, Const.GameDataTag)); | 
					
						
							|  |  |  |                 loadState = LoadState.Succeeded; | 
					
						
							|  |  |  |                 if(mainLoadState != LoadState.Succeeded){ | 
					
						
							|  |  |  | //                    AnalyticsManager.DataLoadWarning(mainLoadState); | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |             }else{ | 
					
						
							|  |  |  |                 loadState = LoadState.NoFile; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         }catch(Exception){ | 
					
						
							|  |  |  |         }finally{ | 
					
						
							|  |  |  |             if(mainLoadState != LoadState.Succeeded && loadState != LoadState.NoFile){ | 
					
						
							|  |  |  | //                AnalyticsManager.DataLoadWarning(mainLoadState, loadState); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             if(loadState != LoadState.Succeeded){ | 
					
						
							|  |  |  |                 result = CreateData(); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         return result; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     private static GameData CreateData(){ | 
					
						
							|  |  |  |         var data = new GameData(); | 
					
						
							|  |  |  |         data.lastPlayedVersion = Application.version; | 
					
						
							|  |  |  |         return data; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     public static bool OverWriteGameData(string dataString){ | 
					
						
							|  |  |  |         try{ | 
					
						
							|  |  |  |             dataCache = StringToGameData(dataString); | 
					
						
							|  |  |  |             return true; | 
					
						
							|  |  |  |         }catch{ | 
					
						
							|  |  |  |             return false; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     public static void SaveGameData(){ | 
					
						
							|  |  |  |         string data = GameDataToString(GameData); | 
					
						
							|  |  |  |         bool isMainSaved = false; | 
					
						
							|  |  |  |         Exception exceptionMain = null; | 
					
						
							|  |  |  |         try{ | 
					
						
							|  |  |  |             UsayaStorageManager.Save<string>(UsayaStorageFilename.Main_Data, Const.GameDataTag, data); | 
					
						
							|  |  |  |             isMainSaved = true; | 
					
						
							|  |  |  |         }catch(Exception e){ | 
					
						
							|  |  |  |             // TODO ログサーバが出来たらExceptionを送りたい | 
					
						
							|  |  |  |             exceptionMain = e; | 
					
						
							|  |  |  |         }finally{ | 
					
						
							|  |  |  |             bool isBackupSaved = false; | 
					
						
							|  |  |  |             Exception exceptionBackup = null; | 
					
						
							|  |  |  |             try{ | 
					
						
							|  |  |  |                 UsayaStorageManager.SaveBackup(UsayaStorageFilename.Main_Data, Const.GameDataTag, data); | 
					
						
							|  |  |  |                 isBackupSaved = true; | 
					
						
							|  |  |  |             }catch(Exception e){ | 
					
						
							|  |  |  |                 // TODO ログサーバが出来たらExceptionを送りたい | 
					
						
							|  |  |  |                 exceptionBackup = e; | 
					
						
							|  |  |  |             }finally{ | 
					
						
							|  |  |  |                 if(!isMainSaved && !isBackupSaved){ | 
					
						
							|  |  |  | //                    AnalyticsManager.DataSaveWarning("GameData", SaveState.MainAndBackupFailed); | 
					
						
							|  |  |  | //                    SaveFailedDialogManager.ShowDialog(exceptionMain, exceptionBackup); | 
					
						
							|  |  |  |                 }else if(!isMainSaved){ | 
					
						
							|  |  |  | //                    AnalyticsManager.DataSaveWarning("GameData", SaveState.MainFailed); | 
					
						
							|  |  |  |                 }else if(!isBackupSaved){ | 
					
						
							|  |  |  | //                    AnalyticsManager.DataSaveWarning("GameData", SaveState.BackupFailed); | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     public static string GetGameDataString(){ | 
					
						
							|  |  |  |         return GameDataToString(GameData); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     private static string GameDataToString(GameData data){ | 
					
						
							|  |  |  |         data.PreSerialize(); | 
					
						
							|  |  |  |         return AvoEx.AesEncryptor.Encrypt( | 
					
						
							|  |  |  |             StringExtensions.DataToXML<GameData>(data) | 
					
						
							|  |  |  |             .Replace("KeyValueOfintint", "KVOii") | 
					
						
							|  |  |  |             .Replace("KeyValueOfintlong", "KVOil") | 
					
						
							|  |  |  |             .Replace("KeyValueOfintInfiniteFloat", "KVOiIF") | 
					
						
							|  |  |  | //            .Compression() | 
					
						
							|  |  |  |         ); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     private static GameData StringToGameData(string str){ | 
					
						
							|  |  |  |         str = AvoEx.AesEncryptor.DecryptString(str) | 
					
						
							|  |  |  | //            .DeCompression() | 
					
						
							|  |  |  |             .Replace("KVOii", "KeyValueOfintint") | 
					
						
							|  |  |  |             .Replace("KVOil", "KeyValueOfintlong") | 
					
						
							|  |  |  |             .Replace("KVOiIF", "KeyValueOfintInfiniteFloat"); | 
					
						
							|  |  |  |         return StringExtensions.XMLToData<GameData>(str); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #if UNITY_EDITOR || DEVELOPMENT_BUILD | 
					
						
							|  |  |  |     public static void ResetData(){ | 
					
						
							|  |  |  |         dataCache = CreateData(); | 
					
						
							|  |  |  |         dataCache.OnDeserialized(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | #endif | 
					
						
							|  |  |  | } |