feat(card): 添加卡牌等级视觉区分与配置调整
- 在卡牌预制件中新增背景(BG_node)、普通边框(NF_node)和高阶边框(HF_node)节点 - 根据卡牌等级和英雄等级动态显示对应的背景和边框样式 - 调整卡牌等级枚举定义,移除LV6并重命名为CardLV - 为CardConfig接口添加card_lv字段以支持独立卡牌等级 - 优化buff提示框的布局和字体大小
This commit is contained in:
@@ -1782,7 +1782,7 @@
|
|||||||
},
|
},
|
||||||
"_lpos": {
|
"_lpos": {
|
||||||
"__type__": "cc.Vec3",
|
"__type__": "cc.Vec3",
|
||||||
"x": -71.73,
|
"x": -61.45,
|
||||||
"y": 0.963,
|
"y": 0.963,
|
||||||
"z": 0
|
"z": 0
|
||||||
},
|
},
|
||||||
@@ -1823,8 +1823,8 @@
|
|||||||
},
|
},
|
||||||
"_contentSize": {
|
"_contentSize": {
|
||||||
"__type__": "cc.Size",
|
"__type__": "cc.Size",
|
||||||
"width": 25.98046875,
|
"width": 17.6552734375,
|
||||||
"height": 81.6
|
"height": 56.4
|
||||||
},
|
},
|
||||||
"_anchorPoint": {
|
"_anchorPoint": {
|
||||||
"__type__": "cc.Vec2",
|
"__type__": "cc.Vec2",
|
||||||
@@ -1862,7 +1862,7 @@
|
|||||||
"_string": "-",
|
"_string": "-",
|
||||||
"_horizontalAlign": 0,
|
"_horizontalAlign": 0,
|
||||||
"_verticalAlign": 1,
|
"_verticalAlign": 1,
|
||||||
"_actualFontSize": 60,
|
"_actualFontSize": 35,
|
||||||
"_fontSize": 35,
|
"_fontSize": 35,
|
||||||
"_fontFamily": "Arial",
|
"_fontFamily": "Arial",
|
||||||
"_lineHeight": 40,
|
"_lineHeight": 40,
|
||||||
@@ -1919,7 +1919,7 @@
|
|||||||
},
|
},
|
||||||
"_alignFlags": 8,
|
"_alignFlags": 8,
|
||||||
"_target": null,
|
"_target": null,
|
||||||
"_left": -34.720234375000004,
|
"_left": -30.557636718750004,
|
||||||
"_right": 0,
|
"_right": 0,
|
||||||
"_top": 0,
|
"_top": 0,
|
||||||
"_bottom": 0,
|
"_bottom": 0,
|
||||||
@@ -2014,7 +2014,7 @@
|
|||||||
"_overflow": 0,
|
"_overflow": 0,
|
||||||
"_enableWrapText": true,
|
"_enableWrapText": true,
|
||||||
"_font": {
|
"_font": {
|
||||||
"__uuid__": "983a109b-a5e3-4ba7-84c5-1c53817ba177",
|
"__uuid__": "eca7fc51-87d0-4bb0-89e1-aa9c39411bc6",
|
||||||
"__expectedType__": "cc.BitmapFont"
|
"__expectedType__": "cc.BitmapFont"
|
||||||
},
|
},
|
||||||
"_isSystemFontUsed": false,
|
"_isSystemFontUsed": false,
|
||||||
@@ -3822,7 +3822,7 @@
|
|||||||
},
|
},
|
||||||
"_lpos": {
|
"_lpos": {
|
||||||
"__type__": "cc.Vec3",
|
"__type__": "cc.Vec3",
|
||||||
"x": -36.930390625,
|
"x": -41.0830078125,
|
||||||
"y": 0,
|
"y": 0,
|
||||||
"z": 0
|
"z": 0
|
||||||
},
|
},
|
||||||
@@ -4011,8 +4011,8 @@
|
|||||||
},
|
},
|
||||||
"_contentSize": {
|
"_contentSize": {
|
||||||
"__type__": "cc.Size",
|
"__type__": "cc.Size",
|
||||||
"width": 49.31,
|
"width": 57.615234375,
|
||||||
"height": 50
|
"height": 65
|
||||||
},
|
},
|
||||||
"_anchorPoint": {
|
"_anchorPoint": {
|
||||||
"__type__": "cc.Vec2",
|
"__type__": "cc.Vec2",
|
||||||
@@ -4056,11 +4056,8 @@
|
|||||||
"_lineHeight": 50,
|
"_lineHeight": 50,
|
||||||
"_overflow": 0,
|
"_overflow": 0,
|
||||||
"_enableWrapText": true,
|
"_enableWrapText": true,
|
||||||
"_font": {
|
"_font": null,
|
||||||
"__uuid__": "983a109b-a5e3-4ba7-84c5-1c53817ba177",
|
"_isSystemFontUsed": true,
|
||||||
"__expectedType__": "cc.BitmapFont"
|
|
||||||
},
|
|
||||||
"_isSystemFontUsed": false,
|
|
||||||
"_spacingX": 0,
|
"_spacingX": 0,
|
||||||
"_isItalic": false,
|
"_isItalic": false,
|
||||||
"_isBold": false,
|
"_isBold": false,
|
||||||
|
|||||||
@@ -8650,6 +8650,15 @@
|
|||||||
"Ckind_node": {
|
"Ckind_node": {
|
||||||
"__id__": 343
|
"__id__": 343
|
||||||
},
|
},
|
||||||
|
"BG_node": {
|
||||||
|
"__id__": 2
|
||||||
|
},
|
||||||
|
"NF_node": {
|
||||||
|
"__id__": 118
|
||||||
|
},
|
||||||
|
"HF_node": {
|
||||||
|
"__id__": 172
|
||||||
|
},
|
||||||
"_id": ""
|
"_id": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -17,13 +17,12 @@ export enum CKind {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** 卡池等级定义 */
|
/** 卡池等级定义 */
|
||||||
export enum CardKind {
|
export enum CardLV {
|
||||||
LV1 = 1,
|
LV1 = 1,
|
||||||
LV2 = 2,
|
LV2 = 2,
|
||||||
LV3 = 3,
|
LV3 = 3,
|
||||||
LV4 = 4,
|
LV4 = 4,
|
||||||
LV5 = 5,
|
LV5 = 5,
|
||||||
LV6 = 6,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 通用卡牌配置 */
|
/** 通用卡牌配置 */
|
||||||
@@ -33,8 +32,9 @@ export interface CardConfig {
|
|||||||
cost: number
|
cost: number
|
||||||
weight: number
|
weight: number
|
||||||
kind: CKind
|
kind: CKind
|
||||||
lv: CardKind
|
lv: CardLV
|
||||||
hero_lv?: number
|
hero_lv?: number
|
||||||
|
card_lv?:number
|
||||||
}
|
}
|
||||||
export const CardsUpSet: Record<number, number> = {
|
export const CardsUpSet: Record<number, number> = {
|
||||||
1: 50,
|
1: 50,
|
||||||
@@ -43,14 +43,15 @@ export const CardsUpSet: Record<number, number> = {
|
|||||||
4: 200,
|
4: 200,
|
||||||
5: 250,
|
5: 250,
|
||||||
}
|
}
|
||||||
|
|
||||||
/**初始coin数 */
|
/**初始coin数 */
|
||||||
export const CardInitCoins = 4
|
export const CardInitCoins = 4
|
||||||
/** 卡池升级每波减免金额 */
|
/** 卡池升级每波减免金额 */
|
||||||
export const CARD_POOL_UPGRADE_DISCOUNT_PER_WAVE = 10
|
export const CARD_POOL_UPGRADE_DISCOUNT_PER_WAVE = 10
|
||||||
/** 卡池默认初始等级 */
|
/** 卡池默认初始等级 */
|
||||||
export const CARD_POOL_INIT_LEVEL = CardKind.LV1
|
export const CARD_POOL_INIT_LEVEL = CardLV.LV1
|
||||||
/** 卡池等级上限 */
|
/** 卡池等级上限 */
|
||||||
export const CARD_POOL_MAX_LEVEL = CardKind.LV6
|
export const CARD_POOL_MAX_LEVEL = CardLV.LV5
|
||||||
/** 英雄最高等级限制 */
|
/** 英雄最高等级限制 */
|
||||||
export const CARD_HERO_MAX_LEVEL = 3
|
export const CARD_HERO_MAX_LEVEL = 3
|
||||||
/** 基础卡池(英雄、技能、功能) */
|
/** 基础卡池(英雄、技能、功能) */
|
||||||
@@ -110,22 +111,22 @@ export interface SpecialRefreshCardConfig extends CardConfig {
|
|||||||
|
|
||||||
|
|
||||||
export const SpecialUpgradeCardList: Record<number, SpecialUpgradeCardConfig> = {
|
export const SpecialUpgradeCardList: Record<number, SpecialUpgradeCardConfig> = {
|
||||||
7001: { uuid: 7001,type: CardType.SpecialUpgrade,cost: 6,weight: 16,lv: CardKind.LV1,kind:CKind.Card,name:"战术晋升",info: "升级场上随机1个1级英雄到2级",
|
7001: { uuid: 7001,type: CardType.SpecialUpgrade,cost: 6,weight: 16,lv: CardLV.LV1,kind:CKind.Card,name:"战术晋升",info: "升级场上随机1个1级英雄到2级",
|
||||||
currentLv: 1, targetLv: 2,
|
currentLv: 1, targetLv: 2,
|
||||||
},
|
},
|
||||||
7002: { uuid: 7002,type: CardType.SpecialUpgrade,cost: 6,weight: 14,lv: CardKind.LV2,kind:CKind.Card,name:"进阶战术",info: "升级场上随机1个2级英雄到3级",
|
7002: { uuid: 7002,type: CardType.SpecialUpgrade,cost: 6,weight: 14,lv: CardLV.LV2,kind:CKind.Card,name:"进阶战术",info: "升级场上随机1个2级英雄到3级",
|
||||||
currentLv: 2, targetLv: 3,
|
currentLv: 2, targetLv: 3,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
export const SpecialRefreshCardList: Record<number, SpecialRefreshCardConfig> = {
|
export const SpecialRefreshCardList: Record<number, SpecialRefreshCardConfig> = {
|
||||||
7101: { uuid: 7101,type: CardType.SpecialRefresh,cost: 4,weight: 14,lv: CardKind.LV1,kind:CKind.Card,name:"近战征召",info: "刷新卡池,都是近战英雄",
|
7101: { uuid: 7101,type: CardType.SpecialRefresh,cost: 4,weight: 14,lv: CardLV.LV1,kind:CKind.Card,name:"近战征召",info: "刷新卡池,都是近战英雄",
|
||||||
refreshLv: 0, refreshHeroType: SpecialRefreshHeroType.Melee,
|
refreshLv: 0, refreshHeroType: SpecialRefreshHeroType.Melee,
|
||||||
},
|
},
|
||||||
7102: { uuid: 7102,type: CardType.SpecialRefresh,cost: 4,weight: 14,lv: CardKind.LV1,kind:CKind.Card,name:"远程征召",info: "刷新卡池,都是远程英雄",
|
7102: { uuid: 7102,type: CardType.SpecialRefresh,cost: 4,weight: 14,lv: CardLV.LV1,kind:CKind.Card,name:"远程征召",info: "刷新卡池,都是远程英雄",
|
||||||
refreshLv: 0, refreshHeroType: SpecialRefreshHeroType.Ranged,
|
refreshLv: 0, refreshHeroType: SpecialRefreshHeroType.Ranged,
|
||||||
},
|
},
|
||||||
7103: { uuid: 7103,type: CardType.SpecialRefresh,cost: 5,weight: 12,lv: CardKind.LV2,kind:CKind.Card,name:"精英筛选",info: "刷新卡池,都是3级卡池等级英雄",
|
7103: { uuid: 7103,type: CardType.SpecialRefresh,cost: 5,weight: 12,lv: CardLV.LV2,kind:CKind.Card,name:"精英筛选",info: "刷新卡池,都是3级卡池等级英雄",
|
||||||
refreshLv: 3, refreshHeroType: SpecialRefreshHeroType.Any,
|
refreshLv: 3, refreshHeroType: SpecialRefreshHeroType.Any,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@@ -133,11 +134,11 @@ export const SpecialRefreshCardList: Record<number, SpecialRefreshCardConfig> =
|
|||||||
|
|
||||||
|
|
||||||
/** 规范等级到合法区间 [LV1, LV6] */
|
/** 规范等级到合法区间 [LV1, LV6] */
|
||||||
const clampCardLv = (lv: number): CardKind => {
|
const clampCardLv = (lv: number): CardLV => {
|
||||||
const value = Math.floor(lv)
|
const value = Math.floor(lv)
|
||||||
if (value < CARD_POOL_INIT_LEVEL) return CARD_POOL_INIT_LEVEL
|
if (value < CARD_POOL_INIT_LEVEL) return CARD_POOL_INIT_LEVEL
|
||||||
if (value > CARD_POOL_MAX_LEVEL) return CARD_POOL_MAX_LEVEL
|
if (value > CARD_POOL_MAX_LEVEL) return CARD_POOL_MAX_LEVEL
|
||||||
return value as CardKind
|
return value as CardLV
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 单次按权重抽取一张卡 */
|
/** 单次按权重抽取一张卡 */
|
||||||
|
|||||||
@@ -382,6 +382,24 @@ export class CardComp extends CCComp {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const cardLvStr = `lv${this.cardData.lv}`;
|
||||||
|
if (this.BG_node) {
|
||||||
|
this.BG_node.children.forEach(child => {
|
||||||
|
child.active = (child.name === cardLvStr);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
const isHighLevel = (this.cardData.hero_lv ?? 0) > 1 || (this.cardData.card_lv ?? 0) > 1;
|
||||||
|
if (this.HF_node) this.HF_node.active = isHighLevel;
|
||||||
|
if (this.NF_node) this.NF_node.active = !isHighLevel;
|
||||||
|
|
||||||
|
const activeFrameNode = isHighLevel ? this.HF_node : this.NF_node;
|
||||||
|
if (activeFrameNode) {
|
||||||
|
activeFrameNode.children.forEach(child => {
|
||||||
|
child.active = (child.name === cardLvStr);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
if(this.card_type===CardType.Hero){
|
if(this.card_type===CardType.Hero){
|
||||||
const hero = HeroInfo[this.card_uuid];
|
const hero = HeroInfo[this.card_uuid];
|
||||||
const heroLv = Math.max(1, Math.floor(this.cardData.hero_lv ?? hero?.lv ?? 1));
|
const heroLv = Math.max(1, Math.floor(this.cardData.hero_lv ?? hero?.lv ?? 1));
|
||||||
@@ -468,6 +486,11 @@ export class CardComp extends CCComp {
|
|||||||
child.active = false;
|
child.active = false;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
if (this.BG_node) {
|
||||||
|
this.BG_node.children.forEach(child => child.active = false);
|
||||||
|
}
|
||||||
|
if (this.HF_node) this.HF_node.active = false;
|
||||||
|
if (this.NF_node) this.NF_node.active = false;
|
||||||
this.clearIconAnimation(this.icon_node as Node);
|
this.clearIconAnimation(this.icon_node as Node);
|
||||||
const sprite = this.icon_node?.getComponent(Sprite) || this.icon_node?.getComponentInChildren(Sprite);
|
const sprite = this.icon_node?.getComponent(Sprite) || this.icon_node?.getComponentInChildren(Sprite);
|
||||||
if (sprite) sprite.spriteFrame = null;
|
if (sprite) sprite.spriteFrame = null;
|
||||||
|
|||||||
@@ -18,6 +18,13 @@ export class HInfoComp extends CCComp {
|
|||||||
icon_node=null!
|
icon_node=null!
|
||||||
@property(Node)
|
@property(Node)
|
||||||
sell_node=null!
|
sell_node=null!
|
||||||
|
|
||||||
|
@property(Node)
|
||||||
|
NF_node=null!
|
||||||
|
@property(Node)
|
||||||
|
HF_node=null!
|
||||||
|
|
||||||
|
|
||||||
private eid: number = 0;
|
private eid: number = 0;
|
||||||
private model: HeroAttrsComp | null = null;
|
private model: HeroAttrsComp | null = null;
|
||||||
private apLabel: Label | null = null;
|
private apLabel: Label | null = null;
|
||||||
|
|||||||
Reference in New Issue
Block a user