using System;
using UnityEngine;
public enum CellType
{
///
/// 无效格
///
None = 0,
///
/// 移动
///
Move = 1,
///
/// 阻挡
///
Obstacle = 2,
///
/// 隐藏
///
Hide = 4,
///
/// 有角色占据(运行时动态变化时产生)
///
HadRole = 8,
///
/// 安全区
///
Safe = 16,
///
/// 摆摊区域
///
Stall = 32,
}
[Flags]
public enum CellLayer
{
Move = 1, //移动
Obstacle = 2, //阻挡
Hide = 4, //隐藏
Safe = 16, //安全区
Stall = 32, //摆摊
Audio = 64, //音效
Trigger = 128, //触发
Monster = 256 //怪物
}
///
/// 区域颜色
///
public class AreaColor
{
public static Color Monster = Color.red;
public static Color Npc = Color.yellow;
public static Color Stall = Color.magenta;
public static Color Relive = Color.green;
public static Color Audio = Color.white;
public static Color Trans = Color.blue;
public static Color Born = Color.green;
}
public class CellTypeColors
{
public static Color None = new Color(0x80 / 255f, 0x80 / 255f, 0x80 / 255f); // 灰色 (#808080)
public static Color Move = new Color(0x33 / 255f, 0xcc / 255f, 0x33 / 255f); // 绿色 (#33cc33)
public static Color Obstacle = new Color(0xff / 255f, 0x00 / 255f, 0x00 / 255f); // 红色 (#ff4d4d)
public static Color Hide = new Color(0x33 / 255f, 0x33 / 255f, 0x33 / 255f); // 深灰色 (#333333)
public static Color HadRole = new Color(0xb3 / 255f, 0x33 / 255f, 0xb3 / 255f); // 紫色 (#b333b3)
public static Color Safe = new Color(0x00 / 255f, 0xff / 255f, 0xff / 255f); // 青色 (#00ffff)
public static Color Stall = new Color(0xff / 255f, 0xff / 255f, 0x99 / 255f); // 浅黄色 (#ffff99)
public static Color Water = new Color(0x00 / 255f, 0x4c / 255f, 0xb3 / 255f); // 水蓝色 (#004cb3)
public static Color Snow = new Color(0xff / 255f, 0xff / 255f, 0xff / 255f); // 白色 (#ffffff)
public static Color Sand = new Color(0xff / 255f, 0xcc / 255f, 0x66 / 255f); // 沙黄色 (#ffcc66)
public static Color Stone = new Color(0x66 / 255f, 0x66 / 255f, 0x66 / 255f); // 深灰色 (#666666)
public static Color Wood = new Color(0x8B / 255f, 0x45 / 255f, 0x13 / 255f); // 棕色 (#8B4513)
public static Color Grass = new Color(0x00 / 255f, 0xff / 255f, 0xff / 255f); // 青色 (#00ffff)
public static Color Dirt = new Color(0xff / 255f, 0x49 / 255f, 0x00 / 255f); // 浅棕色 (#FF4900)
public static Color GetColor(CellType cellType)
{
Color color = Color.clear; // 初始化为黑色,如果没有匹配类型时返回
if (cellType == CellType.None) return CellTypeColors.None;
if (true)
{
if (cellType.HasFlag(CellType.Move)) color += CellTypeColors.Move;
}
else if (true)
{
if (cellType.HasFlag(CellType.Safe)) color += CellTypeColors.Safe;
}
else if (true)
{
if (cellType.HasFlag(CellType.Stall)) color += CellTypeColors.Stall;
}
if (cellType.HasFlag(CellType.Obstacle)) color += CellTypeColors.Obstacle;
// 将颜色归一化,以避免颜色超出范围,先不归一化
//color /= 7.0f; // 7 是 CellType 的数量
return color;
}
public static string GetAreaStr(int barrier)
{
string areaStr = " ";
CellType cellType = (CellType)(barrier & 0xffff);
if (cellType == CellType.None)
{
areaStr = "无效格子";
return areaStr;
}
if (cellType.HasFlag(CellType.Move)) areaStr += "可移动";
if (cellType.HasFlag(CellType.Obstacle)) areaStr += "|阻隔点";
if (cellType.HasFlag(CellType.Safe)) areaStr += "|安全区";
if (cellType.HasFlag(CellType.Stall)) areaStr += "|摆摊区";
return areaStr;
}
}