Exemplo n.º 1
0
        /// <summary>
        /// 奖励物品
        /// </summary>
        /// <param name="prize"></param>
        /// <returns></returns>
        public static void ChestGainTreasureInfo(GameUser user, DialInfo dialInfo, int count)
        {
            var treasure = new TreasureInfo();

            treasure.UserID = user.UserID;
            treasure.Type   = dialInfo.RewardType;
            treasure.ItemID = dialInfo.ItemID;
            treasure.Num    = dialInfo.ItemNum;
            treasure.ItemLv = 1;
            UserDial userDial = new PersonalCacheStruct <UserDial>().FindKey(user.UserID);

            if (userDial == null)
            {
                userDial = new UserDial();
            }
            userDial.GroupID     = 0;
            userDial.RefreshDate = DateTime.Now;
            userDial.Treasure.Add(treasure);
            if (count == 0)
            {
                userDial.PrizeInfo = treasure;
                userDial.HeadID    = dialInfo.HeadID;
            }
            if (GameConfigSet.Treasure > 0 && userDial.Treasure.Count > GameConfigSet.Treasure)
            {
                for (int i = 0; i < userDial.Treasure.Count - GameConfigSet.Treasure; i++)
                {
                    userDial.Treasure.Remove(userDial.Treasure[i]);
                }
            }

            if (dialInfo.IsShow)
            {
                var cacheSet     = new ShareCacheStruct <ServerEnvSet>();
                var serverEnvSet = cacheSet.FindKey(ServerEnvKey.UserTreasure);
                if (serverEnvSet == null)
                {
                    serverEnvSet        = new ServerEnvSet();
                    serverEnvSet.EnvKey = ServerEnvKey.UserTreasure;
                    cacheSet.Add(serverEnvSet);
                }
                var treasureInfoList = ServerEnvSetTreasure(treasure);
                serverEnvSet.EnvValue = JsonUtils.Serialize(treasureInfoList);
            }

            if (dialInfo.IsBroadcast && !string.IsNullOrEmpty(dialInfo.BroadContent))
            {
                TjxChatService chatService = new TjxChatService();
                chatService.SystemSend(ChatType.World, string.Format(dialInfo.BroadContent, user.NickName));
            }
            if (dialInfo.RewardType == RewardType.Again || dialInfo.RewardType == RewardType.Mood || dialInfo.RewardType == RewardType.Recharge)
            {
                if (dialInfo.RewardType == RewardType.Recharge)
                {
                    userDial.ReturnRatio = treasure.Num;
                }
                return;
            }
            ChestGetUserTake(treasure, user);
        }
Exemplo n.º 2
0
        /// <summary>
        /// 奖励配置
        /// </summary>
        /// <param name="user"></param>
        public static void ChestGetUserTake(TreasureInfo prize, GameUser user)
        {
            switch (prize.Type)
            {
            case RewardType.GameGoin:
                user.GameCoin = MathUtils.Addition(user.GameCoin, prize.Num.ToInt());
                break;

            case RewardType.Obtion:
                user.ObtainNum = MathUtils.Addition(user.ObtainNum, prize.Num.ToInt());
                break;

            case RewardType.ExpNum:
                user.ExpNum = MathUtils.Addition(user.ExpNum, prize.Num.ToInt());
                break;

            case RewardType.EnergyNum:
                user.EnergyNum = MathUtils.Addition(user.EnergyNum, prize.Num.ToShort());
                break;

            case RewardType.Experience:
                break;

            case RewardType.Gold:
                user.GiftGold = MathUtils.Addition(user.GiftGold, prize.Num.ToInt());
                break;

            case RewardType.Item:
                if (!UserAbilityHelper.UseUserItem(user.UserID, prize.ItemID))
                {
                    UserItemHelper.AddUserItem(user.UserID, prize.ItemID, prize.Num.ToInt());
                }
                break;

            case RewardType.CrystalId:
                short crystalLv = prize.ItemLv > 0 ? prize.ItemLv : 1.ToShort();
                CrystalHelper.AppendCrystal(user.UserID, prize.ItemID, crystalLv);
                break;

            case RewardType.Spare:
                AppendSpare(user, prize.ItemID);
                break;

            case RewardType.Enchant:
                short enchantLv = prize.ItemLv > 0 ? prize.ItemLv : 1.ToShort();
                EnchantHelper.AppendEnchat(user.UserID, prize.ItemID, enchantLv);
                break;

            default:
                break;
            }
        }
Exemplo n.º 3
0
    public void InitiateTreasure(Vector2[] initialTreasures)
    {
        for (int i = 0; i < 7; i++)
        {
            Vector2 treasurePos = initialTreasures[i];

            TreasureInfo newTreasureInfo = new TreasureInfo();
            newTreasureInfo.mapPos     = treasurePos;
            newTreasureInfo.value      = i <= 2 ? 2 : (i <= 5 ? 3 : 5);
            newTreasureInfo.tileObject = Instantiate(i <= 2 ? treasure2Tile : (i <= 5 ? treasure3Tile : treasure5Tile), OnBoardPos(treasurePos), Quaternion.identity);
            treasures.Add(treasurePos, newTreasureInfo);

            map[(int)treasurePos.x, (int)treasurePos.y] = TileType.Treasure;
        }
    }
    public static TreasureInfo GetTreasureInfo()
    {
        TreasureInfo ti = new TreasureInfo();

        foreach (Treasure t in treasures.Values)
        {
            if (t.bigTreasure)
            {
                ti.bigTreasures.Add(t);
            }
            else if (t.found)
            {
                ti.littleTreasures.Add(t);
            }
        }
        return(ti);
    }
Exemplo n.º 5
0
    public void OpenPanel(TreasureInfo info, int steps)
    {
        CameraMovement.canBeMoved++;
        group.DOFade(1, 0.5f);
        group.interactable   = true;
        group.blocksRaycasts = true;
        panel.DOAnchorPosY(-680, 0);
        panel.DOAnchorPosY(40, 0.5f);

        var level = LevelManager.me.levels.levels[MemoryCard.GetSelectedLevel()];

        bigTreasure.text    = "<color=red>" + info.bigTreasures.Count + "</color> de " + level.map.bigTreasures.Count;
        smallTreasures.text = "<color=red>" + info.littleTreasures.Count + "</color> de " + level.map.treasures.Count;
        this.steps.text     = "<color=red>" + steps + "</color> de " + level.maxSteps;

        SaveProgress(info, steps);
    }
Exemplo n.º 6
0
        /// <summary>
        /// 트레저 목록을 가져옵니다.
        /// </summary>
        /// <returns></returns>
        public List <TreasureInfo> GetMaterialList()
        {
            if (this.Second == null)
            {
                return(new List <TreasureInfo>());
            }

            List <TreasureInfo> output = new List <TreasureInfo>();

            foreach (var selcted_item in this.MasterBullet.Where(x => x.FullName == this.Second).FirstOrDefault().MaterialList)
            {
                TreasureInfo temp = new TreasureInfo();
                if (this.CurrentStatus == 0)
                {
                    temp.Name   = selcted_item.Name;
                    temp.ItemID = selcted_item.ItemID;
                    temp.max    = selcted_item.max;
                }
                else
                {
                    int calc_max = selcted_item.max;
                    var idx      = this.MasterBullet.Where(x => x.FullName == this.Second).FirstOrDefault().MasterID;

                    List <Bullet> temp_lst = new List <Bullet>(this.MasterBullet.Where(x => x.MasterID == idx));
                    for (int i = 1; i <= this.CurrentStatus; i++)
                    {
                        List <TreasureInfo> mat_temp = new List <TreasureInfo>(temp_lst.Where(x => x.Rank == i).FirstOrDefault().MaterialList);

                        foreach (var item in mat_temp)
                        {
                            if (selcted_item.ItemID == item.ItemID)
                            {
                                calc_max -= item.max;
                            }
                        }
                    }

                    temp.Name   = selcted_item.Name;
                    temp.ItemID = selcted_item.ItemID;
                    temp.max    = calc_max;
                }
                output.Add(temp);
            }
            return(output);
        }
Exemplo n.º 7
0
        ///// <summary>
        ///// 获取大转盘列表ID
        ///// </summary>
        ///// <param name="userID"></param>
        ///// <returns></returns>
        //public static int DialGroupID(string userID)
        //{
        //    int groupID = 0;
        //    int postion = 0;
        //    var dialFreeList = new ShareCacheStruct<DialInfo>().FindAll(m => m.DialType == 1);
        //    var dialGoldList = new ShareCacheStruct<DialInfo>().FindAll(m => m.DialType == 2);
        //    if (dialFreeList.Count == 0 || dialGoldList.Count == 0)
        //    {
        //        return groupID;
        //    }
        //    UserDial userDial = new PersonalCacheStruct<UserDial>().FindKey(userID);
        //    if (userDial != null)
        //    {
        //        int freeNum = GameConfigSet.FreeSweepstakes;
        //        if (userDial.RefreshDate.Date == DateTime.Now.Date)
        //        {
        //            freeNum = MathUtils.Subtraction(freeNum, userDial.DialNum);
        //            if (userDial.GroupID > 0)
        //            {
        //                groupID = userDial.GroupID;
        //            }
        //            else if (freeNum > 0 && userDial.GroupID == 0)
        //            {
        //                postion = RandomUtils.GetRandom(0, dialFreeList.Count);
        //                var dialpostion = dialFreeList[postion];
        //                if (dialpostion != null)
        //                {
        //                    groupID = dialpostion.GroupID;
        //                }
        //            }
        //            else
        //            {
        //                postion = RandomUtils.GetRandom(0, dialGoldList.Count);
        //                var dialpostion = dialGoldList[postion];
        //                if (dialpostion != null)
        //                {
        //                    groupID = dialpostion.GroupID;
        //                }
        //            }
        //        }
        //        else
        //        {
        //            userDial.RefreshDate = DateTime.Now;
        //            postion = RandomUtils.GetRandom(0, dialFreeList.Count);
        //            var dialpostion = dialFreeList[postion];
        //            if (dialpostion != null)
        //            {
        //                groupID = dialpostion.GroupID;
        //            }
        //        }
        //        userDial.GroupID = groupID;
        //    }
        //    else
        //    {
        //        var cacheSet = new PersonalCacheStruct<UserDial>();
        //        postion = RandomUtils.GetRandom(0, dialFreeList.Count);
        //        var dialpostion = dialFreeList[postion];
        //        if (dialpostion != null)
        //        {
        //            groupID = dialpostion.GroupID;
        //        }
        //        userDial = new UserDial();
        //        userDial.UserID = userID;
        //        userDial.HeadID = string.Empty;
        //        userDial.ReturnRatio = 0;
        //        userDial.DialNum = 0;
        //        cacheSet.Add(userDial);
        //    }
        //    userDial.GroupID = groupID;
        //    userDial.RefreshDate = DateTime.Now;
        //    return groupID;
        //}

        ///// <summary>
        ///// 奖励物品
        ///// </summary>
        ///// <param name="prize"></param>
        ///// <returns></returns>
        //public static void GainTreasureInfo(string userID, DialInfo dialInfo, int count)
        //{
        //    var treasure = new TreasureInfo();
        //    treasure.UserID = userID;
        //    treasure.Type = dialInfo.RewardType;
        //    treasure.ItemID = dialInfo.ItemID;
        //    treasure.Num = dialInfo.ItemNum;
        //    treasure.ItemLv = 1;
        //    UserDial userDial = new PersonalCacheStruct<UserDial>().FindKey(userID);
        //    if (userDial == null)
        //    {
        //        userDial = new UserDial();
        //    }
        //    userDial.GroupID = 0;
        //    userDial.RefreshDate = DateTime.Now;
        //    userDial.Treasure.Add(treasure);
        //    if (count == 0)
        //    {
        //        userDial.PrizeInfo = treasure;
        //        userDial.HeadID = dialInfo.HeadID;
        //    }
        //    if (GameConfigSet.Treasure > 0 && userDial.Treasure.Count > GameConfigSet.Treasure)
        //    {
        //        for (int i = 0; i < userDial.Treasure.Count - GameConfigSet.Treasure; i++)
        //        {
        //            userDial.Treasure.Remove(userDial.Treasure[i]);
        //        }
        //    }

        //    if (dialInfo.IsShow)
        //    {
        //        var cacheSet = new ShareCacheStruct<ServerEnvSet>();
        //        var serverEnvSet = cacheSet.FindKey(ServerEnvKey.UserTreasure);
        //        if (serverEnvSet == null)
        //        {
        //            serverEnvSet = new ServerEnvSet();
        //            serverEnvSet.EnvKey = ServerEnvKey.UserTreasure;
        //            cacheSet.Add(serverEnvSet);
        //        }
        //        var treasureInfoList = ServerEnvSetTreasure(treasure);
        //        serverEnvSet.EnvValue = JsonUtils.Serialize(treasureInfoList);
        //    }

        //    if (dialInfo.IsBroadcast && !string.IsNullOrEmpty(dialInfo.BroadContent))
        //    {
        //        GameUser user = new PersonalCacheStruct<GameUser>().FindKey(userID);
        //        if (user != null)
        //        {
        //            TjxChatService chatService = new TjxChatService();
        //            chatService.SystemSend(ChatType.World, string.Format(dialInfo.BroadContent, user.NickName));
        //        }

        //    }
        //    if (dialInfo.RewardType == RewardType.Again || dialInfo.RewardType == RewardType.Mood || dialInfo.RewardType == RewardType.Recharge)
        //    {
        //        if (dialInfo.RewardType == RewardType.Recharge)
        //        {
        //            userDial.ReturnRatio = treasure.Num;
        //        }
        //        return;
        //    }
        //    var cachePrize = new ShareCacheStruct<UserTakePrize>();
        //    var takePrize = GetUserTake(treasure, userID);
        //    cachePrize.Add(takePrize);
        //}

        private static List <TreasureInfo> ServerEnvSetTreasure(TreasureInfo treasure)
        {
            List <TreasureInfo> treasureList = new List <TreasureInfo>();
            var cacheSet     = new ShareCacheStruct <ServerEnvSet>();
            var serverEnvSet = cacheSet.FindKey(ServerEnvKey.UserTreasure);

            if (serverEnvSet != null && !string.IsNullOrEmpty(serverEnvSet.EnvValue))
            {
                treasureList = JsonUtils.Deserialize <List <TreasureInfo> >(serverEnvSet.EnvValue);
            }
            treasureList.Add(treasure);
            if (GameConfigSet.UserTreasureNum > 0 && treasureList.Count > GameConfigSet.UserTreasureNum)
            {
                for (int i = 0; i < treasureList.Count - GameConfigSet.UserTreasureNum; i++)
                {
                    treasureList.Remove(treasureList[i]);
                }
            }
            return(treasureList);
        }
Exemplo n.º 8
0
    public IEnumerator OpenPanel(TreasureInfo info, int steps)
    {
        CameraMovement.canBeMoved++;

        header.transform.DOScale(0, 0);
        stepPanel.Hide();
        diamondPanel.Hide();

        foreach (var button in buttons)
        {
            button.GetComponent <RectTransform>().DOAnchorPosY(-buttonsY, 0);
        }

        group.DOFade(1, 0.5f);
        group.interactable   = true;
        group.blocksRaycasts = true;

        yield return(new WaitForSeconds(0.5f));

        header.transform.DOScale(1f, 0.5f);

        var level = LevelManager.me.levels.levels[MemoryCard.GetSelectedLevel()];

        yield return(diamondPanel.Appear(info.littleTreasures.Count, level.map.treasures.Count));

        yield return(stepPanel.Appear(steps, level.maxSteps));

        SaveProgress(info, steps);

        bool thereIsANextLevel = MemoryCard.Load().levels.Count - 1 > MemoryCard.GetSelectedLevel();

        foreach (var button in buttons)
        {
            if (!(button == nextLevel && thereIsANextLevel))
            {
                button.GetComponent <RectTransform>().DOAnchorPosY(buttonsY, 0.1f);
                yield return(new WaitForSeconds(0.1f));
            }
        }
    }
Exemplo n.º 9
0
 public void SaveProgress(TreasureInfo info, int steps)
 {
     /*
      * var memory = MemoryCard.Load();
      * print("A: " + memory.levels[MemoryCard.GetSelectedLevel()].bigTreasures);
      * if (memory.levels[MemoryCard.GetSelectedLevel()].bigTreasures == 0)
      * {
      *  print("NEW LEVEL UNLOCKED");
      *  memory.levels.Add(new LevelProgress());
      * }
      *
      * memory.levels[MemoryCard.GetSelectedLevel()].steps = steps < memory.levels[MemoryCard.GetSelectedLevel()].steps ?
      *  steps : memory.levels[MemoryCard.GetSelectedLevel()].steps;
      *
      * memory.levels[MemoryCard.GetSelectedLevel()].treasures = info.littleTreasures.Count > memory.levels[MemoryCard.GetSelectedLevel()].treasures ?
      *  info.littleTreasures.Count : memory.levels[MemoryCard.GetSelectedLevel()].treasures;
      *
      * memory.levels[MemoryCard.GetSelectedLevel()].bigTreasures = info.bigTreasures.Count > memory.levels[MemoryCard.GetSelectedLevel()].bigTreasures ?
      *  info.bigTreasures.Count : memory.levels[MemoryCard.GetSelectedLevel()].bigTreasures;
      *
      * memory.Save();
      */
 }
Exemplo n.º 10
0
    public void ClearGame()
    {
        for (int i = 0; i < polices.Length; i++)
        {
            Destroy(polices[i].tileObject.gameObject);
            polices[i] = null;
        }

        if (treasures.Count != 0)
        {
            TreasureInfo[] remainings = new TreasureInfo[treasures.Count];
            treasures.Values.CopyTo(remainings, 0);
            for (int i = 0; i < treasures.Count; i++)
            {
                Destroy(remainings[i].tileObject);
            }
        }
        treasures.Clear();
        for (int i = 0; i < thieves.Length; i++)
        {
            if (thieves[i] != null)
            {
                Destroy(thieves[i].tileObject.gameObject);
                thieves[i] = null;
            }
        }
        for (int x = 0; x < mapSizeX; x++)
        {
            for (int y = 0; y < mapSizeY; y++)
            {
                if (map[x, y] == TileType.Empty || map[x, y] == TileType.Treasure)
                {
                    tileMap.SetTile(new Vector3Int(x - mapSizeX / 2, y - mapSizeY / 2, 0), floorTile);
                }
            }
        }
    }
Exemplo n.º 11
0
    public void SaveProgress(TreasureInfo info, int steps)
    {
        var memory = MemoryCard.Load();

        if (memory.levels[MemoryCard.GetSelectedLevel()].bigTreasures == 0)
        {
            // Desbloquear nova fase
            memory.levels.Add(new LevelProgress());
        }

        memory.levels[MemoryCard.GetSelectedLevel()].steps =
            steps < memory.levels[MemoryCard.GetSelectedLevel()].steps ?
            steps : memory.levels[MemoryCard.GetSelectedLevel()].steps;

        memory.levels[MemoryCard.GetSelectedLevel()].treasures =
            info.littleTreasures.Count > memory.levels[MemoryCard.GetSelectedLevel()].treasures ?
            info.littleTreasures.Count : memory.levels[MemoryCard.GetSelectedLevel()].treasures;

        memory.levels[MemoryCard.GetSelectedLevel()].bigTreasures =
            info.bigTreasures.Count > memory.levels[MemoryCard.GetSelectedLevel()].bigTreasures ?
            info.bigTreasures.Count : memory.levels[MemoryCard.GetSelectedLevel()].bigTreasures;

        memory.Save();
    }
Exemplo n.º 12
0
        ///// <summary>
        ///// 当日是否有免费次数
        ///// </summary>
        ///// <param name="userID"></param>
        ///// <returns></returns>
        //public static bool IsDialFree(string userID)
        //{
        //    UserDial userDial = new PersonalCacheStruct<UserDial>().FindKey(userID);
        //    int freeNum = GameConfigSet.FreeSweepstakes;
        //    if (userDial != null && userDial.RefreshDate.Date == DateTime.Now.Date && userDial.DialNum >= freeNum)
        //    {
        //        return false;
        //    }
        //    return true;
        //}

        /// <summary>
        /// 奖励物品名称
        /// </summary>
        /// <param name="prize"></param>
        /// <returns></returns>
        public static string PrizeItemName(TreasureInfo treasure)
        {
            string name = string.Empty;

            switch (treasure.Type)
            {
            case RewardType.GameGoin:
                name = string.Format(LanguageManager.GetLang().St_GameCoin, (int)treasure.Num);
                break;

            case RewardType.Obtion:
                name = string.Format(LanguageManager.GetLang().St_ObtionNum, (int)treasure.Num);
                break;

            case RewardType.ExpNum:
                name = string.Format(LanguageManager.GetLang().St_ExpNum, (int)treasure.Num);
                break;

            case RewardType.EnergyNum:
                name = string.Format(LanguageManager.GetLang().St_EnergyNum, (int)treasure.Num);
                break;

            case RewardType.Experience:
                name = string.Format(LanguageManager.GetLang().St_Experience, (int)treasure.Num);
                break;

            case RewardType.Gold:
                name = string.Format(LanguageManager.GetLang().St_GiftGoldNum, (int)treasure.Num);
                break;

            case RewardType.CrystalId:
                CrystalInfo crystal = new ShareCacheStruct <CrystalInfo>().FindKey(treasure.ItemID);
                name = crystal == null ? string.Empty : crystal.CrystalName;
                break;

            case RewardType.Item:
                ItemBaseInfo itemInfo = new ShareCacheStruct <ItemBaseInfo>().FindKey(treasure.ItemID);
                name = itemInfo == null ? string.Empty : itemInfo.ItemName;
                break;

            case RewardType.Spare:
                SparePartInfo sparePartInfo = new ShareCacheStruct <SparePartInfo>().FindKey(treasure.ItemID);
                name = sparePartInfo == null ? string.Empty : sparePartInfo.Name;
                break;

            case RewardType.Enchant:
                EnchantInfo enchantInfo = new ShareCacheStruct <EnchantInfo>().FindKey(treasure.ItemID);
                name = enchantInfo == null ? string.Empty : enchantInfo.EnchantName;
                break;

            case RewardType.Again:
                name = LanguageManager.GetLang().St12004_RewardSweepstakes;
                break;

            case RewardType.Mood:
                name = LanguageManager.GetLang().St12004_DidNotAnyReward;
                break;

            case RewardType.Recharge:
                name = string.Format(LanguageManager.GetLang().St12004_RechargeReturn, GetTransformData(treasure.Num));
                break;
            }
            return(name);
        }
Exemplo n.º 13
0
 public UserDial()
     : base(AccessLevel.ReadWrite)
 {
     PrizeInfo = new TreasureInfo();
     Treasure  = new CacheList <TreasureInfo>();
 }
Exemplo n.º 14
0
    public void SetInfo(CliProto.SC_TREASURE_CHEST_NTF msg)
    {
        LoadScoreEffect(sdUICharacter.Instance.fightScore);
        if (sdUICharacter.Instance.GetBattleType() != (byte)HeaderProto.LEVEL_BATTLE_TYPE.LEVEL_BATTLE_TYPE_ABYSS)
        {
            sdUICharacter.Instance.fightScore = 1;
        }

        if (sdFriendMgr.Instance.fightFriend != null)
        {
            sdFriend fri = sdFriendMgr.Instance.fightFriend;
            friName.GetComponent <UILabel>().text         = fri.name;
            petName.GetComponent <UILabel>().text         = fri.petInfo.m_strName;
            petFrame.GetComponent <UISprite>().spriteName = sdConfDataMgr.Instance().GetPetQuilityBorder(fri.petInfo.m_iAbility);
            UIAtlas atlas = null;
            string  headName;
            //sdConfDataMgr.Instance().SetHeadAtlas += new sdConfDataMgr.HeadAtlas(SetAtlas);
            sdConfDataMgr.Instance().SetHeadPic(fri.gender, fri.hairStyle, fri.color, friIcon.GetComponent <UISprite>());
            //friIcon.GetComponent<UISprite>().atlas = atlas;
            //friIcon.GetComponent<UISprite>().spriteName = headName;

            petIcon.GetComponent <UISprite>().atlas      = sdConfDataMgr.Instance().PetAtlas;
            petIcon.GetComponent <UISprite>().spriteName = fri.petInfo.m_strIcon;
            friLevel.GetComponent <UILabel>().text       = "Lv." + fri.level;
            petLevel.GetComponent <UILabel>().text       = "Lv." + fri.petInfo.m_iLevel.ToString();
        }

        float     expRate            = 1;
        float     moneyRate          = 1;
        Hashtable militarylevelTable = sdConfDataMgr.Instance().GetTable("militarylevel");

        if (militarylevelTable.ContainsKey(sdPVPManager.Instance.nMilitaryLevel.ToString()))
        {
            Hashtable military = militarylevelTable[(sdPVPManager.Instance.nMilitaryLevel).ToString()] as Hashtable;
            expRate   = float.Parse(military["experience"].ToString()) / 100 + 1;
            moneyRate = float.Parse(military["money"].ToString()) / 100 + 1;
        }

        exp   = (int)(((float)msg.m_Experience) * expRate);
        money = (int)(((float)msg.m_Money) * moneyRate);
        Hashtable            table       = sdSlotMgr.Instance.GetIconList(PanelType.Panel_Jiesuan);
        int                  slotNum     = 0;
        int                  num         = (int)msg.m_Items.m_ItemCount;
        List <sdGameItem>    itemList    = new List <sdGameItem>();
        List <sdGamePetItem> petItemList = new List <sdGamePetItem>();
        List <sdGameItem>    petCardList = new List <sdGameItem>();

        for (int i = 0; i < num; ++i)
        {
            sdGameItem item = sdGameItemMgr.Instance.getItem(msg.m_Items.m_Items[i].m_UID);
            if (item == null)
            {
                sdGamePetItem petItem = sdNewPetMgr.Instance.getPetItem(msg.m_Items.m_Items[i].m_UID);
                if (petItem == null)
                {
                    sdGameItem temp = new sdGameItem();
                    temp.templateID = msg.m_Items.m_Items[i].m_TID;
                    Hashtable tempInfo = sdConfDataMgr.Instance().GetItemById(msg.m_Items.m_Items[i].m_TID.ToString());
                    if (tempInfo == null)
                    {
                        continue;
                    }
                    if (int.Parse(tempInfo["Class"].ToString()) == (int)HeaderProto.EItemClass.ItemClass_Pet_Item)
                    {
                        petCardList.Add(temp);
                    }
                    else
                    {
                        itemList.Add(temp);
                    }

                    continue;
                }
                petItemList.Add(petItem);
                continue;
            }
            item.isNew = true;
            itemList.Add(item);
        }

        itemCount = num + msg.m_PetAboutCount;
        num       = msg.m_PetAboutCount;
        for (int i = 0; i < num; ++i)
        {
            if (table.ContainsKey(slotNum) && table[slotNum] != null)
            {
                sdSlotIcon icon = table[slotNum] as sdSlotIcon;
                if (icon != null)
                {
                    Hashtable pet = sdConfDataMgr.Instance().GetItemById(msg.m_PetAbout[i].ToString());
                    if (pet == null)
                    {
                        continue;
                    }
                    if (int.Parse(pet["Class"].ToString()) == (int)HeaderProto.EItemClass.ItemClass_Pet_Equip)
                    {
                        icon.jiesuanType = JiesuanSlotType.PetItem;
                        icon.SetInfo(msg.m_PetAbout[i].ToString(), pet);
                        icon.gameObject.SetActive(false);
                        icon.GetComponent <BoxCollider>().enabled = true;
                    }
                    else if (int.Parse(pet["Class"].ToString()) == (int)HeaderProto.EItemClass.ItemClass_Pet_Item)
                    {
                        icon.jiesuanType = JiesuanSlotType.Pet;
                        icon.SetInfo(msg.m_PetAbout[i].ToString(), pet);
                        icon.gameObject.SetActive(false);
                        icon.GetComponent <BoxCollider>().enabled = true;
                    }
                }
            }
            ++slotNum;
        }

        foreach (sdGameItem item in petCardList)
        {
            if (table.ContainsKey(slotNum) && table[slotNum] != null)
            {
                sdSlotIcon icon = table[slotNum] as sdSlotIcon;
                if (icon != null)
                {
                    if (item != null)
                    {
                        Hashtable info = sdConfDataMgr.Instance().GetItemById(item.templateID.ToString());
                        icon.panel       = PanelType.Panel_Jiesuan;
                        icon.jiesuanType = JiesuanSlotType.Pet;
                        icon.SetInfo(item.instanceID.ToString(), info);
                        icon.gameObject.SetActive(false);
                    }
                    icon.enable = false;
                    icon.GetComponent <BoxCollider>().enabled = true;
                }
            }
            ++slotNum;
        }

        foreach (sdGamePetItem item in petItemList)
        {
            if (table.ContainsKey(slotNum) && table[slotNum] != null)
            {
                sdSlotIcon icon = table[slotNum] as sdSlotIcon;
                if (icon != null)
                {
                    if (item != null)
                    {
                        Hashtable info = sdConfDataMgr.Instance().GetItemById(item.templateID.ToString());
                        icon.panel       = PanelType.Panel_Jiesuan;
                        icon.jiesuanType = JiesuanSlotType.PetItem;
                        icon.SetInfo(item.instanceID.ToString(), info);
                        icon.gameObject.SetActive(false);
                    }
                    icon.enable = false;
                    icon.GetComponent <BoxCollider>().enabled = true;
                }
            }
            ++slotNum;
        }

        itemList.Sort(CompareItem);

        foreach (sdGameItem item in itemList)
        {
            if (table.ContainsKey(slotNum) && table[slotNum] != null)
            {
                sdSlotIcon icon = table[slotNum] as sdSlotIcon;
                if (icon != null)
                {
                    if (item != null)
                    {
                        Hashtable info = sdConfDataMgr.Instance().GetItemById(item.templateID.ToString());
                        icon.panel = PanelType.Panel_Jiesuan;
                        icon.SetInfo(item.instanceID.ToString(), info);
                        icon.gameObject.SetActive(false);
                    }
                    icon.enable = false;
                    icon.GetComponent <BoxCollider>().enabled = true;
                }
            }
            ++slotNum;
        }

        while (table.ContainsKey(slotNum) && table[slotNum] != null)
        {
            sdSlotIcon icon = table[slotNum] as sdSlotIcon;
            if (icon != null)
            {
                icon.SetInfo("0", null);
                icon.enable = false;
                icon.GetComponent <BoxCollider>().enabled = false;
            }
            ++slotNum;
        }

        int treasureNum = msg.m_GetCount;

        for (int i = 0; i < treasureNum; ++i)
        {
            TreasureInfo info = new TreasureInfo();
            info.index  = msg.m_CardInfos[i].m_IndexID;
            info.id     = (int)msg.m_CardInfos[i].m_ItemID;
            info.count  = (int)msg.m_CardInfos[i].m_Count;
            info.isTemp = false;
            realList.Add(info);
        }

        treasureNum = msg.m_TempCount;
        List <int> ranlist = new List <int>();

        for (int i = 0; i < treasureNum; ++i)
        {
            ranlist.Add(i);
        }

        System.Random ran = new System.Random();
        while (ranlist.Count > 0)
        {
            int          index    = ran.Next(ranlist.Count);
            int          indexNum = ranlist[index];
            TreasureInfo info     = new TreasureInfo();
            info.index  = msg.m_TempCardInfos[indexNum].m_IndexID;
            info.id     = (int)msg.m_TempCardInfos[indexNum].m_ItemID;
            info.count  = (int)msg.m_TempCardInfos[indexNum].m_Count;
            info.isTemp = true;

            tempList.Add(info);

            ranlist.RemoveAt(index);
        }

        if (sdGameLevel.instance != null && sdGameLevel.instance.mainChar != null)
        {
            if (sdGameLevel.instance.mainChar.Property != null)
            {
                curExp  = sdUICharacter.Instance.oldExp;
                m_level = sdUICharacter.Instance.oldLevel;
                m_job   = int.Parse(sdGameLevel.instance.mainChar.Property["Job"].ToString());
                int maxExp = sdConfDataMgr.Instance().GetLevelExp(m_job.ToString(), m_level.ToString());
                if (maxExp == 0)
                {
                    lvMax = true;
                }
                else
                {
                    lvMax = false;
                }

                if (curLevel != null)
                {
                    if (maxExp == 0)
                    {
                        curLevel.GetComponent <UILabel>().text = string.Format("Max");
                    }
                    else
                    {
                        curLevel.GetComponent <UILabel>().text = string.Format("Lv.{0}", m_level.ToString());
                    }
                }

                if (nextLevel != null)
                {
                    if (maxExp == 0)
                    {
                        nextLevel.GetComponent <UILabel>().text = string.Format("");
                    }
                    else
                    {
                        nextLevel.GetComponent <UILabel>().text = string.Format("Lv.{0}", (m_level + 1).ToString());
                    }
                }

                if (lvPic != null)
                {
                    if (maxExp == 0)
                    {
                        lvPic.GetComponent <UISprite>().fillAmount = 0;
                    }
                    else
                    {
                        lvPic.GetComponent <UISprite>().fillAmount = (float)((float)curExp / (float)maxExp);
                    }
                }
            }
        }
    }
Exemplo n.º 15
0
    public void PopulateBasedOnOrder(bool first)
    {
        EnemyDepthInfo    enemies      = WorldManager.Instance.enemyInfo[myOrder];
        EnemyDepthInfo    floorEnemies = WorldManager.Instance.floorEnemies[myOrder];
        TreasureDepthInfo treasures    = WorldManager.Instance.treasureInfo[myOrder];

        foreach (Transform t in enemySpawnLocations)
        {
            float random = UnityEngine.Random.value * 100;
            if (random <= enemies.myEnemies.Sum(x => x.percentSpawnChance))
            {
                float     sum      = 0;
                EnemyInfo newEnemy = enemies.myEnemies.TakeWhile(x => { var temp = sum; sum += x.percentSpawnChance; return(temp < random); }).Last();
                if (newEnemy != null)
                {
                    GameObject enemy = Instantiate(newEnemy.enemyPrefab);
                    enemy.transform.SetParent(transform);
                    enemy.transform.localScale = new Vector3(1, 1, 1);
                    enemy.transform.position   = t.position;
                    enemy.transform.SetLocalPosition(z: -1);

                    if (enemy.GetComponent <Enemy>() != null)
                    {
                        enemy.GetComponent <Enemy>().SetLevel(myOrder);
                    }
                }
            }
        }
        foreach (Transform t in floorEnemySpawnLocations)
        {
            float random = UnityEngine.Random.value * 100;
            if (first)
            {
                random = 1;
            }

            if (random <= floorEnemies.myEnemies.Sum(x => x.percentSpawnChance))
            {
                float     sum      = 0;
                EnemyInfo newEnemy = floorEnemies.myEnemies.TakeWhile(x => { var temp = sum; sum += x.percentSpawnChance; return(temp < random); }).Last();
                if (newEnemy != null)
                {
                    GameObject enemy = Instantiate(newEnemy.enemyPrefab);
                    enemy.transform.SetParent(transform);
                    enemy.transform.localScale = new Vector3(1, 1, 1);
                    enemy.transform.position   = t.position;
                    enemy.transform.SetLocalPosition(z: -1);

                    if (enemy.GetComponent <Enemy>() != null)
                    {
                        enemy.GetComponent <Enemy>().SetLevel(myOrder);
                    }
                }
            }
        }

        foreach (Transform t in treasureSpawnLocations)
        {
            float random = UnityEngine.Random.value * 100;
            if (first)
            {
                random = 1;
            }

            if (random <= treasures.myTreasures.Sum(x => x.percentSpawnChance))
            {
                float        sum         = 0;
                TreasureInfo newTreasure = treasures.myTreasures.TakeWhile(x => { var temp = sum; sum += x.percentSpawnChance; return(temp < random); }).Last();
                if (newTreasure != null)
                {
                    GameObject enemy = Instantiate(newTreasure.treasurePrefab);
                    enemy.transform.SetParent(transform);
                    enemy.transform.localScale = new Vector3(1, 1, 1);
                    enemy.transform.position   = t.position;
                    enemy.transform.SetLocalPosition(z: -1);

                    if (enemy.GetComponent <Pickup>() != null)
                    {
                        enemy.GetComponent <Pickup>().SetValue(myOrder);
                    }
                }
            }
        }
    }
Exemplo n.º 16
0
        protected override object this[string index]
        {
            get
            {
                #region
                switch (index)
                {
                case "UserID": return(UserID);

                case "PrizeInfo": return(PrizeInfo);

                case "ReturnRatio": return(ReturnRatio);

                case "HeadID": return(HeadID);

                case "DialNum": return(DialNum);

                case "RefreshDate": return(RefreshDate);

                case "Treasure": return(Treasure);

                case "GroupID": return(GroupID);

                default: throw new ArgumentException(string.Format("UserDial index[{0}] isn't exist.", index));
                }
                #endregion
            }
            set
            {
                #region
                switch (index)
                {
                case "UserID":
                    _UserID = value.ToNotNullString();
                    break;

                case "PrizeInfo":
                    _PrizeInfo = ConvertCustomField <TreasureInfo>(value, index);
                    break;

                case "ReturnRatio": _ReturnRatio = value.ToDecimal();
                    break;

                case "HeadID": _HeadID = value.ToNotNullString();
                    break;

                case "DialNum":
                    _DialNum = value.ToShort();
                    break;

                case "RefreshDate":
                    _RefreshDate = value.ToDateTime();
                    break;

                case "Treasure": _Treasure = ConvertCustomField <CacheList <TreasureInfo> >(value, index);
                    break;

                case "GroupID":
                    _GroupID = value.ToInt();
                    break;

                default: throw new ArgumentException(string.Format("UserDial index[{0}] isn't exist.", index));
                }
                #endregion
            }
        }
Exemplo n.º 17
0
        private void CalcTreasure()
        {
            if (this.CustomList.Count < 1 || GrandcypherClient.Current.TreasureHooker.CurrentTreasureList == null)
            {
                return;
            }

            this.TreasureList = new List <TreasureInfo>();
            List <TreasureInfo> temp_lst = new List <TreasureInfo>();

            foreach (var item in this.CustomList)
            {
                var customtemp = item.GetMaterialList();
                temp_lst = temp_lst.Concat(customtemp).ToList();
            }
            foreach (var item in temp_lst)
            {
                TreasureInfo treasure_temp = new TreasureInfo();
                if (TreasureList.Any(x => x.ItemID == item.ItemID))
                {
                    TreasureList.Find(x => x.ItemID == item.ItemID).max += item.max;
                }
                else
                {
                    treasure_temp.Name   = item.Name;
                    treasure_temp.max    = item.max;
                    treasure_temp.ItemID = item.ItemID;
                    TreasureList.Add(treasure_temp);
                }
            }
            List <TreasureInfo> calcList = new List <TreasureInfo>();

            //GrandcypherClient.Current.TreasureHooker.CurrentTreasureList.Values= 현재 트래저 목록
            //TreasureList= 설정에 따라 불러온 트래저 목록
            foreach (var current in GrandcypherClient.Current.TreasureHooker.CurrentTreasureList.Values)
            {
                foreach (var target in TreasureList)
                {
                    if (target.ItemID == current.ItemID)
                    {
                        TreasureInfo temp_t = new TreasureInfo();

                        temp_t.Name   = current.Name;
                        temp_t.result = target.max - current.count;
                        temp_t.ItemID = current.ItemID;

                        if (temp_t.result > 0)
                        {
                            calcList.Add(temp_t);
                        }
                    }
                }
            }
            List <TreasureInfo> modified_list = new List <TreasureInfo>(calcList);

            foreach (var item in TreasureList)
            {
                if (GrandcypherClient.Current.TreasureHooker.CurrentTreasureList.Values.Where(x => x.ItemID == item.ItemID).FirstOrDefault() == default(TreasureInfo))
                {
                    TreasureInfo temp_t = new TreasureInfo();

                    temp_t.Name   = item.Name;
                    temp_t.result = item.max;
                    temp_t.ItemID = item.ItemID;
                    if (temp_t.result > 0)
                    {
                        modified_list.Add(temp_t);
                    }
                }
            }
            this.TreasureList = new List <TreasureInfo>(modified_list);
        }
Exemplo n.º 18
0
        private void RemoveCompleteTreasure()
        {
            if (GrandcypherClient.Current.TreasureHooker.CurrentTreasureList == null)
            {
                return;
            }
            if (GrandcypherClient.Current.TreasureHooker.CurrentTreasureList.Count < 1)
            {
                return;
            }

            List <TreasureInfo> temp   = new List <TreasureInfo>(GrandcypherClient.Current.TreasureHooker.CurrentTreasureList.Values);
            List <TreasureInfo> result = new List <TreasureInfo>();


            List <TenTreasureInfo> targetList  = new List <TenTreasureInfo>(GrandcypherClient.Current.Translations.GetTreasureList());
            List <TenTreasureInfo> ElementList = targetList.Where(x => x.ElementID != 0).ToList();
            List <TenTreasureInfo> AnotherList = targetList.Where(x => x.ElementID == 0).ToList();

            var Origin = ElementList.Where(x => x.Origin == 1).ToList();
            var Magna  = ElementList.Where(x => x.Origin == 2).ToList();
            List <TenTreasureInfo> ProtoList = new List <TenTreasureInfo>();


            for (int i = 0; i < Origin.Count; i++)
            {
                if (Origin[i].ElementID == ElementTable[this.SelectedElement])
                {
                    Origin[i].Element += 3;
                    Origin[i].Second  += 3;
                    Origin[i].Fourth  += 3;
                }
            }

            for (int i = 0; i < Magna.Count; i++)
            {
                if (Magna[i].ElementID == ElementTable[this.SelectedElement])
                {
                    Magna[i].Fifth += 60;
                }
            }

            ProtoList = ElementList.Where(x => x.Proto > 0).ToList();

            switch (ElementTable[this.SelectedElement])
            {
            case 1:
                ElementList = ElementList.Where(x => x.ElementID == 1 && x.Origin == 0).ToList();
                break;

            case 2:
                ElementList = ElementList.Where(x => x.ElementID == 2 && x.Origin == 0).ToList();
                break;

            case 3:
                ElementList = ElementList.Where(x => x.ElementID == 3 && x.Origin == 0).ToList();
                break;

            case 4:
                ElementList = ElementList.Where(x => x.ElementID == 4 && x.Origin == 0).ToList();
                break;

            case 5:
                ElementList = ElementList.Where(x => x.ElementID == 5 && x.Origin == 0).ToList();
                break;

            case 6:
                ElementList = ElementList.Where(x => x.ElementID == 6 && x.Origin == 0).ToList();
                break;
            }
            targetList = new List <TenTreasureInfo>(AnotherList.Concat(ElementList).Concat(Magna).Concat(Origin).ToList());
            if (ElementTable[this.SelectedElement] != 5)
            {
                List <TenTreasureInfo> outputList = new List <TenTreasureInfo>();
                foreach (var item in ProtoList)
                {
                    TenTreasureInfo tempoutput = new TenTreasureInfo
                    {
                        Name  = item.Name,
                        Proto = item.Proto
                    };
                    outputList.Add(tempoutput);
                }
                targetList = new List <TenTreasureInfo>(outputList.Concat(targetList).ToList());
            }
            //temp=현재 보유하고 있는 아이템목록
            //targetlist=정리된 십천중 필요목록
            targetList = new List <TenTreasureInfo>(GrandcypherClient.Current.Translations.SetItemIdxList(targetList));
            foreach (var item in targetList)
            {
                var          search = temp.Where(x => x.ItemID == item.idx).ToList();
                TreasureInfo target = new TreasureInfo();

                //아이템 보유목록에 필요목록에 있는 아이템이 존재하는 경우
                if (search.Count > 0)
                {
                    target = search[0];
                }
                else                //아이템이 비활성화인 경우 기초값으로 생성
                {
                    target = new TreasureInfo
                    {
                        Name   = item.Name,
                        count  = 0,
                        ItemID = -1,
                    };
                }
                if (target.Name == null || target.Name == string.Empty)
                {
                    continue;
                }
                target.max = 0;                //max값을 초기화

                //max값에 필요 아이템값을 모두 합산
                if (!Proto && item.Proto > 0)
                {
                    target.max += item.Proto;
                }
                if (!Rust && item.Rust > 0)
                {
                    target.max += item.Rust;
                }
                if (!Element && item.Element > 0)
                {
                    target.max += item.Element;
                }
                if (!First && item.First > 0)
                {
                    target.max += item.First;
                }
                if (!Second && item.Second > 0)
                {
                    target.max += item.Second;
                }
                if (!Third && item.Third > 0)
                {
                    target.max += item.Third;
                }
                if (!Fourth && item.Fourth > 0)
                {
                    target.max += item.Fourth;
                }
                if (!Fifth && item.Fifth > 0)
                {
                    target.max += item.Fifth;
                }

                target.max   += item.Sixth;
                target.result = target.max - target.count;

                if (target.result > 0)
                {
                    result.Add(target);
                }
            }
            this.TreasureList = new List <TreasureInfo>(result);
        }
Exemplo n.º 19
0
    public void OnChangeBg()
    {
        bg.spriteName     = "k1";
        bgGlow.spriteName = "js-d1";
        bgGlow.gameObject.transform.localPosition = new Vector3(0, 108, 0);
        bgGlow.width  = 20;
        bgGlow.height = 14;

        itemIcon.SetActive(true);
        cardEffect.transform.parent     = cardEffect.transform.parent.parent;
        cardEffect.transform.localScale = new Vector3(300, 300, 1);
        cardEffect.SetActive(true);
        TreasureInfo info = sdUICharacter.Instance.GetTreasure();

        sdUICharacter.Instance.selectTreasure++;
        if (info == null)
        {
            return;
        }

        int color = 0;

        if (info.id == (int)HeaderProto.ESpecialItemID.SPECIALITEMID_nonMoney)
        {
            //itemIcon.GetComponent<UISprite>().spriteName = "";
            itemIcon.transform.Find("icon").GetComponent <UISprite>().spriteName = "icon_jinb";
            itemIcon.transform.FindChild("name").GetComponent <UILabel>().text   = info.count.ToString();
            color = 1;
        }
        else if (info.id == (int)HeaderProto.ESpecialItemID.SPECIALITEMID_nonCash)
        {
            //itemIcon.GetComponent<UISprite>().spriteName = "";
            itemIcon.transform.Find("icon").GetComponent <UISprite>().spriteName = "icon_xz";
            itemIcon.transform.FindChild("name").GetComponent <UILabel>().text   = info.count.ToString();
            color = 4;
        }
        else if (info.id == (int)HeaderProto.ESpecialItemID.SPECIALITEMID_cash)
        {
            //itemIcon.GetComponent<UISprite>().spriteName = "";
            itemIcon.transform.Find("icon").GetComponent <UISprite>().spriteName = "icon_xzb";
            itemIcon.transform.FindChild("name").GetComponent <UILabel>().text   = info.count.ToString();
            color = 3;
        }
        else
        {
            Hashtable item = sdConfDataMgr.Instance().GetItemById(info.id.ToString());
            if (item == null)
            {
                return;
            }
            color = int.Parse(item["Quility"].ToString());
            itemIcon.GetComponent <sdSlotIcon>().SetInfo(info.id.ToString(), item);
            string name = item["ShowName"].ToString();
            itemIcon.transform.FindChild("name").GetComponent <UILabel>().text = name;
            sdNewInfoMgr.Instance.CreateNewInfo(NewInfoType.Type_Item);
        }

        itemIcon.GetComponentInChildren <UILabel>().color = sdConfDataMgr.Instance().GetItemQuilityColor(color);
        if (!info.isTemp)
        {
            CliProto.CS_OPEN_TREASURE_CHEST_REQ refMSG = new CliProto.CS_OPEN_TREASURE_CHEST_REQ();
            refMSG.m_ItemIndexID = (byte)info.index;
            SDNetGlobal.SendMessage(refMSG);
        }
        else
        {
            itemIcon.transform.FindChild("Label").gameObject.SetActive(false);
        }

        color = color - 1;
        if (color < 0)
        {
            color = 0;
        }
    }