From feb87eb44412bd0fa05ac1bc0c6b8ed38c6be2dd Mon Sep 17 00:00:00 2001 From: daixiawu Date: Wed, 16 Jul 2025 15:41:43 +0800 Subject: [PATCH] =?UTF-8?q?MapData=E6=94=B9=E4=B8=BAstatic?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- My project/Assets/Scripts/Data/GridData.cs | 2 +- .../Scripts/Logic/Action/ActionLogic.cs | 14 +-- .../Logic/Editor/AIConfigEditowWindow.cs | 18 ++-- .../Assets/Scripts/Logic/Input/InputLogic.cs | 14 +-- .../Assets/Scripts/Logic/Main/GameLogic.cs | 78 +++++++-------- My project/Assets/Scripts/Logic/Main/Main.cs | 2 +- .../Scripts/Logic/Map/MapInteraction.cs | 14 +-- .../Assets/Scripts/TH1Renderer/MapRenderer.cs | 94 +++++++++---------- My project/Assets/Scripts/UI/BottomInfoUI.cs | 46 ++++----- My project/Assets/Scripts/UI/TechTreeUI.cs | 18 ++-- My project/Assets/Scripts/UI/TopBarUI.cs | 8 +- 11 files changed, 154 insertions(+), 154 deletions(-) diff --git a/My project/Assets/Scripts/Data/GridData.cs b/My project/Assets/Scripts/Data/GridData.cs index 439839c8e..971a43e62 100644 --- a/My project/Assets/Scripts/Data/GridData.cs +++ b/My project/Assets/Scripts/Data/GridData.cs @@ -452,7 +452,7 @@ namespace RuntimeData { var main = GameObject.Find("Main").GetComponent
(); //如果既是非AI的真实mapdata,又是玩家的各自 - if (main.MapData == map && player.Id == map.PlayerMap.SelfPlayerId) + if (Main.MapData == map && player.Id == map.PlayerMap.SelfPlayerId) { var faithPanel = GameObject.Find("UICanvas/TopBarPanel/FaithPanel/Icon").transform; var startPos = Table.Instance.GridToWorld(this); diff --git a/My project/Assets/Scripts/Logic/Action/ActionLogic.cs b/My project/Assets/Scripts/Logic/Action/ActionLogic.cs index 3ed303e01..e9312b9fa 100644 --- a/My project/Assets/Scripts/Logic/Action/ActionLogic.cs +++ b/My project/Assets/Scripts/Logic/Action/ActionLogic.cs @@ -682,7 +682,7 @@ namespace Logic.Action //临时做法,用来播放VFX,获取Main,理应向MapData写入一个VFX的RenderMark的 var main = GameObject.Find("Main").GetComponent
(); - if (actionParams.MapData == main.MapData && actionParams.PlayerData.Id == actionParams.MapData.PlayerMap.SelfPlayerData.Id) + if (actionParams.MapData == Main.MapData && actionParams.PlayerData.Id == actionParams.MapData.PlayerMap.SelfPlayerData.Id) { var v1 = Table.Instance.GridToWorld(actionParams.GridData); actionParams.MapData.GetGridDataByCityId(city.Id, out var g2); @@ -794,7 +794,7 @@ namespace Logic.Action //如果是玩家,执行一整套播放动画的逻辑 //临时做法,用来播放VFX,获取Main,理应向MapData写入一个VFX的RenderMark的 var main = GameObject.Find("Main").GetComponent
(); - if (main.MapData == actionParams.MapData && actionParams.PlayerData.Id == actionParams.MapData.PlayerMap.SelfPlayerData.Id) + if (Main.MapData == actionParams.MapData && actionParams.PlayerData.Id == actionParams.MapData.PlayerMap.SelfPlayerData.Id) { var v1 = Table.Instance.GridToWorld(actionParams.GridData); actionParams.MapData.GetGridDataByCityId(cityData.Id, out var g2); @@ -995,7 +995,7 @@ namespace Logic.Action //如果是玩家,执行一整套播放动画的逻辑 //临时做法,用来播放VFX,获取Main,理应向MapData写入一个VFX的RenderMark的 var main = GameObject.Find("Main").GetComponent
(); - if (main.MapData == actionParams.MapData && actionParams.PlayerData.Id == actionParams.MapData.PlayerMap.SelfPlayerData.Id) + if (Main.MapData == actionParams.MapData && actionParams.PlayerData.Id == actionParams.MapData.PlayerMap.SelfPlayerData.Id) //目前只有市场这种情况,只播放建筑建设的雾效,其他啥都不播放 if (cityExp == 0) { @@ -1428,7 +1428,7 @@ namespace Logic.Action //临时做法,用来播放VFX,获取Main,理应向MapData写入一个VFX的RenderMark的 var main = GameObject.Find("Main").GetComponent
(); - if (main.MapData == actionParams.MapData)// && actionParams.PlayerData.Id == actionParams.MapData.PlayerMap.SelfPlayerData.Id) + if (Main.MapData == actionParams.MapData)// && actionParams.PlayerData.Id == actionParams.MapData.PlayerMap.SelfPlayerData.Id) { var v1 = Table.Instance.GridToWorld(gridData); int score = GetCost() * 5; @@ -1887,7 +1887,7 @@ namespace Logic.Action //临时做法,用来播放VFX,获取Main,理应向MapData写入一个VFX的RenderMark的 var main = GameObject.Find("Main").GetComponent
(); - if (actionParams.MapData == main.MapData) + if (actionParams.MapData == Main.MapData) { var v1 = Table.Instance.GridToWorld(gridData); @@ -1936,7 +1936,7 @@ namespace Logic.Action gridData.RenderMark = true; ret = true; var main = GameObject.Find("Main").GetComponent
(); - if (actionParams.MapData == main.MapData && actionParams.MapData.PlayerMap.SelfPlayerId == playerData.Id) + if (actionParams.MapData == Main.MapData && actionParams.MapData.PlayerMap.SelfPlayerId == playerData.Id) { var v1 = Table.Instance.GridToWorld(gridData); @@ -1961,7 +1961,7 @@ namespace Logic.Action //临时做法,用来播放VFX,获取Main,理应向MapData写入一个VFX的RenderMark的 var main = GameObject.Find("Main").GetComponent
(); - if (actionParams.MapData == main.MapData && actionParams.MapData.PlayerMap.SelfPlayerId == playerData.Id) + if (actionParams.MapData == Main.MapData && actionParams.MapData.PlayerMap.SelfPlayerId == playerData.Id) { var v1 = Table.Instance.GridToWorld(gridData); diff --git a/My project/Assets/Scripts/Logic/Editor/AIConfigEditowWindow.cs b/My project/Assets/Scripts/Logic/Editor/AIConfigEditowWindow.cs index 9e19fcfbc..1c59eb5d1 100644 --- a/My project/Assets/Scripts/Logic/Editor/AIConfigEditowWindow.cs +++ b/My project/Assets/Scripts/Logic/Editor/AIConfigEditowWindow.cs @@ -89,19 +89,19 @@ namespace Logic.Editor _main = obj.GetComponent
(); if (!_main) return; } - if (_main?.MapData == null) return; + if (Main.MapData == null) return; EditorGUILayout.BeginHorizontal(); - foreach (var player in _main.MapData.PlayerMap.PlayerDataList) + foreach (var player in Main.MapData.PlayerMap.PlayerDataList) { - if (player.Id == _main.MapData.PlayerMap.SelfPlayerId) continue; + if (player.Id == Main.MapData.PlayerMap.SelfPlayerId) continue; if (InspectorUtils.InspectorButtonWithTextWidth($"玩家{player.Id}")) _player = player; } EditorGUILayout.EndHorizontal(); var selfCity = new HashSet(); - _main.MapData.GetCityDataListByPlayerId(_main.MapData.PlayerMap.SelfPlayerId, selfCity); + Main.MapData.GetCityDataListByPlayerId(Main.MapData.PlayerMap.SelfPlayerId, selfCity); EditorGUILayout.BeginHorizontal(); - foreach (var city in _main.MapData.CityMap.CityList) + foreach (var city in Main.MapData.CityMap.CityList) { if (selfCity.Contains(city)) continue; if (InspectorUtils.InspectorButtonWithTextWidth($"城市{city.Id}")) _city = city; @@ -111,7 +111,7 @@ namespace Logic.Editor private void OnShowPlayerInfo() { - if (_main?.MapData == null || _player == null) return; + if (Main.MapData == null || _player == null) return; MainEditor.Instance.GetPlayerStrategy(_player.Id, out var playerStrategy, out var targetIdSet); EditorGUILayout.BeginHorizontal(); @@ -129,7 +129,7 @@ namespace Logic.Editor EditorGUILayout.BeginVertical(_redBoxStyle); InspectorUtils.InspectorTextWidthRich($"城市信息"); var selfCity = new HashSet(); - _main.MapData.GetCityDataListByPlayerId(_player.Id, selfCity); + Main.MapData.GetCityDataListByPlayerId(_player.Id, selfCity); foreach (var city in selfCity) { MainEditor.Instance.GetCityStrategy(city.Id, out var strategy); @@ -144,7 +144,7 @@ namespace Logic.Editor EditorGUILayout.BeginVertical(_redBoxStyle); InspectorUtils.InspectorTextWidthRich($"小兵信息"); var selfUnits = new HashSet(); - _main.MapData.GetUnitDataListByPlayerId(_player.Id, selfUnits); + Main.MapData.GetUnitDataListByPlayerId(_player.Id, selfUnits); foreach (var unit in selfUnits) { MainEditor.Instance.GetUnitStrategy(unit.Id, unit.LegionId, _player.Id, out var strategy, out var target, out var type); @@ -158,7 +158,7 @@ namespace Logic.Editor private void OnShowCityInfo() { - if (_main?.MapData == null || _city == null) return; + if (Main.MapData == null || _city == null) return; var actions = MainEditor.Instance.GetCityActions(_city.Id); if (actions == null || actions.Count == 0) return; diff --git a/My project/Assets/Scripts/Logic/Input/InputLogic.cs b/My project/Assets/Scripts/Logic/Input/InputLogic.cs index fb749bfe1..f3026e2be 100644 --- a/My project/Assets/Scripts/Logic/Input/InputLogic.cs +++ b/My project/Assets/Scripts/Logic/Input/InputLogic.cs @@ -142,13 +142,13 @@ namespace Logic return; Vector3 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition); Vector2Int cellPosition = Table.Instance.WorldToGrid(mousePosition); - if (cellPosition.x >= _main.MapData.MapConfig.Width || cellPosition.x < 0 || cellPosition.y < 0 || - cellPosition.y >= _main.MapData.MapConfig.Height) + if (cellPosition.x >= Main.MapData.MapConfig.Width || cellPosition.x < 0 || cellPosition.y < 0 || + cellPosition.y >= Main.MapData.MapConfig.Height) return; // 获取点击的地块类型 - _main.MapData.GridMap.GetGridDataByPos(cellPosition.x, cellPosition.y, out var clickedTerrain); + Main.MapData.GridMap.GetGridDataByPos(cellPosition.x, cellPosition.y, out var clickedTerrain); // 根据点击的地形类型执行某些操作(例如,显示消息) - _main.MapInteractionLogic.OnTileClicked(_main.MapData,clickedTerrain); + _main.MapInteractionLogic.OnTileClicked(Main.MapData,clickedTerrain); } if (Input.GetKeyDown(KeyCode.S)) @@ -158,16 +158,16 @@ namespace Logic if (Input.GetKeyDown(KeyCode.BackQuote)) { - _main.MapData.PlayerMap.SelfPlayerData.PlayerWealth += 1000; + Main.MapData.PlayerMap.SelfPlayerData.PlayerWealth += 1000; } if (Input.GetKeyDown(KeyCode.T)) { if (Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift)) { - _main.MapData.PlayerMap.SelfPlayerData.PlayerWealth += 1000; + Main.MapData.PlayerMap.SelfPlayerData.PlayerWealth += 1000; foreach (TechType techType in System.Enum.GetValues(typeof(TechType))) - Main.PlayerLogic.ResearchTech(_main.MapData, _main.MapData.PlayerMap.SelfPlayerData,techType,0); + Main.PlayerLogic.ResearchTech(Main.MapData, Main.MapData.PlayerMap.SelfPlayerData,techType,0); UIManager.Instance.TechTreeUI.TechTreeUIDataRenderMark = true; } else diff --git a/My project/Assets/Scripts/Logic/Main/GameLogic.cs b/My project/Assets/Scripts/Logic/Main/GameLogic.cs index fc072b748..639ac394e 100644 --- a/My project/Assets/Scripts/Logic/Main/GameLogic.cs +++ b/My project/Assets/Scripts/Logic/Main/GameLogic.cs @@ -53,7 +53,7 @@ namespace Logic public void Update() { _gameStateDict[_curState].Update(); - Main.PlayerLogic.CalcAllPlayerScore(_main.MapData); + Main.PlayerLogic.CalcAllPlayerScore(Main.MapData); } @@ -102,17 +102,17 @@ namespace Logic public override void Enter() { - _curPlayer = _gameLogic.Main.MapData.PlayerMap.SelfPlayerData; + _curPlayer = Main.MapData.PlayerMap.SelfPlayerData; Turn++; - foreach(var playerData in _gameLogic.Main.MapData.PlayerMap.PlayerDataList) - Main.PlayerLogic.StartNextTurn(_gameLogic.Main.MapData, playerData); - foreach (var unitData in _gameLogic.Main.MapData.UnitMap.UnitList) - Main.UnitLogic.StartNextTurn(_gameLogic.Main.MapData, unitData); + foreach(var playerData in Main.MapData.PlayerMap.PlayerDataList) + Main.PlayerLogic.StartNextTurn(Main.MapData, playerData); + foreach (var unitData in Main.MapData.UnitMap.UnitList) + Main.UnitLogic.StartNextTurn(Main.MapData, unitData); - _gameLogic.Main.MapData.PlayerMap.OnTurnStart(_gameLogic.Main.MapData, _curPlayer); - _gameLogic.Main.MapData.CityMap.OnTurnStart(_gameLogic.Main.MapData, _curPlayer); - _gameLogic.Main.MapData.UnitMap.OnTurnStart(_gameLogic.Main.MapData, _curPlayer); - _gameLogic.Main.MapData.GridMap.OnTurnStart(_gameLogic.Main.MapData); + Main.MapData.PlayerMap.OnTurnStart(Main.MapData, _curPlayer); + Main.MapData.CityMap.OnTurnStart(Main.MapData, _curPlayer); + Main.MapData.UnitMap.OnTurnStart(Main.MapData, _curPlayer); + Main.MapData.GridMap.OnTurnStart(Main.MapData); AudioManager.Instance.InGameOnTurnStart(); @@ -124,8 +124,8 @@ namespace Logic //gameLogic.EndTurn(); //uiManager.EndTurn(); PlayerPrefs.SetInt("Archive", 1); - MapData.SaveMapData(_gameLogic.Main.MapData); - AchievementDataManager.Instance.OnTurnStart(_gameLogic.Main.MapData, _curPlayer); + MapData.SaveMapData(Main.MapData); + AchievementDataManager.Instance.OnTurnStart(Main.MapData, _curPlayer); #if GAME_AUTO_DEBUG _aiLogic = new AILogic(); @@ -139,18 +139,18 @@ namespace Logic _gameLogic.Main.InputLogic.LockInput(); // TODO endturn逻辑要重新梳理 - Main.PlayerLogic.EndThisTurn(_gameLogic.Main.MapData, _gameLogic.Main.MapData.PlayerMap.SelfPlayerData); + Main.PlayerLogic.EndThisTurn(Main.MapData, Main.MapData.PlayerMap.SelfPlayerData); //处理当前每一个unit的回合结束前自动行为。每一个选手回合结束自动回血是在这个阶段出发的 - foreach (var unitData in _gameLogic.Main.MapData.UnitMap.UnitList) - if(_gameLogic.Main.MapData.GetPlayerDataByUnitId(unitData.Id,out var player) + foreach (var unitData in Main.MapData.UnitMap.UnitList) + if(Main.MapData.GetPlayerDataByUnitId(unitData.Id,out var player) && player.Id == _curPlayer.Id) - Main.UnitLogic.UnitEndTurn(_gameLogic.Main.MapData, unitData); + Main.UnitLogic.UnitEndTurn(Main.MapData, unitData); - _gameLogic.Main.MapData.PlayerMap.OnTurnEnd(_gameLogic.Main.MapData, _curPlayer); - _gameLogic.Main.MapData.CityMap.OnTurnEnd(_gameLogic.Main.MapData, _curPlayer); - _gameLogic.Main.MapData.UnitMap.OnTurnEnd(_gameLogic.Main.MapData, _curPlayer); - _gameLogic.Main.MapData.GridMap.OnTurnEnd(_gameLogic.Main.MapData); + Main.MapData.PlayerMap.OnTurnEnd(Main.MapData, _curPlayer); + Main.MapData.CityMap.OnTurnEnd(Main.MapData, _curPlayer); + Main.MapData.UnitMap.OnTurnEnd(Main.MapData, _curPlayer); + Main.MapData.GridMap.OnTurnEnd(Main.MapData); } public override void Update() @@ -165,11 +165,11 @@ namespace Logic if (_aiLogic.AILogicState == AILogicState.Prepare) { _curPlayer.PlayerWealth += (int)_curPlayer.Turn / 10; - _gameLogic.Main.MapData.PlayerMap.OnTurnStart(_gameLogic.Main.MapData, _curPlayer); - _gameLogic.Main.MapData.CityMap.OnTurnStart(_gameLogic.Main.MapData, _curPlayer); - _gameLogic.Main.MapData.UnitMap.OnTurnStart(_gameLogic.Main.MapData, _curPlayer); - _gameLogic.Main.MapData.GridMap.OnTurnStart(_gameLogic.Main.MapData); - _aiLogic.StartAILogic(_gameLogic.Main.MapData, _curPlayer); + Main.MapData.PlayerMap.OnTurnStart(Main.MapData, _curPlayer); + Main.MapData.CityMap.OnTurnStart(Main.MapData, _curPlayer); + Main.MapData.UnitMap.OnTurnStart(Main.MapData, _curPlayer); + Main.MapData.GridMap.OnTurnStart(Main.MapData); + _aiLogic.StartAILogic(Main.MapData, _curPlayer); } _aiLogic.Update(); @@ -197,9 +197,9 @@ namespace Logic UIManager.Instance.AIPlayingHint.SetActive(true); Turn++; _aiPlayers.Clear(); - foreach (var playerData in _gameLogic.Main.MapData.PlayerMap.PlayerDataList) + foreach (var playerData in Main.MapData.PlayerMap.PlayerDataList) { - if (playerData.Id == _gameLogic.Main.MapData.PlayerMap.SelfPlayerId) continue; + if (playerData.Id == Main.MapData.PlayerMap.SelfPlayerId) continue; _aiPlayers.Add(playerData); } @@ -237,14 +237,14 @@ namespace Logic // AI 难度加钱 int tt = 0; if (_curPlayer.Turn < 10) - tt = (int)_gameLogic.Main.MapData.MapConfig.AIDiff; - _curPlayer.PlayerWealth += ((int)_curPlayer.Turn / 10) * (int)_gameLogic.Main.MapData.MapConfig.AIDiff + tt; + tt = (int)Main.MapData.MapConfig.AIDiff; + _curPlayer.PlayerWealth += ((int)_curPlayer.Turn / 10) * (int)Main.MapData.MapConfig.AIDiff + tt; - _gameLogic.Main.MapData.PlayerMap.OnTurnStart(_gameLogic.Main.MapData, _curPlayer); - _gameLogic.Main.MapData.CityMap.OnTurnStart(_gameLogic.Main.MapData, _curPlayer); - _gameLogic.Main.MapData.UnitMap.OnTurnStart(_gameLogic.Main.MapData, _curPlayer); - _gameLogic.Main.MapData.GridMap.OnTurnStart(_gameLogic.Main.MapData); - _aiLogic.StartAILogic(_gameLogic.Main.MapData, _curPlayer); + Main.MapData.PlayerMap.OnTurnStart(Main.MapData, _curPlayer); + Main.MapData.CityMap.OnTurnStart(Main.MapData, _curPlayer); + Main.MapData.UnitMap.OnTurnStart(Main.MapData, _curPlayer); + Main.MapData.GridMap.OnTurnStart(Main.MapData); + _aiLogic.StartAILogic(Main.MapData, _curPlayer); } _aiLogic.Update(); @@ -253,10 +253,10 @@ namespace Logic private void TryTurnEndCurPlayerTurn() { if (_curPlayer == null) return; - _gameLogic.Main.MapData.PlayerMap.OnTurnEnd(_gameLogic.Main.MapData, _curPlayer); - _gameLogic.Main.MapData.CityMap.OnTurnEnd(_gameLogic.Main.MapData, _curPlayer); - _gameLogic.Main.MapData.UnitMap.OnTurnEnd(_gameLogic.Main.MapData, _curPlayer); - _gameLogic.Main.MapData.GridMap.OnTurnEnd(_gameLogic.Main.MapData); + Main.MapData.PlayerMap.OnTurnEnd(Main.MapData, _curPlayer); + Main.MapData.CityMap.OnTurnEnd(Main.MapData, _curPlayer); + Main.MapData.UnitMap.OnTurnEnd(Main.MapData, _curPlayer); + Main.MapData.GridMap.OnTurnEnd(Main.MapData); } } @@ -301,7 +301,7 @@ namespace Logic Turn++; PlayerPrefs.SetInt("Archive", 0); - var record = _gameLogic.Main.MapData.ExportGameRecord(); + var record = Main.MapData.ExportGameRecord(); GameRecordManager.Instance.AddRecord(record); } diff --git a/My project/Assets/Scripts/Logic/Main/Main.cs b/My project/Assets/Scripts/Logic/Main/Main.cs index 33e6770c8..a40a86e05 100644 --- a/My project/Assets/Scripts/Logic/Main/Main.cs +++ b/My project/Assets/Scripts/Logic/Main/Main.cs @@ -44,7 +44,7 @@ namespace Logic //--------------------------------new data type-------------------------------- [NonSerialized] public MapConfig MapConfig; - [NonSerialized] public MapData MapData; + [NonSerialized] public static MapData MapData; //各Logic模块的引用 //一级logic,AI和input diff --git a/My project/Assets/Scripts/Logic/Map/MapInteraction.cs b/My project/Assets/Scripts/Logic/Map/MapInteraction.cs index 4a9bc45d8..ad1f75ab6 100644 --- a/My project/Assets/Scripts/Logic/Map/MapInteraction.cs +++ b/My project/Assets/Scripts/Logic/Map/MapInteraction.cs @@ -30,7 +30,7 @@ namespace Logic public void CancelAllHighlight() //专门用来应对BottomInfoUI的CloseButton的函数,点击close的时候先调用这个函数通知interaction处理好信息,再关闭bottominfo { - foreach (var gridData in _main.MapData.GridMap.GridList) + foreach (var gridData in Main.MapData.GridMap.GridList) { gridData.CityBorderRenderMark = false; var gridRenderer = MapRenderer.Instance.ROGridMap[gridData.Id]; @@ -42,7 +42,7 @@ namespace Logic gridRenderer.SetSelectHighlight(false); gridRenderer.SetMoveHighlight(false); } - foreach (var unitData in _main.MapData.UnitMap.UnitList) + foreach (var unitData in Main.MapData.UnitMap.UnitList) { if (!MapRenderer.Instance.ROUnitMap.ContainsKey(unitData.Id)) continue; var unitRenderer = MapRenderer.Instance.ROUnitMap[unitData.Id]; @@ -65,7 +65,7 @@ namespace Logic return; } - bool hasUnit = _main.MapData.GetUnitDataByGid(gridData.Id,out var unitData); + bool hasUnit = Main.MapData.GetUnitDataByGid(gridData.Id,out var unitData); //Debug.Log(hasUnit); var roGrid = MapRenderer.Instance.ROGridMap[gridData.Id]; //如果这次点击有unit @@ -87,7 +87,7 @@ namespace Logic else if (roUnit.IsAttackHighlight) { CancelAllHighlight(); - Main.UnitLogic.Attack(_main.MapData, MapRenderer.Instance.SelectUnitData, unitData); + Main.UnitLogic.Attack(Main.MapData, MapRenderer.Instance.SelectUnitData, unitData); UIManager.Instance.BottomInfoUI.UIBottomInfoStatus = false; } //如果是选择角色 @@ -105,7 +105,7 @@ namespace Logic UIManager.Instance.BottomInfoUI.UIBottomInfoIsGrid = false; UIManager.Instance.BottomInfoUI.UIBottomInfoStatusObjectId = unitData.Id; //如果是selfplayer的unit,显示可操作区域 - if (Main.UnitLogic.CheckIsSelfPlayer(_main.MapData, unitData.Id)) + if (Main.UnitLogic.CheckIsSelfPlayer(Main.MapData, unitData.Id)) MapRenderer.Instance.SetUnitAllMoveAttackTargetHighlight(unitData.Id); @@ -122,7 +122,7 @@ namespace Logic else if (roGrid.IsMoveHighlight) { CancelAllHighlight(); - Main.UnitLogic.MoveTo(_main.MapData, MapRenderer.Instance.SelectUnitData, gridData,MoveType.ActiveMove); + Main.UnitLogic.MoveTo(Main.MapData, MapRenderer.Instance.SelectUnitData, gridData,MoveType.ActiveMove); //切换相机镜头 MapRenderer.Instance.CameraController.CameraFocusOnGrid(gridData); UIManager.Instance.BottomInfoUI.UIBottomInfoStatus = false; @@ -149,7 +149,7 @@ namespace Logic if (_mapData.GetCityDataByTerritoryGid(gridData.Id, out var city)) { if(_mapData.GetGridDataByCityId(city.Id,out var gridTmp) - && _main.MapData.PlayerMap.SelfPlayerData.Sight.CheckIsInSight(gridTmp.Id)) + && Main.MapData.PlayerMap.SelfPlayerData.Sight.CheckIsInSight(gridTmp.Id)) MapRenderer.Instance.ROGridMap[gridTmp.Id].SetBounceAnim(); } diff --git a/My project/Assets/Scripts/TH1Renderer/MapRenderer.cs b/My project/Assets/Scripts/TH1Renderer/MapRenderer.cs index 1b3a1496e..52375482e 100644 --- a/My project/Assets/Scripts/TH1Renderer/MapRenderer.cs +++ b/My project/Assets/Scripts/TH1Renderer/MapRenderer.cs @@ -225,7 +225,7 @@ namespace TH1Renderer // 更新视野 if (_currentTargetGridData != null) // 调用UpdateSightByRadius更新视野 - Main.PlayerLogic.UpdateSightByRadius(_main.MapData, _main.MapData.PlayerMap.SelfPlayerData, _currentTargetGridData, + Main.PlayerLogic.UpdateSightByRadius(Main.MapData, Main.MapData.PlayerMap.SelfPlayerData, _currentTargetGridData, _currentTargetGridData.Feature == TerrainFeature.Mountain? 2 : 1); // 检查是否需要继续移动 @@ -250,7 +250,7 @@ namespace TH1Renderer // 延迟一小段时间后继续移动 Timer.Instance.TimerRegister(this, () => { - MoveExplorerToLeastVisibleDirection(_currentTargetGridData, _main.MapData.PlayerMap.SelfPlayerData); + MoveExplorerToLeastVisibleDirection(_currentTargetGridData, Main.MapData.PlayerMap.SelfPlayerData); }, delayTime); } else if (_explorerMoveCount >= _explorerMaxMoves && _temporaryExplorer != null) @@ -295,7 +295,7 @@ namespace TH1Renderer List toRemove = new List(); foreach (var roUnitId in ROUnitMap.Keys) { - if (!_main.MapData.UnitMap.GetUnitDataByUnitId(roUnitId, out var unitData)) + if (!Main.MapData.UnitMap.GetUnitDataByUnitId(roUnitId, out var unitData)) toRemove.Add(roUnitId); } @@ -328,23 +328,23 @@ namespace TH1Renderer //当gridMap出现新的对象时,新建对象 public void RenderUpdateGridMap() { - foreach (var gridData in _main.MapData.GridMap.GridList) + foreach (var gridData in Main.MapData.GridMap.GridList) { ROGridMap[gridData.Id] = - new GridRenderer(_gridPrefab, _gridRenderMap, gridData.Id, _main.MapData, _main); + new GridRenderer(_gridPrefab, _gridRenderMap, gridData.Id, Main.MapData, _main); } } //当cityMap出现新的对象时,新建对象 public void RenderUpdateCityMap() { - foreach (var cityData in _main.MapData.CityMap.CityList) + foreach (var cityData in Main.MapData.CityMap.CityList) if(!ROCityInfoMap.ContainsKey(cityData.Id)) { //生成城镇图像 RenderUpdateCityBuildings(cityData.Id); //生成城镇名称和人口条 - ROCityInfoMap[cityData.Id] = new CityInfoRenderer(_cityInfoPrefab,_cityInfoRenderMap,cityData.Id,_main.MapData,_main); + ROCityInfoMap[cityData.Id] = new CityInfoRenderer(_cityInfoPrefab,_cityInfoRenderMap,cityData.Id,Main.MapData,_main); cityData.CityInfoRenderMark = true; } } @@ -352,11 +352,11 @@ namespace TH1Renderer //当unitMap出现新的对象时,新建对象 public void RenderUpdateUnitMap() { - foreach (var unitData in _main.MapData.UnitMap.UnitList) + foreach (var unitData in Main.MapData.UnitMap.UnitList) if(!ROUnitMap.ContainsKey(unitData.Id)) { //生成单位图像 - ROUnitMap[unitData.Id] = new UnitRenderer(_unitPrefab,_unitRenderMap,unitData.Id,_main.MapData,_main); + ROUnitMap[unitData.Id] = new UnitRenderer(_unitPrefab,_unitRenderMap,unitData.Id,Main.MapData,_main); } } @@ -379,23 +379,23 @@ namespace TH1Renderer public void RenderUpdateBorders() //更新全地图的所有边界 { - foreach (var gridData in _main.MapData.GridMap.GridList) + foreach (var gridData in Main.MapData.GridMap.GridList) ROGridMap[gridData.Id].UpdateBorder(); } private void RenderUpdateCityBuildings(uint cityId) //更新主城建筑的渲染 { - _main.MapData.GetGridIdByCityId(cityId, out var gridId); + Main.MapData.GetGridIdByCityId(cityId, out var gridId); ROGridMap[gridId].RenderUpdateCityBuilding(cityId); } public bool SetUnitAllMoveAttackTargetHighlight(uint uid) //渲染所有可移动位置的高亮,其中可以攻击的位置要标红,如果是自己人或者敌人在移动范围内但是不在攻击范围内,则不能高亮 { bool ret = false; - Main.UnitLogic.CalcUnitMoveInfo(_main.MapData, uid); - _main.MapData.UnitMap.GetUnitDataByUnitId(uid, out var unitData); - _main.MapData.GetGridDataByUnitId(uid, out var gridData); - _main.MapData.GetPlayerDataByUnitId(uid, out var playerData); + Main.UnitLogic.CalcUnitMoveInfo(Main.MapData, uid); + Main.MapData.UnitMap.GetUnitDataByUnitId(uid, out var unitData); + Main.MapData.GetGridDataByUnitId(uid, out var gridData); + Main.MapData.GetPlayerDataByUnitId(uid, out var playerData); //unitLogic.DebugOutputMoveInfo(); int r = Mathf.Max((Table.Instance.UnitTypeDataAssets.GetUnitTypeInfo(unitData.UnitType,unitData.GiantType,out var info)?info.MoveRange:0) * 2, Table.Instance.UnitTypeDataAssets.GetUnitTypeInfo(unitData.UnitType,unitData.GiantType,out var info2)?info2.AttackRange:0); @@ -414,13 +414,13 @@ namespace TH1Renderer r = (int)(_mapData.MapConfig.Width > _mapData.MapConfig.Height ? _mapData.MapConfig.Width : _mapData.MapConfig.Height); } - var targetGridDataList = _main.MapData.GridMap.GetAroundGridDataSet(r,r,gridData); + var targetGridDataList = Main.MapData.GridMap.GetAroundGridDataSet(r,r,gridData); foreach(var targetGridData in targetGridDataList) { //如果不在视野 跳过 if (!playerData.Sight.CheckIsInSight(targetGridData.Id)) continue; - var sig = Main.UnitLogic.CheckUnitCanMoveOrAttack(_main.MapData, unitData, targetGridData); + var sig = Main.UnitLogic.CheckUnitCanMoveOrAttack(Main.MapData, unitData, targetGridData); //如果是移动目标,且unit的MP>0 if ((sig == MoveAttackType.Move || sig == MoveAttackType.MoveToPort || sig == MoveAttackType.MoveAshore) && unitData.MP > 0) @@ -432,18 +432,18 @@ namespace TH1Renderer if (sig == MoveAttackType.Attack && unitData.AP > 0) { ret = true; - if (!_main.MapData.GetUnitDataByGid(targetGridData.Id, out var unitDataB)) + if (!Main.MapData.GetUnitDataByGid(targetGridData.Id, out var unitDataB)) continue; //如果可以杀死,做一个提示 - if (Table.Instance.CalcDamage(_main.MapData, unitData, unitDataB) >= unitDataB.Health) + if (Table.Instance.CalcDamage(Main.MapData, unitData, unitDataB) >= unitDataB.Health) { targetGridData.VFXRenderMarkDieHintStart = true; //0代表这是杀死提示 targetGridData.VFXRenderMarkDieHintStartParam = 0; } - else if(Main.UnitLogic.CanCounter(_main.MapData, unitData, unitDataB) && - Table.Instance.CalcDamage(_main.MapData, unitData, unitDataB,true) >= unitData.Health) + else if(Main.UnitLogic.CanCounter(Main.MapData, unitData, unitDataB) && + Table.Instance.CalcDamage(Main.MapData, unitData, unitDataB,true) >= unitData.Health) { targetGridData.VFXRenderMarkDieHintStart = true; //1代表这是被杀死提示 @@ -458,19 +458,19 @@ namespace TH1Renderer //返回一个Unit是否存在移动或者攻击目标 public bool CheckUnitHasMoveAttackTarget(uint uid) { - Main.UnitLogic.CalcUnitMoveInfo(_main.MapData, uid); - _main.MapData.UnitMap.GetUnitDataByUnitId(uid, out var unitData); - _main.MapData.GetGridDataByUnitId(uid, out var gridData); - _main.MapData.GetPlayerDataByUnitId(uid, out var playerData); + Main.UnitLogic.CalcUnitMoveInfo(Main.MapData, uid); + Main.MapData.UnitMap.GetUnitDataByUnitId(uid, out var unitData); + Main.MapData.GetGridDataByUnitId(uid, out var gridData); + Main.MapData.GetPlayerDataByUnitId(uid, out var playerData); //unitLogic.DebugOutputMoveInfo(); int r = Mathf.Max((Table.Instance.UnitTypeDataAssets.GetUnitTypeInfo(unitData.UnitType,unitData.GiantType,out var info)?info.MoveRange:0) * 2, Table.Instance.UnitTypeDataAssets.GetUnitTypeInfo(unitData.UnitType,unitData.GiantType,out var info2)?info2.AttackRange:0); - var targetGridDataList = _main.MapData.GridMap.GetAroundGridDataSet(r,r,gridData); + var targetGridDataList = Main.MapData.GridMap.GetAroundGridDataSet(r,r,gridData); foreach(var targetGridData in targetGridDataList) { //如果不在视野 跳过 if (!playerData.Sight.CheckIsInSight(targetGridData.Id)) continue; - var sig = Main.UnitLogic.CheckUnitCanMoveOrAttack(_main.MapData, unitData, targetGridData); + var sig = Main.UnitLogic.CheckUnitCanMoveOrAttack(Main.MapData, unitData, targetGridData); //如果是移动目标,且unit的MP>0 if ((sig == MoveAttackType.Move || sig == MoveAttackType.MoveToPort || sig == MoveAttackType.MoveAshore) && unitData.MP > 0) @@ -508,14 +508,14 @@ namespace TH1Renderer public void CreateTemporaryExplorer(GridData gridData, float maxDuration) { // 获取玩家数据 - 使用领土所属关系获取 - if (!_main.MapData.GetPlayerDataByTerritoryGridId(gridData.Id, out var playerData)) + if (!Main.MapData.GetPlayerDataByTerritoryGridId(gridData.Id, out var playerData)) { Debug.LogWarning("无法获取玩家数据,无法创建探索者"); return; } // 检查是否是自己的玩家 - bool isSelfPlayer = playerData.Id == _main.MapData.PlayerMap.SelfPlayerData.Id; + bool isSelfPlayer = playerData.Id == Main.MapData.PlayerMap.SelfPlayerData.Id; // 如果不是自己的玩家,直接计算10步探索并更新视野,不进行渲染 if (!isSelfPlayer) @@ -538,7 +538,7 @@ namespace TH1Renderer Vector2Int currentPos = new Vector2Int(_currentTargetGridData.Pos.X, _currentTargetGridData.Pos.Y); // 更新视野 - Main.PlayerLogic.UpdateSightByRadius(_main.MapData, playerData, _currentTargetGridData, 1); + Main.PlayerLogic.UpdateSightByRadius(Main.MapData, playerData, _currentTargetGridData, 1); // 保存当前位置作为上一个位置 Vector2Int prevPos = currentPos; @@ -596,7 +596,7 @@ namespace TH1Renderer if (Table.Instance.UnitTypeDataAssets.GetUnitTypeInfo(explorerUnitType, GiantType.None, out var unitTypeInfo)) { // 使用GetUnitSpriteByInfo方法获取精灵 - if (Table.Instance.UnitTypeDataAssets.GetUnitSpriteByInfo(_main.MapData, unitTypeInfo, playerData, out var sprite)) + if (Table.Instance.UnitTypeDataAssets.GetUnitSpriteByInfo(Main.MapData, unitTypeInfo, playerData, out var sprite)) { spriteRenderer.sprite = sprite; // 确保精灵渲染器设置正确 @@ -631,8 +631,8 @@ namespace TH1Renderer Vector2Int currentPos = new Vector2Int(startGridData.Pos.X, startGridData.Pos.Y); // 地图尺寸 - int mapWidth = (int)_main.MapData.MapConfig.Width; - int mapHeight = (int)_main.MapData.MapConfig.Height; + int mapWidth = (int)Main.MapData.MapConfig.Width; + int mapHeight = (int)Main.MapData.MapConfig.Height; // 存储每个方向的最近未探索格子距离 float[] directionMinDistance = new float[8]; @@ -654,7 +654,7 @@ namespace TH1Renderer continue; // 获取格子数据 - if (_main.MapData.GridMap.GetGridDataByPos(x, y, out var gridData)) + if (Main.MapData.GridMap.GetGridDataByPos(x, y, out var gridData)) { // 检查是否在视野中 if (!playerData.Sight.CheckIsInSight(gridData.Id)) @@ -706,7 +706,7 @@ namespace TH1Renderer continue; // 检查该位置是否可通行 - if (!_main.MapData.GridMap.GetGridDataByPos(nextPos.x, nextPos.y, out var nextGridData)) + if (!Main.MapData.GridMap.GetGridDataByPos(nextPos.x, nextPos.y, out var nextGridData)) continue; // 检查地形是否可通行 @@ -743,7 +743,7 @@ namespace TH1Renderer continue; // 检查该位置是否可通行 - if (!_main.MapData.GridMap.GetGridDataByPos(nextPos.x, nextPos.y, out var nextGridData)) + if (!Main.MapData.GridMap.GetGridDataByPos(nextPos.x, nextPos.y, out var nextGridData)) continue; // 检查地形是否可通行 @@ -770,13 +770,13 @@ namespace TH1Renderer Vector2Int targetPos = currentPos + finalMoveDir; // 获取目标格子数据 - if (_main.MapData.GridMap.GetGridDataByPos(targetPos.x, targetPos.y, out var targetGridData)) + if (Main.MapData.GridMap.GetGridDataByPos(targetPos.x, targetPos.y, out var targetGridData)) { // 保存上一个位置 _explorerPreviousPosition = currentPos; // 更新视野 - Main.PlayerLogic.UpdateSightByRadius(_main.MapData, playerData, targetGridData, 1); + Main.PlayerLogic.UpdateSightByRadius(Main.MapData, playerData, targetGridData, 1); // 获取移动动画时间 float moveTime = 0.5f; @@ -881,8 +881,8 @@ namespace TH1Renderer Vector2Int currentPos = new Vector2Int(startGridData.Pos.X, startGridData.Pos.Y); // 地图尺寸 - int mapWidth = (int)_main.MapData.MapConfig.Width; - int mapHeight = (int)_main.MapData.MapConfig.Height; + int mapWidth = (int)Main.MapData.MapConfig.Width; + int mapHeight = (int)Main.MapData.MapConfig.Height; // 存储每个方向的最近未探索格子距离 float[] directionMinDistance = new float[8]; @@ -904,7 +904,7 @@ namespace TH1Renderer continue; // 获取格子数据 - if (_main.MapData.GridMap.GetGridDataByPos(x, y, out var gridData)) + if (Main.MapData.GridMap.GetGridDataByPos(x, y, out var gridData)) { // 检查是否在视野中 if (!playerData.Sight.CheckIsInSight(gridData.Id)) @@ -957,7 +957,7 @@ namespace TH1Renderer // 检查该位置是否可通行 GridData tempNextGridData; - if (!_main.MapData.GridMap.GetGridDataByPos(nextPos.x, nextPos.y, out tempNextGridData)) + if (!Main.MapData.GridMap.GetGridDataByPos(nextPos.x, nextPos.y, out tempNextGridData)) continue; // 检查地形是否可通行 @@ -995,7 +995,7 @@ namespace TH1Renderer // 检查该位置是否可通行 GridData tempNextGridData; - if (!_main.MapData.GridMap.GetGridDataByPos(nextPos.x, nextPos.y, out tempNextGridData)) + if (!Main.MapData.GridMap.GetGridDataByPos(nextPos.x, nextPos.y, out tempNextGridData)) continue; // 检查地形是否可通行 @@ -1020,7 +1020,7 @@ namespace TH1Renderer Vector2Int targetPos = currentPos + finalMoveDir; // 获取目标格子数据 - return _main.MapData.GridMap.GetGridDataByPos(targetPos.x, targetPos.y, out nextGridData); + return Main.MapData.GridMap.GetGridDataByPos(targetPos.x, targetPos.y, out nextGridData); } // 新增方法:检查地形是否可通行 @@ -1075,12 +1075,12 @@ namespace TH1Renderer Vector2Int nextPos = currentPos + dirVector; // 检查位置是否在地图范围内 - if (nextPos.x < 0 || nextPos.x >= _main.MapData.MapConfig.Width || - nextPos.y < 0 || nextPos.y >= _main.MapData.MapConfig.Height) + if (nextPos.x < 0 || nextPos.x >= Main.MapData.MapConfig.Width || + nextPos.y < 0 || nextPos.y >= Main.MapData.MapConfig.Height) continue; // 获取相邻格子数据 - if (!_main.MapData.GridMap.GetGridDataByPos(nextPos.x, nextPos.y, out var nextGrid)) + if (!Main.MapData.GridMap.GetGridDataByPos(nextPos.x, nextPos.y, out var nextGrid)) continue; // 如果已经访问过,跳过 diff --git a/My project/Assets/Scripts/UI/BottomInfoUI.cs b/My project/Assets/Scripts/UI/BottomInfoUI.cs index b6ad93f25..e6d8a3ea7 100644 --- a/My project/Assets/Scripts/UI/BottomInfoUI.cs +++ b/My project/Assets/Scripts/UI/BottomInfoUI.cs @@ -190,7 +190,7 @@ public class BottomInfoUI// : MonoBehaviour continue; if (actionInfo.VarientIcon) { - timg.sprite = Table.Instance.QueryActionIconSprite(actionId,_main.MapData.PlayerMap.SelfPlayerData); + timg.sprite = Table.Instance.QueryActionIconSprite(actionId,Main.MapData.PlayerMap.SelfPlayerData); //timg.SetNativeSize(); //childAction.Find("Image").localScale = new Vector3(0.3f, 0.3f, 0.3f); //childAction.Find("Image").localPosition = new Vector3(0f, -40f, 0f); @@ -223,13 +223,13 @@ public class BottomInfoUI// : MonoBehaviour GameObject.Destroy(child.gameObject); //如果预览的是grid或者city - if (UIBottomInfoIsGrid && _main.MapData.GridMap.GetGridDataByGid(UIBottomInfoStatusObjectId,out var gridData)) + if (UIBottomInfoIsGrid && Main.MapData.GridMap.GetGridDataByGid(UIBottomInfoStatusObjectId,out var gridData)) { //现获取对应的playerData - _main.MapData.GetPlayerDataByTerritoryGridId(UIBottomInfoStatusObjectId, out var player); + Main.MapData.GetPlayerDataByTerritoryGridId(UIBottomInfoStatusObjectId, out var player); //如果是city - if (_main.MapData.GetCityDataByGid(gridData.Id, out var cityData)) + if (Main.MapData.GetCityDataByGid(gridData.Id, out var cityData)) { @@ -415,7 +415,7 @@ public class BottomInfoUI// : MonoBehaviour //如果是unit else { - _main.MapData.UnitMap.GetUnitDataByUnitId(UIBottomInfoStatusObjectId,out var unitData); + Main.MapData.UnitMap.GetUnitDataByUnitId(UIBottomInfoStatusObjectId,out var unitData); //筹备unit预览格子 GameObject clone = GameObject.Instantiate(MapRenderer.Instance.ROUnitMap[UIBottomInfoStatusObjectId].GetROUnit() as GameObject); clone.transform.SetParent(_unitPreviewArea.transform); @@ -516,10 +516,10 @@ public class BottomInfoUI// : MonoBehaviour CommonActionId fakeActionId = clickedItem.GetComponent().ActionId; //如果钱不够,退出 - if (Table.Instance.QueryActionCost(fakeActionId) > _main.MapData.PlayerMap.SelfPlayerData.PlayerWealth) + if (Table.Instance.QueryActionCost(fakeActionId) > Main.MapData.PlayerMap.SelfPlayerData.PlayerWealth) return; //如果没科技,退出 - if (!_main.MapData.PlayerMap.SelfPlayerData.TechTree.CheckActionCan(fakeActionId)) + if (!Main.MapData.PlayerMap.SelfPlayerData.TechTree.CheckActionCan(fakeActionId)) return; UnitData unitData = null; CityData cityData = null; @@ -533,28 +533,28 @@ public class BottomInfoUI// : MonoBehaviour if (fakeActionId.ActionType == CommonActionType.TrainUnit) { //如果是城市训练单位 - if(_main.MapData.GetCityDataByGid(UIBottomInfoStatusObjectId,out cityData)) + if(Main.MapData.GetCityDataByGid(UIBottomInfoStatusObjectId,out cityData)) { //城市满人口 - if (_main.MapData.CheckIfCityFullPopulation(cityData)) return; + if (Main.MapData.CheckIfCityFullPopulation(cityData)) return; mainObjectType = MainObjectType.City; } - else if (_main.MapData.GetCityDataByTerritoryGid(UIBottomInfoStatusObjectId, out cityData)) + else if (Main.MapData.GetCityDataByTerritoryGid(UIBottomInfoStatusObjectId, out cityData)) { //城市满人口 - if (_main.MapData.CheckIfCityFullPopulation(cityData)) return; + if (Main.MapData.CheckIfCityFullPopulation(cityData)) return; } } - _main.MapData.GridMap.GetGridDataByGid(UIBottomInfoStatusObjectId,out gridData); + Main.MapData.GridMap.GetGridDataByGid(UIBottomInfoStatusObjectId,out gridData); } else { - _main.MapData.UnitMap.GetUnitDataByUnitId(UIBottomInfoStatusObjectId,out unitData); + Main.MapData.UnitMap.GetUnitDataByUnitId(UIBottomInfoStatusObjectId,out unitData); mainObjectType = MainObjectType.Unit; } CommonActionParams actionParams = new CommonActionParams(_mapData, - _main.MapData.PlayerMap.SelfPlayerData,unitData,cityData,gridData,null,null,mainObjectType); + Main.MapData.PlayerMap.SelfPlayerData,unitData,cityData,gridData,null,null,mainObjectType); //Debug.Log($"{actionId.ActionType},{actionId.WonderType},{actionId.ResourceType},{actionId.FeatureType},{actionId.UnitType},{actionId.Vegetation}"); //如果成功执行,隐藏当前面板 @@ -604,7 +604,7 @@ public class BottomInfoUI// : MonoBehaviour if (UIBottomInfoIsGrid) { //如果科技未解锁 - if (!_main.MapData.PlayerMap.SelfPlayerData.TechTree.CheckActionCan(tActionId)) + if (!Main.MapData.PlayerMap.SelfPlayerData.TechTree.CheckActionCan(tActionId)) { starImage.gameObject.SetActive(false); textUIComponent.gameObject.SetActive(false); @@ -613,9 +613,9 @@ public class BottomInfoUI// : MonoBehaviour CityData cityData; //如果是一个满员城市在grid上生产单位,要额外判断一下这个是不是生产单位的行为 - if (!_main.MapData.GetCityDataByGid(UIBottomInfoStatusObjectId,out cityData)){ - if(_main.MapData.GetCityDataByTerritoryGid(UIBottomInfoStatusObjectId,out cityData) - && _main.MapData.CheckIfCityFullPopulation(cityData) + if (!Main.MapData.GetCityDataByGid(UIBottomInfoStatusObjectId,out cityData)){ + if(Main.MapData.GetCityDataByTerritoryGid(UIBottomInfoStatusObjectId,out cityData) + && Main.MapData.CheckIfCityFullPopulation(cityData) && tActionId.ActionType == CommonActionType.TrainUnit) { textUIComponent.color = Color.gray; @@ -625,7 +625,7 @@ public class BottomInfoUI// : MonoBehaviour } } //如果是一个满员城市在市中心生产单位(不用在判断是不是生产单位了) - else if (_main.MapData.CheckIfCityFullPopulation(cityData)) + else if (Main.MapData.CheckIfCityFullPopulation(cityData)) { textUIComponent.color = Color.gray; backImage.sprite = ActionBGUnavailable; @@ -633,7 +633,7 @@ public class BottomInfoUI// : MonoBehaviour textUIComponent.gameObject.SetActive(false); } //如果钱不够 - if (_main.MapData.PlayerMap.SelfPlayerData.PlayerWealth < actionLogic.GetCost()) + if (Main.MapData.PlayerMap.SelfPlayerData.PlayerWealth < actionLogic.GetCost()) { textUIComponent.color = Color.red; backImage.sprite = ActionBGExpensive; @@ -650,7 +650,7 @@ public class BottomInfoUI// : MonoBehaviour { starImage.gameObject.SetActive(true); textUIComponent.gameObject.SetActive(true); - if (_main.MapData.PlayerMap.SelfPlayerData.PlayerWealth < actionLogic.GetCost()) + if (Main.MapData.PlayerMap.SelfPlayerData.PlayerWealth < actionLogic.GetCost()) { textUIComponent.color = Color.red; backImage.sprite = ActionBGExpensive; @@ -728,7 +728,7 @@ public class BottomInfoUI// : MonoBehaviour _debugGrid.SetActive(true); _debugUnit.SetActive(false); _debugCity.SetActive(false); - if (!_main.MapData.GridMap.GetGridDataByGid(UIBottomInfoStatusObjectId, out var gridData)) + if (!Main.MapData.GridMap.GetGridDataByGid(UIBottomInfoStatusObjectId, out var gridData)) return; _debugGrid.transform.Find("BuildingLevelValue").GetComponent().text = gridData.buildingLevel.ToString(); @@ -740,7 +740,7 @@ public class BottomInfoUI// : MonoBehaviour _debugCity.SetActive(false); // 获取单位数据 - if (!_main.MapData.UnitMap.GetUnitDataByUnitId(UIBottomInfoStatusObjectId, out var unitData)) + if (!Main.MapData.UnitMap.GetUnitDataByUnitId(UIBottomInfoStatusObjectId, out var unitData)) return; // 填充单位类型信息 diff --git a/My project/Assets/Scripts/UI/TechTreeUI.cs b/My project/Assets/Scripts/UI/TechTreeUI.cs index 7fe0a4c14..9e2eb3a2c 100644 --- a/My project/Assets/Scripts/UI/TechTreeUI.cs +++ b/My project/Assets/Scripts/UI/TechTreeUI.cs @@ -133,7 +133,7 @@ public class TechTreeUI btn.onClick.AddListener(() => SetTechCheckPanelShowHide(true,techType)); //Debug.Log(techType); //如果该科技已经学习 - if (_main.MapData.PlayerMap.SelfPlayerData.TechTree.CheckIfHasTech(techType)) + if (Main.MapData.PlayerMap.SelfPlayerData.TechTree.CheckIfHasTech(techType)) { Image img = techNode.transform.Find("Background").GetComponent(); img.sprite = ResourceCache.Instance.SpriteCache.TechCompleteBackground; @@ -155,7 +155,7 @@ public class TechTreeUI } else //如果该科技未解锁 - if (_main.MapData.PlayerMap.SelfPlayerData.TechTree.CheckIfTechUnsee(techType)) + if (Main.MapData.PlayerMap.SelfPlayerData.TechTree.CheckIfTechUnsee(techType)) { Image img = techNode.Find("Background").GetComponent(); img.sprite = ResourceCache.Instance.SpriteCache.TechLockedBackground; @@ -164,17 +164,17 @@ public class TechTreeUI for (int i = 1; i <= techInfo.techActions.Count; i++) techNode.transform.Find($"ImageGroup/Circle{i}")?.GetComponent().gameObject.SetActive(false); } - else //if(_main.MapData.PlayerMap.SelfPlayerData.TechTree.CheckIfTechCanLearn(techType)) + else //if(Main.MapData.PlayerMap.SelfPlayerData.TechTree.CheckIfTechCanLearn(techType)) //如果该科技可以学习 { TextMeshProUGUI costTxt = techNode.Find("costNumber").GetComponent(); //计算目前该tech的学习成本,=科技基础cost * 城市数 + 4 var img = techNode.Find("Background").GetComponent(); img.sprite = ResourceCache.Instance.SpriteCache.TechAvailableBackground; - int tmpCost = (_main.MapData.GetCityCount(_main.MapData.PlayerMap.SelfPlayerData.Id) + int tmpCost = (Main.MapData.GetCityCount(Main.MapData.PlayerMap.SelfPlayerData.Id) * techInfo.CostLevel + 4); costTxt.text = tmpCost.ToString(); - if (tmpCost > _main.MapData.PlayerMap.SelfPlayerData.PlayerWealth) + if (tmpCost > Main.MapData.PlayerMap.SelfPlayerData.PlayerWealth) costTxt.color = Color.red; else costTxt.color = Color.white; costTxt.gameObject.SetActive(true); @@ -219,10 +219,10 @@ public class TechTreeUI public void RenderUpdateTechCheckPanel(MapData mapData) { TechInfo techInfo = Table.Instance.TechDataAssets.GetTechInfo(_techTypeChoose); - PlayerData selfPlayer = _main.MapData.PlayerMap.SelfPlayerData; + PlayerData selfPlayer = Main.MapData.PlayerMap.SelfPlayerData; ROTechCheckPanel.SetActive(true); //记录一下目前点击的techNo和费用,以供点击Research时判断使用 - _techNoChooseCost = (_main.MapData.GetCityCount(selfPlayer.Id) * techInfo.CostLevel + 4); + _techNoChooseCost = (Main.MapData.GetCityCount(selfPlayer.Id) * techInfo.CostLevel + 4); TextMeshProUGUI title = ROTechCheckPanel.transform.Find("Title").GetComponent(); TextMeshProUGUI cost = ROTechCheckPanel.transform.Find("Title").transform.Find("costNumber").GetComponent(); @@ -330,9 +330,9 @@ public class TechTreeUI { //钱不够就不能研发。这种情况理应不会发生 - if (_main.MapData.PlayerMap.SelfPlayerData.PlayerWealth < _techNoChooseCost) + if (Main.MapData.PlayerMap.SelfPlayerData.PlayerWealth < _techNoChooseCost) return; - Main.PlayerLogic.ResearchTech(_main.MapData,_main.MapData.PlayerMap.SelfPlayerData,_techTypeChoose,_techNoChooseCost); + Main.PlayerLogic.ResearchTech(Main.MapData,Main.MapData.PlayerMap.SelfPlayerData,_techTypeChoose,_techNoChooseCost); SetTechCheckPanelShowHide(false); RenderUpdateTechTreeData(); UIManager.Instance.TopBarUI.RenderMark = true; diff --git a/My project/Assets/Scripts/UI/TopBarUI.cs b/My project/Assets/Scripts/UI/TopBarUI.cs index b43a13ae1..ba58fd7f2 100644 --- a/My project/Assets/Scripts/UI/TopBarUI.cs +++ b/My project/Assets/Scripts/UI/TopBarUI.cs @@ -73,9 +73,9 @@ public class TopBarUI _showTurnHint = false; ShowTurnHint(); } - _money.text = _main.MapData.PlayerMap.SelfPlayerData.PlayerWealth + - " + " + Main.PlayerLogic.GetPlayerStarsPerTurn(_main.MapData, _main.MapData.PlayerMap.SelfPlayerData.Id) + ""; - _faith.text = _main.MapData.PlayerMap.SelfPlayerData.PlayerScore.ToString(); - _turn.text = _main.MapData.PlayerMap.SelfPlayerData.Turn + "/30"; + _money.text = Main.MapData.PlayerMap.SelfPlayerData.PlayerWealth + + " + " + Main.PlayerLogic.GetPlayerStarsPerTurn(Main.MapData, Main.MapData.PlayerMap.SelfPlayerData.Id) + ""; + _faith.text = Main.MapData.PlayerMap.SelfPlayerData.PlayerScore.ToString(); + _turn.text = Main.MapData.PlayerMap.SelfPlayerData.Turn + "/30"; } }