258 lines
9.0 KiB
TypeScript
258 lines
9.0 KiB
TypeScript
/*
|
||
* 肉鸽游戏玩家升级强化系统使用示例
|
||
* 展示如何在游戏中使用强化选项配置
|
||
*/
|
||
|
||
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();
|
||
}
|