/// <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); }
/// <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(); }
public void UpdateData(PropData data) { propData = data; }
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(); }
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; }
/// <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); } }