Ejemplo n.º 1
0
        /// <summary>
        /// 查询道具诗句
        /// </summary>
        /// <returns>The property.</returns>
        /// <param name="type">Type.</param>
        public PropData GetProp(PropType type)
        {
            PropData propData = null;

            db = OpenDb();
            SqliteDataReader sqReader = db.ExecuteQuery("select Id, Data from GiftsTable where Type = " + (int)type + " and BelongToRoleId = '" + currentRoleId + "'");
            string           dataStr;

            if (sqReader.Read())
            {
                dataStr  = DESStatics.StringDecder(sqReader.GetString(sqReader.GetOrdinal("Data")));
                propData = JsonManager.GetInstance().DeserializeObject <PropData>(dataStr);
            }
            db.CloseSqlConnection();
            return(propData);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 添加一个道具
        /// </summary>
        /// <param name="type">Type.</param>
        /// <param name="num">Number.</param>
        public void AddProp(PropType type, int num)
        {
            db = OpenDb();
            SqliteDataReader sqReader = db.ExecuteQuery("select Id, Data from GiftsTable where Type = " + (int)type + " and BelongToRoleId = '" + currentRoleId + "'");
            string           dataStr;
            PropData         propData;

            if (sqReader.Read())
            {
                dataStr      = DESStatics.StringDecder(sqReader.GetString(sqReader.GetOrdinal("Data")));
                propData     = JsonManager.GetInstance().DeserializeObject <PropData>(dataStr);
                propData.Num = Mathf.Clamp(propData.Num + num, 0, propData.Max);
                //改
                db.ExecuteQuery("update GiftsTable set Data = '" + DESStatics.StringEncoder(JsonManager.GetInstance().SerializeObject(propData)) + "' where Id = " + sqReader.GetInt32(sqReader.GetOrdinal("Id")));
            }
            else
            {
                propData = new PropData(type, num);
                //增
                db.ExecuteQuery("insert into GiftsTable (Type, Data, BelongToRoleId) values(" + (int)type + ", '" + DESStatics.StringEncoder(JsonManager.GetInstance().SerializeObject(propData)) + "', '" + currentRoleId + "');");
            }
            db.CloseSqlConnection();
        }
Ejemplo n.º 3
0
 public void UpdateData(PropData data)
 {
     propData = data;
 }
Ejemplo n.º 4
0
 public static void Show(FightData fight, List <RoleData> teams, List <List <SecretData> > secrets, List <RoleData> enemys, List <ItemData> drugs, PropData limePowderData)
 {
     if (Ctrl == null)
     {
         InstantiateView("Prefabs/UI/Fight/BattleFightPanelViewNew", "BattleFightPanelCtrl");
     }
     Ctrl.UpdateData(fight, teams, secrets, enemys, drugs, limePowderData);
     Ctrl.RefreshView();
 }
Ejemplo n.º 5
0
        public void UpdateData(FightData fight, List <RoleData> teams, List <List <SecretData> > secrets, List <RoleData> enemys, List <ItemData> drugs, PropData limePowderData)
        {
            fightData                      = fight;
            teamsData                      = teams;
            enemysData                     = enemys;
            drugsData                      = drugs;
            propLimePowderData             = limePowderData;
            BattleLogic.Instance.AutoFight = string.IsNullOrEmpty(PlayerPrefs.GetString("BattleNotAutoFight"));
            autoFightToggle.isOn           = BattleLogic.Instance.AutoFight;
            autoFightLabel.text            = autoFightToggle.isOn ? "手动\n施展" : "自动\n施展";
            BattleLogic.Instance.UpSpeed   = !string.IsNullOrEmpty(PlayerPrefs.GetString("BattleUpSpeed"));
            upSpeedToggle.isOn             = BattleLogic.Instance.UpSpeed;
            upSpeedLabel.text              = upSpeedToggle.isOn ? "一倍\n速度" : "二倍\n速度";
            BattleLogic.Instance.Init(teamsData, secrets, enemysData);
            BattleLogic.Instance.PopEnemy();
            enemyGotBuffsScript.SetBuffDatas(BattleLogic.Instance.EnemyBuffsData);
            teamGotBuffsScript.SetBuffDatas(BattleLogic.Instance.TeamBuffsData);
            state     = ready;
            readyDate = Time.fixedTime;
            //计算敌人平均等级
            averageEnemyLv = 0;
            for (int i = 0, len = enemysData.Count; i < len; i++)
            {
                averageEnemyLv += enemysData[i].Lv;
            }
            averageEnemyLv /= enemysData.Count;
            //处理通天塔量子强度影响的敌人经验成长率
            if (UserModel.CurrentUserData.CurrentAreaSceneName == "Area31")
            {
                int difficulty = PlayerPrefs.GetInt("TowerDifficulty");
                int growUp;
                switch (difficulty)
                {
                case 0:
                default:
                    growUp = 1;
                    break;

                case 1:
                    growUp = 4;
                    break;

                case 2:
                    growUp = 8;
                    break;
                }
                averageEnemyLv *= growUp;
            }
            //记录本方的秘籍(不包括心法)
            teamBooks = new List <BookData>();
            for (int i = 0, len = teamsData.Count; i < len; i++)
            {
                for (int j = 0, len2 = teamsData[i].Books.Count; j < len2; j++)
                {
                    if (!teamsData[i].Books[j].IsMindBook)
                    {
                        teamBooks.Add(teamsData[i].Books[j]);
                    }
                }
            }

            paused = false;
        }
Ejemplo n.º 6
0
        /// <summary>
        /// 处理队伍中侠客的伤势
        /// </summary>
        public void MakeRolesInjury()
        {
            //查询镖师道具
            PropData propData  = GetProp(PropType.Bodyguard);
            int      injuryNum = 0;

            db = OpenDb();
            SqliteDataReader sqReader = db.ExecuteQuery("select CityId from EnterCityTable where BelongToRoleId = '" + currentRoleId + "' and CityId = '0002'");

            //判断有没有开启临安集市的传送点,因为只有等银子资源开启后才能产出银子购买伤药,否则一旦在银子产出前受伤的话游戏将会卡死
            if (sqReader.HasRows)
            {
                //健康的时候有概率变成之后的任何伤,受伤再死亡只会变成当前伤势之后的下一档伤
                sqReader = db.ExecuteQuery("select Id, RoleId, InjuryType from RolesTable where State = " + ((int)RoleStateType.InTeam) + " and BelongToRoleId = '" + currentRoleId + "'");
                Dictionary <int, int> injuryMapping = new Dictionary <int, int>();
                int hostPrimaryKeyId = -1;
                while (sqReader.Read())
                {
                    injuryMapping.Add(sqReader.GetInt32(sqReader.GetOrdinal("Id")), sqReader.GetInt32(sqReader.GetOrdinal("InjuryType")));
                    if (sqReader.GetString(sqReader.GetOrdinal("RoleId")) == currentRoleId)
                    {
                        hostPrimaryKeyId = sqReader.GetInt32(sqReader.GetOrdinal("Id"));
                    }
                }
                int randomValue = 0;
                int injury      = 0;
                foreach (int id in injuryMapping.Keys)
                {
                    injury = injuryMapping[id];
                    //绿伤会随机受伤
                    if (injuryMapping[id] <= 0)
                    {
                        randomValue = UnityEngine.Random.Range(0, 10000);
                        //有30%概率不受伤
                        if (randomValue >= 3000 && randomValue < 5000)
                        {
                            injury = (int)InjuryType.White;
                        }
                        else if (randomValue >= 5000 && randomValue < 6500)
                        {
                            injury = (int)InjuryType.Yellow;
                        }
                        else if (randomValue >= 6500 && randomValue < 7750)
                        {
                            injury = (int)InjuryType.Purple;
                        }
                        else if (randomValue >= 7750 && randomValue < 9990)
                        {
                            injury = (int)InjuryType.Red;
                        }
                        else if (randomValue >= 9990)
                        {
                            injury = (int)InjuryType.Moribund;
                        }
                    }
                    else if (injuryMapping[id] < 5)
                    {
                        //已经受伤则往下个等级伤势演变,垂死状态不再受伤
                        injury++;
                    }
                    if (injury > 0)
                    {
                        if (propData != null && propData.Num > 0)
                        {
                            propData.Num--;
                            injuryNum++;
                            injury = 0;
                        }
                        else
                        {
                            db.ExecuteQuery("update RolesTable set InjuryType = " + injury + " where Id = " + id);
                            if (hostPrimaryKeyId != id && injury == (int)InjuryType.Moribund)
                            {
                                //垂死的侠客要强制下阵,主角除外
                                db.ExecuteQuery("update RolesTable set State = " + ((int)RoleStateType.OutTeam) + ", SeatNo = 888 where Id = " + id);
                            }
                        }
                    }
                }
                if (injury > 0)
                {
                    PlayerPrefs.SetString(PlayerPrefs.GetString("CurrentRoleId") + "_" + "RoleIsInjury", "true"); //标记受伤提示
                }
            }
            db.CloseSqlConnection();
            if (injuryNum > 0)
            {
                UseProp(PropType.Bodyguard, injuryNum);
                Messenger.Broadcast(NotifyTypes.MakeUpdateProps);
            }
        }