コード例 #1
0
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            JToken jToken = JToken.ReadFrom(reader);

            if (jToken.Type == JTokenType.Null || jToken.Type == JTokenType.None)
            {
                return(new PurchaseData[0]);
            }
            return(jToken.ToObject <string[]>().Select(s =>
            {
                PurchaseData result;
                if (!InfoResolver.Resolve <FortInfo>().Purchase.PurchasableTokens.ContainsKey(s))
                {
                    return null;
                }
                PurchasableToken purchasableToken = InfoResolver.Resolve <FortInfo>().Purchase.PurchasableTokens[s];
                if (purchasableToken.NoneLevelBase)
                {
                    result = new PurchaseNoneLevelBaseData
                    {
                        PurchasableItemInfo = (NoneLevelBasePurchasableItemInfo)purchasableToken.PurchasableItemInfo
                    };
                }
                else
                {
                    result = new PurchaseLevelBaseData
                    {
                        PurchasableItemInfo = (LevelBasePurchasableItemInfo)purchasableToken.PurchasableItemInfo,
                        Level = purchasableToken.Index
                    };
                }
                return result;
            }).Where(info => info != null).ToArray());
        }
コード例 #2
0
        public void StatItemPurchased(string itemId, Balance cost, int discount)
        {
            if (InfoResolver.Resolve <FortInfo>().Analytic.AnalyticsProvider == null)
            {
                return;
            }
            if (!InfoResolver.Resolve <FortInfo>().Analytic.StatItemPurchased)
            {
                return;
            }
            PurchasableToken purchasableToken = InfoResolver.Resolve <FortInfo>().Purchase.PurchasableTokens[itemId];

            if (purchasableToken.NoneLevelBase)
            {
                InfoResolver.Resolve <FortInfo>().Analytic.AnalyticsProvider.StateEvent(purchasableToken.PurchasableItemInfo.Name,
                                                                                        purchasableToken.PurchasableItemInfo.DisplayName, "ItemPurchased",
                                                                                        new ItemPurchaseAnalyticStat {
                    ItemId = itemId, ItemName = purchasableToken.PurchasableItemInfo.Name, Cost = cost, Discount = discount
                });
            }
            else
            {
                InfoResolver.Resolve <FortInfo>().Analytic.AnalyticsProvider.StateEvent(purchasableToken.PurchasableItemInfo.Name,
                                                                                        purchasableToken.PurchasableItemInfo.DisplayName, "ItemPurchased",
                                                                                        new ItemPurchaseAnalyticStat
                {
                    ItemId   = itemId,
                    ItemName = purchasableToken.PurchasableItemInfo.Name,
                    Level    = purchasableToken.Index,
                    Cost     = cost,
                    Discount = discount
                });
            }
        }
コード例 #3
0
        public static void ImportAchievements()
        {
            string path = EditorUtility.OpenFilePanel("Import Purchase Items", "", "xls");

            if (string.IsNullOrEmpty(path))
            {
                return;
            }
            using (System.IO.Stream reader = File.OpenRead(path))
            {
                IDictionary <string, PropertyInfo> customPossibleProperties =
                    ExportData.GetCustomPossibleProperties(
                        TypeHelper.GetAllTypes(AllTypeCategory.Game)
                        .Where(type => typeof(NoneLevelBasePurchasableItemInfo).IsAssignableFrom(type))
                        .Concat(
                            TypeHelper.GetAllTypes(AllTypeCategory.Game)
                            .Where(type => typeof(LevelBasePurchasableItemInfo).IsAssignableFrom(type)))
                        .Concat(
                            TypeHelper.GetAllTypes(AllTypeCategory.Game)
                            .Where(type => typeof(PurchasableLevelInfo).IsAssignableFrom(type)))
                        .ToArray());
                Dictionary <string, Type> parameters = new Dictionary <string, Type>();
                parameters["Id"]   = typeof(string);
                parameters["Name"] = typeof(string);
                //parameters["DisplayName"] = typeof(string);
                parameters["Description"]   = typeof(string);
                parameters["DefaultBought"] = typeof(bool);
                foreach (string valueDefenition in InfoResolver.Resolve <FortInfo>().ValueDefenitions)
                {
                    parameters[string.Format("PurchaseCost-{0}", valueDefenition)] = typeof(int);
                    parameters[string.Format("RentCost-{0}", valueDefenition)]     = typeof(int);
                }
                foreach (KeyValuePair <string, PropertyInfo> pair in customPossibleProperties)
                {
                    parameters[pair.Key] = pair.Value.PropertyType;
                }
                HSSFWorkbook workbook   = new HSSFWorkbook(reader);
                ExportData   exportData = ExportData.DeserializeFromSheet(parameters, workbook.GetSheetAt(0));
                foreach (ExportRow exportRow in exportData.ExportRows)
                {
                    if (!exportRow.ContainsParameter("Id"))
                    {
                        continue;
                    }
                    string id = (string)exportRow.GetValue("Id").Value;
                    if (!InfoResolver.Resolve <FortInfo>().Purchase.PurchasableTokens.ContainsKey(id))
                    {
                        continue;
                    }
                    PurchasableToken purchasableToken = InfoResolver.Resolve <FortInfo>().Purchase.PurchasableTokens[id];
                    if (purchasableToken.NoneLevelBase)
                    {
                        NoneLevelBasePurchasableItemInfo noneLevelBasePurchasableItemInfo = (NoneLevelBasePurchasableItemInfo)purchasableToken.PurchasableItemInfo;
                        if (exportRow.ContainsParameter("Name"))
                        {
                            noneLevelBasePurchasableItemInfo.Name = (string)exportRow.GetValue("Name").Value;
                        }

/*                        if (exportRow.ContainsParameter("DisplayName"))
 *                      {
 *                          noneLevelBasePurchasableItemInfo.DisplayName = (string)exportRow.GetValue("DisplayName").Value;
 *                      }*/
                        if (exportRow.ContainsParameter("Description"))
                        {
                            noneLevelBasePurchasableItemInfo.Description = (string)exportRow.GetValue("Description").Value;
                        }
                        if (exportRow.ContainsParameter("DefaultBought"))
                        {
                            noneLevelBasePurchasableItemInfo.DefaultBought = (bool)exportRow.GetValue("DefaultBought").Value;
                        }
                        if (noneLevelBasePurchasableItemInfo.Costs == null)
                        {
                            noneLevelBasePurchasableItemInfo.Costs = new ItemCosts();
                        }

                        foreach (string valueDefenition in InfoResolver.Resolve <FortInfo>().ValueDefenitions)
                        {
                            string purchaseValueDefenition = string.Format("PurchaseCost-{0}", valueDefenition);
                            if (exportRow.ContainsParameter(purchaseValueDefenition))
                            {
                                noneLevelBasePurchasableItemInfo.Costs.Purchase[valueDefenition] =
                                    (int)exportRow.GetValue(purchaseValueDefenition).Value;
                            }
                            string rentValueDefenition = string.Format("RentCost-{0}", valueDefenition);
                            if (exportRow.ContainsParameter(rentValueDefenition))
                            {
                                noneLevelBasePurchasableItemInfo.Costs.Purchase[valueDefenition] =
                                    (int)exportRow.GetValue(rentValueDefenition).Value;
                            }
                        }
                        exportRow.FillCustomExportParameter(noneLevelBasePurchasableItemInfo);
                    }
                    else
                    {
                        if (purchasableToken.PurchasableLevelInfo == null)
                        {
                            LevelBasePurchasableItemInfo levelBasePurchasableItemInfo = (LevelBasePurchasableItemInfo)purchasableToken.PurchasableItemInfo;
                            if (exportRow.ContainsParameter("Name"))
                            {
                                levelBasePurchasableItemInfo.Name = (string)exportRow.GetValue("Name").Value;
                            }

/*                            if (exportRow.ContainsParameter("DisplayName"))
 *                          {
 *                              levelBasePurchasableItemInfo.DisplayName = (string)exportRow.GetValue("DisplayName").Value;
 *                          }*/
                            if (exportRow.ContainsParameter("Description"))
                            {
                                levelBasePurchasableItemInfo.Description = (string)exportRow.GetValue("Description").Value;
                            }
                            if (exportRow.ContainsParameter("DefaultBought"))
                            {
                                levelBasePurchasableItemInfo.DefaultBought = (bool)exportRow.GetValue("DefaultBought").Value;
                            }
                            exportRow.FillCustomExportParameter(levelBasePurchasableItemInfo);
                        }
                        else
                        {
                            PurchasableLevelInfo purchasableLevelInfo = purchasableToken.PurchasableLevelInfo;

/*                            if (exportRow.ContainsParameter("DisplayName"))
 *                          {
 *                              purchasableLevelInfo.DisplayName = (string)exportRow.GetValue("DisplayName").Value;
 *                          }*/
                            if (exportRow.ContainsParameter("Description"))
                            {
                                purchasableLevelInfo.Description = (string)exportRow.GetValue("Description").Value;
                            }
                            if (exportRow.ContainsParameter("DefaultBought"))
                            {
                                purchasableLevelInfo.DefaultBought = (bool)exportRow.GetValue("DefaultBought").Value;
                            }
                            foreach (string valueDefenition in InfoResolver.Resolve <FortInfo>().ValueDefenitions)
                            {
                                string purchaseValueDefenition = string.Format("PurchaseCost-{0}", valueDefenition);
                                if (exportRow.ContainsParameter(purchaseValueDefenition))
                                {
                                    purchasableLevelInfo.Costs.Purchase[valueDefenition] =
                                        (int)exportRow.GetValue(purchaseValueDefenition).Value;
                                }
                                string rentValueDefenition = string.Format("RentCost-{0}", valueDefenition);
                                if (exportRow.ContainsParameter(rentValueDefenition))
                                {
                                    purchasableLevelInfo.Costs.Purchase[valueDefenition] =
                                        (int)exportRow.GetValue(rentValueDefenition).Value;
                                }
                            }
                            exportRow.FillCustomExportParameter(purchasableLevelInfo);
                        }
                    }
                }
            }
            InfoResolver.Resolve <FortInfo>().Save();
        }