添加IndexSet枚举定义基础层级和增量 修改怪物生成逻辑以支持线路(lane)和生成顺序(spawnOrder) 重构MonMoveSystem中的渲染层级更新逻辑 优化HeroViewComp中血条显示逻辑 调整怪物位置配置以支持双线路布局
154 lines
4.5 KiB
TypeScript
154 lines
4.5 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,
|
||
// MONSTER_SKILL = 8,
|
||
// HERO_SKILL = 16,
|
||
// PLAYER=32,
|
||
// BOSS=64,
|
||
|
||
// BOX_WIDTH = 64,
|
||
// BOX_HEIGHT = 64,
|
||
//地图边界
|
||
LETF_END = -420,
|
||
RIGHT_END = 420,
|
||
|
||
//游戏地平线
|
||
GAME_LINE = 0,
|
||
//攻击距离
|
||
}
|
||
|
||
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 {
|
||
FRIEND_WAVE_UP=3, //伙伴登场波次
|
||
BOSS_WAVE_UP_1=3, //boss登场波次
|
||
BOSS_WAVE_UP_2=5, //boss登场波次
|
||
BOSS_WAVE_UP_3=7, //boss登场波次
|
||
EQUIP_WAVE_UP_1=4, //装备登场波次
|
||
EQUIP_WAVE_UP_2=6, //装备登场波次
|
||
EQUIP_WAVE_UP_3=8, //装备登场波次
|
||
SKILL_WAVE_UP_1=2, //技能登场波次
|
||
SKILL_WAVE_UP_2=5, //技能登场波次
|
||
SKILL_WAVE_UP_3=7, //技能登场波次
|
||
MON_WAVE_TIME=10,//怪物波次时间
|
||
ATK_ADD_COUNT=4,//伙伴攻击力增加
|
||
ATK_ADD_GLOD=1,//金币增加
|
||
CRIT_DAMAGE=50,//暴击伤害
|
||
DOUBLE_ATK_RATE=100,//额外攻击默认概率
|
||
GREEN_GOLD=1,//绿色金币
|
||
BLUE_GOLD=2,//蓝色金币
|
||
PURPLE_GOLD=3,//紫色金币
|
||
ORANGE_GOLD=4,//橙色金币
|
||
BURN_COUNT=5,//默认易伤次数 5秒
|
||
STUN_TIME=0.5,//默认晕时间
|
||
WEAPON_LV=2,//武器等级
|
||
SHIELD_LV=3,//护盾等级
|
||
ARMOR_LV=4,//防具等级
|
||
ACCESSORY_LV=5,//饰品等级
|
||
ATKED_TO_POWER=15,//被攻击涨能量
|
||
ATK_TO_POWER=10,//攻击涨能量
|
||
CRIT_TO_POWER=15,//暴击涨能量
|
||
DODGE_TO_POWER=15,//闪避涨能量
|
||
ONE_WAVE_TIME=30,//单波时间
|
||
DOWN_TIME=5,//倒计时时间
|
||
MORE_RC=10,//更多次数 广告获取的次数
|
||
TAL_NUM=3,//天赋数量
|
||
HEARTPOS=-320,//基地位置
|
||
HERO_MAX_NUM=3,//英雄最大数量
|
||
// ATK_TO_ATK_RATIO=0.1,
|
||
// ATK_TO_HP_RATIO=0.2,
|
||
// ATK_TO_SHIELD_RATIO=2,
|
||
// ATK_LINES = 3, //英雄数
|
||
// MON_GOLD_ADD =2,
|
||
// MON_COIN_ADD=2,
|
||
// COIN_ADD=1,
|
||
// DEF_RATE=0.7,
|
||
// DODGE_MAX=70,
|
||
// HERO_NUM=3,
|
||
// AP_UPDATE_RATE=100,
|
||
// AP_CHANGE_RATE=0,
|
||
}
|
||
export enum IndexSet {
|
||
/** 英雄基础层级 */
|
||
HERO = 200,
|
||
/** 一线怪物基础层级(y=120) - 层级较低,在后面 */
|
||
MON1 = 100,
|
||
/** 二线怪物基础层级(y=80) - 层级较高,在前面 */
|
||
MON2 = 300,
|
||
/** 每个怪物的层级增量,确保后生成的在前面 */
|
||
MON_INCREMENT = 1,
|
||
}
|
||
export const TooltipTypes = {
|
||
life:1,
|
||
health:2,
|
||
skill:3,
|
||
crit:4,
|
||
uskill:5,
|
||
lvup:6,
|
||
apup:7,
|
||
hpup:8,
|
||
}
|