|
|
@@ -2,6 +2,7 @@ import { _decorator, Component, Node, Button, Label, Sprite, SpriteFrame, Textur
|
|
|
import { SaveDataManager, WeaponData } from '../../LevelSystem/SaveDataManager';
|
|
|
import EventBus, { GameEvents } from '../../Core/EventBus';
|
|
|
import { UpgradeAni } from './UpgradeAni';
|
|
|
+import { PopUPAni } from '../../Animations/PopUPAni';
|
|
|
|
|
|
const { ccclass, property } = _decorator;
|
|
|
|
|
|
@@ -21,7 +22,7 @@ interface WeaponConfig {
|
|
|
bulletSpeed: number;
|
|
|
};
|
|
|
visualConfig: {
|
|
|
- weaponSprites: {
|
|
|
+ weaponSprites: string | {
|
|
|
"I": string;
|
|
|
"H-I": string;
|
|
|
"L": string;
|
|
|
@@ -64,7 +65,8 @@ export class UpgradeController extends Component {
|
|
|
@property(Prefab) unlockedWeaponPrefab: Prefab = null; // Unlock.prefab
|
|
|
|
|
|
// 动画控制器
|
|
|
- @property(UpgradeAni) upgradeAni: UpgradeAni = null; // Canvas/UpgradeUI/UpgradePanel上的UpgradeAni组件
|
|
|
+ @property(PopUPAni) upgradeAni: PopUPAni = null; // Canvas/UpgradeUI/UpgradePanel上的PopUPAni组件
|
|
|
+ @property(UpgradeAni) weaponUpgradeAni: UpgradeAni = null; // 武器升级动画组件
|
|
|
|
|
|
// 数据管理
|
|
|
private saveDataManager: SaveDataManager = null;
|
|
|
@@ -378,8 +380,21 @@ export class UpgradeController extends Component {
|
|
|
// 设置武器图标 - 查找专门的武器图标Sprite节点,避免影响背景
|
|
|
const weaponSprite = spriteNode.getChildByName('WeaponSprite')?.getComponent(Sprite);
|
|
|
if (weaponSprite && weaponConfig.visualConfig.weaponSprites) {
|
|
|
- const spritePath = weaponConfig.visualConfig.weaponSprites['I'] || weaponConfig.visualConfig.weaponSprites['H-I'] || weaponConfig.visualConfig.weaponSprites['L'] || weaponConfig.visualConfig.weaponSprites['S'] || weaponConfig.visualConfig.weaponSprites['D-T'];
|
|
|
- this.loadWeaponSprite(weaponSprite, spritePath);
|
|
|
+ let spritePath: string;
|
|
|
+ // 检查weaponSprites是字符串还是对象
|
|
|
+ if (typeof weaponConfig.visualConfig.weaponSprites === 'string') {
|
|
|
+ spritePath = weaponConfig.visualConfig.weaponSprites;
|
|
|
+ } else {
|
|
|
+ // 如果是对象,按优先级选择路径
|
|
|
+ spritePath = weaponConfig.visualConfig.weaponSprites['I'] ||
|
|
|
+ weaponConfig.visualConfig.weaponSprites['H-I'] ||
|
|
|
+ weaponConfig.visualConfig.weaponSprites['L'] ||
|
|
|
+ weaponConfig.visualConfig.weaponSprites['S'] ||
|
|
|
+ weaponConfig.visualConfig.weaponSprites['D-T'];
|
|
|
+ }
|
|
|
+ if (spritePath) {
|
|
|
+ this.loadWeaponSprite(weaponSprite, spritePath);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// 设置武器名称 - Unlock.prefab中的Name节点下的Label(只显示武器名称)
|
|
|
@@ -530,8 +545,21 @@ export class UpgradeController extends Component {
|
|
|
|
|
|
// 设置武器图标 - Canvas/UpgradeUI/UpgradePanel/WeaponSprite
|
|
|
if (this.panelWeaponSprite && weaponConfig.visualConfig.weaponSprites) {
|
|
|
- const spritePath = weaponConfig.visualConfig.weaponSprites['I'] || weaponConfig.visualConfig.weaponSprites['H-I'] || weaponConfig.visualConfig.weaponSprites['L'] || weaponConfig.visualConfig.weaponSprites['S'] || weaponConfig.visualConfig.weaponSprites['D-T'];
|
|
|
- this.loadWeaponSprite(this.panelWeaponSprite, spritePath);
|
|
|
+ let spritePath: string;
|
|
|
+ // 检查weaponSprites是字符串还是对象
|
|
|
+ if (typeof weaponConfig.visualConfig.weaponSprites === 'string') {
|
|
|
+ spritePath = weaponConfig.visualConfig.weaponSprites;
|
|
|
+ } else {
|
|
|
+ // 如果是对象,按优先级选择路径
|
|
|
+ spritePath = weaponConfig.visualConfig.weaponSprites['I'] ||
|
|
|
+ weaponConfig.visualConfig.weaponSprites['H-I'] ||
|
|
|
+ weaponConfig.visualConfig.weaponSprites['L'] ||
|
|
|
+ weaponConfig.visualConfig.weaponSprites['S'] ||
|
|
|
+ weaponConfig.visualConfig.weaponSprites['D-T'];
|
|
|
+ }
|
|
|
+ if (spritePath) {
|
|
|
+ this.loadWeaponSprite(this.panelWeaponSprite, spritePath);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// 设置武器名称和等级 - Canvas/UpgradeUI/UpgradePanel/LevelLabel
|
|
|
@@ -740,8 +768,8 @@ export class UpgradeController extends Component {
|
|
|
* 播放武器升级成功动画
|
|
|
*/
|
|
|
private async playWeaponUpgradeSuccessAnimation(): Promise<void> {
|
|
|
- if (!this.upgradeAni || !this.panelWeaponSprite) {
|
|
|
- console.warn('[UpgradeController] upgradeAni 或 panelWeaponSprite 未设置,跳过升级动画');
|
|
|
+ if (!this.weaponUpgradeAni || !this.panelWeaponSprite) {
|
|
|
+ console.warn('[UpgradeController] weaponUpgradeAni 或 panelWeaponSprite 未设置,跳过升级动画');
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
@@ -750,7 +778,7 @@ export class UpgradeController extends Component {
|
|
|
const weaponIconNode = this.panelWeaponSprite.node;
|
|
|
|
|
|
// 播放升级动画
|
|
|
- await this.upgradeAni.playWeaponUpgradeAnimation(weaponIconNode);
|
|
|
+ await this.weaponUpgradeAni.playWeaponUpgradeAnimation(weaponIconNode);
|
|
|
|
|
|
console.log('[UpgradeController] 武器升级动画播放完成');
|
|
|
} catch (error) {
|