410 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
			
		
		
	
	
			410 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
| import { Vec2, v2 } from "cc";
 | |
| import { NpkImage } from "../../Tool/NPKImage";
 | |
| /// 地块类型
 | |
| export enum MapTileType {
 | |
|   /// 赫顿玛尔
 | |
|   HeDunMaEr = 0,
 | |
|   /// 时间广场
 | |
|   ShiJianGuangChang,
 | |
|   /// 兽人峡谷
 | |
|   ShouRenXiaGu,
 | |
|   /// 超时空漩涡
 | |
|   ChaoShiKongXuanWo,
 | |
|   /// 恐怖的栖息地
 | |
|   KongBuDeQiXiDi,
 | |
|   /// 红色魔女之森
 | |
|   HongSeMoNvZhiSen,
 | |
| 
 | |
|   /// 月光酒馆
 | |
|   YueGuangJiuGuan,
 | |
|   /// 亡命杀阵
 | |
|   WangMingShaZhen,
 | |
|   /// 皇家娱乐
 | |
|   HuangJaiYuLe,
 | |
|   /// 黑暗都市
 | |
|   HeiAnDuShi,
 | |
|   /// 哈林的命运硬币(左边)
 | |
|   HaLinMingYunYinBi,
 | |
|   /// 第九隔离区
 | |
|   DiJiuGeLiQu,
 | |
| 
 | |
|   /// 决斗场
 | |
|   JueDouChang,
 | |
|   /// 腐坏街道
 | |
|   FuHuaiJieDao,
 | |
|   /// 溢血的地下城
 | |
|   YiXueDeDiXiaChen,
 | |
|   /// 普雷·伊西斯
 | |
|   PuLeiYiXiSi,
 | |
|   /// 沉重的礼拜堂
 | |
|   ChenZhongDeLiBaiTang,
 | |
|   /// 螺旋王国
 | |
|   LuoXuanWangGuo,
 | |
| 
 | |
|   /// 海上列车
 | |
|   HaiShangLieChe,
 | |
|   /// 暗黑神殿
 | |
|   AnHeiShenDian,
 | |
|   /// 痛苦地下城
 | |
|   TongKuDiXiaChen,
 | |
|   /// 无底坑道
 | |
|   WuDiKenDao,
 | |
|   /// 切斯特小镇的命运硬币(右边)
 | |
|   XiaoZhenMingYunYinBi,
 | |
|   /// 记忆之地
 | |
|   JiYiZhiDi,
 | |
| }
 | |
| 
 | |
| export const MapTileTypes = [
 | |
|   /// 赫顿玛尔
 | |
|   MapTileType.HeDunMaEr,
 | |
| /// 时间广场
 | |
| MapTileType.ShiJianGuangChang,
 | |
| /// 兽人峡谷
 | |
| MapTileType.ShouRenXiaGu,
 | |
| /// 超时空漩涡
 | |
| MapTileType.ChaoShiKongXuanWo,
 | |
| /// 恐怖的栖息地
 | |
| MapTileType.KongBuDeQiXiDi,
 | |
| /// 红色魔女之森
 | |
| MapTileType.HongSeMoNvZhiSen,
 | |
| 
 | |
| /// 月光酒馆
 | |
| MapTileType.YueGuangJiuGuan,
 | |
| /// 亡命杀阵
 | |
| MapTileType.WangMingShaZhen,
 | |
| /// 皇家娱乐
 | |
| MapTileType.HuangJaiYuLe,
 | |
| /// 黑暗都市
 | |
| MapTileType.HeiAnDuShi,
 | |
| /// 哈林的命运硬币(左边)
 | |
| MapTileType.HaLinMingYunYinBi,
 | |
| /// 第九隔离区
 | |
| MapTileType.DiJiuGeLiQu,
 | |
| 
 | |
| /// 决斗场
 | |
| MapTileType.JueDouChang,
 | |
| /// 腐坏街道
 | |
| MapTileType.FuHuaiJieDao,
 | |
| /// 溢血的地下城
 | |
| MapTileType.YiXueDeDiXiaChen,
 | |
| /// 普雷·伊西斯
 | |
| MapTileType.PuLeiYiXiSi,
 | |
| /// 沉重的礼拜堂
 | |
| MapTileType.ChenZhongDeLiBaiTang,
 | |
| /// 螺旋王国
 | |
| MapTileType.LuoXuanWangGuo,
 | |
| 
 | |
| /// 海上列车
 | |
| MapTileType.HaiShangLieChe,
 | |
| /// 暗黑神殿
 | |
| MapTileType.AnHeiShenDian,
 | |
| /// 痛苦地下城
 | |
| MapTileType.TongKuDiXiaChen,
 | |
| /// 无底坑道
 | |
| MapTileType.WuDiKenDao,
 | |
| /// 切斯特小镇的命运硬币(右边)
 | |
| MapTileType.XiaoZhenMingYunYinBi,
 | |
| /// 记忆之地
 | |
| MapTileType.JiYiZhiDi,
 | |
| ];
 | |
| 
 | |
| /// 地块方向
 | |
| export enum MapTileDirection {
 | |
|   /// 横
 | |
|   horizontal = 24,
 | |
|   /// 竖
 | |
|   vertical = 25,
 | |
|   /// 角落
 | |
|   nook = 26,
 | |
| }
 | |
| 
 | |
| /// 地块的数据
 | |
| export class MapTileData {
 | |
|   /// 坐标
 | |
|   location: Vec2;
 | |
|   /// npk路径
 | |
|   npkPath: NpkImage;
 | |
|   /// 地块背景index
 | |
|   backgroundIndex: number;
 | |
|   /// 地块方向
 | |
|   direction: MapTileDirection;
 | |
|   /// 怪物相关数据
 | |
| 
 | |
|   /// 列车选择许可
 | |
|   trainsSelectLicense: boolean;
 | |
|   /// 决斗场选择许可
 | |
|   duelSelectLicense: boolean;
 | |
|   /// 占领许可
 | |
|   occupyLicense: boolean;
 | |
| 
 | |
|   constructor({
 | |
|     /// 坐标
 | |
|     location,
 | |
|     /// 背景index
 | |
|     backgroundIndex,
 | |
|     /// 地块方向
 | |
|     direction,
 | |
|     /// 占领许可
 | |
|     occupyLicense,
 | |
|     /// 列车选择许可
 | |
|     trainsSelectLicense,
 | |
|     /// 决斗场选择许可
 | |
|     duelSelectLicense,
 | |
|   }: {
 | |
|     location: Vec2;
 | |
|     backgroundIndex?: number;
 | |
|     direction: MapTileDirection;
 | |
|     occupyLicense?: boolean;
 | |
|     trainsSelectLicense?: boolean;
 | |
|     duelSelectLicense?: boolean;
 | |
|   }) {
 | |
|     this.location = location;
 | |
|     this.npkPath = NpkImage.board;
 | |
|     this.backgroundIndex = backgroundIndex;
 | |
|     this.direction = direction;
 | |
| 
 | |
|     this.trainsSelectLicense = trainsSelectLicense ?? true;
 | |
|     this.duelSelectLicense = duelSelectLicense ?? true;
 | |
|     this.occupyLicense = occupyLicense ?? true;
 | |
|   }
 | |
| }
 | |
| 
 | |
| export class MapTileFactory {
 | |
|   static getData(type: MapTileType): MapTileData {
 | |
|     switch (type) {
 | |
|       /// 赫顿玛尔
 | |
|       case MapTileType.HeDunMaEr:
 | |
|         return MapTileFactory.HeDunMaErData;
 | |
|       /// 时间广场
 | |
|       case MapTileType.ShiJianGuangChang:
 | |
|         return MapTileFactory.ShiJianGuangChangData;
 | |
|       /// 兽人峡谷
 | |
|       case MapTileType.ShouRenXiaGu:
 | |
|         return MapTileFactory.ShouRenXiaGuData;
 | |
|       /// 超时空漩涡
 | |
|       case MapTileType.ChaoShiKongXuanWo:
 | |
|         return MapTileFactory.ChaoShiKongXuanWoData;
 | |
|       /// 恐怖的栖息地
 | |
|       case MapTileType.KongBuDeQiXiDi:
 | |
|         return MapTileFactory.KongBuDeQiXiDiData;
 | |
|       /// 红色魔女之森
 | |
|       case MapTileType.HongSeMoNvZhiSen:
 | |
|         return MapTileFactory.HongSeMoNvZhiSenData;
 | |
|       /// 月光酒馆
 | |
|       case MapTileType.YueGuangJiuGuan:
 | |
|         return MapTileFactory.YueGuangJiuGuanData;
 | |
|       /// 亡命杀镇子
 | |
|       case MapTileType.WangMingShaZhen:
 | |
|         return MapTileFactory.WangMingShaZhenData;
 | |
|       /// 皇家娱乐
 | |
|       case MapTileType.HuangJaiYuLe:
 | |
|         return MapTileFactory.HuangJaiYuLeData;
 | |
|       /// 黑暗都市
 | |
|       case MapTileType.HeiAnDuShi:
 | |
|         return MapTileFactory.HeiAnDuShiData;
 | |
|       /// 哈林的命运硬币(左边)
 | |
|       case MapTileType.HaLinMingYunYinBi:
 | |
|         return MapTileFactory.HaLinMingYunYinBiData;
 | |
|       /// 第九隔离区
 | |
|       case MapTileType.DiJiuGeLiQu:
 | |
|         return MapTileFactory.DiJiuGeLiQuData;
 | |
|       /// 决斗场
 | |
|       case MapTileType.JueDouChang:
 | |
|         return MapTileFactory.JueDouChangData;
 | |
|       /// 腐坏街道
 | |
|       case MapTileType.FuHuaiJieDao:
 | |
|         return MapTileFactory.FuHuaiJieDaoData;
 | |
|       /// 溢血的地下城
 | |
|       case MapTileType.YiXueDeDiXiaChen:
 | |
|         return MapTileFactory.YiXueDeDiXiaChenData;
 | |
|       /// 普雷·伊西斯
 | |
|       case MapTileType.PuLeiYiXiSi:
 | |
|         return MapTileFactory.PuLeiYiXiSiData;
 | |
|       /// 沉重的礼拜堂
 | |
|       case MapTileType.ChenZhongDeLiBaiTang:
 | |
|         return MapTileFactory.ChenZhongDeLiBaiTangData;
 | |
|       /// 螺旋王国
 | |
|       case MapTileType.LuoXuanWangGuo:
 | |
|         return MapTileFactory.LuoXuanWangGuoData;
 | |
|       /// 海上列车
 | |
|       case MapTileType.HaiShangLieChe:
 | |
|         return MapTileFactory.HaiShangLieCheData;
 | |
|       /// 暗黑神殿
 | |
|       case MapTileType.AnHeiShenDian:
 | |
|         return MapTileFactory.AnHeiShenDianData;
 | |
|       /// 痛苦地下城
 | |
|       case MapTileType.TongKuDiXiaChen:
 | |
|         return MapTileFactory.TongKuDiXiaChenData;
 | |
|       /// 无底坑道
 | |
|       case MapTileType.WuDiKenDao:
 | |
|         return MapTileFactory.WuDiKenDaoData;
 | |
|       /// 切斯特小镇的命运硬币(右边)
 | |
|       case MapTileType.XiaoZhenMingYunYinBi:
 | |
|         return MapTileFactory.XiaoZhenMingYunYinBiData;
 | |
|       /// 记忆之地
 | |
|       case MapTileType.JiYiZhiDi:
 | |
|         return MapTileFactory.JiYiZhiDiData;
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   // 赫顿玛尔
 | |
|   private static HeDunMaErData = new MapTileData({
 | |
|     location: v2(475, -448),
 | |
|     direction: MapTileDirection.nook,
 | |
|     duelSelectLicense: false,
 | |
|     occupyLicense: false,
 | |
|   });
 | |
| 
 | |
|   /// 时间广场 (55,34)
 | |
|   private static ShiJianGuangChangData = new MapTileData({
 | |
|     location: v2(420, -414),
 | |
|     direction: MapTileDirection.horizontal,
 | |
|   });
 | |
| 
 | |
|   /// 兽人峡谷 (52,34)
 | |
|   private static ShouRenXiaGuData = new MapTileData({
 | |
|     location: v2(368, -380),
 | |
|     direction: MapTileDirection.horizontal,
 | |
|   });
 | |
| 
 | |
|   /// 超时空漩涡 (53,34)
 | |
|   private static ChaoShiKongXuanWoData = new MapTileData({
 | |
|     location: v2(315, -346),
 | |
|     backgroundIndex: 32,
 | |
|     direction: MapTileDirection.horizontal,
 | |
|   });
 | |
| 
 | |
|   /// 恐怖的栖息地 (52,34)
 | |
|   private static KongBuDeQiXiDiData = new MapTileData({
 | |
|     location: v2(262, -312),
 | |
|     direction: MapTileDirection.horizontal,
 | |
|   });
 | |
| 
 | |
|   /// 红色魔女之森 (52,34)
 | |
|   private static HongSeMoNvZhiSenData = new MapTileData({
 | |
|     location: v2(209, -278),
 | |
|     direction: MapTileDirection.horizontal,
 | |
|   });
 | |
| 
 | |
|   // 月光酒馆(69,44)
 | |
|   private static YueGuangJiuGuanData = new MapTileData({
 | |
|     location: v2(140, -234),
 | |
|     direction: MapTileDirection.nook,
 | |
|     duelSelectLicense: false,
 | |
|     occupyLicense: false,
 | |
|   });
 | |
| 
 | |
|   /// 亡命杀镇 (53,34)
 | |
|   private static WangMingShaZhenData = new MapTileData({
 | |
|     location: v2(209, -198),
 | |
|     direction: MapTileDirection.vertical,
 | |
|   });
 | |
| 
 | |
|   /// 皇家娱乐(53,34)
 | |
|   private static HuangJaiYuLeData = new MapTileData({
 | |
|     location: v2(262, -164),
 | |
|     direction: MapTileDirection.vertical,
 | |
|   });
 | |
| 
 | |
|   /// 黑暗都市
 | |
|   private static HeiAnDuShiData = new MapTileData({
 | |
|     location: v2(315, -130),
 | |
|     direction: MapTileDirection.vertical,
 | |
|   });
 | |
|   /// 哈林的命运硬币(左边)
 | |
|   private static HaLinMingYunYinBiData = new MapTileData({
 | |
|     location: v2(368, -96),
 | |
|     backgroundIndex: 34,
 | |
|     direction: MapTileDirection.vertical,
 | |
|     duelSelectLicense: false,
 | |
|     occupyLicense: false,
 | |
|   });
 | |
|   /// 第九隔离区
 | |
|   private static DiJiuGeLiQuData = new MapTileData({
 | |
|     location: v2(421, -62),
 | |
|     direction: MapTileDirection.vertical,
 | |
|   });
 | |
| 
 | |
|   // 决斗场(54,44)
 | |
|   private static JueDouChangData = new MapTileData({
 | |
|     location: v2(475, -18),
 | |
|     direction: MapTileDirection.nook,
 | |
|     duelSelectLicense: false,
 | |
|     occupyLicense: false,
 | |
|   });
 | |
| 
 | |
|   /// 腐坏街道(53,34)
 | |
|   private static FuHuaiJieDaoData = new MapTileData({
 | |
|     location: v2(544, -62),
 | |
|     direction: MapTileDirection.horizontal,
 | |
|   });
 | |
| 
 | |
|   /// 溢血的地下城(53,34)
 | |
|   private static YiXueDeDiXiaChenData = new MapTileData({
 | |
|     location: v2(597, -96),
 | |
|     direction: MapTileDirection.horizontal,
 | |
|   });
 | |
| 
 | |
|   /// 普雷·伊西斯
 | |
|   private static PuLeiYiXiSiData = new MapTileData({
 | |
|     location: v2(650, -130),
 | |
|     backgroundIndex: 33,
 | |
|     direction: MapTileDirection.horizontal,
 | |
|   });
 | |
| 
 | |
|   /// 沉重的礼拜堂
 | |
|   private static ChenZhongDeLiBaiTangData = new MapTileData({
 | |
|     location: v2(703, -164),
 | |
|     direction: MapTileDirection.horizontal,
 | |
|   });
 | |
| 
 | |
|   /// 螺旋王国
 | |
|   private static LuoXuanWangGuoData = new MapTileData({
 | |
|     location: v2(756, -198),
 | |
|     direction: MapTileDirection.horizontal,
 | |
|   });
 | |
| 
 | |
|   // 海上列车(69,44)
 | |
|   private static HaiShangLieCheData = new MapTileData({
 | |
|     location: v2(808, -234),
 | |
|     direction: MapTileDirection.nook,
 | |
|     trainsSelectLicense: false,
 | |
|     duelSelectLicense: false,
 | |
|     occupyLicense: false,
 | |
|   });
 | |
| 
 | |
|   /// 暗黑神殿
 | |
|   private static AnHeiShenDianData = new MapTileData({
 | |
|     location: v2(756, -278),
 | |
|     direction: MapTileDirection.vertical,
 | |
|   });
 | |
| 
 | |
|   /// 痛苦地下城
 | |
|   private static TongKuDiXiaChenData = new MapTileData({
 | |
|     location: v2(703, -312),
 | |
|     direction: MapTileDirection.vertical,
 | |
|   });
 | |
| 
 | |
|   /// 无底坑道
 | |
|   private static WuDiKenDaoData = new MapTileData({
 | |
|     location: v2(650, -346),
 | |
|     direction: MapTileDirection.vertical,
 | |
|   });
 | |
| 
 | |
|   /// 切斯特小镇的命运硬币(右边)
 | |
|   private static XiaoZhenMingYunYinBiData = new MapTileData({
 | |
|     location: v2(597, -380),
 | |
|     backgroundIndex: 34,
 | |
|     direction: MapTileDirection.vertical,
 | |
|     duelSelectLicense: false,
 | |
|     occupyLicense: false,
 | |
|   });
 | |
| 
 | |
|   /// 记忆之地
 | |
|   private static JiYiZhiDiData = new MapTileData({
 | |
|     location: v2(544, -414),
 | |
|     direction: MapTileDirection.vertical,
 | |
|   });
 | |
| }
 |