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> /// Battles the notify init. /// </summary> public static void BattleNotifyInit() { Messenger.AddListener <string>(NotifyTypes.CreateBattle, (fightId) => { if (BattleFightPanelCtrl.Ctrl != null) { Statics.CreatePopMsg(Vector3.zero, "已在战斗中", Color.white, 30); return; } //获取队伍角色列表 // RoleData currentRoleData = RoleInfoPanelCtrl.GetCurrentRoleData(); RoleData currentRoleData = DbManager.Instance.GetHostRoleData(); if (currentRoleData == null) { return; } currentRoleData.MakeJsonToModel(); if (currentRoleData.Injury == InjuryType.Moribund) { AlertCtrl.Show("你已奄奄一息无法再战!", () => { Messenger.Broadcast(NotifyTypes.BackToCity); }); return; } //获取战斗数据 // FightData fightData = new FightData(); // fightData.Id = fightId; // fightData.Type = FightType.Normal; // RoleData enemy0 = new RoleData(); // enemy0.Id = "enemy0"; // enemy0.Name = "赏金刺客"; // enemy0.HalfBodyId = "enemy000001"; // BookData book0 = new BookData(); // book0.Id = "book20001"; // book0.Name = "地痞撒泼"; // book0.IconId = "200000"; // SkillData skill0 = new SkillData(); // skill0.Type = SkillType.MagicAttack; // skill0.Name = "背负投"; // BuffData buff0 = new BuffData(); // buff0.Type = BuffType.Vertigo; //// buff0.Value = 8888; //// buff0.FirstEffect = true; // buff0.RoundNumber = 3; // buff0.Rate = 30; // buff0.FirstEffect = true; // skill0.DeBuffDatas.Add(buff0); // SkillData skill1 = new SkillData(); // skill1.Type = SkillType.PhysicsAttack; // skill1.Name = "抱摔"; // SkillData skill2 = new SkillData(); // skill2.Type = SkillType.PhysicsAttack; // skill2.Name = "撕咬"; // book0.Skills.Add(skill0); // book0.Skills.Add(skill1); // book0.Skills.Add(skill2); // enemy0.Books.Add(book0); // enemy0.AttackSpeed = 2; // enemy0.HP = 10000; // enemy0.MaxHP = 10000; // WeaponData weapon5 = new WeaponData(); // weapon5.Id = "weapon5"; // weapon5.Id = "阔刃刀"; // weapon5.Width = 360; // weapon5.Rates = new float[] { 1, 0.6f, 0.2f, 0.1f }; // enemy0.Weapon = weapon5; // fightData.Enemys = new List<RoleData>() { // enemy0 // }; // List<RoleData> teams = RoleInfoPanelCtrl.GetRoleDatas(); List <RoleData> teams = DbManager.Instance.GetRolesInTeam(); List <List <SecretData> > secrets = new List <List <SecretData> >(); for (int i = 0, len = teams.Count; i < len; i++) { if (teams[i].IsHost) { WeaponLVData weaponLvData = DbManager.Instance.GetWeaponLV(teams[i].ResourceWeaponDataId); teams[i].CurrentWeaponLV = weaponLvData.LV; } teams[i].MakeJsonToModel(); secrets.Add(DbManager.Instance.GetSecretsBelongBooks(teams[i].ResourceBookDataIds)); } FightData fightData = JsonManager.GetInstance().GetMapping <FightData>("Fights", fightId); fightData.MakeJsonToModel(); Messenger.Broadcast(NotifyTypes.HideRoleInfoPanel); SoundManager.GetInstance().PauseBGM(); SoundManager.GetInstance().PushSound("ui0003"); Messenger.Broadcast <System.Action, System.Action>(NotifyTypes.PlayCameraVortex, () => { // BattleMainPanelCtrl.Show(currentRoleData, fightData); List <ItemData> drugs = new List <ItemData>(); // drugs.Add(JsonManager.GetInstance().GetMapping<ItemData>("ItemDatas", "100001")); // drugs.Add(JsonManager.GetInstance().GetMapping<ItemData>("ItemDatas", "100002")); // drugs.Add(JsonManager.GetInstance().GetMapping<ItemData>("ItemDatas", "100003")); List <ItemData> allVulnerary = DbManager.Instance.GetItems(ItemType.Drug); for (int i = 0; i < 3; i++) { if (allVulnerary.Count > i) { drugs.Add(allVulnerary[i]); } else { break; } } //处理通天塔量子强度影响的敌人成长率 if (UserModel.CurrentUserData.CurrentAreaSceneName == "Area31") { int difficulty = PlayerPrefs.GetInt("TowerDifficulty"); float growUp; switch (difficulty) { case 0: default: growUp = 1; break; case 1: growUp = 2; break; case 2: growUp = 4; break; } for (int i = 0, len = fightData.Enemys.Count; i < len; i++) { fightData.Enemys[i].SetGrowUp(growUp); } } BattleFightPanelCtrl.Show(fightData, teams, secrets, fightData.Enemys, drugs, DbManager.Instance.GetProp(PropType.LimePowder)); PlayerPrefs.SetString("BattleIsGoingOn_FightFlag_For_" + DbManager.Instance.HostData.Id, fightId); }, () => { // Messenger.Broadcast<bool>(NotifyTypes.CallRoleInfoPanelData, true); }); }); Messenger.AddListener <List <RoleData>, string>(NotifyTypes.CreateTestBattle, (roles, fightId) => { // List<List<SecretData>> secrets = new List<List<SecretData>>(); // for (int i = 0, len = roles.Count; i < len; i++) { // secrets.Add(DbManager.Instance.GetSecretsBelongBooks(roles[i].ResourceBookDataIds)); // } TextAsset asset = Resources.Load <TextAsset>("Data/Json/TestSecrets"); List <List <SecretData> > secrets = PlayerPrefs.GetString("FightEditorUseSecret") == "true" ? JsonManager.GetInstance().DeserializeObject <List <List <SecretData> > >(asset.text) : new List <List <SecretData> >(); FightData fightData = JsonManager.GetInstance().GetMapping <FightData>("Fights", fightId); fightData.MakeJsonToModel(); // BattleMainPanelCtrl.Show(currentRoleData, fightData); List <ItemData> drugs = new List <ItemData>(); drugs.Add(JsonManager.GetInstance().GetMapping <ItemData>("ItemDatas", "100001")); drugs.Add(JsonManager.GetInstance().GetMapping <ItemData>("ItemDatas", "100002")); drugs.Add(JsonManager.GetInstance().GetMapping <ItemData>("ItemDatas", "100003")); for (int i = 0, len = fightData.Enemys.Count; i < len; i++) { fightData.Enemys[i].SetGrowUp(PlayerPrefs.GetFloat("FightEditorTestGroupUp")); } BattleFightPanelCtrl.Show(fightData, roles, secrets, fightData.Enemys, drugs, DbManager.Instance.GetProp(PropType.LimePowder)); }); Messenger.AddListener <bool, List <DropData>, FightData>(NotifyTypes.EndBattle, (win, drops, fightData) => { if (!win) { MaiHandler.SendEvent("FightFail", DbManager.Instance.HostData.Lv.ToString(), fightData.Id); } // Messenger.Broadcast(NotifyTypes.HideRoleInfoPanel); Messenger.Broadcast <System.Action, System.Action>(NotifyTypes.PlayCameraVortex, () => { //如果普通战斗失败则回之前到过的城镇去疗伤 if (fightData.Type == FightType.Normal && !win) { AlertCtrl.Show("江湖凶险, 稍事休息后再出发!", () => { Messenger.Broadcast(NotifyTypes.BackToCity); PlayerPrefs.SetString("BattleIsGoingOn_FightFlag_For_" + DbManager.Instance.HostData.Id, ""); }); } else { PlayerPrefs.SetString("BattleIsGoingOn_FightFlag_For_" + DbManager.Instance.HostData.Id, ""); } // BattleMainPanelCtrl.Hide(); BattleFightPanelCtrl.Hide(); }, () => { //任务详情界面打开时不呼出角色信息板 if (TaskDetailInfoPanelCtrl.Ctrl == null) { Messenger.Broadcast <bool>(NotifyTypes.CallRoleInfoPanelData, false); } Messenger.Broadcast(NotifyTypes.PlayBgm); if (drops.Count > 0) { Messenger.Broadcast <List <DropData> >(NotifyTypes.ShowDropsListPanel, drops); } if (fightData.Type == FightType.Task) { Messenger.Broadcast(NotifyTypes.ReloadTaslDetailInfoData); if (win) { Messenger.Broadcast <string>(NotifyTypes.MakeFightWinedBtnDisable, fightData.Id); } } }); }); Messenger.AddListener <RoleData>(NotifyTypes.ChangeCurrentTeamRoleInBattle, (roleData) => { BattleMainPanelCtrl.ChangeCurrentTeamRole(roleData); }); Messenger.AddListener <int>(NotifyTypes.ChangeCurrentTeamBookInBattle, (index) => { BattleMainPanelCtrl.ChangeCurrentTeamBook(index); }); Messenger.AddListener <JArray, List <BookData> >(NotifyTypes.SendFightResult, (data, books) => { DbManager.Instance.SendFightResult((bool)data[0], data[1].ToString(), (int)data[2], (int)data[5], books, (float)data[6]); JArray usedSkillIdData = (JArray)data[3]; JArray d; for (int i = 0; i < usedSkillIdData.Count; i++) { d = (JArray)usedSkillIdData[i]; DbManager.Instance.UpdateUsedTheSkillRecords(d[0].ToString(), (int)d[1]); } JArray plusIndexData = (JArray)data[4]; for (int i = 0; i < plusIndexData.Count; i++) { d = (JArray)plusIndexData[i]; DbManager.Instance.UpdateWeaponPowerPlusSuccessedRecords((int)d[0], (int)d[1]); } }); Messenger.AddListener <bool, List <DropData>, FightData>(NotifyTypes.SendFightResultEcho, (win, drops, fightData) => { //加载动态事件列表 Messenger.Broadcast <string>(NotifyTypes.GetActiveEventsInArea, UserModel.CurrentUserData.CurrentAreaSceneName); Messenger.Broadcast <bool, List <DropData>, FightData>(NotifyTypes.EndBattle, win, drops, fightData); }); Messenger.AddListener(NotifyTypes.BackToCity, () => { string eventId = JsonManager.GetInstance().GetMapping <string>("AreaCityPosDatas", UserModel.CurrentUserData.CurrentCitySceneId); string[] fen = eventId.Split(new char[] { '_' }); if (fen.Length >= 3) { string areaName = fen[0]; int x = int.Parse(fen[1]); int y = int.Parse(fen[2]); if (UserModel.CurrentUserData != null) { UserModel.CurrentUserData.PositionStatu = UserPositionStatusType.InCity; UserModel.CurrentUserData.CurrentAreaSceneName = areaName; UserModel.CurrentUserData.CurrentAreaX = x; UserModel.CurrentUserData.CurrentAreaY = y; Messenger.Broadcast <System.Action <UserData> >(NotifyTypes.UpdateUserData, null); Messenger.Broadcast <string>(NotifyTypes.GoToScene, areaName); } } }); Messenger.AddListener(NotifyTypes.BattleFaild, () => { BattleMainPanelCtrl.MakeFaild(); }); Messenger.AddListener <string>(NotifyTypes.MakePopRole, (dieRoleId) => { RoleInfoPanelCtrl.MakePopRole(dieRoleId); }); }