DaFuWeng/assets/Script/MapTileData.ts

174 lines
3.6 KiB
TypeScript

import { Vec2, v2 } from "cc";
import { NpkImage } from "../Tool/NPKImage";
/// 地块类型
export enum MapTileType {
/// 赫顿玛尔
HeDunMaEr,
/// 时间广场
ShiJianGuangChang,
/// 兽人峡谷
ShouRenXiaGu,
/// 超时空漩涡
ChaoShiKongXuanWo,
/// 恐怖的栖息地
KongBuDeQiXiDi,
/// 红色魔女之森
HongSeMoNvZhiSen,
/// 月光酒馆
YueGuangJiuGuan,
/// 哈林的命运硬币(左边)
HaLinMingYunYinBi,
/// 亡命杀阵
WangMingShaZhen,
/// 皇家娱乐
HuangJaiYuLe,
/// 黑暗都市
AnHeiDuShi,
/// 第九隔离区
DiJiuGeLiQu,
/// 决斗场
JueDouChang,
/// 腐坏街道
FuHuaiJieDao,
/// 溢血的地下城
YiXueDeDiXiaChen,
/// 普雷·伊西斯
PuLeiYiXiSi,
/// 沉重的礼拜堂
ChenZhongDeLiBaiTang,
/// 螺旋王国
LuoXuanWangGuo,
/// 海上列车
HaiShangLieChe,
/// 切斯特小镇的命运硬币(右边)
XiaoZhenMingYunYinBi,
/// 暗黑神殿
AnHeiShenDian,
/// 痛苦地下城
TongKuDiXiaChen,
/// 无底坑道
WuDiKenDao,
/// 记忆之地
JiYiZhiDi,
}
/// 地块方向
export enum MapTileDirection {
/// 横
horizontal = 24,
/// 竖
vertical = 25,
/// 角落
nook = 26,
}
/// 地块的数据
export class MapTileData {
/// 坐标
location: Vec2;
/// npk路径
npkPath: NpkImage;
/// 地块背景index
backgroundIndex: number;
/// 地块名称图片index
nameIndex: number;
/// 地块方向
direction: MapTileDirection;
/// 怪物相关数据
/// 列车选择许可
trainsSelectLicense: boolean;
/// 决斗场选择许可
duelSelectLicense: boolean;
/// 占领许可
occupyLicense: boolean;
constructor({
/// 坐标
location,
/// 背景index
backgroundIndex,
/// 名称index
nameIndex,
/// 地块方向
direction,
/// 占领许可
occupyLicense = true,
/// 列车选择许可
trainsSelectLicense,
/// 决斗场选择许可
duelSelectLicense,
}: {
location: Vec2;
backgroundIndex?: number;
nameIndex?: number;
direction: MapTileDirection;
occupyLicense?: boolean;
trainsSelectLicense: boolean;
duelSelectLicense: boolean;
}) {
this.location = location;
this.npkPath = NpkImage.board;
this.backgroundIndex = backgroundIndex;
this.nameIndex = nameIndex;
this.direction = direction;
this.trainsSelectLicense = trainsSelectLicense;
this.duelSelectLicense = duelSelectLicense;
this.occupyLicense = occupyLicense;
}
}
export class MapTileFactory {
static getData(type: MapTileType): MapTileData{
// const tts = type as MapTileType;
// const ss = tts == MapTileType.HeDunMaEr;
// const nn = Number(type);
// const aa = +type;
// const tttt: MapTileType = MapTileType.HeDunMaEr;
switch (type) {
/// 赫顿玛尔
case MapTileType.HeDunMaEr:
console.log(type);
return MapTileFactory.HeDunMaErData;
/// 时间广场
case MapTileType.ShiJianGuangChang:
console.log(type);
return MapTileFactory.ShiJianGuangChangData;
}
console.log(type);
}
// 赫顿玛尔
private static HeDunMaErData = new MapTileData({
location: v2(507, -500),
direction: MapTileDirection.nook,
trainsSelectLicense: true,
duelSelectLicense: false,
occupyLicense: false,
});
/// 时间广场
private static ShiJianGuangChangData = new MapTileData({
location: v2(507, -500),
backgroundIndex: 1,
direction: MapTileDirection.horizontal,
trainsSelectLicense: true,
duelSelectLicense: true,
occupyLicense: true,
});
}