Example #1
0
    public static JObject enc_sess_get_itemlist(FIFakeContext context)
    {
        var itemList = context.dbContext.GetList <DBItem>();

        InsertUpdated(context, itemList.ToArray());
        return(GetDefaultJObject(context));
    }
Example #2
0
    public static JObject enc_sess_shop_buyingredient(FIFakeContext context)
    {
        CheckParameterExists(context, "id");
        var id     = context.body["id"].Value <int>();
        var single = context.staticData.GetByID <GDShopIngredient>(id);

        //Check my level..
        var user = context.dbContext.GetSingle <DBUserInfo>();

        if (user.userLv < single.unlockLv)
        {
            throw new FIException(FIErr.Shop_Ingredient_NotEnoughLevel);
        }

        //Check if i have enough money..
        if (Storage_CheckCanDisposeItems(context, Tuple.Create <int, int>(GDInstKey.ItemData_goldPoint, single.reqGold)) == false)
        {
            throw new FIException(FIErr.Shop_Ingredient_NotEnoughGold);
        }

        //Insert and dispose..
        Storage_DisposeItem(context, Tuple.Create <int, int>(GDInstKey.ItemData_goldPoint, single.reqGold));
        Storage_InsertItem(context, Tuple.Create <int, int>(single.item.id, 1));


        return(GetDefaultJObject(context));
    }
Example #3
0
    public static JObject enc_sess_craft_getcraftinfo(FIFakeContext context)
    {
        #region Get DBCraftingTable List
        var list = context.dbContext.GetList <DBCraftingTable>();
        if (list.Count <= 0)
        {
            var created = context.dbContext.Create <DBCraftingTable>();
            created.craftingTableID = GDInstKey.CraftingTable__lowTable;
            list.Add(created);
        }
        InsertUpdated(context, list.ToArray());
        #endregion
        #region Get DBCraftingRecipeUnlock List
        var unlockedRecipeList = context.dbContext.GetList <DBCraftingRecipeUnlock>();
        if (unlockedRecipeList.Count <= 0)
        {
            var created = context.dbContext.Create <DBCraftingRecipeUnlock>();
            created.recipeID = GDInstKey.CraftRecipeData_craftRecipe0;
        }
        unlockedRecipeList = context.dbContext.GetList <DBCraftingRecipeUnlock>();
        InsertUpdated(context, unlockedRecipeList.ToArray());
        #endregion
        #region Get DBCraftingItem List
        var makingList = context.dbContext.GetList <DBCraftingItem>();
        if (makingList.Count > 0)
        {
            InsertUpdated(context, makingList.ToArray());
        }
        #endregion

        return(GetDefaultJObject(context));
    }
Example #4
0
    public static JObject enc_sess_craft_getcategoryinfo(FIFakeContext context)
    {
        //Category
        var list = context.dbContext.GetList <DBCraftingRecipeCategoryUnlock>();

        if (list.Count <= 0)
        {
            //Create one category opened!
            var firstCategory = context.staticData.GetList <GDCraftCategoryInfo>().FirstOrDefault();
            var created       = context.dbContext.Create <DBCraftingRecipeCategoryUnlock>();
            created.categoryID = firstCategory.id;
            list.Add(created);
        }
        InsertUpdated(context, list.ToArray());

        //Recipe
        var recipeList = context.dbContext.GetList <DBCraftingRecipeUnlock>();

        if (recipeList.Count <= 0)
        {
            var firstCategory = context.staticData.GetList <GDCraftCategoryInfo>().FirstOrDefault();
            var firstRecipe   = context.staticData.GetList <GDCraftRecipeData>()
                                .Where(x => x.category == firstCategory.type)
                                .FirstOrDefault();
            var created = context.dbContext.Create <DBCraftingRecipeUnlock>();
            created.recipeID = firstRecipe.id;
            recipeList.Add(created);
        }
        InsertUpdated(context, recipeList.ToArray());
        return(GetDefaultJObject(context));
    }
    static void InsertUpdated(FIFakeContext context, params FIRBaseData[] args)
    {
        if (context.Items.ContainsKey("updated") == false)
        {
            context.Items.Add("updated", new Dictionary <System.Type, Dictionary <int, FIRBaseData> >());
        }

        var dic = context.Items["updated"] as Dictionary <System.Type, Dictionary <int, FIRBaseData> >;

        foreach (var item in args)
        {
            var curType = item.GetType();
            Dictionary <int, FIRBaseData> curDic = null;
            if (dic.ContainsKey(curType) == false)
            {
                curDic = new Dictionary <int, FIRBaseData>();
                dic.Add(curType, curDic);
            }
            else
            {
                curDic = dic[curType];
            }
            if (curDic.ContainsKey(item.uid) == true)
            {
                curDic.Remove(item.uid);
            }
            curDic.Add(item.uid, item);
        }
    }
Example #6
0
    public static JObject enc_sess_resource_buyitemswithdia(FIFakeContext context)
    {
        CheckParameterExists(context, "itemArr");
        var itemArr = context.body["itemArr"].ToTupleArr <int, int>();
        var merged  = Storage_MergeItems(itemArr);

        //Check if items are all buyable with dia..
        int totalDia = 0;

        foreach (var item in merged)
        {
            var data = context.staticData.GetByID <GDItemData>(item.Item1);
            if (data.diaPrice == 0)
            {
                throw new FIException(FIErr.Resource_CannotBuyItemWithDia);
            }
            totalDia += data.diaPrice * item.Item2;
        }

        //Check can insert items to inventory..
        if (Storage_CheckCanInsertItems(context, merged) == false)
        {
            throw new FIException(FIErr.Resource_CannotInsertStorageIsFull);
        }

        //DisposeDia..
        Storage_DisposeItem(context, Tuple.Create <int, int>(GDInstKey.ItemData_diaPoint, totalDia));
        Storage_InsertItem(context, merged);

        return(GetDefaultJObject(context));
    }
Example #7
0
    public static JObject enc_sess_shop_buyinteriorwithdia(FIFakeContext context)
    {
        CheckParameterExists(context, "id");
        var id     = context.body["id"].Value <int>();
        var single = context.staticData.GetByID <GDShopInterior>(id);

        //Check if i have enough money..
        if (Storage_CheckCanDisposeItems(context, Tuple.Create <int, int>(GDInstKey.ItemData_diaPoint, single.unlockDia)) == false)
        {
            throw new FIException(FIErr.Shop_Interior_NotEnoughDia);
        }

        //Check if i already bought..
        var myInterior = context.dbContext.GetList <DBInterior>()
                         .Where(x => x.interiorID == single.interior.id)
                         .FirstOrDefault();

        if (myInterior != null)
        {
            throw new FIException(FIErr.Shop_Interior_AlreadyHasWithDia);
        }

        //Dispose..
        Storage_DisposeItem(context, Tuple.Create <int, int>(GDInstKey.ItemData_diaPoint, single.unlockDia));

        myInterior            = context.dbContext.Create <DBInterior>();
        myInterior.interiorID = single.interior.id;
        InsertUpdated(context, myInterior);

        return(GetDefaultJObject(context));
    }
    static void CheckParameterExists(FIFakeContext context, params string[] args)
    {
        var requiredList = args.ToList();

        foreach (var item in args)
        {
            var obj = context.body[item];
            if (obj != null)
            {
                requiredList.Remove(item);
            }
        }
        if (requiredList.Count > 0)
        {
            System.Text.StringBuilder builder = new System.Text.StringBuilder();
            for (int i = 0; i < requiredList.Count; i++)
            {
                builder.Append(requiredList[i]);
                if (i < requiredList.Count - 1)
                {
                    builder.Append(",");
                }
            }
            throw new FIException(FIErr.ParameterMissing, builder.ToString());
        }
    }
Example #9
0
    public static JObject enc_sess_auth_userLogin(FIFakeContext HttpContext)
    {
        //Check already logged in..
        var userInfoJObject = (HttpContext.Items["sess"] as JObject)["userinfo"] as JObject;

        if (userInfoJObject != null)
        {
            throw new FIException(FIErr.Auth_AlreadyUserLoggedIn);
        }

        var authuid = (HttpContext.Items["sess"] as JObject)["authuid"].Value <int>();

        //find if there is user data
        var newUserData = (from item in HttpContext.dbContext.GetList <DBUserInfo>()
                           where item.authUID == authuid
                           select item).FirstOrDefault();

        if (newUserData == null)
        {
            throw new FIException(FIErr.Auth_NoUserInDatabase, "There is no user data in db");
        }

        var userJObject = JObject.FromObject(newUserData);

        (HttpContext.Items["sess"] as JObject).Add(new JProperty("userinfo", userJObject));
        InsertUpdated(HttpContext, newUserData);
        return(GetDefaultJObject(HttpContext));
//		return GetNoErrJObject( GetArrProperty("updated",new object[]{newUserData}) );
    }
Example #10
0
    public static JObject enc_sess_storage_sellitem(FIFakeContext context)
    {
        CheckParameterExists(context, "listOfSellItems");
        var list        = context.body["listOfSellItems"] as JArray;
        var listOfItems = new List <Tuple <int, int> >();

        foreach (var item in list)
        {
            listOfItems.Add(Tuple.Create <int, int>(item["uid"].Value <int>(), item["cnt"].Value <int>()));
        }
        //Check every item exists..
        var disposingItemArr = listOfItems.ToArray();

        if (Storage_CheckCanDisposeItems(context, disposingItemArr) == false)
        {
            throw new FIException(FIErr.Storage_CannotDisposeMoreThanHas);
        }


        int totalPrice = 0;

        //Calc price
        foreach (var item in disposingItemArr)
        {
            var staticItem  = context.staticData.GetByID <GDItemData>(item.Item1);
            int singlePrice = staticItem.GetSellPrice(item.Item2);
            totalPrice += singlePrice;
        }

        Storage_DisposeItem(context, disposingItemArr);
        Storage_InsertItem(context, Tuple.Create <int, int>(GDInstKey.ItemData_goldPoint, totalPrice));

        return(GetDefaultJObject(context));
    }
Example #11
0
    public static JObject enc_sess_inctime(FIFakeContext context)
    {
        CheckParameterExists(context, "time");
        var timespan = context.body["time"].Value <System.TimeSpan>();

        loginTime += timespan;
        return(GetDefaultJObject(context));
    }
Example #12
0
    public static JObject enc_sess_order_accept(FIFakeContext context)
    {
        CheckParameterExists(context, "uid");
        int uid = context.body["uid"].Value <int>();

        if (context.dbContext.ContainsID <DBOrder>(uid) == false)
        {
            throw new FIException(FIErr.Order_CannotFindData);
        }
        var orderData = context.dbContext.GetByID <DBOrder>(uid);

        //Check its right time..
        if (orderData.waitStartedTime + context.easy.GlobalInfo.orderRegenTime > CurrentTime)
        {
            throw new FIException(FIErr.Order_Cooltime);
        }


        //Check if I have all needs..
        var orderItemList = context.dbContext.GetList <DBOrderItem>().Where(x => x.orderUID == uid).ToList();
        var myItemList    = context.dbContext.GetList <DBItem>();
        var toDisposeList = new List <Tuple <int, int> >();
//		var toGiveList = new List<Tuple<int,int>>();
        int totalGold = 0;
        int totalExp  = 0;

        foreach (var item in orderItemList)
        {
            var foundItem = myItemList.Where(x => x.itemID == item.itemID).FirstOrDefault();
            if (foundItem == null)
            {
                throw new FIException(FIErr.Order_CannotDisposeItemDoesntHave);
            }
            if (foundItem.count < item.itemCnt)
            {
                throw new FIException(FIErr.Order_CannotDisposeItemDoesntHaveEnough);
            }
            toDisposeList.Add(Tuple.Create <int, int>(foundItem.itemID, item.itemCnt));
            totalGold += item.CalcOrderPrice(context.staticData);
            totalExp  += item.CalcOrderRewardExp(context.staticData);
        }

        //All checks out. dispose item. and give item..
        AssignOrderRequest(context, orderData, false);
        InsertUpdated(context, orderData);

        Storage_DisposeItem(context, toDisposeList.ToArray());
        Storage_InsertItem(context,
                           Tuple.Create <int, int>(GDInstKey.ItemData_goldPoint, totalGold),
                           Tuple.Create <int, int>(GDInstKey.ItemData_userExp, totalExp)
                           );

        //Achievement..
        Achievement_Increase(context, GDAchievementType.OrderCount, 1);

        return(GetDefaultJObject(context));
    }
Example #13
0
    public static JObject Internal_IsUserLoggedIn(FIFakeContext HttpContext)
    {
        var userInfoJObject = (HttpContext.Items["sess"] as JObject)["userinfo"] as JObject;

        if (userInfoJObject == null)
        {
            throw new FIException(FIErr.Auth_UserNotLoggedIn, "user not logged in");
        }
        return(userInfoJObject);
    }
Example #14
0
 static void Storage_DisposeItem(FIFakeContext context, params Tuple <int, int>[] args)
 {
     foreach (var item in args)
     {
         var runtimeItem = context.dbContext.GetList <DBItem>().Where(x => x.itemID == item.Item1).FirstOrDefault();
         runtimeItem        = runtimeItem ?? context.dbContext.Create <DBItem>();
         runtimeItem.itemID = item.Item1;
         UnityEngine.Debug.Log(string.Format("Dispose itemID={0} itemCnt={1} to={2}", item.Item1, item.Item2, runtimeItem.count));
         runtimeItem.count -= item.Item2;
         InsertUpdated(context, runtimeItem);
     }
 }
Example #15
0
    static void AssignCustomerRequest(FIFakeContext context, DBCustomer customer, bool giveDelay)
    {
        //First pick which i have..
        List <DBItem> myItems = null;

        myItems = context.dbContext.GetList <DBItem>()
                  .Where(x => x.count > 0)
                  .Where(x => {
            var single = context.staticData.GetByID <GDItemData>(x.itemID);
            return(single.type.IsFlagSet(GDItemDataType.CustomerEat) == true);
        }).ToList();

        if (myItems.Count <= 0)
        {
            //Doesnt have anything.. request for that I can make.
            var listOfAvailable = context.staticData.GetList <GDItemData>()
                                  .Where(x => {
                if (x.type.IsFlagSet(GDItemDataType.CustomerEat) && x.baseLv <= context.easy.UserInfo.userLv)
                {
                    return(true);
                }
                return(false);
            }).ToList();
            if (listOfAvailable.Count <= 0)
            {
                throw new FIException(FIErr.Customer_NeedUserCanMakeAtLeastOne);
            }
            int randNum = UnityEngine.Random.Range(0, listOfAvailable.Count);
            customer.itemID  = listOfAvailable[randNum].id;
            customer.itemCnt = UnityEngine.Random.Range(1, 3 + 1);
        }
        else
        {
            //I have something that i can request!.
            int randNum = UnityEngine.Random.Range(0, myItems.Count);
            customer.itemID = myItems[randNum].itemID;
            int reqCnt = (myItems[randNum].count / 3);
            if (reqCnt <= 0)
            {
                reqCnt = 1;
            }
            customer.itemCnt = reqCnt;
        }

        if (giveDelay == false)
        {
            customer.waitStartedTime = CurrentTime - context.easy.GlobalInfo.customerRegenTime;
        }
        else
        {
            customer.waitStartedTime = CurrentTime;
        }
    }
Example #16
0
    static void Achievement_Increase(FIFakeContext context, GDAchievementType type, int count = 1)
    {
        var single = context.dbContext.GetList <DBAchievementTypeCount>()
                     .Where(x => x.type == type).FirstOrDefault();

        if (single == null)
        {
            single      = context.dbContext.Create <DBAchievementTypeCount>();
            single.type = type;
        }
        single.cnt += count;
        InsertUpdated(context, single);
    }
Example #17
0
    public static JObject enc_sess_achievement_getlist(FIFakeContext context)
    {
        var achievementList     = context.dbContext.GetList <DBAchievementCleared>();
        var achievementTypeList = context.dbContext.GetList <DBAchievementTypeCount>();

        if (achievementList.Count > 0)
        {
            InsertUpdated(context, achievementList.ToArray());
        }
        if (achievementTypeList.Count > 0)
        {
            InsertUpdated(context, achievementTypeList.ToArray());
        }
        return(GetDefaultJObject(context));
    }
Example #18
0
    public static JObject enc_sess_searchitem_getinfo(FIFakeContext context)
    {
        var searchInfo = context.dbContext.GetList <DBSearchItemInfo>().FirstOrDefault();

        if (searchInfo == null)
        {
            searchInfo = context.dbContext.Create <DBSearchItemInfo>();
            searchInfo.isProcessing = false;
            searchInfo.startedTime  = System.DateTime.Now;
            searchInfo.foundItemID  = -1;
            searchInfo.foundCnt     = -1;
        }
        InsertUpdated(context, searchInfo);
        return(GetDefaultJObject(context));
    }
Example #19
0
 static bool Storage_CheckCanDisposeItems(FIFakeContext context, params Tuple <int, int>[] args)
 {
     foreach (var item in args)
     {
         var runtimeItem = context.dbContext.GetList <DBItem>().Where(x => x.itemID == item.Item1).FirstOrDefault();
         if (runtimeItem == null)
         {
             return(false);
         }
         if (runtimeItem.count < item.Item2)
         {
             return(false);
         }
     }
     return(true);
 }
Example #20
0
    static void AssignOrderRequest(FIFakeContext context, DBOrder order, bool giveDelay)
    {
        //Remove existing items first...
        var existOrderItemList = context.dbContext.GetList <DBOrderItem>().Where(x => x.orderUID == order.uid).ToList();

        foreach (var item in existOrderItemList)
        {
//			Debug.LogWarning("Found existing item="+item.orderUID+" id="+item.uid);
            context.dbContext.Dispose <DBOrderItem>(item.uid);
        }
        if (existOrderItemList.Count > 0)
        {
            InsertDeleted(context, existOrderItemList.ToArray());
        }

        int availableTypeCnt = UnityEngine.Random.Range(1, 4);
        var listOfAvailable  = context.staticData.GetList <GDItemData>()
                               .Where(x => {
            if (x.type.IsFlagSet(GDItemDataType.CustomerEat) && x.baseLv <= context.easy.UserInfo.userLv)
            {
                return(true);
            }
            return(false);
        }).ToList();

        availableTypeCnt = System.Math.Min(availableTypeCnt, listOfAvailable.Count);

        for (int i = 0; i < availableTypeCnt; i++)
        {
            var itemData = context.dbContext.Create <DBOrderItem>();
            itemData.orderUID = order.uid;
            int randNum = Random.Range(0, listOfAvailable.Count);
            itemData.itemID  = listOfAvailable[randNum].id;
            itemData.itemCnt = Random.Range(listOfAvailable[randNum].baseReqMin, listOfAvailable[randNum].baseReqMax + 1);
            listOfAvailable.RemoveAt(randNum);
            InsertUpdated(context, itemData);
        }

        if (giveDelay == false)
        {
            order.waitStartedTime = CurrentTime - context.easy.GlobalInfo.orderRegenTime;
        }
        else
        {
            order.waitStartedTime = CurrentTime;
        }
    }
Example #21
0
    public static JObject enc_sess_customer_accept(FIFakeContext context)
    {
        CheckParameterExists(context, "uid");
        int uid = context.body["uid"].Value <int>();

        if (context.dbContext.ContainsID <DBCustomer>(uid) == false)
        {
            throw new FIException(FIErr.Customer_CannotFindData);
        }
        var customerData = context.dbContext.GetByID <DBCustomer>(uid);

        //Check its right time..
        if (customerData.waitStartedTime + context.easy.GlobalInfo.customerRegenTime > CurrentTime)
        {
            throw new FIException(FIErr.Customer_Cooltime);
        }

        //Check if I have all needs..
//		var myItemList = context.dbContext.GetList<DBItem>();
        Tuple <int, int> reqItem = Tuple.Create <int, int>(customerData.itemID, customerData.itemCnt);

        if (Storage_CheckCanDisposeItems(context, reqItem) == false)
        {
            throw new FIException(FIErr.Customer_CannotDisposeItemDoesntHaveEnough);
        }

        var itemData  = context.staticData.GetByID <GDItemData>(customerData.itemID);
        int totalGold = itemData.GetCustomerPrice(customerData.itemCnt);
        int totalExp  = 3;

        Tuple <int, int>[] rewardItemArr = new Tuple <int, int>[] {
            Tuple.Create <int, int>(GDInstKey.ItemData_goldPoint, totalGold),
            Tuple.Create <int, int>(GDInstKey.ItemData_userExp, totalExp)
        };

        //All checks out. dispose item. and give item..
        AssignCustomerRequest(context, customerData, true);
        InsertUpdated(context, customerData);

        Storage_DisposeItem(context, reqItem);
        Storage_InsertItem(context, rewardItemArr);

        //Achievement..
        Achievement_Increase(context, GDAchievementType.CustomerCount, 1);

        return(GetDefaultJObject(context));
    }
    static JObject GetDefaultJObject(FIFakeContext context, params JProperty[] args)
    {
        var jObj = new JObject();

        jObj.Add(new JProperty("err", FIErr.Okay));

        InsertUpdated(context,
                      new DBGlobalData()
        {
            ServerTime = CurrentTime
        }
                      );
        if (args.Length > 0)
        {
            jObj.Add(args);
        }

        if (context.Items.ContainsKey("updated") == true)
        {
            var listOfItems = new List <object>();
            var topDic      = context.Items["updated"] as Dictionary <System.Type, Dictionary <int, FIRBaseData> >;
            foreach (var outer in topDic)
            {
                foreach (var inner in outer.Value)
                {
                    listOfItems.Add(inner.Value);
                }
            }
            jObj.Add(GetArrProperty("updated", listOfItems.ToArray()));
        }
        if (context.Items.ContainsKey("deleted") == true)
        {
            var listOfItems = new List <object>();
            var topDic      = context.Items["deleted"] as Dictionary <System.Type, Dictionary <int, FIRBaseData> >;
            foreach (var outer in topDic)
            {
                foreach (var inner in outer.Value)
                {
                    listOfItems.Add(inner.Value);
                }
            }
            jObj.Add(GetArrProperty("deleted", listOfItems.ToArray()));
        }

        return(jObj);
    }
Example #23
0
    public static JObject enc_sess_achievement_collect(FIFakeContext context)
    {
        CheckParameterExists(context, "id");
        var id         = context.body["id"].Value <int>();
        var staticData = context.staticData.GetByID <GDAchievementData>(id);

        //Check if this is active achievement..
        if (staticData.unlockReq != null)
        {
            var precedingAchievement = context.dbContext.GetList <DBAchievementCleared>().Where(x => x.achievementID == staticData.unlockReq.id).FirstOrDefault();
            if (precedingAchievement == null)
            {
                throw new FIException(FIErr.Achievement_PrecedingAchievementNotCleared);
            }
        }

        //Check if its available..
        if (staticData.reqAchiev == GDAchievementType.Invalid)
        {
            throw new FIException(FIErr.Achievement_ThisAchievementIsNotForClear);
        }
        var progress = context.dbContext.GetList <DBAchievementTypeCount>()
                       .Where(x => x.type == staticData.reqAchiev).FirstOrDefault();

        if (progress == null)
        {
            throw new FIException(FIErr.Achievement_CannotFindAchievementTypeCountData);
        }
        if (progress.cnt < staticData.reqAchievCnt)
        {
            throw new FIException(FIErr.Achievement_NotEnoughCnt);
        }

        //Can clear
        var clearedData = context.dbContext.Create <DBAchievementCleared>();

        clearedData.achievementID = staticData.id;
        InsertUpdated(context, clearedData);

        //Insert reward!
        Storage_InsertItem(context, Tuple.Create <int, int>(GDInstKey.ItemData_diaPoint, staticData.rewardDiaCnt));

        return(GetDefaultJObject(context));
    }
Example #24
0
    public static JObject enc_sess_craft_unlockrecipe(FIFakeContext context)
    {
        CheckParameterExists(context, "id");
        var id            = context.body["id"].Value <int>();
        var staticRecipe  = context.staticData.GetByID <GDCraftRecipeData>(id);
        var runtimeRecipe = context.dbContext.GetList <DBCraftingRecipeUnlock>().Where(x => x.recipeID == id).FirstOrDefault();
        var userLv        = context.dbContext.GetSingle <DBUserInfo>().userLv;
        var unlockReqLv   = staticRecipe.unlockLv;
        var unlockReqGold = staticRecipe.unlockReqGold;

        //Check
        #region Check I already learned recipe
        if (runtimeRecipe != null)
        {
            throw new FIException(FIErr.Crafting_UnlockRecipeAlreadyHave);
        }
        #endregion
        #region Check My level is confirm
        if (userLv < unlockReqLv)
        {
            throw new FIException(FIErr.Crafting_UnlockRecipeCannotLevelBelow);
        }
        #endregion
        #region Check I have enough gold
        if (Storage_CheckCanDisposeItems(context, Tuple.Create <int, int>(GDInstKey.ItemData_goldPoint, unlockReqGold)) == false)
        {
            throw new FIException(FIErr.Crafting_UnlockRecipeNotEnoughGold);
        }
        #endregion


        //Action
        #region DisposeItem
        Storage_DisposeItem(context, Tuple.Create <int, int>(GDInstKey.ItemData_goldPoint, unlockReqGold));
        #endregion
        #region Insert unlocked data..
        runtimeRecipe          = context.dbContext.Create <DBCraftingRecipeUnlock>();
        runtimeRecipe.recipeID = id;
        InsertUpdated(context, runtimeRecipe);
        #endregion

        return(GetDefaultJObject(context));
    }
Example #25
0
    static void User_InsertExp(FIFakeContext context, int totalExp)
    {
        var userInfo   = context.dbContext.GetSingle <DBUserInfo>();
        var lvInfoList = context.staticData.GetList <GDUserLvInfo>();

        if (userInfo.userLv + 1 >= lvInfoList.Count)
        {
            //Max level! no need exp..
            return;
        }
        var lvInfo = lvInfoList[userInfo.userLv + 1];

        userInfo.curExp += totalExp;
        if (userInfo.curExp >= lvInfo.reqExp)
        {
            userInfo.curExp -= lvInfo.reqExp;
            userInfo.userLv++;
        }
        InsertUpdated(context, userInfo);
    }
Example #26
0
    public static JObject enc_sess_craft_selltable(FIFakeContext context)
    {
        CheckParameterExists(context, "uid");
        var uid = context.body["uid"].Value <int>();

        //Check
        #region TableExists..
        var totalTables  = context.dbContext.GetList <DBCraftingTable>();
        var runtimeTable = totalTables.Where(x => x.uid == uid).FirstOrDefault();
        if (runtimeTable == null)
        {
            throw new FIException(FIErr.Crafting_SellTableCannotFindTable);
        }
        #endregion
        #region IsOnlyOneTable? Then dont sell..
        if (totalTables.Count <= 1)
        {
            throw new FIException(FIErr.Crafting_SellTableCannotSellOnlyOneTable);
        }
        #endregion
        #region Check if there is making item..
        var currMakingItemList = context.dbContext.GetList <DBCraftingItem>().Where(x => x.tableUID == runtimeTable.uid).ToList();
        if (currMakingItemList.Count > 0)
        {
            throw new FIException(FIErr.Crafting_SellTableCannotSellThereIsSomethingMaking);
        }
        #endregion

        //Action
        #region DisposeTable..
        context.dbContext.Dispose <DBCraftingTable>(uid);
        InsertDeleted(context, runtimeTable);
        #endregion
        #region GiveRewards..
        var staticData = context.staticData.GetByID <GDCraftingTable>(runtimeTable.craftingTableID);
//		staticData.sellPrice
        Storage_InsertItem(context, Tuple.Create <int, int>(GDInstKey.ItemData_goldPoint, staticData.sellPrice));
        #endregion

        return(GetDefaultJObject(context));
    }
Example #27
0
    public static JObject enc_sess_auth_createuserinfo(FIFakeContext HttpContext)
    {
        CheckParameterExists(HttpContext, "nick");
        var authuid = (HttpContext.Items["sess"] as JObject)["authuid"].Value <int>();
        //check already has user data..
        var newUserData = (from item in HttpContext.dbContext.GetList <DBUserInfo>()
                           where item.authUID == authuid
                           select item).FirstOrDefault();

        if (newUserData != null)
        {
            throw new FIException(FIErr.Auth_AlreadyUserCreated, "Already created user");
        }

        //create data in database..
        var createdUser = HttpContext.dbContext.Create <DBUserInfo>();

        createdUser.authUID = authuid;
        createdUser.nick    = (string)HttpContext.body["nick"];
        return(GetNoErrJObject());
    }
Example #28
0
    public static JObject enc_sess_shop_buycraftingtable(FIFakeContext context)
    {
        CheckParameterExists(context, "id");
        var id     = context.body["id"].Value <int>();
        var single = context.staticData.GetByID <GDShopCraftingTable>(id);

        //Check my level..
        var user = context.dbContext.GetSingle <DBUserInfo>();

        if (user.userLv < single.unlockLv)
        {
            throw new FIException(FIErr.Shop_CraftingTable_NotEnoughLevel);
        }

        //Check if i have enough money..
        if (Storage_CheckCanDisposeItems(context, Tuple.Create <int, int>(GDInstKey.ItemData_goldPoint, single.reqGold)) == false)
        {
            throw new FIException(FIErr.Shop_CraftingTable_NotEnoughGold);
        }

        //Check My table is full..
        var listOfTables = context.dbContext.GetList <DBCraftingTable>();

        if (listOfTables.Count >= context.easy.GlobalInfo.totalCraftingTableCnt)
        {
            throw new FIException(FIErr.Shop_CraftingTable_AlreadyFull);
        }

        //Insert and dispose..
        Storage_DisposeItem(context, Tuple.Create <int, int>(GDInstKey.ItemData_goldPoint, single.reqGold));

        //Create table..
        var createdTable = context.dbContext.Create <DBCraftingTable>();

        createdTable.craftingTableID = single.table.id;
        createdTable.createdTime     = CurrentTime;
        InsertUpdated(context, createdTable);

        return(GetDefaultJObject(context));
    }
Example #29
0
    static void Storage_InsertItem(FIFakeContext context, params Tuple <int, int>[] args)
    {
        int totalExp = 0;

        foreach (var item in args)
        {
            if (item.Item1 == GDInstKey.ItemData_userExp)
            {
                totalExp += item.Item2;
                continue;
            }
            var runtimeItem = context.dbContext.GetList <DBItem>().Where(x => x.itemID == item.Item1).FirstOrDefault();
            runtimeItem        = runtimeItem ?? context.dbContext.Create <DBItem>();
            runtimeItem.itemID = item.Item1;
            runtimeItem.count += item.Item2;
            InsertUpdated(context, runtimeItem);
        }
        if (totalExp > 0)
        {
            User_InsertExp(context, totalExp);
        }
    }
Example #30
0
    public static JObject enc_sess_customer_getlist(FIFakeContext context)
    {
        var list = context.dbContext.GetList <DBCustomer>();

        if (list.Count <= 0)
        {
            //Create!
            for (int i = 0; i < MAX_CUSTOMER_CNT; i++)
            {
                var single           = context.dbContext.Create <DBCustomer>();
                var customerDataList = context.staticData.GetList <GDCustomerData>();
                single.customerID = customerDataList[UnityEngine.Random.Range(0, customerDataList.Count)].id;
                InsertUpdated(context, single);
                AssignCustomerRequest(context, single, true);
            }
        }
        else
        {
            InsertUpdated(context, list.ToArray());
        }
        return(GetDefaultJObject(context));
    }