| | |
| | | { |
| | | guid = _guid; |
| | | |
| | | #pragma warning disable CS0618 // Obsolete — sync legacy constructor, use CreateAsync for new code |
| | | GameObject go = ResManager.Instance.LoadAsset<GameObject>("Battle/Prefabs", "BattleRootNode"); |
| | | #pragma warning restore CS0618 |
| | | GameObject battleRootNodeGO = GameObject.Instantiate(go); |
| | | battleRootNode = battleRootNodeGO.GetComponent<BattleRootNode>(); |
| | | battleRootNodeGO.name = this.GetType().Name; |
| | | |
| | | battleObjMgr = new BattleObjMgr(); |
| | | battleEffectMgr = new BattleEffectMgr(); |
| | | battleTweenMgr = new BattleTweenMgr(); |
| | |
| | | /// <summary> |
| | | /// US2: Static async factory method. Creates BattleField with async resource loading. |
| | | /// </summary> |
| | | public static async UniTask<BattleField> CreateAsync(string _guid) |
| | | public async UniTask LoadRoot() |
| | | { |
| | | var field = new BattleField(_guid, skipResourceLoad: true); |
| | | GameObject go = await ResManager.Instance.LoadAssetAsync<GameObject>("Battle/Prefabs", "BattleRootNode"); |
| | | GameObject battleRootNodeGO = GameObject.Instantiate(go); |
| | | field.battleRootNode = battleRootNodeGO.GetComponent<BattleRootNode>(); |
| | | battleRootNodeGO.name = field.GetType().Name; |
| | | return field; |
| | | battleRootNode = battleRootNodeGO.GetComponent<BattleRootNode>(); |
| | | battleRootNodeGO.name = GetType().Name; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// US2: Protected constructor without resource loading (for async factory). |
| | | /// </summary> |
| | | protected BattleField(string _guid, bool skipResourceLoad) |
| | | { |
| | | guid = _guid; |
| | | battleObjMgr = new BattleObjMgr(); |
| | | battleEffectMgr = new BattleEffectMgr(); |
| | | battleTweenMgr = new BattleTweenMgr(); |
| | | recordPlayer = new RecordPlayer(); |
| | | soundManager = new BattleSoundManager(this); |
| | | processingDeathObjIds = new HashSet<uint>(); |
| | | } |
| | | |
| | | public void AddCastingSkill(long objID, SkillBase skill) |
| | | { |
| | | List<SkillBase> skillBases = null; |
| | |
| | | return castingSkillDict.ContainsKey(objID); |
| | | } |
| | | |
| | | public virtual void Init(int _MapID, int _FuncLineID, JsonData _extendData, |
| | | public async virtual UniTask Init(int _MapID, int _FuncLineID, JsonData _extendData, |
| | | List<TeamBase> _redTeamList, List<TeamBase> _blueTeamList, byte _turnMax) |
| | | { |
| | | SetData(_MapID, _FuncLineID, _extendData, _redTeamList, _blueTeamList, _turnMax); |
| | |
| | | |
| | | if (blueTeamList == null) |
| | | { |
| | | battleObjMgr.Init(this, redTeamList[redTeamIndex], null); |
| | | await battleObjMgr.Init(this, redTeamList[redTeamIndex], null); |
| | | HaveRest(); |
| | | } |
| | | else |
| | | { |
| | | battleObjMgr.Init(this, redTeamList[redTeamIndex], blueTeamList[blueTeamIndex]); |
| | | await battleObjMgr.Init(this, redTeamList[redTeamIndex], blueTeamList[blueTeamIndex]); |
| | | } |
| | | |
| | | LoadMap(MapID); |
| | | await LoadMap(MapID); |
| | | |
| | | SetBattleStartState(); |
| | | SetRootNodePosition(); |
| | |
| | | |
| | | } |
| | | |
| | | public virtual void Reload(int _MapID, int _FuncLineID, JsonData _extendData, |
| | | public async virtual UniTask Reload(int _MapID, int _FuncLineID, JsonData _extendData, |
| | | List<TeamBase> _redTeamList, List<TeamBase> _blueTeamList, byte _turnMax) |
| | | { |
| | | SetData(_MapID, _FuncLineID, _extendData, _redTeamList, _blueTeamList, _turnMax); |
| | |
| | | |
| | | if (blueTeamList == null) |
| | | { |
| | | battleObjMgr.Reload(this, redTeamList[redTeamIndex], null); |
| | | await battleObjMgr.Reload(this, redTeamList[redTeamIndex], null); |
| | | HaveRest(); |
| | | } |
| | | else |
| | | { |
| | | battleObjMgr.Reload(this, redTeamList[redTeamIndex], blueTeamList[blueTeamIndex]); |
| | | await battleObjMgr.Reload(this, redTeamList[redTeamIndex], blueTeamList[blueTeamIndex]); |
| | | } |
| | | |
| | | LoadMap(MapID); |
| | | await LoadMap(MapID); |
| | | |
| | | SetBattleStartState(); |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | protected virtual void LoadMap(int mapID) |
| | | { |
| | | BattleMapConfig battleMapConfig = BattleMapConfig.Get(mapID); |
| | | if (battleMapConfig != null) |
| | | { |
| | | #pragma warning disable CS0618 // Obsolete — sync legacy fallback, use LoadMapAsync |
| | | Texture texture = ResManager.Instance.LoadAsset<Texture>("Texture/FullScreenBg", battleMapConfig.MapBg); |
| | | #pragma warning restore CS0618 |
| | | battleRootNode.SetBackground(texture); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// US2: Async map loading. |
| | | /// </summary> |
| | | protected virtual async UniTask LoadMapAsync(int mapID) |
| | | protected virtual async UniTask LoadMap(int mapID) |
| | | { |
| | | BattleMapConfig battleMapConfig = BattleMapConfig.Get(mapID); |
| | | if (battleMapConfig != null) |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | public void SetSpeedRatio(float ratio) |
| | | { |
| | | bool isChange = speedRatio != ratio; |