Files
heros/assets/script/game/common/config/LevelUpEnhancementExample.ts

258 lines
9.0 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* 肉鸽游戏玩家升级强化系统使用示例
* 展示如何在游戏中使用强化选项配置
*/
import {
getRandomEnhancementOptions,
getLevelAdjustedEnhancementOptions,
getEnhancementOptionByType,
EnhancementType,
EnhancementOption
} from "./LevelUpEnhancement"
import { BuffAttr } from "./SkillSet"
import { Quality } from "./CardSet"
// 强化管理器类
export class EnhancementManager {
private playerLevel: number = 1;
private appliedEnhancements: EnhancementOption[] = [];
constructor(initialLevel: number = 1) {
this.playerLevel = initialLevel;
}
// 玩家升级时调用,获取强化选项
onPlayerLevelUp(): EnhancementOption[] {
console.log(`[EnhancementManager]: 玩家升级到 ${this.playerLevel + 1} 级,获取强化选项`);
// 根据玩家等级获取调整后的强化选项
const options = getLevelAdjustedEnhancementOptions(this.playerLevel + 1, 3);
console.log(`[EnhancementManager]: 获得 ${options.length} 个强化选项:`, options);
return options;
}
// 应用选中的强化选项
applyEnhancement(option: EnhancementOption): boolean {
console.log(`[EnhancementManager]: 应用强化选项: ${option.name}`);
// 记录应用的强化
this.appliedEnhancements.push(option);
// 根据强化类型应用对应的属性加成
this.applyBuffToPlayer(option);
return true;
}
// 将强化效果应用到玩家属性
private applyBuffToPlayer(option: EnhancementOption): void {
const buffType = option.buffType;
const value = option.value;
console.log(`[EnhancementManager]: 应用Buff - 类型: ${buffType}, 数值: ${value}`);
// 这里应该调用游戏中的属性系统来实际应用效果
// 例如dispatchEvent 到游戏事件系统
this.dispatchEnhancementEvent(buffType, value);
}
// 分发强化事件到游戏系统
private dispatchEnhancementEvent(buffType: number, value: number): void {
// 这里应该调用游戏的事件系统
// 例如oops.message.dispatchEvent('EnhancementApplied', { buffType, value });
console.log(`[EnhancementManager]: 分发强化事件 - buffType: ${buffType}, value: ${value}`);
}
// 获取玩家当前等级
getPlayerLevel(): number {
return this.playerLevel;
}
// 设置玩家等级
setPlayerLevel(level: number): void {
this.playerLevel = level;
}
// 获取已应用的强化列表
getAppliedEnhancements(): EnhancementOption[] {
return this.appliedEnhancements;
}
// 获取特定类型的强化统计
getEnhancementStats(): { [key: number]: number } {
const stats: { [key: number]: number } = {};
this.appliedEnhancements.forEach(enhancement => {
const buffType = enhancement.buffType;
if (!stats[buffType]) {
stats[buffType] = 0;
}
stats[buffType] += enhancement.value;
});
return stats;
}
// 重置强化管理器
reset(): void {
this.appliedEnhancements = [];
console.log("[EnhancementManager]: 强化管理器已重置");
}
}
// 强化UI管理器示例
export class EnhancementUIManager {
private enhancementManager: EnhancementManager;
constructor(enhancementManager: EnhancementManager) {
this.enhancementManager = enhancementManager;
}
// 显示升级强化选择界面
showLevelUpEnhancementUI(): void {
console.log("[EnhancementUIManager]: 显示升级强化选择界面");
// 获取强化选项
const options = this.enhancementManager.onPlayerLevelUp();
// 这里应该显示UI界面让玩家选择
this.displayEnhancementOptions(options);
}
// 显示强化选项
private displayEnhancementOptions(options: EnhancementOption[]): void {
console.log("[EnhancementUIManager]: 显示强化选项:");
options.forEach((option, index) => {
console.log(`选项 ${index + 1}: ${option.name} - ${option.description} (${option.rarity})`);
});
}
// 处理玩家选择
onPlayerSelectOption(optionIndex: number, options: EnhancementOption[]): void {
if (optionIndex >= 0 && optionIndex < options.length) {
const selectedOption = options[optionIndex];
console.log(`[EnhancementUIManager]: 玩家选择了: ${selectedOption.name}`);
// 应用选中的强化
this.enhancementManager.applyEnhancement(selectedOption);
// 关闭UI界面
this.hideEnhancementUI();
}
}
// 隐藏强化UI
private hideEnhancementUI(): void {
console.log("[EnhancementUIManager]: 隐藏强化选择界面");
}
}
// 使用示例
export function createEnhancementExample(): void {
console.log("=== 肉鸽游戏强化系统使用示例 ===");
// 创建强化管理器
const enhancementManager = new EnhancementManager(5);
// 创建UI管理器
const uiManager = new EnhancementUIManager(enhancementManager);
// 模拟玩家升级
console.log("\n--- 模拟玩家升级 ---");
enhancementManager.setPlayerLevel(10);
uiManager.showLevelUpEnhancementUI();
// 模拟玩家选择强化选项
console.log("\n--- 模拟玩家选择强化选项 ---");
const options = getRandomEnhancementOptions(3);
uiManager.onPlayerSelectOption(0, options);
// 显示强化统计
console.log("\n--- 强化统计 ---");
const stats = enhancementManager.getEnhancementStats();
console.log("当前强化统计:", stats);
// 测试特定强化选项
console.log("\n--- 测试特定强化选项 ---");
const attackOption = getEnhancementOptionByType(EnhancementType.ATTACK, Quality.BLUE);
if (attackOption) {
console.log("获取攻击力强化选项:", attackOption);
enhancementManager.applyEnhancement(attackOption);
}
// 显示最终统计
console.log("\n--- 最终强化统计 ---");
const finalStats = enhancementManager.getEnhancementStats();
console.log("最终强化统计:", finalStats);
}
// 强化选项预览工具
export class EnhancementPreviewTool {
// 预览所有强化选项
static previewAllEnhancements(): void {
console.log("=== 所有强化选项预览 ===");
const types = [
{ name: "攻击力", type: EnhancementType.ATTACK },
{ name: "生命值", type: EnhancementType.HEALTH },
{ name: "攻击速度", type: EnhancementType.ATTACK_SPEED },
{ name: "暴击率", type: EnhancementType.CRITICAL },
{ name: "暴击伤害", type: EnhancementType.CRITICAL_DMG },
{ name: "闪避率", type: EnhancementType.DODGE },
{ name: "防御力", type: EnhancementType.DEFENSE },
{ name: "技能冷却", type: EnhancementType.SKILL_CD },
{ name: "技能伤害", type: EnhancementType.SKILL_DMG },
{ name: "特殊效果", type: EnhancementType.SPECIAL }
];
types.forEach(({ name, type }) => {
console.log(`\n--- ${name}强化选项 ---`);
const qualities = [Quality.WHITE, Quality.GREEN, Quality.BLUE, Quality.PURPLE, Quality.ORANGE];
qualities.forEach(quality => {
const option = getEnhancementOptionByType(type, quality);
if (option) {
console.log(`${option.rarity}: ${option.name} - ${option.description}`);
}
});
});
}
// 测试随机强化选项生成
static testRandomGeneration(): void {
console.log("\n=== 测试随机强化选项生成 ===");
for (let i = 0; i < 5; i++) {
console.log(`\n第 ${i + 1} 次随机生成:`);
const options = getRandomEnhancementOptions(3);
options.forEach((option, index) => {
console.log(` 选项 ${index + 1}: ${option.name} (${option.rarity}) - ${option.description}`);
});
}
}
// 测试等级调整功能
static testLevelAdjustment(): void {
console.log("\n=== 测试等级调整功能 ===");
const levels = [1, 10, 20, 30];
levels.forEach(level => {
console.log(`\n玩家等级 ${level} 的强化选项:`);
const options = getLevelAdjustedEnhancementOptions(level, 3);
options.forEach((option, index) => {
console.log(` 选项 ${index + 1}: ${option.name} (${option.rarity}) - ${option.description}`);
});
});
}
}
// 导出使用示例函数
export function runEnhancementExamples(): void {
// 运行所有示例
createEnhancementExample();
EnhancementPreviewTool.previewAllEnhancements();
EnhancementPreviewTool.testRandomGeneration();
EnhancementPreviewTool.testLevelAdjustment();
}