119 lines
3.0 KiB
TypeScript
119 lines
3.0 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,
|
||
HERO_START = -360,
|
||
MONSTER_START = 360,
|
||
END_POINT = 360,
|
||
//游戏地平线
|
||
GAME_LINE = 0,
|
||
CSKILL_X = 320,
|
||
CSKILL_Y = 400,
|
||
//攻击距离
|
||
ATK_RANGE_X = 150,
|
||
MOVE_RANGE_X = 20,
|
||
MAX_SKILL_SY = 50,
|
||
MAX_SKILL_BY = 80,
|
||
ATK_Y = 40,
|
||
ATK_X = 10,
|
||
}
|
||
export enum GameSet {
|
||
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=120,
|
||
AP_CHANGE_RATE=100,
|
||
}
|
||
export enum FacSet {
|
||
HERO=0,
|
||
MON=1,
|
||
}
|
||
export enum HeroConSet{
|
||
INFO=0,
|
||
SELECT=1,
|
||
}
|
||
export enum QualitySet{
|
||
GREEN=0,
|
||
BLUE=1,
|
||
PURPLE=2,
|
||
ORANGE=3,
|
||
}
|
||
|
||
/** 数字格式化工具函数 */
|
||
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$/, '') + '万亿';
|
||
}
|
||
}
|
||
}
|