feat: 调整游戏难度并优化UI布局
- 降低卡池等级上限和英雄等级上限以简化前期难度 - 重新平衡前四波怪物配置,使难度曲线更平缓 - 移除卡池升级功能并隐藏相关UI按钮 - 调整角色控制器UI元素的位置和尺寸 - 修改加载界面元素的缩放比例
This commit is contained in:
@@ -22,8 +22,6 @@ export enum CardLV {
|
||||
LV1 = 1,
|
||||
LV2 = 2,
|
||||
LV3 = 3,
|
||||
LV4 = 4,
|
||||
LV5 = 5,
|
||||
}
|
||||
|
||||
/** 通用卡牌配置 */
|
||||
@@ -59,9 +57,9 @@ export const CARD_POOL_UPGRADE_DISCOUNT_PER_WAVE = 10
|
||||
/** 卡池默认初始等级 */
|
||||
export const CARD_POOL_INIT_LEVEL = CardLV.LV1
|
||||
/** 卡池等级上限 */
|
||||
export const CARD_POOL_MAX_LEVEL = CardLV.LV5
|
||||
export const CARD_POOL_MAX_LEVEL = CardLV.LV3
|
||||
/** 英雄最高等级限制 */
|
||||
export const CARD_HERO_MAX_LEVEL = 3
|
||||
export const CARD_HERO_MAX_LEVEL = 2
|
||||
/** 基础卡池(英雄、技能、功能) */
|
||||
|
||||
export const CardPoolList: CardConfig[] = [
|
||||
@@ -70,30 +68,30 @@ export const CardPoolList: CardConfig[] = [
|
||||
{ uuid: 5201, type: CardType.Hero, cost: 3, weight: 25, pool_lv: 1, kind: CKind.Hero, hero_lv: 1 },
|
||||
{ uuid: 5301, type: CardType.Hero, cost: 3, weight: 25, pool_lv: 1, kind: CKind.Hero, hero_lv: 1 },
|
||||
|
||||
{ uuid: 5003, type: CardType.Hero, cost: 3, weight: 25, pool_lv: 2, kind: CKind.Hero, hero_lv: 1 },
|
||||
{ uuid: 5102, type: CardType.Hero, cost: 3, weight: 25, pool_lv: 2, kind: CKind.Hero, hero_lv: 1 },
|
||||
{ uuid: 5302, type: CardType.Hero, cost: 3, weight: 25, pool_lv: 2, kind: CKind.Hero, hero_lv: 1 },
|
||||
{ uuid: 5003, type: CardType.Hero, cost: 3, weight: 25, pool_lv: 1, kind: CKind.Hero, hero_lv: 1 },
|
||||
{ uuid: 5102, type: CardType.Hero, cost: 3, weight: 25, pool_lv: 1, kind: CKind.Hero, hero_lv: 1 },
|
||||
{ uuid: 5302, type: CardType.Hero, cost: 3, weight: 25, pool_lv: 1, kind: CKind.Hero, hero_lv: 1 },
|
||||
|
||||
{ uuid: 5002, type: CardType.Hero, cost: 3, weight: 25, pool_lv: 3, kind: CKind.Hero, hero_lv: 1 },
|
||||
{ uuid: 5103, type: CardType.Hero, cost: 3, weight: 25, pool_lv: 3, kind: CKind.Hero, hero_lv: 1 },
|
||||
{ uuid: 5202, type: CardType.Hero, cost: 3, weight: 25, pool_lv: 3, kind: CKind.Hero, hero_lv: 1 },
|
||||
{ uuid: 5002, type: CardType.Hero, cost: 3, weight: 25, pool_lv: 2, kind: CKind.Hero, hero_lv: 1 },
|
||||
{ uuid: 5103, type: CardType.Hero, cost: 3, weight: 25, pool_lv: 2, kind: CKind.Hero, hero_lv: 1 },
|
||||
{ uuid: 5202, type: CardType.Hero, cost: 3, weight: 25, pool_lv: 2, kind: CKind.Hero, hero_lv: 1 },
|
||||
|
||||
{ uuid: 5004, type: CardType.Hero, cost: 3, weight: 25, pool_lv: 4, kind: CKind.Hero, hero_lv: 1 },
|
||||
{ uuid: 5104, type: CardType.Hero, cost: 3, weight: 25, pool_lv: 4, kind: CKind.Hero, hero_lv: 1 },
|
||||
{ uuid: 5303, type: CardType.Hero, cost: 3, weight: 25, pool_lv: 4, kind: CKind.Hero, hero_lv: 1 },
|
||||
{ uuid: 5004, type: CardType.Hero, cost: 3, weight: 25, pool_lv: 2, kind: CKind.Hero, hero_lv: 1 },
|
||||
{ uuid: 5104, type: CardType.Hero, cost: 3, weight: 25, pool_lv: 2, kind: CKind.Hero, hero_lv: 1 },
|
||||
{ uuid: 5303, type: CardType.Hero, cost: 3, weight: 25, pool_lv: 2, kind: CKind.Hero, hero_lv: 1 },
|
||||
|
||||
{ uuid: 5105, type: CardType.Hero, cost: 3, weight: 25, pool_lv: 5, kind: CKind.Hero, hero_lv: 1 },
|
||||
{ uuid: 5304, type: CardType.Hero, cost: 3, weight: 25, pool_lv: 5, kind: CKind.Hero, hero_lv: 1 },
|
||||
{ uuid: 5105, type: CardType.Hero, cost: 3, weight: 25, pool_lv: 3, kind: CKind.Hero, hero_lv: 1 },
|
||||
{ uuid: 5304, type: CardType.Hero, cost: 3, weight: 25, pool_lv: 3, kind: CKind.Hero, hero_lv: 1 },
|
||||
|
||||
// 技能卡牌 (以增益/辅助为主,因为在备战期没有敌人)
|
||||
{ uuid: 6401, type: CardType.Skill, cost: 2, weight: 20, pool_lv: 1, kind: CKind.Skill, card_lv: 1, name: "单体攻击", info: "随机1个友方+5攻击", is_inst: true, t_times: 1, t_inv: 0 },
|
||||
{ uuid: 6402, type: CardType.Skill, cost: 2, weight: 20, pool_lv: 1, kind: CKind.Skill, card_lv: 1, name: "单体生命", info: "随机1个友方+20最大生命值", is_inst: true, t_times: 1, t_inv: 0 },
|
||||
{ uuid: 6403, type: CardType.Skill, cost: 3, weight: 20, pool_lv: 2, kind: CKind.Skill, card_lv: 1, name: "单体全能", info: "随机1个友方+2攻击,+10最大生命值", is_inst: true, t_times: 1, t_inv: 0 },
|
||||
{ uuid: 6404, type: CardType.Skill, cost: 4, weight: 20, pool_lv: 3, kind: CKind.Skill, card_lv: 1, name: "群体攻击", info: "随机3个友方+2攻击", is_inst: true, t_times: 1, t_inv: 0 },
|
||||
{ uuid: 6405, type: CardType.Skill, cost: 4, weight: 20, pool_lv: 3, kind: CKind.Skill, card_lv: 1, name: "群体生命", info: "随机3个友方+10最大生命值", is_inst: true, t_times: 1, t_inv: 0 },
|
||||
{ uuid: 6406, type: CardType.Skill, cost: 5, weight: 20, pool_lv: 4, kind: CKind.Skill, card_lv: 1, name: "群体全能", info: "为随机3个友方单位增加攻击力和生命上限", is_inst: true, t_times: 1, t_inv: 0 },
|
||||
{ uuid: 6304, type: CardType.Skill, cost: 3, weight: 20, pool_lv: 2, kind: CKind.Skill, card_lv: 1, name: "神圣治疗", info: "恢复场上随机3个友方单位的生命值", is_inst: true, t_times: 1, t_inv: 0 },
|
||||
{ uuid: 6305, type: CardType.Skill, cost: 4, weight: 20, pool_lv: 4, kind: CKind.Skill, card_lv: 1, name: "群体护盾", info: "随机3个友方获得2次伤害免疫", is_inst: true, t_times: 1, t_inv: 0 },
|
||||
{ uuid: 6403, type: CardType.Skill, cost: 3, weight: 20, pool_lv: 1, kind: CKind.Skill, card_lv: 1, name: "单体全能", info: "随机1个友方+2攻击,+10最大生命值", is_inst: true, t_times: 1, t_inv: 0 },
|
||||
{ uuid: 6404, type: CardType.Skill, cost: 4, weight: 20, pool_lv: 1, kind: CKind.Skill, card_lv: 1, name: "群体攻击", info: "随机3个友方+2攻击", is_inst: true, t_times: 1, t_inv: 0 },
|
||||
{ uuid: 6405, type: CardType.Skill, cost: 4, weight: 20, pool_lv: 2, kind: CKind.Skill, card_lv: 1, name: "群体生命", info: "随机3个友方+10最大生命值", is_inst: true, t_times: 1, t_inv: 0 },
|
||||
{ uuid: 6406, type: CardType.Skill, cost: 5, weight: 20, pool_lv: 2, kind: CKind.Skill, card_lv: 1, name: "群体全能", info: "为随机3个友方单位增加攻击力和生命上限", is_inst: true, t_times: 1, t_inv: 0 },
|
||||
{ uuid: 6304, type: CardType.Skill, cost: 3, weight: 20, pool_lv: 3, kind: CKind.Skill, card_lv: 1, name: "神圣治疗", info: "恢复场上随机3个友方单位的生命值", is_inst: true, t_times: 1, t_inv: 0 },
|
||||
{ uuid: 6305, type: CardType.Skill, cost: 4, weight: 20, pool_lv: 3, kind: CKind.Skill, card_lv: 1, name: "群体护盾", info: "随机3个友方获得2次伤害免疫", is_inst: true, t_times: 1, t_inv: 0 },
|
||||
|
||||
{ uuid: 7001, type: CardType.SpecialUpgrade, cost: 6, weight: 16, pool_lv: 1 ,kind: CKind.Card },
|
||||
{ uuid: 7002, type: CardType.SpecialUpgrade, cost: 6, weight: 14, pool_lv: 2 ,kind: CKind.Card },
|
||||
|
||||
@@ -201,11 +201,11 @@ export class MissionCardComp extends CCComp {
|
||||
this.clearHeroInfoPanels();
|
||||
this.layoutCardSlots();
|
||||
this.clearAllCards();
|
||||
if (this.cards_up) {
|
||||
this.cards_up.active = true;
|
||||
}
|
||||
// if (this.cards_up) {
|
||||
// this.cards_up.active = true;
|
||||
// }
|
||||
this.resetButtonScale(this.cards_chou);
|
||||
this.resetButtonScale(this.cards_up);
|
||||
// this.resetButtonScale(this.cards_up);
|
||||
this.updateCoinAndCostUI();
|
||||
this.updateHeroNumUI(false, false);
|
||||
this.node.active = true;
|
||||
@@ -269,9 +269,9 @@ export class MissionCardComp extends CCComp {
|
||||
this.cards_chou?.on(NodeEventType.TOUCH_START, this.onDrawTouchStart, this);
|
||||
this.cards_chou?.on(NodeEventType.TOUCH_END, this.onDrawTouchEnd, this);
|
||||
this.cards_chou?.on(NodeEventType.TOUCH_CANCEL, this.onDrawTouchCancel, this);
|
||||
this.cards_up?.on(NodeEventType.TOUCH_START, this.onUpgradeTouchStart, this);
|
||||
this.cards_up?.on(NodeEventType.TOUCH_END, this.onUpgradeTouchEnd, this);
|
||||
this.cards_up?.on(NodeEventType.TOUCH_CANCEL, this.onUpgradeTouchCancel, this);
|
||||
// this.cards_up?.on(NodeEventType.TOUCH_START, this.onUpgradeTouchStart, this);
|
||||
// this.cards_up?.on(NodeEventType.TOUCH_END, this.onUpgradeTouchEnd, this);
|
||||
// this.cards_up?.on(NodeEventType.TOUCH_CANCEL, this.onUpgradeTouchCancel, this);
|
||||
}
|
||||
// ======================== 事件回调 ========================
|
||||
|
||||
@@ -318,9 +318,9 @@ export class MissionCardComp extends CCComp {
|
||||
this.cards_chou?.off(NodeEventType.TOUCH_START, this.onDrawTouchStart, this);
|
||||
this.cards_chou?.off(NodeEventType.TOUCH_END, this.onDrawTouchEnd, this);
|
||||
this.cards_chou?.off(NodeEventType.TOUCH_CANCEL, this.onDrawTouchCancel, this);
|
||||
this.cards_up?.off(NodeEventType.TOUCH_START, this.onUpgradeTouchStart, this);
|
||||
this.cards_up?.off(NodeEventType.TOUCH_END, this.onUpgradeTouchEnd, this);
|
||||
this.cards_up?.off(NodeEventType.TOUCH_CANCEL, this.onUpgradeTouchCancel, this);
|
||||
// this.cards_up?.off(NodeEventType.TOUCH_START, this.onUpgradeTouchStart, this);
|
||||
// this.cards_up?.off(NodeEventType.TOUCH_END, this.onUpgradeTouchEnd, this);
|
||||
// this.cards_up?.off(NodeEventType.TOUCH_CANCEL, this.onUpgradeTouchCancel, this);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -462,18 +462,18 @@ export class MissionCardComp extends CCComp {
|
||||
private onDrawTouchCancel() {
|
||||
this.playButtonResetAnim(this.cards_chou);
|
||||
}
|
||||
/** 升级按钮按下反馈 */
|
||||
private onUpgradeTouchStart() {
|
||||
this.playButtonPressAnim(this.cards_up);
|
||||
}
|
||||
/** 升级按钮释放 → 执行升级逻辑 */
|
||||
private onUpgradeTouchEnd() {
|
||||
this.playButtonClickAnim(this.cards_up, () => this.onClickUpgrade());
|
||||
}
|
||||
/** 升级按钮取消 → 恢复缩放 */
|
||||
private onUpgradeTouchCancel() {
|
||||
this.playButtonResetAnim(this.cards_up);
|
||||
}
|
||||
// /** 升级按钮按下反馈 */
|
||||
// private onUpgradeTouchStart() {
|
||||
// this.playButtonPressAnim(this.cards_up);
|
||||
// }
|
||||
// /** 升级按钮释放 → 执行升级逻辑 */
|
||||
// private onUpgradeTouchEnd() {
|
||||
// this.playButtonClickAnim(this.cards_up, () => this.onClickUpgrade());
|
||||
// }
|
||||
// /** 升级按钮取消 → 恢复缩放 */
|
||||
// private onUpgradeTouchCancel() {
|
||||
// this.playButtonResetAnim(this.cards_up);
|
||||
// }
|
||||
|
||||
/** 将四个卡槽节点映射为 CardComp,形成固定顺序控制数组 */
|
||||
private cacheCardComps() {
|
||||
@@ -516,34 +516,34 @@ export class MissionCardComp extends CCComp {
|
||||
this.dispatchCardsToSlots(cards);
|
||||
}
|
||||
|
||||
/** 升级按钮:仅提升卡池等级,卡槽是否更新由下一次抽卡触发 */
|
||||
private onClickUpgrade() {
|
||||
if (this.poolLv >= CARD_POOL_MAX_LEVEL) {
|
||||
mLogger.log(this.debugMode, "MissionCardComp", "pool already max", this.poolLv);
|
||||
return;
|
||||
}
|
||||
const cost = this.getUpgradeCost(this.poolLv);
|
||||
const currentCoin = this.getMissionCoin();
|
||||
if (currentCoin < cost) {
|
||||
oops.gui.toast(`金币不足,升级需要${cost}`);
|
||||
this.updateCoinAndCostUI();
|
||||
mLogger.log(this.debugMode, "MissionCardComp", "pool upgrade coin not enough", {
|
||||
poolLv: this.poolLv,
|
||||
currentCoin,
|
||||
cost
|
||||
});
|
||||
return;
|
||||
}
|
||||
this.setMissionCoin(currentCoin - cost);
|
||||
this.poolLv += 1;
|
||||
this.playCoinChangeAnim(false);
|
||||
this.updateCoinAndCostUI();
|
||||
mLogger.log(this.debugMode, "MissionCardComp", "pool level up", {
|
||||
poolLv: this.poolLv,
|
||||
cost,
|
||||
leftCoin: this.getMissionCoin()
|
||||
});
|
||||
}
|
||||
// /** 升级按钮:仅提升卡池等级,卡槽是否更新由下一次抽卡触发 */
|
||||
// private onClickUpgrade() {
|
||||
// if (this.poolLv >= CARD_POOL_MAX_LEVEL) {
|
||||
// mLogger.log(this.debugMode, "MissionCardComp", "pool already max", this.poolLv);
|
||||
// return;
|
||||
// }
|
||||
// const cost = this.getUpgradeCost(this.poolLv);
|
||||
// const currentCoin = this.getMissionCoin();
|
||||
// if (currentCoin < cost) {
|
||||
// oops.gui.toast(`金币不足,升级需要${cost}`);
|
||||
// this.updateCoinAndCostUI();
|
||||
// mLogger.log(this.debugMode, "MissionCardComp", "pool upgrade coin not enough", {
|
||||
// poolLv: this.poolLv,
|
||||
// currentCoin,
|
||||
// cost
|
||||
// });
|
||||
// return;
|
||||
// }
|
||||
// this.setMissionCoin(currentCoin - cost);
|
||||
// this.poolLv += 1;
|
||||
// this.playCoinChangeAnim(false);
|
||||
// this.updateCoinAndCostUI();
|
||||
// mLogger.log(this.debugMode, "MissionCardComp", "pool level up", {
|
||||
// poolLv: this.poolLv,
|
||||
// cost,
|
||||
// leftCoin: this.getMissionCoin()
|
||||
// });
|
||||
// }
|
||||
|
||||
// ======================== 阶段切换 ========================
|
||||
|
||||
@@ -685,23 +685,23 @@ export class MissionCardComp extends CCComp {
|
||||
}
|
||||
/** 更新升级按钮上的等级文案,反馈当前卡池层级 */
|
||||
private updatePoolLvUI() {
|
||||
if (this.cards_up) {
|
||||
const nobg = this.cards_up.getChildByName("nobg");
|
||||
if (nobg) {
|
||||
nobg.active = !this.canUpPool();
|
||||
}
|
||||
const coinNode = this.cards_up.getChildByName("coin");
|
||||
const label = coinNode?.getChildByName("num")?.getComponent(Label);
|
||||
if (this.poolLv >= CARD_POOL_MAX_LEVEL) {
|
||||
if (label) {
|
||||
label.string = `0`;
|
||||
}
|
||||
} else {
|
||||
if (label) {
|
||||
label.string = `${this.getUpgradeCost(this.poolLv)}`;
|
||||
}
|
||||
}
|
||||
}
|
||||
// if (this.cards_up) {
|
||||
// const nobg = this.cards_up.getChildByName("nobg");
|
||||
// if (nobg) {
|
||||
// nobg.active = !this.canUpPool();
|
||||
// }
|
||||
// const coinNode = this.cards_up.getChildByName("coin");
|
||||
// const label = coinNode?.getChildByName("num")?.getComponent(Label);
|
||||
// if (this.poolLv >= CARD_POOL_MAX_LEVEL) {
|
||||
// if (label) {
|
||||
// label.string = `0`;
|
||||
// }
|
||||
// } else {
|
||||
// if (label) {
|
||||
// label.string = `${this.getUpgradeCost(this.poolLv)}`;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
if (this.pool_lv_node) {
|
||||
this.pool_lv_node.active = true;
|
||||
const lv = Math.max(CARD_POOL_INIT_LEVEL, Math.min(CARD_POOL_MAX_LEVEL, Math.floor(this.poolLv)));
|
||||
@@ -1059,7 +1059,7 @@ export class MissionCardComp extends CCComp {
|
||||
reset() {
|
||||
this.clearHeroInfoPanels();
|
||||
this.resetButtonScale(this.cards_chou);
|
||||
this.resetButtonScale(this.cards_up);
|
||||
// this.resetButtonScale(this.cards_up);
|
||||
this.node.destroy();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -122,13 +122,20 @@ export const WaveSlotConfig: { [wave: number]: IWaveSlot[] } = {
|
||||
|
||||
/** 第 1 波:2 近战 + 1 近战Boss(默认占3格) */
|
||||
1: [
|
||||
{ type: MonType.Long, count: 2 },
|
||||
{ type: MonType.Melee, count: 1 },
|
||||
],
|
||||
2: [
|
||||
{ type: MonType.Melee, count: 1 },
|
||||
{ type: MonType.Long, count: 1 },
|
||||
],
|
||||
3: [
|
||||
{ type: MonType.Melee, count: 1 },
|
||||
{ type: MonType.Long, count: 2 },
|
||||
],
|
||||
4: [
|
||||
{ type: MonType.Melee, count: 2 },
|
||||
{ type: MonType.Long, count: 2 },
|
||||
],
|
||||
|
||||
/** 第 1 波:2 近战 + 1 近战Boss(默认占3格) */
|
||||
10: [
|
||||
{ type: MonType.MeleeBoss, count: 1 },
|
||||
|
||||
Reference in New Issue
Block a user