From 2d49ec4f87de5fdedcac25a2bd45c97a0c332a04 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期二, 28 十月 2025 11:47:35 +0800
Subject: [PATCH] 0312 输出战斗日志,分析自动战斗不能攻击的问题
---
Main/System/Main/AutoFightModel.cs | 156 ++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 145 insertions(+), 11 deletions(-)
diff --git a/Main/System/Main/AutoFightModel.cs b/Main/System/Main/AutoFightModel.cs
index d39634f..7507453 100644
--- a/Main/System/Main/AutoFightModel.cs
+++ b/Main/System/Main/AutoFightModel.cs
@@ -7,7 +7,7 @@
using UnityEngine;
public class AutoFightModel : GameSystemManager<AutoFightModel>
{
- //鎴樻枟鍊嶆暟锛氬�艰秺澶ц秺蹇紝褰卞搷鎴樻枟琛ㄧ幇锛屾帀钀介�熷害绛�
+ //鎴樻枟鍊嶆暟锛氬�艰秺澶ц秺蹇紝褰卞搷鎴樻枟琛ㄧ幇锛屾帀钀介�熷害绛夛紝杩欓噷鐨勫�嶆暟鏄储寮曪紝瀵瑰簲閰嶇疆閲岀殑瀹為檯閫熺巼
public int fightSpeed
{
get
@@ -17,7 +17,9 @@
}
set
{
- QuickSetting.Instance.SetQuickSetting(QuickSettingType.AutoFight_Speed, value);
+ var num = Math.Max(1, value);
+ BattleManager.Instance.storyBattleField.SetSpeedRatio(BattleManager.Instance.speedGear[num - 1]);
+ QuickSetting.Instance.SetQuickSetting(QuickSettingType.AutoFight_Speed, num);
}
}
@@ -36,7 +38,22 @@
}
//鑷姩妯″紡, 鐪熸鐐瑰嚮鎴橀敜娑堣�楀紑鍚紝鍜屼紤鎭紙鎴栨棤鏉愭枡锛夊仠姝�
- public bool isAutoAttack = false;
+ public bool isPause = false; //濡傛墦BOSS鐨勬儏鍐碉紝鏆傚仠鑷姩鎴樻枟 鍚庣画鍙互琛ュ厖姣廥绉掓娴嬩笅鏄惁鏈夊紓甯�
+ bool m_IsAutoAttack = false;
+ public bool isAutoAttack
+ {
+ get
+ {
+ return m_IsAutoAttack;
+ }
+ set
+ {
+ if (m_IsAutoAttack == value)
+ return;
+ m_IsAutoAttack = value;
+ Debug.Log("isAutoAttack:" + m_IsAutoAttack);
+ }
+ }
//鏄惁寮�鍚嚜鍔ㄦ垬鏂楄缃�
public bool isAutoAttackSet
@@ -67,20 +84,28 @@
public event Action ChangeAutoEvent;
- public int maxSpeed = 3; //鏈�楂橀�熷害
+ public int maxSpeed = 3; //鏈�楂橀�熷害 绱㈠紩
public int maxCost; //鏈�楂樻秷鑰�
public int[] autoCostWithBlessLV; //鑷姩鎴樻枟娑堣�楀�嶆暟鍏宠仈绁濈绛夌骇
public int speed2UnlockMissionID;
public int speed3UnlockCTGID;
+
public override void Init()
{
ParseConfig();
- DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent += OnPlayerLoginOk;
+ DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += BeforePlayerInit;
+ BattleManager.Instance.onBattleFieldCreate += OnCreateBattleField;
+ EventBroadcast.Instance.RemoveListener<string, SkillConfig, TeamHero>(EventName.BATTLE_CAST_SKILL, OnSkillCast);
+ EventBroadcast.Instance.AddListener<string, SkillConfig, TeamHero>(EventName.BATTLE_CAST_SKILL, OnSkillCast);
+
}
public override void Release()
{
- DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent -= OnPlayerLoginOk;
+ BattleManager.Instance.onBattleFieldCreate -= OnCreateBattleField;
+ DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= BeforePlayerInit;
+ EventBroadcast.Instance.RemoveListener<string, SkillConfig, TeamHero>(EventName.BATTLE_CAST_SKILL, OnSkillCast);
+
}
void ParseConfig()
@@ -92,13 +117,30 @@
maxCost = autoCostWithBlessLV.Length;
}
- void OnPlayerLoginOk()
+
+ void BeforePlayerInit()
{
- //鐧诲綍鏃舵湁瑁呭鐨勫鐞�
+ fightingHeroSkinID = 0;
+ heroGuid = "";
}
public void SaveAutoFightSetting()
{
+ if (PlayerDatas.Instance.baseData.UseHarmerCount != fightCost)
+ {
+ PlayerDatas.Instance.baseData.UseHarmerCount = fightCost;
+ BattleManager.Instance.MainFightRequest(1, (uint)fightCost);
+ }
+
+ StoryBattleField storyBattleField = BattleManager.Instance.storyBattleField;
+
+ if (storyBattleField != null && storyBattleField.GetBattleMode() != BattleMode.Stop)
+ {
+ //鎴樻枟涓敼鍙樻ā寮�
+ isAutoAttack = isAutoAttackSet;
+ storyBattleField.AutoSetBattleMode();
+ }
+
QuickSetting.Instance.SendPackage();
ChangeAutoEvent?.Invoke();
}
@@ -109,7 +151,7 @@
{
if (!isAutoAttack)
return false;
-
+
if (item == null)
return true;
@@ -124,11 +166,103 @@
{
if (isStopFightByBetterEquip)
return false;
-
+
EquipModel.Instance.SendEquipOP(new ushort[] { (ushort)item.gridIndex }, 1);
return true;
}
-
+
}
+
+ #region 涓荤嚎鎴樻枟锛堣嚜鍔ㄥ拰鎵嬪姩锛�
+
+ public void StartFight()
+ {
+ if (isAutoAttack)
+ return;
+
+ StoryBattleField storyBattleField = BattleManager.Instance.storyBattleField;
+ if (storyBattleField == null)
+ {
+ return;
+ }
+
+ if (!UIHelper.CheckMoneyCount(41, PlayerDatas.Instance.baseData.UseHarmerCount, 2))
+ {
+ if (storyBattleField.GetBattleMode() != BattleMode.Stop)
+ storyBattleField.HaveRest();
+ return;
+ }
+
+ BattleManager.Instance.storyBattleField.SetSpeedRatio(BattleManager.Instance.speedGear[fightSpeed - 1]);
+ isAutoAttack = isAutoAttackSet;
+
+ //鎵嬪姩浼氫竴鐩磋繘鍏ヨ繖涓�昏緫, 鑷姩瑙﹀彂涓�娆�
+ storyBattleField.AutoSetBattleMode();
+ storyBattleField.operationAgent.DoNext();
+ }
+
+ void OnCreateBattleField(string guid, BattleField battleField)
+ {
+ if (string.IsNullOrEmpty(guid) && BattleManager.Instance.storyBattleField != null)
+ {
+ BattleManager.Instance.storyBattleField.ChangeBattleModeEvent -= ChangeBattleModeEvent;
+ BattleManager.Instance.storyBattleField.ChangeBattleModeEvent += ChangeBattleModeEvent;
+ }
+
+ }
+
+
+ void ChangeBattleModeEvent(BattleMode _battleMode)
+ {
+ if (_battleMode == BattleMode.Stop)
+ {
+ isAutoAttack = false;
+ }
+ OnFightEvent?.Invoke(false);
+ }
+
+ public int fightingHeroSkinID; //褰撳墠鎴樻枟鐨勮嫳闆勭毊鑲D
+ public string heroGuid; //鎴樻枟涓殑姝﹀皢
+ public event Action<bool> OnFightEvent; //鎴樻枟妯″紡鍙樻洿閫氱煡 鎴樻枟閲婃斁鎶�鑳介�氱煡
+
+
+ /// <summary>
+ /// 鎶�鑳介噴鏀� 閫氱煡UI澶勭悊
+ /// </summary>
+ /// <param name="guid">绌轰负涓荤嚎</param>
+ /// <param name="skillConfig">鐢ㄤ簬鎬掓皵绛夋樉绀�</param>
+ /// <param name="teamHero">鎴樻枟涓殑姝﹀皢</param>
+ void OnSkillCast(string guid, SkillConfig skillConfig, TeamHero teamHero)
+ {
+ if (!string.IsNullOrEmpty(guid))
+ return;
+
+ //闃茶寖鍥炴敹鎶ラ敊
+ if (teamHero == null)
+ return;
+
+ //鍙�氱煡鐜╁姝﹀皢鐨勬垬鏂�
+ if (teamHero.NPCID != 0)
+ return;
+
+ fightingHeroSkinID = teamHero.SkinID;
+ //鎴樻枟鏃舵病鏈塆UID 锛岄�氳繃heroid鏌ユ壘
+ var hero = TeamManager.Instance.GetTeam(TeamType.Story).GetHeroByHeroID(teamHero.heroId);
+ if (hero != null)
+ {
+ heroGuid = hero.guid;
+ }
+ else
+ {
+ heroGuid = "";
+ }
+ OnFightEvent?.Invoke(true);
+ }
+
+
+
+ #endregion
+
+
}
--
Gitblit v1.8.0