- 将移动边界配置从 min/max 改为 front/back 以支持双向移动逻辑 - 增加四条站位线(LINE1~LINE4)实现纵向分层站位 - 添加防重叠检测,防止同阵营单位位置冲突 - 调整游戏地平线高度和地图元素位置以适配新站位系统 - 禁用地图中多余的游戏对象以优化性能
134 lines
3.4 KiB
TypeScript
134 lines
3.4 KiB
TypeScript
/*
|
||
* @Author: dgflash
|
||
* @Date: 2021-11-23 15:28:39
|
||
* @LastEditors: dgflash
|
||
* @LastEditTime: 2022-01-26 16:42:00
|
||
*/
|
||
|
||
/** 碰撞分组 */
|
||
export enum BoxSet {
|
||
//物理碰撞tag
|
||
SKILL_TAG=8,
|
||
ATK_RANGE = 4,
|
||
//group
|
||
DEFAULT = 1,
|
||
MONSTER = 2,
|
||
HERO = 4,
|
||
//地图边界
|
||
LETF_END = -420,
|
||
RIGHT_END = 420,
|
||
//游戏地平线
|
||
GAME_LINE = -165
|
||
//攻击距离
|
||
}
|
||
|
||
export enum CardType {
|
||
Talent = 1,
|
||
Skill = 2,
|
||
Potion = 3,
|
||
Partner = 4,
|
||
Attr = 5,
|
||
}
|
||
|
||
export enum CardKind {
|
||
Atk = 1,
|
||
Atted = 2,
|
||
Buff = 3,
|
||
Attr = 4,
|
||
Skill = 5,
|
||
Hp = 6,
|
||
Dead = 7,
|
||
Partner = 8,
|
||
}
|
||
|
||
|
||
export enum FacSet {
|
||
HERO=0,
|
||
MON=1,
|
||
}
|
||
|
||
/** 数字格式化工具函数 */
|
||
export class NumberFormatter {
|
||
/**
|
||
* 将数字转换为易读格式
|
||
* @param num 要转换的数字
|
||
* @returns 格式化后的字符串
|
||
* 例如:1234 -> "1.2k", 1234567 -> "1.2M", 1234567890 -> "1.2B"
|
||
*/
|
||
static formatNumber(num: number): string {
|
||
if (num < 1000) {
|
||
return num.toString();
|
||
} else if (num < 1000000) {
|
||
// 5位数用k表示 (1000-999999)
|
||
return (num / 1000).toFixed(1).replace(/\.0$/, '') + 'k';
|
||
} else if (num < 1000000000) {
|
||
// 7位数用M表示 (1000000-999999999)
|
||
return (num / 1000000).toFixed(1).replace(/\.0$/, '') + 'M';
|
||
} else if (num < 1000000000000) {
|
||
// 10位数用B表示 (1000000000-999999999999)
|
||
return (num / 1000000000).toFixed(1).replace(/\.0$/, '') + 'B';
|
||
} else {
|
||
// 更大的数字用T表示
|
||
return (num / 1000000000000).toFixed(1).replace(/\.0$/, '') + 'T';
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 将数字转换为中文格式
|
||
* @param num 要转换的数字
|
||
* @returns 中文格式的字符串
|
||
* 例如:1234 -> "1.2千", 1234567 -> "1.2百万"
|
||
*/
|
||
static formatNumberChinese(num: number): string {
|
||
if (num < 10000) {
|
||
return num.toString();
|
||
} else if (num < 100000000) {
|
||
// 万级别
|
||
return (num / 10000).toFixed(1).replace(/\.0$/, '') + '万';
|
||
} else if (num < 1000000000000) {
|
||
// 亿级别
|
||
return (num / 100000000).toFixed(1).replace(/\.0$/, '') + '亿';
|
||
} else {
|
||
// 万亿级别
|
||
return (num / 1000000000000).toFixed(1).replace(/\.0$/, '') + '万亿';
|
||
}
|
||
}
|
||
}
|
||
export enum FightSet {
|
||
CRIT_DAMAGE=50,//暴击伤害
|
||
MORE_RC=10,//更多次数 广告获取的次数
|
||
HEARTPOS=-320,//基地位置
|
||
HERO_MAX_NUM=3,//英雄最大数量
|
||
LVUP_GOLD=50,//升级需要的金币
|
||
LVUP_GOLD_UP=50,//升级需要的金币
|
||
CHOU_GOLD=100,//抽卡需要的金币
|
||
BACK_RANG=30,//后退范围
|
||
FiIGHT_TIME=60*10,//战斗时间
|
||
BACK_CHANCE=40,//击退概率
|
||
}
|
||
|
||
export enum IndexSet {
|
||
/** 英雄基础层级 */
|
||
HERO = 2000,
|
||
/** 一线怪物基础层级(y=120) - 层级较低,在后面 */
|
||
MON1 = 1000,
|
||
/** 二线怪物基础层级(y=80) - 层级较高,在前面 */
|
||
MON2 = 3000,
|
||
/** 每个怪物的层级增量,确保后生成的在前面 */
|
||
MON_INCREMENT = 1,
|
||
SLILL=4000,
|
||
BOSS=2100,
|
||
}
|
||
export const TooltipTypes = {
|
||
life:1,
|
||
health:2,
|
||
skill:3,
|
||
crit:4,
|
||
uskill:5,
|
||
lvup:6,
|
||
apup:7,
|
||
hpup:8,
|
||
addmp:9,
|
||
shield:10,
|
||
}
|