MapData改为static

This commit is contained in:
daixiawu 2025-07-16 15:41:43 +08:00
parent 149095dfa3
commit feb87eb444
11 changed files with 154 additions and 154 deletions

View File

@ -452,7 +452,7 @@ namespace RuntimeData
{ {
var main = GameObject.Find("Main").GetComponent<Main>(); var main = GameObject.Find("Main").GetComponent<Main>();
//如果既是非AI的真实mapdata又是玩家的各自 //如果既是非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 faithPanel = GameObject.Find("UICanvas/TopBarPanel/FaithPanel/Icon").transform;
var startPos = Table.Instance.GridToWorld(this); var startPos = Table.Instance.GridToWorld(this);

View File

@ -682,7 +682,7 @@ namespace Logic.Action
//临时做法用来播放VFX,获取Main理应向MapData写入一个VFX的RenderMark的 //临时做法用来播放VFX,获取Main理应向MapData写入一个VFX的RenderMark的
var main = GameObject.Find("Main").GetComponent<Main>(); var main = GameObject.Find("Main").GetComponent<Main>();
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); var v1 = Table.Instance.GridToWorld(actionParams.GridData);
actionParams.MapData.GetGridDataByCityId(city.Id, out var g2); actionParams.MapData.GetGridDataByCityId(city.Id, out var g2);
@ -794,7 +794,7 @@ namespace Logic.Action
//如果是玩家,执行一整套播放动画的逻辑 //如果是玩家,执行一整套播放动画的逻辑
//临时做法用来播放VFX,获取Main理应向MapData写入一个VFX的RenderMark的 //临时做法用来播放VFX,获取Main理应向MapData写入一个VFX的RenderMark的
var main = GameObject.Find("Main").GetComponent<Main>(); var main = GameObject.Find("Main").GetComponent<Main>();
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); var v1 = Table.Instance.GridToWorld(actionParams.GridData);
actionParams.MapData.GetGridDataByCityId(cityData.Id, out var g2); actionParams.MapData.GetGridDataByCityId(cityData.Id, out var g2);
@ -995,7 +995,7 @@ namespace Logic.Action
//如果是玩家,执行一整套播放动画的逻辑 //如果是玩家,执行一整套播放动画的逻辑
//临时做法用来播放VFX,获取Main理应向MapData写入一个VFX的RenderMark的 //临时做法用来播放VFX,获取Main理应向MapData写入一个VFX的RenderMark的
var main = GameObject.Find("Main").GetComponent<Main>(); var main = GameObject.Find("Main").GetComponent<Main>();
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) if (cityExp == 0)
{ {
@ -1428,7 +1428,7 @@ namespace Logic.Action
//临时做法用来播放VFX,获取Main理应向MapData写入一个VFX的RenderMark的 //临时做法用来播放VFX,获取Main理应向MapData写入一个VFX的RenderMark的
var main = GameObject.Find("Main").GetComponent<Main>(); var main = GameObject.Find("Main").GetComponent<Main>();
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); var v1 = Table.Instance.GridToWorld(gridData);
int score = GetCost() * 5; int score = GetCost() * 5;
@ -1887,7 +1887,7 @@ namespace Logic.Action
//临时做法用来播放VFX,获取Main理应向MapData写入一个VFX的RenderMark的 //临时做法用来播放VFX,获取Main理应向MapData写入一个VFX的RenderMark的
var main = GameObject.Find("Main").GetComponent<Main>(); var main = GameObject.Find("Main").GetComponent<Main>();
if (actionParams.MapData == main.MapData) if (actionParams.MapData == Main.MapData)
{ {
var v1 = Table.Instance.GridToWorld(gridData); var v1 = Table.Instance.GridToWorld(gridData);
@ -1936,7 +1936,7 @@ namespace Logic.Action
gridData.RenderMark = true; gridData.RenderMark = true;
ret = true; ret = true;
var main = GameObject.Find("Main").GetComponent<Main>(); var main = GameObject.Find("Main").GetComponent<Main>();
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); var v1 = Table.Instance.GridToWorld(gridData);
@ -1961,7 +1961,7 @@ namespace Logic.Action
//临时做法用来播放VFX,获取Main理应向MapData写入一个VFX的RenderMark的 //临时做法用来播放VFX,获取Main理应向MapData写入一个VFX的RenderMark的
var main = GameObject.Find("Main").GetComponent<Main>(); var main = GameObject.Find("Main").GetComponent<Main>();
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); var v1 = Table.Instance.GridToWorld(gridData);

View File

@ -89,19 +89,19 @@ namespace Logic.Editor
_main = obj.GetComponent<Main>(); _main = obj.GetComponent<Main>();
if (!_main) return; if (!_main) return;
} }
if (_main?.MapData == null) return; if (Main.MapData == null) return;
EditorGUILayout.BeginHorizontal(); 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; if (InspectorUtils.InspectorButtonWithTextWidth($"玩家{player.Id}")) _player = player;
} }
EditorGUILayout.EndHorizontal(); EditorGUILayout.EndHorizontal();
var selfCity = new HashSet<CityData>(); var selfCity = new HashSet<CityData>();
_main.MapData.GetCityDataListByPlayerId(_main.MapData.PlayerMap.SelfPlayerId, selfCity); Main.MapData.GetCityDataListByPlayerId(Main.MapData.PlayerMap.SelfPlayerId, selfCity);
EditorGUILayout.BeginHorizontal(); EditorGUILayout.BeginHorizontal();
foreach (var city in _main.MapData.CityMap.CityList) foreach (var city in Main.MapData.CityMap.CityList)
{ {
if (selfCity.Contains(city)) continue; if (selfCity.Contains(city)) continue;
if (InspectorUtils.InspectorButtonWithTextWidth($"城市{city.Id}")) _city = city; if (InspectorUtils.InspectorButtonWithTextWidth($"城市{city.Id}")) _city = city;
@ -111,7 +111,7 @@ namespace Logic.Editor
private void OnShowPlayerInfo() 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); MainEditor.Instance.GetPlayerStrategy(_player.Id, out var playerStrategy, out var targetIdSet);
EditorGUILayout.BeginHorizontal(); EditorGUILayout.BeginHorizontal();
@ -129,7 +129,7 @@ namespace Logic.Editor
EditorGUILayout.BeginVertical(_redBoxStyle); EditorGUILayout.BeginVertical(_redBoxStyle);
InspectorUtils.InspectorTextWidthRich($"<b>城市信息</b>"); InspectorUtils.InspectorTextWidthRich($"<b>城市信息</b>");
var selfCity = new HashSet<CityData>(); var selfCity = new HashSet<CityData>();
_main.MapData.GetCityDataListByPlayerId(_player.Id, selfCity); Main.MapData.GetCityDataListByPlayerId(_player.Id, selfCity);
foreach (var city in selfCity) foreach (var city in selfCity)
{ {
MainEditor.Instance.GetCityStrategy(city.Id, out var strategy); MainEditor.Instance.GetCityStrategy(city.Id, out var strategy);
@ -144,7 +144,7 @@ namespace Logic.Editor
EditorGUILayout.BeginVertical(_redBoxStyle); EditorGUILayout.BeginVertical(_redBoxStyle);
InspectorUtils.InspectorTextWidthRich($"<b>小兵信息</b>"); InspectorUtils.InspectorTextWidthRich($"<b>小兵信息</b>");
var selfUnits = new HashSet<UnitData>(); var selfUnits = new HashSet<UnitData>();
_main.MapData.GetUnitDataListByPlayerId(_player.Id, selfUnits); Main.MapData.GetUnitDataListByPlayerId(_player.Id, selfUnits);
foreach (var unit in selfUnits) foreach (var unit in selfUnits)
{ {
MainEditor.Instance.GetUnitStrategy(unit.Id, unit.LegionId, _player.Id, out var strategy, out var target, out var type); 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() private void OnShowCityInfo()
{ {
if (_main?.MapData == null || _city == null) return; if (Main.MapData == null || _city == null) return;
var actions = MainEditor.Instance.GetCityActions(_city.Id); var actions = MainEditor.Instance.GetCityActions(_city.Id);
if (actions == null || actions.Count == 0) return; if (actions == null || actions.Count == 0) return;

View File

@ -142,13 +142,13 @@ namespace Logic
return; return;
Vector3 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition); Vector3 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
Vector2Int cellPosition = Table.Instance.WorldToGrid(mousePosition); Vector2Int cellPosition = Table.Instance.WorldToGrid(mousePosition);
if (cellPosition.x >= _main.MapData.MapConfig.Width || cellPosition.x < 0 || cellPosition.y < 0 || if (cellPosition.x >= Main.MapData.MapConfig.Width || cellPosition.x < 0 || cellPosition.y < 0 ||
cellPosition.y >= _main.MapData.MapConfig.Height) cellPosition.y >= Main.MapData.MapConfig.Height)
return; 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)) if (Input.GetKeyDown(KeyCode.S))
@ -158,16 +158,16 @@ namespace Logic
if (Input.GetKeyDown(KeyCode.BackQuote)) if (Input.GetKeyDown(KeyCode.BackQuote))
{ {
_main.MapData.PlayerMap.SelfPlayerData.PlayerWealth += 1000; Main.MapData.PlayerMap.SelfPlayerData.PlayerWealth += 1000;
} }
if (Input.GetKeyDown(KeyCode.T)) if (Input.GetKeyDown(KeyCode.T))
{ {
if (Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift)) 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))) 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; UIManager.Instance.TechTreeUI.TechTreeUIDataRenderMark = true;
} }
else else

View File

@ -53,7 +53,7 @@ namespace Logic
public void Update() public void Update()
{ {
_gameStateDict[_curState].Update(); _gameStateDict[_curState].Update();
Main.PlayerLogic.CalcAllPlayerScore(_main.MapData); Main.PlayerLogic.CalcAllPlayerScore(Main.MapData);
} }
@ -102,17 +102,17 @@ namespace Logic
public override void Enter() public override void Enter()
{ {
_curPlayer = _gameLogic.Main.MapData.PlayerMap.SelfPlayerData; _curPlayer = Main.MapData.PlayerMap.SelfPlayerData;
Turn++; Turn++;
foreach(var playerData in _gameLogic.Main.MapData.PlayerMap.PlayerDataList) foreach(var playerData in Main.MapData.PlayerMap.PlayerDataList)
Main.PlayerLogic.StartNextTurn(_gameLogic.Main.MapData, playerData); Main.PlayerLogic.StartNextTurn(Main.MapData, playerData);
foreach (var unitData in _gameLogic.Main.MapData.UnitMap.UnitList) foreach (var unitData in Main.MapData.UnitMap.UnitList)
Main.UnitLogic.StartNextTurn(_gameLogic.Main.MapData, unitData); Main.UnitLogic.StartNextTurn(Main.MapData, unitData);
_gameLogic.Main.MapData.PlayerMap.OnTurnStart(_gameLogic.Main.MapData, _curPlayer); Main.MapData.PlayerMap.OnTurnStart(Main.MapData, _curPlayer);
_gameLogic.Main.MapData.CityMap.OnTurnStart(_gameLogic.Main.MapData, _curPlayer); Main.MapData.CityMap.OnTurnStart(Main.MapData, _curPlayer);
_gameLogic.Main.MapData.UnitMap.OnTurnStart(_gameLogic.Main.MapData, _curPlayer); Main.MapData.UnitMap.OnTurnStart(Main.MapData, _curPlayer);
_gameLogic.Main.MapData.GridMap.OnTurnStart(_gameLogic.Main.MapData); Main.MapData.GridMap.OnTurnStart(Main.MapData);
AudioManager.Instance.InGameOnTurnStart(); AudioManager.Instance.InGameOnTurnStart();
@ -124,8 +124,8 @@ namespace Logic
//gameLogic.EndTurn(); //gameLogic.EndTurn();
//uiManager.EndTurn(); //uiManager.EndTurn();
PlayerPrefs.SetInt("Archive", 1); PlayerPrefs.SetInt("Archive", 1);
MapData.SaveMapData(_gameLogic.Main.MapData); MapData.SaveMapData(Main.MapData);
AchievementDataManager.Instance.OnTurnStart(_gameLogic.Main.MapData, _curPlayer); AchievementDataManager.Instance.OnTurnStart(Main.MapData, _curPlayer);
#if GAME_AUTO_DEBUG #if GAME_AUTO_DEBUG
_aiLogic = new AILogic(); _aiLogic = new AILogic();
@ -139,18 +139,18 @@ namespace Logic
_gameLogic.Main.InputLogic.LockInput(); _gameLogic.Main.InputLogic.LockInput();
// TODO endturn逻辑要重新梳理 // TODO endturn逻辑要重新梳理
Main.PlayerLogic.EndThisTurn(_gameLogic.Main.MapData, _gameLogic.Main.MapData.PlayerMap.SelfPlayerData); Main.PlayerLogic.EndThisTurn(Main.MapData, Main.MapData.PlayerMap.SelfPlayerData);
//处理当前每一个unit的回合结束前自动行为。每一个选手回合结束自动回血是在这个阶段出发的 //处理当前每一个unit的回合结束前自动行为。每一个选手回合结束自动回血是在这个阶段出发的
foreach (var unitData in _gameLogic.Main.MapData.UnitMap.UnitList) foreach (var unitData in Main.MapData.UnitMap.UnitList)
if(_gameLogic.Main.MapData.GetPlayerDataByUnitId(unitData.Id,out var player) if(Main.MapData.GetPlayerDataByUnitId(unitData.Id,out var player)
&& player.Id == _curPlayer.Id) && 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); Main.MapData.PlayerMap.OnTurnEnd(Main.MapData, _curPlayer);
_gameLogic.Main.MapData.CityMap.OnTurnEnd(_gameLogic.Main.MapData, _curPlayer); Main.MapData.CityMap.OnTurnEnd(Main.MapData, _curPlayer);
_gameLogic.Main.MapData.UnitMap.OnTurnEnd(_gameLogic.Main.MapData, _curPlayer); Main.MapData.UnitMap.OnTurnEnd(Main.MapData, _curPlayer);
_gameLogic.Main.MapData.GridMap.OnTurnEnd(_gameLogic.Main.MapData); Main.MapData.GridMap.OnTurnEnd(Main.MapData);
} }
public override void Update() public override void Update()
@ -165,11 +165,11 @@ namespace Logic
if (_aiLogic.AILogicState == AILogicState.Prepare) if (_aiLogic.AILogicState == AILogicState.Prepare)
{ {
_curPlayer.PlayerWealth += (int)_curPlayer.Turn / 10; _curPlayer.PlayerWealth += (int)_curPlayer.Turn / 10;
_gameLogic.Main.MapData.PlayerMap.OnTurnStart(_gameLogic.Main.MapData, _curPlayer); Main.MapData.PlayerMap.OnTurnStart(Main.MapData, _curPlayer);
_gameLogic.Main.MapData.CityMap.OnTurnStart(_gameLogic.Main.MapData, _curPlayer); Main.MapData.CityMap.OnTurnStart(Main.MapData, _curPlayer);
_gameLogic.Main.MapData.UnitMap.OnTurnStart(_gameLogic.Main.MapData, _curPlayer); Main.MapData.UnitMap.OnTurnStart(Main.MapData, _curPlayer);
_gameLogic.Main.MapData.GridMap.OnTurnStart(_gameLogic.Main.MapData); Main.MapData.GridMap.OnTurnStart(Main.MapData);
_aiLogic.StartAILogic(_gameLogic.Main.MapData, _curPlayer); _aiLogic.StartAILogic(Main.MapData, _curPlayer);
} }
_aiLogic.Update(); _aiLogic.Update();
@ -197,9 +197,9 @@ namespace Logic
UIManager.Instance.AIPlayingHint.SetActive(true); UIManager.Instance.AIPlayingHint.SetActive(true);
Turn++; Turn++;
_aiPlayers.Clear(); _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); _aiPlayers.Add(playerData);
} }
@ -237,14 +237,14 @@ namespace Logic
// AI 难度加钱 // AI 难度加钱
int tt = 0; int tt = 0;
if (_curPlayer.Turn < 10) if (_curPlayer.Turn < 10)
tt = (int)_gameLogic.Main.MapData.MapConfig.AIDiff; tt = (int)Main.MapData.MapConfig.AIDiff;
_curPlayer.PlayerWealth += ((int)_curPlayer.Turn / 10) * (int)_gameLogic.Main.MapData.MapConfig.AIDiff + tt; _curPlayer.PlayerWealth += ((int)_curPlayer.Turn / 10) * (int)Main.MapData.MapConfig.AIDiff + tt;
_gameLogic.Main.MapData.PlayerMap.OnTurnStart(_gameLogic.Main.MapData, _curPlayer); Main.MapData.PlayerMap.OnTurnStart(Main.MapData, _curPlayer);
_gameLogic.Main.MapData.CityMap.OnTurnStart(_gameLogic.Main.MapData, _curPlayer); Main.MapData.CityMap.OnTurnStart(Main.MapData, _curPlayer);
_gameLogic.Main.MapData.UnitMap.OnTurnStart(_gameLogic.Main.MapData, _curPlayer); Main.MapData.UnitMap.OnTurnStart(Main.MapData, _curPlayer);
_gameLogic.Main.MapData.GridMap.OnTurnStart(_gameLogic.Main.MapData); Main.MapData.GridMap.OnTurnStart(Main.MapData);
_aiLogic.StartAILogic(_gameLogic.Main.MapData, _curPlayer); _aiLogic.StartAILogic(Main.MapData, _curPlayer);
} }
_aiLogic.Update(); _aiLogic.Update();
@ -253,10 +253,10 @@ namespace Logic
private void TryTurnEndCurPlayerTurn() private void TryTurnEndCurPlayerTurn()
{ {
if (_curPlayer == null) return; if (_curPlayer == null) return;
_gameLogic.Main.MapData.PlayerMap.OnTurnEnd(_gameLogic.Main.MapData, _curPlayer); Main.MapData.PlayerMap.OnTurnEnd(Main.MapData, _curPlayer);
_gameLogic.Main.MapData.CityMap.OnTurnEnd(_gameLogic.Main.MapData, _curPlayer); Main.MapData.CityMap.OnTurnEnd(Main.MapData, _curPlayer);
_gameLogic.Main.MapData.UnitMap.OnTurnEnd(_gameLogic.Main.MapData, _curPlayer); Main.MapData.UnitMap.OnTurnEnd(Main.MapData, _curPlayer);
_gameLogic.Main.MapData.GridMap.OnTurnEnd(_gameLogic.Main.MapData); Main.MapData.GridMap.OnTurnEnd(Main.MapData);
} }
} }
@ -301,7 +301,7 @@ namespace Logic
Turn++; Turn++;
PlayerPrefs.SetInt("Archive", 0); PlayerPrefs.SetInt("Archive", 0);
var record = _gameLogic.Main.MapData.ExportGameRecord(); var record = Main.MapData.ExportGameRecord();
GameRecordManager.Instance.AddRecord(record); GameRecordManager.Instance.AddRecord(record);
} }

View File

@ -44,7 +44,7 @@ namespace Logic
//--------------------------------new data type-------------------------------- //--------------------------------new data type--------------------------------
[NonSerialized] public MapConfig MapConfig; [NonSerialized] public MapConfig MapConfig;
[NonSerialized] public MapData MapData; [NonSerialized] public static MapData MapData;
//各Logic模块的引用 //各Logic模块的引用
//一级logicAI和input //一级logicAI和input

View File

@ -30,7 +30,7 @@ namespace Logic
public void CancelAllHighlight() //专门用来应对BottomInfoUI的CloseButton的函数点击close的时候先调用这个函数通知interaction处理好信息再关闭bottominfo 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; gridData.CityBorderRenderMark = false;
var gridRenderer = MapRenderer.Instance.ROGridMap[gridData.Id]; var gridRenderer = MapRenderer.Instance.ROGridMap[gridData.Id];
@ -42,7 +42,7 @@ namespace Logic
gridRenderer.SetSelectHighlight(false); gridRenderer.SetSelectHighlight(false);
gridRenderer.SetMoveHighlight(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; if (!MapRenderer.Instance.ROUnitMap.ContainsKey(unitData.Id)) continue;
var unitRenderer = MapRenderer.Instance.ROUnitMap[unitData.Id]; var unitRenderer = MapRenderer.Instance.ROUnitMap[unitData.Id];
@ -65,7 +65,7 @@ namespace Logic
return; return;
} }
bool hasUnit = _main.MapData.GetUnitDataByGid(gridData.Id,out var unitData); bool hasUnit = Main.MapData.GetUnitDataByGid(gridData.Id,out var unitData);
//Debug.Log(hasUnit); //Debug.Log(hasUnit);
var roGrid = MapRenderer.Instance.ROGridMap[gridData.Id]; var roGrid = MapRenderer.Instance.ROGridMap[gridData.Id];
//如果这次点击有unit //如果这次点击有unit
@ -87,7 +87,7 @@ namespace Logic
else if (roUnit.IsAttackHighlight) else if (roUnit.IsAttackHighlight)
{ {
CancelAllHighlight(); CancelAllHighlight();
Main.UnitLogic.Attack(_main.MapData, MapRenderer.Instance.SelectUnitData, unitData); Main.UnitLogic.Attack(Main.MapData, MapRenderer.Instance.SelectUnitData, unitData);
UIManager.Instance.BottomInfoUI.UIBottomInfoStatus = false; UIManager.Instance.BottomInfoUI.UIBottomInfoStatus = false;
} }
//如果是选择角色 //如果是选择角色
@ -105,7 +105,7 @@ namespace Logic
UIManager.Instance.BottomInfoUI.UIBottomInfoIsGrid = false; UIManager.Instance.BottomInfoUI.UIBottomInfoIsGrid = false;
UIManager.Instance.BottomInfoUI.UIBottomInfoStatusObjectId = unitData.Id; UIManager.Instance.BottomInfoUI.UIBottomInfoStatusObjectId = unitData.Id;
//如果是selfplayer的unit显示可操作区域 //如果是selfplayer的unit显示可操作区域
if (Main.UnitLogic.CheckIsSelfPlayer(_main.MapData, unitData.Id)) if (Main.UnitLogic.CheckIsSelfPlayer(Main.MapData, unitData.Id))
MapRenderer.Instance.SetUnitAllMoveAttackTargetHighlight(unitData.Id); MapRenderer.Instance.SetUnitAllMoveAttackTargetHighlight(unitData.Id);
@ -122,7 +122,7 @@ namespace Logic
else if (roGrid.IsMoveHighlight) else if (roGrid.IsMoveHighlight)
{ {
CancelAllHighlight(); 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); MapRenderer.Instance.CameraController.CameraFocusOnGrid(gridData);
UIManager.Instance.BottomInfoUI.UIBottomInfoStatus = false; UIManager.Instance.BottomInfoUI.UIBottomInfoStatus = false;
@ -149,7 +149,7 @@ namespace Logic
if (_mapData.GetCityDataByTerritoryGid(gridData.Id, out var city)) if (_mapData.GetCityDataByTerritoryGid(gridData.Id, out var city))
{ {
if(_mapData.GetGridDataByCityId(city.Id,out var gridTmp) 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(); MapRenderer.Instance.ROGridMap[gridTmp.Id].SetBounceAnim();
} }

View File

@ -225,7 +225,7 @@ namespace TH1Renderer
// 更新视野 // 更新视野
if (_currentTargetGridData != null) if (_currentTargetGridData != null)
// 调用UpdateSightByRadius更新视野 // 调用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); _currentTargetGridData.Feature == TerrainFeature.Mountain? 2 : 1);
// 检查是否需要继续移动 // 检查是否需要继续移动
@ -250,7 +250,7 @@ namespace TH1Renderer
// 延迟一小段时间后继续移动 // 延迟一小段时间后继续移动
Timer.Instance.TimerRegister(this, () => { Timer.Instance.TimerRegister(this, () => {
MoveExplorerToLeastVisibleDirection(_currentTargetGridData, _main.MapData.PlayerMap.SelfPlayerData); MoveExplorerToLeastVisibleDirection(_currentTargetGridData, Main.MapData.PlayerMap.SelfPlayerData);
}, delayTime); }, delayTime);
} }
else if (_explorerMoveCount >= _explorerMaxMoves && _temporaryExplorer != null) else if (_explorerMoveCount >= _explorerMaxMoves && _temporaryExplorer != null)
@ -295,7 +295,7 @@ namespace TH1Renderer
List<uint> toRemove = new List<uint>(); List<uint> toRemove = new List<uint>();
foreach (var roUnitId in ROUnitMap.Keys) 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); toRemove.Add(roUnitId);
} }
@ -328,23 +328,23 @@ namespace TH1Renderer
//当gridMap出现新的对象时新建对象 //当gridMap出现新的对象时新建对象
public void RenderUpdateGridMap() public void RenderUpdateGridMap()
{ {
foreach (var gridData in _main.MapData.GridMap.GridList) foreach (var gridData in Main.MapData.GridMap.GridList)
{ {
ROGridMap[gridData.Id] = ROGridMap[gridData.Id] =
new GridRenderer(_gridPrefab, _gridRenderMap, gridData.Id, _main.MapData, _main); new GridRenderer(_gridPrefab, _gridRenderMap, gridData.Id, Main.MapData, _main);
} }
} }
//当cityMap出现新的对象时新建对象 //当cityMap出现新的对象时新建对象
public void RenderUpdateCityMap() public void RenderUpdateCityMap()
{ {
foreach (var cityData in _main.MapData.CityMap.CityList) foreach (var cityData in Main.MapData.CityMap.CityList)
if(!ROCityInfoMap.ContainsKey(cityData.Id)) if(!ROCityInfoMap.ContainsKey(cityData.Id))
{ {
//生成城镇图像 //生成城镇图像
RenderUpdateCityBuildings(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; cityData.CityInfoRenderMark = true;
} }
} }
@ -352,11 +352,11 @@ namespace TH1Renderer
//当unitMap出现新的对象时新建对象 //当unitMap出现新的对象时新建对象
public void RenderUpdateUnitMap() public void RenderUpdateUnitMap()
{ {
foreach (var unitData in _main.MapData.UnitMap.UnitList) foreach (var unitData in Main.MapData.UnitMap.UnitList)
if(!ROUnitMap.ContainsKey(unitData.Id)) 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() //更新全地图的所有边界 public void RenderUpdateBorders() //更新全地图的所有边界
{ {
foreach (var gridData in _main.MapData.GridMap.GridList) foreach (var gridData in Main.MapData.GridMap.GridList)
ROGridMap[gridData.Id].UpdateBorder(); ROGridMap[gridData.Id].UpdateBorder();
} }
private void RenderUpdateCityBuildings(uint cityId) //更新主城建筑的渲染 private void RenderUpdateCityBuildings(uint cityId) //更新主城建筑的渲染
{ {
_main.MapData.GetGridIdByCityId(cityId, out var gridId); Main.MapData.GetGridIdByCityId(cityId, out var gridId);
ROGridMap[gridId].RenderUpdateCityBuilding(cityId); ROGridMap[gridId].RenderUpdateCityBuilding(cityId);
} }
public bool SetUnitAllMoveAttackTargetHighlight(uint uid) //渲染所有可移动位置的高亮,其中可以攻击的位置要标红,如果是自己人或者敌人在移动范围内但是不在攻击范围内,则不能高亮 public bool SetUnitAllMoveAttackTargetHighlight(uint uid) //渲染所有可移动位置的高亮,其中可以攻击的位置要标红,如果是自己人或者敌人在移动范围内但是不在攻击范围内,则不能高亮
{ {
bool ret = false; bool ret = false;
Main.UnitLogic.CalcUnitMoveInfo(_main.MapData, uid); Main.UnitLogic.CalcUnitMoveInfo(Main.MapData, uid);
_main.MapData.UnitMap.GetUnitDataByUnitId(uid, out var unitData); Main.MapData.UnitMap.GetUnitDataByUnitId(uid, out var unitData);
_main.MapData.GetGridDataByUnitId(uid, out var gridData); Main.MapData.GetGridDataByUnitId(uid, out var gridData);
_main.MapData.GetPlayerDataByUnitId(uid, out var playerData); Main.MapData.GetPlayerDataByUnitId(uid, out var playerData);
//unitLogic.DebugOutputMoveInfo(); //unitLogic.DebugOutputMoveInfo();
int r = Mathf.Max((Table.Instance.UnitTypeDataAssets.GetUnitTypeInfo(unitData.UnitType,unitData.GiantType,out var info)?info.MoveRange:0) * 2, 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); 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); 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) foreach(var targetGridData in targetGridDataList)
{ {
//如果不在视野 跳过 //如果不在视野 跳过
if (!playerData.Sight.CheckIsInSight(targetGridData.Id)) continue; 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 //如果是移动目标且unit的MP>0
if ((sig == MoveAttackType.Move || sig == MoveAttackType.MoveToPort || if ((sig == MoveAttackType.Move || sig == MoveAttackType.MoveToPort ||
sig == MoveAttackType.MoveAshore) && unitData.MP > 0) sig == MoveAttackType.MoveAshore) && unitData.MP > 0)
@ -432,18 +432,18 @@ namespace TH1Renderer
if (sig == MoveAttackType.Attack && unitData.AP > 0) if (sig == MoveAttackType.Attack && unitData.AP > 0)
{ {
ret = true; ret = true;
if (!_main.MapData.GetUnitDataByGid(targetGridData.Id, out var unitDataB)) if (!Main.MapData.GetUnitDataByGid(targetGridData.Id, out var unitDataB))
continue; continue;
//如果可以杀死,做一个提示 //如果可以杀死,做一个提示
if (Table.Instance.CalcDamage(_main.MapData, unitData, unitDataB) >= unitDataB.Health) if (Table.Instance.CalcDamage(Main.MapData, unitData, unitDataB) >= unitDataB.Health)
{ {
targetGridData.VFXRenderMarkDieHintStart = true; targetGridData.VFXRenderMarkDieHintStart = true;
//0代表这是杀死提示 //0代表这是杀死提示
targetGridData.VFXRenderMarkDieHintStartParam = 0; targetGridData.VFXRenderMarkDieHintStartParam = 0;
} }
else if(Main.UnitLogic.CanCounter(_main.MapData, unitData, unitDataB) && else if(Main.UnitLogic.CanCounter(Main.MapData, unitData, unitDataB) &&
Table.Instance.CalcDamage(_main.MapData, unitData, unitDataB,true) >= unitData.Health) Table.Instance.CalcDamage(Main.MapData, unitData, unitDataB,true) >= unitData.Health)
{ {
targetGridData.VFXRenderMarkDieHintStart = true; targetGridData.VFXRenderMarkDieHintStart = true;
//1代表这是被杀死提示 //1代表这是被杀死提示
@ -458,19 +458,19 @@ namespace TH1Renderer
//返回一个Unit是否存在移动或者攻击目标 //返回一个Unit是否存在移动或者攻击目标
public bool CheckUnitHasMoveAttackTarget(uint uid) public bool CheckUnitHasMoveAttackTarget(uint uid)
{ {
Main.UnitLogic.CalcUnitMoveInfo(_main.MapData, uid); Main.UnitLogic.CalcUnitMoveInfo(Main.MapData, uid);
_main.MapData.UnitMap.GetUnitDataByUnitId(uid, out var unitData); Main.MapData.UnitMap.GetUnitDataByUnitId(uid, out var unitData);
_main.MapData.GetGridDataByUnitId(uid, out var gridData); Main.MapData.GetGridDataByUnitId(uid, out var gridData);
_main.MapData.GetPlayerDataByUnitId(uid, out var playerData); Main.MapData.GetPlayerDataByUnitId(uid, out var playerData);
//unitLogic.DebugOutputMoveInfo(); //unitLogic.DebugOutputMoveInfo();
int r = Mathf.Max((Table.Instance.UnitTypeDataAssets.GetUnitTypeInfo(unitData.UnitType,unitData.GiantType,out var info)?info.MoveRange:0) * 2, 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); 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) foreach(var targetGridData in targetGridDataList)
{ {
//如果不在视野 跳过 //如果不在视野 跳过
if (!playerData.Sight.CheckIsInSight(targetGridData.Id)) continue; 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 //如果是移动目标且unit的MP>0
if ((sig == MoveAttackType.Move || sig == MoveAttackType.MoveToPort || if ((sig == MoveAttackType.Move || sig == MoveAttackType.MoveToPort ||
sig == MoveAttackType.MoveAshore) && unitData.MP > 0) sig == MoveAttackType.MoveAshore) && unitData.MP > 0)
@ -508,14 +508,14 @@ namespace TH1Renderer
public void CreateTemporaryExplorer(GridData gridData, float maxDuration) 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("无法获取玩家数据,无法创建探索者"); Debug.LogWarning("无法获取玩家数据,无法创建探索者");
return; return;
} }
// 检查是否是自己的玩家 // 检查是否是自己的玩家
bool isSelfPlayer = playerData.Id == _main.MapData.PlayerMap.SelfPlayerData.Id; bool isSelfPlayer = playerData.Id == Main.MapData.PlayerMap.SelfPlayerData.Id;
// 如果不是自己的玩家直接计算10步探索并更新视野不进行渲染 // 如果不是自己的玩家直接计算10步探索并更新视野不进行渲染
if (!isSelfPlayer) if (!isSelfPlayer)
@ -538,7 +538,7 @@ namespace TH1Renderer
Vector2Int currentPos = new Vector2Int(_currentTargetGridData.Pos.X, _currentTargetGridData.Pos.Y); 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; Vector2Int prevPos = currentPos;
@ -596,7 +596,7 @@ namespace TH1Renderer
if (Table.Instance.UnitTypeDataAssets.GetUnitTypeInfo(explorerUnitType, GiantType.None, out var unitTypeInfo)) if (Table.Instance.UnitTypeDataAssets.GetUnitTypeInfo(explorerUnitType, GiantType.None, out var unitTypeInfo))
{ {
// 使用GetUnitSpriteByInfo方法获取精灵 // 使用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; spriteRenderer.sprite = sprite;
// 确保精灵渲染器设置正确 // 确保精灵渲染器设置正确
@ -631,8 +631,8 @@ namespace TH1Renderer
Vector2Int currentPos = new Vector2Int(startGridData.Pos.X, startGridData.Pos.Y); Vector2Int currentPos = new Vector2Int(startGridData.Pos.X, startGridData.Pos.Y);
// 地图尺寸 // 地图尺寸
int mapWidth = (int)_main.MapData.MapConfig.Width; int mapWidth = (int)Main.MapData.MapConfig.Width;
int mapHeight = (int)_main.MapData.MapConfig.Height; int mapHeight = (int)Main.MapData.MapConfig.Height;
// 存储每个方向的最近未探索格子距离 // 存储每个方向的最近未探索格子距离
float[] directionMinDistance = new float[8]; float[] directionMinDistance = new float[8];
@ -654,7 +654,7 @@ namespace TH1Renderer
continue; 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)) if (!playerData.Sight.CheckIsInSight(gridData.Id))
@ -706,7 +706,7 @@ namespace TH1Renderer
continue; 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; continue;
// 检查地形是否可通行 // 检查地形是否可通行
@ -743,7 +743,7 @@ namespace TH1Renderer
continue; 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; continue;
// 检查地形是否可通行 // 检查地形是否可通行
@ -770,13 +770,13 @@ namespace TH1Renderer
Vector2Int targetPos = currentPos + finalMoveDir; 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; _explorerPreviousPosition = currentPos;
// 更新视野 // 更新视野
Main.PlayerLogic.UpdateSightByRadius(_main.MapData, playerData, targetGridData, 1); Main.PlayerLogic.UpdateSightByRadius(Main.MapData, playerData, targetGridData, 1);
// 获取移动动画时间 // 获取移动动画时间
float moveTime = 0.5f; float moveTime = 0.5f;
@ -881,8 +881,8 @@ namespace TH1Renderer
Vector2Int currentPos = new Vector2Int(startGridData.Pos.X, startGridData.Pos.Y); Vector2Int currentPos = new Vector2Int(startGridData.Pos.X, startGridData.Pos.Y);
// 地图尺寸 // 地图尺寸
int mapWidth = (int)_main.MapData.MapConfig.Width; int mapWidth = (int)Main.MapData.MapConfig.Width;
int mapHeight = (int)_main.MapData.MapConfig.Height; int mapHeight = (int)Main.MapData.MapConfig.Height;
// 存储每个方向的最近未探索格子距离 // 存储每个方向的最近未探索格子距离
float[] directionMinDistance = new float[8]; float[] directionMinDistance = new float[8];
@ -904,7 +904,7 @@ namespace TH1Renderer
continue; 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)) if (!playerData.Sight.CheckIsInSight(gridData.Id))
@ -957,7 +957,7 @@ namespace TH1Renderer
// 检查该位置是否可通行 // 检查该位置是否可通行
GridData tempNextGridData; 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; continue;
// 检查地形是否可通行 // 检查地形是否可通行
@ -995,7 +995,7 @@ namespace TH1Renderer
// 检查该位置是否可通行 // 检查该位置是否可通行
GridData tempNextGridData; 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; continue;
// 检查地形是否可通行 // 检查地形是否可通行
@ -1020,7 +1020,7 @@ namespace TH1Renderer
Vector2Int targetPos = currentPos + finalMoveDir; 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; Vector2Int nextPos = currentPos + dirVector;
// 检查位置是否在地图范围内 // 检查位置是否在地图范围内
if (nextPos.x < 0 || nextPos.x >= _main.MapData.MapConfig.Width || if (nextPos.x < 0 || nextPos.x >= Main.MapData.MapConfig.Width ||
nextPos.y < 0 || nextPos.y >= _main.MapData.MapConfig.Height) nextPos.y < 0 || nextPos.y >= Main.MapData.MapConfig.Height)
continue; 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; continue;
// 如果已经访问过,跳过 // 如果已经访问过,跳过

View File

@ -190,7 +190,7 @@ public class BottomInfoUI// : MonoBehaviour
continue; continue;
if (actionInfo.VarientIcon) 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(); //timg.SetNativeSize();
//childAction.Find("Image").localScale = new Vector3(0.3f, 0.3f, 0.3f); //childAction.Find("Image").localScale = new Vector3(0.3f, 0.3f, 0.3f);
//childAction.Find("Image").localPosition = new Vector3(0f, -40f, 0f); //childAction.Find("Image").localPosition = new Vector3(0f, -40f, 0f);
@ -223,13 +223,13 @@ public class BottomInfoUI// : MonoBehaviour
GameObject.Destroy(child.gameObject); GameObject.Destroy(child.gameObject);
//如果预览的是grid或者city //如果预览的是grid或者city
if (UIBottomInfoIsGrid && _main.MapData.GridMap.GetGridDataByGid(UIBottomInfoStatusObjectId,out var gridData)) if (UIBottomInfoIsGrid && Main.MapData.GridMap.GetGridDataByGid(UIBottomInfoStatusObjectId,out var gridData))
{ {
//现获取对应的playerData //现获取对应的playerData
_main.MapData.GetPlayerDataByTerritoryGridId(UIBottomInfoStatusObjectId, out var player); Main.MapData.GetPlayerDataByTerritoryGridId(UIBottomInfoStatusObjectId, out var player);
//如果是city //如果是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 //如果是unit
else else
{ {
_main.MapData.UnitMap.GetUnitDataByUnitId(UIBottomInfoStatusObjectId,out var unitData); Main.MapData.UnitMap.GetUnitDataByUnitId(UIBottomInfoStatusObjectId,out var unitData);
//筹备unit预览格子 //筹备unit预览格子
GameObject clone = GameObject.Instantiate(MapRenderer.Instance.ROUnitMap[UIBottomInfoStatusObjectId].GetROUnit() as GameObject); GameObject clone = GameObject.Instantiate(MapRenderer.Instance.ROUnitMap[UIBottomInfoStatusObjectId].GetROUnit() as GameObject);
clone.transform.SetParent(_unitPreviewArea.transform); clone.transform.SetParent(_unitPreviewArea.transform);
@ -516,10 +516,10 @@ public class BottomInfoUI// : MonoBehaviour
CommonActionId fakeActionId = clickedItem.GetComponent<ActionIdMono>().ActionId; CommonActionId fakeActionId = clickedItem.GetComponent<ActionIdMono>().ActionId;
//如果钱不够,退出 //如果钱不够,退出
if (Table.Instance.QueryActionCost(fakeActionId) > _main.MapData.PlayerMap.SelfPlayerData.PlayerWealth) if (Table.Instance.QueryActionCost(fakeActionId) > Main.MapData.PlayerMap.SelfPlayerData.PlayerWealth)
return; return;
//如果没科技,退出 //如果没科技,退出
if (!_main.MapData.PlayerMap.SelfPlayerData.TechTree.CheckActionCan(fakeActionId)) if (!Main.MapData.PlayerMap.SelfPlayerData.TechTree.CheckActionCan(fakeActionId))
return; return;
UnitData unitData = null; UnitData unitData = null;
CityData cityData = null; CityData cityData = null;
@ -533,28 +533,28 @@ public class BottomInfoUI// : MonoBehaviour
if (fakeActionId.ActionType == CommonActionType.TrainUnit) 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; 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 else
{ {
_main.MapData.UnitMap.GetUnitDataByUnitId(UIBottomInfoStatusObjectId,out unitData); Main.MapData.UnitMap.GetUnitDataByUnitId(UIBottomInfoStatusObjectId,out unitData);
mainObjectType = MainObjectType.Unit; mainObjectType = MainObjectType.Unit;
} }
CommonActionParams actionParams = new CommonActionParams(_mapData, 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}"); //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 (UIBottomInfoIsGrid)
{ {
//如果科技未解锁 //如果科技未解锁
if (!_main.MapData.PlayerMap.SelfPlayerData.TechTree.CheckActionCan(tActionId)) if (!Main.MapData.PlayerMap.SelfPlayerData.TechTree.CheckActionCan(tActionId))
{ {
starImage.gameObject.SetActive(false); starImage.gameObject.SetActive(false);
textUIComponent.gameObject.SetActive(false); textUIComponent.gameObject.SetActive(false);
@ -613,9 +613,9 @@ public class BottomInfoUI// : MonoBehaviour
CityData cityData; CityData cityData;
//如果是一个满员城市在grid上生产单位要额外判断一下这个是不是生产单位的行为 //如果是一个满员城市在grid上生产单位要额外判断一下这个是不是生产单位的行为
if (!_main.MapData.GetCityDataByGid(UIBottomInfoStatusObjectId,out cityData)){ if (!Main.MapData.GetCityDataByGid(UIBottomInfoStatusObjectId,out cityData)){
if(_main.MapData.GetCityDataByTerritoryGid(UIBottomInfoStatusObjectId,out cityData) if(Main.MapData.GetCityDataByTerritoryGid(UIBottomInfoStatusObjectId,out cityData)
&& _main.MapData.CheckIfCityFullPopulation(cityData) && Main.MapData.CheckIfCityFullPopulation(cityData)
&& tActionId.ActionType == CommonActionType.TrainUnit) && tActionId.ActionType == CommonActionType.TrainUnit)
{ {
textUIComponent.color = Color.gray; 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; textUIComponent.color = Color.gray;
backImage.sprite = ActionBGUnavailable; backImage.sprite = ActionBGUnavailable;
@ -633,7 +633,7 @@ public class BottomInfoUI// : MonoBehaviour
textUIComponent.gameObject.SetActive(false); textUIComponent.gameObject.SetActive(false);
} }
//如果钱不够 //如果钱不够
if (_main.MapData.PlayerMap.SelfPlayerData.PlayerWealth < actionLogic.GetCost()) if (Main.MapData.PlayerMap.SelfPlayerData.PlayerWealth < actionLogic.GetCost())
{ {
textUIComponent.color = Color.red; textUIComponent.color = Color.red;
backImage.sprite = ActionBGExpensive; backImage.sprite = ActionBGExpensive;
@ -650,7 +650,7 @@ public class BottomInfoUI// : MonoBehaviour
{ {
starImage.gameObject.SetActive(true); starImage.gameObject.SetActive(true);
textUIComponent.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; textUIComponent.color = Color.red;
backImage.sprite = ActionBGExpensive; backImage.sprite = ActionBGExpensive;
@ -728,7 +728,7 @@ public class BottomInfoUI// : MonoBehaviour
_debugGrid.SetActive(true); _debugGrid.SetActive(true);
_debugUnit.SetActive(false); _debugUnit.SetActive(false);
_debugCity.SetActive(false); _debugCity.SetActive(false);
if (!_main.MapData.GridMap.GetGridDataByGid(UIBottomInfoStatusObjectId, out var gridData)) if (!Main.MapData.GridMap.GetGridDataByGid(UIBottomInfoStatusObjectId, out var gridData))
return; return;
_debugGrid.transform.Find("BuildingLevelValue").GetComponent<TextMeshProUGUI>().text = gridData.buildingLevel.ToString(); _debugGrid.transform.Find("BuildingLevelValue").GetComponent<TextMeshProUGUI>().text = gridData.buildingLevel.ToString();
@ -740,7 +740,7 @@ public class BottomInfoUI// : MonoBehaviour
_debugCity.SetActive(false); _debugCity.SetActive(false);
// 获取单位数据 // 获取单位数据
if (!_main.MapData.UnitMap.GetUnitDataByUnitId(UIBottomInfoStatusObjectId, out var unitData)) if (!Main.MapData.UnitMap.GetUnitDataByUnitId(UIBottomInfoStatusObjectId, out var unitData))
return; return;
// 填充单位类型信息 // 填充单位类型信息

View File

@ -133,7 +133,7 @@ public class TechTreeUI
btn.onClick.AddListener(() => SetTechCheckPanelShowHide(true,techType)); btn.onClick.AddListener(() => SetTechCheckPanelShowHide(true,techType));
//Debug.Log(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<Image>(); Image img = techNode.transform.Find("Background").GetComponent<Image>();
img.sprite = ResourceCache.Instance.SpriteCache.TechCompleteBackground; img.sprite = ResourceCache.Instance.SpriteCache.TechCompleteBackground;
@ -155,7 +155,7 @@ public class TechTreeUI
} }
else else
//如果该科技未解锁 //如果该科技未解锁
if (_main.MapData.PlayerMap.SelfPlayerData.TechTree.CheckIfTechUnsee(techType)) if (Main.MapData.PlayerMap.SelfPlayerData.TechTree.CheckIfTechUnsee(techType))
{ {
Image img = techNode.Find("Background").GetComponent<Image>(); Image img = techNode.Find("Background").GetComponent<Image>();
img.sprite = ResourceCache.Instance.SpriteCache.TechLockedBackground; img.sprite = ResourceCache.Instance.SpriteCache.TechLockedBackground;
@ -164,17 +164,17 @@ public class TechTreeUI
for (int i = 1; i <= techInfo.techActions.Count; i++) for (int i = 1; i <= techInfo.techActions.Count; i++)
techNode.transform.Find($"ImageGroup/Circle{i}")?.GetComponent<Image>().gameObject.SetActive(false); techNode.transform.Find($"ImageGroup/Circle{i}")?.GetComponent<Image>().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<TextMeshProUGUI>(); TextMeshProUGUI costTxt = techNode.Find("costNumber").GetComponent<TextMeshProUGUI>();
//计算目前该tech的学习成本=科技基础cost * 城市数 + 4 //计算目前该tech的学习成本=科技基础cost * 城市数 + 4
var img = techNode.Find("Background").GetComponent<Image>(); var img = techNode.Find("Background").GetComponent<Image>();
img.sprite = ResourceCache.Instance.SpriteCache.TechAvailableBackground; 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); * techInfo.CostLevel + 4);
costTxt.text = tmpCost.ToString(); costTxt.text = tmpCost.ToString();
if (tmpCost > _main.MapData.PlayerMap.SelfPlayerData.PlayerWealth) if (tmpCost > Main.MapData.PlayerMap.SelfPlayerData.PlayerWealth)
costTxt.color = Color.red; costTxt.color = Color.red;
else costTxt.color = Color.white; else costTxt.color = Color.white;
costTxt.gameObject.SetActive(true); costTxt.gameObject.SetActive(true);
@ -219,10 +219,10 @@ public class TechTreeUI
public void RenderUpdateTechCheckPanel(MapData mapData) public void RenderUpdateTechCheckPanel(MapData mapData)
{ {
TechInfo techInfo = Table.Instance.TechDataAssets.GetTechInfo(_techTypeChoose); TechInfo techInfo = Table.Instance.TechDataAssets.GetTechInfo(_techTypeChoose);
PlayerData selfPlayer = _main.MapData.PlayerMap.SelfPlayerData; PlayerData selfPlayer = Main.MapData.PlayerMap.SelfPlayerData;
ROTechCheckPanel.SetActive(true); ROTechCheckPanel.SetActive(true);
//记录一下目前点击的techNo和费用以供点击Research时判断使用 //记录一下目前点击的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>(); TextMeshProUGUI title = ROTechCheckPanel.transform.Find("Title").GetComponent<TextMeshProUGUI>();
TextMeshProUGUI cost = ROTechCheckPanel.transform.Find("Title").transform.Find("costNumber").GetComponent<TextMeshProUGUI>(); TextMeshProUGUI cost = ROTechCheckPanel.transform.Find("Title").transform.Find("costNumber").GetComponent<TextMeshProUGUI>();
@ -330,9 +330,9 @@ public class TechTreeUI
{ {
//钱不够就不能研发。这种情况理应不会发生 //钱不够就不能研发。这种情况理应不会发生
if (_main.MapData.PlayerMap.SelfPlayerData.PlayerWealth < _techNoChooseCost) if (Main.MapData.PlayerMap.SelfPlayerData.PlayerWealth < _techNoChooseCost)
return; 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); SetTechCheckPanelShowHide(false);
RenderUpdateTechTreeData(); RenderUpdateTechTreeData();
UIManager.Instance.TopBarUI.RenderMark = true; UIManager.Instance.TopBarUI.RenderMark = true;

View File

@ -73,9 +73,9 @@ public class TopBarUI
_showTurnHint = false; _showTurnHint = false;
ShowTurnHint(); ShowTurnHint();
} }
_money.text = _main.MapData.PlayerMap.SelfPlayerData.PlayerWealth + _money.text = Main.MapData.PlayerMap.SelfPlayerData.PlayerWealth +
" <color=yellow>+ " + Main.PlayerLogic.GetPlayerStarsPerTurn(_main.MapData, _main.MapData.PlayerMap.SelfPlayerData.Id) + "</color>"; " <color=yellow>+ " + Main.PlayerLogic.GetPlayerStarsPerTurn(Main.MapData, Main.MapData.PlayerMap.SelfPlayerData.Id) + "</color>";
_faith.text = _main.MapData.PlayerMap.SelfPlayerData.PlayerScore.ToString(); _faith.text = Main.MapData.PlayerMap.SelfPlayerData.PlayerScore.ToString();
_turn.text = _main.MapData.PlayerMap.SelfPlayerData.Turn + "/30"; _turn.text = Main.MapData.PlayerMap.SelfPlayerData.Turn + "/30";
} }
} }