From 5a4e34c8a85737c0fa5b5775122da31155cbaef3 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期一, 09 二月 2026 14:46:01 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.1.20:10010/r/Project_SG_scripts
---
Main/System/Main/AutoFightModel.cs | 389 +++++++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 349 insertions(+), 40 deletions(-)
diff --git a/Main/System/Main/AutoFightModel.cs b/Main/System/Main/AutoFightModel.cs
index 8e9a422..77415f9 100644
--- a/Main/System/Main/AutoFightModel.cs
+++ b/Main/System/Main/AutoFightModel.cs
@@ -1,13 +1,11 @@
锘縰sing System;
-using System.Collections;
using System.Collections.Generic;
-using System.Text;
using LitJson;
using UnityEngine;
public class AutoFightModel : GameSystemManager<AutoFightModel>
{
- //鎴樻枟鍊嶆暟锛氬�艰秺澶ц秺蹇紝褰卞搷鎴樻枟琛ㄧ幇锛屾帀钀介�熷害绛�
+ //鎴樻枟鍊嶆暟锛氬�艰秺澶ц秺蹇紝褰卞搷鎴樻枟琛ㄧ幇锛屾帀钀介�熷害绛夛紝杩欓噷鐨勫�嶆暟鏄储寮曪紝瀵瑰簲閰嶇疆閲岀殑瀹為檯閫熺巼
public int fightSpeed
{
get
@@ -17,7 +15,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 +36,24 @@
}
//鑷姩妯″紡, 鐪熸鐐瑰嚮鎴橀敜娑堣�楀紑鍚紝鍜屼紤鎭紙鎴栨棤鏉愭枡锛夊仠姝�
- public bool isAutoAttack = false;
+ public bool isPause = false; //濡傛墦BOSS鐨勬儏鍐碉紝鏆傚仠鑷姩鎴樻枟 鍚庣画鍙互琛ュ厖姣廥绉掓娴嬩笅鏄惁鏈夊紓甯�
+ public event Action AutoAttackEvent;
+ 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);
+ AutoAttackEvent?.Invoke();
+ }
+ }
//鏄惁寮�鍚嚜鍔ㄦ垬鏂楄缃�
public bool isAutoAttackSet
@@ -64,29 +81,157 @@
}
}
+ public bool isAutoChangeBetterEquip
+ {
+ get
+ {
+ return QuickSetting.Instance.GetQuickSettingBool(QuickSettingType.AutoFight_AutoChangeBetterEquip, 0);
+ }
+ set
+ {
+ QuickSetting.Instance.SetQuickSetting(QuickSettingType.AutoFight_AutoChangeBetterEquip, value);
+ }
+ }
+ public int startServerTime; // 寮�濮嬫椂鐨勬湇鍔″櫒鏃堕棿鎴�
+ bool m_HasAutoExchanged = false;
+ public bool hasAutoExchanged // 鏄惁宸茶嚜鍔ㄤ氦鎹㈣繃
+ {
+ get
+ {
+ return m_HasAutoExchanged;
+ }
+ set
+ {
+ if (m_HasAutoExchanged == value)
+ return;
+ m_HasAutoExchanged = value;
+ if (!value)
+ {
+ startServerTime = TimeUtility.AllSeconds;
+ }
+ }
+ }
+ bool m_IsAutoExchangeDecomposeOld = false;
+ public bool isAutoExchangeDecomposeOld //鏄惁鏇挎崲鍚庤嚜鍔ㄥ垎瑙e師瑁呭
+ {
+ get
+ {
+ return m_IsAutoExchangeDecomposeOld;
+ }
+ set
+ {
+ if (m_IsAutoExchangeDecomposeOld == value)
+ return;
+ m_IsAutoExchangeDecomposeOld = value;
+ if (value)
+ {
+ hasAutoExchanged = false;
+ }
+ }
+ }
+
+
+ //鑷姩鎸戞垬棣栭
+ public bool isAutoChallengeBoss
+ {
+ get
+ {
+ return QuickSetting.Instance.GetQuickSettingBool(QuickSettingType.AutoFight_ChallengeBoss, 0);
+ }
+ set
+ {
+ QuickSetting.Instance.SetQuickSetting(QuickSettingType.AutoFight_ChallengeBoss, value);
+ }
+ }
+
+ //褰撳墠鎴樿触浜唜娆★紱-1浠h〃鍋滄缁х画鎸戞垬
+ private int m_NowChallengeCount = 0;
+ public float lastChallengeTime = 0;
+ public int nowChallengeCount
+ {
+ get { return m_NowChallengeCount; }
+ set
+ {
+ m_NowChallengeCount = value;
+ lastChallengeTime = Time.time;
+ // Debug.Log($"褰撳墠鍦ㄤ富绾緽oss鎴樿触浜唟m_NowChallengeCount}娆�,涓婃鎴樿触鏃堕棿鏄瘂lastChallengeTime}");
+ if (m_NowChallengeCount >= tryChallengeCount)
+ {
+ m_NowChallengeCount = -1; //浠h〃鍋滄缁х画鎸戞垬BOSS, 浣嗕笉鏄仠姝㈡垬鏂�
+ isAutoChallengeBoss = false; //鍙栨秷鍕鹃�夎嚜鍔ㄦ寫鎴榖oss
+ }
+ }
+ }
+
+
+ //鑷姩鎸戞垬棣栭锛屾垬璐娆″仠姝�
+ public int tryChallengeCount
+ {
+ get
+ {
+ int value = QuickSetting.Instance.GetQuickSettingValue<int>(QuickSettingType.AutoFight_TryChallengeCount, 0);
+ return Math.Min(Math.Max(value, 1), maxTryChallengeCount);
+ }
+ set
+ {
+ QuickSetting.Instance.SetQuickSetting(QuickSettingType.AutoFight_TryChallengeCount, value);
+ }
+ }
+
+ //鑷姩瀹屾垚浠诲姟
+ public bool isAutoFinishTask
+ {
+ get
+ {
+ return QuickSetting.Instance.GetQuickSettingBool(QuickSettingType.AutoFight_AutoFinishTask, 0);
+ }
+ set
+ {
+ QuickSetting.Instance.SetQuickSetting(QuickSettingType.AutoFight_AutoFinishTask, value);
+ }
+ }
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 int openAutoChallengeBossCond;//鏁板��1锛氳嚜鍔ㄦ寫鎴橀棰嗚В閿佺殑鍏冲崱锛堥渶杩囧叧锛�
+ public int maxTryChallengeCount;//鏈�澶ф垬璐ユ鏁帮紙涓嬫媺鍒楄〃鐨勬渶澶у�硷級瑙i攣鏈堝崱鏈夋晥
+ public int maxTryChallengeCD; //鎵撲富绾縝oss鎴樿触鍚庯紝闂撮殧x绉掑悗閲嶈瘯
+ public int openAutoFinishCond;//鑷姩瀹屾垚浠诲姟闇�绁濈鏍慩绾�
+ public int autoCloseWinCD;
+ public int autoChangeBetterEquipWaitTimeS;//瑁呭瀵规瘮鐣岄潰鎵撳紑x绉掑悗锛屼负鐜╁鏇挎崲楂樻垬鍔涜澶�
+
public override void Init()
{
ParseConfig();
- DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent += OnPlayerLoginOk;
DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += BeforePlayerInit;
+ DTC0102_tagCDBPlayer.beforePlayerDataInitializeEventOnRelogin += OnBeforePlayerDataInitializeEventOnRelogin;
BattleManager.Instance.onBattleFieldCreate += OnCreateBattleField;
EventBroadcast.Instance.AddListener<string, SkillConfig, TeamHero>(EventName.BATTLE_CAST_SKILL, OnSkillCast);
+ BlessLVManager.Instance.OnBlessLVUpdateEvent += UpdateRedpint;
+ TaskManager.Instance.OnTaskUpdate += OnTaskUpdate;
+ InvestModel.Instance.onInvestUpdate += OnInvestUpdate;
+ GlobalTimeEvent.Instance.secondEvent += OnSecondEvent;
}
public override void Release()
{
- DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent -= OnPlayerLoginOk;
BattleManager.Instance.onBattleFieldCreate -= OnCreateBattleField;
DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= BeforePlayerInit;
+ DTC0102_tagCDBPlayer.beforePlayerDataInitializeEventOnRelogin -= OnBeforePlayerDataInitializeEventOnRelogin;
+ EventBroadcast.Instance.RemoveListener<string, SkillConfig, TeamHero>(EventName.BATTLE_CAST_SKILL, OnSkillCast);
+ BlessLVManager.Instance.OnBlessLVUpdateEvent -= UpdateRedpint;
+ TaskManager.Instance.OnTaskUpdate -= OnTaskUpdate;
+ InvestModel.Instance.onInvestUpdate -= OnInvestUpdate;
+ GlobalTimeEvent.Instance.secondEvent -= OnSecondEvent;
}
@@ -95,20 +240,112 @@
var config = FuncConfigConfig.Get("AutoGuaji");
autoCostWithBlessLV = JsonMapper.ToObject<int[]>(config.Numerical1);
speed2UnlockMissionID = int.Parse(config.Numerical2);
- speed3UnlockCTGID = int.Parse(config.Numerical3);
maxCost = autoCostWithBlessLV.Length;
+ autoCloseWinCD = int.Parse(config.Numerical3);
+ autoChangeBetterEquipWaitTimeS = int.Parse(config.Numerical5);
+ config = FuncConfigConfig.Get("AutoGuaji1");
+ openAutoChallengeBossCond = int.Parse(config.Numerical1);
+ maxTryChallengeCount = int.Parse(config.Numerical2);
+ maxTryChallengeCD = int.Parse(config.Numerical3);
+ openAutoFinishCond = int.Parse(config.Numerical4);
}
- void OnPlayerLoginOk()
- {
- //鐧诲綍鏃舵湁瑁呭鐨勫鐞�
- }
void BeforePlayerInit()
{
fightingHeroSkinID = 0;
heroGuid = "";
+ startServerTime = 0;
+ hasAutoExchanged = false;
}
+
+ private void OnBeforePlayerDataInitializeEventOnRelogin()
+ {
+ nowChallengeCount = 0;
+ isAutoExchangeDecomposeOld = true;
+ }
+
+ Dictionary<string, int> winWaitCloseDict = new Dictionary<string, int>();
+ void OnSecondEvent()
+ {
+ ProccessCloseWin();
+ }
+ void ProccessCloseWin()
+ {
+ if (!isAutoAttack)
+ return;
+ if (isAutoChallengeBoss)
+ {
+ if (UIManager.Instance.IsOpened<BattleVictoryWin>())
+ {
+ if (!winWaitCloseDict.ContainsKey("BattleVictoryWin"))
+ {
+ winWaitCloseDict["BattleVictoryWin"] = 0;
+ }
+
+ if (winWaitCloseDict["BattleVictoryWin"] == 0)
+ {
+ winWaitCloseDict["BattleVictoryWin"] = (int)Time.time;
+ }
+ else if (Time.time - winWaitCloseDict["BattleVictoryWin"] > AutoFightModel.Instance.autoCloseWinCD)
+ {
+ UIManager.Instance.CloseWindow<BattleVictoryWin>();
+ winWaitCloseDict["BattleVictoryWin"] = 0;
+ }
+ }
+
+ if (UIManager.Instance.IsOpened<BattleFailWin>())
+ {
+ if (!winWaitCloseDict.ContainsKey("BattleFailWin"))
+ {
+ winWaitCloseDict["BattleFailWin"] = 0;
+ }
+
+ if (winWaitCloseDict["BattleFailWin"] == 0)
+ {
+ winWaitCloseDict["BattleFailWin"] = (int)Time.time;
+ }
+ else if (Time.time - winWaitCloseDict["BattleFailWin"] > autoCloseWinCD)
+ {
+ UIManager.Instance.CloseWindow<BattleFailWin>();
+ winWaitCloseDict["BattleFailWin"] = 0;
+ }
+ }
+ }
+
+ if (isAutoFinishTask)
+ {
+ if (TaskManager.Instance.GetMainTaskState() == 2 && UIManager.Instance.IsOpened<HomeWin>()
+ && !UIManager.Instance.ExistAnyFullScreenOrMaskWin("") && !NewBieCenter.Instance.inGuiding)
+ {
+ //棰嗗彇浠诲姟濂栧姳
+ CA504_tagCMPlayerGetReward getReward = new CA504_tagCMPlayerGetReward();
+ getReward.RewardType = 66;
+ getReward.DataEx = (uint)TaskManager.Instance.mainTask.TaskID;
+ GameNetSystem.Instance.SendInfo(getReward);
+ return;
+ }
+
+ if (UIManager.Instance.IsOpened<CommonGetItemWin>() && ItemLogicUtility.Instance.getItemEventName == "Task")
+ {
+ if (!winWaitCloseDict.ContainsKey("CommonGetItemWin"))
+ {
+ winWaitCloseDict["CommonGetItemWin"] = 0;
+ }
+
+ if (winWaitCloseDict["CommonGetItemWin"] == 0)
+ {
+ winWaitCloseDict["CommonGetItemWin"] = (int)Time.time;
+ }
+ else if (Time.time - winWaitCloseDict["CommonGetItemWin"] > autoCloseWinCD)
+ {
+ UIManager.Instance.CloseWindow<CommonGetItemWin>();
+ winWaitCloseDict["CommonGetItemWin"] = 0;
+ }
+ }
+ }
+ }
+
public void SaveAutoFightSetting()
{
@@ -123,6 +360,7 @@
if (storyBattleField != null && storyBattleField.GetBattleMode() != BattleMode.Stop)
{
//鎴樻枟涓敼鍙樻ā寮�
+ isAutoAttack = isAutoAttackSet;
storyBattleField.AutoSetBattleMode();
}
@@ -142,7 +380,7 @@
long showFightPower = FightPowerManager.Instance.GetFightPowerChange(item);
- if (showFightPower < 0)
+ if (showFightPower <= 0)
{
EquipModel.Instance.SendEquipOP(new ushort[] { (ushort)item.gridIndex }, 1);
return true;
@@ -159,6 +397,7 @@
}
+
#region 涓荤嚎鎴樻枟锛堣嚜鍔ㄥ拰鎵嬪姩锛�
public void StartFight()
@@ -172,17 +411,15 @@
return;
}
- if (!ItemLogicUtility.CheckCurrencyCount(41, PlayerDatas.Instance.baseData.UseHarmerCount, 2))
+ if (!UIHelper.CheckMoneyCount(41, PlayerDatas.Instance.baseData.UseHarmerCount, 2))
{
if (storyBattleField.GetBattleMode() != BattleMode.Stop)
storyBattleField.HaveRest();
return;
}
- if (isAutoAttackSet)
- {
- isAutoAttack = true;
- }
+ BattleManager.Instance.storyBattleField.SetSpeedRatio(BattleManager.Instance.speedGear[fightSpeed - 1]);
+ isAutoAttack = isAutoAttackSet;
//鎵嬪姩浼氫竴鐩磋繘鍏ヨ繖涓�昏緫, 鑷姩瑙﹀彂涓�娆�
storyBattleField.AutoSetBattleMode();
@@ -225,13 +462,17 @@
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);
+ var hero = TeamManager.Instance.GetTeam(BattlePreSetType.Story).GetHeroByHeroID(teamHero.heroId);
if (hero != null)
{
heroGuid = hero.guid;
@@ -243,28 +484,96 @@
OnFightEvent?.Invoke(true);
}
- public bool CanChallengeBoss()
- {
- //鏈�鍚庝竴娉㈤�氳繃锛屼笖褰撳墠娉㈣繕鏄渶鍚庝竴娉紱鍊掗��鍙�掗��娉笉浼氬�掗��鍏冲崱
- if (PlayerDatas.Instance.baseData.ExAttr2 != PlayerDatas.Instance.baseData.ExAttr1)
- {
- return false;
- }
- var value = PlayerDatas.Instance.baseData.ExAttr2;
- var chapterID = value / 10000;
- var levelNum = value % 10000 / 100;
- var waveID = value % 100;
- var config = MainLevelConfig.GetMainLevelConfig(chapterID, levelNum);
- if (waveID < MainLevelConfig.GetwaveCount(config))
- {
- return false;
- }
-
- return true;
- }
#endregion
+ //鏂板娑堣�楀�嶆暟绾㈢偣
+ Redpoint redpoint1 = new Redpoint(MainRedDot.RedPoint_AutoBattleKey, MainRedDot.RedPoint_AutoBattleKey * 10 + 1);
+ //鏂板鎴樻枟鍊嶆暟绾㈢偣
+ Redpoint redpoint2 = new Redpoint(MainRedDot.RedPoint_AutoBattleKey, MainRedDot.RedPoint_AutoBattleKey * 10 + 2);
+ void UpdateRedpint()
+ {
+ //鎻愮ず绾㈢偣璁板綍鍒扮鍑犱釜绱㈠紩锛屾瘡娆¤В閿佹柊鐨勬秷鑰楃孩鐐归兘鎻愮ず
+ var costIndex = LocalSave.GetInt("redcost" + PlayerDatas.Instance.baseData.PlayerID);
+ if (costIndex + 1 < autoCostWithBlessLV.Length)
+ {
+ redpoint1.state = autoCostWithBlessLV[Math.Min(costIndex + 1, autoCostWithBlessLV.Length - 1)] <= BlessLVManager.Instance.m_TreeLV ?
+ RedPointState.Simple : RedPointState.None;
+ }
+ else
+ {
+ redpoint1.state = RedPointState.None;
+ }
+ var speedIndex = LocalSave.GetInt("redspeed" + PlayerDatas.Instance.baseData.PlayerID);
+ redpoint2.state = RedPointState.None;
+ if (speedIndex == 0 && TaskManager.Instance.mainTask.TaskID > speed2UnlockMissionID &&
+ !InvestModel.Instance.IsActiveFightSpeed(3))
+ {
+ redpoint2.state = RedPointState.Simple;
+ }
+ else if (speedIndex < 2 && InvestModel.Instance.IsActiveFightSpeed(3))
+ {
+ redpoint2.state = RedPointState.Simple;
+ }
+ }
+
+ public void ClickCostRed()
+ {
+ int index = 0;
+ for (int i = 0; i < autoCostWithBlessLV.Length; i++)
+ {
+ if (autoCostWithBlessLV[i] <= BlessLVManager.Instance.m_TreeLV)
+ {
+ index = i;
+ }
+ else
+ {
+ break;
+ }
+ }
+ LocalSave.SetInt("redcost" + PlayerDatas.Instance.baseData.PlayerID, index);
+ UpdateRedpint();
+ }
+
+ public void ClickSpeedRed()
+ {
+ int index = 0;
+ if (!InvestModel.Instance.IsActiveFightSpeed(3))
+ {
+ if (TaskManager.Instance.mainTask.TaskID > speed2UnlockMissionID)
+ {
+ index = 1;
+ }
+ }
+ else
+ {
+ index = 2;
+ }
+ LocalSave.SetInt("redspeed" + PlayerDatas.Instance.baseData.PlayerID, index);
+ UpdateRedpint();
+
+ }
+
+ void OnTaskUpdate()
+ {
+ //浠诲姟鍒锋柊姣旇緝棰戠箒
+ if (TaskManager.Instance.mainTask.TaskID < speed2UnlockMissionID)
+ {
+ return;
+ }
+ if (LocalSave.GetInt("redspeed" + PlayerDatas.Instance.baseData.PlayerID) > 0)
+ return;
+ if (redpoint2.state == RedPointState.Simple)
+ return;
+ UpdateRedpint();
+ }
+
+ void OnInvestUpdate(int type)
+ {
+ if (type > 2)
+ return;
+ UpdateRedpint();
+ }
}
--
Gitblit v1.8.0