完成阻隔点
This commit is contained in:
BIN
Assets/GameAssets/Maps/1000/XML/Obs.bytes
Normal file
BIN
Assets/GameAssets/Maps/1000/XML/Obs.bytes
Normal file
Binary file not shown.
7
Assets/GameAssets/Maps/1000/XML/Obs.bytes.meta
Normal file
7
Assets/GameAssets/Maps/1000/XML/Obs.bytes.meta
Normal file
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 654e4d2fabdac1d45ac947a83db687f2
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
File diff suppressed because it is too large
Load Diff
@@ -49,7 +49,7 @@ public class GridSelector : MonoBehaviour
|
||||
//创建新的地图默认为全部是可行走区域
|
||||
for (int i = 0; i < totalNumber; i++)
|
||||
{
|
||||
dataArray[i].barrier = (int)CellType.None;
|
||||
dataArray[i].barrier = (int)CellType.Move;
|
||||
}
|
||||
RefreshPlaneRender();
|
||||
}
|
||||
@@ -77,7 +77,7 @@ public class GridSelector : MonoBehaviour
|
||||
}
|
||||
public int getdataByPos(Vector3 pos)
|
||||
{
|
||||
int hitIndex = Mathf.FloorToInt(pos.x / map.sideLength) + Mathf.FloorToInt(pos.z / map.sideLength) * horizontalNumber;
|
||||
int hitIndex = Mathf.FloorToInt(pos.x / map.sideWidth) + Mathf.FloorToInt(pos.z / map.sideHeight) * horizontalNumber;
|
||||
return hitIndex;
|
||||
}
|
||||
private void Awake()
|
||||
@@ -366,7 +366,9 @@ public class GridSelector : MonoBehaviour
|
||||
}
|
||||
private void setDataCellType(int index,bool IsCancel)
|
||||
{
|
||||
if (true)
|
||||
if (UICellEditor.Instance == null) return;
|
||||
if (UICellEditor.Instance.editorGrid == CellType.Move ||
|
||||
UICellEditor.Instance.editorGrid == CellType.Obstacle)
|
||||
{
|
||||
if (IsCancel)
|
||||
{
|
||||
@@ -385,7 +387,7 @@ public class GridSelector : MonoBehaviour
|
||||
dataArray[index].barrier |= (int)CellType.Obstacle;
|
||||
}
|
||||
}
|
||||
else if (true)
|
||||
else if (UICellEditor.Instance.editorGrid == CellType.Safe)
|
||||
{
|
||||
if (IsCancel)
|
||||
{
|
||||
@@ -399,7 +401,7 @@ public class GridSelector : MonoBehaviour
|
||||
dataArray[index].barrier |= (int)CellType.Safe;
|
||||
}
|
||||
}
|
||||
else if (true)
|
||||
else if (UICellEditor.Instance.editorGrid == CellType.Stall)
|
||||
{
|
||||
if (IsCancel)
|
||||
{
|
||||
@@ -413,12 +415,50 @@ public class GridSelector : MonoBehaviour
|
||||
dataArray[index].barrier |= (int)CellType.Stall;
|
||||
}
|
||||
}
|
||||
else if (UICellEditor.Instance.editorGrid == CellType.Hide)
|
||||
{
|
||||
if (IsCancel)
|
||||
{
|
||||
if ((dataArray[index].barrier & (int)CellType.Hide) != 0)
|
||||
{
|
||||
dataArray[index].barrier &= ~(int)CellType.Hide;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
dataArray[index].barrier |= (int)CellType.Hide;
|
||||
}
|
||||
}
|
||||
}
|
||||
public void FullAllArea()
|
||||
{
|
||||
for (int i = 0; i < dataArray.Length; i++)
|
||||
{
|
||||
CellType cell = (CellType)dataArray[i].barrier;
|
||||
if (!cell.HasFlag(UICellEditor.Instance.editorGrid))
|
||||
{
|
||||
dataArray[i].barrier |= (int)UICellEditor.Instance.editorGrid;
|
||||
}
|
||||
}
|
||||
RefreshPlaneRender();
|
||||
}
|
||||
public void ClearSelectArea()
|
||||
{
|
||||
for (int i = 0; i < dataArray.Length; i++)
|
||||
{
|
||||
CellType cell = (CellType)dataArray[i].barrier;
|
||||
if (cell.HasFlag(UICellEditor.Instance.editorGrid))
|
||||
{
|
||||
dataArray[i].barrier &= ~(int)UICellEditor.Instance.editorGrid;
|
||||
}
|
||||
}
|
||||
RefreshPlaneRender();
|
||||
}
|
||||
|
||||
public void RefreshPlaneRender()
|
||||
{
|
||||
moveNum = 0;
|
||||
for (int i = 0; i < dataArray.Length; i++) {
|
||||
//int barrier = dataArray[i].barrier;
|
||||
setDataColor(i);
|
||||
CellType cell = (CellType)dataArray[i].barrier;
|
||||
if (cell.HasFlag(CellType.Move))
|
||||
@@ -434,10 +474,11 @@ public class GridSelector : MonoBehaviour
|
||||
x = index % horizontalNumber;
|
||||
y = index / horizontalNumber;
|
||||
}
|
||||
//TODO 这里有改动,应该是对的
|
||||
private Vector2 GetCenterPosByIndex(int index)
|
||||
{
|
||||
GetXyByIndex(index, out int x, out int y);
|
||||
return new Vector2(x + 0.5f, y + 0.5f) * map.sideLength;
|
||||
return new Vector2((x + 0.5f)*map.sideWidth, (y + 0.5f) * map.sideHeight);
|
||||
}
|
||||
private bool Pnpoly(Vector2 gridPos, Vector2 pos0, Vector2 pos1)
|
||||
{
|
||||
|
||||
@@ -37,20 +37,25 @@ public enum CellType
|
||||
/// <20><>̯<EFBFBD><CCAF><EFBFBD><EFBFBD>
|
||||
/// </summary>
|
||||
Stall = 32,
|
||||
}
|
||||
|
||||
[Flags]
|
||||
public enum CellLayer
|
||||
{
|
||||
Move = 1, //<2F>ƶ<EFBFBD>
|
||||
Obstacle = 2, //<2F>赲
|
||||
Hide = 4, //<2F><><EFBFBD><EFBFBD>
|
||||
Safe = 16, //<2F><>ȫ<EFBFBD><C8AB>
|
||||
Stall = 32, //<2F><>̯
|
||||
Audio = 64, //<2F><>Ч
|
||||
Trigger = 128, //<2F><><EFBFBD><EFBFBD>
|
||||
Monster = 256 //<2F><><EFBFBD><EFBFBD>
|
||||
}
|
||||
|
||||
//[Flags]
|
||||
//public enum CellLayer
|
||||
//{
|
||||
// None = 0, //<2F><>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD>
|
||||
// Move = 1, //<2F>ƶ<EFBFBD>
|
||||
// Obstacle = 2, //<2F>赲
|
||||
// Hide = 4, //<2F><><EFBFBD><EFBFBD>
|
||||
// Safe = 16, //<2F><>ȫ<EFBFBD><C8AB>
|
||||
// Stall = 32, //<2F><>̯
|
||||
// Audio = 64, //<2F><>Ч
|
||||
// Trigger = 128, //<2F><><EFBFBD><EFBFBD>
|
||||
// Monster = 256 //<2F><><EFBFBD><EFBFBD>
|
||||
//}
|
||||
/// <summary>
|
||||
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
|
||||
/// </summary>
|
||||
@@ -66,41 +71,38 @@ public class AreaColor
|
||||
}
|
||||
public class CellTypeColors
|
||||
{
|
||||
public static Color None = new Color(0x80 / 255f, 0x80 / 255f, 0x80 / 255f); // <20><>ɫ (#808080)
|
||||
public static Color Move = new Color(0x33 / 255f, 0xcc / 255f, 0x33 / 255f); // <20><>ɫ (#33cc33)
|
||||
public static Color Obstacle = new Color(0xff / 255f, 0x00 / 255f, 0x00 / 255f); // <20><>ɫ (#ff4d4d)
|
||||
public static Color Hide = new Color(0x33 / 255f, 0x33 / 255f, 0x33 / 255f); // <20><><EFBFBD><EFBFBD>ɫ (#333333)
|
||||
public static Color HadRole = new Color(0xb3 / 255f, 0x33 / 255f, 0xb3 / 255f); // <20><>ɫ (#b333b3)
|
||||
public static Color Safe = new Color(0x00 / 255f, 0xff / 255f, 0xff / 255f); // <20><>ɫ (#00ffff)
|
||||
public static Color Stall = new Color(0xff / 255f, 0xff / 255f, 0x99 / 255f); // dz<><C7B3>ɫ (#ffff99)
|
||||
public static Color Water = new Color(0x00 / 255f, 0x4c / 255f, 0xb3 / 255f); // ˮ<><CBAE>ɫ (#004cb3)
|
||||
public static Color Snow = new Color(0xff / 255f, 0xff / 255f, 0xff / 255f); // <20><>ɫ (#ffffff)
|
||||
public static Color Sand = new Color(0xff / 255f, 0xcc / 255f, 0x66 / 255f); // ɳ<><C9B3>ɫ (#ffcc66)
|
||||
public static Color Stone = new Color(0x66 / 255f, 0x66 / 255f, 0x66 / 255f); // <20><><EFBFBD><EFBFBD>ɫ (#666666)
|
||||
public static Color Wood = new Color(0x8B / 255f, 0x45 / 255f, 0x13 / 255f); // <20><>ɫ (#8B4513)
|
||||
public static Color Grass = new Color(0x00 / 255f, 0xff / 255f, 0xff / 255f); // <20><>ɫ (#00ffff)
|
||||
public static Color Dirt = new Color(0xff / 255f, 0x49 / 255f, 0x00 / 255f); // dz<><C7B3>ɫ (#FF4900)
|
||||
public static Color None = new Color(0xb0 / 255f, 0xb0 / 255f, 0xb0 / 255f,0); // dz<EFBFBD><EFBFBD>ɫ (#b0b0b0)
|
||||
public static Color Move = new Color(0x00 / 255f, 0xff / 255f, 0x00 / 255f); // <20><><EFBFBD><EFBFBD>ɫ (#00ff00)
|
||||
public static Color Obstacle = new Color(0xff / 255f, 0x00 / 255f, 0x00 / 255f); // <20>ʺ<EFBFBD>ɫ (#ff0000)
|
||||
public static Color Hide = new Color(0x80 / 255f, 0x00 / 255f, 0xff / 255f); // <20><><EFBFBD><EFBFBD>ɫ (#8000ff)
|
||||
public static Color Safe = new Color(0x00 / 255f, 0xff / 255f, 0xff / 255f); // <20><><EFBFBD><EFBFBD>ɫ (#00ffff)
|
||||
public static Color Stall = new Color(0xff / 255f, 0x80 / 255f, 0x00 / 255f); // <20>ʳ<EFBFBD>ɫ (#ff8000)
|
||||
|
||||
public static Color GetColor(CellType cellType)
|
||||
{
|
||||
Color color = Color.clear; // <20><>ʼ<EFBFBD><CABC>Ϊ<EFBFBD><CEAA>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB>ƥ<EFBFBD><C6A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
||||
|
||||
if (cellType == CellType.None) return CellTypeColors.None;
|
||||
if (true)
|
||||
if (cellType.HasFlag(CellType.Move)) color += CellTypeColors.Move * 0.6f;
|
||||
if (cellType.HasFlag(CellType.Obstacle)) color += CellTypeColors.Obstacle * 0.6f;
|
||||
if(UICellEditor.Instance == null) return color;
|
||||
if (UICellEditor.Instance.editorGrid == CellType.Hide)
|
||||
{
|
||||
if (cellType.HasFlag(CellType.Move)) color += CellTypeColors.Move;
|
||||
if (cellType.HasFlag(CellType.Hide)) color += CellTypeColors.Hide * 0.8f;
|
||||
}
|
||||
else if (true)
|
||||
else if (UICellEditor.Instance.editorGrid == CellType.Safe)
|
||||
{
|
||||
if (cellType.HasFlag(CellType.Safe)) color += CellTypeColors.Safe;
|
||||
if (cellType.HasFlag(CellType.Safe)) color += CellTypeColors.Safe * 0.8f;
|
||||
}
|
||||
else if (true)
|
||||
else if (UICellEditor.Instance.editorGrid == CellType.Stall)
|
||||
{
|
||||
if (cellType.HasFlag(CellType.Stall)) color += CellTypeColors.Stall;
|
||||
if (cellType.HasFlag(CellType.Stall)) color += CellTypeColors.Stall * 0.8f;
|
||||
}
|
||||
if (cellType.HasFlag(CellType.Obstacle)) color += CellTypeColors.Obstacle;
|
||||
// <20><><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ,<2C>Ȳ<EFBFBD><C8B2><EFBFBD>һ<EFBFBD><D2BB>
|
||||
//color /= 7.0f; // 7 <20><> CellType <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// ȷ<><C8B7><EFBFBD><EFBFBD>ɫֵ<C9AB><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1
|
||||
color.r = Mathf.Clamp01(color.r);
|
||||
color.g = Mathf.Clamp01(color.g);
|
||||
color.b = Mathf.Clamp01(color.b);
|
||||
color.a = 1f; // ȷ<><C8B7><EFBFBD><EFBFBD><EFBFBD><CDB8>
|
||||
return color;
|
||||
}
|
||||
public static string GetAreaStr(int barrier)
|
||||
|
||||
@@ -80,7 +80,7 @@ public partial class MapManager : MonoBehaviour
|
||||
|
||||
public CellNode[] cellsNode;
|
||||
|
||||
private Dictionary<CellLayer, List<GameObject>> _layCellsMap = new Dictionary<CellLayer, List<GameObject>>();
|
||||
private Dictionary<CellType, List<GameObject>> _layCellsMap = new Dictionary<CellType, List<GameObject>>();
|
||||
|
||||
public void SetEditCellType(EditCellType type)
|
||||
{
|
||||
@@ -688,7 +688,7 @@ public partial class MapManager : MonoBehaviour
|
||||
|
||||
}
|
||||
|
||||
public int GetLayCellCount(CellLayer lay)
|
||||
public int GetLayCellCount(CellType lay)
|
||||
{
|
||||
if(!_layCellsMap.ContainsKey(lay))
|
||||
return 0;
|
||||
@@ -898,55 +898,55 @@ public partial class MapManager : MonoBehaviour
|
||||
}
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD>layer<65><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
public void AddLayerCell(GameObject go, CellLayer layer)
|
||||
public void AddLayerCell(GameObject go, CellType layer)
|
||||
{
|
||||
List<GameObject> cells = null;
|
||||
|
||||
if (((CellLayer)layer & CellLayer.Move) == CellLayer.Move)
|
||||
if (((CellType)layer & CellType.Move) == CellType.Move)
|
||||
{
|
||||
cells = _layCellsMap[CellLayer.Move];
|
||||
cells = _layCellsMap[CellType.Move];
|
||||
cells.Add(go);
|
||||
}
|
||||
|
||||
if (((CellLayer)layer & CellLayer.Obstacle) == CellLayer.Obstacle)
|
||||
if (((CellType)layer & CellType.Obstacle) == CellType.Obstacle)
|
||||
{
|
||||
cells = _layCellsMap[CellLayer.Obstacle];
|
||||
cells = _layCellsMap[CellType.Obstacle];
|
||||
cells.Add(go);
|
||||
}
|
||||
|
||||
if (((CellLayer)layer & CellLayer.Hide) == CellLayer.Hide)
|
||||
if (((CellType)layer & CellType.Hide) == CellType.Hide)
|
||||
{
|
||||
cells = _layCellsMap[CellLayer.Hide];
|
||||
cells = _layCellsMap[CellType.Hide];
|
||||
cells.Add(go);
|
||||
}
|
||||
|
||||
if (((CellLayer)layer & CellLayer.Safe) == CellLayer.Safe)
|
||||
if (((CellType)layer & CellType.Safe) == CellType.Safe)
|
||||
{
|
||||
cells = _layCellsMap[CellLayer.Safe];
|
||||
cells = _layCellsMap[CellType.Safe];
|
||||
cells.Add(go);
|
||||
}
|
||||
|
||||
if (((CellLayer)layer & CellLayer.Stall) == CellLayer.Stall)
|
||||
if (((CellType)layer & CellType.Stall) == CellType.Stall)
|
||||
{
|
||||
cells = _layCellsMap[CellLayer.Stall];
|
||||
cells = _layCellsMap[CellType.Stall];
|
||||
cells.Add(go);
|
||||
}
|
||||
|
||||
if (((CellLayer)layer & CellLayer.Audio) == CellLayer.Audio)
|
||||
if (((CellType)layer & CellType.Audio) == CellType.Audio)
|
||||
{
|
||||
cells = _layCellsMap[CellLayer.Audio];
|
||||
cells = _layCellsMap[CellType.Audio];
|
||||
cells.Add(go);
|
||||
}
|
||||
|
||||
if (((CellLayer)layer & CellLayer.Trigger) == CellLayer.Trigger)
|
||||
if (((CellType)layer & CellType.Trigger) == CellType.Trigger)
|
||||
{
|
||||
cells = _layCellsMap[CellLayer.Trigger];
|
||||
cells = _layCellsMap[CellType.Trigger];
|
||||
cells.Add(go);
|
||||
}
|
||||
|
||||
if (((CellLayer)layer & CellLayer.Monster) == CellLayer.Monster)
|
||||
if (((CellType)layer & CellType.Monster) == CellType.Monster)
|
||||
{
|
||||
cells = _layCellsMap[CellLayer.Monster];
|
||||
cells = _layCellsMap[CellType.Monster];
|
||||
cells.Add(go);
|
||||
}
|
||||
}
|
||||
@@ -956,13 +956,13 @@ public partial class MapManager : MonoBehaviour
|
||||
if (layers == 0)
|
||||
return;
|
||||
|
||||
if(layers < (int)CellLayer.Stall)
|
||||
if(layers < (int)CellType.Stall)
|
||||
{
|
||||
bool safeNoHide = ((CellLayer)layers & CellLayer.Safe) == CellLayer.Safe;
|
||||
bool safeNoHide = ((CellType)layers & CellType.Safe) == CellType.Safe;
|
||||
|
||||
foreach (var layerCells in _layCellsMap)
|
||||
{
|
||||
safeNoHide = (layerCells.Key & CellLayer.Safe) == CellLayer.Safe;
|
||||
safeNoHide = (layerCells.Key & CellType.Safe) == CellType.Safe;
|
||||
if (((int)layerCells.Key & layers) != (int)layerCells.Key)
|
||||
{
|
||||
HideCellsWithLayer(layerCells.Key, layers, safeNoHide);
|
||||
@@ -982,22 +982,22 @@ public partial class MapManager : MonoBehaviour
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>и<EFBFBD><D0B8><EFBFBD>
|
||||
HideCells();
|
||||
|
||||
if(((CellLayer)layers & CellLayer.Stall) == CellLayer.Stall)
|
||||
if(((CellType)layers & CellType.Stall) == CellType.Stall)
|
||||
{
|
||||
ShowSpecialPoint(EditCellType.SellArea);
|
||||
}
|
||||
|
||||
if (((CellLayer)layers & CellLayer.Audio) == CellLayer.Audio)
|
||||
if (((CellType)layers & CellType.Audio) == CellType.Audio)
|
||||
{
|
||||
ShowSpecialPoint(EditCellType.AudioTrigger);
|
||||
}
|
||||
|
||||
if (((CellLayer)layers & CellLayer.Trigger) == CellLayer.Trigger)
|
||||
if (((CellType)layers & CellType.Trigger) == CellType.Trigger)
|
||||
{
|
||||
ShowSpecialPoint(EditCellType.TriggerCell);
|
||||
}
|
||||
|
||||
if (((CellLayer)layers & CellLayer.Monster) == CellLayer.Monster)
|
||||
if (((CellType)layers & CellType.Monster) == CellType.Monster)
|
||||
{
|
||||
ShowSpecialPoint(EditCellType.MonsterArea);
|
||||
}
|
||||
@@ -1005,7 +1005,7 @@ public partial class MapManager : MonoBehaviour
|
||||
|
||||
}
|
||||
|
||||
public void HideCellsWithLayer(CellLayer hideLayer, int showLayers, bool safeNoHide)
|
||||
public void HideCellsWithLayer(CellType hideLayer, int showLayers, bool safeNoHide)
|
||||
{
|
||||
var cells = _layCellsMap[hideLayer];
|
||||
foreach(var cell in cells)
|
||||
@@ -1052,7 +1052,7 @@ public partial class MapManager : MonoBehaviour
|
||||
|
||||
public void CleanSafe()
|
||||
{
|
||||
var cells = _layCellsMap[CellLayer.Safe];
|
||||
var cells = _layCellsMap[CellType.Safe];
|
||||
if (cells == null)
|
||||
return;
|
||||
|
||||
|
||||
@@ -173,7 +173,6 @@ public partial class MapManager : MonoBehaviour
|
||||
}
|
||||
}
|
||||
MapManager.Instance.ReseCamera(jpgscenew * mapColumn, jpgscenew * mapRownum);
|
||||
MapManager.Instance.GenerateMap(jpgscenew * mapColumn, jpgscenew * mapRownum, widthPixel / 100.0f, heightPixel / 100.0f);
|
||||
UICellInfo.Instance.ShowMapCellInfo();
|
||||
|
||||
}
|
||||
@@ -185,6 +184,13 @@ public partial class MapManager : MonoBehaviour
|
||||
Destroy(child.gameObject);
|
||||
}
|
||||
}
|
||||
|
||||
public void CreateObs()
|
||||
{
|
||||
if(_curMapRegions == null) return;
|
||||
float jpgscenew = PicMapPixel / 100;
|
||||
MapManager.Instance.GenerateMap(jpgscenew * _curMapRegions.regionColNum, jpgscenew * _curMapRegions.regionRowNum, _curMapRegions.cellWidthPixel / 100.0f, _curMapRegions.cellHeightPixel / 100.0f);
|
||||
}
|
||||
private async void multithreadLoadTextrue(string fullPath,SpriteRenderer sr)
|
||||
{
|
||||
var texture = await loadASyncTexture2D(fullPath, this.GetCancellationTokenOnDestroy());
|
||||
|
||||
@@ -67,6 +67,7 @@ public partial class MapManager : MonoBehaviour
|
||||
return;
|
||||
map.mapGrid.gameObject.SetActive(!map.mapGrid.activeInHierarchy);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
@@ -79,6 +80,57 @@ public partial class MapManager : MonoBehaviour
|
||||
int posIndex = Mathf.FloorToInt(pos.x + Mathf.FloorToInt(pos.z) * map.horizontalNumber);
|
||||
return map.selector.GetGridData()[posIndex].barrier;
|
||||
}
|
||||
/// <summary>
|
||||
/// 是否打开了地图
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public bool isOpenMap(bool isTips = true)
|
||||
{
|
||||
if (map == null || map.selector == null)
|
||||
{
|
||||
if (isTips) UIWindow.Instance.ShowMessage("当前没有可编辑地图,请打开地图!");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
public void SaveMapObs()
|
||||
{
|
||||
if (!MapManager.Instance.isOpenMap()) return;
|
||||
string path = PathUtil.GetObsPath(MapManager.Instance._curOpenMapId, "Obs");
|
||||
string tmp = path.Substring(0, path.LastIndexOf('/'));
|
||||
if (!Directory.Exists(tmp))
|
||||
Directory.CreateDirectory(tmp);
|
||||
|
||||
if (File.Exists(path))
|
||||
File.Delete(path);
|
||||
using (FileStream fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write))
|
||||
{
|
||||
BinaryWriter bw = new BinaryWriter(fs);
|
||||
Map.Serialize(MapManager.Instance.map, bw);
|
||||
bw.Close();
|
||||
}
|
||||
#if UNITY_EDITOR
|
||||
AssetDatabase.Refresh();
|
||||
#endif
|
||||
}
|
||||
public bool LoadMapObs(int mapId)
|
||||
{
|
||||
string path = PathUtil.GetObsPath(MapManager.Instance._curOpenMapId, "Obs");
|
||||
if (!File.Exists(path))
|
||||
return false;
|
||||
if (map != null)
|
||||
{
|
||||
map.Release();
|
||||
map = null;
|
||||
}
|
||||
using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read))
|
||||
{
|
||||
BinaryReader br = new BinaryReader(fs);
|
||||
map = Map.Deserialize(br);
|
||||
br.Close();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
public partial class Map
|
||||
{
|
||||
@@ -87,8 +139,6 @@ public partial class Map
|
||||
public int mapId { get; private set; }
|
||||
public float width { get; private set; }
|
||||
public float height { get; private set; }
|
||||
|
||||
public float sideLength { get; private set; }
|
||||
public float sideWidth { get; private set; }
|
||||
public float sideHeight { get; private set; }
|
||||
public int horizontalNumber { get { return (int)(width / sideWidth); } }
|
||||
@@ -98,8 +148,6 @@ public partial class Map
|
||||
{
|
||||
this.width = width;
|
||||
this.height = height;
|
||||
this.sideLength = sideLength;
|
||||
|
||||
this.sideWidth = sideWidth;
|
||||
this.sideHeight = sideHeight;
|
||||
mapGrid = CreateMapGrid();
|
||||
@@ -164,11 +212,11 @@ public partial class Map
|
||||
{
|
||||
int width = map.selector.horizontalNumber;
|
||||
int height = map.selector.verticalNumber;
|
||||
int sideLength = (int)(map.sideLength * 100);
|
||||
bw.Write(map.mapId);
|
||||
bw.Write(width);
|
||||
bw.Write(height);
|
||||
bw.Write(sideLength);
|
||||
bw.Write((int)Mathf.Round(map.sideWidth * 100)); // 四舍五入确保精度
|
||||
bw.Write((int)Mathf.Round(map.sideHeight * 100)); // 四舍五入确保精度
|
||||
GridSelector.RenderData[] data = map.selector.GetGridData();
|
||||
for (int i = 0, length = data.Length; i < length; i++)
|
||||
{
|
||||
@@ -181,10 +229,9 @@ public partial class Map
|
||||
int mapId = br.ReadInt32();
|
||||
int horizontalNumber = br.ReadInt32();
|
||||
int verticalNumber = br.ReadInt32();
|
||||
//服务器那边是用的边长的100倍的int
|
||||
float sideWidth = br.ReadInt32() / 100f;
|
||||
float sideHeight = br.ReadInt32() / 100f;
|
||||
var map = MapManager.Instance.GenerateMap((int)(horizontalNumber * sideWidth), (int)(verticalNumber * sideHeight), sideWidth, sideHeight);
|
||||
float sideWidth = br.ReadInt32() / 100f; // 读取时直接除以 100
|
||||
float sideHeight = br.ReadInt32() / 100f; // 读取时直接除以 100
|
||||
var map = MapManager.Instance.GenerateMap(horizontalNumber * sideWidth, verticalNumber * sideHeight, sideWidth, sideHeight);
|
||||
map.SetMapId(mapId);
|
||||
GridSelector.RenderData[] data = map.selector.GetGridData();
|
||||
for (int i = 0; i < horizontalNumber * verticalNumber; i++) {
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Events;
|
||||
using UnityEngine.EventSystems;
|
||||
@@ -19,6 +20,18 @@ public class UICellEditor : MonoBehaviour
|
||||
public Button btnSetBrush;
|
||||
public Button btnSaveCells;
|
||||
|
||||
/// <summary>
|
||||
/// <20><><EFBFBD>ڱ༭<DAB1><E0BCAD><EFBFBD><EFBFBD>
|
||||
/// </summary>
|
||||
public CellType editorGrid { private set; get; }
|
||||
|
||||
public ToggleGroup editorAreaToggle;
|
||||
public static UICellEditor Instance;
|
||||
private void Awake()
|
||||
{
|
||||
Instance = this;
|
||||
editorGrid = CellType.None;
|
||||
}
|
||||
#region <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѱ·
|
||||
public Toggle togPathTest;
|
||||
public GameObject pathTestPanel;
|
||||
@@ -192,7 +205,7 @@ public class UICellEditor : MonoBehaviour
|
||||
//ͼ<><CDBC><EFBFBD>༭
|
||||
public void OnShowLayerToggleChange()
|
||||
{
|
||||
CellLayer[] layers = (CellLayer[])Enum.GetValues(typeof(CellLayer));
|
||||
CellType[] layers = (CellType[])Enum.GetValues(typeof(CellType));
|
||||
_layers = 0;
|
||||
for (int i= showgLayers.Length - 1; i>=0; i--)
|
||||
{
|
||||
@@ -209,23 +222,72 @@ public class UICellEditor : MonoBehaviour
|
||||
{
|
||||
MapManager.Instance.HideCells();
|
||||
}
|
||||
public void EditorAreaToggleChange(Toggle t)
|
||||
{
|
||||
if (t.isOn)
|
||||
{
|
||||
switch (t.name)
|
||||
{
|
||||
case "MoveToggle":
|
||||
editorGrid = CellType.Move;
|
||||
break;
|
||||
case "BlockToggle":
|
||||
editorGrid = CellType.Obstacle;
|
||||
break;
|
||||
case "HideToggle":
|
||||
editorGrid = CellType.Hide;
|
||||
break;
|
||||
case "SafeToggle":
|
||||
editorGrid = CellType.Safe;
|
||||
break;
|
||||
case "StallToggle":
|
||||
editorGrid = CellType.Stall;
|
||||
break;
|
||||
}
|
||||
MapManager.Instance.map?.selector.RefreshPlaneRender();
|
||||
}
|
||||
if (editorAreaToggle.ActiveToggles().Count() == 0)
|
||||
{
|
||||
Debug.Log("û<><C3BB>ѡ<EFBFBD>б༭<D0B1><E0BCAD><EFBFBD><EFBFBD>");
|
||||
editorGrid = CellType.None;
|
||||
}
|
||||
}
|
||||
|
||||
public void SetBrush()
|
||||
/// <summary>
|
||||
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>
|
||||
/// </summary>
|
||||
public void CleanSelectArea()
|
||||
{
|
||||
if (!UIWindow.Instance.uiCellInfo.bMapOpened)
|
||||
{
|
||||
UIWindow.Instance.ShowMessage("<22><><EFBFBD>ȴ<EFBFBD>ͼ");
|
||||
if (editorGrid == CellType.None)
|
||||
{
|
||||
UIWindow.Instance.ShowMessage("<22><>ǰû<EFBFBD>пɱ༭<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
return;
|
||||
}
|
||||
|
||||
float brushRadius = Convert.ToSingle(txtBrushRadius.text);
|
||||
CellType type = (CellType)(1 << dropCellType.value);
|
||||
MapManager.Instance.SetBrush(brushRadius, type);
|
||||
MapManager.Instance.StartEditor();
|
||||
if (!MapManager.Instance.isOpenMap())
|
||||
return;
|
||||
MapManager.Instance.map.selector.ClearSelectArea();
|
||||
}
|
||||
|
||||
public void CleanSafe()
|
||||
{
|
||||
MapManager.Instance.CleanSafe();
|
||||
/// <summary>
|
||||
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>
|
||||
/// </summary>
|
||||
public void FullSelectArea()
|
||||
{
|
||||
if (editorGrid == CellType.None)
|
||||
{
|
||||
UIWindow.Instance.ShowMessage("<22><>ǰû<C7B0>пɱ༭<C9B1><E0BCAD><EFBFBD><EFBFBD>");
|
||||
return;
|
||||
}
|
||||
if (!MapManager.Instance.isOpenMap())
|
||||
return;
|
||||
MapManager.Instance.map.selector.FullAllArea();
|
||||
}
|
||||
/// <summary>
|
||||
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>
|
||||
/// </summary>
|
||||
public void SaveObs()
|
||||
{
|
||||
if (!MapManager.Instance.isOpenMap())
|
||||
return;
|
||||
MapManager.Instance.SaveMapObs();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.Common;
|
||||
using System.IO;
|
||||
using System.Text.RegularExpressions;
|
||||
using UnityEngine;
|
||||
@@ -115,14 +116,21 @@ public class UIMapPanel : MonoBehaviour
|
||||
int mapId = Convert.ToInt32(dropMap.options[dropMap.value].text);
|
||||
_curOpenMapId = mapId;
|
||||
MapManager.Instance.LoadMapRegionSprites(_curOpenMapId);
|
||||
//UIWindow.Instance.uiCellInfo.ShowCells();
|
||||
//UIWindow.Instance.uiEditMapConfig.LoadMapConfig(mapId);
|
||||
//UIWindow.Instance.uiMonstersPanel.LoadMonsterConfig(mapId);
|
||||
//UIWindow.Instance.uiNpcsPanel.LoadNpcsConfig(mapId);
|
||||
//UIWindow.Instance.uiTriggersPanel.LoadTriggersConfig(mapId);
|
||||
//UIWindow.Instance.uiFuBensPanel.LoadFuBenConfig(mapId);
|
||||
//UIWindow.Instance.uiJuBaosPanel.LoadJuBaoConfig(mapId);
|
||||
|
||||
MapManager.Instance.LoadMapObs(_curOpenMapId);
|
||||
//UIWindow.Instance.uiCellInfo.ShowCells();
|
||||
//UIWindow.Instance.uiEditMapConfig.LoadMapConfig(mapId);
|
||||
//UIWindow.Instance.uiMonstersPanel.LoadMonsterConfig(mapId);
|
||||
//UIWindow.Instance.uiNpcsPanel.LoadNpcsConfig(mapId);
|
||||
//UIWindow.Instance.uiTriggersPanel.LoadTriggersConfig(mapId);
|
||||
//UIWindow.Instance.uiFuBensPanel.LoadFuBenConfig(mapId);
|
||||
//UIWindow.Instance.uiJuBaosPanel.LoadJuBaoConfig(mapId);
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
if (MapManager.Instance.map == null)
|
||||
{
|
||||
MapManager.Instance.CreateObs();
|
||||
}
|
||||
}
|
||||
|
||||
public void CloseMap()
|
||||
|
||||
@@ -21,5 +21,10 @@ public class PathUtil
|
||||
{
|
||||
return $"{Application.dataPath}/GameAssets/Maps/{mapId}/XML/{fileName}.xml";
|
||||
}
|
||||
|
||||
public static string GetObsPath(int mapId, string fileName)
|
||||
{
|
||||
return $"{Application.dataPath}/GameAssets/Maps/{mapId}/XML/{fileName}.bytes";
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user